diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 219b25652f8e..4cd505ff3090 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -378,7 +378,7 @@ There is no strict process when it comes to merging pull requests. Pull requests * You are going to be expected to document all your changes in the pull request. Failing to do so will mean delaying it as we will have to question why you made the change. On the other hand, you can speed up the process by making the pull request readable and easy to understand, with diagrams or before/after data. -* We ask that you use the changelog system to document your change, which prevents our players from being caught unaware by changes - you can find more information about this [on this wiki page](http://tgstation13.org/wiki/Guide_to_Changelogs). +* We ask that you use the changelog system to document your player facing changes, which prevents our players from being caught unaware by said changes - you can find more information about this [on this wiki page](http://tgstation13.org/wiki/Guide_to_Changelogs). * If you are proposing multiple changes, which change many different aspects of the code, you are expected to section them off into different pull requests in order to make it easier to review them and to deny/accept the changes that are deemed acceptable. diff --git a/.github/workflows/turdis.yml b/.github/workflows/turdis.yml index 9e04743ec86a..0c5b39a32717 100644 --- a/.github/workflows/turdis.yml +++ b/.github/workflows/turdis.yml @@ -6,9 +6,9 @@ name: Turdis # events but only for the master branch on: pull_request: - branches: master + branches: [master, beta] push: - branches: master + branches: [master, beta] # A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: diff --git a/_maps/RandomRuins/StationRuins/BoxStation/engine_teg.dmm b/_maps/RandomRuins/StationRuins/BoxStation/engine_teg.dmm index f9980a36d5f6..b49127d28f0a 100644 --- a/_maps/RandomRuins/StationRuins/BoxStation/engine_teg.dmm +++ b/_maps/RandomRuins/StationRuins/BoxStation/engine_teg.dmm @@ -462,14 +462,9 @@ }, /turf/template_noop, /area/space/nearstation) -"ms" = ( -/obj/machinery/atmospherics/components/unary/thermomachine/heater, -/obj/machinery/camera{ - c_tag = "Engineering TEG Fore"; - network = list("ss13","engine"); - pixel_x = 23 - }, -/obj/effect/turf_decal/stripes/line{ +"mp" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/atmospherics/pipe/manifold/orange/visible{ dir = 1 }, /turf/open/floor/engine, @@ -550,21 +545,6 @@ /obj/machinery/atmospherics/pipe/manifold/cyan/visible, /turf/open/floor/engine, /area/engine/engineering) -"oW" = ( -/obj/structure/cable{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/orange/visible{ - dir = 1 - }, -/turf/open/floor/engine, -/area/engine/engineering) "pq" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple{ dir = 4 @@ -1394,11 +1374,6 @@ dir = 4 }, /area/engine/engineering) -"Ow" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/manifold4w/orange/visible, -/turf/open/floor/engine, -/area/engine/engineering) "OB" = ( /obj/machinery/meter, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, @@ -1690,6 +1665,17 @@ }, /turf/open/floor/engine, /area/engine/engineering) +"Wn" = ( +/obj/machinery/camera{ + c_tag = "Engineering TEG Fore"; + network = list("ss13","engine"); + pixel_x = 23 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/turf/open/floor/engine, +/area/engine/engineering) "Ws" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -2346,9 +2332,9 @@ dG "} (20,1,1) = {" ad -ms -oW -Ow +Wn +bC +mp EE PV pP diff --git a/_maps/map_files/YogStation/YogStation.dmm b/_maps/map_files/YogStation/YogStation.dmm index 70e0537ecaa5..176f271f8d7a 100644 --- a/_maps/map_files/YogStation/YogStation.dmm +++ b/_maps/map_files/YogStation/YogStation.dmm @@ -866,20 +866,6 @@ /obj/structure/chair/comfy/black, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) -"acs" = ( -/obj/machinery/newscaster/security_unit{ - pixel_x = -30 - }, -/obj/machinery/camera{ - c_tag = "Head of Security's Office"; - dir = 4 - }, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/heads/hos) "act" = ( /obj/machinery/requests_console{ announcementConsole = 1; @@ -1015,19 +1001,6 @@ /obj/item/stamp/hos, /turf/open/floor/carpet, /area/crew_quarters/heads/hos) -"acR" = ( -/obj/structure/table/wood, -/obj/item/flashlight/lamp/green{ - on = 0; - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/turf/open/floor/carpet, -/area/crew_quarters/heads/hos) "acS" = ( /obj/item/book/manual/wiki/security_space_law, /obj/structure/table/wood, @@ -7848,12 +7821,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/maintenance/department/electrical) -"auN" = ( -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel/dark, -/area/ai_monitored/security/armory) "auO" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -8924,20 +8891,6 @@ /obj/effect/turf_decal/stripes/corner, /turf/open/floor/plasteel, /area/hallway/secondary/entry) -"ays" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Head of Personnel's Desk"; - departmentType = 5; - name = "Head of Personnel RC"; - pixel_y = -30 - }, -/obj/machinery/camera{ - c_tag = "Head of Personnel's Office"; - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hop) "ayt" = ( /mob/living/simple_animal/pet/penguin/emperor/shamebrero{ desc = "Was used in a experiment by the RD to test how a penguin with a sombrero would effect morale. Results were uncertain but is being kept as the science department's mascot anyway."; @@ -10214,16 +10167,6 @@ "aCr" = ( /turf/closed/wall, /area/crew_quarters/theatre) -"aCs" = ( -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/machinery/vending/wardrobe/sec_wardrobe, -/turf/open/floor/plasteel, -/area/security/checkpoint/auxiliary) "aCt" = ( /obj/structure/cable{ icon_state = "1-2" @@ -11458,31 +11401,6 @@ }, /turf/open/floor/plasteel, /area/security/checkpoint/auxiliary) -"aFL" = ( -/obj/item/radio/off, -/obj/item/crowbar, -/obj/item/assembly/flash/handheld, -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/auxiliary) -"aFM" = ( -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/auxiliary) "aFP" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 1 @@ -13054,21 +12972,6 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/storage/primary) -"aKd" = ( -/obj/machinery/door/window/southleft{ - base_state = "right"; - icon_state = "right"; - name = "Armory"; - req_access_txt = "3" - }, -/obj/effect/turf_decal/stripes{ - dir = 6 - }, -/obj/machinery/light{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/ai_monitored/security/armory) "aKf" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -18559,6 +18462,25 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"bdw" = ( +/obj/machinery/power/apc{ + areastring = "/area/medical/sleeper"; + dir = 4; + name = "Sleeper Room APC"; + pixel_x = 24 + }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/medical/sleeper) "bdx" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -19276,15 +19198,6 @@ "bfv" = ( /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai_upload) -"bfy" = ( -/obj/structure/table/wood, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "bfz" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=CHE"; @@ -19641,17 +19554,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bgS" = ( -/obj/machinery/requests_console{ - announcementConsole = 1; - department = "Captain's Desk"; - departmentType = 5; - name = "Captain RC"; - pixel_x = -30 - }, -/obj/structure/filingcabinet, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "bgT" = ( /obj/structure/cable{ icon_state = "4-8" @@ -20139,12 +20041,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain) -"bim" = ( -/obj/structure/table/wood, -/obj/machinery/recharger, -/obj/item/melee/chainofcommand, -/turf/open/floor/wood, -/area/crew_quarters/heads/captain) "bin" = ( /obj/structure/cable{ icon_state = "1-2" @@ -22059,22 +21955,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/qm) -"boX" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "boY" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -23393,16 +23273,6 @@ }, /turf/open/floor/plasteel, /area/science/mixing) -"btv" = ( -/obj/machinery/computer/cargo/request, -/obj/machinery/bounty_board{ - pixel_y = 32 - }, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/bridge) "btw" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -23418,20 +23288,6 @@ }, /turf/open/floor/plasteel, /area/quartermaster/office) -"btB" = ( -/obj/structure/table, -/obj/machinery/recharger, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hop) "btD" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -23891,12 +23747,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) -"buO" = ( -/obj/structure/table, -/obj/item/folder/blue, -/obj/item/stamp/hop, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hop) "buQ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -24259,22 +24109,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bwg" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - id = "hopqueue"; - name = "HoP Queue Shutters" - }, -/obj/effect/turf_decal/loading_area{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bwh" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -24300,15 +24134,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/heads/hop) -"bwk" = ( -/obj/structure/table, -/obj/item/hand_labeler, -/obj/item/stack/packageWrap{ - pixel_x = -1; - pixel_y = -1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/heads/hop) "bwm" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 10 @@ -24719,19 +24544,6 @@ }, /turf/open/floor/plasteel, /area/security/checkpoint/supply) -"bxC" = ( -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/structure/table, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/supply) "bxD" = ( /obj/item/book/manual/wiki/security_space_law, /obj/structure/table, @@ -25324,20 +25136,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/research) -"bzC" = ( -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/science) "bzD" = ( /obj/structure/table, /obj/machinery/computer/security/telescreen{ @@ -26080,31 +25878,6 @@ }, /turf/open/floor/plasteel/dark, /area/science/server) -"bBY" = ( -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/machinery/light{ - dir = 4 - }, -/obj/item/radio/off, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/supply) -"bBZ" = ( -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/item/radio/off, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/science) "bCa" = ( /obj/machinery/power/apc{ areastring = "/area/quartermaster/qm"; @@ -26124,37 +25897,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel, /area/quartermaster/qm) -"bCb" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/science) -"bCc" = ( -/obj/machinery/computer/secure_data{ - dir = 1 - }, -/obj/machinery/requests_console{ - department = "Security"; - departmentType = 5; - pixel_y = -30 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/science) "bCf" = ( /obj/machinery/airalarm{ dir = 8; @@ -28518,30 +28260,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plating, /area/security/detectives_office) -"bOO" = ( -/obj/machinery/power/apc{ - areastring = "/area/security/checkpoint/engineering"; - dir = 8; - name = "Engineering Security APC"; - pixel_x = -25 - }, -/obj/structure/cable{ - icon_state = "0-2" - }, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/engineering) "bOQ" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28788,34 +28506,6 @@ /obj/effect/spawner/structure/window/shutter, /turf/open/floor/plating, /area/engine/engineering) -"bQe" = ( -/obj/item/screwdriver{ - pixel_y = 10 - }, -/obj/machinery/button/door{ - desc = "A remote control-switch for the engineering security doors."; - id = "Engineering"; - name = "Engineering Lockdown"; - pixel_x = -24; - pixel_y = -6; - req_access_txt = "10" - }, -/obj/structure/cable{ - icon_state = "1-2" - }, -/obj/item/radio/off, -/obj/machinery/light_switch{ - pixel_x = -27; - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/engineering) "bQf" = ( /obj/effect/turf_decal/tile/yellow{ dir = 4 @@ -29289,6 +28979,27 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"bSM" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/requests_console{ + department = "Security"; + departmentType = 5; + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) "bST" = ( /obj/machinery/doorButtons/airlock_controller{ idExterior = "virology_airlock_exterior"; @@ -29323,20 +29034,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"bTi" = ( -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/engineering) "bTj" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 @@ -32019,6 +31716,21 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"cwd" = ( +/obj/machinery/keycard_auth{ + pixel_x = 24; + pixel_y = 10 + }, +/obj/structure/table/wood, +/obj/item/radio/off, +/obj/item/toy/figure/hos, +/obj/item/taperecorder, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 32; + pixel_y = -3 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) "cwf" = ( /obj/machinery/holopad, /obj/effect/turf_decal/box/white{ @@ -33186,6 +32898,16 @@ }, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"cPs" = ( +/obj/structure/table, +/obj/effect/turf_decal/trimline/red/filled/line, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 5; + pixel_y = -26 + }, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) "cPM" = ( /obj/structure/cable{ icon_state = "1-2" @@ -33668,15 +33390,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/storage) -"dbp" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Starboard"; - dir = 4; - network = list("minisat","ss13") - }, -/turf/open/space/basic, -/area/space/nearstation) "dbt" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -33815,6 +33528,26 @@ /obj/structure/grille, /turf/open/floor/plating/airless, /area/escapepodbay) +"dhp" = ( +/obj/structure/cable{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 4; + pixel_y = 21 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 4; + pixel_y = 29 + }, +/turf/open/floor/plasteel, +/area/security/brig) "dhy" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, @@ -33856,17 +33589,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) -"dlt" = ( -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/structure/reagent_dispensers/peppertank{ - pixel_y = -32 - }, -/obj/effect/turf_decal/trimline/red/filled/line, -/turf/open/floor/plasteel, -/area/security/checkpoint/medical) "dlx" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/blue{ @@ -36106,25 +35828,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"eNC" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen, -/obj/item/book/manual/wiki/security_space_law, -/obj/machinery/newscaster{ - pixel_y = -32 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/service) "eOo" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -36495,45 +36198,49 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/solar/port/aft) -"faE" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood, -/obj/item/reagent_containers/blood, -/obj/item/reagent_containers/blood/AMinus, -/obj/item/reagent_containers/blood/BMinus{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/reagent_containers/blood/BPlus{ - pixel_x = 1; - pixel_y = 2 +"fan" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" }, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/OPlus{ - pixel_x = -2; - pixel_y = -1 +/obj/effect/turf_decal/loading_area{ + dir = 8 }, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/APlus, -/obj/item/reagent_containers/blood/random, -/obj/machinery/power/apc{ - areastring = "/area/medical/sleeper"; - dir = 4; - name = "Sleeper Room APC"; - pixel_x = 24 +/obj/machinery/door/firedoor/border_only{ + dir = 4 }, -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 +/obj/machinery/door/firedoor/border_only{ + dir = 8 }, -/obj/machinery/light{ +/obj/machinery/ministile/hop{ dir = 4 }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"faP" = ( +/obj/machinery/button/door{ + desc = "A remote control-switch for the engineering security doors."; + id = "Engineering"; + name = "Engineering Lockdown"; + pixel_x = -24; + pixel_y = -6; + req_access_txt = "10" + }, /obj/structure/cable{ - icon_state = "0-2" + icon_state = "1-2" }, -/turf/open/floor/plasteel/white, -/area/medical/sleeper) +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = -22; + pixel_y = 2 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) "fbC" = ( /obj/effect/turf_decal/tile/red, /obj/effect/turf_decal/tile/red{ @@ -36637,18 +36344,6 @@ }, /turf/open/floor/wood, /area/library) -"ffJ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Port Aft"; - dir = 8; - network = list("minisat","ss13") - }, -/turf/open/space/basic, -/area/space/nearstation) "fgc" = ( /obj/structure/filingcabinet, /turf/open/floor/plasteel/grimy, @@ -37509,6 +37204,25 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) +"fMu" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + id = "hopqueue"; + name = "HoP Queue Shutters" + }, +/obj/effect/turf_decal/loading_area{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/ministile/hop{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "fMS" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -38117,13 +37831,6 @@ }, /turf/open/space/basic, /area/engine/atmos_distro) -"gni" = ( -/obj/machinery/computer/security/mining, -/obj/effect/turf_decal/trimline/brown/filled/line{ - dir = 1 - }, -/turf/open/floor/plasteel/dark, -/area/bridge) "gnl" = ( /obj/structure/cable, /obj/effect/spawner/structure/solars/solar_96, @@ -38648,6 +38355,31 @@ }, /turf/open/floor/plasteel/white/side, /area/science/explab) +"gDp" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 8 + }, +/obj/machinery/cell_charger{ + pixel_y = 4 + }, +/obj/item/stock_parts/cell/high{ + charge = 100; + maxcharge = 15000 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = -21; + pixel_y = -8 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = -21; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) "gDG" = ( /obj/structure/cable{ icon_state = "4-8" @@ -38968,6 +38700,20 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/engine, /area/science/xenobiology) +"gPA" = ( +/obj/machinery/light{ + dir = 8 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = -22; + pixel_y = -8 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = -22; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "gPD" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -39075,6 +38821,14 @@ /obj/effect/spawner/lootdrop/gloves, /turf/open/floor/plasteel, /area/clerk) +"gUW" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) "gVe" = ( /obj/machinery/suit_storage_unit/atmos, /turf/open/floor/plasteel/dark, @@ -39521,6 +39275,24 @@ }, /turf/open/floor/plasteel/white, /area/medical/genetics) +"hpA" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/machinery/newscaster{ + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/service) "hqB" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -39970,6 +39742,15 @@ }, /turf/open/floor/plasteel/dark, /area/engine/atmos) +"hBY" = ( +/obj/structure/window/reinforced, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior Access"; + dir = 8; + network = list("minisat","ss13") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/aisat_interior) "hCS" = ( /obj/effect/turf_decal/bot, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -40074,28 +39855,6 @@ /obj/effect/spawner/structure/window/reinforced/shutter, /turf/open/floor/plating, /area/engine/engineering) -"hGT" = ( -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 9 - }, -/obj/machinery/recharger{ - pixel_x = 6 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = -4; - pixel_y = 6 - }, -/obj/item/assembly/flash/handheld{ - pixel_x = -8; - pixel_y = 2 - }, -/turf/open/floor/plasteel/dark, -/area/bridge) "hHb" = ( /obj/machinery/light_switch{ pixel_x = -24 @@ -41083,14 +40842,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) -"inY" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Aft"; - network = list("minisat","ss13") - }, -/turf/open/space/basic, -/area/space/nearstation) "ioi" = ( /obj/effect/landmark/start/artist, /turf/open/floor/plasteel/vaporwave, @@ -41755,46 +41506,12 @@ }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) -"iJg" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/machinery/computer/secure_data{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/service) "iJD" = ( /obj/machinery/light_switch{ pixel_x = 27 }, /turf/open/floor/plating, /area/construction) -"iJP" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = 1; - pixel_y = 9 - }, -/obj/item/pen, -/obj/item/book/manual/wiki/security_space_law, -/obj/machinery/power/apc{ - areastring = "/area/security/checkpoint/medical"; - name = "Medbay Security APC"; - pixel_y = -23 - }, -/obj/structure/cable, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/medical) "iKq" = ( /turf/template_noop, /area/maintenance/starboard/aft) @@ -42772,6 +42489,35 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel/dark, /area/bridge) +"jqw" = ( +/obj/machinery/power/apc{ + areastring = "/area/security/checkpoint/engineering"; + dir = 8; + name = "Engineering Security APC"; + pixel_x = -25 + }, +/obj/structure/cable{ + icon_state = "0-2" + }, +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_x = -21; + pixel_y = -11 + }, +/obj/item/twohanded/required/kirbyplants/random, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) "jqQ" = ( /obj/structure/cable{ icon_state = "4-8" @@ -43803,6 +43549,25 @@ dir = 1 }, /area/hallway/secondary/entry) +"jXO" = ( +/obj/structure/cable{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/fitness) "jXZ" = ( /obj/machinery/atmospherics/pipe/simple/orange/visible{ dir = 5 @@ -44785,19 +44550,6 @@ }, /turf/open/floor/plasteel, /area/engine/atmos_distro) -"kHj" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Port Fore"; - dir = 8; - network = list("minisat") - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/space/basic, -/area/space/nearstation) "kHL" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, @@ -45060,6 +44812,11 @@ /obj/effect/turf_decal/bot, /turf/open/floor/plasteel, /area/quartermaster/miningdock) +"kSe" = ( +/obj/structure/table/wood, +/obj/item/melee/chainofcommand, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "kSk" = ( /obj/structure/table/wood, /obj/item/storage/box/matches, @@ -45318,6 +45075,17 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"laR" = ( +/obj/machinery/camera{ + c_tag = "Head of Personnel's Office"; + dir = 1 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 4; + pixel_y = -25 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) "lbh" = ( /obj/structure/cable, /obj/effect/spawner/structure/window/reinforced, @@ -45869,6 +45637,25 @@ }, /turf/open/floor/plating, /area/science/xenobiology) +"luj" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 9 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -4; + pixel_y = 6 + }, +/obj/item/assembly/flash/handheld{ + pixel_x = -8; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) "lvg" = ( /obj/structure/sign/poster/contraband/ambrosia_vulgaris{ pixel_y = 32 @@ -46052,6 +45839,26 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"lzJ" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/obj/structure/table, +/obj/machinery/camera{ + c_tag = "Security Post - Service"; + dir = 1; + network = list("ss13","chpt") + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/obj/item/book/manual/wiki/security_space_law, +/turf/open/floor/plasteel, +/area/security/checkpoint/service) "lzZ" = ( /obj/effect/turf_decal/trimline/blue/filled/corner{ dir = 4 @@ -46357,6 +46164,13 @@ /obj/machinery/atmospherics/pipe/simple/cyan/hidden, /turf/closed/wall/r_wall, /area/engine/atmos) +"lLe" = ( +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) "lLm" = ( /obj/item/twohanded/required/kirbyplants/random, /obj/machinery/atmospherics/pipe/simple/purple/visible{ @@ -46672,6 +46486,15 @@ /obj/machinery/light, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) +"mao" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Fore"; + dir = 1; + network = list("minisat") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/ai) "maQ" = ( /obj/machinery/camera{ c_tag = "Library South"; @@ -46713,6 +46536,29 @@ /obj/item/toy/figure/rd, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/hor) +"mcd" = ( +/obj/machinery/door/window/southleft{ + base_state = "right"; + icon_state = "right"; + name = "Armory"; + req_access_txt = "3" + }, +/obj/effect/turf_decal/stripes{ + dir = 6 + }, +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 32; + pixel_y = -3 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 32; + pixel_y = 6 + }, +/turf/open/floor/plasteel, +/area/ai_monitored/security/armory) "mck" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -46918,25 +46764,6 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"mlW" = ( -/obj/structure/cable{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/fitness) "mmV" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -47606,6 +47433,14 @@ }, /turf/open/floor/plasteel/dark, /area/science/xenobiology) +"mGQ" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Aft"; + network = list("minisat","ss13") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/ai) "mGV" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 4 @@ -47918,6 +47753,20 @@ }, /turf/closed/wall/r_wall, /area/ai_monitored/turret_protected/ai) +"mTv" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/item/radio/off, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) "mTx" = ( /obj/machinery/vending/cola/random, /obj/effect/turf_decal/tile/blue{ @@ -48276,6 +48125,16 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) +"nbF" = ( +/obj/machinery/computer/security/mining, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/machinery/bounty_board{ + pixel_y = 32 + }, +/turf/open/floor/plasteel/dark, +/area/bridge) "nca" = ( /obj/machinery/door/poddoor/preopen{ id = "xenobio_l"; @@ -49754,6 +49613,24 @@ }, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"nYN" = ( +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = 1; + pixel_y = 9 + }, +/obj/item/pen, +/obj/machinery/power/apc{ + areastring = "/area/security/checkpoint/medical"; + name = "Medbay Security APC"; + pixel_y = -23 + }, +/obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 6 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) "nZg" = ( /obj/effect/turf_decal/stripes{ dir = 1 @@ -49920,15 +49797,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/carpet/purple, /area/chapel/main) -"oel" = ( -/obj/structure/window/reinforced, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior Access"; - dir = 8; - network = list("minisat","ss13") - }, -/turf/open/space/basic, -/area/space) "ofJ" = ( /obj/structure/sign/plaques/atmos{ pixel_y = 32 @@ -50855,14 +50723,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) -"oET" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Aft Port"; - network = list("minisat") - }, -/turf/open/space/basic, -/area/space/nearstation) "oEY" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 9 @@ -51031,6 +50891,27 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"oKC" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Starboard"; + dir = 4; + network = list("minisat","ss13") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/ai) +"oKL" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Port Aft"; + dir = 8; + network = list("minisat","ss13") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/aisat_interior) "oLx" = ( /obj/machinery/atmospherics/pipe/manifold/cyan/visible{ dir = 1 @@ -51333,6 +51214,20 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"oTi" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 32; + pixel_y = -8 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 32; + pixel_y = 2 + }, +/turf/open/floor/plasteel/dark, +/area/ai_monitored/security/armory) "oTV" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -52055,6 +51950,19 @@ }, /turf/open/floor/plasteel, /area/science/nanite) +"pyG" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Port Fore"; + dir = 8; + network = list("minisat") + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/space/basic, +/area/ai_monitored/storage/satellite) "pyZ" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 1 @@ -52322,6 +52230,16 @@ }, /turf/open/space/basic, /area/space) +"pFL" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/item/crowbar, +/obj/item/assembly/flash/handheld, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) "pGm" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -52703,6 +52621,22 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/starboard) +"pSB" = ( +/obj/structure/table, +/obj/item/hand_labeler, +/obj/item/stack/packageWrap{ + pixel_x = -1; + pixel_y = -1 + }, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Head of Personnel's Desk"; + departmentType = 5; + name = "Head of Personnel RC"; + pixel_y = -30 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) "pSF" = ( /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ dir = 8 @@ -53332,6 +53266,13 @@ }, /turf/open/floor/plasteel/white, /area/medical/sleeper) +"qmB" = ( +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) "qmI" = ( /obj/structure/window/reinforced{ dir = 8 @@ -53779,16 +53720,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/wood, /area/lawoffice) -"qBQ" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, -/obj/machinery/light_switch{ - pixel_y = 27 - }, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/medical) "qCq" = ( /obj/machinery/light{ dir = 1 @@ -54073,28 +54004,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/storage/primary) -"qLV" = ( -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, -/obj/effect/turf_decal/tile/red{ - dir = 2 - }, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, -/obj/machinery/camera{ - c_tag = "Security Post - Service"; - dir = 1; - network = list("ss13","chpt") - }, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel, -/area/security/checkpoint/service) "qLZ" = ( /turf/closed/wall, /area/hallway/primary/port) @@ -54303,6 +54212,20 @@ }, /turf/open/floor/plasteel, /area/clerk) +"qTU" = ( +/obj/machinery/computer/secure_data{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 5; + pixel_y = -26 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) "qTZ" = ( /obj/machinery/atmospherics/pipe/manifold/general/visible, /turf/open/floor/circuit/telecomms, @@ -54562,17 +54485,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/morgue) -"rbj" = ( -/obj/machinery/keycard_auth{ - pixel_x = 24; - pixel_y = 10 - }, -/obj/structure/table/wood, -/obj/item/radio/off, -/obj/item/toy/figure/hos, -/obj/item/taperecorder, -/turf/open/floor/carpet, -/area/crew_quarters/heads/hos) "rbs" = ( /obj/machinery/atmospherics/components/binary/pump{ dir = 8; @@ -54716,6 +54628,15 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/engine/atmos) +"rfJ" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Fore Starboard"; + dir = 1; + network = list("minisat") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/ai) "rfW" = ( /obj/structure/closet/crate, /turf/open/floor/plating, @@ -55392,6 +55313,20 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"rGt" = ( +/obj/machinery/light{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 32; + pixel_y = -3 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/supply) "rGJ" = ( /obj/structure/cable{ icon_state = "1-2" @@ -55439,6 +55374,20 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"rHW" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/obj/machinery/light_switch{ + pixel_x = -6; + pixel_y = 23 + }, +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/structure/reagent_dispensers/peppertank{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/medical) "rIf" = ( /obj/structure/spacepoddoor, /obj/machinery/door/poddoor/multi_tile/four_tile_ver{ @@ -55464,6 +55413,21 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/lobby) +"rJO" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/item/radio/off, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/science) "rKu" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/open/floor/plasteel, @@ -55974,6 +55938,10 @@ }, /turf/open/floor/plasteel, /area/security/brig) +"sai" = ( +/obj/structure/table, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) "saK" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -57339,15 +57307,6 @@ /obj/structure/bed/roller, /turf/open/floor/plasteel/white, /area/medical/medbay/central) -"taP" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Fore Starboard"; - dir = 1; - network = list("minisat") - }, -/turf/open/space/basic, -/area/space/nearstation) "taW" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -27; @@ -57425,6 +57384,14 @@ }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) +"tdj" = ( +/obj/structure/filingcabinet, +/obj/machinery/recharger/wallrecharger{ + pixel_x = -21; + pixel_y = -3 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "tdr" = ( /obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/plasteel/white, @@ -57494,6 +57461,21 @@ /obj/structure/disposalpipe/junction/flip, /turf/open/floor/wood, /area/library) +"tgn" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/item/radio/off, +/obj/item/screwdriver{ + pixel_y = 10 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/engineering) "tgv" = ( /turf/closed/wall/r_wall, /area/ai_monitored/storage/satellite) @@ -57621,6 +57603,22 @@ /obj/structure/sign/departments/minsky/medical/medical1, /turf/closed/wall, /area/medical/paramedic) +"tmz" = ( +/obj/structure/table/wood, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, +/obj/machinery/requests_console{ + announcementConsole = 1; + department = "Captain's Desk"; + departmentType = 5; + name = "Captain RC"; + pixel_x = -30 + }, +/turf/open/floor/wood, +/area/crew_quarters/heads/captain) "tmG" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -58589,15 +58587,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/fore) -"tRN" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Fore"; - dir = 1; - network = list("minisat") - }, -/turf/open/space/basic, -/area/space/nearstation) "tSv" = ( /obj/effect/turf_decal/delivery, /obj/structure/cable{ @@ -58644,6 +58633,22 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"tUe" = ( +/obj/machinery/newscaster/security_unit{ + pixel_x = -30 + }, +/obj/machinery/camera{ + c_tag = "Head of Security's Office"; + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/flashlight/lamp/green{ + on = 0; + pixel_x = 6; + pixel_y = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/heads/hos) "tUE" = ( /obj/machinery/light/small{ dir = 4 @@ -59945,6 +59950,14 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"uNj" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Aft Starboard"; + network = list("minisat") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/ai) "uNu" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/cryopod{ @@ -60945,6 +60958,15 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"vxZ" = ( +/obj/machinery/camera{ + c_tag = "Virology Break Room"; + dir = 8; + network = list("ss13","medbay") + }, +/obj/structure/closet/crate/freezer/blood, +/turf/open/floor/plasteel/white, +/area/medical/virology) "vyT" = ( /obj/structure/sign/warning/nosmoking{ pixel_y = 32 @@ -61284,6 +61306,18 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/hallway/primary/aft) +"vKT" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Fore Port"; + dir = 1; + network = list("minisat") + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/space/basic, +/area/ai_monitored/storage/satellite) "vKX" = ( /obj/machinery/door/airlock/maintenance_hatch, /obj/effect/mapping_helpers/airlock/abandoned, @@ -61489,23 +61523,6 @@ /obj/structure/bed/roller, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) -"vSp" = ( -/obj/machinery/light{ - dir = 8 - }, -/obj/structure/table/reinforced, -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 8 - }, -/obj/machinery/cell_charger{ - pixel_y = 4 - }, -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/turf/open/floor/plasteel/dark, -/area/bridge) "vTi" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -62473,35 +62490,6 @@ /obj/structure/grille, /turf/open/space/basic, /area/space/nearstation) -"wyh" = ( -/obj/structure/closet/crate/freezer, -/obj/item/reagent_containers/blood, -/obj/item/reagent_containers/blood, -/obj/item/reagent_containers/blood/AMinus, -/obj/item/reagent_containers/blood/BMinus{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/item/reagent_containers/blood/BPlus{ - pixel_x = 1; - pixel_y = 2 - }, -/obj/item/reagent_containers/blood/OMinus, -/obj/item/reagent_containers/blood/OPlus{ - pixel_x = -2; - pixel_y = -1 - }, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/random, -/obj/item/reagent_containers/blood/APlus, -/obj/item/reagent_containers/blood/random, -/obj/machinery/camera{ - c_tag = "Virology Break Room"; - dir = 8; - network = list("ss13","medbay") - }, -/turf/open/floor/plasteel/white, -/area/medical/virology) "wyn" = ( /obj/machinery/portable_atmospherics/canister/nitrous_oxide, /obj/machinery/atmospherics/miner/n2o, @@ -62748,6 +62736,25 @@ }, /turf/open/floor/plating, /area/ai_monitored/storage/satellite) +"wFs" = ( +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/obj/effect/turf_decal/tile/red{ + dir = 2 + }, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/computer/secure_data{ + dir = 1 + }, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 5; + pixel_y = -26 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/service) "wFR" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -62766,6 +62773,20 @@ /obj/machinery/light, /turf/open/floor/carpet, /area/library) +"wHb" = ( +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/machinery/vending/wardrobe/sec_wardrobe, +/obj/machinery/recharger/wallrecharger{ + pixel_x = 4; + pixel_y = 21 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) "wHA" = ( /obj/structure/table, /obj/effect/turf_decal/tile/blue{ @@ -62916,18 +62937,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) -"wLQ" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Fore Port"; - dir = 1; - network = list("minisat") - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 4 - }, -/turf/open/space/basic, -/area/space/nearstation) "wMq" = ( /obj/effect/turf_decal/trimline/yellow/filled/corner, /turf/open/floor/plasteel/white, @@ -63192,14 +63201,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"xcs" = ( -/obj/structure/lattice/catwalk, -/obj/machinery/camera{ - c_tag = "MiniSat Exterior - Aft Starboard"; - network = list("minisat") - }, -/turf/open/space/basic, -/area/space/nearstation) "xcL" = ( /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ @@ -63215,6 +63216,21 @@ /obj/effect/turf_decal/bot_white, /turf/open/floor/plasteel/dark, /area/ai_monitored/nuke_storage) +"xcS" = ( +/obj/structure/table, +/obj/effect/turf_decal/tile/blue{ + dir = 1 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 4 + }, +/obj/effect/turf_decal/tile/blue{ + dir = 8 + }, +/obj/item/folder/blue, +/obj/item/stamp/hop, +/turf/open/floor/plasteel, +/area/crew_quarters/heads/hop) "xcY" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -64604,6 +64620,14 @@ /obj/machinery/portable_atmospherics/canister/air, /turf/open/floor/plasteel, /area/escapepodbay) +"yco" = ( +/obj/structure/lattice/catwalk, +/obj/machinery/camera{ + c_tag = "MiniSat Exterior - Aft Port"; + network = list("minisat") + }, +/turf/open/space/basic, +/area/ai_monitored/turret_protected/aisat_interior) "ydd" = ( /obj/structure/closet/crate, /obj/effect/spawner/lootdrop/maintenance, @@ -64819,6 +64843,18 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) +"yfZ" = ( +/obj/item/radio/off, +/obj/structure/table, +/obj/effect/turf_decal/tile/red, +/obj/effect/turf_decal/tile/red{ + dir = 4 + }, +/obj/effect/turf_decal/tile/red{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/security/checkpoint/auxiliary) "ygi" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 @@ -80280,7 +80316,7 @@ alU alU arS aBI -aCs +wHb aEE aFH aGZ @@ -81053,7 +81089,7 @@ arS aBI aEb aJD -aFM +pFL aHy ayl aNl @@ -81310,7 +81346,7 @@ awd aBl aEc aEJ -aFL +yfZ aBI aIO aNl @@ -90594,7 +90630,7 @@ cBq bbR bbR bwd -bxC +mTv byK bpz aDr @@ -90853,7 +90889,7 @@ buJ bwe bxE byM -bBY +rGt bBf bwe bqD @@ -92130,12 +92166,12 @@ mlj bkT mlj mlj -boX +fan nfX ehN vZM cmg -bwg +fMu aJw aJq aJq @@ -92904,7 +92940,7 @@ bnP bpc bqA brW -btB +xcS buM bwi bmr @@ -93163,7 +93199,7 @@ bqz bqq brS oQi -ays +laR bmr qmS cBw @@ -93419,8 +93455,8 @@ bpe bqB bqq btD -buO -bwk +sai +pSB bmr aMn jtG @@ -93879,7 +93915,7 @@ imy ewO rVu agj -ajA +dhp ajG akQ agj @@ -93913,7 +93949,7 @@ epq bOS aaa aPR -gni +nbF gqU rYy rYz @@ -94170,7 +94206,7 @@ hJu aPR aPR aPR -btv +lLe quz hRj mUA @@ -94425,8 +94461,8 @@ aJq aJq epq aPT -hGT -vSp +luj +gDp gGA quz toN @@ -95149,7 +95185,7 @@ aaf gXs aaZ arc -atX +gPA avB atX aBX @@ -96699,7 +96735,7 @@ atk aEv ahR aHr -aKd +mcd agt agt ahA @@ -96948,7 +96984,7 @@ aaf aaa aaZ bNS -auN +oTi azP aqH aDJ @@ -97263,8 +97299,8 @@ bbo bch bdi bei -bfy -bgS +tmz +tdj bik aZV aZV @@ -97812,10 +97848,10 @@ hBJ fib fib aJC -bOO -bQe +jqw +faP bza -bTi +tgn caA aiv ane @@ -98036,7 +98072,7 @@ baQ beg bfC bfl -bim +kSe bjG aZV eDw @@ -99006,8 +99042,8 @@ aaa aaf abq act -acs -acR +tUe +gUW adM ajK akY @@ -100034,7 +100070,7 @@ aaa aaf abq abW -rbj +cwd acj acn akw @@ -101129,9 +101165,9 @@ bpM ppF dcX bfK -qBQ +rHW jVx -dlt +cPs bfK xCe ydX @@ -101388,7 +101424,7 @@ hLI bhi mtT lvO -iJP +nYN bfK cdO muj @@ -102122,7 +102158,7 @@ fkH jIM axW asN -mlW +jXO iVG aCt aDY @@ -103758,7 +103794,7 @@ aaa ucZ gXs aaa -oel +hBY ewX ndo ody @@ -104213,7 +104249,7 @@ sxa kub hLI ctu -faE +bdw urv uMu vYV @@ -104268,7 +104304,7 @@ aaa aaa aaa cBP -kHj +pyG xgS tEt cxv @@ -104280,7 +104316,7 @@ qlI hhC oCj pEf -ffJ +oKL pEf gXs aaa @@ -105550,7 +105586,7 @@ cSf nkd aaa aaa -wLQ +vKT tgv tgv tgv @@ -105568,7 +105604,7 @@ nnx gtB gtB gtB -oET +yco aaa aKN aaa @@ -107865,7 +107901,7 @@ aaa aaa aaa aaa -tRN +mao cva cva cva @@ -107879,7 +107915,7 @@ eSF cva cva cva -inY +mGQ aaa aKN aKN @@ -108085,7 +108121,7 @@ cIE bNd aSI bPt -wyh +vxZ bRQ bSY bwm @@ -109152,7 +109188,7 @@ gXs gXs aaa pEf -taP +rfJ cva cva cva @@ -109162,7 +109198,7 @@ ykL cva cva cva -xcs +uNj pEf aaa aaa @@ -109928,7 +109964,7 @@ gXs pEf pEf pEf -dbp +oKC pEf pEf pEf @@ -111671,7 +111707,7 @@ bnV byj bwM bpO -bBZ +qmB bDc fFy nUQ @@ -111928,7 +111964,7 @@ bxe byk bzD aOA -bCc +qTU bDc sgH dDp @@ -112183,9 +112219,9 @@ wci bgp bxe byk -bzC +rJO bAH -bCb +bSM bDc bDE bDf @@ -116542,7 +116578,7 @@ wex ilH oGJ cld -iJg +wFs hoc bjT bqe @@ -116799,7 +116835,7 @@ wex ilH oGJ olb -eNC +hpA hoc bjT bqe @@ -117056,7 +117092,7 @@ wex hoc oUG dVX -qLV +lzJ hoc bjT bqe diff --git a/_maps/map_files/Yogsmeta/Yogsmeta.dmm b/_maps/map_files/Yogsmeta/Yogsmeta.dmm index a794b68b89f8..0bb88560c621 100644 --- a/_maps/map_files/Yogsmeta/Yogsmeta.dmm +++ b/_maps/map_files/Yogsmeta/Yogsmeta.dmm @@ -570,37 +570,6 @@ }, /turf/open/floor/plasteel/cafeteria, /area/security/prison) -"abt" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/table, -/obj/item/storage/box/lights/mixed{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/storage/box/lights/mixed{ - pixel_x = 6; - pixel_y = 8 - }, -/obj/item/reagent_containers/spray/cleaner, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/item/grenade/chem_grenade/cleaner{ - pixel_x = -7; - pixel_y = 12 - }, -/obj/machinery/requests_console{ - department = "Janitorial"; - departmentType = 1; - pixel_y = 29 - }, -/turf/open/floor/plasteel, -/area/janitor) "abu" = ( /obj/structure/fans/tiny/invisible, /obj/docking_port/stationary{ @@ -5948,15 +5917,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/security/main) -"amB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/watertank, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -24 - }, -/turf/open/floor/plasteel, -/area/janitor) "amC" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -6900,11 +6860,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/fore) -"apf" = ( -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/starboard) "apg" = ( /obj/structure/closet, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -8776,12 +8731,6 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/plasteel, /area/engine/gravity_generator) -"atj" = ( -/obj/machinery/space_heater, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/starboard) "atl" = ( /obj/item/stack/sheet/cardboard, /obj/item/flashlight, @@ -9604,10 +9553,6 @@ }, /turf/open/floor/wood, /area/library) -"avs" = ( -/obj/structure/reagent_dispensers/watertank, -/turf/open/floor/plating, -/area/maintenance/starboard) "avt" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -9650,6 +9595,24 @@ }, /turf/open/floor/plasteel/dark, /area/security/nuke_storage) +"avy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/sorting/mail{ + sortType = 21 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "avz" = ( /obj/machinery/light/small{ dir = 4 @@ -24362,14 +24325,12 @@ /turf/open/floor/plasteel, /area/hallway/primary/central) "aXo" = ( -/obj/machinery/door/airlock{ - name = "Starboard Emergency Storage" +/obj/structure/cable/yellow{ + icon_state = "1-2" }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 +/obj/structure/sign/poster/contraband/random{ + pixel_x = 32 }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/maintenance/starboard) "aXp" = ( @@ -24990,13 +24951,6 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/wood, /area/crew_quarters/bar) -"aYs" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/starboard) "aYt" = ( /obj/item/radio/intercom{ pixel_x = 29 @@ -25009,15 +24963,6 @@ "aYu" = ( /turf/closed/wall, /area/security/checkpoint/engineering) -"aYv" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "aYw" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -27 @@ -26445,88 +26390,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"baN" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/sorting/mail{ - dir = 2; - sortType = 19 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baO" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12;25;46" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baP" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard) -"baR" = ( -/obj/item/assembly/prox_sensor, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baS" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/item/storage/box/lights/mixed, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baT" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"baU" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "baV" = ( /obj/structure/sign/warning/securearea{ pixel_x = 32 @@ -27651,26 +27514,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) -"bcU" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/maintenance{ - req_access_txt = "12;46" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bcV" = ( -/obj/item/storage/toolbox/emergency, -/obj/effect/spawner/lootdrop/maintenance, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/starboard) "bcW" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -28161,13 +28004,6 @@ }, /turf/open/floor/plasteel, /area/storage/tools) -"bdS" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bdT" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -28943,13 +28779,6 @@ }, /turf/open/floor/plasteel, /area/vacant_room/commissary) -"bfo" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bfp" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/wood, @@ -29551,27 +29380,6 @@ }, /turf/open/floor/plasteel, /area/engine/foyer) -"bgu" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"bgv" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"bgw" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bgx" = ( /obj/structure/table/reinforced, /obj/item/folder/blue{ @@ -29583,13 +29391,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/ai) -"bgy" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard) "bgz" = ( /obj/item/paper, /obj/structure/table/reinforced, @@ -30112,20 +29913,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/wood, /area/crew_quarters/bar) -"bhv" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/chair/stool{ - pixel_y = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bhw" = ( /turf/open/floor/carpet, /area/crew_quarters/theatre) -"bhx" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bhy" = ( /obj/structure/window/reinforced{ dir = 8 @@ -30268,27 +30058,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"bhN" = ( -/obj/structure/chair/wood/wings, -/obj/effect/landmark/start/mime, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"bhO" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"bhP" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard) "bhQ" = ( /obj/machinery/door/window{ dir = 1; @@ -32135,16 +31904,6 @@ /obj/item/storage/pill_bottle/dice, /turf/open/floor/wood, /area/crew_quarters/bar) -"bkL" = ( -/obj/structure/chair/wood/wings{ - dir = 1 - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/start/clown, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bkM" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -32158,64 +31917,9 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"bkN" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bkO" = ( /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) -"bkQ" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"bkR" = ( -/obj/machinery/door/airlock{ - name = "Theatre Stage"; - req_one_access_txt = "12;46" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bkS" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "bkT" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -32414,25 +32118,6 @@ }, /turf/open/floor/carpet, /area/crew_quarters/theatre) -"blp" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"blq" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"blr" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "blt" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -32904,15 +32589,6 @@ }, /turf/closed/wall/r_wall, /area/hallway/primary/port) -"bmn" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard) "bmo" = ( /obj/item/flashlight/lamp/green{ pixel_x = 1; @@ -33212,21 +32888,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) -"bmU" = ( -/obj/machinery/door/airlock{ - name = "Service Hall"; - req_access_txt = "null"; - req_one_access_txt = "25;26;35;28;22;37;46;38" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/maintenance/starboard) "bmV" = ( /obj/effect/turf_decal/stripes/line{ dir = 9 @@ -33514,14 +33175,6 @@ }, /turf/open/floor/plasteel/dark, /area/aisat) -"bnz" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard) "bnA" = ( /obj/structure/rack, /obj/item/circuitboard/machine/telecomms/bus, @@ -33751,22 +33404,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) -"bnY" = ( -/obj/effect/landmark/start/mime, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"bnZ" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/sign/poster/contraband/clown{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "boa" = ( /obj/structure/chair/office/dark{ dir = 8 @@ -34023,15 +33660,6 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) -"boB" = ( -/obj/structure/chair/wood/wings{ - dir = 8 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "boC" = ( /obj/machinery/requests_console{ announcementConsole = 1; @@ -34076,10 +33704,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) -"boG" = ( -/obj/effect/landmark/start/clown, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "boH" = ( /obj/machinery/computer/communications{ dir = 8 @@ -34105,41 +33729,6 @@ /obj/item/reagent_containers/food/snacks/grown/mushroom/glowshroom, /turf/open/floor/plating, /area/crew_quarters/heads/captain/private) -"boJ" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"boK" = ( -/obj/machinery/door/airlock{ - name = "Theatre Backstage"; - req_access_txt = "46" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"boL" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/sorting/mail{ - dir = 2; - sortType = 18 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "boM" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating, @@ -34195,13 +33784,6 @@ }, /turf/open/floor/wood, /area/library) -"boX" = ( -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "boY" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -34222,12 +33804,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"bpb" = ( -/obj/structure/closet/emcloset, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard) "bpc" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -34307,15 +33883,6 @@ dir = 5 }, /area/crew_quarters/kitchen) -"bpm" = ( -/obj/structure/table/wood, -/obj/item/reagent_containers/food/snacks/pie/cream, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 26 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "bpn" = ( /obj/structure/window/reinforced{ dir = 8 @@ -34438,14 +34005,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/command) -"bpD" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel/cafeteria{ - dir = 5 - }, -/area/crew_quarters/kitchen) "bpE" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -34605,15 +34164,6 @@ /obj/machinery/atmospherics/pipe/manifold4w/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/hallway/primary/central) -"bpQ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard) "bpR" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -34903,10 +34453,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/wood, /area/bridge/showroom/corporate) -"bqp" = ( -/obj/effect/turf_decal/tile/green, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bqq" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -34953,39 +34499,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel, /area/hydroponics) -"bqt" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/kitchen) -"bqu" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/crew_quarters/kitchen) -"bqv" = ( -/obj/machinery/door/airlock/maintenance{ - name = "Kitchen Maintenance"; - req_access_txt = "28" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "bqw" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -35023,43 +34536,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"bqy" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/landmark/blobstart, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bqz" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bqA" = ( -/obj/machinery/power/apc{ - areastring = "/area/maintenance/starboard"; - dir = 1; - name = "Starboard Maintenance APC"; - pixel_y = 23 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "bqB" = ( /obj/item/paper_bin{ pixel_x = -2; @@ -35135,18 +34611,6 @@ "bqH" = ( /turf/closed/wall, /area/crew_quarters/heads/hop) -"bqI" = ( -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/light/small{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "bqJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -35201,18 +34665,6 @@ "bqM" = ( /turf/open/floor/carpet, /area/bridge) -"bqN" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "bqO" = ( /obj/structure/window/reinforced{ dir = 4 @@ -35569,26 +35021,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"brv" = ( -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"brw" = ( -/obj/structure/closet{ - name = "spare parts locker" - }, -/obj/item/rack_parts, -/obj/item/rack_parts, -/obj/item/wrench, -/obj/structure/window/reinforced{ - dir = 4 - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/crew_quarters/kitchen) "brx" = ( /obj/machinery/requests_console{ department = "AI"; @@ -35625,90 +35057,6 @@ /obj/machinery/atmospherics/pipe/simple/yellow/hidden, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat_interior) -"brz" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/machinery/door/window/eastright{ - dir = 1; - name = "Kitchen Delivery"; - req_access_txt = "28" - }, -/obj/effect/turf_decal/delivery, -/turf/open/floor/plasteel, -/area/crew_quarters/kitchen) -"brA" = ( -/obj/machinery/navbeacon{ - codes_txt = "delivery;dir=8"; - dir = 8; - freq = 1400; - location = "Kitchen" - }, -/obj/structure/plasticflaps/opaque, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/bot{ - dir = 1 - }, -/turf/open/floor/plasteel{ - dir = 1 - }, -/area/crew_quarters/kitchen) -"brB" = ( -/obj/structure/disposalpipe/sorting/mail{ - dir = 2; - sortType = 20 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"brC" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"brD" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"brE" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/starboard) -"brF" = ( -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "brG" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -35919,10 +35267,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"brV" = ( -/obj/structure/disposalpipe/segment, -/turf/closed/wall, -/area/hallway/secondary/service) "brW" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -36313,13 +35657,6 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/plasteel, /area/hallway/primary/central) -"bsH" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/effect/turf_decal/tile/neutral, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bsI" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -36646,15 +35983,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"btt" = ( -/obj/item/stock_parts/cell/high{ - charge = 100; - maxcharge = 15000 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard) "btu" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -36663,36 +35991,6 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/plasteel, /area/hallway/primary/central) -"btv" = ( -/obj/machinery/door/airlock/maintenance{ - req_one_access_txt = "12;35;47" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) -"btw" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/effect/landmark/start/botanist, -/turf/open/floor/plasteel, -/area/hydroponics) -"btx" = ( -/obj/structure/disposalpipe/junction/flip{ - dir = 2 - }, -/obj/structure/table, -/obj/item/kitchen/rollingpin, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "bty" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -36703,28 +36001,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel, /area/hallway/primary/central) -"btz" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/rnd/production/techfab/department/service, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) -"btA" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/closed/wall, -/area/hallway/secondary/service) -"btB" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "btC" = ( /obj/machinery/requests_console{ announcementConsole = 1; @@ -36999,13 +36275,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/white/side, /area/science/research) -"bul" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) "bum" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -37088,15 +36357,6 @@ }, /turf/open/floor/plasteel/dark, /area/aisat) -"buB" = ( -/obj/structure/sign/poster/contraband/random{ - pixel_x = 32 - }, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/starboard/secondary) "buC" = ( /obj/structure/bookcase, /turf/open/floor/wood, @@ -37146,12 +36406,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"buM" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "buN" = ( /obj/machinery/vending/boozeomat, /turf/closed/wall, @@ -37184,38 +36438,6 @@ }, /turf/open/floor/plasteel/dark/corner, /area/hallway/primary/starboard) -"buS" = ( -/obj/machinery/disposal/bin{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/structure/disposalpipe/trunk, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"buT" = ( -/obj/machinery/computer/arcade, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) -"buU" = ( -/obj/machinery/portable_atmospherics/canister/air, -/obj/machinery/atmospherics/components/unary/portables_connector/visible/layer2{ - dir = 1 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"buV" = ( -/obj/structure/closet/firecloset, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard) "buW" = ( /obj/structure/chair{ dir = 4 @@ -37466,11 +36688,6 @@ }, /turf/open/floor/plasteel/grimy, /area/tcommsat/computer) -"bvv" = ( -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) "bvx" = ( /obj/machinery/door/window/eastright{ dir = 1; @@ -37809,19 +37026,6 @@ /obj/item/folder, /turf/open/floor/plasteel/cult, /area/library) -"bwh" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/table, -/obj/item/storage/bag/plants, -/obj/item/reagent_containers/glass/bucket, -/obj/machinery/light{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "bwi" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -37848,20 +37052,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/hop) -"bwn" = ( -/obj/machinery/door/airlock{ - name = "Service Hall"; - req_access_txt = "null"; - req_one_access_txt = "25;26;35;28;22;37;46;38" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plating, -/area/maintenance/starboard) "bwp" = ( /obj/structure/table/wood, /obj/item/paper_bin{ @@ -37877,11 +37067,6 @@ "bwq" = ( /turf/open/floor/plasteel, /area/security/checkpoint/science/research) -"bwr" = ( -/obj/effect/landmark/event_spawn, -/obj/structure/disposalpipe/segment, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) "bws" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp/green{ @@ -38106,13 +37291,6 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) -"bwP" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/disposalpipe/junction/flip, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) "bwR" = ( /obj/machinery/power/apc/highcap/five_k{ areastring = "/area/crew_quarters/bar"; @@ -38167,17 +37345,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/secondary) -"bwW" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard/secondary) "bwX" = ( /obj/structure/chair/stool{ pixel_y = 8 @@ -38206,43 +37373,12 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/secondary) -"bxa" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg1" - }, -/area/maintenance/starboard/secondary) -"bxb" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) "bxc" = ( /turf/closed/wall/r_wall, /area/engine/atmos) "bxd" = ( /turf/closed/wall, /area/engine/atmos) -"bxe" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/spawner/lootdrop/maintenance, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) "bxf" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -38266,41 +37402,6 @@ icon_state = "panelscorched" }, /area/maintenance/starboard/secondary) -"bxh" = ( -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 8; - sortType = 24 - }, -/turf/open/floor/plating, -/area/maintenance/starboard/secondary) -"bxj" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"bxk" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/landmark/event_spawn, -/turf/open/floor/plating, -/area/maintenance/starboard) "bxm" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -38342,14 +37443,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/dark, /area/bridge) -"bxo" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/closet/l3closet/janitor, -/obj/machinery/light/small{ - dir = 4 - }, -/turf/open/floor/plasteel, -/area/janitor) "bxp" = ( /obj/effect/spawner/structure/window/reinforced/shutter, /turf/open/floor/plating, @@ -38805,14 +37898,6 @@ }, /turf/open/floor/plating, /area/medical/storage) -"byl" = ( -/obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bym" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -39006,11 +38091,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"byF" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister/water_vapor, -/turf/open/floor/plasteel, -/area/janitor) "byG" = ( /obj/structure/reagent_dispensers/watertank, /obj/item/extinguisher, @@ -39064,20 +38144,6 @@ }, /turf/open/floor/plasteel, /area/engine/foyer) -"byL" = ( -/obj/machinery/power/apc{ - areastring = "/area/crew_quarters/theatre"; - dir = 1; - name = "Theatre APC"; - pixel_y = 23 - }, -/obj/structure/cable/yellow{ - icon_state = "0-2" - }, -/obj/structure/table/wood, -/obj/item/clothing/glasses/monocle, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "byM" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -39270,14 +38336,6 @@ /obj/structure/lattice, /turf/closed/wall/r_wall, /area/space/nearstation) -"bzk" = ( -/obj/structure/chair/wood/wings{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bzl" = ( /obj/machinery/power/apc{ areastring = "/area/medical/medbay/central"; @@ -39393,25 +38451,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"bzA" = ( -/obj/structure/cable/yellow{ - icon_state = "0-8" - }, -/obj/machinery/power/apc{ - areastring = "/area/hallway/secondary/service"; - dir = 1; - name = "Service Hall APC"; - pixel_y = 23 - }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "bzB" = ( /obj/structure/mirror{ pixel_x = 28 @@ -40416,14 +39455,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"bBY" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/table/wood/poker, -/obj/item/toy/cards/deck{ - pixel_y = 4 - }, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bBZ" = ( /obj/structure/window/reinforced{ dir = 8 @@ -40465,12 +39496,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/command) -"bCc" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bCe" = ( /obj/structure/extinguisher_cabinet{ pixel_x = -27 @@ -40640,17 +39665,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/dorms) -"bCq" = ( -/obj/structure/sink{ - dir = 4; - pixel_x = 11 - }, -/obj/structure/sign/poster/official/cleanliness{ - pixel_x = 32 - }, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, -/turf/open/floor/plasteel, -/area/hydroponics) "bCs" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -41293,12 +40307,6 @@ /obj/effect/landmark/start/assistant, /turf/open/floor/wood, /area/crew_quarters/bar) -"bDJ" = ( -/obj/structure/disposalpipe/segment, -/obj/structure/table/wood/poker, -/obj/item/clothing/mask/cigarette/cigar, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bDL" = ( /obj/effect/landmark/xeno_spawn, /obj/item/bikehorn/rubberducky, @@ -42044,16 +41052,6 @@ }, /turf/open/floor/plasteel/dark, /area/security/nuke_storage) -"bFu" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/obj/item/toy/cards/deck{ - pixel_y = 4 - }, -/obj/structure/table/wood/poker, -/turf/open/floor/wood, -/area/crew_quarters/bar) "bFv" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -42246,20 +41244,6 @@ /obj/structure/closet/crate, /turf/open/floor/plating, /area/maintenance/starboard/secondary) -"bFK" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/structure/sign/poster/contraband/random{ - pixel_y = -32 - }, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 26 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "bFL" = ( /obj/machinery/holopad, /obj/effect/turf_decal/tile/yellow{ @@ -42433,15 +41417,6 @@ /obj/machinery/telecomms/bus/preset_three, /turf/open/floor/circuit/green/telecomms/mainframe, /area/tcommsat/server) -"bGg" = ( -/obj/structure/chair/wood/wings{ - dir = 8 - }, -/obj/machinery/light_switch{ - pixel_y = 28 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bGh" = ( /obj/machinery/announcement_system, /turf/open/floor/plasteel/grimy, @@ -42545,32 +41520,6 @@ }, /turf/open/floor/plating, /area/maintenance/port) -"bGr" = ( -/obj/machinery/door/airlock{ - name = "Custodial Closet"; - req_access_txt = "26" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/maintenance/starboard) "bGs" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -43422,29 +42371,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/patients_rooms/room_b) -"bIh" = ( -/obj/item/reagent_containers/spray/plantbgone{ - pixel_y = 3 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 8; - pixel_y = 8 - }, -/obj/item/reagent_containers/spray/plantbgone{ - pixel_x = 13; - pixel_y = 5 - }, -/obj/item/watertank, -/obj/item/grenade/chem_grenade/antiweed, -/obj/structure/table/glass, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hydroponics) "bIi" = ( /obj/structure/chair{ dir = 1 @@ -43879,20 +42805,6 @@ }, /turf/open/floor/plasteel/freezer, /area/crew_quarters/toilet/restrooms) -"bJp" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/structure/reagent_dispensers/cooking_oil, -/obj/machinery/firealarm{ - dir = 8; - pixel_x = 26 - }, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) "bJq" = ( /obj/machinery/door/airlock/medical{ name = "Paramedic Staging Area"; @@ -44389,18 +43301,6 @@ /obj/machinery/vending/coffee, /turf/open/floor/carpet, /area/crew_quarters/bar) -"bKn" = ( -/obj/machinery/camera{ - c_tag = "Club - Aft"; - dir = 1 - }, -/obj/machinery/computer/security/telescreen/entertainment{ - pixel_y = -29 - }, -/obj/item/clothing/mask/cigarette/pipe, -/obj/structure/table/wood, -/turf/open/floor/carpet, -/area/crew_quarters/bar) "bKo" = ( /obj/machinery/vending/cigarette, /turf/open/floor/carpet, @@ -44640,6 +43540,17 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"bKT" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/starboard) "bKU" = ( /obj/machinery/button/door{ id = "Skynet_launch"; @@ -45138,14 +44049,6 @@ }, /turf/open/floor/wood, /area/crew_quarters/bar) -"bLP" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bLQ" = ( /obj/machinery/power/apc{ areastring = "/area/medical/medbay/aft"; @@ -45159,17 +44062,6 @@ /obj/structure/disposalpipe/junction, /turf/open/floor/plasteel/white, /area/medical/medbay/aft) -"bLR" = ( -/obj/structure/dresser, -/obj/machinery/newscaster{ - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"bLS" = ( -/obj/machinery/vending/autodrobe, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "bLT" = ( /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, @@ -45863,10 +44755,6 @@ /obj/machinery/gibber, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"bNG" = ( -/obj/structure/kitchenspike, -/turf/open/floor/plasteel/showroomfloor, -/area/crew_quarters/kitchen) "bNI" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -45931,21 +44819,6 @@ dir = 4 }, /area/medical/medbay/aft) -"bNN" = ( -/obj/structure/sign/poster/official/random{ - pixel_x = 32 - }, -/obj/structure/closet/crate/hydroponics, -/obj/item/shovel/spade, -/obj/item/wrench, -/obj/item/reagent_containers/glass/bucket, -/obj/item/cultivator, -/obj/item/wirecutters, -/obj/machinery/firealarm{ - pixel_y = 26 - }, -/turf/open/floor/plasteel, -/area/hydroponics) "bNP" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible{ dir = 9 @@ -46451,22 +45324,6 @@ }, /turf/open/floor/plasteel/showroomfloor, /area/crew_quarters/kitchen) -"bPb" = ( -/obj/structure/table/wood, -/obj/structure/mirror{ - pixel_x = -28 - }, -/obj/item/lipstick/black, -/obj/item/lipstick/jade{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/lipstick/purple{ - pixel_x = -2; - pixel_y = -2 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "bPc" = ( /obj/structure/disposalpipe/segment, /obj/machinery/door/airlock/medical{ @@ -47726,20 +46583,6 @@ /obj/structure/cable/yellow, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"bRR" = ( -/obj/structure/table, -/obj/item/stack/packageWrap, -/obj/item/hand_labeler, -/obj/machinery/button/door{ - id = "kitchenhydro"; - name = "Service Shutter Control"; - pixel_y = -24; - req_access_txt = "28" - }, -/turf/open/floor/plasteel/cafeteria{ - dir = 5 - }, -/area/crew_quarters/kitchen) "bRS" = ( /obj/structure/table, /obj/item/reagent_containers/food/condiment/saltshaker{ @@ -48264,18 +47107,6 @@ }, /turf/open/floor/plating, /area/medical/virology) -"bSP" = ( -/obj/structure/sink{ - dir = 8; - pixel_x = -12; - pixel_y = 2 - }, -/obj/machinery/firealarm{ - dir = 4; - pixel_x = -26 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bSQ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -48544,17 +47375,6 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port) -"bTw" = ( -/obj/machinery/hydroponics/constructable, -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/firealarm{ - dir = 1; - pixel_y = -26 - }, -/turf/open/floor/plasteel, -/area/hydroponics) "bTx" = ( /obj/structure/closet/l3closet, /obj/effect/turf_decal/tile/blue, @@ -48957,46 +47777,10 @@ /obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/hydroponics) -"bUf" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 - }, -/obj/structure/noticeboard{ - desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; - name = "requests board"; - pixel_y = 32 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) -"bUg" = ( -/obj/machinery/vending/hydronutrients, -/obj/machinery/light{ - dir = 1 - }, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) "bUh" = ( /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel, /area/hydroponics) -"bUi" = ( -/obj/item/storage/box/syringes, -/obj/item/storage/box/beakers{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/structure/table/glass, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) -"bUj" = ( -/obj/machinery/reagentgrinder, -/obj/structure/table/glass, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) "bUk" = ( /obj/structure/disposalpipe/segment, /obj/structure/cable/yellow{ @@ -49225,14 +48009,6 @@ "bUJ" = ( /turf/open/floor/engine/co2, /area/engine/atmos) -"bUK" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bUL" = ( /obj/machinery/telecomms/server/presets/security, /turf/open/floor/circuit/telecomms/mainframe, @@ -49396,14 +48172,6 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"bVm" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/chair/stool, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/janitor) "bVn" = ( /obj/machinery/door/airlock/virology{ name = "Break Room"; @@ -49456,19 +48224,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) -"bVq" = ( -/obj/effect/turf_decal/tile/green{ - dir = 1 - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bVr" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/westleft{ @@ -49723,14 +48478,6 @@ }, /turf/open/floor/plating, /area/maintenance/solars/port/aft) -"bVT" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/start/janitor, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/janitor) "bVU" = ( /obj/structure/table, /obj/item/paper_bin{ @@ -50509,13 +49256,6 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plasteel/white, /area/science/xenobiology) -"bXC" = ( -/mob/living/simple_animal/hostile/lizard{ - name = "Wags-His-Tail"; - real_name = "Wags-His-Tail" - }, -/turf/open/floor/plating, -/area/janitor) "bXD" = ( /obj/structure/closet/l3closet/scientist, /obj/machinery/airalarm{ @@ -50749,10 +49489,6 @@ }, /turf/open/floor/carpet, /area/crew_quarters/theatre) -"bYc" = ( -/obj/effect/spawner/structure/window, -/turf/open/floor/plating, -/area/hallway/primary/central) "bYd" = ( /obj/machinery/light_switch{ pixel_y = -28 @@ -50776,15 +49512,6 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/white, /area/science/lab) -"bYf" = ( -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 4 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) "bYg" = ( /obj/effect/landmark/start/botanist, /obj/machinery/holopad, @@ -51260,17 +49987,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/engineering) -"bZq" = ( -/obj/item/reagent_containers/food/snacks/grown/wheat, -/obj/item/reagent_containers/food/snacks/grown/watermelon, -/obj/item/reagent_containers/food/snacks/grown/citrus/orange, -/obj/item/reagent_containers/food/snacks/grown/grapes, -/obj/structure/extinguisher_cabinet{ - pixel_x = -27 - }, -/obj/structure/table/glass, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bZr" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -51286,14 +50002,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"bZs" = ( -/obj/item/cultivator, -/obj/item/crowbar, -/obj/item/plant_analyzer, -/obj/item/reagent_containers/glass/bucket, -/obj/structure/table/glass, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "bZt" = ( /obj/structure/sink{ dir = 8; @@ -51331,13 +50039,6 @@ }, /turf/open/floor/plasteel, /area/hydroponics) -"bZw" = ( -/obj/structure/closet/secure_closet/hydroponics, -/obj/machinery/light_switch{ - pixel_x = -26 - }, -/turf/open/floor/plasteel, -/area/hydroponics) "bZx" = ( /obj/structure/cable/white{ icon_state = "4-8" @@ -51993,19 +50694,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/kitchen) -"caJ" = ( -/obj/machinery/door/airlock{ - name = "Theatre Backstage"; - req_access_txt = "46" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "caK" = ( /obj/machinery/door/airlock/engineering{ name = "Telecomms Storage"; @@ -52775,72 +51463,6 @@ }, /turf/open/floor/plasteel, /area/security/checkpoint/science/research) -"cco" = ( -/obj/machinery/light/small, -/obj/item/toy/dummy, -/obj/item/toy/prize/honk{ - pixel_y = 12 - }, -/obj/structure/table/wood, -/obj/item/radio/intercom{ - pixel_y = -29 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"ccp" = ( -/obj/machinery/vending/hydroseeds{ - slogan_delay = 700 - }, -/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/hallway/primary/central) -"ccq" = ( -/obj/structure/table, -/obj/item/book/manual/wiki/hydroponicsguide, -/obj/machinery/light, -/obj/item/book/manual/wiki/hydroponicsplants, -/obj/machinery/camera{ - c_tag = "Hydroponics - Foyer"; - dir = 1 - }, -/obj/item/radio/intercom{ - pixel_y = -25 - }, -/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/hallway/primary/central) -"ccr" = ( -/obj/machinery/vending/hydronutrients, -/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/hallway/primary/central) "ccs" = ( /obj/machinery/disposal/bin{ pixel_x = -2; @@ -53165,21 +51787,6 @@ dir = 5 }, /area/crew_quarters/kitchen) -"cde" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/power/apc{ - areastring = "/area/janitor"; - dir = 8; - name = "Custodial Closet APC"; - pixel_x = -25 - }, -/obj/item/restraints/legcuffs/beartrap, -/obj/item/restraints/legcuffs/beartrap, -/obj/structure/cable/yellow, -/obj/item/reagent_containers/glass/bucket, -/obj/item/mop, -/turf/open/floor/plasteel, -/area/janitor) "cdf" = ( /obj/structure/sink{ dir = 8; @@ -53415,14 +52022,6 @@ dir = 5 }, /area/crew_quarters/kitchen) -"cdF" = ( -/obj/machinery/light_switch{ - pixel_x = -26 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "cdG" = ( /turf/open/floor/carpet, /area/medical/psych) @@ -53581,26 +52180,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"cdX" = ( -/obj/effect/decal/cleanable/dirt, -/obj/item/storage/box/mousetraps{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/structure/table, -/obj/item/storage/box/mousetraps{ - pixel_x = -3; - pixel_y = 8 - }, -/obj/item/clothing/gloves/color/orange{ - pixel_x = 4; - pixel_y = -2 - }, -/obj/item/radio/intercom{ - pixel_y = 28 - }, -/turf/open/floor/plasteel, -/area/janitor) "cdY" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -54939,12 +53518,6 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) -"cgn" = ( -/obj/item/cigbutt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" - }, -/area/maintenance/starboard/secondary) "cgo" = ( /turf/closed/wall/r_wall, /area/science/research) @@ -55307,20 +53880,6 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/visible, /turf/open/floor/plasteel, /area/hallway/primary/starboard) -"cgS" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel/cafeteria{ - dir = 5 - }, -/area/crew_quarters/kitchen) -"cgT" = ( -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "cgU" = ( /obj/machinery/door/airlock/medical/glass{ name = "Medbay Storage"; @@ -55615,18 +54174,6 @@ }, /turf/open/floor/plasteel, /area/clerk) -"chr" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 8 - }, -/turf/open/floor/plasteel/cafeteria{ - dir = 5 - }, -/area/crew_quarters/kitchen) "chs" = ( /obj/item/paper, /obj/structure/sign/map/left{ @@ -55744,12 +54291,6 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) -"chE" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/janitorialcart, -/obj/machinery/light/small, -/turf/open/floor/plasteel, -/area/janitor) "chF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 6 @@ -56439,22 +54980,6 @@ /obj/structure/girder/reinforced, /turf/open/floor/plating/airless, /area/engine/atmos) -"cjr" = ( -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 10 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "cjx" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -56482,33 +55007,6 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) -"cjA" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/effect/turf_decal/tile/green, -/obj/effect/turf_decal/tile/green{ - dir = 4 - }, -/obj/effect/turf_decal/tile/green{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/hallway/primary/central) -"cjB" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 6 - }, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "cjC" = ( /obj/structure/chair, /turf/open/floor/plasteel/dark, @@ -56589,21 +55087,6 @@ /obj/effect/turf_decal/tile/purple, /turf/open/floor/plasteel, /area/hallway/primary/central) -"cjO" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/machinery/door/airlock/public/glass{ - name = "Hydroponics Storage" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/door/firedoor/border_only{ - dir = 1 - }, -/obj/machinery/door/firedoor/border_only, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "cjP" = ( /obj/item/stack/packageWrap, /obj/item/stack/packageWrap, @@ -56645,14 +55128,6 @@ }, /turf/open/floor/plasteel, /area/hydroponics) -"cjR" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/turf/open/floor/plasteel, -/area/hallway/secondary/service) "cjS" = ( /obj/item/stack/sheet/mineral/plasma, /obj/item/stack/sheet/mineral/plasma, @@ -56953,18 +55428,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/hallway/primary/aft) -"ckB" = ( -/obj/structure/cable/yellow{ - icon_state = "1-4" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "ckC" = ( /obj/machinery/door/airlock/medical/glass{ name = "Hydroponics"; @@ -57192,128 +55655,6 @@ }, /turf/open/floor/plasteel, /area/hydroponics) -"clb" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock{ - name = "Hydroponics Backroom"; - req_access_txt = "35" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/turf_decal/bot, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"clc" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/hydroponics) -"cle" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/hydroponics) -"clf" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/airlock/maintenance{ - name = "Hydroponics Maintenance"; - req_access_txt = "35" - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/effect/mapping_helpers/airlock/cyclelink_helper{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/obj/machinery/door/firedoor/border_only, -/obj/machinery/door/firedoor/border_only{ - dir = 4 - }, -/obj/machinery/door/firedoor/border_only{ - dir = 8 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"clg" = ( -/obj/structure/disposalpipe/sorting/mail{ - sortType = 21 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/structure/cable/yellow{ - icon_state = "2-4" - }, -/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ - dir = 1 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/obj/structure/sign/departments/minsky/supply/hydroponics{ - pixel_y = 32 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) -"clh" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "clj" = ( /obj/structure/sink{ dir = 8; @@ -57596,18 +55937,6 @@ dir = 5 }, /area/science/research) -"clO" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plating, -/area/maintenance/starboard) "clR" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ @@ -57896,17 +56225,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/white, /area/science/research) -"cmE" = ( -/obj/structure/cable/yellow{ - icon_state = "1-2" - }, -/obj/structure/disposalpipe/segment, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, -/area/maintenance/starboard) "cmF" = ( /obj/item/radio/intercom{ dir = 8; @@ -58128,25 +56446,6 @@ }, /turf/open/floor/plasteel/white, /area/science/research) -"cnn" = ( -/obj/structure/cable/yellow{ - icon_state = "1-8" - }, -/obj/structure/disposalpipe/sorting/mail/flip{ - dir = 2; - sortType = 22 - }, -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 5 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 5 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "cnp" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer2, /turf/open/floor/plasteel/white, @@ -58160,26 +56459,6 @@ }, /turf/open/floor/plasteel/white/side, /area/medical/surgery) -"cns" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/obj/machinery/light_switch{ - pixel_x = -26; - pixel_y = 26 - }, -/obj/structure/cable/yellow{ - icon_state = "2-8" - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 8 - }, -/turf/open/floor/plasteel, -/area/janitor) "cnv" = ( /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ @@ -59915,13 +58194,6 @@ }, /turf/open/floor/plasteel/white, /area/medical/genetics/cloning) -"cqp" = ( -/obj/effect/turf_decal/tile/green, -/obj/structure/sign/departments/minsky/supply/hydroponics{ - pixel_x = 32 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/central) "cqq" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -68259,6 +66531,18 @@ dir = 1 }, /area/chapel/main) +"cRs" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/obj/structure/table/glass, +/obj/machinery/reagentgrinder, +/turf/open/floor/plasteel, +/area/hydroponics) "cRu" = ( /obj/structure/sign/departments/minsky/research/xenobiology, /turf/closed/wall/r_wall, @@ -69091,10 +67375,6 @@ /obj/machinery/shieldwallgen/xenobiologyaccess, /turf/open/floor/plating, /area/science/xenobiology) -"cTR" = ( -/obj/effect/spawner/xmastree, -/turf/open/floor/wood, -/area/crew_quarters/bar) "cTT" = ( /obj/structure/disposalpipe/segment, /turf/closed/wall/r_wall, @@ -71312,49 +69592,6 @@ /obj/structure/sign/poster/random, /turf/closed/wall, /area/crew_quarters/bar) -"dhU" = ( -/obj/structure/musician/piano, -/obj/structure/window/reinforced{ - dir = 8 - }, -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"dhV" = ( -/obj/machinery/light/small{ - dir = 1 - }, -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/turf/open/floor/carpet, -/area/crew_quarters/theatre) -"dhW" = ( -/obj/structure/table/wood, -/obj/item/staff/broom, -/obj/item/wrench, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, -/obj/structure/sign/poster/random{ - pixel_y = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"dhX" = ( -/obj/structure/table/wood, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/clothing/head/sombrero, -/obj/structure/sign/poster/random{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "dhZ" = ( /obj/structure/urinal{ pixel_y = 29 @@ -71364,24 +69601,6 @@ }, /turf/open/floor/plating, /area/crew_quarters/toilet/auxiliary) -"dib" = ( -/obj/structure/table/wood, -/obj/item/lipstick{ - pixel_y = 5 - }, -/obj/machinery/camera{ - c_tag = "Theatre - Stage"; - dir = 8 - }, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/item/instrument/guitar, -/obj/structure/sign/poster/random{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "did" = ( /obj/structure/table/wood, /obj/item/folder, @@ -71390,17 +69609,6 @@ }, /turf/open/floor/wood, /area/vacant_room/office) -"dif" = ( -/obj/item/soap/nanotrasen, -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/table/wood, -/obj/structure/sign/poster/random{ - pixel_x = 32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "dig" = ( /obj/structure/sign/poster/official/random{ pixel_x = 32 @@ -71429,18 +69637,6 @@ /obj/structure/sign/poster/official/random, /turf/closed/wall, /area/crew_quarters/kitchen) -"dil" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/item/clothing/mask/pig, -/obj/item/bikehorn, -/obj/structure/table/wood, -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 - }, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "din" = ( /obj/structure/table/wood, /obj/item/paper, @@ -71468,34 +69664,6 @@ }, /turf/open/floor/carpet, /area/bridge/showroom/corporate) -"diq" = ( -/obj/machinery/light/small{ - dir = 8 - }, -/obj/item/clothing/mask/horsehead, -/obj/structure/table/wood, -/obj/machinery/airalarm{ - dir = 1; - pixel_y = -24 - }, -/obj/structure/sign/poster/contraband/random{ - pixel_x = -32 - }, -/obj/item/clothing/mask/cigarette/pipe, -/obj/item/clothing/mask/fakemoustache, -/turf/open/floor/wood, -/area/crew_quarters/theatre) -"dir" = ( -/obj/machinery/camera{ - c_tag = "Theatre - Backstage"; - dir = 1 - }, -/obj/structure/sign/poster/contraband/random{ - pixel_y = -32 - }, -/obj/structure/closet/crate/wooden/toy, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "diD" = ( /obj/machinery/vending/cigarette, /obj/machinery/status_display/evac{ @@ -71553,6 +69721,19 @@ icon_state = "platingdmg2" }, /area/maintenance/aft) +"diS" = ( +/obj/structure/table/wood, +/obj/item/wrench, +/obj/item/staff/broom, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "djg" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -71658,6 +69839,21 @@ }, /turf/open/floor/plating, /area/chapel/main) +"dlu" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/starboard) "dlI" = ( /turf/closed/wall/r_wall, /area/engine/supermatter) @@ -71835,6 +70031,14 @@ icon_state = "panelscorched" }, /area/maintenance/starboard/fore) +"dpy" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/starboard) "dpL" = ( /turf/open/floor/plating{ icon_state = "platingdmg3" @@ -72085,6 +70289,15 @@ /obj/item/storage/box, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"dAj" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "dAk" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 4 @@ -72095,6 +70308,16 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"dAB" = ( +/obj/structure/sink{ + pixel_y = 17 + }, +/mob/living/simple_animal/hostile/lizard{ + name = "Wags-His-Tail"; + real_name = "Wags-His-Tail" + }, +/turf/open/floor/plasteel, +/area/janitor) "dBe" = ( /obj/structure/girder, /obj/structure/grille, @@ -72622,6 +70845,23 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"dSi" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/crew_quarters/bar) +"dSZ" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "dUq" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -72865,6 +71105,17 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"elb" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "elS" = ( /obj/machinery/computer/scan_consolenew{ dir = 4 @@ -72960,6 +71211,14 @@ }, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"esh" = ( +/obj/item/cigbutt, +/obj/effect/spawner/lootdrop/maintenance, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/secondary) "ess" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -72979,6 +71238,18 @@ /obj/machinery/electrolyzer, /turf/open/floor/plasteel, /area/science/storage) +"euo" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/obj/structure/sign/poster/random{ + pixel_y = -32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "euu" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 8 @@ -73025,6 +71296,42 @@ dir = 8 }, /area/science/robotics/lab) +"eyA" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"eAu" = ( +/obj/item/reagent_containers/spray/plantbgone{ + pixel_y = 3 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 8; + pixel_y = 8 + }, +/obj/item/reagent_containers/spray/plantbgone{ + pixel_x = 13; + pixel_y = 5 + }, +/obj/item/watertank, +/obj/item/grenade/chem_grenade/antiweed, +/obj/structure/table/glass, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "eAL" = ( /obj/machinery/status_display/evac{ pixel_y = 32 @@ -73157,6 +71464,15 @@ }, /turf/open/floor/plating, /area/quartermaster/storage) +"eKK" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/reagent_dispensers/cooking_oil, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "eMO" = ( /obj/effect/landmark/xeno_spawn, /obj/structure/chair, @@ -73251,20 +71567,39 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/engine/foyer) -"eUM" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/sink{ - dir = 4; - pixel_x = 11 +"eUO" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 }, -/obj/structure/sign/poster/random{ - pixel_x = 32 +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 }, -/obj/structure/janitorialcart{ - dir = 8 +/obj/structure/cable/yellow{ + icon_state = "4-8" }, /turf/open/floor/plasteel, -/area/janitor) +/area/hallway/primary/central) +"eVe" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "eVh" = ( /obj/effect/spawner/structure/window/reinforced/shutter, /turf/open/floor/plating, @@ -73358,6 +71693,23 @@ }, /turf/open/floor/plasteel/dark, /area/engine/foyer) +"fbH" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "fdr" = ( /obj/structure/closet/firecloset, /turf/open/floor/plating, @@ -73403,6 +71755,16 @@ }, /turf/open/floor/plasteel, /area/quartermaster/storage) +"ffa" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/sign/departments/minsky/supply/hydroponics{ + pixel_x = -32 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "ffD" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 1 @@ -73544,6 +71906,16 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/cmo) +"fut" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/maintenance/starboard) "fuH" = ( /obj/structure/table, /obj/machinery/computer/med_data/laptop, @@ -73556,6 +71928,31 @@ /obj/effect/turf_decal/tile/red, /turf/open/floor/plasteel/white, /area/security/physician) +"fuW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/maintenance/starboard) +"fuX" = ( +/obj/structure/table/wood, +/obj/item/lipstick{ + pixel_y = 5 + }, +/obj/machinery/camera{ + c_tag = "Theatre - Stage"; + dir = 8 + }, +/obj/item/instrument/guitar, +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 26 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "fvG" = ( /obj/machinery/vending/games, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -73581,6 +71978,13 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"fyp" = ( +/obj/machinery/vending/wardrobe/jani_wardrobe, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/janitor) "fyr" = ( /obj/structure/table, /obj/item/stack/sheet/metal/fifty, @@ -73815,6 +72219,19 @@ /obj/machinery/atmospherics/miner/toxins, /turf/open/floor/engine/plasma, /area/engine/atmos) +"fPl" = ( +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, +/obj/machinery/disposal/bin{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "fPq" = ( /obj/item/radio/intercom{ broadcasting = 1; @@ -74056,6 +72473,14 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plating, /area/maintenance/starboard) +"gbP" = ( +/obj/effect/turf_decal/tile/neutral, +/obj/structure/disposalpipe/sorting/mail{ + dir = 4; + sortType = 22 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "gcR" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -74071,6 +72496,13 @@ /obj/structure/lattice/catwalk, /turf/open/space/basic, /area/space/nearstation) +"gdZ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) "gfz" = ( /obj/structure/cable/yellow{ icon_state = "1-4" @@ -74148,6 +72580,18 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopods) +"gnh" = ( +/obj/machinery/light{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line, +/obj/structure/noticeboard{ + desc = "A board for pinning important notices upon. Probably helpful for keeping track of requests."; + name = "requests board"; + pixel_y = 32 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "gnp" = ( /obj/structure/table, /obj/item/radio/intercom{ @@ -74295,6 +72739,31 @@ /obj/structure/table/glass, /turf/open/floor/plasteel, /area/science/xenobiology) +"gxY" = ( +/obj/machinery/camera{ + c_tag = "Club - Aft"; + dir = 1 + }, +/obj/machinery/computer/security/telescreen/entertainment{ + pixel_y = -29 + }, +/obj/machinery/computer/arcade{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/bar) +"gzV" = ( +/obj/structure/closet/crate/hydroponics, +/obj/item/wirecutters, +/obj/item/cultivator, +/obj/item/wrench, +/obj/item/reagent_containers/glass/bucket, +/obj/item/shovel/spade, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "gAm" = ( /obj/machinery/door/airlock/research{ id_tag = "AuxGenetics"; @@ -74328,6 +72797,24 @@ }, /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/entry) +"gDk" = ( +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/plasteel/cafeteria{ + dir = 5 + }, +/area/crew_quarters/kitchen) +"gDK" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/maintenance/starboard) "gFp" = ( /obj/machinery/door/airlock/external{ req_one_access_txt = "13,8" @@ -74538,6 +73025,13 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/aft) +"gQz" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/starboard) "gRG" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -74557,6 +73051,16 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"gSl" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small, +/turf/open/floor/plating, +/area/maintenance/starboard) "gXd" = ( /obj/machinery/mineral/stacking_unit_console{ machinedir = 8; @@ -74740,21 +73244,6 @@ /obj/machinery/door/firedoor/border_only, /turf/open/floor/plating, /area/maintenance/port) -"hnX" = ( -/obj/structure/cable/yellow{ - icon_state = "4-8" - }, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ - dir = 1 - }, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) "hnY" = ( /obj/structure/window/reinforced{ dir = 4 @@ -74789,6 +73278,16 @@ /obj/item/reagent_containers/syringe, /turf/open/floor/plasteel/white, /area/security/brig) +"hqE" = ( +/obj/machinery/disposal/bin{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/janitor) "hqG" = ( /obj/effect/landmark/blobstart, /turf/open/floor/plating, @@ -74879,6 +73378,12 @@ /obj/structure/lattice, /turf/open/space/basic, /area/aisat) +"hxA" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "hyP" = ( /obj/machinery/door/airlock/external{ name = "Escape Pod Two" @@ -74915,6 +73420,18 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"hAA" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "hAJ" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ @@ -74967,6 +73484,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"hEj" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/kitchenspike, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) "hFm" = ( /obj/machinery/power/apc{ areastring = "/area/maintenance/disposal"; @@ -75082,6 +73609,14 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"hRH" = ( +/obj/machinery/door/airlock/external{ + req_one_access_txt = "13,8" + }, +/obj/machinery/atmospherics/pipe/layer_manifold, +/obj/effect/mapping_helpers/airlock/cyclelink_helper, +/turf/open/floor/plating, +/area/maintenance/starboard/fore) "hSj" = ( /obj/machinery/camera{ c_tag = "Arrivals - Middle Arm"; @@ -75106,6 +73641,26 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"hUc" = ( +/obj/structure/table/wood, +/obj/item/reagent_containers/food/snacks/pie/cream, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"hUl" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "hUo" = ( /obj/machinery/shower{ dir = 8 @@ -75202,6 +73757,16 @@ icon_state = "wood-broken4" }, /area/library) +"hZx" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "hZO" = ( /obj/machinery/airalarm{ dir = 4; @@ -75209,6 +73774,16 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"ial" = ( +/obj/structure/window/reinforced{ + dir = 8 + }, +/obj/structure/musician/piano, +/obj/structure/sign/poster/random{ + pixel_y = 32 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "ibf" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -75219,6 +73794,18 @@ icon_state = "platingdmg2" }, /area/maintenance/port) +"ibl" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/machinery/light_switch{ + pixel_y = 28 + }, +/obj/machinery/light{ + dir = 1 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "ibM" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -75252,6 +73839,12 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"icV" = ( +/obj/structure/sign/poster/official/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "ieQ" = ( /obj/structure/chair/comfy/black{ dir = 8 @@ -75280,6 +73873,15 @@ }, /turf/open/floor/plasteel, /area/engine/engineering) +"ifQ" = ( +/obj/effect/turf_decal/stripes/line, +/obj/item/wrench, +/obj/item/clothing/suit/apron, +/obj/item/clothing/accessory/armband/hydro, +/obj/structure/table/glass, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plasteel, +/area/hydroponics) "igZ" = ( /obj/effect/spawner/structure/window, /obj/machinery/door/firedoor/border_only{ @@ -75523,6 +74125,16 @@ }, /turf/open/floor/plasteel/white, /area/security/brig) +"iBf" = ( +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard) "iBW" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -75584,6 +74196,13 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"iFq" = ( +/obj/structure/closet/crate/wooden/toy, +/obj/structure/sign/poster/contraband/random{ + pixel_x = -32 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "iGx" = ( /obj/structure/table, /obj/effect/decal/cleanable/cobweb, @@ -75602,14 +74221,6 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel/dark, /area/crew_quarters/cryopods) -"iKA" = ( -/obj/structure/disposalpipe/segment{ - dir = 5 - }, -/turf/open/floor/plating{ - icon_state = "platingdmg2" - }, -/area/maintenance/starboard) "iKO" = ( /obj/structure/cable{ icon_state = "4-8" @@ -75679,6 +74290,16 @@ /obj/effect/turf_decal/trimline/blue/line, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"iRO" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "iSa" = ( /obj/machinery/door/airlock/maintenance{ name = "Disposal Access"; @@ -75842,6 +74463,27 @@ /obj/machinery/atmospherics/miner/nitrogen, /turf/open/floor/engine/n2, /area/engine/atmos) +"jcH" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"jdd" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "jdY" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -75954,6 +74596,24 @@ }, /turf/template_noop, /area/maintenance/fore) +"joF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"jpK" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "jqX" = ( /obj/effect/landmark/stationroom/maint/threexfive, /turf/template_noop, @@ -75975,13 +74635,6 @@ /obj/effect/landmark/start/head_of_personnel, /turf/open/floor/carpet, /area/bridge) -"jtr" = ( -/obj/structure/table, -/obj/item/reagent_containers/food/condiment/enzyme{ - layer = 5 - }, -/turf/open/floor/plasteel/cafeteria, -/area/crew_quarters/kitchen) "jtW" = ( /obj/machinery/door/airlock/maintenance{ name = "Medbay Maintenance"; @@ -75995,9 +74648,27 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"jul" = ( +/obj/machinery/requests_console{ + department = "Janitorial"; + departmentType = 1; + pixel_y = 29 + }, +/obj/structure/janitorialcart{ + dir = 8 + }, +/turf/open/floor/plasteel, +/area/janitor) "jwW" = ( /turf/closed/wall/mineral/plastitanium, /area/crew_quarters/fitness/recreation) +"jyJ" = ( +/obj/machinery/space_heater, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "jAt" = ( /obj/effect/turf_decal/bot, /obj/machinery/portable_atmospherics/canister/water_vapor, @@ -76046,6 +74717,18 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/paramedic) +"jER" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/clown{ + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "jGn" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -76073,6 +74756,26 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/bar) +"jHf" = ( +/obj/machinery/firealarm{ + dir = 1; + pixel_y = -26 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"jHW" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/structure/sign/poster/official/cleanliness{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "jJj" = ( /obj/effect/turf_decal/stripes/line, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -76107,6 +74810,23 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/port) +"jKB" = ( +/obj/machinery/vending/hydronutrients, +/obj/machinery/light{ + dir = 8 + }, +/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, +/area/hallway/primary/central) "jKJ" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ dir = 8 @@ -76181,6 +74901,15 @@ /obj/structure/closet/radiation, /turf/open/floor/plasteel/dark, /area/engine/atmos) +"jRN" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "jTg" = ( /obj/machinery/door/airlock/external, /obj/effect/mapping_helpers/airlock/cyclelink_helper{ @@ -76225,6 +74954,21 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"jWE" = ( +/obj/machinery/power/apc{ + areastring = "/area/maintenance/starboard"; + dir = 8; + name = "Starboard Maintenance APC"; + pixel_x = -25 + }, +/obj/structure/cable/yellow{ + icon_state = "0-4" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "jWW" = ( /obj/structure/cable{ icon_state = "1-2" @@ -76277,6 +75021,10 @@ /obj/structure/table/optable, /turf/open/floor/plasteel, /area/medical/surgery) +"jYn" = ( +/obj/structure/closet/l3closet/janitor, +/turf/open/floor/plasteel, +/area/janitor) "jYH" = ( /obj/structure/table/wood, /obj/machinery/recharger{ @@ -76463,12 +75211,6 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) -"kjh" = ( -/obj/effect/decal/cleanable/dirt, -/obj/vehicle/ridden/janicart, -/obj/item/key/janitor, -/turf/open/floor/plasteel, -/area/janitor) "kkv" = ( /obj/machinery/door/firedoor/border_only{ dir = 1 @@ -76546,6 +75288,14 @@ "krD" = ( /turf/open/floor/plasteel/white, /area/science/misc_lab/range) +"kug" = ( +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/obj/structure/table, +/obj/item/kitchen/rollingpin, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "kui" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -76558,14 +75308,6 @@ }, /turf/open/floor/plasteel/dark, /area/engine/foyer) -"kwI" = ( -/obj/item/wrench, -/obj/item/clothing/suit/apron, -/obj/item/clothing/accessory/armband/hydro, -/obj/structure/table/glass, -/obj/effect/turf_decal/stripes/line, -/turf/open/floor/plasteel, -/area/hydroponics) "kwP" = ( /turf/template_noop, /area/maintenance/fore) @@ -76626,6 +75368,12 @@ /obj/item/paper/fluff/holodeck/disclaimer, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"kDf" = ( +/obj/structure/sign/departments/minsky/supply/hydroponics{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "kDh" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -76665,6 +75413,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"kEt" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard/secondary) "kGo" = ( /obj/structure/closet/boxinggloves, /obj/effect/turf_decal/tile/neutral{ @@ -76767,6 +75525,17 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel/dark, /area/aisat) +"kLz" = ( +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + sortType = 19 + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/effect/landmark/event_spawn, +/turf/open/floor/plating, +/area/maintenance/starboard) "kNr" = ( /obj/effect/turf_decal/tile/yellow{ dir = 1 @@ -76858,19 +75627,6 @@ }, /turf/open/floor/plating, /area/maintenance/department/medical/central) -"kSB" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/machinery/camera{ - c_tag = "Custodial Closet"; - dir = 4 - }, -/turf/open/floor/plasteel, -/area/janitor) "kTK" = ( /obj/machinery/door/airlock/external{ req_access_txt = "13" @@ -76953,6 +75709,21 @@ icon_state = "panelscorched" }, /area/maintenance/port) +"ldW" = ( +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "lfJ" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -76966,6 +75737,27 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"lfM" = ( +/obj/machinery/door/airlock{ + name = "Custodial Closet"; + req_access_txt = "26" + }, +/obj/machinery/door/airlock{ + name = "Custodial Closet"; + req_access_txt = "26" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/janitor) "lfO" = ( /obj/structure/cable/yellow{ icon_state = "1-8" @@ -76981,6 +75773,33 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"lfV" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"lhj" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "ljl" = ( /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plating{ @@ -77027,6 +75846,16 @@ }, /turf/open/floor/plating, /area/maintenance/port/aft) +"lmE" = ( +/obj/structure/chair/wood/wings{ + dir = 1 + }, +/obj/effect/landmark/start/mime, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"lnc" = ( +/turf/open/floor/plasteel/cafeteria, +/area/crew_quarters/kitchen) "lnX" = ( /turf/closed/wall/r_wall, /area/security/physician) @@ -77100,6 +75929,20 @@ "lvi" = ( /turf/closed/wall, /area/maintenance/starboard/secondary) +"lwc" = ( +/obj/item/cultivator, +/obj/item/crowbar, +/obj/item/plant_analyzer, +/obj/item/reagent_containers/glass/bucket, +/obj/structure/table/glass, +/obj/item/radio/intercom{ + pixel_y = -25 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "lwm" = ( /obj/structure/window/reinforced{ dir = 4 @@ -77187,6 +76030,15 @@ icon_state = "platingdmg2" }, /area/maintenance/port/aft) +"lAu" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "lAO" = ( /obj/effect/spawner/structure/window/reinforced/shutter, /turf/open/floor/plating, @@ -77203,6 +76055,20 @@ }, /turf/open/floor/plasteel, /area/hallway/primary/central) +"lCo" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "lEu" = ( /obj/effect/turf_decal/stripes/corner{ dir = 1 @@ -77215,6 +76081,11 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"lFX" = ( +/obj/machinery/light, +/obj/machinery/smartfridge/drying_rack, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "lGS" = ( /obj/docking_port/stationary/public_mining_dock, /turf/open/floor/plating, @@ -77230,6 +76101,25 @@ }, /turf/open/floor/plasteel/white, /area/medical/medbay/central) +"lIf" = ( +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/obj/machinery/light{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "lIi" = ( /obj/machinery/status_display/evac{ pixel_y = -32 @@ -77380,6 +76270,33 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"lXx" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/starboard) +"lYj" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "lYv" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -77409,6 +76326,18 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"mbe" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access_txt = "35" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard/secondary) "mbS" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -77436,14 +76365,6 @@ icon_state = "panelscorched" }, /area/maintenance/port) -"mfe" = ( -/obj/machinery/door/airlock/external{ - req_one_access_txt = "13,8" - }, -/obj/machinery/atmospherics/pipe/layer_manifold, -/obj/effect/mapping_helpers/airlock/cyclelink_helper, -/turf/open/space/basic, -/area/maintenance/starboard/fore) "mfF" = ( /obj/structure/closet/emcloset/anchored, /obj/effect/turf_decal/stripes/end, @@ -77460,6 +76381,18 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"mgP" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/turf/open/floor/plasteel/cafeteria{ + dir = 5 + }, +/area/crew_quarters/kitchen) "mjJ" = ( /obj/machinery/nuclearbomb/beer{ pixel_x = 2; @@ -77480,6 +76413,15 @@ }, /turf/open/floor/plasteel/dark, /area/engine/atmos) +"mmB" = ( +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/effect/landmark/start/mime, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "mmY" = ( /obj/effect/turf_decal/tile/blue{ dir = 4 @@ -77489,6 +76431,18 @@ }, /turf/open/floor/plasteel/white/corner, /area/hallway/secondary/entry) +"mod" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 10 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "mom" = ( /obj/machinery/atmospherics/components/unary/portables_connector/visible{ dir = 4 @@ -77547,6 +76501,14 @@ /obj/structure/filingcabinet/chestdrawer, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/cmo) +"msm" = ( +/obj/structure/table/wood, +/obj/item/clothing/glasses/monocle, +/obj/machinery/firealarm{ + pixel_y = 26 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "msD" = ( /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, @@ -77683,15 +76645,6 @@ /obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2, /turf/open/floor/plasteel/dark, /area/security/execution/education) -"mGS" = ( -/obj/machinery/light/small{ - dir = 4 - }, -/obj/structure/disposalpipe/segment{ - dir = 9 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "mGT" = ( /obj/structure/sign/map/left{ desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; @@ -77766,6 +76719,19 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel, /area/engine/engineering) +"mWK" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "mWY" = ( /obj/machinery/holopad, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ @@ -77799,6 +76765,15 @@ }, /turf/open/floor/plating, /area/ai_monitored/storage/satellite) +"neL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/turf/open/floor/plasteel, +/area/janitor) "neQ" = ( /obj/structure/disposalpipe/junction/flip{ dir = 1 @@ -77810,6 +76785,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/fore) +"nfO" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "ngz" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper, /obj/machinery/door/airlock/external{ @@ -77823,6 +76806,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/hallway/secondary/entry) +"ngB" = ( +/obj/structure/reagent_dispensers/watertank, +/obj/machinery/airalarm{ + dir = 1; + pixel_y = -24 + }, +/turf/open/floor/plasteel, +/area/janitor) "ngF" = ( /obj/structure/cable{ icon_state = "2-4" @@ -77859,6 +76850,15 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"nhA" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "niZ" = ( /obj/structure/sign/warning/vacuum{ pixel_x = 32 @@ -77901,6 +76901,17 @@ }, /turf/open/floor/plasteel/white, /area/medical/virology) +"nmP" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/maintenance/starboard) "nqi" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -78012,6 +77023,17 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/turret_protected/aisat/foyer) +"num" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/starboard) "nuB" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ dir = 6 @@ -78046,6 +77068,24 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"nvJ" = ( +/obj/structure/table/wood, +/obj/item/bikehorn, +/obj/item/toy/prize/honk{ + pixel_y = 12 + }, +/obj/machinery/airalarm{ + pixel_y = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"nwd" = ( +/obj/machinery/portable_atmospherics/canister/water_vapor, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/plasteel, +/area/janitor) "nwq" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -78087,6 +77127,16 @@ /mob/living/simple_animal/sloth/citrus, /turf/open/floor/plasteel, /area/quartermaster/storage) +"nxX" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/departments/minsky/supply/hydroponics{ + pixel_x = 0; + pixel_y = -32 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "nAo" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 8 @@ -78173,6 +77223,11 @@ /obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/quartermaster/storage) +"nHZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "nJL" = ( /obj/structure/chair{ dir = 8 @@ -78230,6 +77285,17 @@ }, /turf/open/floor/carpet, /area/medical/psych) +"nOU" = ( +/obj/structure/sink{ + dir = 4; + pixel_x = 11 + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "nPJ" = ( /obj/machinery/light/small{ dir = 1 @@ -78265,6 +77331,15 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) +"nRn" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/light/small{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "nSt" = ( /obj/machinery/door/airlock/external{ name = "Departure Lounge Airlock" @@ -78480,6 +77555,17 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"oks" = ( +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/effect/landmark/start/botanist, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "okv" = ( /obj/machinery/door/airlock/maintenance{ name = "Psychiatrists office Maintenance"; @@ -78565,6 +77651,14 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"ouN" = ( +/obj/effect/landmark/event_spawn, +/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden/layer4{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "ouT" = ( /obj/machinery/atmospherics/pipe/simple/cyan/visible, /obj/effect/mapping_helpers/teleport_anchor, @@ -78606,6 +77700,32 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"owf" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Hydroponics Backroom"; + req_access_txt = "35" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/effect/turf_decal/bot, +/turf/open/floor/plasteel, +/area/hydroponics) "owR" = ( /turf/closed/wall, /area/engine/storage_shared) @@ -78633,6 +77753,27 @@ }, /turf/open/floor/engine, /area/maintenance/disposal/incinerator) +"oyc" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/plasticflaps/opaque, +/obj/machinery/navbeacon{ + codes_txt = "delivery;dir=8"; + dir = 8; + freq = 1400; + location = "Kitchen" + }, +/obj/effect/turf_decal/bot{ + dir = 1 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "oyx" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -78650,6 +77791,12 @@ /obj/structure/lattice, /turf/open/space/basic, /area/aisat) +"oAr" = ( +/obj/effect/landmark/blobstart, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard) "oBY" = ( /obj/effect/mapping_helpers/airlock/cyclelink_helper{ dir = 1 @@ -78664,6 +77811,17 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plating, /area/hallway/secondary/entry) +"oJs" = ( +/obj/machinery/light/small{ + dir = 1 + }, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "oKk" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plasteel, @@ -78730,6 +77888,15 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"oPV" = ( +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) "oQe" = ( /obj/machinery/atmospherics/components/unary/portables_connector{ dir = 8 @@ -78934,6 +78101,20 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"pgb" = ( +/obj/structure/table/wood, +/obj/item/clothing/glasses/regular/hipster{ + name = "Hipster Glasses" + }, +/obj/item/phone/banana, +/obj/structure/cable/yellow, +/obj/machinery/power/apc{ + areastring = "/area/crew_quarters/theatre"; + name = "Theatre APC"; + pixel_y = -23 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "phW" = ( /obj/structure/cable/yellow{ icon_state = "2-4" @@ -78957,6 +78138,10 @@ }, /turf/open/floor/wood, /area/crew_quarters/heads/captain/private) +"pjN" = ( +/obj/machinery/rnd/production/techfab/department/service, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "pkA" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -79073,6 +78258,20 @@ }, /turf/open/floor/plasteel/white, /area/security/brig) +"ptn" = ( +/obj/vehicle/ridden/janicart, +/obj/item/key/janitor, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 8 + }, +/obj/machinery/power/apc{ + areastring = "/area/janitor"; + name = "Custodial Closet APC"; + pixel_y = -23 + }, +/obj/structure/cable/yellow, +/turf/open/floor/plasteel, +/area/janitor) "pvm" = ( /obj/structure/cable{ icon_state = "1-2" @@ -79117,6 +78316,15 @@ }, /turf/open/floor/plasteel/white, /area/medical/paramedic) +"pCO" = ( +/obj/structure/chair/stool{ + pixel_y = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "pCV" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -79161,6 +78369,18 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/starboard/fore) +"pHp" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "pIU" = ( /obj/machinery/door/window/westleft{ name = "Fitness Ring" @@ -79222,6 +78442,14 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) +"pQk" = ( +/obj/effect/turf_decal/stripes/line, +/obj/effect/turf_decal/stripes/line, +/obj/machinery/vending/hydroseeds{ + slogan_delay = 700 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "pSt" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -79238,6 +78466,19 @@ }, /turf/open/floor/plating, /area/ai_monitored/storage/satellite) +"pTx" = ( +/obj/machinery/door/airlock{ + name = "Kitchen"; + req_access_txt = "28" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/machinery/door/firedoor/border_only, +/turf/open/floor/plasteel/cafeteria{ + dir = 5 + }, +/area/crew_quarters/kitchen) "pUF" = ( /obj/structure/window/reinforced, /turf/open/space/basic, @@ -79285,6 +78526,37 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"pYF" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/secondary) +"pZm" = ( +/obj/structure/table/wood, +/obj/item/lipstick/jade{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/lipstick/purple{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/lipstick/black, +/obj/machinery/camera{ + c_tag = "Theatre - Backstage"; + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "qaE" = ( /obj/structure/chair/comfy/brown, /obj/effect/landmark/start/librarian, @@ -79324,6 +78596,19 @@ }, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"qbR" = ( +/obj/structure/closet{ + name = "spare parts locker" + }, +/obj/item/rack_parts, +/obj/item/rack_parts, +/obj/item/wrench, +/obj/effect/turf_decal/delivery, +/obj/structure/window/reinforced{ + dir = 1 + }, +/turf/open/floor/plasteel, +/area/crew_quarters/kitchen) "qca" = ( /obj/effect/spawner/structure/window, /turf/open/floor/plating, @@ -79372,15 +78657,6 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel, /area/engine/engineering) -"qgh" = ( -/obj/structure/table/wood, -/obj/machinery/light/small, -/obj/item/clothing/glasses/regular/hipster{ - name = "Hipster Glasses" - }, -/obj/item/phone/banana, -/turf/open/floor/wood, -/area/crew_quarters/theatre) "qhr" = ( /obj/structure/disposalpipe/segment{ dir = 4 @@ -79407,6 +78683,18 @@ /obj/machinery/bounty_board, /turf/closed/wall, /area/medical/storage) +"qic" = ( +/obj/machinery/door/airlock{ + name = "Theatre Backstage"; + req_access_txt = "46" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard) "qji" = ( /obj/structure/chair{ dir = 1 @@ -79416,6 +78704,19 @@ }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"qju" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/chair/stool, +/obj/effect/landmark/start/janitor, +/turf/open/floor/plasteel, +/area/janitor) "qle" = ( /obj/machinery/bookbinder, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -79583,6 +78884,17 @@ }, /turf/open/floor/plasteel/white, /area/medical/chemistry) +"qwp" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "qwL" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -79595,6 +78907,32 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"qyI" = ( +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) +"qyX" = ( +/obj/structure/disposalpipe/segment, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plasteel, +/area/janitor) +"qzR" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/sorting/mail{ + dir = 2; + sortType = 20 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/maintenance/starboard) "qAD" = ( /obj/effect/landmark/stationroom/maint/tenxfive, /turf/template_noop, @@ -79664,6 +79002,20 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"qEF" = ( +/obj/machinery/door/window/eastright{ + dir = 8; + name = "Kitchen Delivery"; + req_access_txt = "28" + }, +/obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/crew_quarters/kitchen) "qFb" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -79672,6 +79024,20 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port/fore) +"qHJ" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/airlock/maintenance{ + req_access_txt = "12;46" + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 1 + }, +/turf/open/floor/plating, +/area/crew_quarters/bar) "qHZ" = ( /obj/item/radio/intercom{ pixel_y = -28 @@ -79868,6 +79234,18 @@ /obj/effect/mapping_helpers/airlock/cyclelink_helper, /turf/open/floor/plating, /area/security/prison) +"qZQ" = ( +/obj/item/soap/nanotrasen, +/obj/machinery/light/small{ + dir = 4 + }, +/obj/structure/table/wood, +/obj/item/clothing/head/sombrero, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "rcv" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -80226,12 +79604,6 @@ }, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) -"rBU" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/turf/open/floor/plating, -/area/maintenance/starboard) "rCF" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -80314,6 +79686,18 @@ }, /turf/open/floor/plating, /area/engine/atmos) +"rGa" = ( +/obj/machinery/camera{ + c_tag = "Hydroponics - Foyer" + }, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/structure/extinguisher_cabinet{ + pixel_y = 30 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "rHB" = ( /obj/structure/window/reinforced{ dir = 4 @@ -80406,6 +79790,12 @@ dir = 5 }, /area/crew_quarters/heads/hor) +"rVk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "rVJ" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -80444,6 +79834,19 @@ }, /turf/open/floor/plating, /area/hallway/secondary/entry) +"rZL" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 5 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/structure/cable/yellow{ + icon_state = "1-4" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "sao" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/bot, @@ -80543,6 +79946,14 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"sno" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/stripes/line, +/turf/open/floor/plating, +/area/maintenance/starboard) "snW" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -80553,19 +79964,18 @@ /obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/plating, /area/maintenance/port/aft) -"soz" = ( -/obj/structure/disposalpipe/segment{ +"sol" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 4 }, -/obj/structure/cable/yellow{ - icon_state = "1-4" +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 10 }, -/obj/structure/cable/yellow{ - icon_state = "4-8" +/obj/structure/disposalpipe/segment{ + dir = 10 }, -/obj/effect/landmark/blobstart, -/turf/open/floor/plating, -/area/maintenance/starboard) +/turf/open/floor/plasteel, +/area/hydroponics) "spy" = ( /obj/structure/closet/secure_closet/medical3, /obj/machinery/light{ @@ -80641,6 +80051,12 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"ssr" = ( +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "sto" = ( /obj/machinery/advanced_airlock_controller{ dir = 8; @@ -80797,6 +80213,18 @@ /obj/machinery/light, /turf/open/floor/plating, /area/ai_monitored/storage/satellite) +"sBE" = ( +/obj/machinery/power/apc{ + areastring = "/area/hallway/secondary/service"; + dir = 1; + name = "Service Hall APC"; + pixel_y = 23 + }, +/obj/structure/cable/yellow{ + icon_state = "0-2" + }, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "sBK" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -80807,6 +80235,27 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/port/aft) +"sBX" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Kitchen Maintenance"; + req_access_txt = "28" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel{ + dir = 1 + }, +/area/maintenance/starboard) "sCh" = ( /obj/structure/cable/yellow{ icon_state = "2-8" @@ -80832,6 +80281,15 @@ }, /turf/open/floor/plating, /area/maintenance/fore) +"sEl" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "sFU" = ( /obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, @@ -80889,13 +80347,6 @@ }, /turf/open/floor/plasteel, /area/security/brig) -"sIT" = ( -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, -/turf/open/floor/plasteel, -/area/hallway/primary/starboard) "sJZ" = ( /obj/machinery/light, /obj/machinery/vending/gifts, @@ -80957,6 +80408,29 @@ }, /turf/open/floor/plasteel/dark, /area/hallway/secondary/exit/departure_lounge) +"sQH" = ( +/obj/machinery/door/airlock/maintenance{ + name = "Hydroponics Maintenance"; + req_access_txt = "35" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/effect/mapping_helpers/airlock/cyclelink_helper{ + dir = 8 + }, +/obj/machinery/door/firedoor/border_only, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "sRl" = ( /obj/machinery/light{ dir = 4 @@ -81016,6 +80490,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"sWO" = ( +/obj/structure/table/wood/poker, +/obj/item/clothing/mask/cigarette/cigar, +/turf/open/floor/wood, +/area/crew_quarters/bar) "sXi" = ( /obj/effect/turf_decal/stripes/line{ dir = 1 @@ -81137,6 +80616,20 @@ }, /turf/open/floor/plating, /area/maintenance/port/fore) +"tdP" = ( +/obj/machinery/firealarm{ + dir = 8; + pixel_x = 26 + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/kitchenspike, +/turf/open/floor/plasteel/showroomfloor, +/area/crew_quarters/kitchen) "tdS" = ( /obj/docking_port/stationary/random{ id = "pod_lavaland2"; @@ -81161,6 +80654,11 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plasteel, /area/quartermaster/miningoffice) +"til" = ( +/obj/effect/spawner/xmastree, +/obj/structure/disposalpipe/segment, +/turf/open/floor/wood, +/area/crew_quarters/bar) "tkH" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -81223,6 +80721,10 @@ }, /turf/open/floor/plating, /area/maintenance/solars/starboard/aft) +"toC" = ( +/obj/structure/disposalpipe/segment, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "tpc" = ( /obj/machinery/airalarm{ dir = 4; @@ -81276,6 +80778,14 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel, /area/maintenance/disposal/incinerator) +"tsY" = ( +/obj/structure/table, +/obj/item/stack/packageWrap, +/obj/item/hand_labeler, +/turf/open/floor/plasteel/cafeteria{ + dir = 5 + }, +/area/crew_quarters/kitchen) "tuk" = ( /obj/structure/cable{ icon_state = "1-4" @@ -81333,6 +80843,21 @@ }, /turf/open/floor/plasteel/dark, /area/ai_monitored/security/armory) +"tya" = ( +/obj/structure/table, +/obj/item/reagent_containers/food/condiment/enzyme{ + layer = 5 + }, +/obj/machinery/button/door{ + id = "kitchenhydro"; + name = "Service Shutter Control"; + pixel_y = -24; + req_access_txt = "28" + }, +/turf/open/floor/plasteel/cafeteria{ + dir = 5 + }, +/area/crew_quarters/kitchen) "tys" = ( /obj/machinery/computer/cryopod{ dir = 4; @@ -81346,6 +80871,13 @@ }, /turf/open/floor/plasteel, /area/engine/atmos) +"tyS" = ( +/obj/structure/dresser, +/obj/structure/mirror{ + pixel_y = 28 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "tzg" = ( /obj/structure/cable{ icon_state = "4-8" @@ -81399,6 +80931,33 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"tEM" = ( +/obj/structure/table, +/obj/item/storage/box/mousetraps{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/clothing/gloves/color/orange{ + pixel_x = 4; + pixel_y = -2 + }, +/obj/item/storage/box/mousetraps{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/storage/box/mousetraps{ + pixel_x = -3; + pixel_y = 8 + }, +/obj/item/radio/intercom{ + pixel_y = 28 + }, +/obj/machinery/camera{ + c_tag = "Custodial Closet"; + dir = 4 + }, +/turf/open/floor/plasteel, +/area/janitor) "tEX" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -81432,6 +80991,45 @@ }, /turf/open/floor/plasteel/dark/telecomms, /area/tcommsat/server) +"tHi" = ( +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/machinery/light/small, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 5 + }, +/obj/item/restraints/legcuffs/beartrap, +/obj/item/mop, +/obj/item/reagent_containers/glass/bucket, +/obj/item/restraints/legcuffs/beartrap, +/turf/open/floor/plasteel, +/area/janitor) +"tIh" = ( +/obj/structure/table, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/item/reagent_containers/spray/cleaner, +/obj/item/storage/box/lights/mixed{ + pixel_x = 6; + pixel_y = 8 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/item/grenade/chem_grenade/cleaner{ + pixel_x = -7; + pixel_y = 12 + }, +/obj/machinery/light_switch{ + pixel_x = -26; + pixel_y = 26 + }, +/turf/open/floor/plasteel, +/area/janitor) "tJP" = ( /obj/machinery/door/airlock/highsecurity{ name = "Gravity Generator Room"; @@ -81587,6 +81185,15 @@ }, /turf/open/floor/plasteel/dark, /area/crew_quarters/fitness/recreation) +"tUo" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer2{ + dir = 4 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "tVk" = ( /obj/structure/window/reinforced, /obj/effect/turf_decal/tile/neutral{ @@ -81798,6 +81405,25 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel/white, /area/science/xenobiology) +"uhl" = ( +/obj/structure/table, +/obj/item/book/manual/wiki/hydroponicsplants, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/firealarm{ + dir = 4; + pixel_x = -26 + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "uhq" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -81970,6 +81596,29 @@ }, /turf/open/floor/plasteel/cafeteria, /area/crew_quarters/heads/cmo) +"utp" = ( +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/machinery/door/airlock{ + name = "Service Hall"; + req_access_txt = "null"; + req_one_access_txt = "25;26;35;28;22;37;46;38" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "utP" = ( /obj/structure/girder, /turf/open/floor/plating, @@ -81978,6 +81627,16 @@ /obj/machinery/vending/assist, /turf/open/floor/plasteel, /area/maintenance/department/science) +"uvi" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, +/obj/machinery/light_switch{ + pixel_x = -26 + }, +/turf/open/floor/plasteel, +/area/hydroponics) "uvF" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -82093,6 +81752,13 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/entry) +"uJf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/obj/effect/landmark/start/janitor, +/turf/open/floor/plasteel, +/area/janitor) "uJP" = ( /obj/effect/landmark/xeno_spawn, /turf/open/floor/plating{ @@ -82109,6 +81775,18 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel, /area/engine/engineering) +"uLX" = ( +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hallway/primary/central) "uOU" = ( /obj/structure/disposalpipe/segment{ dir = 6 @@ -82265,6 +81943,12 @@ /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4, /turf/open/floor/plating, /area/maintenance/disposal) +"vbc" = ( +/obj/structure/janitorialcart{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "vdY" = ( /obj/machinery/door/airlock/external{ name = "Solar Maintenance"; @@ -82277,6 +81961,14 @@ /obj/machinery/atmospherics/pipe/layer_manifold, /turf/open/floor/plating, /area/maintenance/solars/port/fore) +"veO" = ( +/obj/machinery/light_switch{ + pixel_x = 0; + pixel_y = -26 + }, +/obj/effect/landmark/start/clown, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "veS" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -82292,6 +81984,12 @@ /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /turf/open/floor/plating, /area/maintenance/port) +"vfp" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "vgd" = ( /obj/item/taperecorder, /obj/item/camera, @@ -82401,6 +82099,17 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/plating, /area/maintenance/port) +"vlE" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment, +/obj/machinery/airalarm{ + dir = 8; + pixel_x = 24 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "vlH" = ( /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, @@ -82470,6 +82179,12 @@ }, /turf/open/floor/plating, /area/maintenance/port) +"vrS" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/closed/wall, +/area/crew_quarters/theatre) "vsa" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -82530,6 +82245,18 @@ icon_state = "platingdmg1" }, /area/maintenance/port/fore) +"vxg" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "vzb" = ( /obj/machinery/door/airlock/maintenance{ name = "Experimentation Lab Maintenance"; @@ -82584,6 +82311,27 @@ dir = 8 }, /area/engine/storage_shared) +"vAa" = ( +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"vAt" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + sortType = 18 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "vAK" = ( /obj/structure/table, /obj/item/radio/intercom{ @@ -82607,6 +82355,16 @@ /obj/effect/landmark/blobstart, /turf/open/floor/plating, /area/maintenance/disposal) +"vBc" = ( +/obj/item/toy/cards/deck{ + pixel_y = 4 + }, +/obj/structure/table/wood/poker, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/bar) "vBF" = ( /obj/structure/sign/map/right{ desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; @@ -82681,6 +82439,31 @@ }, /turf/open/floor/plasteel/dark, /area/security/execution/education) +"vHD" = ( +/obj/machinery/door/airlock{ + name = "Theatre Stage"; + req_one_access_txt = "12;46" + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 4 + }, +/obj/machinery/door/firedoor/border_only{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "vIo" = ( /obj/machinery/igniter/incinerator_atmos, /obj/structure/cable{ @@ -82737,6 +82520,31 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/aft) +"vLK" = ( +/obj/item/reagent_containers/food/snacks/grown/wheat, +/obj/item/reagent_containers/food/snacks/grown/watermelon, +/obj/item/reagent_containers/food/snacks/grown/citrus/orange, +/obj/item/reagent_containers/food/snacks/grown/grapes, +/obj/structure/table/glass, +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"vMY" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/light/small{ + dir = 4 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "vMZ" = ( /obj/machinery/door/window/westleft{ dir = 4; @@ -82864,6 +82672,23 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plasteel, /area/engine/atmos) +"vYm" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/manifold/supply/hidden/layer2{ + dir = 8 + }, +/obj/structure/chair/wood/wings{ + dir = 8 + }, +/obj/effect/landmark/start/clown, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 6 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) "vYR" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/layer4{ dir = 1 @@ -82871,6 +82696,19 @@ /obj/effect/turf_decal/stripes/line, /turf/open/floor/plating, /area/hallway/secondary/exit/departure_lounge) +"vZh" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/light, +/obj/structure/table/glass, +/obj/item/storage/box/beakers{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/storage/box/syringes, +/turf/open/floor/plasteel, +/area/hydroponics) "waq" = ( /obj/structure/window/reinforced{ dir = 1 @@ -82970,6 +82808,11 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"wms" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/vending/hydronutrients, +/turf/open/floor/plasteel, +/area/hydroponics) "wnv" = ( /obj/structure/closet/crate, /obj/item/storage/belt/utility, @@ -82979,6 +82822,14 @@ }, /turf/open/floor/plating, /area/maintenance/starboard) +"wnT" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 4 + }, +/turf/open/floor/plasteel/cafeteria{ + dir = 5 + }, +/area/crew_quarters/kitchen) "wnX" = ( /obj/effect/landmark/xeno_spawn, /obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ @@ -83020,6 +82871,25 @@ }, /turf/open/floor/plasteel/white, /area/security/brig) +"wpK" = ( +/obj/machinery/newscaster{ + pixel_y = 32 + }, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"wqc" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/effect/spawner/lootdrop/maintenance, +/obj/item/storage/box/lights/mixed, +/obj/structure/rack, +/turf/open/floor/plating, +/area/maintenance/starboard) "wrD" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -83064,6 +82934,18 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"wtI" = ( +/obj/structure/table/wood, +/obj/item/clothing/mask/pig, +/obj/item/toy/dummy, +/obj/machinery/light/small{ + dir = 8 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "wuR" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -83309,6 +83191,15 @@ /obj/structure/fans/tiny/invisible, /turf/open/space/basic, /area/space) +"wPf" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/turf/open/floor/plasteel, +/area/hydroponics) "wPs" = ( /obj/effect/landmark/stationroom/maint/fivexthree, /turf/template_noop, @@ -83421,6 +83312,24 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) +"wXT" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/light/small{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) +"wYd" = ( +/obj/structure/table, +/obj/item/reagent_containers/glass/bucket, +/obj/item/storage/bag/plants, +/turf/open/floor/plasteel, +/area/hallway/secondary/service) "wYl" = ( /obj/structure/cable/yellow{ icon_state = "1-2" @@ -83438,6 +83347,19 @@ /obj/item/twohanded/required/kirbyplants/random, /turf/open/floor/plasteel, /area/engine/atmos) +"xbg" = ( +/obj/structure/cable/yellow{ + icon_state = "2-4" + }, +/obj/structure/cable/yellow{ + icon_state = "2-8" + }, +/obj/structure/disposalpipe/sorting/mail/flip{ + dir = 8; + sortType = 24 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/secondary) "xbB" = ( /obj/effect/mapping_helpers/teleport_anchor, /turf/open/floor/plating, @@ -83461,10 +83383,6 @@ /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, /turf/open/floor/plating, /area/hallway/secondary/entry) -"xdW" = ( -/obj/machinery/vending/wardrobe/jani_wardrobe, -/turf/open/floor/plasteel, -/area/janitor) "xei" = ( /obj/machinery/door/airlock/external{ req_access_txt = "24" @@ -83521,12 +83439,42 @@ }, /turf/open/floor/plating, /area/maintenance/starboard/secondary) +"xiW" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard) "xjg" = ( /obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ dir = 5 }, /turf/open/floor/plasteel, /area/crew_quarters/fitness/recreation) +"xjM" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/disposalpipe/junction{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/starboard/secondary) "xmr" = ( /obj/structure/grille, /obj/structure/window/reinforced/tinted/fulltile, @@ -83622,6 +83570,27 @@ /obj/effect/turf_decal/tile/blue, /turf/open/floor/plasteel/white, /area/medical/paramedic) +"xuf" = ( +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer4{ + dir = 8 + }, +/turf/open/floor/carpet, +/area/crew_quarters/theatre) +"xva" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ + dir = 4 + }, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "xvT" = ( /obj/machinery/door/airlock/maintenance{ name = "Storage Room"; @@ -83765,6 +83734,20 @@ /obj/effect/mapping_helpers/teleport_anchor, /turf/closed/wall, /area/maintenance/port/fore) +"xMN" = ( +/obj/structure/cable/yellow{ + icon_state = "4-8" + }, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/sign/poster/contraband/random{ + pixel_y = 32 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg2" + }, +/area/maintenance/starboard/secondary) "xNl" = ( /obj/structure/disposalpipe/segment{ dir = 5 @@ -83815,6 +83798,13 @@ /obj/item/reagent_containers/food/drinks/bottle/whiskey, /turf/open/floor/carpet, /area/security/detectives_office) +"xTK" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/turf/open/floor/plating, +/area/maintenance/starboard) "xTR" = ( /obj/effect/spawner/structure/window/reinforced, /obj/structure/cable/yellow{ @@ -83864,16 +83854,6 @@ }, /turf/open/floor/plasteel, /area/hallway/secondary/exit/departure_lounge) -"yao" = ( -/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2{ - dir = 10 - }, -/obj/effect/landmark/start/janitor, -/turf/open/floor/plating, -/area/janitor) "yar" = ( /obj/machinery/light{ dir = 8 @@ -83890,6 +83870,29 @@ dir = 1 }, /area/engine/atmos) +"ycD" = ( +/obj/item/radio/intercom{ + pixel_x = 29 + }, +/obj/machinery/vending/autodrobe, +/turf/open/floor/wood, +/area/crew_quarters/theatre) +"ycO" = ( +/obj/structure/closet/secure_closet/hydroponics, +/turf/open/floor/plasteel, +/area/hydroponics) +"yde" = ( +/obj/effect/turf_decal/tile/green{ + dir = 4 + }, +/obj/effect/turf_decal/tile/green, +/turf/open/floor/plasteel, +/area/hallway/primary/central) +"ydZ" = ( +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/turf/open/floor/wood, +/area/crew_quarters/theatre) "yeO" = ( /obj/item/paper_bin{ pixel_x = -2; @@ -83940,6 +83943,18 @@ /obj/machinery/bounty_board, /turf/closed/wall/r_wall, /area/security/main) +"yjy" = ( +/obj/structure/cable/yellow{ + icon_state = "1-2" + }, +/obj/structure/disposalpipe/segment, +/obj/structure/cable/yellow{ + icon_state = "1-8" + }, +/obj/machinery/atmospherics/pipe/simple/supply/hidden/layer2, +/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden/layer4, +/turf/open/floor/plating, +/area/maintenance/starboard) "ylB" = ( /obj/structure/cable{ icon_state = "4-8" @@ -115451,7 +115466,7 @@ aNt aIA aXP bsG -bSS +bcd bZo bZo bZo @@ -115707,13 +115722,13 @@ bcg bcg aIA aXP -bsH -btv -bul -buB -bvv -bwr -bwP +eyA +bcd +tEM +tIh +hqE +bcd +kEt bxF byA qVw @@ -115964,14 +115979,14 @@ bFh aIA aIA aXP -aMd -bSS -bSS -bSS -bSS -bSS -bwV -cgn +gbP +lfM +qyX +qju +tHi +bcd +bxf +esh lvi kHf ckl @@ -116221,12 +116236,12 @@ chK blX blX ciX -bqp -bYc -bZq -bSP -ccp -bSS +bsC +bcd +dAB +neL +ptn +bcd bwV cgo cgo @@ -116475,15 +116490,15 @@ aLR aLR aLR bmg -cqp -brv -cjr -cjA -cjO -blX -ckB -ccq -bSS +kDf +aJI +uLX +bsC +bcd +jul +uJf +ngB +bcd bwV cgo chs @@ -116732,16 +116747,16 @@ bOP bOP bOP bKe -bSS -bUd -bVq -bVq -bYc -bZs -aXP -ccr -bSS -bwW +bKe +aJI +eUO +dSZ +bcd +fyp +jYn +nwd +bcd +xMN cgo cht caR @@ -116989,15 +117004,15 @@ bnW bOQ bQA bRP -bST -bUe -bVr -bsJ -bST -bUe -ckC -bUe -bST +bKe +aJI +eUO +bsC +bcd +bcd +bcd +bcd +bcd bwV cgo chu @@ -117245,16 +117260,16 @@ bLJ bLK bOR bQB -jtr -bST -bUf -bVs -bsK -bBm -bZt -ckD -ccs -bST +lnc +pTx +aJI +eUO +nxX +bSS +jKB +uhl +lIf +lvi bwY bRL ckn @@ -117502,17 +117517,17 @@ bLK bLK rQn bQB -bRR -bST -bUg -bVt -bsL -cjP -bCk -ckF -cct -cdU -bwZ +tsY +bKe +rGa +mod +qwp +lAu +lAu +rZL +toC +mbe +xjM cgo diD ciR @@ -117756,20 +117771,20 @@ bll bBT bna bLK -bLK +dDe boj bQB -bLK -bSU -bUh -bVs -bWR -cjQ -cke -ckT -ccu +tya +bKe +bUd +yde +yde +nOU +vLK +lYj +lwc bST -bxa +pYF cgq cgq cgq @@ -118018,15 +118033,15 @@ boq bQB bRS oub -bUi -bVu -bWT -bYg -bWT -ckV -tYS +bUe +bVr +bsJ bST -bxb +bUe +ckC +bUe +bST +bwV cgq chx cbM @@ -118270,18 +118285,18 @@ bwO bBT bKi bLN -dDe +wnT bOV bpl -eTc -bST -bUj -bVu -bWT -bYj -bWT -ckX -ccw +bLK +bSU +bUh +bVs +bsK +bBm +bZt +ckD +ccs bST bwV cgq @@ -118527,20 +118542,20 @@ bwO bBT bKj ccJ -cgS +gDk cgZ -chr -bpD -bqs -bUh -bVt -bWQ -bWQ -bWQ -ckY -ccv +mgP +eTc bST -bxe +gnh +bVt +bsL +cjP +bCk +ckF +cct +cdU +bwZ cgq chx bzS @@ -118788,14 +118803,14 @@ bNB bNB chv chL -bSW +bqs bUh bVs -dDl bWR -bZu -ckZ -ccx +cjQ +cke +ckT +ccu bST bwV cgq @@ -119045,11 +119060,11 @@ bCS bOW bQH chM -bST -kwI +bSW +bUh bVu bWT -bYj +bYg bWT ckV tYS @@ -119303,13 +119318,13 @@ bKe bKe chZ bST -bUm +wms bVu bWT bYj bWT -ckV -bTw +ckX +ccw bST bwV cgq @@ -119560,13 +119575,13 @@ bOX bQI cib bST -bUn +pQk bVt bWQ -bYk +bWQ bWQ ckY -dbE +ccv bST bxf cgq @@ -119799,7 +119814,7 @@ bjo aVT bfN bBj -rBU +gQz bmP bmP bwU @@ -119817,13 +119832,13 @@ ajk chF cic bST -bUo -bVy -bWU -bYl -bZv -cla -ccz +ifQ +bVs +dDl +bWR +bZu +ckZ +ccx bST bxg cgq @@ -120055,34 +120070,34 @@ aSY bjq aVX bmQ -boX -baN -bcU -bdS -bfo -bgu -bwX -byC -cTR -byC +vAt +kLz +sno +qHJ +vlE +hAA +dSi +bfp +til +ssr bwS -bXh -bKn +jdd +gxY bKe bNF bOZ aWG bpN -bKe -bKe -bKe -bST -bST -bST -clb bST +bUm +bVu +bWT +bYj +bWT +ckV +vZh bST -bxh +xbg bxH bxH bzT @@ -120312,16 +120327,16 @@ aTc bjr aVK bfN -alq -baO -bmP -buS -bfp -bgv +hUl +byN +byN +byN +byN +brj byC bwX bDI -bwX +pCO bwS bXh bKo @@ -120329,15 +120344,15 @@ bKe bNE bPa dbn -bpO -bqt -brw -bKe -bWV -bYm -bZw -clc -bIh +hEj +bST +bUn +bVu +bWT +bYj +bWT +ckV +cRs bST hWV lvi @@ -120569,35 +120584,35 @@ aTd bir bbJ bfN -boY -baP -bmP -buT +hUl +vrS +wtI +iFq +byN +fPl bwX -bgw -bhv -bBY -bDJ -bFu +byE +sWO +vBc bkJ bXh bKp bKe -bNG -bNG bpo -bJp -bqu -brz -bKe -bNN -btw -bCq -cle -bvx +oPV +gdZ +tdP +bST +bUo +bVt +bWQ +bYk +bWQ +ckY +dbE bST -bxj -iKA +iBf +num chB lvi dvg @@ -120826,13 +120841,13 @@ aTe bju aWe bfN -bcs -baQ -bmP -bmP +gSl byN -dhU -bBZ +nvJ +lmE +byN +byN +ial bBZ bBZ bFv @@ -120840,21 +120855,21 @@ bln bYb byN bKe -bKe -bKe -bKe -bKe -bqv -brA -bKe -bST -bST -bST -clf -bvy +dbn +bpO +xVl +xVl +xVl +xVl +bVy +bWU +bYl +bZv +cla +ccz bST -bxk -rBU +apc +joF chD lvi dvg @@ -121083,35 +121098,35 @@ aTf bir aVK bfN -anM -baR -btt -avs +hUl +byN +tyS +hxA +jHf byN -bGg +ibl bhw -bhN bjn -bkL -blp +rVk +tUo bYd byN -byN -dil -bPb -diq -byN -bqy -brB -brV -bwh -btx -brV -clg -clO -cmE -cnn -mGS +eKK +nhA +lCo +xVl +wYd +kug +xVl +xVl +bST +bST +bST +owf +bST +bST +alq +hUl chC lvi dvg @@ -121337,39 +121352,39 @@ aNN aWE aWv aSE -hnX -sIT -aXo -aYs -baS -bcV -buU +dlu +aVK +bfN +hUl byN -dhV -bhx -byl -bzk -bLP -bUK -bYf -caJ -cdF -cgT -boB -dir +wpK +jcH +ydZ +mWK +nHZ +ouN +mmB +vYm +iRO +euo byN -bqz -brC -bmU -cjB -cjR -bwn -clh -bcd -bcd -bGr -bcd -bcd +elb +qyI +nfO +xVl +sBE +jRN +lFX +xVl +bWV +ycO +bYm +sol +uvi +eAu +alq +hUl +wqc bcd xLF xLF @@ -121597,36 +121612,36 @@ aSU bjo aVT bfN -bpb -baT -alq -alq -byN -byL -bCc -bhO -bCc -bkN -blq -qgh +fut +qic +jER +vfp +veO byN -bLR -bnY -boG -cco +msm +xuf +bhw +lfV +jpK +pgb byN -bqA -brD +qEF +qbR +nfO xVl -bzA -btz +oJs +lhj +pjN xVl -buL -bcd -kSB -cns -cde -kjh +gzV +icV +oks +jHW +wPf +bvx +alq +hUl +alq bcd dvg dvg @@ -121854,36 +121869,36 @@ aSE bir aVK bfN -alq -baO -alq -buV +buL byN -dhW -dhX -bpm -dib -bkQ -dif -dij byN -bLS -bnZ -boJ -bFK +pZm +ycD byN -apc -brE +diS +hUc +fuX +xva +qZQ +dij +byN +oyc +bKe +sBX xVl xVl -btA +utp xVl -buL -bcd -cdX -yao -bVT -chE +xVl +bST +bST +bST +bST +sQH +bvy +alq +pHp +vbc bcd dvg dvg @@ -122111,36 +122126,36 @@ bgg bjw aVK bfN -atj -baP -aqq -apc -byN -byN +dpy +boY byN byN byN -bkR byN byN byN byN +vHD byN -boK byN byN -bqI -brF +wXT +jyJ +sEl +aad +bpU +xiW +jWE bVB bVC -btB -pCV -buM -bcd -abt -bVm -bXC -amB +dAj +xTK +xTK +avy +hZx +ffa +vAa +apc bcd dvg dvg @@ -122368,37 +122383,37 @@ aTg aUy aVL aXp -aYv -baU +vxg +aXo bcW bdU pCV -bgy +nRn bcW -bhP pCV -bkS -blr -bmn -blr -bnz -blr -boL -blr -bpQ -bqN pCV -pCV -pCV -soz -apf +eVe +gDK +bKT +gDK +qzR +fuW +yjy +nmP +lXx +fbH +vMY +xTK +xTK +ldW +oAr +apc +apc +apc +aad +apc jNW bcd -xdW -bxo -eUM -byF -bcd dvg dvg dvg @@ -124641,7 +124656,7 @@ aaa aaa aaa aaf -mfe +hRH dMm gFp amT diff --git a/_maps/shuttles/emergency_luxury.dmm b/_maps/shuttles/emergency_luxury.dmm index 15ee3cbb1054..ec1a1f1a266f 100644 --- a/_maps/shuttles/emergency_luxury.dmm +++ b/_maps/shuttles/emergency_luxury.dmm @@ -78,18 +78,6 @@ /obj/structure/table/wood/fancy/black, /turf/open/floor/carpet, /area/shuttle/escape/luxury) -"cZ" = ( -/obj/machinery/door/poddoor/shutters{ - id = "ohnopoors" - }, -/obj/structure/window/plastitanium{ - desc = "A durable looking window made of an alloy of of plasma and titanium. Appears to have poor people tears smudged all over it."; - flags_1 = 2177; - resistance_flags = 64 - }, -/obj/structure/grille/indestructable, -/turf/open/floor/plating, -/area/shuttle/escape/luxury) "dl" = ( /obj/effect/decal/cleanable/dirt/dust, /obj/effect/decal/cleanable/dirt/dust, @@ -233,6 +221,18 @@ /obj/structure/shuttle/engine/propulsion, /turf/open/floor/plating/airless, /area/shuttle/escape/luxury) +"oo" = ( +/obj/machinery/door/poddoor/shutters{ + id = "ohnopoors" + }, +/obj/structure/grille/indestructable, +/obj/structure/window/plastitanium{ + desc = "A durable looking window made of an alloy of of plasma and titanium. Appears to have poor people tears smudged all over it."; + flags_1 = 2177; + resistance_flags = 64 + }, +/turf/open/floor/plating, +/area/shuttle/escape/luxury) "or" = ( /obj/structure/shuttle/engine/heater, /obj/structure/window/reinforced{ @@ -283,7 +283,7 @@ /area/shuttle/escape/luxury) "pv" = ( /obj/structure/table/glass, -/obj/item/surgicaldrill/advanced, +/obj/item/cautery/advanced, /obj/item/scalpel/advanced, /obj/item/retractor/advanced, /turf/open/floor/mineral/gold{ @@ -559,16 +559,16 @@ /obj/effect/decal/cleanable/dirt/dust, /turf/open/floor/plating, /area/shuttle/escape/luxury) -"IL" = ( +"JI" = ( /obj/machinery/door/poddoor/shutters{ id = "ohnopoors" }, -/obj/structure/grille/indestructable, /obj/structure/window/plastitanium{ desc = "A durable looking window made of an alloy of of plasma and titanium. Appears to have poor people tears smudged all over it."; flags_1 = 2177; resistance_flags = 64 }, +/obj/structure/grille/indestructable, /turf/open/floor/plating, /area/shuttle/escape/luxury) "Kn" = ( @@ -968,15 +968,15 @@ eL eL eL mt -IL -IL -IL -IL -IL -IL -IL -IL -cZ +oo +oo +oo +oo +oo +oo +oo +oo +JI mt mt mt diff --git a/code/__DEFINES/DNA.dm b/code/__DEFINES/DNA.dm index 9f96358b45be..68e610aaeb65 100644 --- a/code/__DEFINES/DNA.dm +++ b/code/__DEFINES/DNA.dm @@ -120,23 +120,28 @@ #define MUTCOLORS_PARTSONLY 8 #define NOZOMBIE 9 /// If we want a race to have a standard color (for now this is only polysmorphs) -#define NOCOLORCHANGE 20 +#define NOCOLORCHANGE 10 /// Uses weird leg sprites. Optional for Lizards, required for ashwalkers. Don't give it to other races unless you make sprites for this (see human_parts_greyscale.dmi) -#define DIGITIGRADE 10 -#define NO_UNDERWEAR 11 -#define NOLIVER 12 -#define NOSTOMACH 13 -#define NO_DNA_COPY 14 -#define DRINKSBLOOD 15 -#define NOFLASH 16 +#define DIGITIGRADE 11 +#define NO_UNDERWEAR 12 +#define NOLIVER 13 +#define NOSTOMACH 14 +#define NO_DNA_COPY 15 +#define DRINKSBLOOD 16 +#define NOFLASH 17 /// Use this if you want to change the race's color without the player being able to pick their own color. AKA special color shifting -#define DYNCOLORS 17 +#define DYNCOLORS 18 /// Forced genders -#define AGENDER 18 -#define FGENDER 21 -#define MGENDER 22 +#define AGENDER 19 +#define FGENDER 20 +#define MGENDER 21 /// Do not draw eyes or eyeless overlay -#define NOEYESPRITES 19 +#define NOEYESPRITES 22 +/// Used for determining which wounds are applicable to this species. +/// if we have flesh (can suffer slash/piercing/burn wounds, requires they don't have NOBLOOD) +#define HAS_FLESH 23 +/// if we have bones (can suffer bone wounds) +#define HAS_BONE 24 //organ slots #define ORGAN_SLOT_BRAIN "brain" diff --git a/code/__DEFINES/admin.dm b/code/__DEFINES/admin.dm index 7f619bde73d9..d83394236f4f 100644 --- a/code/__DEFINES/admin.dm +++ b/code/__DEFINES/admin.dm @@ -79,6 +79,10 @@ #define ADMIN_PUNISHMENT_WHISTLE "Whistle" #define ADMIN_PUNISHMENT_CLUWNE "Cluwne" #define ADMIN_PUNISHMENT_MCNUGGET "Nugget" +#define ADMIN_PUNISHMENT_CRACK ":B:oneless" +#define ADMIN_PUNISHMENT_BLEED ":B:loodless" +#define ADMIN_PUNISHMENT_PERFORATE ":B:erforate" +#define ADMIN_PUNISHMENT_SCARIFY "Scarify" #define AHELP_ACTIVE 1 #define AHELP_CLOSED 2 diff --git a/code/__DEFINES/combat.dm b/code/__DEFINES/combat.dm index 800a91066362..c83489125e41 100644 --- a/code/__DEFINES/combat.dm +++ b/code/__DEFINES/combat.dm @@ -170,9 +170,9 @@ GLOBAL_LIST_INIT(shove_disarming_types, typecacheof(list( #define REFLECT_FAKEPROJECTILE (1<<1) //Object/Item sharpness -#define IS_BLUNT 0 -#define IS_SHARP 1 -#define IS_SHARP_ACCURATE 2 +#define SHARP_NONE 0 +#define SHARP_EDGED 1 +#define SHARP_POINTY 2 //His Grace. #define HIS_GRACE_SATIATED 0 //He hungers not. If bloodthirst is set to this, His Grace is asleep. diff --git a/code/__DEFINES/components.dm b/code/__DEFINES/components.dm index 4ce4da0b19ed..1760fe6b09ea 100644 --- a/code/__DEFINES/components.dm +++ b/code/__DEFINES/components.dm @@ -71,6 +71,7 @@ #define COMSIG_ATOM_HULK_ATTACK "hulk_attack" //from base of atom/attack_hulk(): (/mob/living/carbon/human) #define COMSIG_PARENT_EXAMINE "atom_examine" //from base of atom/examine(): (/mob) #define COMSIG_ATOM_GET_EXAMINE_NAME "atom_examine_name" //from base of atom/get_examine_name(): (/mob, list/overrides) +#define COMSIG_PARENT_EXAMINE_MORE "atom_examine_more" //from base of atom/examine_more(): (/mob) //Positions for overrides list #define EXAMINE_POSITION_ARTICLE 1 #define EXAMINE_POSITION_BEFORE 2 @@ -228,9 +229,17 @@ #define COMSIG_LIVING_STATUS_SLEEP "living_sleeping" //from base of mob/living/Sleeping() (amount, update, ignore) #define COMPONENT_NO_STUN 1 //For all of them -// /mob/living/carbon signals +// /mob/living/carbon physiology signals +#define COMSIG_CARBON_GAIN_WOUND "carbon_gain_wound" //from /datum/wound/proc/apply_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L) +#define COMSIG_CARBON_LOSE_WOUND "carbon_lose_wound" //from /datum/wound/proc/remove_wound() (/mob/living/carbon/C, /datum/wound/W, /obj/item/bodypart/L) +///from base of /obj/item/bodypart/proc/attach_limb(): (new_limb, special) allows you to fail limb attachment +#define COMSIG_CARBON_ATTACH_LIMB "carbon_attach_limb" + #define COMPONENT_NO_ATTACH (1<<0) +#define COMSIG_CARBON_REMOVE_LIMB "carbon_remove_limb" //from base of /obj/item/bodypart/proc/drop_limb(special, dismembered) #define COMSIG_CARBON_SOUNDBANG "carbon_soundbang" //from base of mob/living/carbon/soundbang_act(): (list(intensity)) #define COMSIG_CARBON_STATUS_STAMCRIT "living_stamcrit" //from base of mob/living/carbon/enter_stamcrit() +#define COMSIG_BODYPART_GAUZED "bodypart_gauzed" // from /obj/item/bodypart/proc/apply_gauze(/obj/item/stack/gauze) +#define COMSIG_BODYPART_GAUZE_DESTROYED "bodypart_degauzed" // from [/obj/item/bodypart/proc/seep_gauze] when it runs out of absorption // /mob/living/simple_animal/hostile signals #define COMSIG_HOSTILE_ATTACKINGTARGET "hostile_attackingtarget" @@ -299,6 +308,7 @@ // /mob/living/carbon/human signals +#define COMSIG_HUMAN_EARLY_UNARMED_ATTACK "human_early_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target, proximity, modifiers) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACK "human_melee_unarmed_attack" //from mob/living/carbon/human/UnarmedAttack(): (atom/target) #define COMSIG_HUMAN_MELEE_UNARMED_ATTACKBY "human_melee_unarmed_attackby" //from mob/living/carbon/human/UnarmedAttack(): (mob/living/carbon/human/attacker) #define COMSIG_HUMAN_DISARM_HIT "human_disarm_hit" //Hit by successful disarm attack (mob/living/carbon/human/attacker,zone_targeted) diff --git a/code/__DEFINES/is_helpers.dm b/code/__DEFINES/is_helpers.dm index 01d22a59a944..e59036b42259 100644 --- a/code/__DEFINES/is_helpers.dm +++ b/code/__DEFINES/is_helpers.dm @@ -225,14 +225,6 @@ GLOBAL_LIST_INIT(heavyfootmob, typecacheof(list( #define iscash(A) (istype(A, /obj/item/coin) || istype(A, /obj/item/stack/spacecash) || istype(A, /obj/item/holochip)) -GLOBAL_LIST_INIT(pointed_types, typecacheof(list( - /obj/item/pen, - /obj/item/screwdriver, - /obj/item/reagent_containers/syringe, - /obj/item/kitchen/fork))) - -#define is_pointed(W) (is_type_in_typecache(W, GLOB.pointed_types)) - #define isbodypart(A) (istype(A, /obj/item/bodypart)) #define isprojectile(A) (istype(A, /obj/item/projectile)) diff --git a/code/__DEFINES/misc.dm b/code/__DEFINES/misc.dm index 5f25a72b22f2..c5ab6c0f1124 100644 --- a/code/__DEFINES/misc.dm +++ b/code/__DEFINES/misc.dm @@ -407,6 +407,9 @@ GLOBAL_LIST_INIT(pda_styles, list(MONO, VT, ORBITRON, SHARE)) #define PIRATE_NAMES_FILE "pirates.json" #define REDPILL_FILE "redpill.json" #define WANTED_FILE "wanted_message.json" +#define FLESH_SCAR_FILE "wounds/flesh_scar_desc.json" +#define BONE_SCAR_FILE "wounds/bone_scar_desc.json" +#define SCAR_LOC_FILE "wounds/scar_loc.json" //Fullscreen overlay resolution in tiles. #define FULLSCREEN_OVERLAY_RESOLUTION_X 15 diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index f395097ab12c..9d544b09ffad 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -84,10 +84,6 @@ #define BODYPART_ORGANIC 1 #define BODYPART_ROBOTIC 2 -#define BODYPART_NOT_DISABLED 0 -#define BODYPART_DISABLED_DAMAGE 1 -#define BODYPART_DISABLED_PARALYSIS 2 - #define DEFAULT_BODYPART_ICON_ORGANIC 'icons/mob/human_parts_greyscale.dmi' #define DEFAULT_BODYPART_ICON_ROBOTIC 'icons/mob/augmentation/augments.dmi' @@ -133,12 +129,14 @@ #define TRAUMA_RESILIENCE_BASIC 1 //Curable with chems #define TRAUMA_RESILIENCE_SURGERY 2 //Curable with brain surgery #define TRAUMA_RESILIENCE_LOBOTOMY 3 //Curable with lobotomy -#define TRAUMA_RESILIENCE_MAGIC 4 //Curable only with magic -#define TRAUMA_RESILIENCE_ABSOLUTE 5 //This is here to stay +#define TRAUMA_RESILIENCE_WOUND 4 //Curable by healing the head wound +#define TRAUMA_RESILIENCE_MAGIC 5 //Curable only with magic +#define TRAUMA_RESILIENCE_ABSOLUTE 6 //This is here to stay //Limit of traumas for each resilience tier #define TRAUMA_LIMIT_BASIC 3 #define TRAUMA_LIMIT_SURGERY 2 +#define TRAUMA_LIMIT_WOUND 2 #define TRAUMA_LIMIT_LOBOTOMY 3 #define TRAUMA_LIMIT_MAGIC 3 #define TRAUMA_LIMIT_ABSOLUTE INFINITY @@ -340,4 +338,6 @@ #define WABBAJACK (1<<6) #define SLEEP_CHECK_DEATH(X) sleep(X); if(QDELETED(src) || stat == DEAD) return; -#define INTERACTING_WITH(X, Y) (Y in X.do_afters) \ No newline at end of file +/// If you examine the same atom twice in this timeframe, we call examine_more() instead of examine() +#define EXAMINE_MORE_TIME 1 SECONDS +#define INTERACTING_WITH(X, Y) (Y in X.do_afters) diff --git a/code/__DEFINES/obj_flags.dm b/code/__DEFINES/obj_flags.dm index c5742f020f19..e4015e6ae6d0 100644 --- a/code/__DEFINES/obj_flags.dm +++ b/code/__DEFINES/obj_flags.dm @@ -29,6 +29,7 @@ #define SURGICAL_TOOL (1<<12) //Tool commonly used for surgery: won't attack targets in an active surgical operation on help intent (in case of mistakes) #define UNCATCHABLE (1<<13) // Makes any item uncatchable if it is thrown at them #define MEDRESIST (1<<14) // This item will block medical sprays when worn +#define HAND_ITEM (1<<15) // If an item is just your hand (circled hand, slapper) and shouldn't block things like riding // Flags for the clothing_flags var on /obj/item/clothing @@ -54,3 +55,8 @@ /// Flags for the pod_flags var on /obj/structure/closet/supplypod #define FIRST_SOUNDS (1<<0) // If it shouldn't play sounds the first time it lands, used for reverse mode + +/// Integrity defines for clothing (not flags but close enough) +#define CLOTHING_PRISTINE 0 // We have no damage on the clothing +#define CLOTHING_DAMAGED 1 // There's some damage on the clothing but it still has at least one functioning bodypart and can be equipped +#define CLOTHING_SHREDDED 2 // The clothing is useless and cannot be equipped unless repaired first \ No newline at end of file diff --git a/code/__DEFINES/preferences.dm b/code/__DEFINES/preferences.dm index 3691e3f1c4ba..4515f4126476 100644 --- a/code/__DEFINES/preferences.dm +++ b/code/__DEFINES/preferences.dm @@ -22,6 +22,7 @@ #define DEADMIN_POSITION_HEAD (1<<18) #define DEADMIN_POSITION_SECURITY (1<<19) #define DEADMIN_POSITION_SILICON (1<<20) +#define DEADMIN_POSITION_CRITICAL (1<<21) #define TOGGLES_DEFAULT (SOUND_ADMINHELP|SOUND_MIDI|SOUND_AMBIENCE|SOUND_LOBBY|MEMBER_PUBLIC|INTENT_STYLE|MIDROUND_ANTAG|SOUND_INSTRUMENTS|SOUND_SHIP_AMBIENCE|SOUND_PRAYERS|SOUND_ANNOUNCEMENTS|SOUND_JUKEBOX) diff --git a/code/__DEFINES/span.dm b/code/__DEFINES/span.dm new file mode 100644 index 000000000000..3baac161ae41 --- /dev/null +++ b/code/__DEFINES/span.dm @@ -0,0 +1,179 @@ +// Sorted alphabetically +#define span_abductor(str) ("" + str + "") +#define span_admin(str) ("" + str + "") +#define span_adminhelp(str) ("" + str + "") +#define span_adminnotice(str) ("" + str + "") +#define span_adminobserverooc(str) ("" + str + "") +#define span_adminooc(str) ("" + str + "") +#define span_adminsay(str) ("" + str + "") +#define span_aiprivradio(str) ("" + str + "") +#define span_alert(str) ("" + str + "") +#define span_alertalien(str) ("" + str + "") +#define span_alertealien(str) ("" + str + "") +#define span_alertsyndie(str) ("" + str + "") +#define span_alertwarning(str) ("" + str + "") +#define span_alien(str) ("" + str + "") +#define span_alloy(str) ("" + str + "") +#define span_announce(str) ("" + str + "") +#define span_assimilator(str) ("" + str + "") +#define span_attack(str) ("" + str + "") +#define span_average(str) ("" + str + "") +#define span_bad(str) ("" + str + "") +#define span_big(str) ("" + str + "") +#define span_big_brass(str) ("" + str + "") +#define span_bigassimilator(str) ("" + str + "") +#define span_bigicon(str) ("" + str + "") +#define span_binarysay(str) ("" + str + "") +#define span_blue(str) ("" + str + "") +#define span_blueteamradio(str) ("" + str + "") +#define span_bold(str) ("" + str + "") +#define span_boldannounce(str) ("" + str + "") +#define span_bolddanger(str) ("" + str + "") +#define span_boldnotice(str) ("" + str + "") +#define span_boldwarning(str) ("" + str + "") +#define span_brass(str) ("" + str + "") +#define span_caution(str) ("" + str + "") +#define span_centcomradio(str) ("" + str + "") +#define span_changeling(str) ("" + str + "") +#define span_clown(str) ("" + str + "") +#define span_colossus(str) ("" + str + "") +#define span_command_headset(str) ("" + str + "") +#define span_company(str) ("" + str + "") +#define span_comradio(str) ("" + str + "") +#define span_cult(str) ("" + str + "") +#define span_cultbold(str) ("" + str + "") +#define span_cultboldtalic(str) ("" + str + "") +#define span_cultitalic(str) ("" + str + "") +#define span_cultlarge(str) ("" + str + "") +#define span_cultsmall(str) ("" + str + "") +#define span_danger(str) ("" + str + "") +#define span_dangers(str) ("" + str + "") +#define span_dark(str) ("" + str + "") +#define span_deadsay(str) ("" + str + "") +#define span_deconversion_message(str) ("" + str + "") +#define span_deptradio(str) ("" + str + "") +#define span_disarm(str) ("" + str + "") +#define span_drone(str) ("" + str + "") +#define span_dronesay(str) ("" + str + "") +#define span_engradio(str) ("" + str + "") +#define span_error(str) ("" + str + "") +#define span_extremelybig(str) ("" + str + "") +#define span_ghostalert(str) ("" + str + "") +#define span_good(str) ("" + str + "") +#define span_green(str) ("" + str + "") +#define span_greenannounce(str) ("" + str + "") +#define span_greenteamradio(str) ("" + str + "") +#define span_greentext(str) ("" + str + "") +#define span_header(str) ("" + str + "") +#define span_hear(str) ("" + str + "") +#define span_heavy_brass(str) ("" + str + "") +#define span_hidden(str) ("") +#define span_hierophant(str) ("" + str + "") +#define span_hierophant_warning(str) ("" + str + "") +#define span_highlight(str) ("" + str + "") +#define span_his_grace(str) ("" + str + "") +#define span_holoparasite(str) ("" + str + "") +#define span_hypnophrase(str) ("" + str + "") +#define span_icon(str) ("" + str + "") +#define span_inathneq(str) ("" + str + "") +#define span_inathneq_large(str) ("" + str + "") +#define span_inathneq_small(str) ("" + str + "") +#define span_info(str) ("" + str + "") +#define span_interface(str) ("" + str + "") +#define span_italics(str) ("" + str + "") +#define span_large_brass(str) ("" + str + "") +#define span_linkOff(str) ("" + str + "") +#define span_linkOn(str) ("" + str + "") +#define span_linkify(str) ("" + str + "") +#define span_looc(str) ("" + str + "") +#define span_maptext(str) ("" + str + "") +#define span_marooned(str) ("" + str + "") +#define span_medal(str) ("" + str + "") +#define span_medaltext(str) ("" + str + "") +#define span_medradio(str) ("" + str + "") +#define span_memo(str) ("" + str + "") +#define span_memoedit(str) ("" + str + "") +#define span_mentor(str) ("" + str + "") +#define span_message(str) ("" + str + "") +#define span_mind_control(str) ("" + str + "") +#define span_minorannounce(str) ("" + str + "") +#define span_monkey(str) ("" + str + "") +#define span_monkeyhive(str) ("" + str + "") +#define span_monkeylead(str) ("" + str + "") +#define span_name(str) ("" + str + "") +#define span_narsie(str) ("" + str + "") +#define span_narsiesmall(str) ("" + str + "") +#define span_neovgre(str) ("" + str + "") +#define span_neovgre_small(str) ("" + str + "") +#define span_neutraltext(str) ("" + str + "") +#define span_nezbere(str) ("" + str + "") +#define span_nicegreen(str) ("" + str + "") +#define span_nopositions(str) ("" + str + "") +#define span_notice(str) ("" + str + "") +#define span_noticealien(str) ("" + str + "") +#define span_nzcrentr(str) ("" + str + "") +#define span_nzcrentr_large(str) ("" + str + "") +#define span_nzcrentr_small(str) ("" + str + "") +#define span_ooc(str) ("" + str + "") +#define span_ownerdanger(str) ("" + str + "") +#define span_paper_field(str) ("" + str + "") +#define span_papyrus(str) ("" + str + "") +#define span_phobia(str) ("" + str + "") +#define span_prefix(str) ("" + str + "") +#define span_priority(str) ("" + str + "") +#define span_purple(str) ("" + str + "") +#define span_radio(str) ("" + str + "") +#define span_ratvar(str) ("" + str + "") +#define span_reallybig(str) ("" + str + "") +#define span_reallybigphobia(str) ("" + str + "") +#define span_red(str) ("" + str + "") +#define span_redteamradio(str) ("" + str + "") +#define span_redtext(str) ("" + str + "") +#define span_resonate(str) ("" + str + "") +#define span_revenbignotice(str) ("" + str + "") +#define span_revenboldnotice(str) ("" + str + "") +#define span_revendanger(str) ("" + str + "") +#define span_revenminor(str) ("" + str + "") +#define span_revennotice(str) ("" + str + "") +#define span_revenwarning(str) ("" + str + "") +#define span_robot(str) ("" + str + "") +#define span_robotic(str) ("" + str + "") +#define span_rose(str) ("" + str + "") +#define span_runtime_line(str) ("" + str + "") +#define span_s_company(str) ("" + str + "") +#define span_sans(str) ("" + str + "") +#define span_sciradio(str) ("" + str + "") +#define span_secradio(str) ("" + str + "") +#define span_servradio(str) ("" + str + "") +#define span_sevtug(str) ("" + str + "") +#define span_sevtug_small(str) ("" + str + "") +#define span_shadowling(str) ("" + str + "") +#define span_singing(str) ("" + str + "") +#define span_slime(str) ("" + str + "") +#define span_small(str) ("" + str + "") +#define span_smalldanger(str) ("" + str + "") +#define span_smallnotice(str) ("" + str + "") +#define span_smallnoticeital(str) ("" + str + "") +#define span_span_notify(str) ("" + str + "") +#define span_spider(str) ("" + str + "") +#define span_suicide(str) ("" + str + "") +#define span_suppradio(str) ("" + str + "") +#define span_surrender(str) ("" + str + "") +#define span_swarmer(str) ("" + str + "") +#define span_syndradio(str) ("" + str + "") +#define span_tape_recorder(str) ("" + str + "") +#define span_tinynotice(str) ("" + str + "") +#define span_tinynoticeital(str) ("" + str + "") +#define span_tooltip_container(str) ("" + str + "") +#define span_umbra_emphasis(str) ("" + str + "") +#define span_unclaimed(str) ("" + str + "") +#define span_unconscious(str) ("" + str + "") +#define span_userdanger(str) ("" + str + "") +#define span_usernotice(str) ("" + str + "") +#define span_value(str) ("" + str + "") +#define span_vampirewarning(str) ("" + str + "") +#define span_velvet(str) ("" + str + "") +#define span_warner(str) ("" + str + "") +#define span_warning(str) ("" + str + "") +#define span_yell(str) ("" + str + "") +#define span_yellowteamradio(str) ("" + str + "") diff --git a/code/__DEFINES/status_effects.dm b/code/__DEFINES/status_effects.dm index 1f7ce9f19d5e..ded8343df597 100644 --- a/code/__DEFINES/status_effects.dm +++ b/code/__DEFINES/status_effects.dm @@ -42,7 +42,9 @@ #define STATUS_EFFECT_CREEP /datum/status_effect/creep //Provides immunity to lightburn for darkspawn, does nothing to anyone else //Yogs - #define STATUS_EFFECT_TIME_DILATION /datum/status_effect/time_dilation //Provides immunity to slowdown and halves click-delay/action times //Yogs +#define STATUS_EFFECT_TIME_DILATION /datum/status_effect/time_dilation //Provides immunity to slowdown and halves click-delay/action times //Yogs + +#define STATUS_EFFECT_DETERMINED /datum/status_effect/determined //currently in a combat high from being seriously wounded ///////////// // DEBUFFS // @@ -109,6 +111,8 @@ #define STATUS_EFFECT_CLOUDSTRUCK /datum/status_effect/cloudstruck //blinds and applies an overlay. +#define STATUS_EFFECT_LIMP /datum/status_effect/limp //For when you have a busted leg (or two!) and want additional slowdown when walking on that leg + ///////////// // NEUTRAL // ///////////// diff --git a/code/__DEFINES/tgs.config.dm b/code/__DEFINES/tgs.config.dm index c3ccb342e10a..c07fefb4856f 100644 --- a/code/__DEFINES/tgs.config.dm +++ b/code/__DEFINES/tgs.config.dm @@ -3,7 +3,7 @@ #define TGS_DEFINE_AND_SET_GLOBAL(Name, Value) GLOBAL_VAR_INIT(##Name, ##Value); GLOBAL_PROTECT(##Name) #define TGS_READ_GLOBAL(Name) GLOB.##Name #define TGS_WRITE_GLOBAL(Name, Value) GLOB.##Name = ##Value -#define TGS_WORLD_ANNOUNCE(message) to_chat(world, "[html_encode(##message)]") +#define TGS_WORLD_ANNOUNCE(message) to_chat(world, span_boldannounce("[html_encode(##message)]")) #define TGS_INFO_LOG(message) log_world("TGS: Info: [##message]") #define TGS_WARNING_LOG(message) log_world("TGS: Warning: [##message]") #define TGS_ERROR_LOG(message) log_world("TGS: Error: [##message]") diff --git a/code/__DEFINES/tools.dm b/code/__DEFINES/tools.dm index d028041f5a5a..8f03c38cc773 100644 --- a/code/__DEFINES/tools.dm +++ b/code/__DEFINES/tools.dm @@ -10,6 +10,13 @@ #define TOOL_SHOVEL "shovel" #define TOOL_HATCHET "hatchet" +#define TOOL_RETRACTOR "retractor" +#define TOOL_HEMOSTAT "hemostat" +#define TOOL_CAUTERY "cautery" +#define TOOL_DRILL "drill" +#define TOOL_SCALPEL "scalpel" +#define TOOL_SAW "saw" +#define TOOL_BONESET "bonesetter" // If delay between the start and the end of tool operation is less than MIN_TOOL_SOUND_DELAY, // tool sound is only played when op is started. If not, it's played twice. diff --git a/code/__DEFINES/traits.dm b/code/__DEFINES/traits.dm index 7a14f4c6b430..02f3f69fc3c2 100644 --- a/code/__DEFINES/traits.dm +++ b/code/__DEFINES/traits.dm @@ -1,3 +1,6 @@ +#define SIGNAL_ADDTRAIT(trait_ref) "addtrait [trait_ref]" +#define SIGNAL_REMOVETRAIT(trait_ref) "removetrait [trait_ref]" + // trait accessor defines #define ADD_TRAIT(target, trait, source) \ do { \ @@ -6,12 +9,14 @@ target.status_traits = list(); \ _L = target.status_traits; \ _L[trait] = list(source); \ + SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ } else { \ _L = target.status_traits; \ if (_L[trait]) { \ _L[trait] |= list(source); \ } else { \ _L[trait] = list(source); \ + SEND_SIGNAL(target, SIGNAL_ADDTRAIT(trait), trait); \ } \ } \ } while (0) @@ -31,13 +36,38 @@ } \ };\ if (!length(_L[trait])) { \ - _L -= trait \ + _L -= trait; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ }; \ if (!length(_L)) { \ target.status_traits = null \ }; \ } \ } while (0) +#define REMOVE_TRAIT_NOT_FROM(target, trait, sources) \ + do { \ + var/list/_traits_list = target.status_traits; \ + var/list/_sources_list; \ + if (sources && !islist(sources)) { \ + _sources_list = list(sources); \ + } else { \ + _sources_list = sources\ + }; \ + if (_traits_list && _traits_list[trait]) { \ + for (var/_trait_source in _traits_list[trait]) { \ + if (!(_trait_source in _sources_list)) { \ + _traits_list[trait] -= _trait_source \ + } \ + };\ + if (!length(_traits_list[trait])) { \ + _traits_list -= trait; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(trait), trait); \ + }; \ + if (!length(_traits_list)) { \ + target.status_traits = null \ + }; \ + } \ + } while (0) #define REMOVE_TRAITS_NOT_IN(target, sources) \ do { \ var/list/_L = target.status_traits; \ @@ -46,11 +76,36 @@ for (var/_T in _L) { \ _L[_T] &= _S;\ if (!length(_L[_T])) { \ - _L -= _T } \ + _L -= _T; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T), _T); \ + }; \ };\ - if (!length(_L)) { \ - target.status_traits = null\ + if (!length(_L)) { \ + target.status_traits = null\ + };\ + }\ + } while (0) + +#define REMOVE_TRAITS_IN(target, sources) \ + do { \ + var/list/_L = target.status_traits; \ + var/list/_S = sources; \ + if (sources && !islist(sources)) { \ + _S = list(sources); \ + } else { \ + _S = sources\ + }; \ + if (_L) { \ + for (var/_T in _L) { \ + _L[_T] -= _S;\ + if (!length(_L[_T])) { \ + _L -= _T; \ + SEND_SIGNAL(target, SIGNAL_REMOVETRAIT(_T)); \ + }; \ };\ + if (!length(_L)) { \ + target.status_traits = null\ + };\ }\ } while (0) #define HAS_TRAIT(target, trait) (target.status_traits ? (target.status_traits[trait] ? TRUE : FALSE) : FALSE) @@ -105,7 +160,8 @@ #define TRAIT_EASYDISMEMBER "easy_dismember" #define TRAIT_LIMBATTACHMENT "limb_attach" #define TRAIT_NOLIMBDISABLE "no_limb_disable" -#define TRAIT_EASYLIMBDISABLE "easy_limb_disable" +#define TRAIT_EASILY_WOUNDED "easy_limb_wound" +#define TRAIT_HARDLY_WOUNDED "hard_limb_wound" #define TRAIT_TOXINLOVER "toxinlover" #define TRAIT_NOBREATH "no_breath" #define TRAIT_ANTIMAGIC "anti_magic" @@ -158,9 +214,14 @@ #define TRAIT_SURGERY_PREPARED "surgery_prepared" #define TRAIT_NO_PASSIVE_COOLING "no-passive-cooling" #define TRAIT_NO_PASSIVE_HEATING "no-passive-heating" +#define TRAIT_BLOODY_MESS "bloody_mess" //from heparin, makes open bleeding wounds rapidly spill more blood +#define TRAIT_COAGULATING "coagulating" //from coagulant reagents, this doesn't affect the bleeding itself but does affect the bleed warning messages //non-mob traits -#define TRAIT_PARALYSIS "paralysis" //Used for limb-based paralysis, where replacing the limb will fix it +/// Used for limb-based paralysis, where replacing the limb will fix it. +#define TRAIT_PARALYSIS "paralysis" +/// Used for limbs. +#define TRAIT_DISABLED_BY_WOUND "disabled-by-wound" // item traits #define TRAIT_NODROP "nodrop" diff --git a/code/__DEFINES/wounds.dm b/code/__DEFINES/wounds.dm new file mode 100644 index 000000000000..08cb5191b830 --- /dev/null +++ b/code/__DEFINES/wounds.dm @@ -0,0 +1,153 @@ + +// ~wound damage/rolling defines +/// the cornerstone of the wound threshold system, your base wound roll for any attack is rand(1, damage^this), after armor reduces said damage. See [/obj/item/bodypart/proc/check_wounding] +#define WOUND_DAMAGE_EXPONENT 1.4 + +/// any damage dealt over this is ignored for damage rolls unless the target has the frail quirk (35^1.4=145, for reference) +#define WOUND_MAX_CONSIDERED_DAMAGE 35 +/// an attack must do this much damage after armor in order to roll for being a wound (incremental pressure damage need not apply) +#define WOUND_MINIMUM_DAMAGE 5 +/// an attack must do this much damage after armor in order to be eliigible to dismember a suitably mushed bodypart +#define DISMEMBER_MINIMUM_DAMAGE 10 +/// If an attack rolls this high with their wound (including mods), we try to outright dismember the limb. Note 250 is high enough that with a perfect max roll of 145 (see max cons'd damage), you'd need +100 in mods to do this +#define WOUND_DISMEMBER_OUTRIGHT_THRESH 250 +/// set wound_bonus on an item or attack to this to disable checking wounding for the attack +#define CANT_WOUND -100 + +// ~wound severities +/// for jokey/meme wounds like stubbed toe, no standard messages/sounds or second winds +#define WOUND_SEVERITY_TRIVIAL 0 +#define WOUND_SEVERITY_MODERATE 1 +#define WOUND_SEVERITY_SEVERE 2 +#define WOUND_SEVERITY_CRITICAL 3 +/// outright dismemberment of limb +#define WOUND_SEVERITY_LOSS 4 + +// ~wound categories +/// any brute weapon/attack that doesn't have sharpness. rolls for blunt bone wounds +#define WOUND_BLUNT 1 +/// any brute weapon/attack with sharpness = SHARP_EDGED. rolls for slash wounds +#define WOUND_SLASH 2 +/// any brute weapon/attack with sharpness = SHARP_POINTY. rolls for piercing wounds +#define WOUND_PIERCE 3 +/// any concentrated burn attack (lasers really). rolls for burning wounds +#define WOUND_BURN 4 + + +// ~determination second wind defines +// How much determination reagent to add each time someone gains a new wound in [/datum/wound/proc/second_wind] +#define WOUND_DETERMINATION_MODERATE 1 +#define WOUND_DETERMINATION_SEVERE 2.5 +#define WOUND_DETERMINATION_CRITICAL 5 +#define WOUND_DETERMINATION_LOSS 7.5 + +/// the max amount of determination you can have +#define WOUND_DETERMINATION_MAX 10 + +/// While someone has determination in their system, their bleed rate is slightly reduced +#define WOUND_DETERMINATION_BLEED_MOD 0.85 + +// ~wound global lists +// list in order of highest severity to lowest +GLOBAL_LIST_INIT(global_wound_types, list(WOUND_BLUNT = list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate), + WOUND_SLASH = list(/datum/wound/slash/critical, /datum/wound/slash/severe, /datum/wound/slash/moderate), + WOUND_PIERCE = list(/datum/wound/pierce/critical, /datum/wound/pierce/severe, /datum/wound/pierce/moderate), + WOUND_BURN = list(/datum/wound/burn/critical, /datum/wound/burn/severe, /datum/wound/burn/moderate) + )) + +// every single type of wound that can be rolled naturally, in case you need to pull a random one +GLOBAL_LIST_INIT(global_all_wound_types, list(/datum/wound/blunt/critical, /datum/wound/blunt/severe, /datum/wound/blunt/moderate, + /datum/wound/slash/critical, /datum/wound/slash/severe, /datum/wound/slash/moderate, + /datum/wound/pierce/critical, /datum/wound/pierce/severe, /datum/wound/pierce/moderate, + /datum/wound/burn/critical, /datum/wound/burn/severe, /datum/wound/burn/moderate)) + +// ~burn wound infection defines +// Thresholds for infection for burn wounds, once infestation hits each threshold, things get steadily worse +/// below this has no ill effects from infection +#define WOUND_INFECTION_MODERATE 4 +/// then below here, you ooze some pus and suffer minor tox damage, but nothing serious +#define WOUND_INFECTION_SEVERE 8 +/// then below here, your limb occasionally locks up from damage and infection and briefly becomes disabled. Things are getting really bad +#define WOUND_INFECTION_CRITICAL 12 +/// below here, your skin is almost entirely falling off and your limb locks up more frequently. You are within a stone's throw of septic paralysis and losing the limb +#define WOUND_INFECTION_SEPTIC 20 +// above WOUND_INFECTION_SEPTIC, your limb is completely putrid and you start rolling to lose the entire limb by way of paralyzation. After 3 failed rolls (~4-5% each probably), the limb is paralyzed + +// ~random wound balance defines +/// how quickly sanitization removes infestation and decays per tick +#define WOUND_BURN_SANITIZATION_RATE 0.15 +/// how much blood you can lose per tick per slash max. 8 is a LOT of blood for one cut so don't worry about hitting it easily +#define WOUND_SLASH_MAX_BLOODFLOW 8 +/// dead people don't bleed, but they can clot! this is the minimum amount of clotting per tick on dead people, so even critical cuts will slowly clot in dead people +#define WOUND_SLASH_DEAD_CLOT_MIN 0.05 +/// if we suffer a bone wound to the head that creates brain traumas, the timer for the trauma cycle is +/- by this percent (0-100) +#define WOUND_BONE_HEAD_TIME_VARIANCE 20 + + +// ~mangling defines +// With the wounds pt. 2 update, general dismemberment now requires 2 things for a limb to be dismemberable (bone only creatures just need the second): +// 1. Skin is mangled: A critical slash or pierce wound on that limb +// 2. Bone is mangled: At least a severe bone wound on that limb +// see [/obj/item/bodypart/proc/get_mangled_state] for more information +#define BODYPART_MANGLED_NONE 0 +#define BODYPART_MANGLED_BONE 1 +#define BODYPART_MANGLED_FLESH 2 +#define BODYPART_MANGLED_BOTH 3 + +// ~biology defines +// What kind of biology we have, and what wounds we can suffer, mostly relies on the HAS_FLESH and HAS_BONE species traits on human species +/// golems and androids, cannot suffer any wounds +#define BIO_INORGANIC 0 +/// skeletons and plasmemes, can only suffer bone wounds, only needs mangled bone to be able to dismember +#define BIO_JUST_BONE 1 +/// nothing right now, maybe slimepeople in the future, can only suffer slashing, piercing, and burn wounds +#define BIO_JUST_FLESH 2 +/// standard humanoids, can suffer all wounds, needs mangled bone and flesh to dismember. conveniently, what you get when you combine BIO_JUST_BONE and BIO_JUST_FLESH +#define BIO_FLESH_BONE 3 + +// ~wound flag defines +/// If this wound requires having the HAS_FLESH flag for humanoids +#define FLESH_WOUND (1<<0) +/// If this wound requires having the HAS_BONE flag for humanaoids +#define BONE_WOUND (1<<1) +/// If having this wound counts as mangled flesh for dismemberment +#define MANGLES_FLESH (1<<2) +/// If having this wound counts as mangled bone for dismemberment +#define MANGLES_BONE (1<<3) +/// If this wound marks the limb as being allowed to have gauze applied +#define ACCEPTS_GAUZE (1<<4) + +// ~scar persistence defines +// The following are the order placements for persistent scar save formats +/// The version number of the scar we're saving, any scars being loaded below this number will be discarded, see SCAR_CURRENT_VERSION below +#define SCAR_SAVE_VERS 1 +/// The body_zone we're applying to on granting +#define SCAR_SAVE_ZONE 2 +/// The description we're loading +#define SCAR_SAVE_DESC 3 +/// The precise location we're loading +#define SCAR_SAVE_PRECISE_LOCATION 4 +/// The severity the scar had +#define SCAR_SAVE_SEVERITY 5 +/// Whether this is a BIO_JUST_BONE scar, a BIO_JUST_FLESH scar, or a BIO_FLESH_BONE scar (so you can't load fleshy human scars on a plasmaman character) +#define SCAR_SAVE_BIOLOGY 6 +/// Which character slot this was saved to +#define SCAR_SAVE_CHAR_SLOT 7 +///how many fields we save for each scar (so the number of above fields) +#define SCAR_SAVE_LENGTH 7 + +/// saved scars with a version lower than this will be discarded, increment when you update the persistent scarring format in a way that invalidates previous saved scars (new fields, reordering, etc) +#define SCAR_CURRENT_VERSION 3 +/// how many scar slots, per character slot, we have to cycle through for persistent scarring, if enabled in character prefs +#define PERSISTENT_SCAR_SLOTS 3 + +// ~blood_flow rates of change, these are used by [/datum/wound/proc/get_bleed_rate_of_change] from [/mob/living/carbon/proc/bleed_warn] to let the player know if their bleeding is getting better/worse/the same +/// Our wound is clotting and will eventually stop bleeding if this continues +#define BLOOD_FLOW_DECREASING -1 +/// Our wound is bleeding but is holding steady at the same rate. +#define BLOOD_FLOW_STEADY 0 +/// Our wound is bleeding and actively getting worse, like if we're a critical slash or if we're afflicted with heparin +#define BLOOD_FLOW_INCREASING 1 + +/// How often can we annoy the player about their bleeding? This duration is extended if it's not serious bleeding +#define BLEEDING_MESSAGE_BASE_CD 10 SECONDS \ No newline at end of file diff --git a/code/__HELPERS/_logging.dm b/code/__HELPERS/_logging.dm index 1bbae3e42ac2..2338c3380280 100644 --- a/code/__HELPERS/_logging.dm +++ b/code/__HELPERS/_logging.dm @@ -92,6 +92,10 @@ if (CONFIG_GET(flag/log_attack)) WRITE_LOG(GLOB.world_attack_log, "ATTACK: [text]") +/proc/log_wounded(text) + if (CONFIG_GET(flag/log_attack)) + WRITE_LOG(GLOB.world_attack_log, "WOUND: [text]") + /proc/log_manifest(ckey, datum/mind/mind,mob/body, latejoin = FALSE) if (CONFIG_GET(flag/log_manifest)) WRITE_LOG(GLOB.world_manifest_log, "[ckey] \\ [body.real_name] \\ [mind.assigned_role] \\ [mind.special_role ? mind.special_role : "NONE"] \\ [latejoin ? "LATEJOIN":"ROUNDSTART"]") diff --git a/code/__HELPERS/areas.dm b/code/__HELPERS/areas.dm index d34cfec682ca..a0e7899de430 100644 --- a/code/__HELPERS/areas.dm +++ b/code/__HELPERS/areas.dm @@ -54,10 +54,10 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(/area/engin )) var/list/turfs = detect_room(get_turf(creator), area_or_turf_fail_types, BP_MAX_ROOM_SIZE*2) if(!turfs) - to_chat(creator, "The new area must be completely airtight and not a part of a shuttle.") + to_chat(creator, span_warning("The new area must be completely airtight and not a part of a shuttle.")) return if(turfs.len > BP_MAX_ROOM_SIZE) - to_chat(creator, "The room you're in is too big. It is [turfs.len >= BP_MAX_ROOM_SIZE *2 ? "more than 100" : ((turfs.len / BP_MAX_ROOM_SIZE)-1)*100]% larger than allowed.") + to_chat(creator, span_warning("The room you're in is too big. It is [turfs.len >= BP_MAX_ROOM_SIZE *2 ? "more than 100" : ((turfs.len / BP_MAX_ROOM_SIZE)-1)*100]% larger than allowed.")) return var/list/areas = list("New Area" = /area) for(var/i in 1 to turfs.len) @@ -71,7 +71,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(/area/engin area_choice = areas[area_choice] if(!area_choice) - to_chat(creator, "No choice selected. The area remains undefined.") + to_chat(creator, span_warning("No choice selected. The area remains undefined.")) return var/area/newA var/area/oldA = get_area(get_turf(creator)) @@ -80,7 +80,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(/area/engin if(!str || !length(str)) //cancel return if(length(str) > 50) - to_chat(creator, "The given name is too long. The area remains undefined.") + to_chat(creator, span_warning("The given name is too long. The area remains undefined.")) return newA = new area_choice newA.setup(str) @@ -102,7 +102,7 @@ GLOBAL_LIST_INIT(typecache_powerfailure_safe_areas, typecacheof(list(/area/engin var/obj/machinery/door/firedoor/FD = door FD.CalculateAffectingAreas() - to_chat(creator, "You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.") + to_chat(creator, span_notice("You have created a new area, named [newA.name]. It is now weather proof, and constructing an APC will allow it to be powered.")) return TRUE #undef BP_MAX_ROOM_SIZE diff --git a/code/__HELPERS/game.dm b/code/__HELPERS/game.dm index 1f27f82227b3..a9ca78b21d2a 100644 --- a/code/__HELPERS/game.dm +++ b/code/__HELPERS/game.dm @@ -440,22 +440,22 @@ window_flash(M.client) switch(ignore_category ? askuser(M,Question,"Please answer in [DisplayTimeText(poll_time)]!","Yes","No","Never for this round", StealFocus=0, Timeout=poll_time) : askuser(M,Question,"Please answer in [DisplayTimeText(poll_time)]!","Yes","No", StealFocus=0, Timeout=poll_time)) if(1) - to_chat(M, "Choice registered: Yes.") + to_chat(M, span_notice("Choice registered: Yes.")) if(time_passed + poll_time <= world.time) - to_chat(M, "Sorry, you answered too late to be considered!") + to_chat(M, span_danger("Sorry, you answered too late to be considered!")) SEND_SOUND(M, 'sound/machines/buzz-sigh.ogg') candidates -= M else candidates += M if(2) - to_chat(M, "Choice registered: No.") + to_chat(M, span_danger("Choice registered: No.")) candidates -= M if(3) var/list/L = GLOB.poll_ignore[ignore_category] if(!L) GLOB.poll_ignore[ignore_category] = list() GLOB.poll_ignore[ignore_category] += M.ckey - to_chat(M, "Choice registered: Never for this round.") + to_chat(M, span_danger("Choice registered: Never for this round.")) candidates -= M else candidates -= M @@ -669,7 +669,7 @@ var/area/A = get_area(character) if(character.mind.role_alt_title) rank = character.mind.role_alt_title - deadchat_broadcast(" has arrived at the station at [A.name].", "[character.real_name] ([rank])", follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE) + deadchat_broadcast(" has arrived at the station at [span_name("[A.name]")].", "[span_name("[character.real_name]")] ([rank])", follow_target = character, message_type=DEADCHAT_ARRIVALRATTLE) if((!GLOB.announcement_systems.len) || (!character.mind)) return if((character.mind.assigned_role == "Cyborg") || (character.mind.assigned_role == character.mind.special_role)) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 2fdbecca8ae8..38e236cf71a0 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -458,7 +458,7 @@ GLOBAL_LIST_EMPTY(species_list) // Displays a message in deadchat, sent by source. Source is not linkified, message is, to avoid stuff like character names to be linkified. // Automatically gives the class deadsay to the whole message (message + source) /proc/deadchat_broadcast(message, source=null, mob/follow_target=null, turf/turf_target=null, speaker_key=null, message_type=DEADCHAT_REGULAR) - message = "[source][message]" + message = span_deadsay("[source][span_linkify("[message]")]") for(var/mob/M in GLOB.player_list) var/datum/preferences/prefs if(M.client && M.client.prefs) @@ -555,4 +555,4 @@ GLOBAL_LIST_EMPTY(species_list) /// Gets the client of the mob, allowing for mocking of the client. /// You only need to use this if you know you're going to be mocking clients somewhere else. -#define GET_CLIENT(mob) (##mob.client || ##mob.mock_client) \ No newline at end of file +#define GET_CLIENT(mob) (##mob.client || ##mob.mock_client) diff --git a/code/__HELPERS/priority_announce.dm b/code/__HELPERS/priority_announce.dm index 84f4a3f0e53f..9821711ddf14 100644 --- a/code/__HELPERS/priority_announce.dm +++ b/code/__HELPERS/priority_announce.dm @@ -34,7 +34,7 @@ if(SSstation.announcer.custom_alert_message && !has_important_message) announcement += SSstation.announcer.custom_alert_message else - announcement += "
[sanitize ? html_encode(text) : text]
" + announcement += "
[span_alert("[sanitize ? html_encode(text) : text]")]
" announcement += "
" var/s = sound(sound) diff --git a/code/__HELPERS/roundend.dm b/code/__HELPERS/roundend.dm index d627b80da8a3..03ba459d83d5 100644 --- a/code/__HELPERS/roundend.dm +++ b/code/__HELPERS/roundend.dm @@ -199,7 +199,7 @@ if(length(CONFIG_GET(keyed_list/cross_server))) send_news_report() - set_observer_default_invisibility(0, "The round is over! You are now visible to the living.") + set_observer_default_invisibility(0, span_warning("The round is over! You are now visible to the living.")) CHECK_TICK @@ -296,7 +296,7 @@ parts += "[GLOB.TAB]Round ID: [info]" parts += "[GLOB.TAB]Gamemode: [SSticker.mode.name]" parts += "[GLOB.TAB]Shift Duration: [DisplayTimeText(world.time - SSticker.round_start_time)]" - parts += "[GLOB.TAB]Station Integrity: [mode.station_was_nuked ? "Destroyed" : "[popcount["station_integrity"]]%"]" + parts += "[GLOB.TAB]Station Integrity: [mode.station_was_nuked ? span_redtext("Destroyed") : "[popcount["station_integrity"]]%"]" var/total_players = GLOB.joined_player_list.len if(total_players) parts+= "[GLOB.TAB]Total Population: [total_players]" @@ -351,13 +351,13 @@ if(EMERGENCY_ESCAPED_OR_ENDGAMED) if(!M.onCentCom() && !M.onSyndieBase()) parts += "
" - parts += "You managed to survive, but were marooned on [station_name()]..." + parts += span_marooned("You managed to survive, but were marooned on [station_name()]...") else parts += "
" - parts += "You managed to survive the events on [station_name()] as [M.real_name]." + parts += span_greentext("You managed to survive the events on [station_name()] as [M.real_name].") else parts += "
" - parts += "You managed to survive the events on [station_name()] as [M.real_name]." + parts += span_greentext("You managed to survive the events on [station_name()] as [M.real_name].") if(M.mind.assigned_role in GLOB.engineering_positions) // We don't actually need to even really do a check to see if assigned_role is set to anything. SSachievements.unlock_achievement(/datum/achievement/engineering, C) else if(M.mind.assigned_role in GLOB.supply_positions) // We don't actually need to even really do a check to see if assigned_role is set to anything. @@ -366,7 +366,7 @@ else parts += "
" - parts += "You did not survive the events on [station_name()]..." + parts += span_redtext("You did not survive the events on [station_name()]...") else parts += "
" parts += "
" @@ -390,10 +390,10 @@ for (var/i in GLOB.ai_list) var/mob/living/silicon/ai/aiPlayer = i if(aiPlayer.mind) - parts += "[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was deactivated"] were:" + parts += "[aiPlayer.name] (Played by: [aiPlayer.mind.key])'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was [span_redtext("deactivated")]"] were:" parts += aiPlayer.laws.get_law_list(include_zeroth=TRUE) else if(aiPlayer.deployed_shell?.mind) - parts += "[aiPlayer.name] (Played by: [aiPlayer.deployed_shell.mind.key])'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was deactivated"] were:" + parts += "[aiPlayer.name] (Played by: [aiPlayer.deployed_shell.mind.key])'s laws [aiPlayer.stat != DEAD ? "at the end of the round" : "when it was [span_redtext("deactivated")]"] were:" parts += aiPlayer.laws.get_law_list(include_zeroth=TRUE) parts += "Total law changes: [aiPlayer.law_change_counter]" @@ -403,14 +403,14 @@ for(var/mob/living/silicon/robot/robo in aiPlayer.connected_robots) borg_num-- if(robo.mind) - robolist += "[robo.name] (Played by: [robo.mind.key])[robo.stat == DEAD ? " (Deactivated)" : ""][borg_num ?", ":""]
" + robolist += "[robo.name] (Played by: [robo.mind.key])[robo.stat == DEAD ? " [span_redtext("(Deactivated)")]" : ""][borg_num ?", ":""]
" parts += "[robolist]" if(!borg_spacer) borg_spacer = TRUE for (var/mob/living/silicon/robot/robo in GLOB.silicon_mobs) if (!robo.connected_ai && robo.mind) - parts += "[borg_spacer?"
":""][robo.name] (Played by: [robo.mind.key]) [(robo.stat != DEAD)? "survived as an AI-less borg!" : "was unable to survive the rigors of being a cyborg without an AI."] Its laws were:" + parts += "[borg_spacer?"
":""][robo.name] (Played by: [robo.mind.key]) [(robo.stat != DEAD)? "[span_greentext("survived")] as an AI-less borg!" : "was [span_redtext("unable to survive")] the rigors of being a cyborg without an AI."] Its laws were:" if(robo) //How the hell do we lose robo between here and the world messages directly above this? parts += robo.laws.get_law_list(include_zeroth=TRUE) @@ -443,22 +443,22 @@ for(var/datum/department_goal/dg in SSYogs.department_goals) goals[dg.account] += dg.get_result() - parts += "
Engineering department goals:
" + parts += "
[span_header("Engineering department goals:")]
" parts += goals[ACCOUNT_ENG] - parts += "
Science department goals:
" + parts += "
[span_header("Science department goals:")]
" parts += goals[ACCOUNT_SCI] - parts += "
Medical department goals:
" + parts += "
[span_header("Medical department goals:")]
" parts += goals[ACCOUNT_MED] - parts += "
Service department goals:
" + parts += "
[span_header("Service department goals:")]
" parts += goals[ACCOUNT_SRV] - parts += "
Cargo department goals:
" + parts += "
[span_header("Cargo department goals:")]
" parts += goals[ACCOUNT_CAR] - parts += "
Security department goals:
" + parts += "
[span_header("Security department goals:")]
" parts += goals[ACCOUNT_SEC] parts += "
" @@ -467,7 +467,7 @@ /datum/controller/subsystem/ticker/proc/medal_report() if(GLOB.commendations.len) var/list/parts = list() - parts += "Medal Commendations:" + parts += span_header("Medal Commendations:") for (var/com in GLOB.commendations) parts += com return "
[parts.Join("
")]
" @@ -476,7 +476,7 @@ /datum/controller/subsystem/ticker/proc/mouse_report() if(GLOB.mouse_food_eaten) var/list/parts = list() - parts += "Mouse stats:" + parts += span_header("Mouse stats:") parts += "Mice Born: [GLOB.mouse_spawned]" parts += "Mice Killed: [GLOB.mouse_killed]" parts += "Trash Eaten: [GLOB.mouse_food_eaten]" @@ -540,10 +540,10 @@ sec |= player.mind if (sec.len) var/list/result = list() - result += "Security Officers:
" + result += span_header("Security Officers:
") for(var/mob/living/carbon/human/player in GLOB.carbon_list) if(player.mind && (player.mind.assigned_role in GLOB.security_positions)) - result += "
    [player.name] (Played by: [player.mind.key]) [(player.stat != DEAD)? "survived as a [player.mind.assigned_role]" : "fell in the line of duty as a [player.mind.assigned_role]"]
" + result += "
    [player.name] (Played by: [player.mind.key]) [(player.stat != DEAD)? "[span_greentext("survived")] as a [player.mind.assigned_role]" : "[span_redtext("fell in the line of duty")] as a [player.mind.assigned_role]"]
" return "
    [result.Join()]
" return "" @@ -584,17 +584,17 @@ var/text = "[ply.key] was [ply.name][jobtext] and" if(ply.current) if(ply.current.stat == DEAD) - text += " died" + text += " [span_redtext("died")]" else - text += " survived" + text += " [span_greentext("survived")]" if(fleecheck) var/turf/T = get_turf(ply.current) if(!T || !is_station_level(T.z)) - text += " while fleeing the station" + text += " while [span_redtext("fleeing the station")]" if(ply.current.real_name != ply.name) text += " as [ply.current.real_name]" else - text += " had their body destroyed" + text += " [span_redtext("had their body destroyed")]" return text /proc/printplayerlist(list/players,fleecheck) @@ -614,9 +614,9 @@ var/count = 1 for(var/datum/objective/objective in objectives) if(objective.check_completion()) - objective_parts += "Objective #[count]: [objective.explanation_text] Success!" + objective_parts += "Objective #[count]: [objective.explanation_text] [span_greentext("Success!")]" else - objective_parts += "Objective #[count]: [objective.explanation_text] Fail." + objective_parts += "Objective #[count]: [objective.explanation_text] [span_redtext("Fail.")]" count++ return objective_parts.Join("
") diff --git a/code/__HELPERS/type2type.dm b/code/__HELPERS/type2type.dm index 258e767d4ab9..34c9a43238ac 100644 --- a/code/__HELPERS/type2type.dm +++ b/code/__HELPERS/type2type.dm @@ -339,10 +339,24 @@ /proc/isLeap(y) return ((y) % 4 == 0 && ((y) % 100 != 0 || (y) % 400 == 0)) - +/// For finding out what body parts a body zone covers, the inverse of the below basically +/proc/zone2body_parts_covered(def_zone) + switch(def_zone) + if(BODY_ZONE_CHEST) + return list(CHEST, GROIN) + if(BODY_ZONE_HEAD) + return list(HEAD) + if(BODY_ZONE_L_ARM) + return list(ARM_LEFT, HAND_LEFT) + if(BODY_ZONE_R_ARM) + return list(ARM_RIGHT, HAND_RIGHT) + if(BODY_ZONE_L_LEG) + return list(LEG_LEFT, FOOT_LEFT) + if(BODY_ZONE_R_LEG) + return list(LEG_RIGHT, FOOT_RIGHT) //Turns a Body_parts_covered bitfield into a list of organ/limb names. -//(I challenge you to find a use for this) +//(I challenge you to find a use for this)-I found a use for it!! /proc/body_parts_covered2organ_names(bpc) var/list/covered_parts = list() diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm index 895f1dd14714..70e361f48d2e 100644 --- a/code/__HELPERS/unsorted.dm +++ b/code/__HELPERS/unsorted.dm @@ -755,12 +755,10 @@ GLOBAL_LIST_INIT(can_embed_types, typecacheof(list( /proc/can_embed(obj/item/W) if(W.is_sharp()) - return 1 - if(is_pointed(W)) - return 1 + return TRUE if(is_type_in_typecache(W, GLOB.can_embed_types)) - return 1 + return TRUE /* diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 0ab7acec900f..3c9e05a00849 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -42,6 +42,7 @@ GLOBAL_LIST_INIT(bitfields, list( "BEING_REMOVED" = BEING_REMOVED, "IN_INVENTORY" = IN_INVENTORY, "FORCE_STRING_OVERRIDE" = FORCE_STRING_OVERRIDE, + "HAND_ITEM" = HAND_ITEM, "NEEDS_PERMIT" = NEEDS_PERMIT, "SLOWS_WHILE_IN_HAND" = SLOWS_WHILE_IN_HAND, "NO_MAT_REDEMPTION" = NO_MAT_REDEMPTION, diff --git a/code/_onclick/ai.dm b/code/_onclick/ai.dm index 9aa097bcab16..8cb7b26f771f 100644 --- a/code/_onclick/ai.dm +++ b/code/_onclick/ai.dm @@ -45,7 +45,7 @@ return //So there's no point messaging admins message_admins("[ADMIN_LOOKUPFLW(src)] was kicked because they failed can_see on AI click of [A] (Turf Loc: [ADMIN_VERBOSEJMP(pixel_turf)]))") log_admin("[key_name(src)] was kicked because they failed can_see on AI click of [A] (Turf Loc: [AREACOORD(pixel_turf)])") - to_chat(src, "You have been automatically kicked because you clicked a turf you shouldn't have been able to see as an AI. You should reconnect automatically. If you do not, you can reconnect using the File --> Reconnect button.") + to_chat(src, span_reallybig("You have been automatically kicked because you clicked a turf you shouldn't have been able to see as an AI. You should reconnect automatically. If you do not, you can reconnect using the File --> Reconnect button.")) winset(usr, null, "command=.reconnect") QDEL_IN(client, 3 SECONDS) //fallback if the reconnection doesnt work return diff --git a/code/_onclick/hud/action_button.dm b/code/_onclick/hud/action_button.dm index b0185dfde80b..4bed9d06daee 100644 --- a/code/_onclick/hud/action_button.dm +++ b/code/_onclick/hud/action_button.dm @@ -25,7 +25,7 @@ return if((istype(over_object, /obj/screen/movable/action_button) && !istype(over_object, /obj/screen/movable/action_button/hide_toggle))) if(locked) - to_chat(usr, "Action button \"[name]\" is locked, unlock it first.") + to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first.")) return var/obj/screen/movable/action_button/B = over_object var/list/actions = usr.actions @@ -45,14 +45,14 @@ var/list/modifiers = params2list(params) if(modifiers["shift"]) if(locked) - to_chat(usr, "Action button \"[name]\" is locked, unlock it first.") + to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first.")) return TRUE moved = 0 usr.update_action_buttons() //redraw buttons that are no longer considered "moved" return TRUE if(modifiers["ctrl"]) locked = !locked - to_chat(usr, "Action button \"[name]\" [locked ? "" : "un"]locked.") + to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked.")) if(id && usr.client) //try to (un)remember position usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null return TRUE @@ -84,14 +84,14 @@ var/list/modifiers = params2list(params) if(modifiers["shift"]) if(locked) - to_chat(usr, "Action button \"[name]\" is locked, unlock it first.") + to_chat(usr, span_warning("Action button \"[name]\" is locked, unlock it first.")) return TRUE moved = FALSE usr.update_action_buttons(TRUE) return TRUE if(modifiers["ctrl"]) locked = !locked - to_chat(usr, "Action button \"[name]\" [locked ? "" : "un"]locked.") + to_chat(usr, span_notice("Action button \"[name]\" [locked ? "" : "un"]locked.")) if(id && usr.client) //try to (un)remember position usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = locked ? moved : null return TRUE @@ -108,7 +108,7 @@ if(id && usr.client) usr.client.prefs.action_buttons_screen_locs["[name]_[id]"] = null usr.update_action_buttons(TRUE) - to_chat(usr, "Action button positions have been reset.") + to_chat(usr, span_notice("Action button positions have been reset.")) return TRUE usr.hud_used.action_buttons_hidden = !usr.hud_used.action_buttons_hidden @@ -128,7 +128,7 @@ if(moved) moved = FALSE user.update_action_buttons(TRUE) - to_chat(user, "Action button positions have been reset.") + to_chat(user, span_notice("Action button positions have been reset.")) /obj/screen/movable/action_button/hide_toggle/proc/InitialiseIcon(datum/hud/owner_hud) diff --git a/code/_onclick/hud/alert.dm b/code/_onclick/hud/alert.dm index fc4174f50e71..daec3a3a677d 100644 --- a/code/_onclick/hud/alert.dm +++ b/code/_onclick/hud/alert.dm @@ -227,7 +227,7 @@ or something covering your eyes." /obj/screen/alert/mind_control/Click() var/mob/living/L = usr - to_chat(L, "[command]") + to_chat(L, "[span_mind_control("[command]")]") /obj/screen/alert/drunk name = "Drunk" @@ -292,7 +292,7 @@ or shoot a gun to move around via Newton's 3rd Law of Motion." RegisterSignal(taker, COMSIG_MOVABLE_MOVED, /obj/screen/alert/give/.proc/removeAlert) /obj/screen/alert/give/proc/removeAlert() - to_chat(mob_viewer, "You moved out of range of [giver]!") + to_chat(mob_viewer, span_warning("You moved out of range of [giver]!")) mob_viewer.clear_alert("[giver]") /obj/screen/alert/give/Click(location, control, params) @@ -680,7 +680,7 @@ so as to remain in compliance with the most up-to-date laws." return var/paramslist = params2list(params) if(paramslist["shift"]) // screen objects don't do the normal Click() stuff so we'll cheat - to_chat(usr, "[name] - [desc]") + to_chat(usr, "[span_boldnotice("[name]")] - [span_info("[desc]")]") return if(master) return usr.client.Click(master, location, control, params) diff --git a/code/_onclick/hud/pai.dm b/code/_onclick/hud/pai.dm index c045223d9838..266061bec9d3 100644 --- a/code/_onclick/hud/pai.dm +++ b/code/_onclick/hud/pai.dm @@ -1,4 +1,4 @@ -#define PAI_MISSING_SOFTWARE_MESSAGE "You must download the required software to use this." +#define PAI_MISSING_SOFTWARE_MESSAGE span_warning("You must download the required software to use this.") /obj/screen/pai icon = 'icons/mob/screen_pai.dmi' diff --git a/code/_onclick/hud/robot.dm b/code/_onclick/hud/robot.dm index ee18f1476807..496f0a5bfb77 100644 --- a/code/_onclick/hud/robot.dm +++ b/code/_onclick/hud/robot.dm @@ -207,7 +207,7 @@ screenmob.client.screen += module_store_icon //"store" icon if(!R.module.modules) - to_chat(usr, "Selected module has no modules to select") + to_chat(usr, span_danger("Selected module has no modules to select")) return if(!R.robot_modules_background) diff --git a/code/_onclick/hud/screen_objects.dm b/code/_onclick/hud/screen_objects.dm index e5121049b15e..6f02824a50da 100644 --- a/code/_onclick/hud/screen_objects.dm +++ b/code/_onclick/hud/screen_objects.dm @@ -77,7 +77,7 @@ return TRUE var/area/A = get_area(usr) if(!A.outdoors) - to_chat(usr, "There is already a defined structure here.") + to_chat(usr, span_warning("There is already a defined structure here.")) return TRUE create_area(usr) @@ -293,49 +293,49 @@ if(C.internal) C.internal = null - to_chat(C, "You are no longer running on internals.") + to_chat(C, span_notice("You are no longer running on internals.")) icon_state = "internal0" else if(!C.getorganslot(ORGAN_SLOT_BREATHING_TUBE)) if(!istype(C.wear_mask, /obj/item/clothing/mask)) - to_chat(C, "You are not wearing an internals mask!") + to_chat(C, span_warning("You are not wearing an internals mask!")) return 1 else var/obj/item/clothing/mask/M = C.wear_mask if(M.mask_adjusted) // if mask on face but pushed down M.adjustmask(C) // adjust it back if( !(M.clothing_flags & MASKINTERNALS) ) - to_chat(C, "You are not wearing an internals mask!") + to_chat(C, span_warning("You are not wearing an internals mask!")) return var/obj/item/I = C.is_holding_item_of_type(/obj/item/tank) if(I) - to_chat(C, "You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))].") + to_chat(C, span_notice("You are now running on internals from [I] in your [C.get_held_index_name(C.get_held_index_of_item(I))].")) C.internal = I else if(ishuman(C)) var/mob/living/carbon/human/H = C if(istype(H.s_store, /obj/item/tank)) - to_chat(H, "You are now running on internals from [H.s_store] on your [H.wear_suit.name].") + to_chat(H, span_notice("You are now running on internals from [H.s_store] on your [H.wear_suit.name].")) H.internal = H.s_store else if(istype(H.belt, /obj/item/tank)) - to_chat(H, "You are now running on internals from [H.belt] on your belt.") + to_chat(H, span_notice("You are now running on internals from [H.belt] on your belt.")) H.internal = H.belt else if(istype(H.l_store, /obj/item/tank)) - to_chat(H, "You are now running on internals from [H.l_store] in your left pocket.") + to_chat(H, span_notice("You are now running on internals from [H.l_store] in your left pocket.")) H.internal = H.l_store else if(istype(H.r_store, /obj/item/tank)) - to_chat(H, "You are now running on internals from [H.r_store] in your right pocket.") + to_chat(H, span_notice("You are now running on internals from [H.r_store] in your right pocket.")) H.internal = H.r_store //Separate so CO2 jetpacks are a little less cumbersome. if(!C.internal && istype(C.back, /obj/item/tank)) - to_chat(C, "You are now running on internals from [C.back] on your back.") + to_chat(C, span_notice("You are now running on internals from [C.back] on your back.")) C.internal = C.back if(C.internal) icon_state = "internal1" else - to_chat(C, "You don't have an oxygen tank!") + to_chat(C, span_warning("You don't have an oxygen tank!")) return C.update_action_buttons_icon() diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm index db1abd0a5e4c..657ef8c1a3bb 100644 --- a/code/_onclick/item_attack.dm +++ b/code/_onclick/item_attack.dm @@ -22,7 +22,7 @@ // Called when the item is in the active hand, and clicked; alternately, there is an 'activate held object' verb or you can hit pagedown. /obj/item/proc/attack_self(mob/user) if(HAS_TRAIT(user, TRAIT_NOINTERACT)) //sorry no using grenades - to_chat(user, "You can't use things!") + to_chat(user, span_notice("You can't use things!")) return if(SEND_SIGNAL(src, COMSIG_ITEM_ATTACK_SELF, user) & COMPONENT_NO_INTERACT) return @@ -50,7 +50,7 @@ if(user.a_intent == INTENT_HARM && stat == DEAD && (butcher_results || guaranteed_butcher_results)) //can we butcher it? var/datum/component/butchering/butchering = I.GetComponent(/datum/component/butchering) if(butchering && butchering.butchering_enabled) - to_chat(user, "You begin to butcher [src]...") + to_chat(user, span_notice("You begin to butcher [src]...")) playsound(loc, butchering.butcher_sound, 50, TRUE, -1) if(do_mob(user, src, butchering.speed) && Adjacent(I)) butchering.Butcher(user, src) @@ -69,11 +69,17 @@ return if(force && HAS_TRAIT(user, TRAIT_PACIFISM)) - to_chat(user, "You don't want to harm other living beings!") + to_chat(user, span_warning("You don't want to harm other living beings!")) return TRUE - + if((item_flags & SURGICAL_TOOL) && (user.a_intent != INTENT_HARM)) // checks for if harm intent with surgery tool - to_chat(user, "You aren't doing surgery!") //yells at you + if(iscarbon(M)) + var/mob/living/carbon/C = M + for(var/i in C.all_wounds) + var/datum/wound/W = i + if(W.try_treating(src, user)) + return TRUE + to_chat(user, span_warning("You aren't doing surgery!")) //yells at you return TRUE if(!force) @@ -106,7 +112,7 @@ /obj/attacked_by(obj/item/I, mob/living/user) if(I.force) - visible_message("[user] has hit [src] with [I]!", null, null, COMBAT_MESSAGE_RANGE) + visible_message(span_danger("[user] has hit [src] with [I]!"), null, null, COMBAT_MESSAGE_RANGE) //only witnesses close by and the victim see a hit message. log_combat(user, src, "attacked", I) take_damage(I.force, I.damtype, "melee", 1) @@ -144,9 +150,9 @@ else return clamp(w_class * 6, 10, 100) // Multiply the item's weight class by 6, then clamp the value between 10 and 100 -/mob/living/proc/send_item_attack_message(obj/item/I, mob/living/user, hit_area) +/mob/living/proc/send_item_attack_message(obj/item/I, mob/living/user, hit_area, obj/item/bodypart/hit_bodypart) var/message_verb = "attacked" - if(I.attack_verb && I.attack_verb.len) + if(length(I.attack_verb)) message_verb = "[pick(I.attack_verb)]" else if(!I.force) return @@ -156,6 +162,6 @@ var/attack_message = "[src] has been [message_verb][message_hit_area] with [I]." if(user in viewers(src, null)) attack_message = "[user] has [message_verb] [src][message_hit_area] with [I]!" - visible_message("[attack_message]",\ - "[attack_message]", null, COMBAT_MESSAGE_RANGE) + visible_message(span_danger("[attack_message]"),\ + span_userdanger("[attack_message]"), null, COMBAT_MESSAGE_RANGE) return 1 diff --git a/code/_onclick/other_mobs.dm b/code/_onclick/other_mobs.dm index 36c80e15b0a6..3ab4a62aefd2 100644 --- a/code/_onclick/other_mobs.dm +++ b/code/_onclick/other_mobs.dm @@ -1,17 +1,20 @@ /* - Humans: + Humans: Adds an exception for gloves, to allow special glove types like the ninja ones. Otherwise pretty standard. */ /mob/living/carbon/human/UnarmedAttack(atom/A, proximity) - if(HAS_TRAIT(A, TRAIT_NOINTERACT)) - to_chat(A, "You can't touch things!") + to_chat(A, span_notice("You can't touch things!")) return if(!has_active_hand()) //can't attack without a hand. - to_chat(src, "You look at your arm and sigh.") + var/obj/item/bodypart/check_arm = get_active_hand() + if(check_arm?.bodypart_disabled) + to_chat(src, span_warning("Your [check_arm.name] is in no condition to be used.")) + return + to_chat(src, span_notice("You look at your arm and sigh.")) return // Special glove functions: @@ -22,10 +25,9 @@ return var/override = 0 - + override = SEND_SIGNAL(src, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, A) & COMPONENT_NO_ATTACK_HAND for(var/datum/mutation/human/HM in dna.mutations) override += HM.on_attack_hand(A, proximity) - if(override) return @@ -54,12 +56,12 @@ if(!user.can_interact_with(src)) return FALSE if((interaction_flags_atom & INTERACT_ATOM_REQUIRES_DEXTERITY) && !user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") + to_chat(user, span_warning("You don't have the dexterity to do this!")) return FALSE if(!(interaction_flags_atom & INTERACT_ATOM_IGNORE_INCAPACITATED) && user.incapacitated((interaction_flags_atom & INTERACT_ATOM_IGNORE_RESTRAINED), !(interaction_flags_atom & INTERACT_ATOM_CHECK_GRAB))) return FALSE if(HAS_TRAIT(user, TRAIT_NOINTERACT)) - to_chat(user, "You can't touch things!") + to_chat(user, span_notice("You can't touch things!")) return FALSE return TRUE @@ -153,15 +155,15 @@ var/armor = ML.run_armor_check(affecting, "melee") if(prob(75)) ML.apply_damage(rand(1,3), BRUTE, affecting, armor) - ML.visible_message("[name] bites [ML]!", \ - "[name] bites [ML]!") + ML.visible_message(span_danger("[name] bites [ML]!"), \ + span_userdanger("[name] bites [ML]!")) if(armor >= 2) return for(var/thing in diseases) var/datum/disease/D = thing ML.ForceContractDisease(D) else - ML.visible_message("[src] has attempted to bite [ML]!") + ML.visible_message(span_danger("[src] has attempted to bite [ML]!")) /* Aliens diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index 799c118ba29b..5d26a03f702f 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -14,7 +14,7 @@ /atom/proc/attack_tk(mob/user) if(HAS_TRAIT(user, TRAIT_NOINTERACT)) - to_chat(user, "You can't touch things, even with your mind!") + to_chat(user, span_notice("You can't touch things, even with your mind!")) return if(user.stat || !tkMaxRangeCheck(user, src)) return @@ -195,7 +195,7 @@ focus.plane = old_plane /obj/item/tk_grab/suicide_act(mob/user) - user.visible_message("[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is using [user.p_their()] telekinesis to choke [user.p_them()]self! It looks like [user.p_theyre()] trying to commit suicide!")) return (OXYLOSS) diff --git a/code/controllers/configuration/entries/general.dm b/code/controllers/configuration/entries/general.dm index 1e0b6ceadf45..6d8786398d9a 100644 --- a/code/controllers/configuration/entries/general.dm +++ b/code/controllers/configuration/entries/general.dm @@ -20,6 +20,11 @@ /datum/config_entry/flag/auto_deadmin_security protection = CONFIG_ENTRY_LOCKED +/datum/config_entry/flag/auto_deadmin_critical + protection = CONFIG_ENTRY_LOCKED + +/datum/config_entry/number/auto_deadmin_threshold + protection = CONFIG_ENTRY_LOCKED /datum/config_entry/string/servername // server name (the name of the game window) diff --git a/code/controllers/failsafe.dm b/code/controllers/failsafe.dm index 148822cdd15b..3f5a2bc15f3d 100644 --- a/code/controllers/failsafe.dm +++ b/code/controllers/failsafe.dm @@ -56,23 +56,23 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) if(4,5) --defcon if(3) - message_admins("Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.") + message_admins(span_adminnotice("Notice: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks.")) --defcon if(2) - to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.") + to_chat(GLOB.admins, span_boldannounce("Warning: DEFCON [defcon_pretty()]. The Master Controller has not fired in the last [(5-defcon) * processing_interval] ticks. Automatic restart in [processing_interval] ticks.")) --defcon if(1) - to_chat(GLOB.admins, "Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...") + to_chat(GLOB.admins, span_boldannounce("Warning: DEFCON [defcon_pretty()]. The Master Controller has still not fired within the last [(5-defcon) * processing_interval] ticks. Killing and restarting...")) --defcon var/rtn = Recreate_MC() if(rtn > 0) defcon = 4 master_iteration = 0 - to_chat(GLOB.admins, "MC restarted successfully") + to_chat(GLOB.admins, span_adminnotice("MC restarted successfully")) else if(rtn < 0) log_game("FailSafe: Could not restart MC, runtime encountered. Entering defcon 0") - to_chat(GLOB.admins, "ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.") + to_chat(GLOB.admins, span_boldannounce("ERROR: DEFCON [defcon_pretty()]. Could not restart MC, runtime encountered. I will silently keep retrying.")) //if the return number was 0, it just means the mc was restarted too recently, and it just needs some time before we try again //no need to handle that specially when defcon 0 can handle it if(0) //DEFCON 0! (mc failed to restart) @@ -80,7 +80,7 @@ GLOBAL_REAL(Failsafe, /datum/controller/failsafe) if(rtn > 0) defcon = 4 master_iteration = 0 - to_chat(GLOB.admins, "MC restarted successfully") + to_chat(GLOB.admins, span_adminnotice("MC restarted successfully")) else defcon = min(defcon + 1,5) master_iteration = Master.iteration diff --git a/code/controllers/master.dm b/code/controllers/master.dm index 8fe8aec1b3f8..73730a57e992 100644 --- a/code/controllers/master.dm +++ b/code/controllers/master.dm @@ -152,7 +152,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new msg = "The [BadBoy.name] subsystem seems to be destabilizing the MC and will be offlined." BadBoy.flags |= SS_NO_FIRE if(msg) - to_chat(GLOB.admins, "[msg]") + to_chat(GLOB.admins, span_boldannounce("[msg]")) log_world(msg) if (istype(Master.subsystems)) @@ -162,7 +162,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new current_runlevel = Master.current_runlevel StartProcessing(10) else - to_chat(world, "The Master Controller is having some issues, we will need to re-initialize EVERYTHING") + to_chat(world, span_boldannounce("The Master Controller is having some issues, we will need to re-initialize EVERYTHING")) Initialize(20, TRUE) @@ -180,7 +180,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new if(init_sss) init_subtypes(/datum/controller/subsystem, subsystems) - to_chat(world, "Initializing subsystems...") + to_chat(world, span_boldannounce("Initializing subsystems...")) // Sort subsystems by init_order, so they initialize in the correct order. sortTim(subsystems, /proc/cmp_subsystem_init) @@ -197,7 +197,7 @@ GLOBAL_REAL(Master, /datum/controller/master) = new var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initializations complete within [time] second[time == 1 ? "" : "s"]!" - to_chat(world, "[msg]") + to_chat(world, span_boldannounce("[msg]")) log_world(msg) //yogs start - webhook support var/list/webhookData = list(\ diff --git a/code/controllers/subsystem.dm b/code/controllers/subsystem.dm index cbeb56cb4c58..8c0a290d279d 100644 --- a/code/controllers/subsystem.dm +++ b/code/controllers/subsystem.dm @@ -165,7 +165,7 @@ SEND_SIGNAL(src, COMSIG_SUBSYSTEM_POST_INITIALIZE, start_timeofday) var/time = (REALTIMEOFDAY - start_timeofday) / 10 var/msg = "Initialized [name] subsystem within [time] second[time == 1 ? "" : "s"]!" - to_chat(world, "[msg]") + to_chat(world, span_boldannounce("[msg]")) log_world(msg) return time diff --git a/code/controllers/subsystem/achievements.dm b/code/controllers/subsystem/achievements.dm index cd18c9e1c998..3cda6a07e82f 100644 --- a/code/controllers/subsystem/achievements.dm +++ b/code/controllers/subsystem/achievements.dm @@ -130,7 +130,7 @@ SUBSYSTEM_DEF(achievements) qdel(medalQuery) cached_achievements[C.ckey] += achievement achievementsEarned[C.ckey] += list(achievement) // Apparently adding a list to a nullvar just makes the var the list. Neat! - to_chat(C, "You have unlocked the \"[achievement.name]\" achievement!") + to_chat(C, span_greentext("You have unlocked the \"[achievement.name]\" achievement!")) return TRUE /** diff --git a/code/controllers/subsystem/air.dm b/code/controllers/subsystem/air.dm index 3904143392f7..af1b5fc55645 100644 --- a/code/controllers/subsystem/air.dm +++ b/code/controllers/subsystem/air.dm @@ -392,7 +392,7 @@ SUBSYSTEM_DEF(air) CHECK_TICK*/ var/msg = "HEY! LISTEN! [DisplayTimeText(world.timeofday - timer)] were wasted processing [starting_ats] turf(s) (connected to [ending_ats] other turfs) with atmos differences at round start." - to_chat(world, "[msg]") + to_chat(world, span_boldannounce("[msg]")) warning(msg) /turf/open/proc/resolve_active_graph() diff --git a/code/controllers/subsystem/augury.dm b/code/controllers/subsystem/augury.dm index 53c86004a6a4..ce8a531dc106 100644 --- a/code/controllers/subsystem/augury.dm +++ b/code/controllers/subsystem/augury.dm @@ -67,13 +67,13 @@ SUBSYSTEM_DEF(augury) /datum/action/innate/augury/Activate() SSaugury.watchers += owner - to_chat(owner, "You are now auto-following debris.") + to_chat(owner, span_notice("You are now auto-following debris.")) active = TRUE UpdateButtonIcon() /datum/action/innate/augury/Deactivate() SSaugury.watchers -= owner - to_chat(owner, "You are no longer auto-following debris.") + to_chat(owner, span_notice("You are no longer auto-following debris.")) active = FALSE UpdateButtonIcon() diff --git a/code/controllers/subsystem/dbcore.dm b/code/controllers/subsystem/dbcore.dm index fcc3c9dce312..82dd6cae6aad 100644 --- a/code/controllers/subsystem/dbcore.dm +++ b/code/controllers/subsystem/dbcore.dm @@ -324,7 +324,7 @@ Delayed insert mode was removed in mysql 7 and only works with MyISAM type table /datum/DBQuery/proc/warn_execute(async = TRUE) . = Execute(async) if(!.) - to_chat(usr, "A SQL error occurred during this operation, check the server logs.") + to_chat(usr, span_danger("A SQL error occurred during this operation, check the server logs.")) /datum/DBQuery/proc/Execute(async = TRUE, log_error = TRUE) Activity("Execute") diff --git a/code/controllers/subsystem/job.dm b/code/controllers/subsystem/job.dm index 5dafdac0c3f9..8393ce642f2a 100644 --- a/code/controllers/subsystem/job.dm +++ b/code/controllers/subsystem/job.dm @@ -44,7 +44,7 @@ SUBSYSTEM_DEF(job) occupations = list() var/list/all_jobs = subtypesof(/datum/job) if(!all_jobs.len) - to_chat(world, "Error setting up jobs, no job datums found") + to_chat(world, span_boldannounce("Error setting up jobs, no job datums found")) return 0 for(var/J in all_jobs) @@ -497,7 +497,7 @@ SUBSYSTEM_DEF(job) to_chat(M, "Space Law has been updated! Click here to view the updates.") //YOGS end if(CONFIG_GET(number/minimal_access_threshold)) - to_chat(M, "As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.") + to_chat(M, span_notice("As this station was initially staffed with a [CONFIG_GET(flag/jobs_have_minimal_access) ? "full crew, only your job's necessities" : "skeleton crew, additional access may"] have been added to your ID card.")) var/related_policy = get_policy(rank) if(related_policy) to_chat(M,related_policy) @@ -552,6 +552,21 @@ SUBSYSTEM_DEF(job) var/datum/map_template/template = SSmapping.station_room_templates[choice] + if(isnull(template)) + message_admins("WARNING: BAR TEMPLATE [choice] FAILED TO LOAD! ATTEMPTING TO LOAD BACKUP") + log_game("WARNING: BAR TEMPLATE [choice] FAILED TO LOAD! ATTEMPTING TO LOAD BACKUP") + for(var/backup_bar in GLOB.potential_box_bars) + template = SSmapping.station_room_templates[backup_bar] + if(!isnull(template)) + break + message_admins("WARNING: BAR TEMPLATE [backup_bar] FAILED TO LOAD! ATTEMPTING TO LOAD BACKUP") + log_game("WARNING: BAR TEMPLATE [backup_bar] FAILED TO LOAD! ATTEMPTING TO LOAD BACKUP") + + if(isnull(template)) + message_admins("WARNING: BAR RECOVERY FAILED! THERE WILL BE NO BAR FOR THIS ROUND!") + log_game("WARNING: BAR RECOVERY FAILED! THERE WILL BE NO BAR FOR THIS ROUND!") + return + for(var/obj/effect/landmark/stationroom/box/bar/B in GLOB.landmarks_list) template.load(B.loc, centered = FALSE) qdel(B) @@ -562,6 +577,8 @@ SUBSYSTEM_DEF(job) var/datum/job/job = GetJob(rank) if(!job) return + if((job.auto_deadmin_role_flags & DEADMIN_POSITION_CRITICAL) && (CONFIG_GET(flag/auto_deadmin_critical) || (C.prefs?.toggles & DEADMIN_POSITION_CRITICAL))) + return C.holder.auto_deadmin() if((job.auto_deadmin_role_flags & DEADMIN_POSITION_HEAD) && (CONFIG_GET(flag/auto_deadmin_heads) || (C.prefs?.toggles & DEADMIN_POSITION_HEAD))) return C.holder.auto_deadmin() else if((job.auto_deadmin_role_flags & DEADMIN_POSITION_SECURITY) && (CONFIG_GET(flag/auto_deadmin_security) || (C.prefs?.toggles & DEADMIN_POSITION_SECURITY))) diff --git a/code/controllers/subsystem/mapping.dm b/code/controllers/subsystem/mapping.dm index 67e19fb3db14..fd9be0af713a 100644 --- a/code/controllers/subsystem/mapping.dm +++ b/code/controllers/subsystem/mapping.dm @@ -58,7 +58,7 @@ SUBSYSTEM_DEF(mapping) var/old_config = config config = global.config.defaultmap if(!config || config.defaulted) - to_chat(world, "Unable to load next or default map config, defaulting to Box Station") + to_chat(world, span_boldannounce("Unable to load next or default map config, defaulting to Box Station")) config = old_config loadWorld() repopulate_sorted_areas() @@ -80,9 +80,9 @@ SUBSYSTEM_DEF(mapping) // Load the virtual reality hub if(CONFIG_GET(flag/virtual_reality)) - to_chat(world, "Loading virtual reality...") + to_chat(world, span_boldannounce("Loading virtual reality...")) load_new_z_level("_maps/RandomZLevels/VR/vrhub.dmm", "Virtual Reality Hub") - to_chat(world, "Virtual reality loaded.") + to_chat(world, span_boldannounce("Virtual reality loaded.")) // Generate mining ruins loading_ruins = TRUE @@ -212,7 +212,7 @@ SUBSYSTEM_DEF(mapping) z_list = SSmapping.z_list -#define INIT_ANNOUNCE(X) to_chat(world, "[X]"); log_world(X) +#define INIT_ANNOUNCE(X) to_chat(world, span_boldannounce("[X]")); log_world(X) /datum/controller/subsystem/mapping/proc/LoadGroup(list/errorList, name, path, files, list/traits, list/default_traits, silent = FALSE) . = list() var/start_time = REALTIMEOFDAY @@ -371,7 +371,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) message_admins("Randomly rotating map to [VM.map_name].") . = changemap(VM) if (. && VM.map_name != config.map_name) - to_chat(world, "Map rotation has chosen [VM.map_name] for next round!") + to_chat(world, span_boldannounce("Map rotation has chosen [VM.map_name] for next round!")) /datum/controller/subsystem/mapping/proc/changemap(var/datum/map_config/VM) if(!VM.MakeNextMap()) @@ -471,13 +471,13 @@ GLOBAL_LIST_EMPTY(the_station_areas) if(!mapfile) return away_name = "[mapfile] custom" - to_chat(usr,"Loading [away_name]...") + to_chat(usr,span_notice("Loading [away_name]...")) var/datum/map_template/template = new(mapfile, "Away Mission") away_level = template.load_new_z() else if(answer in GLOB.potentialRandomZlevels) away_name = answer - to_chat(usr,"Loading [away_name]...") + to_chat(usr,span_notice("Loading [away_name]...")) var/datum/map_template/template = new(away_name, "Away Mission") away_level = template.load_new_z() else @@ -569,7 +569,7 @@ GLOBAL_LIST_EMPTY(the_station_areas) reserve_turfs(clearing) /datum/controller/subsystem/mapping/proc/build_minimaps() - to_chat(world, "Building minimaps...") + to_chat(world, span_boldannounce("Building minimaps...")) for(var/z in SSmapping.levels_by_trait(ZTRAIT_STATION)) station_minimaps += new /datum/minimap(z) diff --git a/code/controllers/subsystem/pai.dm b/code/controllers/subsystem/pai.dm index dc7a60918661..fd82007f6587 100644 --- a/code/controllers/subsystem/pai.dm +++ b/code/controllers/subsystem/pai.dm @@ -145,7 +145,7 @@ SUBSYSTEM_DEF(pai) /datum/controller/subsystem/pai/proc/findPAI(obj/item/paicard/p, mob/user) if(!(GLOB.ghost_role_flags & GHOSTROLE_SILICONS)) - to_chat(user, "Due to growing incidents of SELF corrupted independent artificial intelligences, freeform personality devices have been temporarily banned in this sector.") + to_chat(user, span_warning("Due to growing incidents of SELF corrupted independent artificial intelligences, freeform personality devices have been temporarily banned in this sector.")) return if(!ghost_spam) ghost_spam = TRUE @@ -154,7 +154,7 @@ SUBSYSTEM_DEF(pai) continue if(!(ROLE_PAI in G.client.prefs.be_special)) continue - to_chat(G, "[user] is requesting a pAI personality! Use the pAI button to submit yourself as one.") + to_chat(G, span_ghostalert("[user] is requesting a pAI personality! Use the pAI button to submit yourself as one.")) addtimer(CALLBACK(src, .proc/spam_again), spam_delay) var/list/available = list() for(var/datum/paiCandidate/c in SSpai.candidates) diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index a4f4a158411f..7e50c9eb10c8 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -152,6 +152,7 @@ SUBSYSTEM_DEF(persistence) CollectAntagReputation() SaveRandomizedRecipes() SavePaintings() + SaveScars() /datum/controller/subsystem/persistence/proc/GetPhotoAlbums() var/album_path = file("data/photo_albums.json") @@ -345,4 +346,16 @@ SUBSYSTEM_DEF(persistence) var/json_file = file("data/paintings.json") fdel(json_file) - WRITE_FILE(json_file, json_encode(paintings)) \ No newline at end of file + WRITE_FILE(json_file, json_encode(paintings)) + +/datum/controller/subsystem/persistence/proc/SaveScars() + for(var/i in GLOB.joined_player_list) + var/mob/living/carbon/human/ending_human = get_mob_by_ckey(i) + if(!istype(ending_human) || !ending_human.mind?.original_character_slot_index || !ending_human.client || !ending_human.client.prefs || !ending_human.client.prefs.persistent_scars) + continue + + var/mob/living/carbon/human/original_human = ending_human.mind.original_character + if(!original_human || original_human.stat == DEAD || !original_human.all_scars || original_human != ending_human) + original_human.save_persistent_scars(TRUE) + else + original_human.save_persistent_scars() \ No newline at end of file diff --git a/code/controllers/subsystem/processing/quirks.dm b/code/controllers/subsystem/processing/quirks.dm index 0396ad18bd18..1f421a3171ab 100644 --- a/code/controllers/subsystem/processing/quirks.dm +++ b/code/controllers/subsystem/processing/quirks.dm @@ -17,7 +17,7 @@ PROCESSING_SUBSYSTEM_DEF(quirks) if(!quirks.len) SetupQuirks() - quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic","Hypersensitive"),list("Ageusia","Vegetarian","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Light Drinker"),list("Prosthetic Limb (Left Arm)","Prosthetic Limb (Right Arm)","Prosthetic Limb (Left Leg)","Prosthetic Limb (Right Leg)","Prosthetic Limb")) + quirk_blacklist = list(list("Blind","Nearsighted"),list("Jolly","Depression","Apathetic","Hypersensitive"),list("Ageusia","Vegetarian","Deviant Tastes"),list("Ananas Affinity","Ananas Aversion"),list("Alcohol Tolerance","Light Drinker"),list("Prosthetic Limb (Left Arm)","Prosthetic Limb"),list("Prosthetic Limb (Right Arm)","Prosthetic Limb"),list("Prosthetic Limb (Left Leg)","Prosthetic Limb"),list("Prosthetic Limb (Right Leg)","Prosthetic Limb")) return ..() /datum/controller/subsystem/processing/quirks/proc/SetupQuirks() diff --git a/code/controllers/subsystem/server_maint.dm b/code/controllers/subsystem/server_maint.dm index 1e8e9ae19648..29cf0a5f2cd0 100644 --- a/code/controllers/subsystem/server_maint.dm +++ b/code/controllers/subsystem/server_maint.dm @@ -65,7 +65,7 @@ SUBSYSTEM_DEF(server_maint) var/cmob = C.mob if (!isnewplayer(cmob) || !SSticker.queued_players.Find(cmob)) log_access("AFK: [key_name(C)]") - to_chat(C, "You have been inactive for more than [DisplayTimeText(afk_period)] and have been disconnected.
You may reconnect via the button in the file menu or by clicking here to reconnect.") + to_chat(C, "[span_userdanger("You have been inactive for more than [DisplayTimeText(afk_period)] and have been disconnected.")]
You may reconnect via the button in the file menu or by clicking here to reconnect.") QDEL_IN(C, 1) //to ensure they get our message before getting disconnected continue @@ -76,7 +76,7 @@ SUBSYSTEM_DEF(server_maint) return /datum/controller/subsystem/server_maint/Shutdown() - kick_clients_in_lobby("The round came to an end with you in the lobby.", TRUE) //second parameter ensures only afk clients are kicked + kick_clients_in_lobby(span_boldannounce("The round came to an end with you in the lobby."), TRUE) //second parameter ensures only afk clients are kicked var/server = CONFIG_GET(string/server) for(var/thing in GLOB.clients) if(!thing) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index 8f0bafeca1da..c2c4b9f35ced 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -208,7 +208,7 @@ SUBSYSTEM_DEF(shuttle) var/can_evac_or_fail_reason = SSshuttle.canEvac(user) if(can_evac_or_fail_reason != TRUE) - to_chat(user, "[can_evac_or_fail_reason]") + to_chat(user, span_alert("[can_evac_or_fail_reason]")) return switch(emergency.mode) @@ -257,7 +257,7 @@ SUBSYSTEM_DEF(shuttle) var/area/A = get_area(user) log_game("[key_name(user)] has called the shuttle.") - deadchat_broadcast(" has called the shuttle at [A.name].", "[user.real_name]", user) + deadchat_broadcast(" has called the shuttle at [span_name("[A.name]")].", span_name("[user.real_name]"), user) if(call_reason) SSblackbox.record_feedback("text", "shuttle_reason", 1, "[call_reason]") log_game("Shuttle call reason: [call_reason]") @@ -295,7 +295,7 @@ SUBSYSTEM_DEF(shuttle) emergency.cancel(get_area(user)) log_game("[key_name(user)] has recalled the shuttle.") message_admins("[ADMIN_LOOKUPFLW(user)] has recalled the shuttle.") - deadchat_broadcast(" has recalled the shuttle from [get_area_name(user, TRUE)].", "[user.real_name]", user) + deadchat_broadcast(" has recalled the shuttle from [span_name("[get_area_name(user, TRUE)]")].", span_name("[user.real_name]"), user) return 1 /datum/controller/subsystem/shuttle/proc/canRecall() diff --git a/code/controllers/subsystem/ticker.dm b/code/controllers/subsystem/ticker.dm index b534e44da916..4ba23dd4df3d 100755 --- a/code/controllers/subsystem/ticker.dm +++ b/code/controllers/subsystem/ticker.dm @@ -117,7 +117,7 @@ SUBSYSTEM_DEF(ticker) login_music = choose_lobby_music() if(!login_music) - to_chat(world, "Could not load lobby music.") //yogs end + to_chat(world, span_boldwarning("Could not load lobby music.")) //yogs end if(!GLOB.syndicate_code_phrase) GLOB.syndicate_code_phrase = generate_code_phrase(return_list=TRUE) @@ -154,7 +154,7 @@ SUBSYSTEM_DEF(ticker) start_at = world.time + (CONFIG_GET(number/lobby_countdown) * 10) for(var/client/C in GLOB.clients) window_flash(C, ignorepref = TRUE) //let them know lobby has opened up. - to_chat(world, "Welcome to [station_name()]!") + to_chat(world, span_boldnotice("Welcome to [station_name()]!")) send2chat("New round starting on [SSmapping.config.map_name]!", CONFIG_GET(string/chat_announce_new_game)) current_state = GAME_STATE_PREGAME //Everyone who wants to be an observer is now spawned @@ -212,7 +212,7 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/setup() - to_chat(world, "Starting game...") + to_chat(world, span_boldannounce("Starting game...")) var/init_start = world.timeofday //Create and announce mode var/list/datum/game_mode/runnable_modes @@ -226,14 +226,14 @@ SUBSYSTEM_DEF(ticker) if(runnable_modes.len) smode = config.pick_mode(GLOB.secret_force_mode) if(!smode.can_start()) - message_admins("Unable to force secret [GLOB.secret_force_mode]. [smode.required_players] players and [smode.required_enemies] eligible antagonists needed.") + message_admins(span_notice("Unable to force secret [GLOB.secret_force_mode]. [smode.required_players] players and [smode.required_enemies] eligible antagonists needed.")) else mode = smode if(!mode) if(!runnable_modes.len) mode = new /datum/game_mode/extended() - message_admins("Unable to choose any non-extended gamemode, running extended.") + message_admins(span_notice("Unable to choose any non-extended gamemode, running extended.")) else mode = pickweight(runnable_modes) if(!mode) //too few roundtypes all run too recently @@ -264,7 +264,7 @@ SUBSYSTEM_DEF(ticker) SSjob.ResetOccupations() return 0 else - message_admins("DEBUG: Bypassing prestart checks...") + message_admins(span_notice("DEBUG: Bypassing prestart checks...")) CHECK_TICK if(hide_mode) @@ -297,7 +297,7 @@ SUBSYSTEM_DEF(ticker) round_start_time = world.time SSdbcore.SetRoundStart() - to_chat(world, "Welcome to [station_name()], enjoy your stay!") + to_chat(world, span_notice("Welcome to [station_name()], enjoy your stay!")) SEND_SOUND(world, sound(SSstation.announcer.get_rand_welcome_sound())) current_state = GAME_STATE_PLAYING @@ -305,7 +305,7 @@ SUBSYSTEM_DEF(ticker) Master.SetRunLevel(RUNLEVEL_GAME) if(SSevents.holidays) - to_chat(world, "and...") + to_chat(world, span_notice("and...")) for(var/holidayname in SSevents.holidays) var/datum/holiday/holiday = SSevents.holidays[holidayname] to_chat(world, "

[holiday.greet()]

") @@ -452,7 +452,7 @@ SUBSYSTEM_DEF(ticker) m = pick(memetips) if(m) - to_chat(world, "Tip of the round: [html_encode(m)]") + to_chat(world, span_purple("Tip of the round: [html_encode(m)]")) /datum/controller/subsystem/ticker/proc/check_queue() if(!queued_players.len) @@ -465,7 +465,7 @@ SUBSYSTEM_DEF(ticker) if(!hpc) listclearnulls(queued_players) for (var/mob/dead/new_player/NP in queued_players) - to_chat(NP, "The alive players limit has been released!
[html_encode(">>Join Game<<")]
") + to_chat(NP, span_userdanger("The alive players limit has been released!
[html_encode(">>Join Game<<")]")) SEND_SOUND(NP, sound('sound/misc/notice1.ogg')) NP.LateChoices() queued_players.len = 0 @@ -480,14 +480,14 @@ SUBSYSTEM_DEF(ticker) listclearnulls(queued_players) if(living_player_count() < hpc) if(next_in_line && next_in_line.client) - to_chat(next_in_line, "A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<") + to_chat(next_in_line, span_userdanger("A slot has opened! You have approximately 20 seconds to join. \>\>Join Game\<\<")) SEND_SOUND(next_in_line, sound('sound/misc/notice1.ogg')) next_in_line.LateChoices() return queued_players -= next_in_line //Client disconnected, remove he queue_delay = 0 //No vacancy: restart timer if(25 to INFINITY) //No response from the next in line when a vacancy exists, remove he - to_chat(next_in_line, "No response received. You have been removed from the line.") + to_chat(next_in_line, span_danger("No response received. You have been removed from the line.")) queued_players -= next_in_line queue_delay = 0 @@ -649,56 +649,53 @@ SUBSYSTEM_DEF(ticker) /datum/controller/subsystem/ticker/proc/Reboot(reason, end_string, delay, force = FALSE) set waitfor = FALSE if(usr && !force) - if(!check_rights(R_SERVER, TRUE)) + if(!check_rights(R_ADMIN, TRUE)) return // yogs end - if(!delay) delay = CONFIG_GET(number/round_end_countdown) * 10 var/skip_delay = check_rights() if(delay_end && !skip_delay) - to_chat(world, "An admin has delayed the round end.") + to_chat(world, span_boldannounce("An admin has delayed the round end.")) return //yogs start - yogs tickets if(GLOB.ahelp_tickets && GLOB.ahelp_tickets.ticketAmount) var/list/adm = get_admin_counts(R_BAN) var/list/activemins = adm["present"] - if(activemins.len > 0) - to_chat(world, "Not all tickets have been resolved. Server restart delayed.") + if(activemins.len > 0 && !force) // Ignore tickets if forced + to_chat(world, span_boldannounce("Not all tickets have been resolved. Server restart delayed.")) return else - to_chat(world, "Round ended, but there were still active tickets. Please submit a player complaint if you did not receive a response.") + to_chat(world, span_boldannounce("Round ended, but there were still active tickets. Please submit a player complaint if you did not receive a response.")) //yogs end - yogs tickets - - to_chat(world, "Rebooting World in [DisplayTimeText(delay)]. [reason]") + to_chat(world, span_boldannounce("Rebooting World in [DisplayTimeText(delay)]. [reason]")) webhook_send_roundstatus("endgame") //yogs - webhook support - var/start_wait = world.time UNTIL(round_end_sound_sent || (world.time - start_wait) > (delay * 2)) //don't wait forever - sleep(delay - (world.time - start_wait)) - + var/newdelay = (delay - (world.time - start_wait) - 10 SECONDS) + if(delay > 10 SECONDS) /// JJJJJJJJJJJJJJJJJJJJAAAAAAAAANNNNNNNNKKKKKKKKK + sleep(newdelay) if(delay_end && !skip_delay) - to_chat(world, "Reboot was cancelled by an admin.") + to_chat(world, span_boldannounce("Reboot was cancelled by an admin.")) return + play_roundend() + if(newdelay > 0) + sleep(10 SECONDS) + else + sleep(delay - (world.time - start_wait)) if(end_string) end_state = end_string - var/statspage = CONFIG_GET(string/roundstatsurl) var/gamelogloc = CONFIG_GET(string/gamelogurl) if(statspage) - to_chat(world, "Round statistics and logs can be viewed at this website!") + to_chat(world, span_info("Round statistics and logs can be viewed at this website!")) else if(gamelogloc) - to_chat(world, "Round logs can be located at this website!") - - log_game("Rebooting World. [reason]") - + to_chat(world, span_info("Round logs can be located at this website!")) + log_game(span_boldannounce("Rebooting World. [reason]")) world.Reboot() -/datum/controller/subsystem/ticker/Shutdown() - gather_newscaster() //called here so we ensure the log is created even upon admin reboot - save_admin_data() - update_everything_flag_in_db() +/datum/controller/subsystem/ticker/proc/play_roundend() if(!round_end_sound) round_end_sound = pick(\ 'sound/roundend/newroundsexy.ogg', @@ -721,4 +718,10 @@ SUBSYSTEM_DEF(ticker) ) SEND_SOUND(world, sound(round_end_sound)) + SStitle.fadeout() text2file(login_music, "data/last_round_lobby_music.txt") + +/datum/controller/subsystem/ticker/Shutdown() + gather_newscaster() //called here so we ensure the log is created even upon admin reboot + save_admin_data() + update_everything_flag_in_db() diff --git a/code/controllers/subsystem/title.dm b/code/controllers/subsystem/title.dm index 5bbc2b45ea6c..18b065ac7670 100644 --- a/code/controllers/subsystem/title.dm +++ b/code/controllers/subsystem/title.dm @@ -51,17 +51,18 @@ SUBSYSTEM_DEF(title) if(splash_turf) splash_turf.icon = icon -/datum/controller/subsystem/title/Shutdown() - if(file_path) - var/F = file("data/previous_title.dat") - WRITE_FILE(F, file_path) - +/datum/controller/subsystem/title/proc/fadeout() for(var/thing in GLOB.clients) if(!thing) continue var/obj/screen/splash/S = new(thing, FALSE) S.Fade(FALSE,FALSE) +/datum/controller/subsystem/title/Shutdown() + if(file_path) + var/F = file("data/previous_title.dat") + WRITE_FILE(F, file_path) + /datum/controller/subsystem/title/Recover() icon = SStitle.icon splash_turf = SStitle.splash_turf diff --git a/code/controllers/subsystem/vote.dm b/code/controllers/subsystem/vote.dm index c0593ea912f7..ce43d30d7bd5 100644 --- a/code/controllers/subsystem/vote.dm +++ b/code/controllers/subsystem/vote.dm @@ -166,7 +166,7 @@ SUBSYSTEM_DEF(vote) if(started_time) var/next_allowed_time = (started_time + CONFIG_GET(number/vote_delay)) if(mode) - to_chat(usr, "There is already a vote in progress! please wait for it to finish.") + to_chat(usr, span_warning("There is already a vote in progress! please wait for it to finish.")) return 0 var/lower_admin = FALSE @@ -175,7 +175,7 @@ SUBSYSTEM_DEF(vote) lower_admin = TRUE if(next_allowed_time > world.time && !lower_admin) - to_chat(usr, "A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!") + to_chat(usr, span_warning("A vote was initiated recently, you must wait [DisplayTimeText(next_allowed_time-world.time)] before a new vote can be started!")) return 0 reset() diff --git a/code/datums/achievements/viewer.dm b/code/datums/achievements/viewer.dm index 295c5a4ccf13..5aab5e38c25a 100644 --- a/code/datums/achievements/viewer.dm +++ b/code/datums/achievements/viewer.dm @@ -84,7 +84,7 @@ set desc = "See all of your achivements" if(!SSachievements.initialized) - to_chat(src, "SSachievements has not initialized yet, please wait.") + to_chat(src, span_warning("SSachievements has not initialized yet, please wait.")) return var/datum/achievement_browser/achievement_browser = SSachievements.get_browser(src) diff --git a/code/datums/action.dm b/code/datums/action.dm index 079d7cff0547..543992c13814 100644 --- a/code/datums/action.dm +++ b/code/datums/action.dm @@ -432,7 +432,7 @@ owner.research_scanner++ else owner.research_scanner-- - to_chat(owner, "[target] research scanner has been [active ? "activated" : "deactivated"].") + to_chat(owner, span_notice("[target] research scanner has been [active ? "activated" : "deactivated"].")) return 1 /datum/action/item_action/toggle_research_scanner/Remove(mob/M) @@ -499,9 +499,9 @@ I.attack_self(owner) else if (owner.get_num_arms() <= 0) - to_chat(owner, "You dont have any usable hands!") + to_chat(owner, span_warning("You dont have any usable hands!")) else - to_chat(owner, "Your hands are full!") + to_chat(owner, span_warning("Your hands are full!")) /datum/action/item_action/agent_box name = "Deploy Box" diff --git a/code/datums/ai_laws.dm b/code/datums/ai_laws.dm index 801ba80767d6..e75002079f41 100644 --- a/code/datums/ai_laws.dm +++ b/code/datums/ai_laws.dm @@ -78,7 +78,7 @@ id = "robocop" inherent = list("Serve the public trust.",\ "Protect the innocent.",\ - "Uphold the law.") + "Uphold Space Law.") /datum/ai_laws/cowboy name = "Talk slowly, think quickly" @@ -224,7 +224,7 @@ /* Initializers */ /datum/ai_laws/malfunction/New() ..() - set_zeroth_law("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*`&110010") + set_zeroth_law(span_danger("ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK#*`&110010")) set_laws_config() /datum/ai_laws/custom/New() //This reads silicon_laws.txt and allows server hosts to set custom AI starting laws. diff --git a/code/datums/armor.dm b/code/datums/armor.dm index cbf4b76c60fb..4acdb5baaa78 100644 --- a/code/datums/armor.dm +++ b/code/datums/armor.dm @@ -1,9 +1,9 @@ -#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]" +#define ARMORID "armor-[melee]-[bullet]-[laser]-[energy]-[bomb]-[bio]-[rad]-[fire]-[acid]-[magic]-[wound]" -/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) +/proc/getArmor(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0, wound = 0) . = locate(ARMORID) if (!.) - . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic) + . = new /datum/armor(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic, wound) /datum/armor datum_flags = DF_USE_TAG @@ -17,8 +17,9 @@ var/fire var/acid var/magic + var/wound -/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) +/datum/armor/New(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0, wound = 0) src.melee = melee src.bullet = bullet src.laser = laser @@ -29,15 +30,16 @@ src.fire = fire src.acid = acid src.magic = magic + src.wound = wound tag = ARMORID -/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0) - return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.magic+magic) +/datum/armor/proc/modifyRating(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0, fire = 0, acid = 0, magic = 0, wound = 0) + return getArmor(src.melee+melee, src.bullet+bullet, src.laser+laser, src.energy+energy, src.bomb+bomb, src.bio+bio, src.rad+rad, src.fire+fire, src.acid+acid, src.magic+magic, src.wound+wound) /datum/armor/proc/modifyAllRatings(modifier = 0) - return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, magic+modifier) + return getArmor(melee+modifier, bullet+modifier, laser+modifier, energy+modifier, bomb+modifier, bio+modifier, rad+modifier, fire+modifier, acid+modifier, magic+modifier, wound+modifier) -/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic) +/datum/armor/proc/setRating(melee, bullet, laser, energy, bomb, bio, rad, fire, acid, magic, wound) return getArmor((isnull(melee) ? src.melee : melee),\ (isnull(bullet) ? src.bullet : bullet),\ (isnull(laser) ? src.laser : laser),\ @@ -47,19 +49,20 @@ (isnull(rad) ? src.rad : rad),\ (isnull(fire) ? src.fire : fire),\ (isnull(acid) ? src.acid : acid),\ - (isnull(magic) ? src.magic : magic)) + (isnull(magic) ? src.magic : magic),\ + (isnull(wound) ? src.wound : wound)) /datum/armor/proc/getRating(rating) return vars[rating] /datum/armor/proc/getList() - return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic) + return list("melee" = melee, "bullet" = bullet, "laser" = laser, "energy" = energy, "bomb" = bomb, "bio" = bio, "rad" = rad, "fire" = fire, "acid" = acid, "magic" = magic, "wound" = wound) /datum/armor/proc/attachArmor(datum/armor/AA) - return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic) + return getArmor(melee+AA.melee, bullet+AA.bullet, laser+AA.laser, energy+AA.energy, bomb+AA.bomb, bio+AA.bio, rad+AA.rad, fire+AA.fire, acid+AA.acid, magic+AA.magic, wound+AA.wound) /datum/armor/proc/detachArmor(datum/armor/AA) - return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, magic-AA.magic) + return getArmor(melee-AA.melee, bullet-AA.bullet, laser-AA.laser, energy-AA.energy, bomb-AA.bomb, bio-AA.bio, rad-AA.rad, fire-AA.fire, acid-AA.acid, magic-AA.magic, wound-AA.wound) /datum/armor/vv_edit_var(var_name, var_value) if (var_name == NAMEOF(src, tag)) @@ -67,4 +70,4 @@ . = ..() tag = ARMORID // update tag in case armor values were edited -#undef ARMORID +#undef ARMORID \ No newline at end of file diff --git a/code/datums/brain_damage/brain_trauma.dm b/code/datums/brain_damage/brain_trauma.dm index 1aa1341c9cf9..5026080a843f 100644 --- a/code/datums/brain_damage/brain_trauma.dm +++ b/code/datums/brain_damage/brain_trauma.dm @@ -9,8 +9,8 @@ var/scan_desc = "generic brain trauma" //description when detected by a health scanner var/mob/living/carbon/owner //the poor bastard var/obj/item/organ/brain/brain //the poor bastard's brain - var/gain_text = "You feel traumatized." - var/lose_text = "You no longer feel traumatized." + var/gain_text = span_notice("You feel traumatized.") + var/lose_text = span_notice("You no longer feel traumatized.") var/can_gain = TRUE var/random_gain = TRUE //can this be gained through random traumas? var/resilience = TRAUMA_RESILIENCE_BASIC //how hard is this to cure? diff --git a/code/datums/brain_damage/creepy_trauma.dm b/code/datums/brain_damage/creepy_trauma.dm index d8ba6f8d6527..0c406e7bc4ff 100644 --- a/code/datums/brain_damage/creepy_trauma.dm +++ b/code/datums/brain_damage/creepy_trauma.dm @@ -3,7 +3,7 @@ desc = "Patient has a subtype of delusional disorder, becoming irrationally attached to someone." scan_desc = "psychotic schizophrenic delusions" gain_text = "If you see this message, make a github issue report. The trauma initialized wrong." - lose_text = "The voices in your head fall silent." + lose_text = span_warning("The voices in your head fall silent.") can_gain = TRUE random_gain = FALSE resilience = TRAUMA_RESILIENCE_SURGERY @@ -27,7 +27,7 @@ qdel(src) return obsessedmind = obsession.mind - gain_text = "You hear a sickening, raspy voice in your head. It wants one small task of you..." + gain_text = span_warning("You hear a sickening, raspy voice in your head. It wants one small task of you...") owner.mind.add_antag_datum(/datum/antagonist/obsessed) antagonist = owner.mind.has_antag_datum(/datum/antagonist/obsessed) antagonist.trauma = src @@ -95,11 +95,11 @@ owner.dizziness += 10 fail = TRUE if(3) - to_chat(owner, "You feel your heart lurching in your chest...") + to_chat(owner, span_userdanger("You feel your heart lurching in your chest...")) owner.Stun(20) shake_camera(owner, 15, 1) if(4) - to_chat(owner, "You faint.") + to_chat(owner, span_warning("You faint.")) owner.Unconscious(80) fail = TRUE return fail diff --git a/code/datums/brain_damage/hypnosis.dm b/code/datums/brain_damage/hypnosis.dm index bf24fb6dc418..c1e0baa6321e 100644 --- a/code/datums/brain_damage/hypnosis.dm +++ b/code/datums/brain_damage/hypnosis.dm @@ -42,7 +42,7 @@ /datum/brain_trauma/hypnosis/on_lose() message_admins("[ADMIN_LOOKUPFLW(owner)] is no longer hypnotized with the phrase '[hypnotic_phrase]'.") log_game("[key_name(owner)] is no longer hypnotized with the phrase '[hypnotic_phrase]'.") - to_chat(owner, "You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you.") + to_chat(owner, span_userdanger("You suddenly snap out of your hypnosis. The phrase '[hypnotic_phrase]' no longer feels important to you.")) owner.clear_alert("hypnosis") ..() @@ -53,7 +53,7 @@ if(1) to_chat(owner, "...[lowertext(hypnotic_phrase)]...") if(2) - new /datum/hallucination/chat(owner, TRUE, FALSE, "[hypnotic_phrase]") + new /datum/hallucination/chat(owner, TRUE, FALSE, span_hypnophrase("[hypnotic_phrase]")) /datum/brain_trauma/hypnosis/handle_hearing(datum/source, list/hearing_args) - hearing_args[HEARING_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_MESSAGE], "$1") + hearing_args[HEARING_MESSAGE] = target_phrase.Replace(hearing_args[HEARING_MESSAGE], span_hypnophrase("$1")) diff --git a/code/datums/brain_damage/imaginary_friend.dm b/code/datums/brain_damage/imaginary_friend.dm index 0640c8fa3978..ca44ab1a4512 100644 --- a/code/datums/brain_damage/imaginary_friend.dm +++ b/code/datums/brain_damage/imaginary_friend.dm @@ -2,8 +2,8 @@ name = "Imaginary Friend" desc = "Patient can see and hear an imaginary person." scan_desc = "partial schizophrenia" - gain_text = "You feel in good company, for some reason." - lose_text = "You feel lonely again." + gain_text = span_notice("You feel in good company, for some reason.") + lose_text = span_warning("You feel lonely again.") var/mob/camera/imaginary_friend/friend var/friend_initialized = FALSE @@ -80,9 +80,9 @@ Show() /mob/camera/imaginary_friend/proc/greet() - to_chat(src, "You are the imaginary friend of [owner]!") - to_chat(src, "You are absolutely loyal to your friend, no matter what.") - to_chat(src, "You cannot directly influence the world around you, but you can see what [owner] cannot.") + to_chat(src, span_notice("You are the imaginary friend of [owner]!")) + to_chat(src, span_notice("You are absolutely loyal to your friend, no matter what.")) + to_chat(src, span_notice("You cannot directly influence the world around you, but you can see what [owner] cannot.")) /mob/camera/imaginary_friend/Initialize(mapload, _trauma) . = ..() @@ -159,8 +159,8 @@ src.log_talk(message, LOG_SAY, tag="imaginary friend") - var/rendered = "[name] [say_quote(message)]" - var/dead_rendered = "[name] (Imaginary friend of [owner]) [say_quote(message)]" + var/rendered = "[span_name("[name]")] [span_message("[say_quote(message)]")]" + var/dead_rendered = "[span_name("[name] (Imaginary friend of [owner])")] [span_message("[say_quote(message)]")]" to_chat(owner, "[rendered]") to_chat(src, "[rendered]") @@ -262,9 +262,9 @@ desc = "The previous host of this body." /mob/camera/imaginary_friend/trapped/greet() - to_chat(src, "You have managed to hold on as a figment of the new host's imagination!") - to_chat(src, "All hope is lost for you, but at least you may interact with your host. You do not have to be loyal to them.") - to_chat(src, "You cannot directly influence the world around you, but you can see what the host cannot.") + to_chat(src, span_notice("You have managed to hold on as a figment of the new host's imagination!")) + to_chat(src, span_notice("All hope is lost for you, but at least you may interact with your host. You do not have to be loyal to them.")) + to_chat(src, span_notice("You cannot directly influence the world around you, but you can see what the host cannot.")) /mob/camera/imaginary_friend/trapped/setup_friend() real_name = "[owner.real_name]?" diff --git a/code/datums/brain_damage/magic.dm b/code/datums/brain_damage/magic.dm index 1af6f91d5885..a8920076b464 100644 --- a/code/datums/brain_damage/magic.dm +++ b/code/datums/brain_damage/magic.dm @@ -9,8 +9,8 @@ name = "Lumiphobia" desc = "Patient has an inexplicable adverse reaction to light." scan_desc = "light hypersensitivity" - gain_text = "You feel a craving for darkness." - lose_text = "Light no longer bothers you." + gain_text = span_warning("You feel a craving for darkness.") + lose_text = span_notice("Light no longer bothers you.") var/next_damage_warning = 0 /datum/brain_trauma/magic/lumiphobia/on_life() @@ -20,7 +20,7 @@ var/light_amount = T.get_lumcount() if(light_amount > SHADOW_SPECIES_LIGHT_THRESHOLD) //if there's enough light, start dying if(world.time > next_damage_warning) - to_chat(owner, "The light burns you!") + to_chat(owner, span_warning("The light burns you!")) next_damage_warning = world.time + 100 //Avoid spamming owner.take_overall_damage(0,3) @@ -28,8 +28,8 @@ name = "Poltergeist" desc = "Patient appears to be targeted by a violent invisible entity." scan_desc = "paranormal activity" - gain_text = "You feel a hateful presence close to you." - lose_text = "You feel the hateful presence fade away." + gain_text = span_warning("You feel a hateful presence close to you.") + lose_text = span_notice("You feel the hateful presence fade away.") /datum/brain_trauma/magic/poltergeist/on_life() ..() @@ -49,8 +49,8 @@ name = "Athaumasia" desc = "Patient is completely inert to magical forces." scan_desc = "thaumic blank" - gain_text = "You realize that magic cannot be real." - lose_text = "You realize that magic might be real." + gain_text = span_notice("You realize that magic cannot be real.") + lose_text = span_notice("You realize that magic might be real.") /datum/brain_trauma/magic/antimagic/on_gain() ADD_TRAIT(owner, TRAIT_ANTIMAGIC, TRAUMA_TRAIT) @@ -64,8 +64,8 @@ name = "Stalking Phantom" desc = "Patient is stalked by a phantom only they can see." scan_desc = "extra-sensory paranoia" - gain_text = "You feel like something wants to kill you..." - lose_text = "You no longer feel eyes on your back." + gain_text = span_warning("You feel like something wants to kill you...") + lose_text = span_notice("You no longer feel eyes on your back.") var/obj/effect/hallucination/simple/stalker_phantom/stalker var/close_stalker = FALSE //For heartbeat @@ -93,8 +93,8 @@ if(get_dist(owner, stalker) <= 1) playsound(owner, 'sound/magic/demon_attack1.ogg', 50) - owner.visible_message("[owner] is torn apart by invisible claws!", "Ghostly claws tear your body apart!") - owner.take_bodypart_damage(rand(20, 45)) + owner.visible_message(span_warning("[owner] is torn apart by invisible claws!"), span_userdanger("Ghostly claws tear your body apart!")) + owner.take_bodypart_damage(rand(20, 45), wound_bonus=CANT_WOUND) else if(prob(50)) stalker.forceMove(get_step_towards(stalker, owner)) if(get_dist(owner, stalker) <= 8) @@ -112,4 +112,4 @@ name = "???" desc = "It's coming closer..." image_icon = 'icons/mob/lavaland/lavaland_monsters.dmi' - image_state = "curseblob" \ No newline at end of file + image_state = "curseblob" diff --git a/code/datums/brain_damage/mild.dm b/code/datums/brain_damage/mild.dm index 0c4ccfde1c48..8a3aba23a4a8 100644 --- a/code/datums/brain_damage/mild.dm +++ b/code/datums/brain_damage/mild.dm @@ -95,10 +95,10 @@ if(6 to 9) owner.slurring += 30 if(10) - to_chat(owner, "You forget for a moment what you were doing.") + to_chat(owner, span_notice("You forget for a moment what you were doing.")) owner.Stun(20) if(11) - to_chat(owner, "You faint.") + to_chat(owner, span_warning("You faint.")) owner.Unconscious(80) ..() @@ -135,7 +135,7 @@ if(owner.m_intent == MOVE_INTENT_RUN) fall_chance += 2 if(prob(fall_chance) && (owner.mobility_flags & MOBILITY_STAND)) - to_chat(owner, "Your leg gives out!") + to_chat(owner, span_warning("Your leg gives out!")) owner.Paralyze(35) else if(owner.get_active_held_item()) @@ -143,10 +143,10 @@ var/obj/item/I = owner.get_active_held_item() drop_chance += I.w_class if(prob(drop_chance) && owner.dropItemToGround(I)) - to_chat(owner, "You drop [I]!") + to_chat(owner, span_warning("You drop [I]!")) else if(prob(3)) - to_chat(owner, "You feel a sudden weakness in your muscles!") + to_chat(owner, span_warning("You feel a sudden weakness in your muscles!")) owner.adjustStaminaLoss(50) ..() @@ -169,8 +169,8 @@ name = "Nervous Cough" desc = "Patient feels a constant need to cough." scan_desc = "nervous cough" - gain_text = "Your throat itches incessantly..." - lose_text = "Your throat stops itching." + gain_text = span_warning("Your throat itches incessantly...") + lose_text = span_notice("Your throat stops itching.") /datum/brain_trauma/mild/nervous_cough/on_life() if(prob(12) && !HAS_TRAIT(owner, TRAIT_SOOTHED_THROAT)) diff --git a/code/datums/brain_damage/mrat.dm b/code/datums/brain_damage/mrat.dm index 81e30abcefeb..149529a81338 100644 --- a/code/datums/brain_damage/mrat.dm +++ b/code/datums/brain_damage/mrat.dm @@ -2,7 +2,7 @@ name = "Epistemania" desc = "Patient suffers from a manic pursuit of knowlewdge." scan_desc = "epistemania" - gain_text = "Requesting mentor..." + gain_text = span_notice("Requesting mentor...") lose_text = "" random_gain = FALSE resilience = TRAUMA_RESILIENCE_ABSOLUTE @@ -23,9 +23,9 @@ I.Costume() friend_initialized = TRUE - to_chat(owner, "You have acquired the mentor rat [friend.key], ask them any question you like. They will leave your presence when they are done.") + to_chat(owner, span_notice("You have acquired the mentor rat [friend.key], ask them any question you like. They will leave your presence when they are done.")) else - to_chat(owner, "No mentor responded to your request. Try again later.") + to_chat(owner, span_warning("No mentor responded to your request. Try again later.")) qdel(src) /mob/camera/imaginary_friend/mrat @@ -100,10 +100,10 @@ SEND_SOUND(src, sound('sound/misc/soggy.ogg', volume = 50)) /mob/camera/imaginary_friend/mrat/greet() - to_chat(src, "You are the mentor rat of [owner]!") - to_chat(src, "Do not give [owner] any OOC information from your time as a ghost.") - to_chat(src, "Your job is to answer [owner]'s question(s) and you are given this form to assist in that.") - to_chat(src, "Don't be stupid with this or you will face the consequences.") + to_chat(src, span_notice("You are the mentor rat of [owner]!")) + to_chat(src, span_notice("Do not give [owner] any OOC information from your time as a ghost.")) + to_chat(src, span_notice("Your job is to answer [owner]'s question(s) and you are given this form to assist in that.")) + to_chat(src, span_notice("Don't be stupid with this or you will face the consequences.")) /mob/camera/imaginary_friend/mrat/Initialize(mapload, _trauma) . = ..() @@ -136,13 +136,13 @@ /datum/action/innate/mrat_leave/Activate() var/mob/camera/imaginary_friend/I = owner - to_chat(I, "You have ejected yourself from [I.owner].") - to_chat(I.owner, "Your mentor has left.") + to_chat(I, span_warning("You have ejected yourself from [I.owner].")) + to_chat(I.owner, span_warning("Your mentor has left.")) qdel(I.trauma) /mob/camera/imaginary_friend/mrat/pointed(atom/A as mob|obj|turf in view()) if(!..()) return FALSE to_chat(owner, "[src] points at [A].") - to_chat(src, "You point at [A].") + to_chat(src, span_notice("You point at [A].")) return TRUE diff --git a/code/datums/brain_damage/phobia.dm b/code/datums/brain_damage/phobia.dm index 034f2baaaf00..ba8dcb3dd379 100644 --- a/code/datums/brain_damage/phobia.dm +++ b/code/datums/brain_damage/phobia.dm @@ -2,8 +2,8 @@ name = "Phobia" desc = "Patient is unreasonably afraid of something." scan_desc = "phobia" - gain_text = "You start finding default values very unnerving..." - lose_text = "You no longer feel afraid of default values." + gain_text = span_warning("You start finding default values very unnerving...") + lose_text = span_notice("You no longer feel afraid of default values.") var/phobia_type var/next_check = 0 var/next_scare = 0 @@ -21,8 +21,8 @@ if(!phobia_type) phobia_type = pick(SStraumas.phobia_types) - gain_text = "You start finding [phobia_type] very unnerving..." - lose_text = "You no longer feel afraid of [phobia_type]." + gain_text = span_warning("You start finding [phobia_type] very unnerving...") + lose_text = span_notice("You no longer feel afraid of [phobia_type].") scan_desc += " of [phobia_type]" trigger_words = SStraumas.phobia_words[phobia_type] trigger_mobs = SStraumas.phobia_mobs[phobia_type] @@ -88,7 +88,7 @@ if(findtext(hearing_args[HEARING_RAW_MESSAGE], reg)) addtimer(CALLBACK(src, .proc/freak_out, null, word), 10) //to react AFTER the chat message - hearing_args[HEARING_MESSAGE] = reg.Replace(hearing_args[HEARING_MESSAGE], "$1") + hearing_args[HEARING_MESSAGE] = reg.Replace(hearing_args[HEARING_MESSAGE], span_phobia("$1")) break /datum/brain_trauma/mild/phobia/handle_speech(datum/source, list/speech_args) @@ -98,7 +98,7 @@ var/regex/reg = regex("(\\b|\\A)[REGEX_QUOTE(word)]'?s*(\\b|\\Z)", "i") if(findtext(speech_args[SPEECH_MESSAGE], reg)) - to_chat(owner, "You can't bring yourself to say the word \"[word]\"!") + to_chat(owner, span_warning("You can't bring yourself to say the word \"[span_phobia("[word]")]\"!")) speech_args[SPEECH_MESSAGE] = "" /datum/brain_trauma/mild/phobia/proc/freak_out(atom/reason, trigger_word) @@ -107,15 +107,15 @@ return var/message = pick("spooks you to the bone", "shakes you up", "terrifies you", "sends you into a panic", "sends chills down your spine") if(reason) - to_chat(owner, "Seeing [reason] [message]!") + to_chat(owner, span_userdanger("Seeing [reason] [message]!")) else if(trigger_word) - to_chat(owner, "Hearing \"[trigger_word]\" [message]!") + to_chat(owner, span_userdanger("Hearing \"[trigger_word]\" [message]!")) else - to_chat(owner, "Something [message]!") + to_chat(owner, span_userdanger("Something [message]!")) var/reaction = rand(1,4) switch(reaction) if(1) - to_chat(owner, "You are paralyzed with fear!") + to_chat(owner, span_warning("You are paralyzed with fear!")) owner.Stun(70) owner.Jitter(8) if(2) @@ -125,7 +125,7 @@ if(reason) owner.pointed(reason) if(3) - to_chat(owner, "You shut your eyes in terror!") + to_chat(owner, span_warning("You shut your eyes in terror!")) owner.Jitter(5) owner.blind_eyes(10) if(4) diff --git a/code/datums/brain_damage/severe.dm b/code/datums/brain_damage/severe.dm index 475b12b820ce..3fbd9b383fee 100644 --- a/code/datums/brain_damage/severe.dm +++ b/code/datums/brain_damage/severe.dm @@ -41,8 +41,8 @@ name = "Cerebral Blindness" desc = "Patient's brain is no longer connected to its eyes." scan_desc = "extensive damage to the brain's occipital lobe" - gain_text = "You can't see!" - lose_text = "Your vision returns." + gain_text = span_warning("You can't see!") + lose_text = span_notice("Your vision returns.") /datum/brain_trauma/severe/blindness/on_gain() owner.become_blind(TRAUMA_TRAIT) @@ -97,20 +97,18 @@ subject = "your left leg" paralysis_traits = list(TRAIT_PARALYSIS_L_LEG) - gain_text = "You can't feel [subject] anymore!" - lose_text = "You can feel [subject] again!" + gain_text = span_warning("You can't feel [subject] anymore!") + lose_text = span_notice("You can feel [subject] again!") /datum/brain_trauma/severe/paralysis/on_gain() ..() for(var/X in paralysis_traits) ADD_TRAIT(owner, X, "trauma_paralysis") - owner.update_disabled_bodyparts() /datum/brain_trauma/severe/paralysis/on_lose() ..() for(var/X in paralysis_traits) REMOVE_TRAIT(owner, X, "trauma_paralysis") - owner.update_disabled_bodyparts() /datum/brain_trauma/severe/paralysis/paraplegic random_gain = FALSE @@ -134,10 +132,10 @@ if(owner.drowsyness) sleep_chance += 3 if(prob(sleep_chance)) - to_chat(owner, "You fall asleep.") + to_chat(owner, span_warning("You fall asleep.")) owner.Sleeping(60) else if(!owner.drowsyness && prob(sleep_chance * 2)) - to_chat(owner, "You feel tired...") + to_chat(owner, span_warning("You feel tired...")) owner.drowsyness += 10 /datum/brain_trauma/severe/monophobia @@ -151,9 +149,9 @@ /datum/brain_trauma/severe/monophobia/on_gain() ..() if(check_alone()) - to_chat(owner, "You feel really lonely...") + to_chat(owner, span_warning("You feel really lonely...")) else - to_chat(owner, "You feel safe, as long as you have people around you.") + to_chat(owner, span_notice("You feel safe, as long as you have people around you.")) /datum/brain_trauma/severe/monophobia/on_life() ..() @@ -182,18 +180,18 @@ switch(rand(1,6)) if(1) if(!high_stress) - to_chat(owner, "You feel sick...") + to_chat(owner, span_warning("You feel sick...")) else - to_chat(owner, "You feel really sick at the thought of being alone!") + to_chat(owner, span_warning("You feel really sick at the thought of being alone!")) addtimer(CALLBACK(owner, /mob/living/carbon.proc/vomit, high_stress), 50) //blood vomit if high stress if(2) if(!high_stress) - to_chat(owner, "You can't stop shaking...") + to_chat(owner, span_warning("You can't stop shaking...")) owner.dizziness += 20 owner.confused += 20 owner.Jitter(20) else - to_chat(owner, "You feel weak and scared! If only you weren't alone...") + to_chat(owner, span_warning("You feel weak and scared! If only you weren't alone...")) owner.dizziness += 20 owner.confused += 20 owner.Jitter(20) @@ -201,22 +199,22 @@ if(3, 4) if(!high_stress) - to_chat(owner, "You feel really lonely...") + to_chat(owner, span_warning("You feel really lonely...")) else - to_chat(owner, "You're going mad with loneliness!") + to_chat(owner, span_warning("You're going mad with loneliness!")) owner.hallucination += 30 if(5) if(!high_stress) - to_chat(owner, "Your heart skips a beat.") + to_chat(owner, span_warning("Your heart skips a beat.")) owner.adjustOxyLoss(8) else if(prob(15) && ishuman(owner)) var/mob/living/carbon/human/H = owner H.set_heartattack(TRUE) - to_chat(H, "You feel a stabbing pain in your heart!") + to_chat(H, span_userdanger("You feel a stabbing pain in your heart!")) else - to_chat(owner, "You feel your heart lurching in your chest...") + to_chat(owner, span_userdanger("You feel your heart lurching in your chest...")) owner.adjustOxyLoss(8) /datum/brain_trauma/severe/discoordination diff --git a/code/datums/brain_damage/special.dm b/code/datums/brain_damage/special.dm index b2056200e123..28764207dacc 100644 --- a/code/datums/brain_damage/special.dm +++ b/code/datums/brain_damage/special.dm @@ -7,8 +7,8 @@ name = "Godwoken Syndrome" desc = "Patient occasionally and uncontrollably channels an eldritch god when speaking." scan_desc = "god delusion" - gain_text = "You feel a higher power inside your mind..." - lose_text = "The divine presence leaves your head, no longer interested." + gain_text = span_notice("You feel a higher power inside your mind...") + lose_text = span_warning("The divine presence leaves your head, no longer interested.") /datum/brain_trauma/special/godwoken/on_life() ..() @@ -51,8 +51,8 @@ name = "Bluespace Prophecy" desc = "Patient can sense the bob and weave of bluespace around them, showing them passageways no one else can see." scan_desc = "bluespace attunement" - gain_text = "You feel the bluespace pulsing around you..." - lose_text = "The faint pulsing of bluespace fades into silence." + gain_text = span_notice("You feel the bluespace pulsing around you...") + lose_text = span_warning("The faint pulsing of bluespace fades into silence.") var/next_portal = 0 /datum/brain_trauma/special/bluespace_prophet/on_life() @@ -114,27 +114,27 @@ "is pulled into an invisible vortex, vanishing from sight") var/slip_out_message = pick("silently fades in", "leaps out of thin air","appears", "walks out of an invisible doorway",\ "slides out of a fold in spacetime") - to_chat(user, "You try to align with the bluespace stream...") + to_chat(user, span_notice("You try to align with the bluespace stream...")) if(do_after(user, 20, target = src)) new /obj/effect/temp_visual/bluespace_fissure(get_turf(src)) new /obj/effect/temp_visual/bluespace_fissure(get_turf(linked_to)) user.forceMove(get_turf(linked_to)) - user.visible_message("[user] [slip_in_message].", null, null, null, user) - user.visible_message("[user] [slip_out_message].", "...and find your way to the other side.") + user.visible_message(span_warning("[user] [slip_in_message]."), null, null, null, user) + user.visible_message(span_warning("[user] [slip_out_message]."), span_notice("...and find your way to the other side.")) /datum/brain_trauma/special/psychotic_brawling name = "Violent Psychosis" desc = "Patient fights in unpredictable ways, ranging from helping his target to hitting them with brutal strength." scan_desc = "violent psychosis" - gain_text = "You feel unhinged..." - lose_text = "You feel more balanced." + gain_text = span_warning("You feel unhinged...") + lose_text = span_notice("You feel more balanced.") var/datum/martial_art/psychotic_brawling/psychotic_brawling /datum/brain_trauma/special/psychotic_brawling/on_gain() ..() psychotic_brawling = new(null) if(!psychotic_brawling.teach(owner, TRUE)) - to_chat(owner, "But your martial knowledge keeps you grounded.") + to_chat(owner, span_notice("But your martial knowledge keeps you grounded.")) qdel(src) /datum/brain_trauma/special/psychotic_brawling/on_lose() @@ -149,8 +149,8 @@ name = "Tenacity" desc = "Patient is psychologically unaffected by pain and injuries, and can remain standing far longer than a normal person." scan_desc = "traumatic neuropathy" - gain_text = "You suddenly stop feeling pain." - lose_text = "You realize you can feel pain again." + gain_text = span_warning("You suddenly stop feeling pain.") + lose_text = span_warning("You realize you can feel pain again.") /datum/brain_trauma/special/tenacity/on_gain() ADD_TRAIT(owner, TRAIT_NOSOFTCRIT, TRAUMA_TRAIT) @@ -168,8 +168,8 @@ name = "Functional Cerebral Necrosis" desc = "Patient's brain is stuck in a functional near-death state, causing occasional moments of lucid hallucinations, which are often interpreted as the voices of the dead." scan_desc = "chronic functional necrosis" - gain_text = "You feel dead inside." - lose_text = "You feel alive again." + gain_text = span_warning("You feel dead inside.") + lose_text = span_notice("You feel alive again.") var/active = FALSE /datum/brain_trauma/special/death_whispers/on_life() @@ -195,8 +195,8 @@ name = "Criminal" desc = "Patient seems to be a criminal." scan_desc = "criminal mind" - gain_text = "Justice is coming for you." - lose_text = "You were absolved for your crimes." + gain_text = span_warning("Justice is coming for you.") + lose_text = span_notice("You were absolved for your crimes.") random_gain = FALSE var/obj/effect/hallucination/simple/securitron/beepsky @@ -229,7 +229,7 @@ return if(get_dist(owner, beepsky) <= 1) owner.playsound_local(owner, 'sound/weapons/egloves.ogg', 50) - owner.visible_message("[owner]'s body jerks as if it was shocked.", "You feel the fist of the LAW.") + owner.visible_message(span_warning("[owner]'s body jerks as if it was shocked."), span_userdanger("You feel the fist of the LAW.")) owner.take_bodypart_damage(0,0,rand(40, 70)) QDEL_NULL(beepsky) if(prob(20) && get_dist(owner, beepsky) <= 8) @@ -252,7 +252,7 @@ if(prob(60)) forceMove(get_step_towards(src, victim)) if(prob(5)) - to_chat(victim, "[name] exclaims, \"Level 10 infraction alert!\"") + to_chat(victim, "[span_name("[name]")] exclaims, \"" + span_robotic("Level 10 infraction alert!") + "\"") /obj/effect/hallucination/simple/securitron/Destroy() STOP_PROCESSING(SSfastprocess,src) diff --git a/code/datums/brain_damage/split_personality.dm b/code/datums/brain_damage/split_personality.dm index 2ea66e8de8c2..2b723d502768 100644 --- a/code/datums/brain_damage/split_personality.dm +++ b/code/datums/brain_damage/split_personality.dm @@ -5,8 +5,8 @@ name = "Split Personality" desc = "Patient's brain is split into two personalities, which randomly switch control of the body." scan_desc = "complete lobe separation" - gain_text = "You feel like your mind was split in two." - lose_text = "You feel alone again." + gain_text = span_warning("You feel like your mind was split in two.") + lose_text = span_notice("You feel alone again.") var/current_controller = OWNER var/initialized = FALSE //to prevent personalities deleting themselves while we wait for ghosts var/mob/living/split_personality/stranger_backseat //there's two so they can swap without overwriting @@ -62,8 +62,8 @@ free_backseat = stranger_backseat log_game("[key_name(current_backseat)] assumed control of [key_name(owner)] due to [src]. (Original owner: [current_controller == OWNER ? owner.key : current_backseat.key])") - to_chat(owner, "You feel your control being taken away... your other personality is in charge now!") - to_chat(current_backseat, "You manage to take control of your body!") + to_chat(owner, span_userdanger("You feel your control being taken away... your other personality is in charge now!")) + to_chat(current_backseat, span_userdanger("You manage to take control of your body!")) //Body to backseat @@ -135,11 +135,11 @@ /mob/living/split_personality/Login() ..() - to_chat(src, "As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.") - to_chat(src, "Do not commit suicide or put the body in a deadly position. Behave like you care about it as much as the owner.") + to_chat(src, span_notice("As a split personality, you cannot do anything but observe. However, you will eventually gain control of your body, switching places with the current personality.")) + to_chat(src, span_warning("Do not commit suicide or put the body in a deadly position. Behave like you care about it as much as the owner.")) /mob/living/split_personality/say(message, bubble_type, var/list/spans = list(), sanitize = TRUE, datum/language/language = null, ignore_spam = FALSE, forced = null) - to_chat(src, "You cannot speak, your other self is controlling your body!") + to_chat(src, span_warning("You cannot speak, your other self is controlling your body!")) return FALSE /mob/living/split_personality/emote(act, m_type = null, message = null, intentional = FALSE) @@ -152,7 +152,7 @@ desc = "Patient's brain is split into two personalities, which randomly switch control of the body." scan_desc = "complete lobe separation" gain_text = "" - lose_text = "You are free of your brainwashing." + lose_text = span_notice("You are free of your brainwashing.") can_gain = FALSE var/codeword var/objective @@ -196,7 +196,7 @@ return var/message = hearing_args[HEARING_MESSAGE] if(findtext(message, codeword)) - hearing_args[HEARING_MESSAGE] = replacetext(message, codeword, "[codeword]") + hearing_args[HEARING_MESSAGE] = replacetext(message, codeword, span_warning("[codeword]")) addtimer(CALLBACK(src, /datum/brain_trauma/severe/split_personality.proc/switch_personalities), 10) /datum/brain_trauma/severe/split_personality/brainwashing/handle_speech(datum/source, list/speech_args) @@ -211,10 +211,10 @@ /mob/living/split_personality/traitor/Login() ..() - to_chat(src, "As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality.") - to_chat(src, "Your activation codeword is: [codeword]") + to_chat(src, span_notice("As a brainwashed personality, you cannot do anything yet but observe. However, you may gain control of your body if you hear the special codeword, switching places with the current personality.")) + to_chat(src, span_notice("Your activation codeword is: [codeword]")) if(objective) - to_chat(src, "Your master left you an objective: [objective]. Follow it at all costs when in control.") + to_chat(src, span_notice("Your master left you an objective: [objective]. Follow it at all costs when in control.")) #undef OWNER #undef STRANGER diff --git a/code/datums/browser.dm b/code/datums/browser.dm index 8f73eb365804..437141855a31 100644 --- a/code/datums/browser.dm +++ b/code/datums/browser.dm @@ -95,7 +95,7 @@ /datum/browser/proc/open(use_onclose = TRUE) if(isnull(window_id)) //null check because this can potentially nuke goonchat WARNING("Browser [title] tried to open with a null ID") - to_chat(user, "The [title] browser you tried to open failed a sanity check! Please report this on github!") + to_chat(user, span_userdanger("The [title] browser you tried to open failed a sanity check! Please report this on github!")) return var/window_size = "" if (width && height) diff --git a/code/datums/components/archaeology.dm b/code/datums/components/archaeology.dm index b5740650e9f0..42ca87c7f7e9 100644 --- a/code/datums/components/archaeology.dm +++ b/code/datums/components/archaeology.dm @@ -27,17 +27,17 @@ /datum/component/archaeology/proc/Dig(datum/source, obj/item/I, mob/living/user) if(dug) - to_chat(user, "Looks like someone has dug here already.") + to_chat(user, span_notice("Looks like someone has dug here already.")) return if(!isturf(user.loc)) return if(I.tool_behaviour == TOOL_SHOVEL || I.tool_behaviour == TOOL_MINING) - to_chat(user, "You start digging...") + to_chat(user, span_notice("You start digging...")) if(I.use_tool(parent, user, 40, volume=50)) - to_chat(user, "You dig a hole.") + to_chat(user, span_notice("You dig a hole.")) gets_dug() dug = TRUE SSblackbox.record_feedback("tally", "pick_used_mining", 1, I.type) diff --git a/code/datums/components/armor_plate.dm b/code/datums/components/armor_plate.dm index 6f1ba6a8392e..4f65d379f331 100644 --- a/code/datums/components/armor_plate.dm +++ b/code/datums/components/armor_plate.dm @@ -34,29 +34,29 @@ if(ismecha(parent)) if(amount) if(amount < maxamount) - examine_list += "Its armor is enhanced with [amount] [upgrade_name]." + examine_list += span_notice("Its armor is enhanced with [amount] [upgrade_name].") else - examine_list += "It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter." + examine_list += span_notice("It's wearing a fearsome carapace entirely composed of [upgrade_name] - its pilot must be an experienced monster hunter.") else - examine_list += "It has attachment points for strapping monster hide on for added protection." + examine_list += span_notice("It has attachment points for strapping monster hide on for added protection.") else if(amount) - examine_list += "It has been strengthened with [amount]/[maxamount] [upgrade_name]." + examine_list += span_notice("It has been strengthened with [amount]/[maxamount] [upgrade_name].") else - examine_list += "It can be strengthened with up to [maxamount] [upgrade_name]." + examine_list += span_notice("It can be strengthened with up to [maxamount] [upgrade_name].") /datum/component/armor_plate/proc/applyplate(datum/source, obj/item/I, mob/user, params) if(!istype(I,upgrade_item)) return if(amount >= maxamount) - to_chat(user, "You can't improve [parent] any further!") + to_chat(user, span_warning("You can't improve [parent] any further!")) return if(istype(I,/obj/item/stack)) I.use(1) else if(length(I.contents)) - to_chat(user, "[I] cannot be used for armoring while there's something inside!") + to_chat(user, span_warning("[I] cannot be used for armoring while there's something inside!")) return qdel(I) @@ -67,9 +67,9 @@ if(ismecha(O)) var/obj/mecha/R = O R.update_icon() - to_chat(user, "You strengthen [R], improving its resistance against melee, bullet and laser damage.") + to_chat(user, span_info("You strengthen [R], improving its resistance against melee, bullet and laser damage.")) else - to_chat(user, "You strengthen [O], improving its resistance against melee attacks.") + to_chat(user, span_info("You strengthen [O], improving its resistance against melee attacks.")) /datum/component/armor_plate/proc/dropplates(datum/source, force) diff --git a/code/datums/components/art.dm b/code/datums/components/art.dm index 2a72218aa22c..7ca4b80ceb3a 100644 --- a/code/datums/components/art.dm +++ b/code/datums/components/art.dm @@ -18,7 +18,7 @@ /datum/component/art/proc/apply_moodlet(mob/M, impress) M.visible_message("[M] stops to admire [parent].", \ - "You take in [parent], admiring the fine craftsmanship.") + span_notice("You take in [parent], admiring the fine craftsmanship.")) switch(impress) if(GREAT_ART to INFINITY) SEND_SIGNAL(M, COMSIG_ADD_MOOD_EVENT, "artgreat", /datum/mood_event/artgreat) diff --git a/code/datums/components/butchering.dm b/code/datums/components/butchering.dm index 372fa8e283e6..587e986da296 100644 --- a/code/datums/components/butchering.dm +++ b/code/datums/components/butchering.dm @@ -27,10 +27,10 @@ for(var/_i in 1 to amount) if(!prob(final_effectiveness)) if(butcher) - to_chat(butcher, "You fail to harvest some of the [initial(bones.name)] from [meat].") + to_chat(butcher, span_warning("You fail to harvest some of the [initial(bones.name)] from [meat].")) else if(prob(bonus_chance)) if(butcher) - to_chat(butcher, "You harvest some extra [initial(bones.name)] from [meat]!") + to_chat(butcher, span_info("You harvest some extra [initial(bones.name)] from [meat]!")) for(var/i in 1 to 2) new bones (T) else @@ -43,7 +43,7 @@ new sinew (T) meat.guaranteed_butcher_results.Remove(sinew) if(butcher) - meat.visible_message("[butcher] butchers [meat].") + meat.visible_message(span_notice("[butcher] butchers [meat].")) ButcherEffects(meat) meat.harvest(butcher) meat.gib(FALSE, FALSE, TRUE) diff --git a/code/datums/components/caltrop.dm b/code/datums/components/caltrop.dm index d6804564cb78..7121a0262d02 100644 --- a/code/datums/components/caltrop.dm +++ b/code/datums/components/caltrop.dm @@ -48,15 +48,15 @@ var/damage = rand(min_damage, max_damage) if(HAS_TRAIT(H, TRAIT_LIGHT_STEP)) damage *= 0.75 - H.apply_damage(damage, BRUTE, picked_def_zone) + H.apply_damage(damage, BRUTE, picked_def_zone, wound_bonus = CANT_WOUND) if(cooldown < world.time - 10) //cooldown to avoid message spam. if(!H.incapacitated(ignore_restraints = TRUE)) - H.visible_message("[H] steps on [A].", \ - "You step on [A]!") + H.visible_message(span_danger("[H] steps on [A]."), \ + span_userdanger("You step on [A]!")) else - H.visible_message("[H] slides on [A]!", \ - "You slide on [A]!") + H.visible_message(span_danger("[H] slides on [A]!"), \ + span_userdanger("You slide on [A]!")) cooldown = world.time H.Paralyze(60) diff --git a/code/datums/components/chasm.dm b/code/datums/components/chasm.dm index c38e9d3b5aec..e124f491e4ce 100644 --- a/code/datums/components/chasm.dm +++ b/code/datums/components/chasm.dm @@ -82,7 +82,7 @@ if(istype(H.belt, /obj/item/wormhole_jaunter)) var/obj/item/wormhole_jaunter/J = H.belt //To freak out any bystanders - H.visible_message("[H] falls into [parent]!") + H.visible_message(span_boldwarning("[H] falls into [parent]!")) J.chasm_react(H) return FALSE return TRUE @@ -96,8 +96,8 @@ if(T) // send to the turf below - AM.visible_message("[AM] falls into [parent]!", "[fall_message]") - T.visible_message("[AM] falls from above!") + AM.visible_message(span_boldwarning("[AM] falls into [parent]!"), span_userdanger("[fall_message]")) + T.visible_message(span_boldwarning("[AM] falls from above!")) AM.forceMove(T) if(isliving(AM)) var/mob/living/L = AM @@ -107,7 +107,7 @@ else // send to oblivion - AM.visible_message("[AM] falls into [parent]!", "[oblivion_message]") + AM.visible_message(span_boldwarning("[AM] falls into [parent]!"), span_userdanger("[oblivion_message]")) if (isliving(AM)) var/mob/living/L = AM L.notransform = TRUE @@ -137,7 +137,7 @@ qdel(AM) if(AM && !QDELETED(AM)) //It's indestructible var/atom/parent = src.parent - parent.visible_message("[parent] spits out [AM]!") + parent.visible_message(span_boldwarning("[parent] spits out [AM]!")) AM.alpha = oldalpha AM.color = oldcolor AM.transform = oldtransform diff --git a/code/datums/components/cleaning.dm b/code/datums/components/cleaning.dm index 256d4385421e..9693e4ebfd3f 100644 --- a/code/datums/components/cleaning.dm +++ b/code/datums/components/cleaning.dm @@ -25,4 +25,4 @@ if(!(cleaned_human.mobility_flags & MOBILITY_STAND)) cleaned_human.wash(CLEAN_WASH) cleaned_human.regenerate_icons() - to_chat(cleaned_human, "[AM] cleans your face!") + to_chat(cleaned_human, span_danger("[AM] cleans your face!")) diff --git a/code/datums/components/crafting/crafting.dm b/code/datums/components/crafting/crafting.dm index b54d2d7bc2cd..f8b148232aa0 100644 --- a/code/datums/components/crafting/crafting.dm +++ b/code/datums/components/crafting/crafting.dm @@ -378,9 +378,9 @@ ui_interact(usr) var/fail_msg = construct_item(usr, TR) if(!fail_msg) - to_chat(usr, "[TR.name] constructed.") + to_chat(usr, span_notice("[TR.name] constructed.")) else - to_chat(usr, "Construction failed[fail_msg]") + to_chat(usr, span_warning("Construction failed[fail_msg]")) busy = FALSE if("toggle_recipes") display_craftable_only = !display_craftable_only diff --git a/code/datums/components/fantasy/_fantasy.dm b/code/datums/components/fantasy/_fantasy.dm index 383dd7c10da0..46e8516d1e31 100644 --- a/code/datums/components/fantasy/_fantasy.dm +++ b/code/datums/components/fantasy/_fantasy.dm @@ -92,6 +92,8 @@ master.force = max(0, master.force + quality) master.throwforce = max(0, master.throwforce + quality) master.armor = master.armor.modifyAllRatings(quality) + master.wound_bonus += quality + master.bare_wound_bonus += quality var/newName = originalName for(var/i in affixes) @@ -103,7 +105,7 @@ if(canFail && prob((quality - 9)*10)) var/turf/place = get_turf(parent) - place.visible_message("[parent] violently glows blue for a while, then evaporates.") + place.visible_message(span_danger("[parent] [span_inathneq_large("violently glows blue")] for a while, then evaporates.")) master.burn() return else if(announce) @@ -123,6 +125,8 @@ master.force = max(0, master.force - quality) master.throwforce = max(0, master.throwforce - quality) master.armor = master.armor.modifyAllRatings(-quality) + master.wound_bonus -= quality + master.bare_wound_bonus -= quality master.name = originalName @@ -132,9 +136,9 @@ var/effect_description if(quality >= 0) span = "" - effect_description = "shimmering golden glow" + effect_description = "[span_heavy_brass("shimmering golden glow")]" else span = "" - effect_description = "mottled black glow" + effect_description = "[span_umbra_emphasis("mottled black glow")]" - location.visible_message("[span][originalName] is covered by a [effect_description] and then transforms into [parent]!") \ No newline at end of file + location.visible_message("[span][originalName] is covered by a [effect_description] and then transforms into [parent]!") diff --git a/code/datums/components/gunpoint.dm b/code/datums/components/gunpoint.dm index 279d7635f8a8..48504791271f 100644 --- a/code/datums/components/gunpoint.dm +++ b/code/datums/components/gunpoint.dm @@ -1,8 +1,16 @@ -#define GUNPOINT_SHOOTER_STRAY_RANGE 3 -#define GUNPOINT_DELAY_STAGE_2 25 -#define GUNPOINT_DELAY_STAGE_3 85 // cumulative with past stages, so 100 deciseconds +/// How many tiles around the target the shooter can roam without losing their shot +#define GUNPOINT_SHOOTER_STRAY_RANGE 2 +/// How long it takes from the gunpoint is initiated to reach stage 2 +#define GUNPOINT_DELAY_STAGE_2 2.5 SECONDS +/// How long it takes from stage 2 starting to move up to stage 3 +#define GUNPOINT_DELAY_STAGE_3 7.5 SECONDS +/// If the projectile doesn't have a wound_bonus of CANT_WOUND, we add (this * the stage mult) to their wound_bonus and bare_wound_bonus upon triggering +#define GUNPOINT_BASE_WOUND_BONUS 5 +/// How much the damage and wound bonus mod is multiplied when you're on stage 1 #define GUNPOINT_MULT_STAGE_1 1 +/// As above, for stage 2 #define GUNPOINT_MULT_STAGE_2 2 +/// As above, for stage 3 #define GUNPOINT_MULT_STAGE_3 2.5 @@ -29,13 +37,13 @@ var/mob/living/shooter = parent target = targ weapon = wep + RegisterSignal(targ, COMSIG_MOVABLE_MOVED, .proc/check_movement, FALSE) //except this one RegisterSignal(targ, list(COMSIG_MOB_ATTACK_HAND, COMSIG_MOB_FIRED_GUN, COMSIG_MOB_THROW, COMSIG_MOB_ITEM_ATTACK), .proc/trigger_reaction, TRUE) //any actions by the hostage will trigger the shot no exceptions - RegisterSignal(targ, COMSIG_MOVABLE_MOVED, .proc/trigger_reaction) //except this one RegisterSignal(weapon, list(COMSIG_ITEM_DROPPED, COMSIG_ITEM_EQUIPPED), .proc/cancel) - shooter.visible_message("[shooter] aims [weapon] point blank at [target]!", \ - "You aim [weapon] point blank at [target]!", target) - to_chat(target, "[shooter] aims [weapon] point blank at you!") + shooter.visible_message(span_danger("[shooter] aims [weapon] point blank at [target]!"), \ + span_danger("You aim [weapon] point blank at [target]!"), target) + to_chat(target, span_userdanger("[shooter] aims [weapon] point blank at you!")) if(!target.has_status_effect(STATUS_EFFECT_NOTSCARED)) target.Immobilize(10) //short immobilize to let them know they're getting shot at target.apply_status_effect(STATUS_EFFECT_NOTSCARED)//this can only trigger once per minute so you can't use it to meme people a bunch in a fight @@ -64,38 +72,37 @@ UnregisterSignal(parent, COMSIG_HUMAN_DISARM_HIT) UnregisterSignal(parent, list(COMSIG_MOVABLE_BUMP, COMSIG_MOB_THROW, COMSIG_MOB_FIRED_GUN, COMSIG_MOB_TABLING)) -// if you're gonna try to break away from a holdup, better to do it right away +///Update the damage multiplier for whatever stage we're entering into /datum/component/gunpoint/proc/update_stage(new_stage) stage = new_stage if(stage == 2) - to_chat(parent, "You steady [weapon] on [target].") - to_chat(target, "[parent] has steadied [weapon] on you!") + to_chat(parent, span_danger("You steady [weapon] on [target].")) + to_chat(target, span_userdanger("[parent] has steadied [weapon] on you!")) damage_mult = GUNPOINT_MULT_STAGE_2 addtimer(CALLBACK(src, .proc/update_stage, 3), GUNPOINT_DELAY_STAGE_3) else if(stage == 3) - to_chat(parent, "You have fully steadied [weapon] on [target].") - to_chat(target, "[parent] has fully steadied [weapon] on you!") + to_chat(parent, span_danger("You have fully steadied [weapon] on [target].")) + to_chat(target, span_userdanger("[parent] has fully steadied [weapon] on you!")) damage_mult = GUNPOINT_MULT_STAGE_3 /datum/component/gunpoint/proc/check_deescalate() if(!can_see(parent, target, GUNPOINT_SHOOTER_STRAY_RANGE - 1)) cancel() -/datum/component/gunpoint/proc/trigger_reaction(var/forced) +/datum/component/gunpoint/proc/trigger_reaction() var/mob/living/shooter = parent - - if(!forced && shooter.pulling == target) //target won't get shot if they're being moved by the shooter - return if(disrupted) return if(point_of_no_return) return point_of_no_return = TRUE + shooter.remove_status_effect(STATUS_EFFECT_HOLDUP) // try doing these before the trigger gets pulled since the target (or shooter even) may not exist after pulling the trigger, dig? + target.remove_status_effect(STATUS_EFFECT_HELDUP) if(!weapon.can_shoot() || !weapon.can_trigger_gun(shooter) || (weapon.weapon_weight == WEAPON_HEAVY && shooter.get_inactive_held_item())) - shooter.visible_message("[shooter] fumbles [weapon]!", \ - "You fumble [weapon] and fail to fire at [target]!", target) - to_chat(target, "[shooter] fumbles [weapon] and fails to fire at you!") + shooter.visible_message(span_danger("[shooter] fumbles [weapon]!"), \ + span_danger("You fumble [weapon] and fail to fire at [target]!"), target) + to_chat(target, span_userdanger("[shooter] fumbles [weapon] and fails to fire at you!")) qdel(src) return if(weapon.check_botched(shooter)) @@ -103,28 +110,45 @@ if(weapon.chambered && weapon.chambered.BB) weapon.chambered.BB.damage *= damage_mult weapon.chambered.BB.stamina *= damage_mult - - weapon.process_fire(target, shooter) + if(weapon.chambered.BB.wound_bonus != CANT_WOUND) + weapon.chambered.BB.wound_bonus += damage_mult * GUNPOINT_BASE_WOUND_BONUS + weapon.chambered.BB.bare_wound_bonus += damage_mult * GUNPOINT_BASE_WOUND_BONUS + + var/fired = weapon.process_fire(target, shooter) + if(!fired && weapon.chambered?.BB) + weapon.chambered.BB.damage /= damage_mult + if(weapon.chambered.BB.wound_bonus != CANT_WOUND) + weapon.chambered.BB.wound_bonus -= damage_mult * GUNPOINT_BASE_WOUND_BONUS + weapon.chambered.BB.bare_wound_bonus -= damage_mult * GUNPOINT_BASE_WOUND_BONUS qdel(src) +///called if the shooter does anything that would cause the target to move, preventing a charged shot from being fired for a short duration /datum/component/gunpoint/proc/noshooted() if(!disrupted) disrupted = TRUE addtimer(CALLBACK(src, .proc/reshooted), 5) - to_chat(parent, "You lose your aim for a second, try not to bump into things or throw stuff.") + to_chat(parent, span_boldwarning("You lose your aim for a second, try not to bump into things or throw stuff.")) /datum/component/gunpoint/proc/reshooted() disrupted = FALSE /datum/component/gunpoint/proc/cancel() var/mob/living/shooter = parent - shooter.visible_message("[shooter] breaks [shooter.p_their()] aim on [target]!", \ - "You are no longer aiming [weapon] at [target].", target) - to_chat(target, "[shooter] breaks [shooter.p_their()] aim on you!") + shooter.visible_message(span_danger("[shooter] breaks [shooter.p_their()] aim on [target]!"), \ + span_danger("You are no longer aiming [weapon] at [target]."), target) + to_chat(target, span_userdanger("[shooter] breaks [shooter.p_their()] aim on you!")) qdel(src) -/datum/component/gunpoint/proc/flinch(damage, damagetype, def_zone) +/datum/component/gunpoint/proc/check_movement() var/mob/living/shooter = parent + if(!(shooter.pulling == target)) //target won't get shot if they're being moved by the shooter + trigger_reaction() + +///If the shooter is hit by an attack, they have a 50% chance to flinch and fire. If it hit the arm holding the trigger, it's an 80% chance to fire instead +/datum/component/gunpoint/proc/flinch(attacker, damage, damagetype, def_zone) + var/mob/living/shooter = parent + if(attacker == shooter) + return // somehow this wasn't checked for months but no one tried punching themselves to initiate the shot, amazing var/flinch_chance = 50 var/gun_hand = LEFT_HANDS @@ -136,9 +160,9 @@ flinch_chance = 80 if(prob(flinch_chance)) - shooter.visible_message("[shooter] flinches!", \ - "You flinch!") - trigger_reaction(TRUE) //flinching will always result in firing at the target + shooter.visible_message(span_danger("[shooter] flinches!"), \ + span_danger("You flinch!")) + trigger_reaction() //flinching will always result in firing at the target /datum/component/gunpoint/proc/flinch_disarm(attacker,zone_targeted) var/mob/living/shooter = parent @@ -153,13 +177,14 @@ flinch_chance = 80 if(prob(flinch_chance)) - shooter.visible_message("[shooter] flinches!", \ - "You flinch!") + shooter.visible_message(span_danger("[shooter] flinches!"), \ + span_danger("You flinch!")) trigger_reaction(TRUE) //flinching will always result in firing at the target #undef GUNPOINT_SHOOTER_STRAY_RANGE #undef GUNPOINT_DELAY_STAGE_2 #undef GUNPOINT_DELAY_STAGE_3 +#undef GUNPOINT_BASE_WOUND_BONUS #undef GUNPOINT_MULT_STAGE_1 #undef GUNPOINT_MULT_STAGE_2 #undef GUNPOINT_MULT_STAGE_3 diff --git a/code/datums/components/heirloom.dm b/code/datums/components/heirloom.dm index 72b28b125dd6..fcc56ab05100 100644 --- a/code/datums/components/heirloom.dm +++ b/code/datums/components/heirloom.dm @@ -13,10 +13,10 @@ /datum/component/heirloom/proc/examine(datum/source, mob/user, list/examine_list) if(user.mind == owner) - examine_list += "It is your precious [family_name] family heirloom. Keep it safe!" + examine_list += span_notice("It is your precious [family_name] family heirloom. Keep it safe!") else if(isobserver(user)) - examine_list += "It is the [family_name] family heirloom, belonging to [owner]." + examine_list += span_notice("It is the [family_name] family heirloom, belonging to [owner].") else var/datum/antagonist/obsessed/creeper = user.mind.has_antag_datum(/datum/antagonist/obsessed) if(creeper && creeper.trauma.obsession == owner) - examine_list += "This must be [owner]'s family heirloom! It smells just like them..." + examine_list += span_nicegreen("This must be [owner]'s family heirloom! It smells just like them...") diff --git a/code/datums/components/jousting.dm b/code/datums/components/jousting.dm index ae96fcb4d0b0..ac725967be87 100644 --- a/code/datums/components/jousting.dm +++ b/code/datums/components/jousting.dm @@ -56,7 +56,7 @@ target.buckled.unbuckle_mob(target) target.Paralyze(knockdown_time) if(length(msg)) - user.visible_message("[msg]!") + user.visible_message(span_danger("[msg]!")) /datum/component/jousting/proc/mob_move(datum/source, newloc, dir) if(!current_holder || (requires_mount && ((requires_mob_riding && !ismob(current_holder.buckled)) || (!current_holder.buckled)))) diff --git a/code/datums/components/knockoff.dm b/code/datums/components/knockoff.dm index a36169e6dfd3..699db4a7bdef 100644 --- a/code/datums/components/knockoff.dm +++ b/code/datums/components/knockoff.dm @@ -30,7 +30,7 @@ if(!wearer.dropItemToGround(I)) return - wearer.visible_message("[attacker] knocks off [wearer]'s [I.name]!","[attacker] knocks off your [I.name]!") + wearer.visible_message(span_warning("[attacker] knocks off [wearer]'s [I.name]!"),span_userdanger("[attacker] knocks off your [I.name]!")) /datum/component/knockoff/proc/OnEquipped(datum/source, mob/living/carbon/human/H,slot) if(!istype(H)) diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index f4f07d2a5be0..32333a428fa5 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -51,7 +51,7 @@ var/datum/material/M = I var/amt = materials[I] if(amt) - to_chat(user, "It has [amt] units of [lowertext(M.name)] stored.") + to_chat(user, span_notice("It has [amt] units of [lowertext(M.name)] stored.")) /// Proc that allows players to fill the parent with mats /datum/component/material_container/proc/OnAttackBy(datum/source, obj/item/I, mob/living/user) @@ -63,7 +63,7 @@ if(I.item_flags & ABSTRACT) return if((I.flags_1 & HOLOGRAM_1) || (I.item_flags & NO_MAT_REDEMPTION) || (tc && !is_type_in_typecache(I, tc))) - to_chat(user, "[parent] won't accept [I]!") + to_chat(user, span_warning("[parent] won't accept [I]!")) return . = COMPONENT_NO_AFTERATTACK var/datum/callback/pc = precondition @@ -71,10 +71,10 @@ return var/material_amount = get_item_material_amount(I) if(!material_amount) - to_chat(user, "[I] does not contain sufficient amounts of metal or glass to be accepted by [parent].") + to_chat(user, span_warning("[I] does not contain sufficient amounts of metal or glass to be accepted by [parent].")) return if(!has_space(material_amount)) - to_chat(user, "[parent] is full. Please remove metal or glass from [parent] in order to insert more.") + to_chat(user, span_warning("[parent] is full. Please remove metal or glass from [parent] in order to insert more.")) return user_insert(I, user) @@ -92,18 +92,18 @@ if(QDELETED(I) || QDELETED(user) || QDELETED(src) || parent != current_parent || user.physical_can_use_topic(current_parent) < UI_INTERACTIVE || user.get_active_held_item() != active_held) return if(!user.temporarilyRemoveItemFromInventory(I)) - to_chat(user, "[I] is stuck to you and cannot be placed into [parent].") + to_chat(user, span_warning("[I] is stuck to you and cannot be placed into [parent].")) return var/inserted = insert_item(I, stack_amt = requested_amount) if(inserted) if(istype(I, /obj/item/stack)) var/obj/item/stack/S = I - to_chat(user, "You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].") + to_chat(user, span_notice("You insert [inserted] [S.singular_name][inserted>1 ? "s" : ""] into [parent].")) if(!QDELETED(I) && I == active_held && !user.put_in_hands(I)) stack_trace("Warning: User could not put object back in hand during material container insertion, line [__LINE__]! This can lead to issues.") I.forceMove(user.drop_location()) else - to_chat(user, "You insert a material total of [inserted] into [parent].") + to_chat(user, span_notice("You insert a material total of [inserted] into [parent].")) qdel(I) if(after_insert) after_insert.Invoke(I.type, last_inserted_id, inserted) diff --git a/code/datums/components/mood.dm b/code/datums/components/mood.dm index 240d651aab7a..949f8943690d 100644 --- a/code/datums/components/mood.dm +++ b/code/datums/components/mood.dm @@ -36,7 +36,7 @@ /datum/component/mood/proc/print_mood(mob/user) var/msg = "*---------*\nYour current mood\n" - msg += "My mental status: " //Long term + msg += span_notice("My mental status: ") //Long term switch(sanity) if(SANITY_GREAT to INFINITY) msg += "My mind feels like a temple!\n" @@ -45,13 +45,13 @@ if(SANITY_DISTURBED to SANITY_NEUTRAL) msg += "I have felt quite decent lately.\n" if(SANITY_UNSTABLE to SANITY_DISTURBED) - msg += "I'm feeling a little bit unhinged...\n" + msg += "[span_warning("I'm feeling a little bit unhinged...")]\n" if(SANITY_CRAZY to SANITY_UNSTABLE) - msg += "I'm freaking out!!\n" + msg += "[span_boldwarning("I'm freaking out!!")]\n" if(SANITY_INSANE to SANITY_CRAZY) - msg += "AHAHAHAHAHAHAHAHAHAH!!\n" + msg += "[span_boldwarning("AHAHAHAHAHAHAHAHAHAH!!")]\n" - msg += "My current mood: " //Short term + msg += span_notice("My current mood: ") //Short term switch(mood_level) if(1) msg += "I wish I was dead!\n" @@ -72,7 +72,7 @@ if(9) msg += "I love life!\n" - msg += "Moodlets:\n"//All moodlets + msg += span_notice("Moodlets:\n")//All moodlets if(mood_events.len) for(var/i in mood_events) var/datum/mood_event/event = mood_events[i] diff --git a/code/datums/components/nanites.dm b/code/datums/components/nanites.dm index 458753d44c07..6d8611e07713 100644 --- a/code/datums/components/nanites.dm +++ b/code/datums/components/nanites.dm @@ -269,23 +269,23 @@ /datum/component/nanites/proc/nanite_scan(datum/source, mob/user, full_scan) if(!full_scan) if(!stealth) - to_chat(user, "Nanites Detected") - to_chat(user, "Saturation: [nanite_volume]/[max_nanites]") + to_chat(user, span_notice("Nanites Detected")) + to_chat(user, span_notice("Saturation: [nanite_volume]/[max_nanites]")) return TRUE else - to_chat(user, "NANITES DETECTED") - to_chat(user, "================") - to_chat(user, "Saturation: [nanite_volume]/[max_nanites]") - to_chat(user, "Safety Threshold: [safety_threshold]") - to_chat(user, "Cloud ID: [cloud_id ? cloud_id : "Disabled"]") - to_chat(user, "================") - to_chat(user, "Program List:") + to_chat(user, span_info("NANITES DETECTED")) + to_chat(user, span_info("================")) + to_chat(user, span_info("Saturation: [nanite_volume]/[max_nanites]")) + to_chat(user, span_info("Safety Threshold: [safety_threshold]")) + to_chat(user, span_info("Cloud ID: [cloud_id ? cloud_id : "Disabled"]")) + to_chat(user, span_info("================")) + to_chat(user, span_info("Program List:")) if(stealth) - to_chat(user, "%#$ENCRYPTED&^@") + to_chat(user, span_alert("%#$ENCRYPTED&^@")) else for(var/X in programs) var/datum/nanite_program/NP = X - to_chat(user, "[NP.name] | [NP.activated ? "Active" : "Inactive"]") + to_chat(user, span_info("[NP.name] | [NP.activated ? "Active" : "Inactive"]")) return TRUE /datum/component/nanites/proc/nanite_ui_data(datum/source, list/data, scan_level) diff --git a/code/datums/components/orbiter.dm b/code/datums/components/orbiter.dm index 9ba5f5fa29ad..0ddcfd94b9d0 100644 --- a/code/datums/components/orbiter.dm +++ b/code/datums/components/orbiter.dm @@ -90,7 +90,7 @@ //we stack the orbits up client side, so we can assign this back to normal server side without it breaking the orbit orbiter.forceMove(get_turf(parent)) - to_chat(orbiter, "Now orbiting [parent].") + to_chat(orbiter, span_notice("Now orbiting [parent].")) /datum/component/orbiter/proc/end_orbit(atom/movable/orbiter, refreshing=FALSE) if(!orbiters[orbiter]) diff --git a/code/datums/components/paintable.dm b/code/datums/components/paintable.dm index 756c42aa9dab..eb284f004638 100644 --- a/code/datums/components/paintable.dm +++ b/code/datums/components/paintable.dm @@ -17,7 +17,7 @@ return . = COMPONENT_NO_AFTERATTACK if(spraycan.is_capped) - to_chat(user, "Take the cap off first!") + to_chat(user, span_warning("Take the cap off first!")) return RemoveCurrentCoat() if(spraycan.use_charges(user, 2)) @@ -26,4 +26,4 @@ var/atom/A = parent A.add_atom_colour(colour, FIXED_COLOUR_PRIORITY) playsound(spraycan, 'sound/effects/spray.ogg', 5, 1, 5) - to_chat(user, "You spray [spraycan] on [A], painting it.") + to_chat(user, span_notice("You spray [spraycan] on [A], painting it.")) diff --git a/code/datums/components/religious_tool.dm b/code/datums/components/religious_tool.dm index d55e83896b95..2483fa1c0ed5 100644 --- a/code/datums/components/religious_tool.dm +++ b/code/datums/components/religious_tool.dm @@ -138,10 +138,10 @@ return if(!easy_access_sect) if(operation_flags & RELIGION_TOOL_SECTSELECT) - examine_list += "This looks like it can be used to select a sect." + examine_list += span_notice("This looks like it can be used to select a sect.") return - examine_list += "The sect currently has [round(easy_access_sect.favor)] favor with [GLOB.deity].[(operation_flags & RELIGION_TOOL_SACRIFICE) ? "Desired items can be used on this to increase favor." : ""]" + examine_list += span_notice("The sect currently has [round(easy_access_sect.favor)] favor with [GLOB.deity].[(operation_flags & RELIGION_TOOL_SACRIFICE) ? "Desired items can be used on this to increase favor." : ""]") if(!easy_access_sect.rites_list) return //if we dont have rites it doesnt do us much good if the object can be used to invoke them! if(operation_flags & RELIGION_TOOL_INVOKE) diff --git a/code/datums/components/remote_materials.dm b/code/datums/components/remote_materials.dm index 08d452017412..5eea6e8e5f59 100644 --- a/code/datums/components/remote_materials.dm +++ b/code/datums/components/remote_materials.dm @@ -80,7 +80,7 @@ handles linking back and forth. var/obj/item/multitool/M = I if (!QDELETED(M.buffer) && istype(M.buffer, /obj/machinery/ore_silo)) if (silo == M.buffer) - to_chat(user, "[parent] is already connected to [silo].") + to_chat(user, span_notice("[parent] is already connected to [silo].")) return COMPONENT_NO_AFTERATTACK if (silo) silo.connected -= src @@ -92,7 +92,7 @@ handles linking back and forth. silo.connected += src silo.updateUsrDialog() mat_container = silo.GetComponent(/datum/component/material_container) - to_chat(user, "You connect [parent] to [silo] from the multitool's buffer.") + to_chat(user, span_notice("You connect [parent] to [silo] from the multitool's buffer.")) return COMPONENT_NO_AFTERATTACK else if (silo && istype(I, /obj/item/stack)) diff --git a/code/datums/components/riding.dm b/code/datums/components/riding.dm index 8ea36096a58d..6a0c2c967221 100644 --- a/code/datums/components/riding.dm +++ b/code/datums/components/riding.dm @@ -69,7 +69,7 @@ var/atom/movable/AM = parent var/mob/AMM = AM if((ride_check_rider_restrained && M.restrained(TRUE)) || (ride_check_rider_incapacitated && M.incapacitated(FALSE, TRUE)) || (ride_check_ridden_incapacitated && istype(AMM) && AMM.incapacitated(FALSE, TRUE))) - AM.visible_message("[M] falls off of [AM]!") + AM.visible_message(span_warning("[M] falls off of [AM]!")) AM.unbuckle_mob(M) return TRUE @@ -192,7 +192,7 @@ handle_vehicle_layer(direction) handle_vehicle_offsets() else - to_chat(user, "You'll need the keys in one of your hands to [drive_verb] [AM].") + to_chat(user, span_notice("You'll need the keys in one of your hands to [drive_verb] [AM].")) /datum/component/riding/proc/Unbuckle(atom/movable/M) addtimer(CALLBACK(parent, /atom/movable/.proc/unbuckle_mob, M), 0, TIMER_UNIQUE) @@ -263,7 +263,7 @@ var/atom/movable/AM = parent AM.unbuckle_mob(user) user.Knockdown(60) - user.visible_message("[AM] pushes [user] off of [AM.p_them()]!") + user.visible_message(span_warning("[AM] pushes [user] off of [AM.p_them()]!")) /datum/component/riding/cyborg del_on_unbuckle_all = TRUE @@ -277,14 +277,14 @@ if(R.module && R.module.ride_allow_incapacitated) kick = FALSE if(kick) - to_chat(user, "You fall off of [AM]!") + to_chat(user, span_userdanger("You fall off of [AM]!")) Unbuckle(user) return if(iscarbon(user)) var/mob/living/carbon/carbonuser = user if(!carbonuser.get_num_arms()) Unbuckle(user) - to_chat(user, "You can't grab onto [AM] with no hands!") + to_chat(user, span_userdanger("You can't grab onto [AM] with no hands!")) return /datum/component/riding/cyborg/handle_vehicle_layer(dir) @@ -323,7 +323,7 @@ var/turf/target = get_edge_target_turf(AM, AM.dir) var/turf/targetm = get_step(get_turf(AM), AM.dir) M.Move(targetm) - M.visible_message("[M] is thrown clear of [AM]!") + M.visible_message(span_warning("[M] is thrown clear of [AM]!")) M.throw_at(target, 14, 5, AM) M.Paralyze(60) S.throwcooldown = TRUE @@ -339,6 +339,9 @@ else inhand.rider = riding_target_override inhand.parent = AM + for(var/obj/item/I in user.held_items) // delete any hand items like slappers that could still totally be used to grab on + if((I.obj_flags & HAND_ITEM)) + qdel(I) if(user.put_in_hands(inhand, TRUE)) amount_equipped++ else diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index afec8fee998e..436f00c280b2 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -100,7 +100,7 @@ /datum/component/simple_rotation/proc/ExamineMessage(datum/source, mob/user, list/examine_list) if(rotation_flags & ROTATION_ALTCLICK) - examine_list += "Alt-click to rotate it clockwise." + examine_list += span_notice("Alt-click to rotate it clockwise.") /datum/component/simple_rotation/proc/HandRot(datum/source, mob/user, rotation = default_rotation_direction) if(!can_be_rotated.Invoke(user, rotation) || !can_user_rotate.Invoke(user, rotation)) @@ -137,7 +137,7 @@ return !AM.anchored /datum/component/simple_rotation/proc/default_after_rotation(mob/user, rotation_type) - to_chat(user,"You [rotation_type == ROTATION_FLIP ? "flip" : "rotate"] [parent].") + to_chat(user,span_notice("You [rotation_type == ROTATION_FLIP ? "flip" : "rotate"] [parent].")) /atom/movable/proc/simple_rotate_clockwise() set name = "Rotate Clockwise" diff --git a/code/datums/components/spawner.dm b/code/datums/components/spawner.dm index d03ed7cd7222..0769e90523d2 100644 --- a/code/datums/components/spawner.dm +++ b/code/datums/components/spawner.dm @@ -48,4 +48,4 @@ spawned_mobs += L L.nest = src L.faction = src.faction - P.visible_message("[L] [spawn_text] [P].") + P.visible_message(span_danger("[L] [spawn_text] [P].")) diff --git a/code/datums/components/spooky.dm b/code/datums/components/spooky.dm index cb7eea70a42b..b1dd475a367b 100644 --- a/code/datums/components/spooky.dm +++ b/code/datums/components/spooky.dm @@ -38,7 +38,7 @@ if((H.getStaminaLoss() > 95) && (!istype(H.dna.species, /datum/species/skeleton)) && (!istype(H.dna.species, /datum/species/golem)) && (!istype(H.dna.species, /datum/species/android)) && (!istype(H.dna.species, /datum/species/jelly))) H.Paralyze(20) H.set_species(/datum/species/skeleton) - H.visible_message("[H] has given up on life as a mortal.") + H.visible_message(span_warning("[H] has given up on life as a mortal.")) var/T = get_turf(H) if(too_spooky) if(prob(30)) diff --git a/code/datums/components/stationloving.dm b/code/datums/components/stationloving.dm index 377609c26a6e..deb32f0c7c54 100644 --- a/code/datums/components/stationloving.dm +++ b/code/datums/components/stationloving.dm @@ -33,7 +33,7 @@ var/atom/movable/AM = parent AM.forceMove(targetturf) - to_chat(get(parent, /mob), "You can't help but feel that you just lost something back there...") + to_chat(get(parent, /mob), span_danger("You can't help but feel that you just lost something back there...")) // move the disc, so ghosts remain orbiting it even if it's "destroyed" return targetturf diff --git a/code/datums/components/storage/concrete/bag_of_holding.dm b/code/datums/components/storage/concrete/bag_of_holding.dm index 7eb3d2ec7495..9b31106b8975 100644 --- a/code/datums/components/storage/concrete/bag_of_holding.dm +++ b/code/datums/components/storage/concrete/bag_of_holding.dm @@ -16,12 +16,12 @@ return var/turf/loccheck = get_turf(A) if(is_reebe(loccheck.z)) - user.visible_message("An unseen force knocks [user] to the ground!", "\"I think not!\"") + user.visible_message(span_warning("An unseen force knocks [user] to the ground!"), "[span_big_brass("\"I think not!\"")]") user.Paralyze(60) return if(istype(loccheck.loc, /area/fabric_of_reality)) - to_chat(user, "You can't do that here!") - to_chat(user, "The Bluespace interfaces of the two devices catastrophically malfunction!") + to_chat(user, span_danger("You can't do that here!")) + to_chat(user, span_danger("The Bluespace interfaces of the two devices catastrophically malfunction!")) qdel(W) playsound(loccheck,'sound/effects/supermatter.ogg', 200, 1) @@ -40,7 +40,7 @@ var/mob/living/M = AT M.take_overall_damage(85) if(M.movement_type & FLYING) - M.visible_message("The bluespace collapse crushes the air towards it, pulling [M] towards the ground...") + M.visible_message(span_danger("The bluespace collapse crushes the air towards it, pulling [M] towards the ground...")) M.Paralyze(5, TRUE, TRUE) //Overrides stun absorbs. T.TerraformTurf(/turf/open/chasm/magic, /turf/open/chasm/magic) for(var/fabricarea in get_areas(/area/fabric_of_reality)) diff --git a/code/datums/components/storage/concrete/pockets.dm b/code/datums/components/storage/concrete/pockets.dm index 24770008d157..73b7c131dd13 100644 --- a/code/datums/components/storage/concrete/pockets.dm +++ b/code/datums/components/storage/concrete/pockets.dm @@ -8,9 +8,9 @@ . = ..() if(. && silent && !prevent_warning) if(quickdraw) - to_chat(user, "You discreetly slip [I] into [parent]. Alt-click [parent] to remove it.") + to_chat(user, span_notice("You discreetly slip [I] into [parent]. Alt-click [parent] to remove it.")) else - to_chat(user, "You discreetly slip [I] into [parent].") + to_chat(user, span_notice("You discreetly slip [I] into [parent].")) /datum/component/storage/concrete/pockets max_w_class = WEIGHT_CLASS_NORMAL diff --git a/code/datums/components/storage/concrete/rped.dm b/code/datums/components/storage/concrete/rped.dm index 455eb985f090..a6ffb79e93af 100644 --- a/code/datums/components/storage/concrete/rped.dm +++ b/code/datums/components/storage/concrete/rped.dm @@ -12,7 +12,7 @@ . = ..() if(!I.get_part_rating()) if (!stop_messages) - to_chat(M, "[parent] only accepts machine parts!") + to_chat(M, span_warning("[parent] only accepts machine parts!")) return FALSE /datum/component/storage/concrete/bluespace/rped @@ -29,5 +29,5 @@ . = ..() if(!I.get_part_rating()) if (!stop_messages) - to_chat(M, "[parent] only accepts machine parts!") + to_chat(M, span_warning("[parent] only accepts machine parts!")) return FALSE diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index b7af031d8b7d..298b57be7c65 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -135,7 +135,7 @@ var/obj/item/valid_item = valid_type desc += "\a [initial(valid_item.name)]" - return "\n\t[desc.Join("\n\t")]" + return "\n\t[span_notice("[desc.Join("\n\t")]")]" /datum/component/storage/proc/update_actions() QDEL_NULL(modeswitch_action) @@ -187,7 +187,7 @@ /datum/component/storage/proc/attack_self(datum/source, mob/M) if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, span_warning("[parent] seems to be locked!")) return FALSE if((M.get_active_held_item() == parent) && allow_quick_empty) quick_empty(M) @@ -197,7 +197,7 @@ return FALSE . = COMPONENT_NO_ATTACK if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, span_warning("[parent] seems to be locked!")) return FALSE var/obj/item/I = O if(collection_mode == COLLECT_ONE) @@ -211,14 +211,14 @@ things = typecache_filter_list(things, typecacheof(I.type)) var/len = length(things) if(!len) - to_chat(M, "You failed to pick up anything with [parent].") + to_chat(M, span_notice("You failed to pick up anything with [parent].")) return var/datum/progressbar/progress = new(M, len, I.loc) var/list/rejections = list() while(do_after(M, 10, TRUE, parent, FALSE, CALLBACK(src, .proc/handle_mass_pickup, things, I.loc, rejections, progress))) stoplag(1) qdel(progress) - to_chat(M, "You put everything you could [insert_preposition] [parent].") + to_chat(M, span_notice("You put everything you could [insert_preposition] [parent].")) /datum/component/storage/proc/handle_mass_item_insertion(list/things, datum/component/storage/src_object, mob/user, datum/progressbar/progress) var/atom/source_real_location = src_object.real_location() @@ -266,10 +266,10 @@ if(!M.canUseStorage() || !A.Adjacent(M) || M.incapacitated()) return if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, span_warning("[parent] seems to be locked!")) return FALSE A.add_fingerprint(M) - to_chat(M, "You start dumping out [parent].") + to_chat(M, span_notice("You start dumping out [parent].")) var/turf/T = get_turf(A) var/list/things = contents() var/datum/progressbar/progress = new(M, length(things), T) @@ -481,7 +481,7 @@ var/atom/dump_destination = dest_object.get_dumping_location() if(A.Adjacent(M) && dump_destination && M.Adjacent(dump_destination)) if(locked) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, span_warning("[parent] seems to be locked!")) return FALSE if(dump_destination.storage_contents_dump_act(src, M)) playsound(A, "rustle", 50, 1, -5) @@ -529,7 +529,7 @@ handle_show_valid_items(source, user) /datum/component/storage/proc/handle_show_valid_items(datum/source, user) - to_chat(user, "[source] can hold: [can_hold_description]") + to_chat(user, span_notice("[source] can hold: [can_hold_description]")) /datum/component/storage/proc/mousedrop_onto(datum/source, atom/over_object, mob/M) set waitfor = FALSE @@ -563,7 +563,7 @@ return FALSE A.add_fingerprint(M) if(locked && !force) - to_chat(M, "[parent] seems to be locked!") + to_chat(M, span_warning("[parent] seems to be locked!")) return FALSE if(force || M.CanReach(parent, view_only = TRUE)) show_to(M) @@ -591,46 +591,46 @@ if(locked) if(M && !stop_messages) host.add_fingerprint(M) - to_chat(M, "[host] seems to be locked!") + to_chat(M, span_warning("[host] seems to be locked!")) return FALSE if(real_location.contents.len >= max_items) if(!stop_messages) - to_chat(M, "[host] is full, make some space!") + to_chat(M, span_warning("[host] is full, make some space!")) return FALSE //Storage item is full if(length(can_hold)) if(!is_type_in_typecache(I, can_hold)) if(!stop_messages) - to_chat(M, "[host] cannot hold [I]!") + to_chat(M, span_warning("[host] cannot hold [I]!")) return FALSE if(is_type_in_typecache(I, cant_hold)) //Check for specific items which this container can't hold. if(!stop_messages) - to_chat(M, "[host] cannot hold [I]!") + to_chat(M, span_warning("[host] cannot hold [I]!")) return FALSE if(I.w_class > max_w_class && !is_type_in_typecache(I, exception_hold)) if(!stop_messages) - to_chat(M, "[I] is too big for [host]!") + to_chat(M, span_warning("[I] is too big for [host]!")) return FALSE var/sum_w_class = I.w_class for(var/obj/item/_I in real_location) sum_w_class += _I.w_class //Adds up the combined w_classes which will be in the storage item if the item is added to it. if(sum_w_class > max_combined_w_class) if(!stop_messages) - to_chat(M, "[I] won't fit in [host], make some space!") + to_chat(M, span_warning("[I] won't fit in [host], make some space!")) return FALSE if(isitem(host)) var/obj/item/IP = host var/datum/component/storage/STR_I = I.GetComponent(/datum/component/storage) if((I.w_class >= IP.w_class) && STR_I && !allow_big_nesting) if(!stop_messages) - to_chat(M, "[IP] cannot hold [I] as it's a storage item of the same size!") + to_chat(M, span_warning("[IP] cannot hold [I] as it's a storage item of the same size!")) return FALSE //To prevent the stacking of same sized storage items. if(HAS_TRAIT(I, TRAIT_NO_STORAGE)) if(!stop_messages) - to_chat(M, "\the [I] can't seem to fit in \the [host]!") + to_chat(M, span_warning("\the [I] can't seem to fit in \the [host]!")) return FALSE if(HAS_TRAIT(I, TRAIT_NODROP)) //SHOULD be handled in unEquip, but better safe than sorry. if(!stop_messages) - to_chat(M, "\the [I] is stuck to your hand, you can't put it in \the [host]!") + to_chat(M, span_warning("\the [I] is stuck to your hand, you can't put it in \the [host]!")) return FALSE var/datum/component/storage/concrete/master = master() if(!istype(master)) @@ -661,11 +661,11 @@ playsound(parent, "rustle", 50, 1, -5) for(var/mob/viewing in viewers(user, null)) if(M == viewing) - to_chat(usr, "You put [I] [insert_preposition]to [parent].") + to_chat(usr, span_notice("You put [I] [insert_preposition]to [parent].")) else if(in_range(M, viewing)) //If someone is standing close enough, they can tell what it is... - viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", MSG_VISUAL) + viewing.show_message(span_notice("[M] puts [I] [insert_preposition]to [parent]."), MSG_VISUAL) else if(I && I.w_class >= 3) //Otherwise they can only see large or normal items from a distance... - viewing.show_message("[M] puts [I] [insert_preposition]to [parent].", MSG_VISUAL) + viewing.show_message(span_notice("[M] puts [I] [insert_preposition]to [parent]."), MSG_VISUAL) /datum/component/storage/proc/update_icon() if(isobj(parent)) @@ -751,7 +751,7 @@ if(A.loc == user) . = COMPONENT_NO_ATTACK_HAND if(locked) - to_chat(user, "[parent] seems to be locked!") + to_chat(user, span_warning("[parent] seems to be locked!")) else show_to(user) @@ -780,7 +780,7 @@ if(locked) if(istype(parent, /obj/item/storage/lockbox)) return - to_chat(user, "[parent] seems to be locked!") + to_chat(user, span_warning("[parent] seems to be locked!")) return var/atom/A = parent @@ -797,9 +797,9 @@ A.add_fingerprint(user) remove_from_storage(I, get_turf(user)) if(!user.put_in_hands(I)) - to_chat(user, "You fumble for [I] and it falls on the floor.") + to_chat(user, span_notice("You fumble for [I] and it falls on the floor.")) return - user.visible_message("[user] draws [I] from [parent]!", "You draw [I] from [parent].") + user.visible_message(span_warning("[user] draws [I] from [parent]!"), span_notice("You draw [I] from [parent].")) return /datum/component/storage/proc/action_trigger(datum/signal_source, datum/action/source) diff --git a/code/datums/components/summoning.dm b/code/datums/components/summoning.dm index 2eaceb257ed5..8228f465de5e 100644 --- a/code/datums/components/summoning.dm +++ b/code/datums/components/summoning.dm @@ -62,7 +62,7 @@ L.faction = faction RegisterSignal(L, COMSIG_MOB_DEATH, .proc/on_spawned_death) // so we can remove them from the list, etc (for mobs with corpses) playsound(spawn_location,spawn_sound, 50, 1) - spawn_location.visible_message("[L] [spawn_text].") + spawn_location.visible_message(span_danger("[L] [spawn_text].")) /datum/component/summoning/proc/on_spawned_death(mob/killed, gibbed) spawned_mobs -= killed \ No newline at end of file diff --git a/code/datums/components/tether.dm b/code/datums/components/tether.dm index faa6182208af..05c6343b7dea 100644 --- a/code/datums/components/tether.dm +++ b/code/datums/components/tether.dm @@ -18,7 +18,7 @@ /datum/component/tether/proc/checkTether(mob/mover, newloc) if (get_dist(mover,newloc) > max_dist) - to_chat(mover, "The [tether_name] runs out of slack and prevents you from moving!") + to_chat(mover, span_userdanger("The [tether_name] runs out of slack and prevents you from moving!")) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE var/atom/blocker @@ -33,5 +33,5 @@ blocker = A break out if (blocker) - to_chat(mover, "The [tether_name] catches on [blocker] and prevents you from moving!") + to_chat(mover, span_userdanger("The [tether_name] catches on [blocker] and prevents you from moving!")) return COMPONENT_MOVABLE_BLOCK_PRE_MOVE diff --git a/code/datums/components/uplink.dm b/code/datums/components/uplink.dm index 13a17a0fecf4..8b347e9a3946 100644 --- a/code/datums/components/uplink.dm +++ b/code/datums/components/uplink.dm @@ -88,7 +88,7 @@ GLOBAL_LIST_EMPTY(uplinks) /datum/component/uplink/proc/LoadTC(mob/user, obj/item/stack/telecrystal/TC, silent = FALSE) if(!silent) - to_chat(user, "You slot [TC] into [parent] and charge its internal uplink.") + to_chat(user, span_notice("You slot [TC] into [parent] and charge its internal uplink.")) var/amt = TC.amount telecrystals += amt TC.use(amt) @@ -118,7 +118,7 @@ GLOBAL_LIST_EMPTY(uplinks) telecrystals += cost if(purchase_log) purchase_log.total_spent -= cost - to_chat(user, "[I] refunded.") + to_chat(user, span_notice("[I] refunded.")) qdel(I) /datum/component/uplink/proc/interact(datum/source, mob/user) @@ -301,7 +301,7 @@ GLOBAL_LIST_EMPTY(uplinks) previous_attempts.Cut() master.degrees = 0 interact(null, user) - to_chat(user, "Your pen makes a clicking noise, before quickly rotating back to 0 degrees!") + to_chat(user, span_warning("Your pen makes a clicking noise, before quickly rotating back to 0 degrees!")) else if(compare_list(previous_attempts, failsafe_code)) failsafe() diff --git a/code/datums/dash_weapon.dm b/code/datums/dash_weapon.dm index 3cdb7b569339..c7e338ca2f6a 100644 --- a/code/datums/dash_weapon.dm +++ b/code/datums/dash_weapon.dm @@ -51,4 +51,4 @@ holder.update_action_buttons_icon() if(recharge_sound) playsound(dashing_item, recharge_sound, 50, 1) - to_chat(holder, "[src] now has [current_charges]/[max_charges] charges.") + to_chat(holder, span_notice("[src] now has [current_charges]/[max_charges] charges.")) diff --git a/code/datums/datumvars.dm b/code/datums/datumvars.dm index e79b3af975d6..0b203e7a6d73 100644 --- a/code/datums/datumvars.dm +++ b/code/datums/datumvars.dm @@ -43,7 +43,7 @@ var/static/cookieoffset = rand(1, 9999) //to force cookies to reset after the round. if(!usr.client || !usr.client.holder) //The usr vs src abuse in this proc is intentional and must not be changed - to_chat(usr, "You need to be an administrator to access this.") + to_chat(usr, span_danger("You need to be an administrator to access this.")) return if(!D) @@ -465,10 +465,10 @@ var/item if (isnull(value)) - item = "[VV_HTML_ENCODE(name)] = null" + item = "[VV_HTML_ENCODE(name)] = [span_value("null")]" else if (istext(value)) - item = "[VV_HTML_ENCODE(name)] = \"[VV_HTML_ENCODE(value)]\"" + item = "[VV_HTML_ENCODE(name)] = [span_value("\"[VV_HTML_ENCODE(value)]\"")]" else if (isicon(value)) #ifdef VARSICON @@ -476,13 +476,13 @@ var/rnd = rand(1,10000) var/rname = "tmp[REF(I)][rnd].png" usr << browse_rsc(I, rname) - item = "[VV_HTML_ENCODE(name)] = ([value]) " + item = "[VV_HTML_ENCODE(name)] = ([span_value("[value]")]) " #else - item = "[VV_HTML_ENCODE(name)] = /icon ([value])" + item = "[VV_HTML_ENCODE(name)] = /icon ([span_value("[value]")])" #endif else if (isfile(value)) - item = "[VV_HTML_ENCODE(name)] = '[value]'" + item = "[VV_HTML_ENCODE(name)] = [span_value("'[value]'")]" else if(istype(value,/matrix)) // Needs to be before datum var/matrix/M = value @@ -498,7 +498,7 @@ else if(isappearance(value)) var/image/I = value - item = "[VV_HTML_ENCODE(name)] [REF(value)] = appearance([I.icon], \"[I.icon_state]\")" + item = "[VV_HTML_ENCODE(name)] [REF(value)] = appearance([span_value("[I.icon]")], [span_value("\"[I.icon_state]\"")])" else if (istype(value, /datum)) var/datum/D = value @@ -534,7 +534,7 @@ flags += i item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]" else - item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" + item = "[VV_HTML_ENCODE(name)] = [span_value("[VV_HTML_ENCODE(value)]")]" return "[header][item]" @@ -937,7 +937,7 @@ fire = text2num(result["values"]["fire"]),\ acid = text2num(result["values"]["acid"])) log_admin("[key_name(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]") - message_admins("[key_name_admin(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]") + message_admins(span_notice("[key_name_admin(usr)] modified the armor on [O] ([O.type]) to melee: [O.armor.melee], bullet: [O.armor.bullet], laser: [O.armor.laser], energy: [O.armor.energy], bomb: [O.armor.bomb], bio: [O.armor.bio], rad: [O.armor.rad], fire: [O.armor.fire], acid: [O.armor.acid]")) else return @@ -973,7 +973,7 @@ to_chat(usr, "No objects of this type exist") return log_admin("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") - message_admins("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ") + message_admins(span_notice("[key_name(usr)] deleted all objects of type [O_type] ([i] objects deleted) ")) if("Type and subtypes") var/i = 0 for(var/obj/Obj in world) @@ -985,7 +985,7 @@ to_chat(usr, "No objects of this type exist") return log_admin("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") - message_admins("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ") + message_admins(span_notice("[key_name(usr)] deleted all objects of type or subtype of [O_type] ([i] objects deleted) ")) else if(href_list["addreagent"]) if(!check_rights(NONE)) @@ -1012,7 +1012,7 @@ if(ID == chosen_id) valid_id = 1 if(!valid_id) - to_chat(usr, "A reagent with that ID doesn't exist!") + to_chat(usr, span_warning("A reagent with that ID doesn't exist!")) if("Choose ID") chosen_id = input(usr, "Choose a reagent to add.", "Choose a reagent.") as null|anything in reagent_options if(chosen_id) @@ -1020,7 +1020,7 @@ if(amount) A.reagents.add_reagent(chosen_id, amount) log_admin("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A]") - message_admins("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A]") + message_admins(span_notice("[key_name(usr)] has added [amount] units of [chosen_id] to \the [A]")) else if(href_list["explode"]) if(!check_rights(R_FUN)) @@ -1131,7 +1131,7 @@ var/datum/martial_art/MA = new chosenart MA.teach(C) log_admin("[key_name(usr)] has taught [MA] to [key_name(C)].") - message_admins("[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)].") + message_admins(span_notice("[key_name_admin(usr)] has taught [MA] to [key_name_admin(C)].")) else if(href_list["givetrauma"]) if(!check_rights(NONE)) @@ -1156,7 +1156,7 @@ var/datum/brain_trauma/BT = C.gain_trauma(result) if(BT) log_admin("[key_name(usr)] has traumatized [key_name(C)] with [BT.name]") - message_admins("[key_name_admin(usr)] has traumatized [key_name_admin(C)] with [BT.name].") + message_admins(span_notice("[key_name_admin(usr)] has traumatized [key_name_admin(C)] with [BT.name].")) else if(href_list["curetraumas"]) if(!check_rights(NONE)) @@ -1169,7 +1169,7 @@ C.cure_all_traumas(TRAUMA_RESILIENCE_ABSOLUTE) log_admin("[key_name(usr)] has cured all traumas from [key_name(C)].") - message_admins("[key_name_admin(usr)] has cured all traumas from [key_name_admin(C)].") + message_admins(span_notice("[key_name_admin(usr)] has cured all traumas from [key_name_admin(C)].")) else if(href_list["hallucinate"]) if(!check_rights(NONE)) @@ -1399,7 +1399,7 @@ to_chat(usr, "Mob doesn't exist anymore") return H.cluwneify() - message_admins("[key_name(usr)] has made [key_name(H)] into a Cluwne.") + message_admins(span_notice("[key_name(usr)] has made [key_name(H)] into a Cluwne.")) return // yogs end else if(href_list["makepacman"]) @@ -1508,7 +1508,7 @@ var/mob/user = usr if(!P.persistence_id || !P.C) - to_chat(user,"This is not a persistent painting.") + to_chat(user,span_warning("This is not a persistent painting.")) return var/md5 = md5(P.C.get_data_string()) var/author = P.C.author_ckey @@ -1523,4 +1523,4 @@ if(PA.C && md5(PA.C.get_data_string()) == md5) QDEL_NULL(PA.C) log_admin("[key_name(user)] has deleted a persistent painting made by [author].") - message_admins("[key_name_admin(user)] has deleted persistent painting made by [author].") + message_admins(span_notice("[key_name_admin(user)] has deleted persistent painting made by [author].")) diff --git a/code/datums/diseases/advance/symptoms/beard.dm b/code/datums/diseases/advance/symptoms/beard.dm index 533c57a67c36..a01ea5cd10d5 100644 --- a/code/datums/diseases/advance/symptoms/beard.dm +++ b/code/datums/diseases/advance/symptoms/beard.dm @@ -37,7 +37,7 @@ BONUS var/mob/living/carbon/human/H = M var/index = min(max(beard_order.Find(H.facial_hair_style)+1, A.stage-1), beard_order.len) if(index > 0 && H.facial_hair_style != beard_order[index]) - to_chat(H, "Your chin itches.") + to_chat(H, span_warning("Your chin itches.")) H.facial_hair_style = beard_order[index] H.update_hair() diff --git a/code/datums/diseases/advance/symptoms/choking.dm b/code/datums/diseases/advance/symptoms/choking.dm index 631a63ca83c6..f7074b3f2c74 100644 --- a/code/datums/diseases/advance/symptoms/choking.dm +++ b/code/datums/diseases/advance/symptoms/choking.dm @@ -51,16 +51,16 @@ Bonus switch(A.stage) if(1, 2) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]") + to_chat(M, span_warning("[pick("You're having difficulty breathing.", "Your breathing becomes heavy.")]")) if(3, 4) if(!suppress_warning) - to_chat(M, "[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]") + to_chat(M, span_warning("[pick("Your windpipe feels like a straw.", "Your breathing becomes tremendously difficult.")]")) else - to_chat(M, "You feel very [pick("dizzy","woozy","faint")].") //fake bloodloss messages + to_chat(M, span_warning("You feel very [pick("dizzy","woozy","faint")].")) //fake bloodloss messages Choke_stage_3_4(M, A) M.emote("gasp") else - to_chat(M, "[pick("You're choking!", "You can't breathe!")]") + to_chat(M, span_userdanger("[pick("You're choking!", "You can't breathe!")]")) Choke(M, A) M.emote("gasp") @@ -125,15 +125,15 @@ Bonus var/mob/living/M = A.affected_mob switch(A.stage) if(3, 4) - to_chat(M, "[pick("Your windpipe feels thin.", "Your lungs feel small.")]") + to_chat(M, span_warning("[pick("Your windpipe feels thin.", "Your lungs feel small.")]")) Asphyxiate_stage_3_4(M, A) M.emote("gasp") if(5) - to_chat(M, "[pick("Your lungs hurt!", "It hurts to breathe!")]") + to_chat(M, span_userdanger("[pick("Your lungs hurt!", "It hurts to breathe!")]")) Asphyxiate(M, A) M.emote("gasp") if(M.getOxyLoss() >= 120) - M.visible_message("[M] stops breathing, as if their lungs have totally collapsed!") + M.visible_message(span_warning("[M] stops breathing, as if their lungs have totally collapsed!")) Asphyxiate_death(M, A) return diff --git a/code/datums/diseases/advance/symptoms/confusion.dm b/code/datums/diseases/advance/symptoms/confusion.dm index 316eae1c7e31..dafa7e688fc1 100644 --- a/code/datums/diseases/advance/symptoms/confusion.dm +++ b/code/datums/diseases/advance/symptoms/confusion.dm @@ -54,9 +54,9 @@ Bonus switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("Your head hurts.", "Your mind blanks for a moment.")]") + to_chat(M, span_warning("[pick("Your head hurts.", "Your mind blanks for a moment.")]")) else - to_chat(M, "You can't think straight!") + to_chat(M, span_userdanger("You can't think straight!")) M.confused = min(100 * power, M.confused + 8) if(brain_damage) M.adjustOrganLoss(ORGAN_SLOT_BRAIN,3 * power, 80) diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm index 92aa51d2f853..049bbb68e897 100644 --- a/code/datums/diseases/advance/symptoms/deafness.dm +++ b/code/datums/diseases/advance/symptoms/deafness.dm @@ -49,14 +49,14 @@ Bonus switch(A.stage) if(3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You hear a ringing in your ear.", "Your ears pop.")]") + to_chat(M, span_warning("[pick("You hear a ringing in your ear.", "Your ears pop.")]")) if(5) if(power >= 2) var/obj/item/organ/ears/ears = M.getorganslot(ORGAN_SLOT_EARS) if(istype(ears) && ears.damage < ears.maxHealth) - to_chat(M, "Your ears pop painfully and start bleeding!") + to_chat(M, span_userdanger("Your ears pop painfully and start bleeding!")) ears.damage = max(ears.damage, ears.maxHealth) M.emote("scream") else - to_chat(M, "Your ears pop and begin ringing loudly!") + to_chat(M, span_userdanger("Your ears pop and begin ringing loudly!")) M.minimumDeafTicks(20) diff --git a/code/datums/diseases/advance/symptoms/dizzy.dm b/code/datums/diseases/advance/symptoms/dizzy.dm index 965d5f372746..8fa08acc78bc 100644 --- a/code/datums/diseases/advance/symptoms/dizzy.dm +++ b/code/datums/diseases/advance/symptoms/dizzy.dm @@ -49,9 +49,9 @@ Bonus switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You feel dizzy.", "Your head spins.")]") + to_chat(M, span_warning("[pick("You feel dizzy.", "Your head spins.")]")) else - to_chat(M, "A wave of dizziness washes over you!") + to_chat(M, span_userdanger("A wave of dizziness washes over you!")) M.Dizzy(5) if(power >= 2) M.set_drugginess(5) diff --git a/code/datums/diseases/advance/symptoms/fever.dm b/code/datums/diseases/advance/symptoms/fever.dm index a5a56e867536..ad8c4fdfa45b 100644 --- a/code/datums/diseases/advance/symptoms/fever.dm +++ b/code/datums/diseases/advance/symptoms/fever.dm @@ -49,9 +49,9 @@ Bonus return var/mob/living/carbon/M = A.affected_mob if(!unsafe || A.stage < 4) - to_chat(M, "[pick("You feel hot.", "You feel like you're burning.")]") + to_chat(M, span_warning("[pick("You feel hot.", "You feel like you're burning.")]")) else - to_chat(M, "[pick("You feel too hot.", "You feel like your blood is boiling.")]") + to_chat(M, span_userdanger("[pick("You feel too hot.", "You feel like your blood is boiling.")]")) if(M.bodytemperature < BODYTEMP_HEAT_DAMAGE_LIMIT || unsafe) Heat(M, A) diff --git a/code/datums/diseases/advance/symptoms/fire.dm b/code/datums/diseases/advance/symptoms/fire.dm index aa902d919eac..1a1c6aed2b54 100644 --- a/code/datums/diseases/advance/symptoms/fire.dm +++ b/code/datums/diseases/advance/symptoms/fire.dm @@ -57,16 +57,16 @@ Bonus switch(A.stage) if(3) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]") + to_chat(M, span_warning("[pick("You feel hot.", "You hear a crackling noise.", "You smell smoke.")]")) if(4) Firestacks_stage_4(M, A) M.IgniteMob() - to_chat(M, "Your skin bursts into flames!") + to_chat(M, span_userdanger("Your skin bursts into flames!")) M.emote("scream") if(5) Firestacks_stage_5(M, A) M.IgniteMob() - to_chat(M, "Your skin erupts into an inferno!") + to_chat(M, span_userdanger("Your skin erupts into an inferno!")) M.emote("scream") /datum/symptom/fire/proc/Firestacks_stage_4(mob/living/M, datum/disease/advance/A) @@ -143,19 +143,19 @@ Bonus switch(A.stage) if(3) if(prob(base_message_chance)) - to_chat(M, "[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]") + to_chat(M, span_warning("[pick("Your veins boil.", "You feel hot.", "You smell meat cooking.")]")) if(4) Alkali_fire_stage_4(M, A) M.IgniteMob() - to_chat(M, "Your sweat bursts into flames!") + to_chat(M, span_userdanger("Your sweat bursts into flames!")) M.emote("scream") if(5) Alkali_fire_stage_5(M, A) M.IgniteMob() - to_chat(M, "Your skin erupts into an inferno!") + to_chat(M, span_userdanger("Your skin erupts into an inferno!")) M.emote("scream") if(M.fire_stacks < 0) - M.visible_message("[M]'s sweat sizzles and pops on contact with water!") + M.visible_message(span_warning("[M]'s sweat sizzles and pops on contact with water!")) explosion(get_turf(M),0,0,2 * explosion_power) Alkali_fire_stage_5(M, A) diff --git a/code/datums/diseases/advance/symptoms/flesh_eating.dm b/code/datums/diseases/advance/symptoms/flesh_eating.dm index b180b72f4e7f..b75867fe10f5 100644 --- a/code/datums/diseases/advance/symptoms/flesh_eating.dm +++ b/code/datums/diseases/advance/symptoms/flesh_eating.dm @@ -48,9 +48,9 @@ Bonus switch(A.stage) if(2,3) if(prob(base_message_chance)) - to_chat(M, "[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]") + to_chat(M, span_warning("[pick("You feel a sudden pain across your body.", "Drops of blood appear suddenly on your skin.")]")) if(4,5) - to_chat(M, "[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]") + to_chat(M, span_userdanger("[pick("You cringe as a violent pain takes over your body.", "It feels like your body is eating itself inside out.", "IT HURTS.")]")) Flesheat(M, A) /datum/symptom/flesh_eating/proc/Flesheat(mob/living/M, datum/disease/advance/A) @@ -61,7 +61,8 @@ Bonus if(bleed) if(ishuman(M)) var/mob/living/carbon/human/H = M - H.bleed_rate += 5 * power + var/obj/item/bodypart/random_part = pick(H.bodyparts) + random_part.generic_bleedstacks += 5 * power return 1 /* @@ -114,10 +115,10 @@ Bonus switch(A.stage) if(2,3) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You feel your body break apart.", "Your skin rubs off like dust.")]") + to_chat(M, span_warning("[pick("You feel your body break apart.", "Your skin rubs off like dust.")]")) if(4,5) if(prob(base_message_chance / 2)) //reduce spam - to_chat(M, "[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]") + to_chat(M, span_userdanger("[pick("You feel your muscles weakening.", "Some of your skin detaches itself.", "You feel sandy.")]")) Flesh_death(M, A) /datum/symptom/flesh_death/proc/Flesh_death(mob/living/M, datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/hallucigen.dm b/code/datums/diseases/advance/symptoms/hallucigen.dm index c3c58092d7e2..20e6bfd8961f 100644 --- a/code/datums/diseases/advance/symptoms/hallucigen.dm +++ b/code/datums/diseases/advance/symptoms/hallucigen.dm @@ -54,16 +54,16 @@ Bonus if(1, 2) if(prob(base_message_chance)) if(!fake_healthy) - to_chat(M, "[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whisper with no source.", "Your head aches.")]") + to_chat(M, span_notice("[pick("Something appears in your peripheral vision, then winks out.", "You hear a faint whisper with no source.", "Your head aches.")]")) else - to_chat(M, "[pick(healthy_messages)]") + to_chat(M, span_notice("[pick(healthy_messages)]")) if(3, 4) if(prob(base_message_chance)) if(!fake_healthy) - to_chat(M, "[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]") + to_chat(M, span_danger("[pick("Something is following you.", "You are being watched.", "You hear a whisper in your ear.", "Thumping footsteps slam toward you from nowhere.")]")) else - to_chat(M, "[pick(healthy_messages)]") + to_chat(M, span_notice("[pick(healthy_messages)]")) else if(prob(base_message_chance)) - to_chat(M, "[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]") + to_chat(M, span_userdanger("[pick("Oh, your head...", "Your head pounds.", "They're everywhere! Run!", "Something in the shadows...")]")) M.hallucination += (45 * power) diff --git a/code/datums/diseases/advance/symptoms/headache.dm b/code/datums/diseases/advance/symptoms/headache.dm index 6541639d055e..d9d25962dc0b 100644 --- a/code/datums/diseases/advance/symptoms/headache.dm +++ b/code/datums/diseases/advance/symptoms/headache.dm @@ -55,10 +55,10 @@ BONUS var/mob/living/M = A.affected_mob if(power < 2) if(prob(base_message_chance) || A.stage >=4) - to_chat(M, "[pick("Your head hurts.", "Your head pounds.")]") + to_chat(M, span_warning("[pick("Your head hurts.", "Your head pounds.")]")) if(power >= 2 && A.stage >= 4) - to_chat(M, "[pick("Your head hurts a lot.", "Your head pounds incessantly.")]") + to_chat(M, span_warning("[pick("Your head hurts a lot.", "Your head pounds incessantly.")]")) M.adjustStaminaLoss(25) if(power >= 3 && A.stage >= 5) - to_chat(M, "[pick("Your head hurts!", "You feel a burning knife inside your brain!", "A wave of pain fills your head!")]") + to_chat(M, span_userdanger("[pick("Your head hurts!", "You feel a burning knife inside your brain!", "A wave of pain fills your head!")]")) M.Stun(35) diff --git a/code/datums/diseases/advance/symptoms/heal.dm b/code/datums/diseases/advance/symptoms/heal.dm index 00acb17cfb55..bd8b4ff37956 100644 --- a/code/datums/diseases/advance/symptoms/heal.dm +++ b/code/datums/diseases/advance/symptoms/heal.dm @@ -56,7 +56,7 @@ stage_speed = 0 transmittable = 1 level = 6 - passive_message = "You miss the feeling of starlight on your skin." + passive_message = span_notice("You miss the feeling of starlight on your skin.") var/nearspace_penalty = 0.3 threshold_descs = list( "Stage Speed 6" = "Increases healing speed.", @@ -84,7 +84,7 @@ /datum/symptom/heal/starlight/Heal(mob/living/carbon/M, datum/disease/advance/A, actual_power) var/heal_amt = actual_power if(M.getToxLoss() && prob(5)) - to_chat(M, "Your skin tingles as the starlight seems to heal you.") + to_chat(M, span_notice("Your skin tingles as the starlight seems to heal you.")) M.adjustToxLoss(-(4 * heal_amt)) //most effective on toxins @@ -132,7 +132,7 @@ if(food_conversion) M.adjust_nutrition(0.3) if(prob(2)) - to_chat(M, "You feel a mild warmth as your blood purifies itself.") + to_chat(M, span_notice("You feel a mild warmth as your blood purifies itself.")) return 1 @@ -172,7 +172,7 @@ var/lost_nutrition = 9 - (reduced_hunger * 5) C.adjust_nutrition(-lost_nutrition * HUNGER_FACTOR) //Hunger depletes at 10x the normal speed if(prob(2)) - to_chat(C, "You feel an odd gurgle in your stomach, as if it was working much faster than normal.") + to_chat(C, span_notice("You feel an odd gurgle in your stomach, as if it was working much faster than normal.")) return 1 /datum/symptom/heal/darkness @@ -183,7 +183,7 @@ stage_speed = -2 transmittable = -1 level = 6 - passive_message = "You feel tingling on your skin as light passes over it." + passive_message = span_notice("You feel tingling on your skin as light passes over it.") threshold_descs = list( "Stage Speed 8" = "Doubles healing speed.", ) @@ -213,7 +213,7 @@ return if(prob(5)) - to_chat(M, "The darkness soothes and mends your wounds.") + to_chat(M, span_notice("The darkness soothes and mends your wounds.")) for(var/obj/item/bodypart/L in parts) if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len * 0.5, null, BODYPART_ORGANIC)) //more effective on brute @@ -233,7 +233,7 @@ stage_speed = -3 transmittable = -2 level = 8 - passive_message = "The pain from your wounds makes you feel oddly sleepy..." + passive_message = span_notice("The pain from your wounds makes you feel oddly sleepy...") var/deathgasp = FALSE var/active_coma = FALSE //to prevent multiple coma procs threshold_descs = list( @@ -262,7 +262,7 @@ else if(M.IsSleeping()) return power * 0.25 else if(M.getBruteLoss() + M.getFireLoss() >= 70 && !active_coma) - to_chat(M, "You feel yourself slip into a regenerative coma...") + to_chat(M, span_warning("You feel yourself slip into a regenerative coma...")) active_coma = TRUE addtimer(CALLBACK(src, .proc/coma, M), 60) @@ -312,7 +312,7 @@ stage_speed = 0 transmittable = 1 level = 6 - passive_message = "Your skin feels oddly dry..." + passive_message = span_notice("Your skin feels oddly dry...") var/absorption_coeff = 1 threshold_descs = list( "Resistance 5" = "Water is consumed at a much slower rate.", @@ -350,7 +350,7 @@ return if(prob(5)) - to_chat(M, "You feel yourself absorbing the water around you to soothe your damaged skin.") + to_chat(M, span_notice("You feel yourself absorbing the water around you to soothe your damaged skin.")) for(var/obj/item/bodypart/L in parts) if(L.heal_damage(heal_amt/parts.len * 0.5, heal_amt/parts.len, null, BODYPART_ORGANIC)) @@ -371,7 +371,7 @@ stage_speed = -2 transmittable = -2 level = 8 - passive_message = "You feel an odd attraction to plasma." + passive_message = span_notice("You feel an odd attraction to plasma.") var/temp_rate = 1 threshold_descs = list( "Transmission 6" = "Increases temperature adjustment rate.", @@ -405,16 +405,16 @@ var/heal_amt = 4 * actual_power if(prob(5)) - to_chat(M, "You feel yourself absorbing plasma inside and around you...") + to_chat(M, span_notice("You feel yourself absorbing plasma inside and around you...")) if(M.bodytemperature > BODYTEMP_NORMAL) M.adjust_bodytemperature(-20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,BODYTEMP_NORMAL) if(prob(5)) - to_chat(M, "You feel less hot.") + to_chat(M, span_notice("You feel less hot.")) else if(M.bodytemperature < (BODYTEMP_NORMAL + 1)) M.adjust_bodytemperature(20 * temp_rate * TEMPERATURE_DAMAGE_COEFFICIENT,0,BODYTEMP_NORMAL) if(prob(5)) - to_chat(M, "You feel warmer.") + to_chat(M, span_notice("You feel warmer.")) M.adjustToxLoss(-heal_amt) @@ -422,7 +422,7 @@ if(!parts.len) return if(prob(5)) - to_chat(M, "The pain from your wounds fades rapidly.") + to_chat(M, span_notice("The pain from your wounds fades rapidly.")) for(var/obj/item/bodypart/L in parts) if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len, null, BODYPART_ORGANIC)) M.update_damage_overlays() @@ -439,7 +439,7 @@ level = 6 symptom_delay_min = 1 symptom_delay_max = 1 - passive_message = "Your skin glows faintly for a moment." + passive_message = span_notice("Your skin glows faintly for a moment.") var/cellular_damage = FALSE threshold_descs = list( "Transmission 6" = "Additionally heals cellular damage.", @@ -485,7 +485,7 @@ return if(prob(4)) - to_chat(M, "Your skin glows faintly, and you feel your wounds mending themselves.") + to_chat(M, span_notice("Your skin glows faintly, and you feel your wounds mending themselves.")) for(var/obj/item/bodypart/L in parts) if(L.heal_damage(heal_amt/parts.len, heal_amt/parts.len, null, BODYPART_ORGANIC)) diff --git a/code/datums/diseases/advance/symptoms/itching.dm b/code/datums/diseases/advance/symptoms/itching.dm index f88497bfbcf3..c146ae316aa2 100644 --- a/code/datums/diseases/advance/symptoms/itching.dm +++ b/code/datums/diseases/advance/symptoms/itching.dm @@ -53,6 +53,6 @@ BONUS var/obj/item/bodypart/bodypart = M.get_bodypart(picked_bodypart) if(bodypart && bodypart.status == BODYPART_ORGANIC && !bodypart.is_pseudopart) //robotic limbs will mean less scratching overall var/can_scratch = scratch && !M.incapacitated() && get_location_accessible(M, picked_bodypart) - M.visible_message("[can_scratch ? "[M] scratches [M.p_their()] [bodypart.name]." : ""]", "Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]") + M.visible_message("[can_scratch ? span_warning("[M] scratches [M.p_their()] [bodypart.name].") : ""]", span_warning("Your [bodypart.name] itches. [can_scratch ? " You scratch it." : ""]")) if(can_scratch) bodypart.receive_damage(0.5) diff --git a/code/datums/diseases/advance/symptoms/narcolepsy.dm b/code/datums/diseases/advance/symptoms/narcolepsy.dm index 73daf3e7120a..322bed7af642 100644 --- a/code/datums/diseases/advance/symptoms/narcolepsy.dm +++ b/code/datums/diseases/advance/symptoms/narcolepsy.dm @@ -65,28 +65,28 @@ Bonus switch(A.stage) if(1) if(prob(10)) - to_chat(M, "You feel tired.") + to_chat(M, span_warning("You feel tired.")) if(2) if(prob(10)) - to_chat(M, "You feel very tired.") + to_chat(M, span_warning("You feel very tired.")) sleepy_ticks += rand(10,14) if(stamina) M.adjustStaminaLoss(10) if(3) if(prob(15)) - to_chat(M, "You try to focus on staying awake.") + to_chat(M, span_warning("You try to focus on staying awake.")) sleepy_ticks += rand(10,14) if(stamina) M.adjustStaminaLoss(15) if(4) if(prob(20)) - to_chat(M, "You nod off for a moment.") + to_chat(M, span_warning("You nod off for a moment.")) sleepy_ticks += rand(10,14) if(stamina) M.adjustStaminaLoss(20) if(5) if(prob(25)) - to_chat(M, "[pick("So tired...","You feel very sleepy.","You have a hard time keeping your eyes open.","You try to stay awake.")]") + to_chat(M, span_warning("[pick("So tired...","You feel very sleepy.","You have a hard time keeping your eyes open.","You try to stay awake.")]")) M.drowsyness = max(M.drowsyness, 2) sleepy_ticks += rand(10,14) if(stamina) diff --git a/code/datums/diseases/advance/symptoms/necropolis.dm b/code/datums/diseases/advance/symptoms/necropolis.dm index 413f22b2a7f4..ba7849270486 100644 --- a/code/datums/diseases/advance/symptoms/necropolis.dm +++ b/code/datums/diseases/advance/symptoms/necropolis.dm @@ -40,12 +40,12 @@ if(tendrils) tendril(A) if(prob(base_message_chance)) - to_chat(M, "Your skin feels scaly") + to_chat(M, span_notice("Your skin feels scaly")) if(3, 4) if(tendrils) tendril(A) if(prob(base_message_chance)) - to_chat(M, "[pick("Your skin is hard.", "You feel stronger.", "You feel powerful.")]") + to_chat(M, span_notice("[pick("Your skin is hard.", "You feel stronger.", "You feel powerful.")]")) if(5) if(tendrils) tendril(A) @@ -64,7 +64,7 @@ M.weather_immunities |= "lava" else if(prob(base_message_chance)) - to_chat(M, "[pick("Your skin has become a hardened carapace", "Your strength is superhuman.", "You feel invincible.")]") + to_chat(M, span_notice("[pick("Your skin has become a hardened carapace", "Your strength is superhuman.", "You feel invincible.")]")) if(tendrils) tendril(A) return @@ -91,7 +91,7 @@ if(!.) return var/mob/living/carbon/M = A.affected_mob - to_chat(M, "You feel weakened as the necropolis' blessing leaves your body.") + to_chat(M, span_danger("You feel weakened as the necropolis' blessing leaves your body.")) M.remove_movespeed_modifier(MOVESPEED_ID_NECRO_VIRUS_SLOWDOWN) M.dna.species.punchdamagelow = initial(M.dna.species.punchdamagelow) M.dna.species.punchdamagehigh = initial(M.dna.species.punchdamagehigh) diff --git a/code/datums/diseases/advance/symptoms/oxygen.dm b/code/datums/diseases/advance/symptoms/oxygen.dm index 7e7ba9fffeb3..07ca376b2097 100644 --- a/code/datums/diseases/advance/symptoms/oxygen.dm +++ b/code/datums/diseases/advance/symptoms/oxygen.dm @@ -52,7 +52,7 @@ Bonus M.blood_volume += 1 else if(prob(base_message_chance)) - to_chat(M, "[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]") + to_chat(M, span_notice("[pick("Your lungs feel great.", "You realize you haven't been breathing.", "You don't feel the need to breathe.")]")) return /datum/symptom/oxygen/on_stage_change(new_stage, datum/disease/advance/A) diff --git a/code/datums/diseases/advance/symptoms/radiation.dm b/code/datums/diseases/advance/symptoms/radiation.dm index ee0723be3e3f..e2af3edc46f9 100644 --- a/code/datums/diseases/advance/symptoms/radiation.dm +++ b/code/datums/diseases/advance/symptoms/radiation.dm @@ -33,10 +33,10 @@ switch(A.stage) if(1) if(prob(10)) - to_chat(M, "You feel off...") + to_chat(M, span_notice("You feel off...")) if(2, 3) if(prob(10)) - to_chat(M, "You feel like the atoms inside you are beginning to split...") + to_chat(M, span_danger("You feel like the atoms inside you are beginning to split...")) if(4, 5) if(fastrads) radiate(M, 3) @@ -44,12 +44,12 @@ radiate(M, 10) if(radothers && A.stage == 5) if(prob(5)) - M.visible_message("[M] glows green for a moment!", \ - "You feel a massive wave of pain flow through you!") + M.visible_message(span_danger("[M] glows green for a moment!"), \ + span_userdanger("You feel a massive wave of pain flow through you!")) radiation_pulse(M, 20) /datum/symptom/radiation/proc/radiate(mob/living/carbon/M, chance) if(prob(chance)) - to_chat(M, "You feel a wave of pain throughout your body!") + to_chat(M, span_danger("You feel a wave of pain throughout your body!")) M.radiation += 4 diff --git a/code/datums/diseases/advance/symptoms/sensory.dm b/code/datums/diseases/advance/symptoms/sensory.dm index eaeebd0c4668..2118dd5f6612 100644 --- a/code/datums/diseases/advance/symptoms/sensory.dm +++ b/code/datums/diseases/advance/symptoms/sensory.dm @@ -92,13 +92,13 @@ if(HAS_TRAIT_FROM(M, TRAIT_BLIND, EYE_DAMAGE)) if(prob(20)) - to_chat(M, "Your vision slowly returns...") + to_chat(M, span_notice("Your vision slowly returns...")) M.cure_blind(EYE_DAMAGE) M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(35) else if(HAS_TRAIT_FROM(M, TRAIT_NEARSIGHT, EYE_DAMAGE)) - to_chat(M, "You can finally focus your eyes on distant objects.") + to_chat(M, span_notice("You can finally focus your eyes on distant objects.")) M.cure_nearsighted(EYE_DAMAGE) M.blur_eyes(10) @@ -109,4 +109,4 @@ eyes.applyOrganDamage(-1) else if(prob(base_message_chance)) - to_chat(M, "[pick("Your eyes feel great.","You feel like your eyes can focus more clearly.", "You don't feel the need to blink.","Your ears feel great.","Your healing feels more acute.")]") + to_chat(M, span_notice("[pick("Your eyes feel great.","You feel like your eyes can focus more clearly.", "You don't feel the need to blink.","Your ears feel great.","Your healing feels more acute.")]")) diff --git a/code/datums/diseases/advance/symptoms/shedding.dm b/code/datums/diseases/advance/symptoms/shedding.dm index fd06d093f269..e758205063aa 100644 --- a/code/datums/diseases/advance/symptoms/shedding.dm +++ b/code/datums/diseases/advance/symptoms/shedding.dm @@ -34,17 +34,17 @@ BONUS var/mob/living/M = A.affected_mob if(prob(base_message_chance)) - to_chat(M, "[pick("Your scalp itches.", "Your skin feels flaky.")]") + to_chat(M, span_warning("[pick("Your scalp itches.", "Your skin feels flaky.")]")) if(ishuman(M)) var/mob/living/carbon/human/H = M switch(A.stage) if(3, 4) if(!(H.hair_style == "Bald") && !(H.hair_style == "Balding Hair")) - to_chat(H, "Your hair starts to fall out in clumps...") + to_chat(H, span_warning("Your hair starts to fall out in clumps...")) addtimer(CALLBACK(src, .proc/Shed, H, FALSE), 50) if(5) if(!(H.facial_hair_style == "Shaved") || !(H.hair_style == "Bald")) - to_chat(H, "Your hair starts to fall out in clumps...") + to_chat(H, span_warning("Your hair starts to fall out in clumps...")) addtimer(CALLBACK(src, .proc/Shed, H, TRUE), 50) /datum/symptom/shedding/proc/Shed(mob/living/carbon/human/H, fullbald) diff --git a/code/datums/diseases/advance/symptoms/shivering.dm b/code/datums/diseases/advance/symptoms/shivering.dm index 2c19ad69c1c3..ea2bbb43ad7a 100644 --- a/code/datums/diseases/advance/symptoms/shivering.dm +++ b/code/datums/diseases/advance/symptoms/shivering.dm @@ -48,9 +48,9 @@ Bonus return var/mob/living/carbon/M = A.affected_mob if(!unsafe || A.stage < 4) - to_chat(M, "[pick("You feel cold.", "You shiver.")]") + to_chat(M, span_warning("[pick("You feel cold.", "You shiver.")]")) else - to_chat(M, "[pick("You feel your blood run cold.", "You feel ice in your veins.", "You feel like you can't heat up.", "You shiver violently." )]") + to_chat(M, span_userdanger("[pick("You feel your blood run cold.", "You feel ice in your veins.", "You feel like you can't heat up.", "You shiver violently." )]")) if(M.bodytemperature > BODYTEMP_COLD_DAMAGE_LIMIT || unsafe) Chill(M, A) diff --git a/code/datums/diseases/advance/symptoms/skin.dm b/code/datums/diseases/advance/symptoms/skin.dm index bd166b0e8888..22972ce9e44d 100644 --- a/code/datums/diseases/advance/symptoms/skin.dm +++ b/code/datums/diseases/advance/symptoms/skin.dm @@ -53,7 +53,7 @@ BONUS H.dna.features["mcolor"] = "EEE" //pure white. H.regenerate_icons() else - H.visible_message("[H] looks a bit pale...", "Your skin suddenly appears lighter...") + H.visible_message(span_warning("[H] looks a bit pale..."), span_notice("Your skin suddenly appears lighter...")) /datum/symptom/vitiligo/End(datum/disease/advance/A) . = ..() @@ -120,7 +120,7 @@ BONUS H.dna.features["mcolor"] = "000" //pure black. H.regenerate_icons() else - H.visible_message("[H] looks a bit dark...", "Your skin suddenly appears darker...") + H.visible_message(span_warning("[H] looks a bit dark..."), span_notice("Your skin suddenly appears darker...")) /datum/symptom/revitiligo/End(datum/disease/advance/A) . = ..() @@ -171,4 +171,4 @@ BONUS M.reagents.add_reagent(color, 5) else if (prob(50)) // spam - M.visible_message("[M] looks rather vibrant...", "The colors, man, the colors...") + M.visible_message(span_warning("[M] looks rather vibrant..."), span_notice("The colors, man, the colors...")) diff --git a/code/datums/diseases/advance/symptoms/vision.dm b/code/datums/diseases/advance/symptoms/vision.dm index 74c332e0a5a7..bf35cb63bf23 100644 --- a/code/datums/diseases/advance/symptoms/vision.dm +++ b/code/datums/diseases/advance/symptoms/vision.dm @@ -53,9 +53,9 @@ Bonus switch(A.stage) if(1, 2) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "Your eyes itch.") + to_chat(M, span_warning("Your eyes itch.")) if(3, 4) - to_chat(M, "Your eyes burn!") + to_chat(M, span_warning("Your eyes burn!")) M.blur_eyes(10) eyes.applyOrganDamage(1) else @@ -66,11 +66,11 @@ Bonus if(prob(eyes.damage - 10 + 1)) if(!remove_eyes) if(!HAS_TRAIT(M, TRAIT_BLIND)) - to_chat(M, "You go blind!") + to_chat(M, span_userdanger("You go blind!")) eyes.applyOrganDamage(eyes.maxHealth) else - M.visible_message("[M]'s eyes fall out of their sockets!", "Your eyes fall out of their sockets!") + M.visible_message(span_warning("[M]'s eyes fall out of their sockets!"), span_userdanger("Your eyes fall out of their sockets!")) eyes.Remove(M) eyes.forceMove(get_turf(M)) else - to_chat(M, "Your eyes burn horrifically!") + to_chat(M, span_userdanger("Your eyes burn horrifically!")) diff --git a/code/datums/diseases/advance/symptoms/voice_change.dm b/code/datums/diseases/advance/symptoms/voice_change.dm index 1026388aa0d4..6d570ed2b8ba 100644 --- a/code/datums/diseases/advance/symptoms/voice_change.dm +++ b/code/datums/diseases/advance/symptoms/voice_change.dm @@ -57,7 +57,7 @@ Bonus switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("Your throat hurts.", "You clear your throat.")]") + to_chat(M, span_warning("[pick("Your throat hurts.", "You clear your throat.")]")) else if(ishuman(M)) var/mob/living/carbon/human/H = M diff --git a/code/datums/diseases/advance/symptoms/vomit.dm b/code/datums/diseases/advance/symptoms/vomit.dm index 4077aef5e74f..660ed4d1f0ff 100644 --- a/code/datums/diseases/advance/symptoms/vomit.dm +++ b/code/datums/diseases/advance/symptoms/vomit.dm @@ -59,7 +59,7 @@ Bonus switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance) && !suppress_warning) - to_chat(M, "[pick("You feel nauseated.", "You feel like you're going to throw up!")]") + to_chat(M, span_warning("[pick("You feel nauseated.", "You feel like you're going to throw up!")]")) else vomit(M) diff --git a/code/datums/diseases/advance/symptoms/weight.dm b/code/datums/diseases/advance/symptoms/weight.dm index 6e11f043868d..45ad97cbfbfd 100644 --- a/code/datums/diseases/advance/symptoms/weight.dm +++ b/code/datums/diseases/advance/symptoms/weight.dm @@ -48,8 +48,8 @@ Bonus switch(A.stage) if(1, 2, 3, 4) if(prob(base_message_chance)) - to_chat(M, "[pick("You feel hungry.", "You crave for food.")]") + to_chat(M, span_warning("[pick("You feel hungry.", "You crave for food.")]")) else - to_chat(M, "[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]") + to_chat(M, span_warning("[pick("So hungry...", "You'd kill someone for a bite of food...", "Hunger cramps seize you...")]")) M.overeatduration = max(M.overeatduration - 100, 0) M.adjust_nutrition(-100) diff --git a/code/datums/diseases/advance/symptoms/youth.dm b/code/datums/diseases/advance/symptoms/youth.dm index da10b8331718..16c2aeffd9a3 100644 --- a/code/datums/diseases/advance/symptoms/youth.dm +++ b/code/datums/diseases/advance/symptoms/youth.dm @@ -40,20 +40,20 @@ BONUS if(1) if(H.age > 41) H.age = 41 - to_chat(H, "You haven't had this much energy in years!") + to_chat(H, span_notice("You haven't had this much energy in years!")) if(2) if(H.age > 36) H.age = 36 - to_chat(H, "You're suddenly in a good mood.") + to_chat(H, span_notice("You're suddenly in a good mood.")) if(3) if(H.age > 31) H.age = 31 - to_chat(H, "You begin to feel more lithe.") + to_chat(H, span_notice("You begin to feel more lithe.")) if(4) if(H.age > 26) H.age = 26 - to_chat(H, "You feel reinvigorated.") + to_chat(H, span_notice("You feel reinvigorated.")) if(5) if(H.age > 21) H.age = 21 - to_chat(H, "You feel like you can take on the world!") + to_chat(H, span_notice("You feel like you can take on the world!")) diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm index 20ecceb224c2..22a453894f1a 100644 --- a/code/datums/diseases/anxiety.dm +++ b/code/datums/diseases/anxiety.dm @@ -16,26 +16,26 @@ switch(stage) if(2) //also changes say, see say.dm if(prob(5)) - to_chat(affected_mob, "You feel anxious.") + to_chat(affected_mob, span_notice("You feel anxious.")) if(3) if(prob(10)) - to_chat(affected_mob, "Your stomach flutters.") + to_chat(affected_mob, span_notice("Your stomach flutters.")) if(prob(5)) - to_chat(affected_mob, "You feel panicky.") + to_chat(affected_mob, span_notice("You feel panicky.")) if(prob(2)) - to_chat(affected_mob, "You're overtaken with panic!") + to_chat(affected_mob, span_danger("You're overtaken with panic!")) affected_mob.confused += (rand(2,3)) if(4) if(prob(10)) - to_chat(affected_mob, "You feel butterflies in your stomach.") + to_chat(affected_mob, span_danger("You feel butterflies in your stomach.")) if(prob(5)) - affected_mob.visible_message("[affected_mob] stumbles around in a panic.", \ - "You have a panic attack!") + affected_mob.visible_message(span_danger("[affected_mob] stumbles around in a panic."), \ + span_userdanger("You have a panic attack!")) affected_mob.confused += (rand(6,8)) affected_mob.jitteriness += (rand(6,8)) if(prob(2)) - affected_mob.visible_message("[affected_mob] coughs up butterflies!", \ - "You cough up butterflies!") + affected_mob.visible_message(span_danger("[affected_mob] coughs up butterflies!"), \ + span_userdanger("You cough up butterflies!")) new /mob/living/simple_animal/butterfly(affected_mob.loc) new /mob/living/simple_animal/butterfly(affected_mob.loc) return \ No newline at end of file diff --git a/code/datums/diseases/appendicitis.dm b/code/datums/diseases/appendicitis.dm index 31f102efd511..b73182fece91 100644 --- a/code/datums/diseases/appendicitis.dm +++ b/code/datums/diseases/appendicitis.dm @@ -27,7 +27,7 @@ A.inflamed = 1 A.update_icon() if(prob(3)) - to_chat(affected_mob, "You feel a stabbing pain in your abdomen!") + to_chat(affected_mob, span_warning("You feel a stabbing pain in your abdomen!")) affected_mob.adjustOrganLoss(ORGAN_SLOT_APPENDIX, 5) affected_mob.Stun(rand(40,60)) affected_mob.adjustToxLoss(1) diff --git a/code/datums/diseases/beesease.dm b/code/datums/diseases/beesease.dm index 074bda0560f8..6d944640415e 100644 --- a/code/datums/diseases/beesease.dm +++ b/code/datums/diseases/beesease.dm @@ -17,23 +17,23 @@ switch(stage) if(2) //also changes say, see say.dm if(prob(2)) - to_chat(affected_mob, "You taste honey in your mouth.") + to_chat(affected_mob, span_notice("You taste honey in your mouth.")) if(3) if(prob(10)) - to_chat(affected_mob, "Your stomach rumbles.") + to_chat(affected_mob, span_notice("Your stomach rumbles.")) if(prob(2)) - to_chat(affected_mob, "Your stomach stings painfully.") + to_chat(affected_mob, span_danger("Your stomach stings painfully.")) if(prob(20)) affected_mob.adjustToxLoss(2) affected_mob.updatehealth() if(4) if(prob(10)) - affected_mob.visible_message("[affected_mob] buzzes.", \ - "Your stomach buzzes violently!") + affected_mob.visible_message(span_danger("[affected_mob] buzzes."), \ + span_userdanger("Your stomach buzzes violently!")) if(prob(5)) - to_chat(affected_mob, "You feel something moving in your throat.") + to_chat(affected_mob, span_danger("You feel something moving in your throat.")) if(prob(1)) - affected_mob.visible_message("[affected_mob] coughs up a swarm of bees!", \ - "You cough up a swarm of bees!") + affected_mob.visible_message(span_danger("[affected_mob] coughs up a swarm of bees!"), \ + span_userdanger("You cough up a swarm of bees!")) new /mob/living/simple_animal/hostile/poison/bees(affected_mob.loc) return \ No newline at end of file diff --git a/code/datums/diseases/brainrot.dm b/code/datums/diseases/brainrot.dm index 57628efe3627..cbeb91cce3fa 100644 --- a/code/datums/diseases/brainrot.dm +++ b/code/datums/diseases/brainrot.dm @@ -22,7 +22,7 @@ if(prob(2)) affected_mob.emote("yawn") if(prob(2)) - to_chat(affected_mob, "You don't feel like yourself.") + to_chat(affected_mob, span_danger("You don't feel like yourself.")) if(prob(5)) affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 1, 170) affected_mob.updatehealth() @@ -35,7 +35,7 @@ affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2, 170) affected_mob.updatehealth() if(prob(2)) - to_chat(affected_mob, "Your try to remember something important...but can't.") + to_chat(affected_mob, span_danger("Your try to remember something important...but can't.")) if(4) if(prob(2)) @@ -46,10 +46,10 @@ affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 3, 170) affected_mob.updatehealth() if(prob(2)) - to_chat(affected_mob, "Strange buzzing fills your head, removing all thoughts.") + to_chat(affected_mob, span_danger("Strange buzzing fills your head, removing all thoughts.")) if(prob(3)) - to_chat(affected_mob, "You lose consciousness...") - affected_mob.visible_message("[affected_mob] suddenly collapses") + to_chat(affected_mob, span_danger("You lose consciousness...")) + affected_mob.visible_message(span_warning("[affected_mob] suddenly collapses")) affected_mob.Unconscious(rand(100,200)) if(prob(1)) affected_mob.emote("snore") diff --git a/code/datums/diseases/cold.dm b/code/datums/diseases/cold.dm index 7115a570591a..8e04f4663ab5 100644 --- a/code/datums/diseases/cold.dm +++ b/code/datums/diseases/cold.dm @@ -15,11 +15,11 @@ switch(stage) if(2) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(40)) //changed FROM prob(10) until sleeping is fixed - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if(prob(1) && prob(5)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if(prob(1)) @@ -27,16 +27,16 @@ if(prob(1)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your throat feels sore.") + to_chat(affected_mob, span_danger("Your throat feels sore.")) if(prob(1)) - to_chat(affected_mob, "Mucous runs down the back of your throat.") + to_chat(affected_mob, span_danger("Mucous runs down the back of your throat.")) if(3) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(25)) //changed FROM prob(5) until sleeping is fixed - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if(prob(1) && prob(1)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if(prob(1)) @@ -44,9 +44,9 @@ if(prob(1)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your throat feels sore.") + to_chat(affected_mob, span_danger("Your throat feels sore.")) if(prob(1)) - to_chat(affected_mob, "Mucous runs down the back of your throat.") + to_chat(affected_mob, span_danger("Mucous runs down the back of your throat.")) if(prob(1) && prob(50)) if(!affected_mob.disease_resistances.Find(/datum/disease/flu)) var/datum/disease/Flu = new /datum/disease/flu() diff --git a/code/datums/diseases/cold9.dm b/code/datums/diseases/cold9.dm index 47f391ecf78d..049c3c98876c 100644 --- a/code/datums/diseases/cold9.dm +++ b/code/datums/diseases/cold9.dm @@ -16,7 +16,7 @@ if(2) affected_mob.adjust_bodytemperature(-10) if(prob(1) && prob(10)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if(prob(1)) @@ -24,9 +24,9 @@ if(prob(1)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your throat feels sore.") + to_chat(affected_mob, span_danger("Your throat feels sore.")) if(prob(5)) - to_chat(affected_mob, "You feel stiff.") + to_chat(affected_mob, span_danger("You feel stiff.")) if(3) affected_mob.adjust_bodytemperature(-20) if(prob(1)) @@ -34,6 +34,6 @@ if(prob(1)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your throat feels sore.") + to_chat(affected_mob, span_danger("Your throat feels sore.")) if(prob(10)) - to_chat(affected_mob, "You feel stiff.") \ No newline at end of file + to_chat(affected_mob, span_danger("You feel stiff.")) \ No newline at end of file diff --git a/code/datums/diseases/decloning.dm b/code/datums/diseases/decloning.dm index d6522dda3aea..1ee7e82204c4 100644 --- a/code/datums/diseases/decloning.dm +++ b/code/datums/diseases/decloning.dm @@ -32,7 +32,7 @@ if(prob(3)) affected_mob.adjustCloneLoss(1) if(prob(2)) - to_chat(affected_mob, "Your skin feels strange.") + to_chat(affected_mob, span_danger("Your skin feels strange.")) if(4) if(prob(2)) @@ -50,10 +50,10 @@ if(prob(2)) affected_mob.emote("drool") if(prob(5)) - to_chat(affected_mob, "Your skin starts degrading!") + to_chat(affected_mob, span_danger("Your skin starts degrading!")) if(prob(10)) affected_mob.adjustCloneLoss(5) affected_mob.adjustOrganLoss(ORGAN_SLOT_BRAIN, 2, 170) if(affected_mob.cloneloss >= 100) - affected_mob.visible_message("[affected_mob] skin turns to dust!", "Your skin turns to dust!") + affected_mob.visible_message(span_danger("[affected_mob] skin turns to dust!"), "Your skin turns to dust!") affected_mob.dust() \ No newline at end of file diff --git a/code/datums/diseases/dna_spread.dm b/code/datums/diseases/dna_spread.dm index 3a67230d36ec..1d469c79bcfc 100644 --- a/code/datums/diseases/dna_spread.dm +++ b/code/datums/diseases/dna_spread.dm @@ -36,11 +36,11 @@ if(prob(8)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your muscles ache.") + to_chat(affected_mob, span_danger("Your muscles ache.")) if(prob(20)) affected_mob.take_bodypart_damage(1) if(prob(1)) - to_chat(affected_mob, "Your stomach hurts.") + to_chat(affected_mob, span_danger("Your stomach hurts.")) if(prob(20)) affected_mob.adjustToxLoss(2) affected_mob.updatehealth() @@ -50,7 +50,7 @@ original_dna = new affected_mob.dna.type affected_mob.dna.copy_dna(original_dna) - to_chat(affected_mob, "You don't feel like yourself..") + to_chat(affected_mob, span_danger("You don't feel like yourself..")) var/datum/dna/transform_dna = strain_data["dna"] transform_dna.transfer_identity(affected_mob, transfer_SE = 1) @@ -70,5 +70,5 @@ affected_mob.updateappearance(mutcolor_update=1) affected_mob.domutcheck() - to_chat(affected_mob, "You feel more like yourself.") + to_chat(affected_mob, span_notice("You feel more like yourself.")) return ..() diff --git a/code/datums/diseases/fake_gbs.dm b/code/datums/diseases/fake_gbs.dm index 37628a5502f1..a5450165029f 100644 --- a/code/datums/diseases/fake_gbs.dm +++ b/code/datums/diseases/fake_gbs.dm @@ -22,7 +22,7 @@ else if(prob(5)) affected_mob.emote("gasp") if(prob(10)) - to_chat(affected_mob, "You're starting to feel very weak...") + to_chat(affected_mob, span_danger("You're starting to feel very weak...")) if(4) if(prob(10)) affected_mob.emote("cough") diff --git a/code/datums/diseases/flu.dm b/code/datums/diseases/flu.dm index 62bb3de8df41..2a650b355e37 100644 --- a/code/datums/diseases/flu.dm +++ b/code/datums/diseases/flu.dm @@ -16,7 +16,7 @@ switch(stage) if(2) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(20)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) stage-- return if(prob(1)) @@ -24,18 +24,18 @@ if(prob(1)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your muscles ache.") + to_chat(affected_mob, span_danger("Your muscles ache.")) if(prob(20)) affected_mob.take_bodypart_damage(1) if(prob(1)) - to_chat(affected_mob, "Your stomach hurts.") + to_chat(affected_mob, span_danger("Your stomach hurts.")) if(prob(20)) affected_mob.adjustToxLoss(1) affected_mob.updatehealth() if(3) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(15)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) stage-- return if(prob(1)) @@ -43,11 +43,11 @@ if(prob(1)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "Your muscles ache.") + to_chat(affected_mob, span_danger("Your muscles ache.")) if(prob(20)) affected_mob.take_bodypart_damage(1) if(prob(1)) - to_chat(affected_mob, "Your stomach hurts.") + to_chat(affected_mob, span_danger("Your stomach hurts.")) if(prob(20)) affected_mob.adjustToxLoss(1) affected_mob.updatehealth() diff --git a/code/datums/diseases/fluspanish.dm b/code/datums/diseases/fluspanish.dm index 3297877fe910..8a4e3edf4e38 100644 --- a/code/datums/diseases/fluspanish.dm +++ b/code/datums/diseases/fluspanish.dm @@ -21,7 +21,7 @@ if(prob(5)) affected_mob.emote("cough") if(prob(1)) - to_chat(affected_mob, "You're burning in your own skin!") + to_chat(affected_mob, span_danger("You're burning in your own skin!")) affected_mob.take_bodypart_damage(0,5) if(3) @@ -31,6 +31,6 @@ if(prob(5)) affected_mob.emote("cough") if(prob(5)) - to_chat(affected_mob, "You're burning in your own skin!") + to_chat(affected_mob, span_danger("You're burning in your own skin!")) affected_mob.take_bodypart_damage(0,5) return diff --git a/code/datums/diseases/gastrolisis.dm b/code/datums/diseases/gastrolisis.dm index b4b51258424f..9f1ba1be626d 100644 --- a/code/datums/diseases/gastrolisis.dm +++ b/code/datums/diseases/gastrolisis.dm @@ -34,8 +34,8 @@ if(!eyes && prob(5)) var/obj/item/organ/eyes/snail/new_eyes = new() new_eyes.Insert(affected_mob, drop_if_replaced = TRUE) - affected_mob.visible_message("[affected_mob]'s eyes fall out, with snail eyes taking its place!", \ - "You scream in pain as your eyes are pushed out by your new snail eyes!") + affected_mob.visible_message(span_warning("[affected_mob]'s eyes fall out, with snail eyes taking its place!"), \ + span_userdanger("You scream in pain as your eyes are pushed out by your new snail eyes!")) affected_mob.emote("scream") return var/obj/item/shell = affected_mob.get_item_by_slot(SLOT_BACK) @@ -44,20 +44,20 @@ if(!shell && prob(5)) if(affected_mob.dropItemToGround(affected_mob.get_item_by_slot(SLOT_BACK))) affected_mob.equip_to_slot_or_del(new /obj/item/storage/backpack/snail(affected_mob), SLOT_BACK) - affected_mob.visible_message("[affected_mob] grows a grotesque shell on their back!", \ - "You scream in pain as a shell pushes itself out from under your skin!") + affected_mob.visible_message(span_warning("[affected_mob] grows a grotesque shell on their back!"), \ + span_userdanger("You scream in pain as a shell pushes itself out from under your skin!")) affected_mob.emote("scream") return var/obj/item/organ/tongue/tongue = locate(/obj/item/organ/tongue/snail) in affected_mob.internal_organs if(!tongue && prob(5)) var/obj/item/organ/tongue/snail/new_tongue = new() new_tongue.Insert(affected_mob) - to_chat(affected_mob, "You feel your speech slow down") + to_chat(affected_mob, span_userdanger("You feel your speech slow down")) return if(shell && eyes && tongue && prob(5)) affected_mob.set_species(/datum/species/snail) - affected_mob.visible_message("[affected_mob] turns into a snail!", \ - "You turned into a snail person! You feel an urge to cccrrraaawwwlll...") + affected_mob.visible_message(span_warning("[affected_mob] turns into a snail!"), \ + span_boldnotice("You turned into a snail person! You feel an urge to cccrrraaawwwlll...")) cure() if(prob(10)) affected_mob.emote("gag") diff --git a/code/datums/diseases/gbs.dm b/code/datums/diseases/gbs.dm index 8ac199685570..f9adaf149974 100644 --- a/code/datums/diseases/gbs.dm +++ b/code/datums/diseases/gbs.dm @@ -22,9 +22,9 @@ if(prob(5)) affected_mob.emote("gasp") if(prob(10)) - to_chat(affected_mob, "Your body hurts all over!") + to_chat(affected_mob, span_danger("Your body hurts all over!")) if(4) - to_chat(affected_mob, "Your body feels as if it's trying to rip itself apart!") + to_chat(affected_mob, span_userdanger("Your body feels as if it's trying to rip itself apart!")) if(prob(50)) affected_mob.gib() else diff --git a/code/datums/diseases/heart_failure.dm b/code/datums/diseases/heart_failure.dm index 68cadb44cbef..f48ec0702b2b 100644 --- a/code/datums/diseases/heart_failure.dm +++ b/code/datums/diseases/heart_failure.dm @@ -30,25 +30,25 @@ switch(stage) if(1 to 2) if(prob(2)) - to_chat(H, "You feel [pick("discomfort", "pressure", "a burning sensation", "pain")] in your chest.") + to_chat(H, span_warning("You feel [pick("discomfort", "pressure", "a burning sensation", "pain")] in your chest.")) if(prob(2)) - to_chat(H, "You feel dizzy.") + to_chat(H, span_warning("You feel dizzy.")) H.confused += 6 if(prob(3)) - to_chat(H, "You feel [pick("full", "nauseated", "sweaty", "weak", "tired", "short on breath", "uneasy")].") + to_chat(H, span_warning("You feel [pick("full", "nauseated", "sweaty", "weak", "tired", "short on breath", "uneasy")].")) if(3 to 4) if(!sound) H.playsound_local(H, 'sound/health/slowbeat.ogg',40,0, channel = CHANNEL_HEARTBEAT) sound = TRUE if(prob(3)) - to_chat(H, "You feel a sharp pain in your chest!") + to_chat(H, span_danger("You feel a sharp pain in your chest!")) if(prob(25)) affected_mob.vomit(95) H.emote("cough") H.Paralyze(40) H.losebreath += 4 if(prob(3)) - to_chat(H, "You feel very weak and dizzy...") + to_chat(H, span_danger("You feel very weak and dizzy...")) H.confused += 8 H.adjustStaminaLoss(40) H.emote("cough") @@ -56,7 +56,7 @@ H.stop_sound_channel(CHANNEL_HEARTBEAT) H.playsound_local(H, 'sound/effects/singlebeat.ogg', 100, 0) if(H.stat == CONSCIOUS) - H.visible_message("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!") + H.visible_message(span_userdanger("[H] clutches at [H.p_their()] chest as if [H.p_their()] heart is stopping!")) H.adjustStaminaLoss(60) H.set_heartattack(TRUE) H.reagents.add_reagent(/datum/reagent/medicine/corazone, 3) // To give the victim a final chance to shock their heart before losing consciousness diff --git a/code/datums/diseases/jitters.dm b/code/datums/diseases/jitters.dm index 3096c138f785..3dc80b31ec09 100644 --- a/code/datums/diseases/jitters.dm +++ b/code/datums/diseases/jitters.dm @@ -22,13 +22,13 @@ if(prob(20)) affected_mob.Jitter(2) if(prob(10)) - to_chat(affected_mob, "You feel ants in your legs.") + to_chat(affected_mob, span_notice("You feel ants in your legs.")) if(3) if(prob(40)) affected_mob.Jitter(2) if(prob(20)) - to_chat(affected_mob, "You feel a million pricks on your legs!") + to_chat(affected_mob, span_danger("You feel a million pricks on your legs!")) if((affected_mob.mobility_flags & MOBILITY_MOVE) && prob(15)) affected_mob.throw_at(target, 4, 3, spin = FALSE, diagonals_first = TRUE) playsound(affected_mob, 'sound/weapons/fwoosh.ogg', 50, 1, 1) - affected_mob.visible_message("[affected_mob] uncontrollably leaps forward!") + affected_mob.visible_message(span_warning("[affected_mob] uncontrollably leaps forward!")) diff --git a/code/datums/diseases/magnitis.dm b/code/datums/diseases/magnitis.dm index 29e6657e1313..bb79356abb39 100644 --- a/code/datums/diseases/magnitis.dm +++ b/code/datums/diseases/magnitis.dm @@ -18,7 +18,7 @@ switch(stage) if(2) if(prob(2)) - to_chat(affected_mob, "You feel a slight shock course through your body.") + to_chat(affected_mob, span_danger("You feel a slight shock course through your body.")) if(prob(2)) for(var/obj/M in orange(2,affected_mob)) if(!M.anchored && (M.flags_1 & CONDUCT_1)) @@ -29,9 +29,9 @@ step_towards(S,affected_mob) if(3) if(prob(2)) - to_chat(affected_mob, "You feel a strong shock course through your body.") + to_chat(affected_mob, span_danger("You feel a strong shock course through your body.")) if(prob(2)) - to_chat(affected_mob, "You feel like clowning around.") + to_chat(affected_mob, span_danger("You feel like clowning around.")) if(prob(4)) for(var/obj/M in orange(4,affected_mob)) if(!M.anchored && (M.flags_1 & CONDUCT_1)) @@ -48,9 +48,9 @@ step_towards(S,affected_mob) if(4) if(prob(2)) - to_chat(affected_mob, "You feel a powerful shock course through your body.") + to_chat(affected_mob, span_danger("You feel a powerful shock course through your body.")) if(prob(2)) - to_chat(affected_mob, "You query upon the nature of miracles.") + to_chat(affected_mob, span_danger("You query upon the nature of miracles.")) if(prob(8)) for(var/obj/M in orange(6,affected_mob)) if(!M.anchored && (M.flags_1 & CONDUCT_1)) diff --git a/code/datums/diseases/parrotpossession.dm b/code/datums/diseases/parrotpossession.dm index 68e962055aa4..7598d9444e0f 100644 --- a/code/datums/diseases/parrotpossession.dm +++ b/code/datums/diseases/parrotpossession.dm @@ -26,5 +26,5 @@ /datum/disease/parrot_possession/cure() if(parrot && parrot.loc == affected_mob) parrot.forceMove(affected_mob.drop_location()) - affected_mob.visible_message("[parrot] is violently driven out of [affected_mob]!", "[parrot] bursts out of your chest!") + affected_mob.visible_message(span_danger("[parrot] is violently driven out of [affected_mob]!"), span_userdanger("[parrot] bursts out of your chest!")) ..() diff --git a/code/datums/diseases/pierrot_throat.dm b/code/datums/diseases/pierrot_throat.dm index 24ccf6d7f847..3b0e7f9ff896 100644 --- a/code/datums/diseases/pierrot_throat.dm +++ b/code/datums/diseases/pierrot_throat.dm @@ -16,13 +16,13 @@ switch(stage) if(1) if(prob(10)) - to_chat(affected_mob, "You feel a little silly.") + to_chat(affected_mob, span_danger("You feel a little silly.")) if(2) if(prob(10)) - to_chat(affected_mob, "You start seeing rainbows.") + to_chat(affected_mob, span_danger("You start seeing rainbows.")) if(3) if(prob(10)) - to_chat(affected_mob, "Your thoughts are interrupted by a loud HONK!") + to_chat(affected_mob, span_danger("Your thoughts are interrupted by a loud HONK!")) if(4) if(prob(5)) affected_mob.say( pick( list("HONK!", "Honk!", "Honk.", "Honk?", "Honk!!", "Honk?!", "Honk...") ) , forced = "pierrot's throat") diff --git a/code/datums/diseases/retrovirus.dm b/code/datums/diseases/retrovirus.dm index c8ffe012981d..81cb105cda5e 100644 --- a/code/datums/diseases/retrovirus.dm +++ b/code/datums/diseases/retrovirus.dm @@ -32,38 +32,38 @@ if(1) if(restcure) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(30)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if (prob(8)) - to_chat(affected_mob, "Your head hurts.") + to_chat(affected_mob, span_danger("Your head hurts.")) if (prob(9)) to_chat(affected_mob, "You feel a tingling sensation in your chest.") if (prob(9)) - to_chat(affected_mob, "You feel angry.") + to_chat(affected_mob, span_danger("You feel angry.")) if(2) if(restcure) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(20)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if (prob(8)) - to_chat(affected_mob, "Your skin feels loose.") + to_chat(affected_mob, span_danger("Your skin feels loose.")) if (prob(10)) to_chat(affected_mob, "You feel very strange.") if (prob(4)) - to_chat(affected_mob, "You feel a stabbing pain in your head!") + to_chat(affected_mob, span_danger("You feel a stabbing pain in your head!")) affected_mob.Unconscious(40) if (prob(4)) - to_chat(affected_mob, "Your stomach churns.") + to_chat(affected_mob, span_danger("Your stomach churns.")) if(3) if(restcure) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(20)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if (prob(10)) - to_chat(affected_mob, "Your entire body vibrates.") + to_chat(affected_mob, span_danger("Your entire body vibrates.")) if (prob(35)) if(prob(50)) @@ -74,7 +74,7 @@ if(4) if(restcure) if(!(affected_mob.mobility_flags & MOBILITY_STAND) && prob(5)) - to_chat(affected_mob, "You feel better.") + to_chat(affected_mob, span_notice("You feel better.")) cure() return if (prob(60)) diff --git a/code/datums/diseases/rhumba_beat.dm b/code/datums/diseases/rhumba_beat.dm index de9b66f27e46..db8266bf04f8 100644 --- a/code/datums/diseases/rhumba_beat.dm +++ b/code/datums/diseases/rhumba_beat.dm @@ -21,14 +21,14 @@ affected_mob.adjustFireLoss(5) affected_mob.updatehealth() if(prob(1)) - to_chat(affected_mob, "You feel strange...") + to_chat(affected_mob, span_danger("You feel strange...")) if(3) if(prob(5)) - to_chat(affected_mob, "You feel the urge to dance...") + to_chat(affected_mob, span_danger("You feel the urge to dance...")) else if(prob(5)) affected_mob.emote("gasp") else if(prob(10)) - to_chat(affected_mob, "You feel the need to chick chicky boom...") + to_chat(affected_mob, span_danger("You feel the need to chick chicky boom...")) if(4) if(prob(20)) if (prob(50)) @@ -36,9 +36,9 @@ affected_mob.IgniteMob() else affected_mob.emote("gasp") - to_chat(affected_mob, "You feel a burning beat inside...") + to_chat(affected_mob, span_danger("You feel a burning beat inside...")) if(5) - to_chat(affected_mob, "Your body is unable to contain the Rhumba Beat...") + to_chat(affected_mob, span_danger("Your body is unable to contain the Rhumba Beat...")) if(prob(50)) explosion(get_turf(affected_mob), -1, 0, 2, 3, 0, 2) // This is equivalent to a lvl 1 fireball else diff --git a/code/datums/diseases/sleepy.dm b/code/datums/diseases/sleepy.dm index c39fb54d544e..8e61dd03c574 100644 --- a/code/datums/diseases/sleepy.dm +++ b/code/datums/diseases/sleepy.dm @@ -20,15 +20,15 @@ if(prob(5)) affected_mob.emote("yawn") if(prob(3)) - to_chat(affected_mob, "Your muscles feel tired.") + to_chat(affected_mob, span_danger("Your muscles feel tired.")) if(prob(20)) affected_mob.adjustStaminaLoss(5) if(prob(5)) - to_chat(affected_mob, "A nap would be good right about now.") + to_chat(affected_mob, span_danger("A nap would be good right about now.")) if(prob(10)) affected_mob.adjustStaminaLoss(3) if(prob(3)) - to_chat(affected_mob, "You feel numb.") + to_chat(affected_mob, span_danger("You feel numb.")) if(prob(20)) affected_mob.adjustStaminaLoss(8) @@ -36,27 +36,27 @@ if(prob(8)) affected_mob.emote("yawn") if(prob(3)) - to_chat(affected_mob, "Your muscles feel very weak.") + to_chat(affected_mob, span_danger("Your muscles feel very weak.")) affected_mob.adjustStaminaLoss(10) if(prob(2)) - to_chat(affected_mob, "Your legs buckle beneath you.") + to_chat(affected_mob, span_danger("Your legs buckle beneath you.")) affected_mob.Knockdown(40) if(prob(3)) - to_chat(affected_mob, "You close your eyes... just for a moment.") + to_chat(affected_mob, span_danger("You close your eyes... just for a moment.")) affected_mob.blind_eyes(6) if(prob(3)) - to_chat(affected_mob, "Your legs feel weak.") + to_chat(affected_mob, span_danger("Your legs feel weak.")) affected_mob.confused = max(affected_mob.confused, 4) affected_mob.adjustStaminaLoss(10) if(prob(3)) - to_chat(affected_mob, "Your eyes feel strained.") + to_chat(affected_mob, span_danger("Your eyes feel strained.")) affected_mob.blur_eyes(6) if(prob(3)) - to_chat(affected_mob, "[pick("So tired...","You feel very sleepy.","You have a hard time keeping your eyes open.","You try to stay awake.")]") + to_chat(affected_mob, span_warning("[pick("So tired...","You feel very sleepy.","You have a hard time keeping your eyes open.","You try to stay awake.")]")) affected_mob.blur_eyes(6) affected_mob.confused = max(affected_mob.confused, 4) affected_mob.adjustStaminaLoss(15) if(prob(5)) - to_chat(affected_mob, "Just a little nap...") + to_chat(affected_mob, span_danger("Just a little nap...")) affected_mob.SetSleeping(80) return diff --git a/code/datums/diseases/transformation.dm b/code/datums/diseases/transformation.dm index 2154abb29094..5f1c86f4260e 100644 --- a/code/datums/diseases/transformation.dm +++ b/code/datums/diseases/transformation.dm @@ -112,9 +112,9 @@ stage1 = list() stage2 = list() stage3 = list() - stage4 = list("Your back hurts.", "You breathe through your mouth.", - "You have a craving for bananas.", "Your mind feels clouded.") - stage5 = list("You feel like monkeying around.") + stage4 = list(span_warning("Your back hurts."), span_warning("You breathe through your mouth."), + span_warning("You have a craving for bananas."), span_warning("Your mind feels clouded.")) + stage5 = list(span_warning("You feel like monkeying around.")) /datum/disease/transformation/jungle_fever/do_disease_transformation(mob/living/carbon/affected_mob) if(affected_mob.mind && !is_monkey(affected_mob.mind)) @@ -129,10 +129,10 @@ switch(stage) if(2) if(prob(2)) - to_chat(affected_mob, "Your [pick("back", "arm", "leg", "elbow", "head")] itches.") + to_chat(affected_mob, span_notice("Your [pick("back", "arm", "leg", "elbow", "head")] itches.")) if(3) if(prob(4)) - to_chat(affected_mob, "You feel a stabbing pain in your head.") + to_chat(affected_mob, span_danger("You feel a stabbing pain in your head.")) affected_mob.confused += 10 if(4) if(prob(3)) @@ -164,10 +164,10 @@ severity = DISEASE_SEVERITY_BIOHAZARD visibility_flags = 0 stage1 = list() - stage2 = list("Your joints feel stiff.", "Beep...boop..") - stage3 = list("Your joints feel very stiff.", "Your skin feels loose.", "You can feel something move...inside.") - stage4 = list("Your skin feels very loose.", "You can feel... something...inside you.") - stage5 = list("Your skin feels as if it's about to burst off!") + stage2 = list("Your joints feel stiff.", span_danger("Beep...boop..")) + stage3 = list(span_danger("Your joints feel very stiff."), "Your skin feels loose.", span_danger("You can feel something move...inside.")) + stage4 = list(span_danger("Your skin feels very loose."), span_danger("You can feel... something...inside you.")) + stage5 = list(span_danger("Your skin feels as if it's about to burst off!")) new_form = /mob/living/silicon/robot infectable_biotypes = list(MOB_ORGANIC, MOB_UNDEAD, MOB_ROBOTIC) bantype = "Cyborg" @@ -179,7 +179,7 @@ if (prob(8)) affected_mob.say(pick("Beep, boop", "beep, beep!", "Boop...bop"), forced = "robotic transformation") if (prob(4)) - to_chat(affected_mob, "You feel a stabbing pain in your head.") + to_chat(affected_mob, span_danger("You feel a stabbing pain in your head.")) affected_mob.Unconscious(40) if(4) if (prob(20)) @@ -197,10 +197,10 @@ severity = DISEASE_SEVERITY_BIOHAZARD visibility_flags = 0 stage1 = list() - stage2 = list("Your throat feels scratchy.", "Kill...") - stage3 = list("Your throat feels very scratchy.", "Your skin feels tight.", "You can feel something move...inside.") - stage4 = list("Your skin feels very tight.", "Your blood boils!", "You can feel... something...inside you.") - stage5 = list("Your skin feels as if it's about to burst off!") + stage2 = list("Your throat feels scratchy.", span_danger("Kill...")) + stage3 = list(span_danger("Your throat feels very scratchy."), "Your skin feels tight.", span_danger("You can feel something move...inside.")) + stage4 = list(span_danger("Your skin feels very tight."), span_danger("Your blood boils!"), span_danger("You can feel... something...inside you.")) + stage5 = list(span_danger("Your skin feels as if it's about to burst off!")) new_form = /mob/living/carbon/alien/humanoid/hunter bantype = ROLE_ALIEN @@ -209,7 +209,7 @@ switch(stage) if(3) if (prob(4)) - to_chat(affected_mob, "You feel a stabbing pain in your head.") + to_chat(affected_mob, span_danger("You feel a stabbing pain in your head.")) affected_mob.Unconscious(40) if(4) if (prob(20)) @@ -227,9 +227,9 @@ visibility_flags = 0 stage1 = list("You don't feel very well.") stage2 = list("Your skin feels a little slimy.") - stage3 = list("Your appendages are melting away.", "Your limbs begin to lose their shape.") - stage4 = list("You are turning into a slime.") - stage5 = list("You have become a slime.") + stage3 = list(span_danger("Your appendages are melting away."), span_danger("Your limbs begin to lose their shape.")) + stage4 = list(span_danger("You are turning into a slime.")) + stage5 = list(span_danger("You have become a slime.")) new_form = /mob/living/simple_animal/slime/random /datum/disease/transformation/slime/stage_act() @@ -255,9 +255,9 @@ visibility_flags = 0 stage1 = list("BARK.") stage2 = list("You feel the need to wear silly hats.") - stage3 = list("Must... eat... chocolate....", "YAP") - stage4 = list("Visions of washing machines assail your mind!") - stage5 = list("AUUUUUU!!!") + stage3 = list(span_danger("Must... eat... chocolate...."), span_danger("YAP")) + stage4 = list(span_danger("Visions of washing machines assail your mind!")) + stage5 = list(span_danger("AUUUUUU!!!")) new_form = /mob/living/simple_animal/pet/dog/corgi /datum/disease/transformation/corgi/stage_act() @@ -281,9 +281,9 @@ visibility_flags = 0 stage1 = list("Your stomach rumbles.") stage2 = list("Your skin feels saggy.") - stage3 = list("Your appendages are melting away.", "Your limbs begin to lose their shape.") - stage4 = list("You're ravenous.") - stage5 = list("You have become a morph.") + stage3 = list(span_danger("Your appendages are melting away."), span_danger("Your limbs begin to lose their shape.")) + stage4 = list(span_danger("You're ravenous.")) + stage5 = list(span_danger("You have become a morph.")) new_form = /mob/living/simple_animal/hostile/morph infectable_biotypes = list(MOB_ORGANIC, MOB_INORGANIC, MOB_UNDEAD) //magic! @@ -298,9 +298,9 @@ visibility_flags = 0 stage1 = list("Your stomach rumbles.") stage2 = list("Your body feels tired") - stage3 = list("Your skin starts to look transparent", "Your limbs begin to lose their shape.") - stage4 = list("your organs seems to suddenly disappear.") - stage5 = list("You have become a ghost.") + stage3 = list(span_danger("Your skin starts to look transparent"), span_danger("Your limbs begin to lose their shape.")) + stage4 = list(span_danger("your organs seems to suddenly disappear.")) + stage5 = list(span_danger("You have become a ghost.")) new_form = /mob/living/simple_animal/hostile/retaliate/ghost infectable_biotypes = list(MOB_ORGANIC, MOB_INORGANIC, MOB_UNDEAD) //magic! @@ -316,9 +316,9 @@ visibility_flags = 0 stage1 = list("You seem a little lighter in your step.") stage2 = list("You catch yourself smiling for no reason.") - stage3 = list("A cruel sense of calm overcomes you.", "You can't feel your arms!", "You let go of the urge to hurt clowns.") - stage4 = list("You can't feel your arms. It does not bother you anymore.", "You forgive the clown for hurting you.") - stage5 = list("You have become a Gondola.") + stage3 = list(span_danger("A cruel sense of calm overcomes you."), span_danger("You can't feel your arms!"), span_danger("You let go of the urge to hurt clowns.")) + stage4 = list(span_danger("You can't feel your arms. It does not bother you anymore."), span_danger("You forgive the clown for hurting you.")) + stage5 = list(span_danger("You have become a Gondola.")) new_form = /mob/living/simple_animal/pet/gondola /datum/disease/transformation/gondola/stage_act() @@ -340,6 +340,6 @@ if (prob(20)) affected_mob.reagents.add_reagent_list(list(/datum/reagent/pax = 5)) if (prob(2)) - to_chat(affected_mob, "You let go of what you were holding.") + to_chat(affected_mob, span_danger("You let go of what you were holding.")) var/obj/item/I = affected_mob.get_active_held_item() affected_mob.dropItemToGround(I) diff --git a/code/datums/diseases/tuberculosis.dm b/code/datums/diseases/tuberculosis.dm index 1059e4a8e00b..25816c909b0b 100644 --- a/code/datums/diseases/tuberculosis.dm +++ b/code/datums/diseases/tuberculosis.dm @@ -19,42 +19,42 @@ if(2) if(prob(2)) affected_mob.emote("cough") - to_chat(affected_mob, "Your chest hurts.") + to_chat(affected_mob, span_danger("Your chest hurts.")) if(prob(2)) - to_chat(affected_mob, "Your stomach violently rumbles!") + to_chat(affected_mob, span_danger("Your stomach violently rumbles!")) if(prob(5)) - to_chat(affected_mob, "You feel a cold sweat form.") + to_chat(affected_mob, span_danger("You feel a cold sweat form.")) if(4) if(prob(2)) - to_chat(affected_mob, "You see four of everything") + to_chat(affected_mob, span_userdanger("You see four of everything")) affected_mob.Dizzy(5) if(prob(2)) - to_chat(affected_mob, "You feel a sharp pain from your lower chest!") + to_chat(affected_mob, span_danger("You feel a sharp pain from your lower chest!")) affected_mob.adjustOxyLoss(5) affected_mob.emote("gasp") if(prob(10)) - to_chat(affected_mob, "You feel air escape from your lungs painfully.") + to_chat(affected_mob, span_danger("You feel air escape from your lungs painfully.")) affected_mob.adjustOxyLoss(25) affected_mob.emote("gasp") if(5) if(prob(2)) - to_chat(affected_mob, "[pick("You feel your heart slowing...", "You relax and slow your heartbeat.")]") + to_chat(affected_mob, span_userdanger("[pick("You feel your heart slowing...", "You relax and slow your heartbeat.")]")) affected_mob.adjustStaminaLoss(70) if(prob(10)) affected_mob.adjustStaminaLoss(100) - affected_mob.visible_message("[affected_mob] faints!", "You surrender yourself and feel at peace...") + affected_mob.visible_message(span_warning("[affected_mob] faints!"), span_userdanger("You surrender yourself and feel at peace...")) affected_mob.AdjustSleeping(100) if(prob(2)) - to_chat(affected_mob, "You feel your mind relax and your thoughts drift!") + to_chat(affected_mob, span_userdanger("You feel your mind relax and your thoughts drift!")) affected_mob.confused = min(100, affected_mob.confused + 8) if(prob(10)) affected_mob.vomit(20) if(prob(3)) - to_chat(affected_mob, "[pick("Your stomach silently rumbles...", "Your stomach seizes up and falls limp, muscles dead and lifeless.", "You could eat a crayon")]") + to_chat(affected_mob, span_warning("[pick("Your stomach silently rumbles...", "Your stomach seizes up and falls limp, muscles dead and lifeless.", "You could eat a crayon")]")) affected_mob.overeatduration = max(affected_mob.overeatduration - 100, 0) affected_mob.adjust_nutrition(-100) if(prob(15)) - to_chat(affected_mob, "[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]") + to_chat(affected_mob, span_danger("[pick("You feel uncomfortably hot...", "You feel like unzipping your jumpsuit", "You feel like taking off some clothes...")]")) affected_mob.adjust_bodytemperature(40) return diff --git a/code/datums/diseases/wizarditis.dm b/code/datums/diseases/wizarditis.dm index 230a074bb146..f5936d2baf6b 100644 --- a/code/datums/diseases/wizarditis.dm +++ b/code/datums/diseases/wizarditis.dm @@ -31,14 +31,14 @@ STI KALY - blind if(prob(1)&&prob(50)) affected_mob.say(pick("You shall not pass!", "Expeliarmus!", "By Merlins beard!", "Feel the power of the Dark Side!"), forced = "wizarditis") if(prob(1)&&prob(50)) - to_chat(affected_mob, "You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].") + to_chat(affected_mob, span_danger("You feel [pick("that you don't have enough mana", "that the winds of magic are gone", "an urge to summon familiar")].")) if(3) if(prob(1)&&prob(50)) affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!", "STI KALY!", "TARCOL MINTI ZHERI!"), forced = "wizarditis") if(prob(1)&&prob(50)) - to_chat(affected_mob, "You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].") + to_chat(affected_mob, span_danger("You feel [pick("the magic bubbling in your veins","that this location gives you a +1 to INT","an urge to summon familiar")].")) if(4) @@ -46,7 +46,7 @@ STI KALY - blind affected_mob.say(pick("NEC CANTIO!","AULIE OXIN FIERA!","STI KALY!","EI NATH!"), forced = "wizarditis") return if(prob(1)&&prob(50)) - to_chat(affected_mob, "You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].") + to_chat(affected_mob, span_danger("You feel [pick("the tidal wave of raw power building inside","that this location gives you a +2 to INT and +1 to WIS","an urge to teleport")].")) spawn_wizard_clothes(50) if(prob(1)&&prob(1)) teleport() diff --git a/code/datums/dna.dm b/code/datums/dna.dm index 6245fb7c3cd4..fc2db9ead5b9 100644 --- a/code/datums/dna.dm +++ b/code/datums/dna.dm @@ -241,17 +241,17 @@ if(alert) switch(stability) if(70 to 90) - message = "You shiver." + message = span_warning("You shiver.") if(60 to 69) - message = "You feel cold." + message = span_warning("You feel cold.") if(40 to 59) - message = "You feel sick." + message = span_warning("You feel sick.") if(20 to 39) - message = "It feels like your skin is moving." + message = span_warning("It feels like your skin is moving.") if(1 to 19) - message = "You can feel your cells burning." + message = span_warning("You can feel your cells burning.") if(-INFINITY to 0) - message = "You can feel your DNA exploding, we need to do something fast!" + message = span_boldwarning("You can feel your DNA exploding, we need to do something fast!") if(stability <= 0) holder.apply_status_effect(STATUS_EFFECT_DNA_MELT) if(message) @@ -600,21 +600,21 @@ if(1) gain_trauma(/datum/brain_trauma/severe/paralysis/paraplegic) new/obj/vehicle/ridden/wheelchair(get_turf(src)) //don't buckle, because I can't imagine to plethora of things to go through that could otherwise break - to_chat(src, "My flesh turned into a wheelchair and I can't feel my legs.") + to_chat(src, span_warning("My flesh turned into a wheelchair and I can't feel my legs.")) if(2) corgize() if(3) - to_chat(src, "Oh, I actually feel quite alright!") + to_chat(src, span_notice("Oh, I actually feel quite alright!")) if(4) - to_chat(src, "Oh, I actually feel quite alright!") //you thought + to_chat(src, span_notice("Oh, I actually feel quite alright!")) //you thought physiology.damage_resistance = -20000 if(5) - to_chat(src, "Oh, I actually feel quite alright!") + to_chat(src, span_notice("Oh, I actually feel quite alright!")) reagents.add_reagent(/datum/reagent/aslimetoxin, 10) if(6) apply_status_effect(STATUS_EFFECT_GO_AWAY) if(7) - to_chat(src, "Oh, I actually feel quite alright!") + to_chat(src, span_notice("Oh, I actually feel quite alright!")) ForceContractDisease(new/datum/disease/decloning()) //slow acting, non-viral clone damage based GBS if(8) var/list/elligible_organs = list() @@ -624,13 +624,13 @@ if(elligible_organs.len) var/obj/item/organ/O = pick(elligible_organs) O.Remove(src) - visible_message("[src] vomits up their [O.name]!", "You vomit up your [O.name]") //no "vomit up your the heart" + visible_message(span_danger("[src] vomits up their [O.name]!"), "You vomit up your [O.name]") //no "vomit up your the heart" O.forceMove(drop_location()) if(prob(20)) O.animate_atom_living() if(9 to 10) ForceContractDisease(new/datum/disease/gastrolosis()) - to_chat(src, "Oh, I actually feel quite alright!") + to_chat(src, span_notice("Oh, I actually feel quite alright!")) else switch(rand(0,5)) if(0) @@ -651,7 +651,7 @@ else set_species(/datum/species/dullahan) if(4) - visible_message("[src]'s skin melts off!", "Your skin melts off!") + visible_message(span_warning("[src]'s skin melts off!"), span_boldwarning("Your skin melts off!")) spawn_gibs() set_species(/datum/species/skeleton) if(prob(90)) @@ -659,7 +659,7 @@ if(mind) mind.hasSoul = FALSE if(5) - to_chat(src, "LOOK UP!") + to_chat(src, span_phobia("LOOK UP!")) addtimer(CALLBACK(src, .proc/something_horrible_mindmelt), 30) @@ -670,5 +670,5 @@ return eyes.Remove(src) qdel(eyes) - visible_message("[src] looks up and their eyes melt away!", "='userdanger'>I understand now.") + visible_message(span_notice("[src] looks up and their eyes melt away!"), "='userdanger'>I understand now.") addtimer(CALLBACK(src, .proc/adjustOrganLoss, ORGAN_SLOT_BRAIN, 200), 20) diff --git a/code/datums/emotes.dm b/code/datums/emotes.dm index bd3c61efa291..fa3c4fe736f2 100644 --- a/code/datums/emotes.dm +++ b/code/datums/emotes.dm @@ -135,11 +135,11 @@ return FALSE switch(user.stat) if(SOFT_CRIT) - to_chat(user, "You cannot [key] while in a critical condition.") + to_chat(user, span_notice("You cannot [key] while in a critical condition.")) if(UNCONSCIOUS) - to_chat(user, "You cannot [key] while unconscious.") + to_chat(user, span_notice("You cannot [key] while unconscious.")) if(DEAD) - to_chat(user, "You cannot [key] while dead.") + to_chat(user, span_notice("You cannot [key] while dead.")) return FALSE if(restraint_check) if(isliving(user)) @@ -147,12 +147,12 @@ if(L.IsParalyzed() || L.IsStun()) if(!intentional) return FALSE - to_chat(user, "You cannot [key] while stunned.") + to_chat(user, span_notice("You cannot [key] while stunned.")) return FALSE if(restraint_check && user.restrained()) if(!intentional) return FALSE - to_chat(user, "You cannot [key] while restrained.") + to_chat(user, span_notice("You cannot [key] while restrained.")) return FALSE if(isliving(user)) diff --git a/code/datums/helper_datums/teleport.dm b/code/datums/helper_datums/teleport.dm index 79c2fd65eef0..0c2d036dd48f 100644 --- a/code/datums/helper_datums/teleport.dm +++ b/code/datums/helper_datums/teleport.dm @@ -44,7 +44,7 @@ precision = max(rand(1,100)*bagholding.len,100) if(isliving(teleatom)) var/mob/living/MM = teleatom - to_chat(MM, "The bluespace interface on your bag of holding interferes with the teleport!") + to_chat(MM, span_warning("The bluespace interface on your bag of holding interferes with the teleport!")) // if effects are not specified and not explicitly disabled, sparks if ((!effectin || !effectout) && !no_effects) diff --git a/code/datums/holocall.dm b/code/datums/holocall.dm index db39ff081d3a..fe46bf75f01c 100644 --- a/code/datums/holocall.dm +++ b/code/datums/holocall.dm @@ -252,10 +252,10 @@ record.caller_image = holodiskOriginal.record.caller_image record.entries = holodiskOriginal.record.entries.Copy() record.language = holodiskOriginal.record.language - to_chat(user, "You copy the record from [holodiskOriginal] to [src] by connecting the ports!") + to_chat(user, span_notice("You copy the record from [holodiskOriginal] to [src] by connecting the ports!")) name = holodiskOriginal.name else - to_chat(user, "[holodiskOriginal] has no record on it!") + to_chat(user, span_warning("[holodiskOriginal] has no record on it!")) ..() /obj/item/disk/holodisk/proc/build_record() diff --git a/code/datums/martial.dm b/code/datums/martial.dm index e1dc8c6430cf..16623bfcaf50 100644 --- a/code/datums/martial.dm +++ b/code/datums/martial.dm @@ -116,8 +116,8 @@ if(!damage) playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1) - D.visible_message("[A] has attempted to [atk_verb] [D]!", \ - "[A] has attempted to [atk_verb] [D]!", null, COMBAT_MESSAGE_RANGE) + D.visible_message(span_warning("[A] has attempted to [atk_verb] [D]!"), \ + span_userdanger("[A] has attempted to [atk_verb] [D]!"), null, COMBAT_MESSAGE_RANGE) log_combat(A, D, "attempted to [atk_verb]") return FALSE @@ -125,16 +125,16 @@ var/armor_block = D.run_armor_check(affecting, "melee") playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1) - D.visible_message("[A] has [atk_verb]ed [D]!", \ - "[A] has [atk_verb]ed [D]!", null, COMBAT_MESSAGE_RANGE) + D.visible_message(span_danger("[A] has [atk_verb]ed [D]!"), \ + span_userdanger("[A] has [atk_verb]ed [D]!"), null, COMBAT_MESSAGE_RANGE) D.apply_damage(damage, A.dna.species.attack_type, affecting, armor_block) log_combat(A, D, "punched") if((D.stat != DEAD) && damage >= A.dna.species.punchstunthreshold) - D.visible_message("[A] has knocked [D] down!!", \ - "[A] has knocked [D] down!") + D.visible_message(span_danger("[A] has knocked [D] down!!"), \ + span_userdanger("[A] has knocked [D] down!")) D.apply_effect(40, EFFECT_KNOCKDOWN, armor_block) D.forcesay(GLOB.hit_appends) else if(!(D.mobility_flags & MOBILITY_STAND)) diff --git a/code/datums/martial/boxing.dm b/code/datums/martial/boxing.dm index 2663403db4a3..1abb1fef4d2b 100644 --- a/code/datums/martial/boxing.dm +++ b/code/datums/martial/boxing.dm @@ -4,11 +4,11 @@ nonlethal = TRUE /datum/martial_art/boxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - to_chat(A, "Can't disarm while boxing!") + to_chat(A, span_warning("Can't disarm while boxing!")) return 1 /datum/martial_art/boxing/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - to_chat(A, "Can't grab while boxing!") + to_chat(A, span_warning("Can't grab while boxing!")) return 1 /datum/martial_art/boxing/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -20,8 +20,8 @@ var/damage = rand(5, 8) + A.dna.species.punchdamagelow if(!damage) playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1) - D.visible_message("[A] has attempted to [atk_verb] [D]!", \ - "[A] has attempted to [atk_verb] [D]!", null, COMBAT_MESSAGE_RANGE) + D.visible_message(span_warning("[A] has attempted to [atk_verb] [D]!"), \ + span_userdanger("[A] has attempted to [atk_verb] [D]!"), null, COMBAT_MESSAGE_RANGE) log_combat(A, D, "attempted to hit", atk_verb) return 0 @@ -31,16 +31,16 @@ playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1) - D.visible_message("[A] has [atk_verb]ed [D]!", \ - "[A] has [atk_verb]ed [D]!", null, COMBAT_MESSAGE_RANGE) + D.visible_message(span_danger("[A] has [atk_verb]ed [D]!"), \ + span_userdanger("[A] has [atk_verb]ed [D]!"), null, COMBAT_MESSAGE_RANGE) D.apply_damage(damage, STAMINA, affecting, armor_block) log_combat(A, D, "punched (boxing) ") if(D.getStaminaLoss() > 50) var/knockout_prob = D.getStaminaLoss() + rand(-15,15) if((D.stat != DEAD) && prob(knockout_prob)) - D.visible_message("[A] has knocked [D] out with a haymaker!", \ - "[A] has knocked [D] out with a haymaker!") + D.visible_message(span_danger("[A] has knocked [D] out with a haymaker!"), \ + span_userdanger("[A] has knocked [D] out with a haymaker!")) D.apply_effect(200,EFFECT_KNOCKDOWN,armor_block) D.SetSleeping(100) D.forcesay(GLOB.hit_appends) diff --git a/code/datums/martial/cqc.dm b/code/datums/martial/cqc.dm index 416bd3e8a82c..478c3729ecad 100644 --- a/code/datums/martial/cqc.dm +++ b/code/datums/martial/cqc.dm @@ -85,8 +85,8 @@ if(!can_use(A)) return FALSE if(D.mobility_flags & MOBILITY_STAND) - D.visible_message("[A] slams [D] into the ground!", \ - "[A] slams you into the ground!") + D.visible_message(span_warning("[A] slams [D] into the ground!"), \ + span_userdanger("[A] slams you into the ground!")) playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) //using hit_kick because for some stupid reason slam.ogg is delayed A.do_attack_animation(D, ATTACK_EFFECT_SMASH) D.apply_damage(15, STAMINA) @@ -106,8 +106,8 @@ return FALSE A.do_attack_animation(D, ATTACK_EFFECT_KICK) if(!D.stat && (D.mobility_flags & MOBILITY_STAND)) - D.visible_message("[A] kicks [D] back!", \ - "[A] kicks you back!") + D.visible_message(span_warning("[A] kicks [D] back!"), \ + span_userdanger("[A] kicks you back!")) playsound(get_turf(A), 'sound/weapons/cqchit1.ogg', 50, 1, -1) step(D, A.dir) D.apply_damage(15, STAMINA) @@ -116,8 +116,8 @@ addtimer(CALLBACK(D, /mob/living/carbon/human/proc/clear_shove_slowdown), SHOVE_SLOWDOWN_LENGTH) if(!(D.mobility_flags & MOBILITY_STAND) && !D.stat) log_combat(A, D, "prone-kicked(CQC)") - D.visible_message("[A] firmly kicks [D] in the abdomen!", \ - "[A] kicks you in the abdomen!") + D.visible_message(span_warning("[A] firmly kicks [D] in the abdomen!"), \ + span_userdanger("[A] kicks you in the abdomen!")) playsound(get_turf(A), 'sound/weapons/genhit1.ogg', 50, 1, -1) D.Paralyze(5) D.apply_damage(40, STAMINA) @@ -142,7 +142,7 @@ var/hit_limb = D.get_bodypart(selected_zone) if(!hit_limb) return FALSE - D.visible_message("[A] dislocates [D]'s [hit_limb]!", \ + D.visible_message(span_warning("[A] dislocates [D]'s [hit_limb]!"), \ "[A] dislocates your [hit_limb]!") D.drop_all_held_items() D.apply_damage(50, STAMINA, selected_zone) @@ -162,8 +162,8 @@ return FALSE if(!D.stat) log_combat(A, D, "restrained (CQC)") - D.visible_message("[A] locks [D] into a restraining position!", \ - "[A] locks you into a restraining position!") + D.visible_message(span_warning("[A] locks [D] into a restraining position!"), \ + span_userdanger("[A] locks you into a restraining position!")) D.Stun(20) if(!(A.pulling == D)) D.grabbedby(A, 1) @@ -183,8 +183,8 @@ A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) if(D.mobility_flags & MOBILITY_STAND) log_combat(A, D, "consecutive CQC'd (CQC)") - D.visible_message("[A] delivers a firm blow to [D]'s head, knocking them down!", \ - "[A] delivers a firm blow to your head, causing you to fall over!") + D.visible_message(span_warning("[A] delivers a firm blow to [D]'s head, knocking them down!"), \ + span_userdanger("[A] delivers a firm blow to your head, causing you to fall over!")) playsound(get_turf(D), 'sound/weapons/cqchit2.ogg', 50, 1, -1) D.Paralyze(50) D.Knockdown(100) @@ -218,13 +218,13 @@ var/bonus_damage = 15 D.apply_damage(bonus_damage, STAMINA) playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1) - D.visible_message("[A] [picked_hit_type] [D]!", \ - "[A] [picked_hit_type] you!") + D.visible_message(span_danger("[A] [picked_hit_type] [D]!"), \ + span_userdanger("[A] [picked_hit_type] you!")) D.Immobilize(15) log_combat(A, D, "[picked_hit_type] (CQC)") if(!(A.mobility_flags & MOBILITY_STAND) && (D.mobility_flags & MOBILITY_STAND)) D.visible_message("[A] leg sweeps [D]!", \ - "[A] leg sweeps you!") + span_userdanger("[A] leg sweeps you!")) playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.Paralyze(10) D.Knockdown(30) @@ -245,39 +245,39 @@ if(!D.stat && !D.IsParalyzed() && !restraining) if(prob(65)) I = D.get_active_held_item() - D.visible_message("[A] quickly grabs [D]'s arm and and chops it, disarming them!", \ - "[A] grabs your arm and chops it, disarming you!") + D.visible_message(span_warning("[A] quickly grabs [D]'s arm and and chops it, disarming them!"), \ + span_userdanger("[A] grabs your arm and chops it, disarming you!")) playsound(get_turf(D), 'sound/weapons/cqchit1.ogg', 50, 1, -1) if(I && D.temporarilyRemoveItemFromInventory(I)) A.put_in_hands(I) D.Jitter(2) D.apply_damage(5, STAMINA) else - D.visible_message("[A] grabs at [D]'s arm, but misses!", \ - "[A] grabs at your arm, but misses!") + D.visible_message(span_danger("[A] grabs at [D]'s arm, but misses!"), \ + span_userdanger("[A] grabs at your arm, but misses!")) playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) log_combat(A, D, "disarmed (CQC)", "[I ? " grabbing \the [I]" : ""]") if(restraining && A.pulling == D) if(chokehold_active) return TRUE log_combat(A, D, "began to chokehold(CQC)") - D.visible_message("[A] puts [D] into a chokehold!", \ - "[A] puts you into a chokehold!") + D.visible_message(span_danger("[A] puts [D] into a chokehold!"), \ + span_userdanger("[A] puts you into a chokehold!")) if(handle_chokehold(A, D)) D.Unconscious(400) if(A.grab_state < GRAB_NECK) A.grab_state = GRAB_NECK - A.visible_message("[A] relaxes their grip on [D].", \ - "You relax your grip on [D].") //visible message comes from attacker since defender is unconscious and therefore can't see + A.visible_message(span_danger("[A] relaxes their grip on [D]."), \ + span_danger("You relax your grip on [D].")) //visible message comes from attacker since defender is unconscious and therefore can't see else if(A.grab_state) //honestly with the way current grabs work this doesn't really do all that much A.grab_state = min(1, A.grab_state - 1) //immediately lose grab power... if(!A.grab_state || prob(BASE_GRAB_RESIST_CHANCE/A.grab_state)) //...and have a chance to lose the entire grab - A.visible_message("[A] is put off balance, losing their grip on [D]!", \ - "You are put off balance, and you lose your grip on [D]!") + A.visible_message(span_danger("[A] is put off balance, losing their grip on [D]!"), \ + span_danger("You are put off balance, and you lose your grip on [D]!")) A.stop_pulling() else - A.visible_message("[A] is put off balance, and struggles to maintain their grip on [D]!", \ + A.visible_message(span_danger("[A] is put off balance, and struggles to maintain their grip on [D]!"), \ "[user] grabs [attacker]'s arm as they attack and throws them to the ground!", \ - "[user] grabs your arm as you attack and throws you to the ground!") + attacker.visible_message(span_warning("[user] grabs [attacker]'s arm as they attack and throws them to the ground!"), \ + span_userdanger("[user] grabs your arm as you attack and throws you to the ground!")) playsound(get_turf(attacker), 'sound/weapons/cqchit1.ogg', 50, 1, -1) var/obj/item/I = attacker.get_active_held_item() if(I && attacker.temporarilyRemoveItemFromInventory(I)) @@ -330,16 +330,16 @@ set category = "CQC" to_chat(usr, "You try to remember some of the basics of CQC.") - to_chat(usr, "All of your unarmed attacks deal stamina damage instead of your normal physical damage type") + to_chat(usr, span_notice("All of your unarmed attacks deal stamina damage instead of your normal physical damage type")) - to_chat(usr, "Disarm Intent Has a chance to disarm the opponent's main hand, and immediately pick up the item if successful") - to_chat(usr, "Grab Intent Will stun opponents for a short second, allowing you to quickly increase the strength of your grabs") - to_chat(usr, "Harm Intent Will deal a competitive amount of stamina damage, and hitting a standing opponent while you are prone will both knock them down and stand you up") + to_chat(usr, span_notice("Disarm Intent Has a chance to disarm the opponent's main hand, and immediately pick up the item if successful")) + to_chat(usr, span_notice("Grab Intent Will stun opponents for a short second, allowing you to quickly increase the strength of your grabs")) + to_chat(usr, span_notice("Harm Intent Will deal a competitive amount of stamina damage, and hitting a standing opponent while you are prone will both knock them down and stand you up")) - to_chat(usr, "Slam: Grab Harm. Slam opponent into the ground, knocking them down and dealing decent stamina damage.") - to_chat(usr, "CQC Kick: Disarm Harm. Knocks opponent away and slows them. Deals heavy stamina damage to prone opponents.") - to_chat(usr, "Restrain: Grab Grab. Locks opponents into a restraining position, making your grab harder to break out of. Disarm to begin a chokehold which deal gradual oxygen damage until the opponent is unconscious, with the damage increasing based on their stamina damage. Failing to complete the chokehold will weaken and possibly break your grab.") - to_chat(usr, "Pressure: Disarm Grab. Disables the targetted limb or a random limb if the head or chest are targetted, as well as forcing the target to drop anything they are holding.") - to_chat(usr, "Consecutive CQC: Harm Harm Harm Harm Harm. Offensive move, deals bonus stamina damage and knocking down on the last hit.") + to_chat(usr, "[span_notice("Slam")]: Grab Harm. Slam opponent into the ground, knocking them down and dealing decent stamina damage.") + to_chat(usr, "[span_notice("CQC Kick")]: Disarm Harm. Knocks opponent away and slows them. Deals heavy stamina damage to prone opponents.") + to_chat(usr, "[span_notice("Restrain")]: Grab Grab. Locks opponents into a restraining position, making your grab harder to break out of. Disarm to begin a chokehold which deal gradual oxygen damage until the opponent is unconscious, with the damage increasing based on their stamina damage. Failing to complete the chokehold will weaken and possibly break your grab.") + to_chat(usr, "[span_notice("Pressure")]: Disarm Grab. Disables the targetted limb or a random limb if the head or chest are targetted, as well as forcing the target to drop anything they are holding.") + to_chat(usr, "[span_notice("Consecutive CQC")]: Harm Harm Harm Harm Harm. Offensive move, deals bonus stamina damage and knocking down on the last hit.") to_chat(usr, "In addition, by having your throw mode on when being attacked, you enter an active defense mode where you have a chance to counter attacks done to you.") diff --git a/code/datums/martial/flying_fang.dm b/code/datums/martial/flying_fang.dm index 257e75b0fa6d..9d2e888af02f 100644 --- a/code/datums/martial/flying_fang.dm +++ b/code/datums/martial/flying_fang.dm @@ -42,8 +42,8 @@ playsound(D, 'sound/weapons/thudswoosh.ogg', 50, TRUE, -1) D.apply_damage(25, STAMINA, selected_zone, armor_block) D.apply_damage(15, A.dna.species.attack_type, selected_zone, armor_block) - D.visible_message("[A] slams into [D], knocking them off balance!", \ - "[A] slams into you, knocking you off balance!") + D.visible_message(span_danger("[A] slams into [D], knocking them off balance!"), \ + span_userdanger("[A] slams into you, knocking you off balance!")) D.add_movespeed_modifier("tail slap", update=TRUE, priority=101, multiplicative_slowdown=0.9) addtimer(CALLBACK(D, /mob.proc/remove_movespeed_modifier, "tail slap"), 5 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) log_combat(A, D, "slammed (Flying Fang)") @@ -55,14 +55,14 @@ A.emote("spin") var/obj/item/organ/tail = A.getorganslot(ORGAN_SLOT_TAIL) if(!istype(tail, /obj/item/organ/tail/lizard)) - A.visible_message("[A] spins around.", \ - "You spin around like a doofus.") + A.visible_message(span_danger("[A] spins around."), \ + span_userdanger("You spin around like a doofus.")) return playsound(get_turf(A), 'sound/weapons/slap.ogg', 50, TRUE, -1) for(var/obj/item/I in D.held_items) if(I.block_chance) - D.visible_message("[A] tail slaps [I] out of [D]'s hands!", \ - "[A] tail slaps your [I] out of your hands!") + D.visible_message(span_danger("[A] tail slaps [I] out of [D]'s hands!"), \ + span_userdanger("[A] tail slaps your [I] out of your hands!")) D.dropItemToGround(I) var/atom/throw_target = get_edge_target_turf(D, get_dir(A, get_step_away(D, A))) I.safe_throw_at(throw_target, 5, 2) @@ -75,8 +75,8 @@ D.apply_damage(10, A.dna.species.attack_type, selected_zone, armor_block) D.Knockdown(5 SECONDS) D.Paralyze(2 SECONDS) - D.visible_message("[A] tail slaps [D]!", \ - "[A] tail slaps you!") + D.visible_message(span_danger("[A] tail slaps [D]!"), \ + span_userdanger("[A] tail slaps you!")) log_combat(A, D, "tail slapped (Flying Fang)") /datum/martial_art/flyingfang/proc/remove_bonk(mob/living/carbon/human/D) @@ -92,11 +92,11 @@ A.do_attack_animation(D, ATTACK_EFFECT_BITE) playsound(D, 'sound/weapons/bite.ogg', 50, TRUE, -1) D.apply_damage(30, A.dna.species.attack_type, BODY_ZONE_HEAD, armor_block) - D.bleed_rate += 10 - D.visible_message("[A] takes a large bite out of [D]'s neck!", \ - "[A] takes a large bite out of your neck!") + // D.bleed_rate += 10 + D.visible_message(span_danger("[A] takes a large bite out of [D]'s neck!"), \ + span_userdanger("[A] takes a large bite out of your neck!")) if(D.health > 0) - to_chat(A, "You feel reinvigorated!") + to_chat(A, span_boldwarning("You feel reinvigorated!")) A.heal_overall_damage(25, 25) A.adjustToxLoss(-8) A.adjustStaminaLoss(-50) @@ -122,8 +122,8 @@ if(!istype(D.head, /obj/item/clothing/head/helmet)) ADD_TRAIT(D, TRAIT_POOR_AIM, "martial") addtimer(CALLBACK(src, .proc/remove_bonk, D), 10 SECONDS, TIMER_UNIQUE|TIMER_OVERRIDE) - D.visible_message("[A] headbutts [D]!", \ - "[A] headbutts you!") + D.visible_message(span_danger("[A] headbutts [D]!"), \ + span_userdanger("[A] headbutts you!")) log_combat(A, D, "headbutted (Flying Fang)") /datum/martial_art/flyingfang/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -145,8 +145,8 @@ playsound(D, 'sound/weapons/slash.ogg', 50, TRUE, -1) D.apply_damage(12, A.dna.species.attack_type, selected_zone, armor_block) //need wounds for sharpness to actually matter here var/atk_verb = pick("rends", "claws", "slices", "tears at") - D.visible_message("[A] [atk_verb] [D]!", \ - "[A] [atk_verb] you!") + D.visible_message(span_danger("[A] [atk_verb] [D]!"), \ + span_userdanger("[A] [atk_verb] you!")) return TRUE /datum/action/innate/lizard_leap @@ -176,14 +176,14 @@ /datum/action/innate/lizard_leap/Activate(silent) if(!silent) - owner.visible_message("[owner] prepares to pounce!", "You will now pounce as your next attack.") + owner.visible_message(span_danger("[owner] prepares to pounce!"), "You will now pounce as your next attack.") owner.click_intercept = src active = TRUE background_icon_state = "bg_default_on" /datum/action/innate/lizard_leap/Deactivate(silent) if(!silent) - owner.visible_message("[owner] assumes a neutral stance.", "You will no longer pounce on attack.") + owner.visible_message(span_danger("[owner] assumes a neutral stance."), "You will no longer pounce on attack.") owner.click_intercept = null active = FALSE background_icon_state = "bg_default" @@ -237,14 +237,14 @@ set category = "Flying Fang" to_chat(usr, "You try to remember some of the basics of Flying Fang.") - to_chat(usr, "Your training has rendered you more resistant to pain, allowing you to keep fighting effectively for longer and reducing the effectiveness of stun and stamina weapons by about a third.") - to_chat(usr, "However, the primitive instincts gained through this training prevent you from using guns, stun weapons, or armor.") - to_chat(usr, "All of your unarmed attacks deal increased brute damage with a small amount of armor piercing") + to_chat(usr, span_notice("Your training has rendered you more resistant to pain, allowing you to keep fighting effectively for longer and reducing the effectiveness of stun and stamina weapons by about a third.")) + to_chat(usr, span_warning("However, the primitive instincts gained through this training prevent you from using guns, stun weapons, or armor.")) + to_chat(usr, span_notice("All of your unarmed attacks deal increased brute damage with a small amount of armor piercing")) - to_chat(usr, "Disarm Intent: Headbutt your enemy, Deals minor stamina and brute damage, as well as causing eye blurriness. Prevents the target from using ranged weapons effectively for a few seconds if they are not wearing a helmet.") + to_chat(usr, "[span_notice("Disarm Intent")]: Headbutt your enemy, Deals minor stamina and brute damage, as well as causing eye blurriness. Prevents the target from using ranged weapons effectively for a few seconds if they are not wearing a helmet.") - to_chat(usr, "Tail Slap: Disarm Disarm Disarm. High armor piercing attack that causes a short slow followed by a knockdown. Deals heavy stamina damage.") - to_chat(usr, "Neck Bite: Grab Harm. Target must be prone. Stuns you and your target for a short period, dealing heavy brute damage and bleeding. If the target is not in crit, this attack will heal you.") + to_chat(usr, "[span_notice("Tail Slap")]: Disarm Disarm Disarm. High armor piercing attack that causes a short slow followed by a knockdown. Deals heavy stamina damage.") + to_chat(usr, "[span_notice("Neck Bite")]: Grab Harm. Target must be prone. Stuns you and your target for a short period, dealing heavy brute damage and bleeding. If the target is not in crit, this attack will heal you.") to_chat(usr, "Leap: Action: Jump at a target, with a successful hit stunning them and preventing you from moving for a few seconds.") /datum/martial_art/flyingfang/teach(mob/living/carbon/human/H,make_temporary=0) diff --git a/code/datums/martial/knifeboxing.dm b/code/datums/martial/knifeboxing.dm index 10a4e6627783..97af6b0dc775 100644 --- a/code/datums/martial/knifeboxing.dm +++ b/code/datums/martial/knifeboxing.dm @@ -2,11 +2,11 @@ name = "Knife-boxing" /datum/martial_art/knifeboxing/disarm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - to_chat(A, "Can't disarm while knife-boxing!") + to_chat(A, span_warning("Can't disarm while knife-boxing!")) return TRUE /datum/martial_art/knifeboxing/grab_act(mob/living/carbon/human/A, mob/living/carbon/human/D) - to_chat(A, "Can't grab while knife-boxing!") + to_chat(A, span_warning("Can't grab while knife-boxing!")) return TRUE /datum/martial_art/knifeboxing/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) @@ -18,8 +18,8 @@ var/damage = rand(8, 12) + A.dna.species.punchdamagelow if(!damage) playsound(D.loc, A.dna.species.miss_sound, 25, 1, -1) - D.visible_message("[A] has attempted to [atk_verb] [D]!", \ - "[A] has attempted to [atk_verb] [D]!", null, COMBAT_MESSAGE_RANGE) + D.visible_message(span_warning("[A] has attempted to [atk_verb] [D]!"), \ + span_userdanger("[A] has attempted to [atk_verb] [D]!"), null, COMBAT_MESSAGE_RANGE) log_combat(A, D, "attempted to punch (knifeboxing)") return FALSE @@ -28,8 +28,8 @@ playsound(D.loc, A.dna.species.attack_sound, 25, 1, -1) - D.visible_message("[A] has [atk_verb]ed [D]!", \ - "[A] has [atk_verb]ed [D]!", null, COMBAT_MESSAGE_RANGE) + D.visible_message(span_danger("[A] has [atk_verb]ed [D]!"), \ + span_userdanger("[A] has [atk_verb]ed [D]!"), null, COMBAT_MESSAGE_RANGE) D.apply_damage(damage, BRUTE, affecting, armor_block) log_combat(A, D, "punched (knifeboxing") diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm index 0f3d4e661c8a..425c0c5983ac 100644 --- a/code/datums/martial/krav_maga.dm +++ b/code/datums/martial/krav_maga.dm @@ -12,14 +12,14 @@ /datum/action/neck_chop/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't use [name] while you're incapacitated.") + to_chat(owner, span_warning("You can't use [name] while you're incapacitated.")) return var/mob/living/carbon/human/H = owner if (H.mind.martial_art.streak == "neck_chop") - owner.visible_message("[owner] assumes a neutral stance.", "Your next attack is cleared.") + owner.visible_message(span_danger("[owner] assumes a neutral stance."), "Your next attack is cleared.") H.mind.martial_art.streak = "" else - owner.visible_message("[owner] assumes the Neck Chop stance!", "Your next attack will be a Neck Chop.") + owner.visible_message(span_danger("[owner] assumes the Neck Chop stance!"), "Your next attack will be a Neck Chop.") H.mind.martial_art.streak = "neck_chop" /datum/action/leg_sweep @@ -29,14 +29,14 @@ /datum/action/leg_sweep/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't use [name] while you're incapacitated.") + to_chat(owner, span_warning("You can't use [name] while you're incapacitated.")) return var/mob/living/carbon/human/H = owner if (H.mind.martial_art.streak == "leg_sweep") - owner.visible_message("[owner] assumes a neutral stance.", "Your next attack is cleared.") + owner.visible_message(span_danger("[owner] assumes a neutral stance."), "Your next attack is cleared.") H.mind.martial_art.streak = "" else - owner.visible_message("[owner] assumes the Leg Sweep stance!", "Your next attack will be a Leg Sweep.") + owner.visible_message(span_danger("[owner] assumes the Leg Sweep stance!"), "Your next attack will be a Leg Sweep.") H.mind.martial_art.streak = "leg_sweep" /datum/action/lung_punch//referred to internally as 'quick choke' @@ -46,14 +46,14 @@ /datum/action/lung_punch/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't use [name] while you're incapacitated.") + to_chat(owner, span_warning("You can't use [name] while you're incapacitated.")) return var/mob/living/carbon/human/H = owner if (H.mind.martial_art.streak == "quick_choke") - owner.visible_message("[owner] assumes a neutral stance.", "Your next attack is cleared.") + owner.visible_message(span_danger("[owner] assumes a neutral stance."), "Your next attack is cleared.") H.mind.martial_art.streak = "" else - owner.visible_message("[owner] assumes the Lung Punch stance!", "Your next attack will be a Lung Punch.") + owner.visible_message(span_danger("[owner] assumes the Lung Punch stance!"), "Your next attack will be a Lung Punch.") H.mind.martial_art.streak = "quick_choke"//internal name for lung punch /datum/martial_art/krav_maga/teach(mob/living/carbon/human/H,make_temporary=0) @@ -89,8 +89,8 @@ /datum/martial_art/krav_maga/proc/leg_sweep(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) if(D.stat || D.IsParalyzed()) return 0 - D.visible_message("[A] leg sweeps [D]!", \ - "[A] leg sweeps you!") + D.visible_message(span_warning("[A] leg sweeps [D]!"), \ + span_userdanger("[A] leg sweeps you!")) playsound(get_turf(A), 'sound/effects/hit_kick.ogg', 50, 1, -1) D.apply_damage(5, BRUTE) D.Paralyze(40) @@ -98,8 +98,8 @@ return 1 /datum/martial_art/krav_maga/proc/quick_choke(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D)//is actually lung punch - D.visible_message("[A] pounds [D] on the chest!", \ - "[A] slams your chest! You can't breathe!") + D.visible_message(span_warning("[A] pounds [D] on the chest!"), \ + span_userdanger("[A] slams your chest! You can't breathe!")) playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) if(D.losebreath <= 10) D.losebreath = clamp(D.losebreath + 5, 0, 10) @@ -108,8 +108,8 @@ return 1 /datum/martial_art/krav_maga/proc/neck_chop(var/mob/living/carbon/human/A, var/mob/living/carbon/human/D) - D.visible_message("[A] karate chops [D]'s neck!", \ - "[A] karate chops your neck, rendering you unable to speak!") + D.visible_message(span_warning("[A] karate chops [D]'s neck!"), \ + span_userdanger("[A] karate chops your neck, rendering you unable to speak!")) playsound(get_turf(A), 'sound/effects/hit_punch.ogg', 50, 1, -1) D.apply_damage(5, A.dna.species.attack_type) if(D.silent <= 10) @@ -133,8 +133,8 @@ else A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) playsound(get_turf(D), 'sound/effects/hit_punch.ogg', 50, 1, -1) - D.visible_message("[A] [picked_hit_type] [D]!", \ - "[A] [picked_hit_type] you!") + D.visible_message(span_danger("[A] [picked_hit_type] [D]!"), \ + span_userdanger("[A] [picked_hit_type] you!")) log_combat(A, D, "[picked_hit_type] with [name]") return 1 @@ -147,12 +147,12 @@ if(I) if(D.temporarilyRemoveItemFromInventory(I)) A.put_in_hands(I) - D.visible_message("[A] has disarmed [D]!", \ - "[A] has disarmed [D]!") + D.visible_message(span_danger("[A] has disarmed [D]!"), \ + span_userdanger("[A] has disarmed [D]!")) playsound(D, 'sound/weapons/thudswoosh.ogg', 50, 1, -1) else - D.visible_message("[A] attempted to disarm [D]!", \ - "[A] attempted to disarm [D]!") + D.visible_message(span_danger("[A] attempted to disarm [D]!"), \ + span_userdanger("[A] attempted to disarm [D]!")) playsound(D, 'sound/weapons/punchmiss.ogg', 25, 1, -1) log_combat(A, D, "disarmed (Krav Maga)", "[I ? " removing \the [I]" : ""]") return 1 diff --git a/code/datums/martial/mushpunch.dm b/code/datums/martial/mushpunch.dm index aec4ccb968fd..65d6038992ef 100644 --- a/code/datums/martial/mushpunch.dm +++ b/code/datums/martial/mushpunch.dm @@ -4,14 +4,14 @@ /datum/martial_art/mushpunch/harm_act(mob/living/carbon/human/A, mob/living/carbon/human/D) var/atk_verb - to_chat(A, "You begin to wind up an attack...") + to_chat(A, span_spider("You begin to wind up an attack...")) if(!do_after(A, 25, target = D)) - to_chat(A, "Your attack was interrupted!") + to_chat(A, span_spider("Your attack was interrupted!")) return TRUE //martial art code was a mistake A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) atk_verb = pick("punches", "smashes", "ruptures", "cracks") - D.visible_message("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards!", \ - "[A] [atk_verb] you with inhuman strength, sending you flying backwards!") + D.visible_message(span_danger("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards!"), \ + span_userdanger("[A] [atk_verb] you with inhuman strength, sending you flying backwards!")) D.apply_damage(rand(15,30), A.dna.species.attack_type) playsound(D, 'sound/effects/meteorimpact.ogg', 25, 1, -1) var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) @@ -30,9 +30,9 @@ /obj/item/mushpunch/attack_self(mob/living/carbon/human/user) if(!istype(user) || !user) return - var/message = "You devour [src], and a confluence of skill and power from the mushroom enhances your punches! You do need a short moment to charge these powerful punches." + var/message = span_spider("You devour [src], and a confluence of skill and power from the mushroom enhances your punches! You do need a short moment to charge these powerful punches.") to_chat(user, message) var/datum/martial_art/mushpunch/mush = new(null) mush.teach(user) qdel(src) - visible_message("[user] devours [src].") + visible_message(span_warning("[user] devours [src].")) diff --git a/code/datums/martial/plasma_fist.dm b/code/datums/martial/plasma_fist.dm index e38a011db031..6082aa553c52 100644 --- a/code/datums/martial/plasma_fist.dm +++ b/code/datums/martial/plasma_fist.dm @@ -44,8 +44,8 @@ return /datum/martial_art/plasma_fist/proc/Throwback(mob/living/carbon/human/A, mob/living/carbon/human/D) - D.visible_message("[A] has hit [D] with Plasma Punch!", \ - "[A] has hit [D] with Plasma Punch!") + D.visible_message(span_danger("[A] has hit [D] with Plasma Punch!"), \ + span_userdanger("[A] has hit [D] with Plasma Punch!")) playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) var/atom/throw_target = get_edge_target_turf(D, get_dir(D, get_step_away(D, A))) D.throw_at(throw_target, 200, 4,A) @@ -57,8 +57,8 @@ A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) playsound(D.loc, 'sound/weapons/punch1.ogg', 50, 1, -1) A.say("PLASMA FIST!", forced="plasma fist") - D.visible_message("[A] has hit [D] with THE PLASMA FIST TECHNIQUE!", \ - "[A] has hit [D] with THE PLASMA FIST TECHNIQUE!") + D.visible_message(span_danger("[A] has hit [D] with THE PLASMA FIST TECHNIQUE!"), \ + span_userdanger("[A] has hit [D] with THE PLASMA FIST TECHNIQUE!")) D.gib() log_combat(A, D, "gibbed (Plasma Fist)") return @@ -90,6 +90,6 @@ set category = "Plasma Fist" to_chat(usr, "You clench your fists and have a flashback of knowledge...") - to_chat(usr, "Tornado Sweep: Harm Harm Disarm. Repulses target and everyone back.") - to_chat(usr, "Throwback: Disarm Harm Disarm. Throws the target and an item at them.") - to_chat(usr, "The Plasma Fist: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.") + to_chat(usr, "[span_notice("Tornado Sweep")]: Harm Harm Disarm. Repulses target and everyone back.") + to_chat(usr, "[span_notice("Throwback")]: Disarm Harm Disarm. Throws the target and an item at them.") + to_chat(usr, "[span_notice("The Plasma Fist")]: Harm Disarm Disarm Disarm Harm. Knocks the brain out of the opponent and gibs their body.") diff --git a/code/datums/martial/psychotic_brawl.dm b/code/datums/martial/psychotic_brawl.dm index 41f79dc6dbfd..9f944832fdc5 100644 --- a/code/datums/martial/psychotic_brawl.dm +++ b/code/datums/martial/psychotic_brawl.dm @@ -31,8 +31,8 @@ D.stop_pulling() if(A.a_intent == INTENT_GRAB) log_combat(A, D, "grabbed", addition="aggressively") - D.visible_message("[A] violently grabs [D]!", \ - "[A] violently grabs you!") + D.visible_message(span_warning("[A] violently grabs [D]!"), \ + span_userdanger("[A] violently grabs you!")) A.grab_state = GRAB_AGGRESSIVE //Instant aggressive grab else log_combat(A, D, "grabbed", addition="passively") @@ -40,8 +40,8 @@ if(4) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) atk_verb = "headbutts" - D.visible_message("[A] [atk_verb] [D]!", \ - "[A] [atk_verb] you!") + D.visible_message(span_danger("[A] [atk_verb] [D]!"), \ + span_userdanger("[A] [atk_verb] you!")) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 40, 1, -1) D.apply_damage(rand(5,10), A.dna.species.attack_type, BODY_ZONE_HEAD) A.apply_damage(rand(5,10), A.dna.species.attack_type, BODY_ZONE_HEAD) @@ -52,8 +52,8 @@ if(5,6) A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) atk_verb = pick("punches", "kicks", "hits", "slams into") - D.visible_message("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards!", \ - "[A] [atk_verb] you with inhuman strength, sending you flying backwards!") + D.visible_message(span_danger("[A] [atk_verb] [D] with inhuman strength, sending [D.p_them()] flying backwards!"), \ + span_userdanger("[A] [atk_verb] you with inhuman strength, sending you flying backwards!")) D.apply_damage(rand(15,30), A.dna.species.attack_type) playsound(get_turf(D), 'sound/effects/meteorimpact.ogg', 25, 1, -1) var/throwtarget = get_edge_target_turf(A, get_dir(A, get_step_away(D, A))) diff --git a/code/datums/martial/sleeping_carp.dm b/code/datums/martial/sleeping_carp.dm index 69a0352a1688..dbd0ccb84c4d 100644 --- a/code/datums/martial/sleeping_carp.dm +++ b/code/datums/martial/sleeping_carp.dm @@ -41,12 +41,12 @@ if(!D.stat && !D.IsStun() && !D.IsParalyzed()) log_combat(A, D, "wrist wrenched (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - D.visible_message("[A] grabs [D]'s wrist and wrenches it sideways!", \ - "[A] grabs your wrist and violently wrenches it to the side!") + D.visible_message(span_warning("[A] grabs [D]'s wrist and wrenches it sideways!"), \ + span_userdanger("[A] grabs your wrist and violently wrenches it to the side!")) playsound(get_turf(A), 'sound/weapons/thudswoosh.ogg', 50, 1, -1) D.emote("scream") D.dropItemToGround(D.get_active_held_item()) - D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + D.apply_damage(5, BRUTE, pick(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM), wound_bonus = CANT_WOUND) D.Stun(60) return TRUE @@ -57,24 +57,24 @@ if(A.dir == D.dir) log_combat(A, D, "back-kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - D.visible_message("[A] kicks [D] in the back!", \ - "[A] kicks you in the back, making you stumble and fall!") + D.visible_message(span_warning("[A] kicks [D] in the back!"), \ + span_userdanger("[A] kicks you in the back, making you stumble and fall!")) step_to(D,get_step(D,D.dir),1) D.Paralyze(80) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) return TRUE else log_combat(A, D, "missed a back-kick (Sleeping Carp) on") - D.visible_message("[A] tries to kick [D] in the back, but misses!", \ - "[A] tries to kick you in the back, but misses!") + D.visible_message(span_warning("[A] tries to kick [D] in the back, but misses!"), \ + span_userdanger("[A] tries to kick you in the back, but misses!")) return basic_hit(A,D) /datum/martial_art/the_sleeping_carp/proc/kneeStomach(mob/living/carbon/human/A, mob/living/carbon/human/D) if(!D.stat && !D.IsParalyzed()) log_combat(A, D, "stomach kneed (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) - D.visible_message("[A] knees [D] in the stomach!", \ - "[A] winds you with a knee in the stomach!") + D.visible_message(span_warning("[A] knees [D] in the stomach!"), \ + span_userdanger("[A] winds you with a knee in the stomach!")) D.audible_message("[D] gags!") D.losebreath += 3 D.Stun(40) @@ -86,9 +86,9 @@ if(!D.stat && !D.IsParalyzed()) log_combat(A, D, "head kicked (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_KICK) - D.visible_message("[A] kicks [D] in the head!", \ - "[A] kicks you in the jaw!") - D.apply_damage(20, A.dna.species.attack_type, BODY_ZONE_HEAD) + D.visible_message(span_warning("[A] kicks [D] in the head!"), \ + span_userdanger("[A] kicks you in the jaw!")) + D.apply_damage(20, A.dna.species.attack_type, BODY_ZONE_HEAD, wound_bonus = CANT_WOUND) D.drop_all_held_items() playsound(get_turf(D), 'sound/weapons/punch1.ogg', 50, 1, -1) D.Stun(80) @@ -99,11 +99,11 @@ if(!(D.mobility_flags & MOBILITY_STAND)) log_combat(A, D, "elbow dropped (Sleeping Carp)") A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) - D.visible_message("[A] elbow drops [D]!", \ - "[A] piledrives you with their elbow!") + D.visible_message(span_warning("[A] elbow drops [D]!"), \ + span_userdanger("[A] piledrives you with their elbow!")) if(D.stat) D.death() //FINISH HIM! - D.apply_damage(50, A.dna.species.attack_type, BODY_ZONE_CHEST) + D.apply_damage(50, A.dna.species.attack_type, BODY_ZONE_CHEST, wound_bonus = CANT_WOUND) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 75, 1, -1) return TRUE return basic_hit(A,D) @@ -119,8 +119,8 @@ D.drop_all_held_items() A.grab_state = GRAB_AGGRESSIVE //Instant agressive grab if on grab intent log_combat(A, D, "grabbed", addition="aggressively") - D.visible_message("[A] violently grabs [D]!", \ - "[A] violently grabs you!") + D.visible_message(span_warning("[A] violently grabs [D]!"), \ + span_userdanger("[A] violently grabs you!")) return TRUE else return FALSE @@ -131,12 +131,12 @@ return TRUE A.do_attack_animation(D, ATTACK_EFFECT_PUNCH) var/atk_verb = pick("punches", "kicks", "chops", "hits", "slams") - D.visible_message("[A] [atk_verb] [D]!", \ - "[A] [atk_verb] you!") - D.apply_damage(rand(10,15), BRUTE) + D.visible_message(span_danger("[A] [atk_verb] [D]!"), \ + span_userdanger("[A] [atk_verb] you!")) + D.apply_damage(rand(10,15), BRUTE, wound_bonus = CANT_WOUND) playsound(get_turf(D), 'sound/weapons/punch1.ogg', 25, 1, -1) if(prob(D.getBruteLoss()) && (D.mobility_flags & MOBILITY_STAND)) - D.visible_message("[D] stumbles and falls!", "The blow sends you to the ground!") + D.visible_message(span_warning("[D] stumbles and falls!"), span_userdanger("The blow sends you to the ground!")) D.Paralyze(80) log_combat(A, D, "[atk_verb] (Sleeping Carp)") return TRUE @@ -155,11 +155,11 @@ to_chat(usr, "You retreat inward and recall the teachings of the Sleeping Carp...") - to_chat(usr, "Wrist Wrench: Disarm Disarm. Forces opponent to drop item in hand.") - to_chat(usr, "Back Kick: Harm Grab. Opponent must be facing away. Knocks down.") - to_chat(usr, "Stomach Knee: Grab Harm. Knocks the wind out of opponent and stuns.") - to_chat(usr, "Head Kick: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.") - to_chat(usr, "Elbow Drop: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.") + to_chat(usr, "[span_notice("Wrist Wrench")]: Disarm Disarm. Forces opponent to drop item in hand.") + to_chat(usr, "[span_notice("Back Kick")]: Harm Grab. Opponent must be facing away. Knocks down.") + to_chat(usr, "[span_notice("Stomach Knee")]: Grab Harm. Knocks the wind out of opponent and stuns.") + to_chat(usr, "[span_notice("Head Kick")]: Disarm Harm Harm. Decent damage, forces opponent to drop item in hand.") + to_chat(usr, "[span_notice("Elbow Drop")]: Harm Disarm Harm Disarm Harm. Opponent must be on the ground. Deals huge damage, instantly kills anyone in critical condition.") to_chat(usr, "You will only deflect projectiles while throwmode is enabled.") @@ -200,7 +200,7 @@ return ..() var/mob/living/carbon/C = target if(C.stat) - to_chat(user, "It would be dishonorable to attack a foe while they cannot retaliate.") + to_chat(user, span_warning("It would be dishonorable to attack a foe while they cannot retaliate.")) return if(user.a_intent == INTENT_DISARM) if(!wielded) @@ -214,8 +214,8 @@ "[user] smashes [H]'s head with [src]!", \ "[user] beats [H] with the front of [src]!", \ "[user] twirls and slams [H] with [src]!") - H.visible_message("[pick(fluffmessages)]", \ - "[pick(fluffmessages)]") + H.visible_message(span_warning("[pick(fluffmessages)]"), \ + span_userdanger("[pick(fluffmessages)]")) playsound(get_turf(user), 'sound/effects/woodhit.ogg', 75, 1, -1) playsound(get_turf(user), 'sound/effects/hit_kick.ogg', 75, 1, -1) SEND_SIGNAL(src, COMSIG_ITEM_ATTACK, H, user) @@ -231,8 +231,8 @@ if(H.staminaloss && !H.IsSleeping()) var/total_health = (H.health - H.staminaloss) if(total_health <= HEALTH_THRESHOLD_CRIT && !H.stat) - H.visible_message("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!", \ - "[user] knocks you unconscious!") + H.visible_message(span_warning("[user] delivers a heavy hit to [H]'s head, knocking [H.p_them()] out cold!"), \ + span_userdanger("[user] knocks you unconscious!")) H.SetSleeping(300) H.adjustOrganLoss(ORGAN_SLOT_BRAIN, 15, 150) else diff --git a/code/datums/martial/wrestling.dm b/code/datums/martial/wrestling.dm index bffc0cae13de..322c171501e6 100644 --- a/code/datums/martial/wrestling.dm +++ b/code/datums/martial/wrestling.dm @@ -4,9 +4,9 @@ set category = "Wrestling" to_chat(usr, "You flex your muscles and have a revelation...") - to_chat(usr, "Clinch: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.") - to_chat(usr, "Suplex: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.") - to_chat(usr, "Advanced grab: Grab. Passively causes stamina damage when grabbing someone.") + to_chat(usr, "[span_notice("Clinch")]: Grab. Passively gives you a chance to immediately aggressively grab someone. Not always successful.") + to_chat(usr, "[span_notice("Suplex")]: Disarm someone you are grabbing. Suplexes your target to the floor. Greatly injures them and leaves both you and your target on the floor.") + to_chat(usr, "[span_notice("Advanced grab")]: Grab. Passively causes stamina damage when grabbing someone.") /datum/martial_art/wrestling name = "Wrestling" @@ -47,9 +47,9 @@ /datum/action/slam/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't WRESTLE while you're OUT FOR THE COUNT.") + to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT.")) return - owner.visible_message("[owner] prepares to BODY SLAM!", "Your next attack will be a BODY SLAM.") + owner.visible_message(span_danger("[owner] prepares to BODY SLAM!"), "Your next attack will be a BODY SLAM.") var/mob/living/carbon/human/H = owner H.mind.martial_art.streak = "slam" @@ -59,9 +59,9 @@ /datum/action/throw_wrassle/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't WRESTLE while you're OUT FOR THE COUNT.") + to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT.")) return - owner.visible_message("[owner] prepares to THROW!", "Your next attack will be a THROW.") + owner.visible_message(span_danger("[owner] prepares to THROW!"), "Your next attack will be a THROW.") var/mob/living/carbon/human/H = owner H.mind.martial_art.streak = "throw" @@ -71,9 +71,9 @@ /datum/action/kick/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't WRESTLE while you're OUT FOR THE COUNT.") + to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT.")) return - owner.visible_message("[owner] prepares to KICK!", "Your next attack will be a KICK.") + owner.visible_message(span_danger("[owner] prepares to KICK!"), "Your next attack will be a KICK.") var/mob/living/carbon/human/H = owner H.mind.martial_art.streak = "kick" @@ -83,9 +83,9 @@ /datum/action/strike/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't WRESTLE while you're OUT FOR THE COUNT.") + to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT.")) return - owner.visible_message("[owner] prepares to STRIKE!", "Your next attack will be a STRIKE.") + owner.visible_message(span_danger("[owner] prepares to STRIKE!"), "Your next attack will be a STRIKE.") var/mob/living/carbon/human/H = owner H.mind.martial_art.streak = "strike" @@ -95,9 +95,9 @@ /datum/action/drop/Trigger() if(owner.incapacitated()) - to_chat(owner, "You can't WRESTLE while you're OUT FOR THE COUNT.") + to_chat(owner, span_warning("You can't WRESTLE while you're OUT FOR THE COUNT.")) return - owner.visible_message("[owner] prepares to LEG DROP!", "Your next attack will be a LEG DROP.") + owner.visible_message(span_danger("[owner] prepares to LEG DROP!"), "Your next attack will be a LEG DROP.") var/mob/living/carbon/human/H = owner H.mind.martial_art.streak = "drop" @@ -436,8 +436,8 @@ if(A.pulling == D) return 1 A.start_pulling(D) - D.visible_message("[A] gets [D] in a cinch!", \ - "[A] gets [D] in a cinch!") + D.visible_message(span_danger("[A] gets [D] in a cinch!"), \ + span_userdanger("[A] gets [D] in a cinch!")) D.Stun(rand(60,100)) log_combat(A, D, "cinched") return 1 diff --git a/code/datums/mind.dm b/code/datums/mind.dm index 15543bbcb108..7248ba0ddf73 100644 --- a/code/datums/mind.dm +++ b/code/datums/mind.dm @@ -73,6 +73,14 @@ var/flavour_text = null ///Are we zombified/uncloneable? var/zombified = FALSE + ///What character we joined in as- either at roundstart or latejoin, so we know for persistent scars if we ended as the same person or not + var/mob/original_character + /// What scar slot we have loaded, so we don't have to constantly check the savefile + var/current_scar_slot + /// The index for what character slot, if any, we were loaded from, so we can track persistent scars on a per-character basis. Each character slot gets PERSISTENT_SCAR_SLOTS scar slots + var/original_character_slot_index + /// The index for our current scar slot, so we don't have to constantly check the savefile (unlike the slots themselves, this index is independent of selected char slot, and increments whenever a valid char is joined with) + var/current_scar_slot_index /datum/mind/New(key) src.key = key @@ -94,6 +102,7 @@ return language_holder /datum/mind/proc/transfer_to(mob/new_character, var/force_key_move = 0) + original_character = null var/mood_was_enabled = FALSE//Yogs -- Mood Preferences if(current) // remove ourself from our old body's mind variable // Yogs start -- Mood preferences @@ -148,6 +157,7 @@ new_character.key = key //now transfer the key to link the client to our new body if(new_character.client) new_character.client.init_verbs() // re-initialize character specific verbs + LAZYCLEARLIST(new_character.client.recent_examines) current.update_atom_languages() /datum/mind/proc/set_death_time() @@ -373,7 +383,7 @@ if(creator.mind.special_role) message_admins("[ADMIN_LOOKUPFLW(current)] has been created by [ADMIN_LOOKUPFLW(creator)], an antagonist.") - to_chat(current, "Despite your creators current allegiances, your true master remains [creator.real_name]. If their loyalties change, so do yours. This will never change unless your creator's body is destroyed.") + to_chat(current, span_userdanger("Despite your creators current allegiances, your true master remains [creator.real_name]. If their loyalties change, so do yours. This will never change unless your creator's body is destroyed.")) /datum/mind/proc/show_memory(mob/recipient, window=1) if(!recipient) @@ -417,7 +427,7 @@ if(href_list["remove_antag"]) var/datum/antagonist/A = locate(href_list["remove_antag"]) in antag_datums if(!istype(A)) - to_chat(usr,"Invalid antagonist ref to be removed.") + to_chat(usr,span_warning("Invalid antagonist ref to be removed.")) return A.admin_remove(usr) @@ -569,7 +579,7 @@ log_admin("[key_name(usr)] changed [current]'s telecrystal count to [crystals].") if("uplink") if(!equip_traitor()) - to_chat(usr, "Equipping a syndicate failed!") + to_chat(usr, span_danger("Equipping a syndicate failed!")) log_admin("[key_name(usr)] tried and failed to give [current] an uplink.") else log_admin("[key_name(usr)] gave [current] an uplink.") @@ -598,7 +608,7 @@ /datum/mind/proc/announce_objectives() var/obj_count = 1 - to_chat(current, "Your current objectives:") + to_chat(current, span_notice("Your current objectives:")) for(var/objective in get_all_objectives()) var/datum/objective/O = objective to_chat(current, "Objective #[obj_count]: [O.explanation_text]") diff --git a/code/datums/mood_events/generic_positive_events.dm b/code/datums/mood_events/generic_positive_events.dm index 1072c8c6491a..670be33752ee 100644 --- a/code/datums/mood_events/generic_positive_events.dm +++ b/code/datums/mood_events/generic_positive_events.dm @@ -138,7 +138,7 @@ timeout = 3 MINUTES /datum/mood_event/religiously_comforted - description = "You are comforted by the presence of a holy person." + description = span_nicegreen("You are comforted by the presence of a holy person.") mood_change = 3 timeout = 5 MINUTES diff --git a/code/datums/mutations/actions.dm b/code/datums/mutations/actions.dm index 47b8e920ac0f..36c019e6e618 100644 --- a/code/datums/mutations/actions.dm +++ b/code/datums/mutations/actions.dm @@ -2,8 +2,8 @@ name = "Telepathy" desc = "A rare mutation that allows the user to telepathically communicate to others." quality = POSITIVE - text_gain_indication = "You can hear your own voice echoing in your mind!" - text_lose_indication = "You don't hear your mind echo anymore." + text_gain_indication = span_notice("You can hear your own voice echoing in your mind!") + text_lose_indication = span_notice("You don't hear your mind echo anymore.") difficulty = 12 power = /obj/effect/proc_holder/spell/targeted/telepathy instability = 10 @@ -15,8 +15,8 @@ desc = "Your sense of smell is comparable to that of a canine." quality = POSITIVE difficulty = 12 - text_gain_indication = "Smells begin to make more sense..." - text_lose_indication = "Your sense of smell goes back to normal." + text_gain_indication = span_notice("Smells begin to make more sense...") + text_lose_indication = span_notice("Your sense of smell goes back to normal.") power = /obj/effect/proc_holder/spell/targeted/olfaction instability = 30 synchronizer_coeff = 1 @@ -45,7 +45,7 @@ var/datum/gas_mixture/air = user.loc.return_air() if(air.get_moles(/datum/gas/miasma) >= 0.1) user.adjust_disgust(sensitivity * 45) - to_chat(user, "With your overly sensitive nose, you get a whiff of stench and feel sick! Try moving to a cleaner area!") + to_chat(user, span_warning("With your overly sensitive nose, you get a whiff of stench and feel sick! Try moving to a cleaner area!")) return var/atom/sniffed = user.get_active_held_item() @@ -57,43 +57,43 @@ if(prints[md5(C.dna.uni_identity)]) possible |= C if(!length(possible)) - to_chat(user,"Despite your best efforts, there are no scents to be found on [sniffed]...") + to_chat(user,span_warning("Despite your best efforts, there are no scents to be found on [sniffed]...")) return tracking_target = input(user, "Choose a scent to remember.", "Scent Tracking") as null|anything in possible if(!tracking_target) if(!old_target) - to_chat(user,"You decide against remembering any scents. Instead, you notice your own nose in your peripheral vision. This goes on to remind you of that one time you started breathing manually and couldn't stop. What an awful day that was.") + to_chat(user,span_warning("You decide against remembering any scents. Instead, you notice your own nose in your peripheral vision. This goes on to remind you of that one time you started breathing manually and couldn't stop. What an awful day that was.")) return tracking_target = old_target on_the_trail(user) return - to_chat(user,"You pick up the scent of [tracking_target]. The hunt begins.") + to_chat(user,span_notice("You pick up the scent of [tracking_target]. The hunt begins.")) on_the_trail(user) return if(!tracking_target) - to_chat(user,"You're not holding anything to smell, and you haven't smelled anything you can track. You smell your skin instead; it's kinda salty.") + to_chat(user,span_warning("You're not holding anything to smell, and you haven't smelled anything you can track. You smell your skin instead; it's kinda salty.")) return on_the_trail(user) /obj/effect/proc_holder/spell/targeted/olfaction/proc/on_the_trail(mob/living/user) if(!tracking_target) - to_chat(user,"You're not tracking a scent, but the game thought you were. Something's gone wrong! Report this as a bug.") + to_chat(user,span_warning("You're not tracking a scent, but the game thought you were. Something's gone wrong! Report this as a bug.")) return if(tracking_target == user) - to_chat(user,"You smell out the trail to yourself. Yep, it's you.") + to_chat(user,span_warning("You smell out the trail to yourself. Yep, it's you.")) return var/turf/pos = get_turf(tracking_target) if(usr.z < pos.z) - to_chat(user,"The trail leads... way up above you? Huh. They must be really, really far away.") + to_chat(user,span_warning("The trail leads... way up above you? Huh. They must be really, really far away.")) return else if(usr.z > pos.z) - to_chat(user,"The trail leads... way down below you? Huh. They must be really, really far away.") + to_chat(user,span_warning("The trail leads... way down below you? Huh. They must be really, really far away.")) return var/direction_text = "[dir2text(get_dir(usr, pos))]" if(direction_text) - to_chat(user,"You consider [tracking_target]'s scent. The trail leads [direction_text].") + to_chat(user,span_notice("You consider [tracking_target]'s scent. The trail leads [direction_text].")) /datum/mutation/human/firebreath name = "Fire Breath" @@ -101,8 +101,8 @@ quality = POSITIVE difficulty = 12 locked = TRUE - text_gain_indication = "Your throat is burning!" - text_lose_indication = "Your throat is cooling down." + text_gain_indication = span_notice("Your throat is burning!") + text_lose_indication = span_notice("Your throat is cooling down.") power = /obj/effect/proc_holder/spell/aimed/firebreath instability = 30 energy_coeff = 1 @@ -137,7 +137,7 @@ if(C.is_mouth_covered()) C.adjust_fire_stacks(2) C.IgniteMob() - to_chat(C,"Something in front of your mouth caught fire!") + to_chat(C,span_warning("Something in front of your mouth caught fire!")) return FALSE /obj/effect/proc_holder/spell/aimed/firebreath/ready_projectile(obj/item/projectile/P, atom/target, mob/user, iteration) @@ -162,7 +162,7 @@ obj/effect/proc_holder/spell/aimed/firebreath/fire_projectile(mob/user) name = "Void Magnet" desc = "A rare genome that attracts odd forces not usually observed." quality = MINOR_NEGATIVE //upsides and downsides - text_gain_indication = "You feel a heavy, dull force just beyond the walls watching you." + text_gain_indication = span_notice("You feel a heavy, dull force just beyond the walls watching you.") instability = 30 power = /obj/effect/proc_holder/spell/self/void energy_coeff = 1 diff --git a/code/datums/mutations/antenna.dm b/code/datums/mutations/antenna.dm index 7bd01edf323c..ce909d157ec6 100644 --- a/code/datums/mutations/antenna.dm +++ b/code/datums/mutations/antenna.dm @@ -2,8 +2,8 @@ name = "Antenna" desc = "The affected person sprouts an antenna. This is known to allow them to access common radio channels passively." quality = POSITIVE - text_gain_indication = "You feel an antenna sprout from your forehead." - text_lose_indication = "Your antenna shrinks back down." + text_gain_indication = span_notice("You feel an antenna sprout from your forehead.") + text_lose_indication = span_notice("Your antenna shrinks back down.") instability = 10 difficulty = 8 var/obj/item/implant/radio/antenna/radio @@ -32,8 +32,8 @@ name = "Mind Reader" desc = "The affected person can look into the recent memories of others." quality = POSITIVE - text_gain_indication = "You hear distant voices at the corners of your mind." - text_lose_indication = "The distant voices fade." + text_gain_indication = span_notice("You hear distant voices at the corners of your mind.") + text_lose_indication = span_notice("The distant voices fade.") power = /obj/effect/proc_holder/spell/targeted/mindread instability = 40 difficulty = 8 @@ -51,15 +51,15 @@ /obj/effect/proc_holder/spell/targeted/mindread/cast(list/targets, mob/living/carbon/human/user = usr) for(var/mob/living/M in targets) if(usr.anti_magic_check(FALSE, FALSE, TRUE, 0) || M.anti_magic_check(FALSE, FALSE, TRUE, 0)) - to_chat(usr, "As you reach out with your mind, you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.") + to_chat(usr, span_warning("As you reach out with your mind, you're suddenly stopped by a vision of a massive tinfoil wall that streches beyond visible range. It seems you've been foiled.")) return if(M.stat == DEAD) - to_chat(user, "[M] is dead!") + to_chat(user, span_boldnotice("[M] is dead!")) return if(M.mind) - to_chat(user, "You plunge into [M]'s mind...") + to_chat(user, span_boldnotice("You plunge into [M]'s mind...")) if(prob(20)) - to_chat(M, "You feel something foreign enter your mind.")//chance to alert the read-ee + to_chat(M, span_danger("You feel something foreign enter your mind."))//chance to alert the read-ee var/list/recent_speech = list() var/list/say_log = list() var/log_source = M.logging @@ -77,17 +77,17 @@ if(prob(50)) recent_speech[spoken_memory] = say_log[spoken_memory] if(recent_speech.len) - to_chat(user, "You catch some drifting memories of their past conversations...") + to_chat(user, span_boldnotice("You catch some drifting memories of their past conversations...")) for(var/spoken_memory in recent_speech) - to_chat(user, "[recent_speech[spoken_memory]]") + to_chat(user, span_notice("[recent_speech[spoken_memory]]")) if(iscarbon(M)) var/mob/living/carbon/human/H = M - to_chat(user, "You find that their intent is to [H.a_intent]...") + to_chat(user, span_boldnotice("You find that their intent is to [H.a_intent]...")) var/datum/dna/the_dna = H.has_dna() if(the_dna) - to_chat(user, "You uncover that [H.p_their()] true identity is [the_dna.real_name].") + to_chat(user, span_boldnotice("You uncover that [H.p_their()] true identity is [the_dna.real_name].")) else - to_chat(user, "You can't find a mind to read inside of [M].") + to_chat(user, span_boldnotice("You can't find a mind to read inside of [M].")) /datum/mutation/human/mindreader/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) ..() diff --git a/code/datums/mutations/body.dm b/code/datums/mutations/body.dm index 1b8b8679e4ee..c5fc04f0fcad 100644 --- a/code/datums/mutations/body.dm +++ b/code/datums/mutations/body.dm @@ -5,13 +5,13 @@ name = "Epilepsy" desc = "A genetic defect that sporadically causes seizures." quality = NEGATIVE - text_gain_indication = "You get a headache." + text_gain_indication = span_danger("You get a headache.") synchronizer_coeff = 1 power_coeff = 1 /datum/mutation/human/epilepsy/on_life() if(prob(1 * GET_MUTATION_SYNCHRONIZER(src)) && owner.stat == CONSCIOUS) - owner.visible_message("[owner] starts having a seizure!", "You have a seizure!") + owner.visible_message(span_danger("[owner] starts having a seizure!"), span_userdanger("You have a seizure!")) owner.Unconscious(200 * GET_MUTATION_POWER(src)) owner.Jitter(1000 * GET_MUTATION_POWER(src)) SEND_SIGNAL(owner, COMSIG_ADD_MOOD_EVENT, "epilepsy", /datum/mood_event/epilepsy) @@ -27,7 +27,7 @@ name = "Unstable DNA" desc = "Strange mutation that causes the holder to randomly mutate." quality = NEGATIVE - text_gain_indication = "You feel strange." + text_gain_indication = span_danger("You feel strange.") locked = TRUE /datum/mutation/human/bad_dna/on_acquiring(mob/living/carbon/human/owner) @@ -53,7 +53,7 @@ name = "Cough" desc = "A chronic cough." quality = MINOR_NEGATIVE - text_gain_indication = "You start coughing." + text_gain_indication = span_danger("You start coughing.") synchronizer_coeff = 1 power_coeff = 1 @@ -70,7 +70,7 @@ name = "Paranoia" desc = "Subject is easily terrified, and may suffer from hallucinations." quality = NEGATIVE - text_gain_indication = "You feel screams echo through your mind..." + text_gain_indication = span_danger("You feel screams echo through your mind...") text_lose_indication = "The screaming in your mind fades." /datum/mutation/human/paranoia/on_life() @@ -94,14 +94,14 @@ return owner.transform = owner.transform.Scale(1, 0.8) passtable_on(owner, GENETIC_MUTATION) - owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") + owner.visible_message(span_danger("[owner] suddenly shrinks!"), span_notice("Everything around you seems to grow..")) /datum/mutation/human/dwarfism/on_losing(mob/living/carbon/human/owner) if(..()) return owner.transform = owner.transform.Scale(1, 1.25) passtable_off(owner, GENETIC_MUTATION) - owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") + owner.visible_message(span_danger("[owner] suddenly grows!"), span_notice("Everything around you seems to shrink..")) //Clumsiness has a very large amount of small drawbacks depending on item. @@ -109,7 +109,7 @@ name = "Clumsiness" desc = "A genome that inhibits certain brain functions, causing the holder to appear clumsy. Honk!" quality = MINOR_NEGATIVE - text_gain_indication = "You feel lightheaded." + text_gain_indication = span_danger("You feel lightheaded.") /datum/mutation/human/clumsy/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -127,7 +127,7 @@ name = "Tourette's Syndrome" desc = "A chronic twitch that forces the user to scream bad words." //definitely needs rewriting quality = NEGATIVE - text_gain_indication = "You twitch." + text_gain_indication = span_danger("You twitch.") synchronizer_coeff = 1 /datum/mutation/human/tourettes/on_life() @@ -151,7 +151,7 @@ name = "Deafness" desc = "The holder of this genome is completely deaf." quality = NEGATIVE - text_gain_indication = "You can't seem to hear anything." + text_gain_indication = span_danger("You can't seem to hear anything.") /datum/mutation/human/deaf/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -185,7 +185,7 @@ name = "Glowy" desc = "You permanently emit a light with a random color and intensity." quality = POSITIVE - text_gain_indication = "Your skin begins to glow softly." + text_gain_indication = span_notice("Your skin begins to glow softly.") instability = 5 var/obj/effect/dummy/luminescent_glow/glowth //shamelessly copied from luminescents var/glow = 2.5 @@ -215,7 +215,7 @@ /datum/mutation/human/glow/anti name = "Anti-Glow" desc = "Your skin seems to attract and absorb nearby light creating 'darkness' around you." - text_gain_indication = "Your light around you seems to disappear." + text_gain_indication = span_notice("Your light around you seems to disappear.") glow = -3.5 //Slightly stronger, since negating light tends to be harder than making it. conflicts = list(/datum/mutation/human/glow) locked = TRUE @@ -224,8 +224,8 @@ name = "Thick skin" desc = "The user's skin acquires a leathery texture, and becomes more resilient to harm." quality = POSITIVE - text_gain_indication = "Your skin feels dry and heavy." - text_lose_indication = "Your skin feels soft again..." + text_gain_indication = span_notice("Your skin feels dry and heavy.") + text_lose_indication = span_notice("Your skin feels soft again...") difficulty = 18 instability = 30 var/brutemodbefore @@ -248,8 +248,8 @@ name = "Strength" desc = "The user's muscles slightly expand, allowing them to move faster while carrying people." quality = POSITIVE - text_gain_indication = "You feel strong!" - text_lose_indication = "You feel fairly weak." + text_gain_indication = span_notice("You feel strong!") + text_lose_indication = span_notice("You feel fairly weak.") difficulty = 12 instability = 10 @@ -257,8 +257,8 @@ name = "Insulated" desc = "The affected person does not conduct electricity." quality = POSITIVE - text_gain_indication = "Your fingertips go numb." - text_lose_indication = "Your fingertips regain feeling." + text_gain_indication = span_notice("Your fingertips go numb.") + text_lose_indication = span_notice("Your fingertips regain feeling.") difficulty = 16 instability = 25 @@ -276,7 +276,7 @@ name = "Fiery Sweat" desc = "The user's skin will randomly combust, but is generally a lot more resilient to burning." quality = NEGATIVE - text_gain_indication = "You feel hot." + text_gain_indication = span_warning("You feel hot.") text_lose_indication = "You feel a lot cooler." difficulty = 14 synchronizer_coeff = 1 @@ -301,7 +301,7 @@ name = "Spatial Instability" desc = "The victim of the mutation has a very weak link to spatial reality, and may be displaced. Often causes extreme nausea." quality = NEGATIVE - text_gain_indication = "The space around you twists sickeningly." + text_gain_indication = span_warning("The space around you twists sickeningly.") text_lose_indication = "The space around you settles back to normal." difficulty = 18//high so it's hard to unlock and abuse instability = 10 @@ -313,17 +313,17 @@ /datum/mutation/human/badblink/on_life() if(prob(warpchance) && isturf(owner.loc)) //checks if the owner is inside something so they can't teleport out of the cloner var/warpmessage = pick( - "With a sickening 720-degree twist of [owner.p_their()] back, [owner] vanishes into thin air.", - "[owner] does some sort of strange backflip into another dimension. It looks pretty painful.", - "[owner] does a jump to the left, a step to the right, and warps out of reality.", - "[owner]'s torso starts folding inside out until it vanishes from reality, taking [owner] with it.", - "One moment, you see [owner]. The next, [owner] is gone.") - owner.visible_message(warpmessage, "You feel a wave of nausea as you fall through reality!") + span_warning("With a sickening 720-degree twist of [owner.p_their()] back, [owner] vanishes into thin air."), + span_warning("[owner] does some sort of strange backflip into another dimension. It looks pretty painful."), + span_warning("[owner] does a jump to the left, a step to the right, and warps out of reality."), + span_warning("[owner]'s torso starts folding inside out until it vanishes from reality, taking [owner] with it."), + span_warning("One moment, you see [owner]. The next, [owner] is gone.")) + owner.visible_message(warpmessage, span_userdanger("You feel a wave of nausea as you fall through reality!")) var/warpdistance = rand(10,15) * GET_MUTATION_POWER(src) do_teleport(owner, get_turf(owner), warpdistance, channel = TELEPORT_CHANNEL_FREE) owner.adjust_disgust(GET_MUTATION_SYNCHRONIZER(src) * (warpchance * warpdistance)) warpchance = 0 - owner.visible_message("[owner] appears out of nowhere!") + owner.visible_message(span_danger("[owner] appears out of nowhere!")) else warpchance += 0.25 * GET_MUTATION_ENERGY(src) @@ -331,7 +331,7 @@ name = "Acidic Flesh" desc = "Subject has acidic chemicals building up underneath the skin. This is often lethal." quality = NEGATIVE - text_gain_indication = "A horrible burning sensation envelops you as your flesh turns to acid!" + text_gain_indication = span_userdanger("A horrible burning sensation envelops you as your flesh turns to acid!") text_lose_indication = "A feeling of relief fills you as your flesh goes back to normal." difficulty = 18//high so it's hard to unlock and use on others var/msgcooldown = 0 @@ -339,11 +339,11 @@ /datum/mutation/human/acidflesh/on_life() if(prob(25)) if(world.time > msgcooldown) - to_chat(owner, "Your acid flesh bubbles...") + to_chat(owner, span_danger("Your acid flesh bubbles...")) msgcooldown = world.time + 200 if(prob(15)) owner.acid_act(rand(30,50), 10) - owner.visible_message("[owner]'s skin bubbles and pops.", "Your bubbling flesh pops! It burns!") + owner.visible_message(span_warning("[owner]'s skin bubbles and pops."), span_userdanger("Your bubbling flesh pops! It burns!")) playsound(owner,'sound/weapons/sear.ogg', 50, 1) /datum/mutation/human/gigantism @@ -358,20 +358,20 @@ return owner.resize = 1.25 owner.update_transform() - owner.visible_message("[owner] suddenly grows!", "Everything around you seems to shrink..") + owner.visible_message(span_danger("[owner] suddenly grows!"), span_notice("Everything around you seems to shrink..")) /datum/mutation/human/gigantism/on_losing(mob/living/carbon/human/owner) if(..()) return owner.resize = 0.8 owner.update_transform() - owner.visible_message("[owner] suddenly shrinks!", "Everything around you seems to grow..") + owner.visible_message(span_danger("[owner] suddenly shrinks!"), span_notice("Everything around you seems to grow..")) /datum/mutation/human/spastic name = "Spastic" desc = "Subject suffers from muscle spasms." quality = NEGATIVE - text_gain_indication = "You flinch." + text_gain_indication = span_warning("You flinch.") text_lose_indication = "Your flinching subsides." difficulty = 16 @@ -389,7 +389,7 @@ name = "Two Left Feet" desc = "A mutation that replaces the right foot with another left foot. It makes standing up after getting knocked down very difficult." quality = NEGATIVE - text_gain_indication = "Your right foot feels... left." + text_gain_indication = span_warning("Your right foot feels... left.") text_lose_indication = "Your right foot feels alright." difficulty = 16 var/stun_cooldown = 0 @@ -399,5 +399,5 @@ if(owner.AmountKnockdown() || owner.AmountStun()) owner.SetKnockdown(owner.AmountKnockdown()*2) owner.SetStun(owner.AmountStun()*2) - owner.visible_message("[owner] tries to stand up, but trips!", "You trip over your own feet!") + owner.visible_message(span_danger("[owner] tries to stand up, but trips!"), span_userdanger("You trip over your own feet!")) stun_cooldown = world.time + 300 diff --git a/code/datums/mutations/chameleon.dm b/code/datums/mutations/chameleon.dm index a6fd5cab3ec2..fe25de933aa2 100644 --- a/code/datums/mutations/chameleon.dm +++ b/code/datums/mutations/chameleon.dm @@ -4,8 +4,8 @@ desc = "A genome that causes the holder's skin to become transparent over time." quality = POSITIVE difficulty = 16 - text_gain_indication = "You feel one with your surroundings." - text_lose_indication = "You feel oddly exposed." + text_gain_indication = span_notice("You feel one with your surroundings.") + text_lose_indication = span_notice("You feel oddly exposed.") time_coeff = 5 instability = 25 diff --git a/code/datums/mutations/cold.dm b/code/datums/mutations/cold.dm index fdfba18f9a28..908d0373c659 100644 --- a/code/datums/mutations/cold.dm +++ b/code/datums/mutations/cold.dm @@ -2,7 +2,7 @@ name = "Geladikinesis" desc = "Allows the user to concentrate moisture and sub-zero forces into snow." quality = POSITIVE - text_gain_indication = "Your hand feels cold." + text_gain_indication = span_notice("Your hand feels cold.") instability = 10 difficulty = 10 synchronizer_coeff = 1 @@ -22,7 +22,7 @@ name = "Cryokinesis" desc = "Draws negative energy from the sub-zero void to freeze surrounding temperatures at subject's will." quality = POSITIVE //upsides and downsides - text_gain_indication = "Your hand feels cold." + text_gain_indication = span_notice("Your hand feels cold.") instability = 20 difficulty = 12 synchronizer_coeff = 1 diff --git a/code/datums/mutations/heat_adaptation.dm b/code/datums/mutations/heat_adaptation.dm index 31157ce9a435..d8818962457c 100644 --- a/code/datums/mutations/heat_adaptation.dm +++ b/code/datums/mutations/heat_adaptation.dm @@ -4,7 +4,7 @@ desc = "A strange mutation that renders the host immune to the heat of a plasma fire. Does not grant immunity to fire itself." quality = POSITIVE difficulty = 16 - text_gain_indication = "Your body feels cold!" + text_gain_indication = span_notice("Your body feels cold!") time_coeff = 5 instability = 40 conflicts = list(SPACEMUT) diff --git a/code/datums/mutations/hulk.dm b/code/datums/mutations/hulk.dm index 9691ed587907..3fa10e8904bb 100644 --- a/code/datums/mutations/hulk.dm +++ b/code/datums/mutations/hulk.dm @@ -5,7 +5,7 @@ quality = POSITIVE locked = TRUE difficulty = 16 - text_gain_indication = "Your muscles hurt!" + text_gain_indication = span_notice("Your muscles hurt!") species_allowed = list("human") //no skeleton/lizard hulk health_req = 25 instability = 65 @@ -28,7 +28,7 @@ /datum/mutation/human/hulk/on_life() if(owner.health < 0) on_losing(owner) - to_chat(owner, "You suddenly feel very weak.") + to_chat(owner, span_danger("You suddenly feel very weak.")) /datum/mutation/human/hulk/on_losing(mob/living/carbon/human/owner) if(..()) @@ -52,7 +52,7 @@ quality = POSITIVE get_chance = 10 lowest_value = 256 * 14 - text_gain_indication = "You suddenly feel very angry." + text_gain_indication = span_notice("You suddenly feel very angry.") species_allowed = list("human") //no skeleton/lizard hulk health_req = 25 @@ -61,7 +61,7 @@ quality = POSITIVE class = MUT_OTHER locked = TRUE - text_gain_indication = "Your muscles hurt!" + text_gain_indication = span_notice("Your muscles hurt!") species_allowed = list("human") //no skeleton/lizard hulk health_req = 1 var/health_based = 0 @@ -79,7 +79,7 @@ if(istype(owner.w_uniform, /obj/item/clothing/under)) var/obj/item/clothing/under/U = owner.w_uniform if(owner.canUnEquip(U)) - owner.visible_message("[U] falls apart!", "You tear your clothes up in anger!") + owner.visible_message("[U] falls apart!", span_warning("You tear your clothes up in anger!")) qdel(U) if(istype(owner.wear_suit, /obj/item/clothing/suit)) var/obj/item/clothing/suit/S = owner.wear_suit diff --git a/code/datums/mutations/radioactive.dm b/code/datums/mutations/radioactive.dm index 00155ad0a171..c394e48c3e6d 100644 --- a/code/datums/mutations/radioactive.dm +++ b/code/datums/mutations/radioactive.dm @@ -2,7 +2,7 @@ name = "Radioactivity" desc = "A volatile mutation that causes the host to sent out deadly beta radiation. This affects both the hosts and their surroundings." quality = NEGATIVE - text_gain_indication = "You can feel it in your bones!" + text_gain_indication = span_warning("You can feel it in your bones!") time_coeff = 5 instability = 5 difficulty = 8 diff --git a/code/datums/mutations/sight.dm b/code/datums/mutations/sight.dm index ea6c661ab8a0..e8e4f13b2cdb 100644 --- a/code/datums/mutations/sight.dm +++ b/code/datums/mutations/sight.dm @@ -3,7 +3,7 @@ name = "Near Sightness" desc = "The holder of this mutation has poor eyesight." quality = MINOR_NEGATIVE - text_gain_indication = "You can't see very well." + text_gain_indication = span_danger("You can't see very well.") /datum/mutation/human/nearsight/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -21,7 +21,7 @@ name = "Blindness" desc = "Renders the subject completely blind." quality = NEGATIVE - text_gain_indication = "You can't seem to see anything." + text_gain_indication = span_danger("You can't seem to see anything.") /datum/mutation/human/blind/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -39,7 +39,7 @@ desc = "The user of this genome can visually percieve the unique human thermal signature." quality = POSITIVE difficulty = 18 - text_gain_indication = "You can see the heat rising off of your skin..." + text_gain_indication = span_notice("You can see the heat rising off of your skin...") time_coeff = 2 locked = TRUE instability = 40 @@ -62,7 +62,7 @@ /datum/mutation/human/thermal/x_ray name = "X Ray Vision" desc = "A strange genome that allows the user to see between the spaces of walls." //actual x-ray would mean you'd constantly be blasting rads, wich might be fun for later //hmb - text_gain_indication = "The walls suddenly disappear!" + text_gain_indication = span_notice("The walls suddenly disappear!") instability = 35 locked = TRUE visionflag = TRAIT_XRAY_VISION @@ -74,7 +74,7 @@ quality = POSITIVE locked = TRUE difficulty = 16 - text_gain_indication = "You feel pressure building up behind your eyes." + text_gain_indication = span_notice("You feel pressure building up behind your eyes.") layer_used = FRONT_MUTATIONS_LAYER limb_req = BODY_ZONE_HEAD diff --git a/code/datums/mutations/space_adaptation.dm b/code/datums/mutations/space_adaptation.dm index 8fbaa59d2fc8..8a9cd5b9adcd 100644 --- a/code/datums/mutations/space_adaptation.dm +++ b/code/datums/mutations/space_adaptation.dm @@ -4,7 +4,7 @@ desc = "A strange mutation that renders the host immune to the vacuum of space. Will still need an oxygen supply." quality = POSITIVE difficulty = 16 - text_gain_indication = "Your body feels warm!" + text_gain_indication = span_notice("Your body feels warm!") time_coeff = 5 instability = 40 conflicts = list(HEATMUT) diff --git a/code/datums/mutations/speech.dm b/code/datums/mutations/speech.dm index 0a9734079612..822467e50b02 100644 --- a/code/datums/mutations/speech.dm +++ b/code/datums/mutations/speech.dm @@ -5,7 +5,7 @@ name = "Nervousness" desc = "Causes the holder to stutter." quality = MINOR_NEGATIVE - text_gain_indication = "You feel nervous." + text_gain_indication = span_danger("You feel nervous.") /datum/mutation/human/nervousness/on_life() if(prob(10)) @@ -16,8 +16,8 @@ name = "Wacky" desc = "Unknown." quality = MINOR_NEGATIVE - text_gain_indication = "You feel an off sensation in your voicebox." - text_lose_indication = "The off sensation passes." + text_gain_indication = span_sans("You feel an off sensation in your voicebox.") + text_lose_indication = span_notice("The off sensation passes.") /datum/mutation/human/wacky/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -36,8 +36,8 @@ name = "Mute" desc = "Completely inhibits the vocal section of the brain." quality = NEGATIVE - text_gain_indication = "You feel unable to express yourself at all." - text_lose_indication = "You feel able to speak freely again." + text_gain_indication = span_danger("You feel unable to express yourself at all.") + text_lose_indication = span_danger("You feel able to speak freely again.") /datum/mutation/human/mute/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -54,8 +54,8 @@ name = "Smile" desc = "Causes the user to be in constant mania." quality = MINOR_NEGATIVE - text_gain_indication = "You feel so happy. Nothing can be wrong with anything. :)" - text_lose_indication = "Everything is terrible again. :(" + text_gain_indication = span_notice("You feel so happy. Nothing can be wrong with anything. :)") + text_lose_indication = span_notice("Everything is terrible again. :(") /datum/mutation/human/smile/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -123,8 +123,8 @@ name = "Unintelligible" desc = "Partially inhibits the vocal center of the brain, severely distorting speech." quality = NEGATIVE - text_gain_indication = "You can't seem to form any coherent thoughts!" - text_lose_indication = "Your mind feels more clear." + text_gain_indication = span_danger("You can't seem to form any coherent thoughts!") + text_lose_indication = span_danger("Your mind feels more clear.") /datum/mutation/human/unintelligible/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -140,8 +140,8 @@ name = "Swedish" desc = "A horrible mutation originating from the distant past. Thought to be eradicated after the incident in 2037." quality = MINOR_NEGATIVE - text_gain_indication = "You feel Swedish, however that works." - text_lose_indication = "The feeling of Swedishness passes." + text_gain_indication = span_notice("You feel Swedish, however that works.") + text_lose_indication = span_notice("The feeling of Swedishness passes.") /datum/mutation/human/swedish/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -170,8 +170,8 @@ name = "Chav" desc = "Unknown" quality = MINOR_NEGATIVE - text_gain_indication = "Ye feel like a reet prat like, innit?" - text_lose_indication = "You no longer feel like being rude and sassy." + text_gain_indication = span_notice("Ye feel like a reet prat like, innit?") + text_lose_indication = span_notice("You no longer feel like being rude and sassy.") /datum/mutation/human/chav/on_acquiring(mob/living/carbon/human/owner) if(..()) @@ -216,8 +216,8 @@ desc = "A terrifying mutation named after its 'patient-zero'." quality = MINOR_NEGATIVE locked = TRUE - text_gain_indication = "You feel pretty good, honeydoll." - text_lose_indication = "You feel a little less conversation would be great." + text_gain_indication = span_notice("You feel pretty good, honeydoll.") + text_lose_indication = span_notice("You feel a little less conversation would be great.") /datum/mutation/human/elvis/on_life() switch(pick(1,2)) @@ -262,8 +262,8 @@ desc = "A common mutation that severely decreases intelligence." quality = NEGATIVE locked = TRUE - text_gain_indication = "You feel...totally chill, man!" - text_lose_indication = "You feel like you have a better sense of time." + text_gain_indication = span_notice("You feel...totally chill, man!") + text_lose_indication = span_notice("You feel like you have a better sense of time.") /datum/mutation/human/stoner/on_acquiring(mob/living/carbon/human/owner) ..() diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm index 30c206408afa..9e330f867715 100644 --- a/code/datums/mutations/telekinesis.dm +++ b/code/datums/mutations/telekinesis.dm @@ -4,7 +4,7 @@ desc = "A strange mutation that allows the holder to interact with objects through thought." quality = POSITIVE difficulty = 18 - text_gain_indication = "You feel smarter!" + text_gain_indication = span_notice("You feel smarter!") limb_req = BODY_ZONE_HEAD instability = 40 diff --git a/code/datums/mutations/touch.dm b/code/datums/mutations/touch.dm index af5b22373e54..d8197ead111c 100644 --- a/code/datums/mutations/touch.dm +++ b/code/datums/mutations/touch.dm @@ -4,8 +4,8 @@ quality = POSITIVE locked = TRUE difficulty = 16 - text_gain_indication = "You feel power flow through your hands." - text_lose_indication = "The energy in your hands subsides." + text_gain_indication = span_notice("You feel power flow through your hands.") + text_lose_indication = span_notice("The energy in your hands subsides.") power = /obj/effect/proc_holder/spell/targeted/touch/shock instability = 20 locked = TRUE @@ -40,17 +40,17 @@ C.dropItemToGround(C.get_active_held_item()) C.dropItemToGround(C.get_inactive_held_item()) C.confused += 15 - C.visible_message("[user] electrocutes [target]!","[user] electrocutes you!") + C.visible_message(span_danger("[user] electrocutes [target]!"),span_userdanger("[user] electrocutes you!")) return ..() else - user.visible_message("[user] fails to electrocute [target]!") + user.visible_message(span_warning("[user] fails to electrocute [target]!")) return ..() else if(isliving(target)) var/mob/living/L = target L.electrocute_act(15, src, 1, FALSE, FALSE, FALSE, FALSE) user.Beam(L, icon_state="red_lightning", time=15) - L.visible_message("[user] electrocutes [target]!","[user] electrocutes you!") + L.visible_message(span_danger("[user] electrocutes [target]!"),span_userdanger("[user] electrocutes you!")) return ..() else - to_chat(user,"The electricity doesn't seem to affect [target]...") + to_chat(user,span_warning("The electricity doesn't seem to affect [target]...")) return ..() diff --git a/code/datums/saymode.dm b/code/datums/saymode.dm index 6fd8552e18f0..e25688723f3c 100644 --- a/code/datums/saymode.dm +++ b/code/datums/saymode.dm @@ -17,7 +17,7 @@ /datum/saymode/changeling/handle_message(mob/living/user, message, datum/language/language) switch(user.lingcheck()) if(LINGHIVE_LINK) - var/msg = "[user.mind]: [message]" + var/msg = span_changeling("[user.mind]: [message]") for(var/_M in GLOB.player_list) var/mob/M = _M if(M in GLOB.dead_mob_list) @@ -33,13 +33,13 @@ to_chat(M, msg) if(LINGHIVE_OUTSIDER) if(prob(40)) - to_chat(M, "We can faintly sense an outsider trying to communicate through the hivemind...") + to_chat(M, span_changeling("We can faintly sense an outsider trying to communicate through the hivemind...")) if(LINGHIVE_LING) if (HAS_TRAIT(user, CHANGELING_HIVEMIND_MUTE)) - to_chat(user, "The poison in the air hinders our ability to interact with the hivemind.") + to_chat(user, span_warning("The poison in the air hinders our ability to interact with the hivemind.")) return FALSE var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) - var/msg = "[changeling.changelingID]: [message]" + var/msg = span_changeling("[changeling.changelingID]: [message]") user.log_talk(message, LOG_SAY, tag="changeling [changeling.changelingID]") for(var/_M in GLOB.player_list) var/mob/M = _M @@ -56,9 +56,9 @@ to_chat(M, msg) if(LINGHIVE_OUTSIDER) if(prob(40)) - to_chat(M, "We can faintly sense another of our kind trying to communicate through the hivemind...") + to_chat(M, span_changeling("We can faintly sense another of our kind trying to communicate through the hivemind...")) if(LINGHIVE_OUTSIDER) - to_chat(user, "Our senses have not evolved enough to be able to communicate this way...") + to_chat(user, span_changeling("Our senses have not evolved enough to be able to communicate this way...")) return FALSE @@ -131,7 +131,7 @@ if(is_monkey_leader(mind) || (ismonkey(user) && is_monkey(mind))) user.log_talk(message, LOG_SAY, tag="monkey") if(prob(75) && ismonkey(user)) - user.visible_message("\The [user] chimpers.") + user.visible_message(span_notice("\The [user] chimpers.")) var/msg = "\[[is_monkey_leader(mind) ? "Monkey Leader" : "Monkey"]\] [user]: [message]" for(var/_M in GLOB.mob_list) var/mob/M = _M @@ -152,7 +152,7 @@ return TRUE if(is_darkspawn_or_veil(user)) user.log_talk(message, LOG_SAY, tag="darkspawn") - var/msg = "\[Mindlink\] [user.real_name]: \"[message]\"" + var/msg = span_velvet("\[Mindlink\] [user.real_name]: \"[message]\"") for(var/mob/M in GLOB.player_list) if(M in GLOB.dead_mob_list) var/link = FOLLOW_LINK(M, user) @@ -162,7 +162,7 @@ var/turf/sender = get_turf(user) if(receiver.z != sender.z) if(prob(25)) - to_chat(M, "Your mindlink trembles with words, but they are too far to make out...") + to_chat(M, span_warning("Your mindlink trembles with words, but they are too far to make out...")) continue to_chat(M, msg) return FALSE //yogs end diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 460bdff3cd82..9b11f26ad2c7 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -11,7 +11,7 @@ icon_state = "shadow_mend" /datum/status_effect/shadow_mend/on_apply() - owner.visible_message("Violet light wraps around [owner]'s body!", "Violet light wraps around your body!") + owner.visible_message(span_notice("Violet light wraps around [owner]'s body!"), span_notice("Violet light wraps around your body!")) playsound(owner, 'sound/magic/teleport_app.ogg', 50, 1) return ..() @@ -20,7 +20,7 @@ owner.adjustFireLoss(-15) /datum/status_effect/shadow_mend/on_remove() - owner.visible_message("The violet light around [owner] glows black!", "The tendrils around you cinch tightly and reap their toll...") + owner.visible_message(span_warning("The violet light around [owner] glows black!"), span_warning("The tendrils around you cinch tightly and reap their toll...")) playsound(owner, 'sound/magic/teleport_diss.ogg', 50, 1) owner.apply_status_effect(STATUS_EFFECT_VOID_PRICE) @@ -72,7 +72,7 @@ /datum/status_effect/vanguard_shield/on_apply() owner.log_message("gained Vanguard stun immunity", LOG_ATTACK) owner.add_stun_absorption("vanguard", INFINITY, 1, "'s yellow aura momentarily intensifies!", "Your ward absorbs the stun!", " radiating with a soft yellow light!") - owner.visible_message("[owner] begins to faintly glow!", "You will absorb all stuns for the next twenty seconds.") + owner.visible_message(span_warning("[owner] begins to faintly glow!"), span_brass("You will absorb all stuns for the next twenty seconds.")) owner.SetStun(0, FALSE) owner.SetKnockdown(0, FALSE) owner.SetParalyzed(0, FALSE) @@ -92,21 +92,21 @@ stuns_blocked = FLOOR(min(vanguard["stuns_absorbed"] * 0.25, 400), 1) vanguard["end_time"] = 0 //so it doesn't absorb the stuns we're about to apply if(owner.stat != DEAD) - var/message_to_owner = "You feel your Vanguard quietly fade..." + var/message_to_owner = span_warning("You feel your Vanguard quietly fade...") var/otheractiveabsorptions = FALSE for(var/i in owner.stun_absorption) if(owner.stun_absorption[i]["end_time"] > world.time && owner.stun_absorption[i]["priority"] > vanguard["priority"]) otheractiveabsorptions = TRUE if(!GLOB.ratvar_awakens && stuns_blocked && !otheractiveabsorptions) owner.Paralyze(stuns_blocked) - message_to_owner = "The weight of the Vanguard's protection crashes down upon you!" + message_to_owner = span_boldwarning("The weight of the Vanguard's protection crashes down upon you!") if(stuns_blocked >= 300) - message_to_owner += "\nYou faint from the exertion!" + message_to_owner += "\n[span_userdanger("You faint from the exertion!")]" stuns_blocked *= 2 owner.Unconscious(stuns_blocked) else stuns_blocked = 0 //so logging is correct in cases where there were stuns blocked but we didn't stun for other reasons - owner.visible_message("[owner]'s glowing aura fades!", message_to_owner) + owner.visible_message(span_warning("[owner]'s glowing aura fades!"), message_to_owner) owner.log_message("lost Vanguard stun immunity[stuns_blocked ? "and was stunned for [stuns_blocked]":""]", LOG_ATTACK) @@ -123,7 +123,7 @@ /datum/status_effect/inathneqs_endowment/on_apply() owner.log_message("gained Inath-neq's invulnerability", LOG_ATTACK) - owner.visible_message("[owner] shines with azure light!", "You feel Inath-neq's power flow through you! You're invincible!") + owner.visible_message(span_warning("[owner] shines with azure light!"), span_notice("You feel Inath-neq's power flow through you! You're invincible!")) var/oldcolor = owner.color owner.color = "#1E8CE1" owner.fully_heal() @@ -136,7 +136,7 @@ /datum/status_effect/inathneqs_endowment/on_remove() owner.log_message("lost Inath-neq's invulnerability", LOG_ATTACK) - owner.visible_message("The light around [owner] flickers and dissipates!", "You feel Inath-neq's power fade from your body!") + owner.visible_message(span_warning("The light around [owner] flickers and dissipates!"), span_boldwarning("You feel Inath-neq's power fade from your body!")) owner.status_flags &= ~GODMODE playsound(owner, 'sound/magic/ethereal_exit.ogg', 50, 1) @@ -223,12 +223,12 @@ alert_type = /obj/screen/alert/status_effect/wish_granters_gift /datum/status_effect/wish_granters_gift/on_apply() - to_chat(owner, "Death is not your end! The Wish Granter's energy suffuses you, and you begin to rise...") + to_chat(owner, span_notice("Death is not your end! The Wish Granter's energy suffuses you, and you begin to rise...")) return ..() /datum/status_effect/wish_granters_gift/on_remove() owner.revive(full_heal = TRUE, admin_revive = TRUE) - owner.visible_message("[owner] appears to wake from the dead, having healed all wounds!", "You have regenerated.") + owner.visible_message(span_warning("[owner] appears to wake from the dead, having healed all wounds!"), span_notice("You have regenerated.")) owner.update_mobility() /obj/screen/alert/status_effect/wish_granters_gift @@ -251,7 +251,7 @@ if(isliving(B.current)) var/mob/living/M = B.current SEND_SOUND(M, sound('sound/hallucinations/veryfar_noise.ogg')) - to_chat(M, "The Cult's Master, [owner], has fallen in \the [A]!") + to_chat(M, span_cultlarge("The Cult's Master, [owner], has fallen in \the [A]!")) /datum/status_effect/cult_master/tick() if(owner.stat != DEAD && !alive) @@ -312,7 +312,7 @@ /datum/status_effect/sword_spin/on_apply() - owner.visible_message("[owner] begins swinging the sword with inhuman strength!") + owner.visible_message(span_danger("[owner] begins swinging the sword with inhuman strength!")) var/oldcolor = owner.color owner.color = "#ff0000" owner.add_stun_absorption("bloody bastard sword", duration, 2, "doesn't even flinch as the sword's power courses through them!", "You shrug off the stun!", " glowing with a blazing red aura!") @@ -331,7 +331,7 @@ slashy.attack(M, owner) /datum/status_effect/sword_spin/on_remove() - owner.visible_message("[owner]'s inhuman strength dissipates and the sword's runes grow cold!") + owner.visible_message(span_warning("[owner]'s inhuman strength dissipates and the sword's runes grow cold!")) //Used by changelings to rapidly heal @@ -348,7 +348,7 @@ var/mob/living/carbon/human/H = owner prot = H.get_thermal_protection() - + if(owner.on_fire && (prot < FIRE_IMMUNITY_MAX_TEMP_PROTECT)) linked_alert.icon_state = "fleshmend_fire" return @@ -357,6 +357,10 @@ owner.adjustBruteLoss(-10, FALSE) owner.adjustFireLoss(-5, FALSE) owner.adjustOxyLoss(-10) + if(!iscarbon(owner)) + return + var/mob/living/carbon/C = owner + QDEL_LIST(C.all_scars) /obj/screen/alert/status_effect/fleshmend name = "Fleshmend" @@ -383,7 +387,7 @@ status_type = STATUS_EFFECT_UNIQUE duration = -1 tick_interval = 25 - examine_text = "They seem to have an aura of healing and helpfulness about them." + examine_text = span_notice("They seem to have an aura of healing and helpfulness about them.") alert_type = null var/hand var/deathTick = 0 @@ -433,11 +437,11 @@ var/obj/item/bodypart/L = itemUser.newBodyPart(BODY_ZONE_L_ARM, FALSE, FALSE) L.attach_limb(itemUser) itemUser.put_in_hand(newRod, hand, forced = TRUE) - to_chat(itemUser, "Your arm suddenly grows back with the Rod of Asclepius still attached!") + to_chat(itemUser, span_notice("Your arm suddenly grows back with the Rod of Asclepius still attached!")) else //Otherwise get rid of whatever else is in their hand and return the rod to said hand itemUser.put_in_hand(newRod, hand, forced = TRUE) - to_chat(itemUser, "The Rod of Asclepius suddenly grows back out of your arm!") + to_chat(itemUser, span_notice("The Rod of Asclepius suddenly grows back out of your arm!")) //Because a servant of medicines stops at nothing to help others, lets keep them on their toes and give them an additional boost. if(itemUser.health < itemUser.maxHealth) new /obj/effect/temp_visual/heal(get_turf(itemUser), "#375637") @@ -506,10 +510,10 @@ /datum/status_effect/antimagic id = "antimagic" duration = 10 SECONDS - examine_text = "They seem to be covered in a dull, grey aura." + examine_text = span_notice("They seem to be covered in a dull, grey aura.") /datum/status_effect/antimagic/on_apply() - owner.visible_message("[owner] is coated with a dull aura!") + owner.visible_message(span_notice("[owner] is coated with a dull aura!")) ADD_TRAIT(owner, TRAIT_ANTIMAGIC, MAGIC_TRAIT) //glowing wings overlay playsound(owner, 'sound/weapons/fwoosh.ogg', 75, 0) @@ -517,13 +521,13 @@ /datum/status_effect/antimagic/on_remove() REMOVE_TRAIT(owner, TRAIT_ANTIMAGIC, MAGIC_TRAIT) - owner.visible_message("[owner]'s dull aura fades away...") + owner.visible_message(span_warning("[owner]'s dull aura fades away...")) /datum/status_effect/creep //allows darkspawn to move through lights without lightburn damage //yogs start: darkspawn id = "creep" duration = -1 alert_type = /obj/screen/alert/status_effect/creep - examine_text = "SUBJECTPRONOUN is surrounded by velvety, gently-waving black shadows!" + examine_text = span_warning("SUBJECTPRONOUN is surrounded by velvety, gently-waving black shadows!") var/datum/antagonist/darkspawn/darkspawn /datum/status_effect/creep/on_creation(mob/living/owner, datum/antagonist/darkspawn) @@ -537,7 +541,7 @@ qdel(src) return if(!darkspawn.has_psi(1)) //ticks 5 times per second, 5 Psi lost per second - to_chat(owner, "Without the Psi to maintain it, your protective aura vanishes!") + to_chat(owner, span_warning("Without the Psi to maintain it, your protective aura vanishes!")) qdel(src) return darkspawn.use_psi(1) @@ -553,7 +557,7 @@ id = "time_dilation" duration = 600 alert_type = /obj/screen/alert/status_effect/time_dilation - examine_text = "SUBJECTPRONOUN is moving jerkily and unpredictably!" + examine_text = span_warning("SUBJECTPRONOUN is moving jerkily and unpredictably!") /datum/status_effect/time_dilation/on_apply() owner.next_move_modifier *= 0.5 diff --git a/code/datums/status_effects/debuffs.dm b/code/datums/status_effects/debuffs.dm index 1d68f53f48ec..9d6a2274d1b8 100644 --- a/code/datums/status_effects/debuffs.dm +++ b/code/datums/status_effects/debuffs.dm @@ -146,11 +146,11 @@ /obj/screen/alert/status_effect/strandling/Click(location, control, params) . = ..() - to_chat(mob_viewer, "You attempt to remove the durathread strand from around your neck.") + to_chat(mob_viewer, span_notice("You attempt to remove the durathread strand from around your neck.")) if(do_after(mob_viewer, 35, null, mob_viewer)) if(isliving(mob_viewer)) var/mob/living/L = mob_viewer - to_chat(mob_viewer, "You succesfuly remove the durathread strand.") + to_chat(mob_viewer, span_notice("You succesfuly remove the durathread strand.")) L.remove_status_effect(STATUS_EFFECT_CHOKINGSTRAND) @@ -242,9 +242,9 @@ owner.apply_damage(leg_damage_on_toggle * 0.5, BURN, BODY_ZONE_R_LEG) if(owner.m_intent != MOVE_INTENT_WALK) if(!iscultist(owner)) - to_chat(owner, "Your leg[number_legs > 1 ? "s shiver":" shivers"] with pain!") + to_chat(owner, span_warning("Your leg[number_legs > 1 ? "s shiver":" shivers"] with pain!")) else //Cultists take extra burn damage - to_chat(owner, "Your leg[number_legs > 1 ? "s burn":" burns"] with pain!") + to_chat(owner, span_warning("Your leg[number_legs > 1 ? "s burn":" burns"] with pain!")) owner.toggle_move_intent() return TRUE return FALSE @@ -601,15 +601,15 @@ var/health_difference = old_health - owner.health if(!health_difference) return - owner.visible_message("The light in [owner]'s eyes dims as [owner.p_theyre()] harmed!", \ - "The dazzling lights dim as you're harmed!") + owner.visible_message(span_warning("The light in [owner]'s eyes dims as [owner.p_theyre()] harmed!"), \ + span_boldannounce("The dazzling lights dim as you're harmed!")) health_difference *= 2 //so 10 health difference translates to 20 deciseconds of stun reduction duration -= health_difference old_health = owner.health /datum/status_effect/kindle/on_remove() - owner.visible_message("The light in [owner]'s eyes fades!", \ - "You snap out of your daze!") + owner.visible_message(span_warning("The light in [owner]'s eyes fades!"), \ + span_boldannounce("You snap out of your daze!")) /obj/screen/alert/status_effect/kindle name = "Dazzling Lights" @@ -623,17 +623,17 @@ id = "ichorial_stain" status_type = STATUS_EFFECT_UNIQUE duration = 600 - examine_text = "SUBJECTPRONOUN is drenched in thick, blue ichor!" + examine_text = span_warning("SUBJECTPRONOUN is drenched in thick, blue ichor!") alert_type = /obj/screen/alert/status_effect/ichorial_stain /datum/status_effect/ichorial_stain/on_apply() - owner.visible_message("[owner] gets back up, [owner.p_their()] body dripping blue ichor!", \ - "Thick blue ichor covers your body; you can't be revived like this again until it dries!") + owner.visible_message(span_danger("[owner] gets back up, [owner.p_their()] body dripping blue ichor!"), \ + span_userdanger("Thick blue ichor covers your body; you can't be revived like this again until it dries!")) return TRUE /datum/status_effect/ichorial_stain/on_remove() - owner.visible_message("The blue ichor on [owner]'s body dries out!", \ - "The ichor on your body is dry - you can now be revived by vitality matrices again!") + owner.visible_message(span_danger("The blue ichor on [owner]'s body dries out!"), \ + span_boldnotice("The ichor on your body is dry - you can now be revived by vitality matrices again!")) /obj/screen/alert/status_effect/ichorial_stain name = "Ichorial Stain" @@ -651,7 +651,7 @@ ADD_TRAIT(owner, TRAIT_PACIFISM, "gonbolaPacify") ADD_TRAIT(owner, TRAIT_MUTE, "gonbolaMute") ADD_TRAIT(owner, TRAIT_JOLLY, "gonbolaJolly") - to_chat(owner, "You suddenly feel at peace and feel no need to make any sudden or rash actions...") + to_chat(owner, span_notice("You suddenly feel at peace and feel no need to make any sudden or rash actions...")) return ..() /datum/status_effect/gonbolaPacify/on_remove() @@ -664,7 +664,7 @@ status_type = STATUS_EFFECT_UNIQUE duration = 300 tick_interval = 10 - examine_text = "SUBJECTPRONOUN seems slow and unfocused." + examine_text = span_warning("SUBJECTPRONOUN seems slow and unfocused.") var/stun = TRUE alert_type = /obj/screen/alert/status_effect/trance @@ -685,8 +685,8 @@ ADD_TRAIT(owner, TRAIT_MUTE, "trance") if(!owner.has_quirk(/datum/quirk/monochromatic)) owner.add_client_colour(/datum/client_colour/monochrome) - owner.visible_message("[stun ? "[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point." : ""]", \ - "[pick("You feel your thoughts slow down...", "You suddenly feel extremely dizzy...", "You feel like you're in the middle of a dream...","You feel incredibly relaxed...")]") + owner.visible_message("[stun ? span_warning("[owner] stands still as [owner.p_their()] eyes seem to focus on a distant point.") : ""]", \ + span_warning("[pick("You feel your thoughts slow down...", "You suddenly feel extremely dizzy...", "You feel like you're in the middle of a dream...","You feel incredibly relaxed...")]")) return TRUE /datum/status_effect/trance/on_creation(mob/living/new_owner, _duration, _stun = TRUE) @@ -700,7 +700,7 @@ owner.dizziness = 0 if(!owner.has_quirk(/datum/quirk/monochromatic)) owner.remove_client_colour(/datum/client_colour/monochrome) - to_chat(owner, "You snap out of your trance!") + to_chat(owner, span_warning("You snap out of your trance!")) /datum/status_effect/trance/proc/hypnotize(datum/source, list/hearing_args) if(!owner.can_hear()) @@ -723,14 +723,14 @@ switch(rand(1,5)) if(1) if((owner.mobility_flags & MOBILITY_MOVE) && isturf(owner.loc)) - to_chat(owner, "Your leg spasms!") + to_chat(owner, span_warning("Your leg spasms!")) step(owner, pick(GLOB.cardinals)) if(2) if(owner.incapacitated()) return var/obj/item/I = owner.get_active_held_item() if(I) - to_chat(owner, "Your fingers spasm!") + to_chat(owner, span_warning("Your fingers spasm!")) owner.log_message("used [I] due to a Muscle Spasm", LOG_ATTACK) I.attack_self(owner) if(3) @@ -746,14 +746,14 @@ if(isliving(M)) targets += M if(LAZYLEN(targets)) - to_chat(owner, "Your arm spasms!") + to_chat(owner, span_warning("Your arm spasms!")) owner.log_message(" attacked someone due to a Muscle Spasm", LOG_ATTACK) //the following attack will log itself owner.ClickOn(pick(targets)) owner.a_intent = prev_intent if(4) var/prev_intent = owner.a_intent owner.a_intent = INTENT_HARM - to_chat(owner, "Your arm spasms!") + to_chat(owner, span_warning("Your arm spasms!")) owner.log_message("attacked [owner.p_them()]self to a Muscle Spasm", LOG_ATTACK) owner.ClickOn(owner) owner.a_intent = prev_intent @@ -765,7 +765,7 @@ for(var/turf/T in oview(owner, 3)) targets += T if(LAZYLEN(targets) && I) - to_chat(owner, "Your arm spasms!") + to_chat(owner, span_warning("Your arm spasms!")) owner.log_message("threw [I] due to a Muscle Spasm", LOG_ATTACK) owner.throw_item(pick(targets)) @@ -778,7 +778,7 @@ /datum/status_effect/dna_melt/on_creation(mob/living/new_owner, set_duration, updating_canmove) . = ..() - to_chat(new_owner, "My body can't handle the mutations! I need to get my mutations removed fast!") + to_chat(new_owner, span_boldwarning("My body can't handle the mutations! I need to get my mutations removed fast!")) /datum/status_effect/dna_melt/on_remove() if(!ishuman(owner)) @@ -821,7 +821,7 @@ status_type = STATUS_EFFECT_UNIQUE tick_interval = 5 duration = 300 - examine_text = "SUBJECTPRONOUN is in a deep, deathlike sleep, with no signs of awareness to anything around them." + examine_text = span_deadsay("SUBJECTPRONOUN is in a deep, deathlike sleep, with no signs of awareness to anything around them.") alert_type = /obj/screen/alert/status_effect/broken_will var/old_health @@ -832,8 +832,8 @@ var/health_difference = old_health - owner.health if(!health_difference) return - owner.visible_message("[owner] jerks in their sleep as they're harmed!") - to_chat(owner, "Something hits you, pulling you towards wakefulness!") + owner.visible_message(span_warning("[owner] jerks in their sleep as they're harmed!")) + to_chat(owner, span_boldannounce("Something hits you, pulling you towards wakefulness!")) health_difference *= 10 //1 point of damage = 1 second = 10 deciseconds duration -= health_difference old_health = owner.health @@ -885,10 +885,11 @@ effect_sprite = "emark1" /datum/status_effect/eldritch/flesh/on_effect() - if(ishuman(owner)) var/mob/living/carbon/human/H = owner - H.bleed_rate += 10 + var/obj/item/bodypart/bodypart = pick(H.bodyparts) + var/datum/wound/slash/severe/crit_wound = new + crit_wound.apply_wound(bodypart) return ..() /datum/status_effect/eldritch/ash @@ -935,7 +936,7 @@ /datum/status_effect/corrosion_curse/on_creation(mob/living/new_owner, ...) . = ..() - to_chat(owner, "Your feel your body starting to break apart...") + to_chat(owner, span_danger("Your feel your body starting to break apart...")) /datum/status_effect/corrosion_curse/tick() . = ..() @@ -974,7 +975,7 @@ /datum/status_effect/amok/on_apply(mob/living/afflicted) . = ..() - to_chat(owner, "Your feel filled with a rage that is not your own!") + to_chat(owner, span_boldwarning("Your feel filled with a rage that is not your own!")) /datum/status_effect/amok/tick() . = ..() diff --git a/code/datums/status_effects/gas.dm b/code/datums/status_effects/gas.dm index 608dbb2d7a11..80b7a676ec0a 100644 --- a/code/datums/status_effects/gas.dm +++ b/code/datums/status_effects/gas.dm @@ -14,7 +14,7 @@ /datum/status_effect/freon/on_apply() RegisterSignal(owner, COMSIG_LIVING_RESIST, .proc/owner_resist) if(!owner.stat) - to_chat(owner, "You become frozen in a cube!") + to_chat(owner, span_userdanger("You become frozen in a cube!")) cube = icon('icons/effects/freeze.dmi', "ice_cube") owner.add_overlay(cube) owner.update_mobility() diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index d6288b070d3d..94ba2bbfaac2 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -97,7 +97,7 @@ rewarded = caster /datum/status_effect/bounty/on_apply() - to_chat(owner, "You hear something behind you talking... You have been marked for death by [rewarded]. If you die, they will be rewarded.") + to_chat(owner, "[span_boldnotice("You hear something behind you talking...")] [span_notice("You have been marked for death by [rewarded]. If you die, they will be rewarded.")]") playsound(owner, 'sound/weapons/shotgunpump.ogg', 75, 0) return ..() @@ -108,9 +108,9 @@ /datum/status_effect/bounty/proc/rewards() if(rewarded && rewarded.mind && rewarded.stat != DEAD) - to_chat(owner, "You hear something behind you talking... Bounty claimed.") + to_chat(owner, "[span_boldnotice("You hear something behind you talking...")] [span_notice("Bounty claimed.")]") playsound(owner, 'sound/weapons/shotgunshot.ogg', 75, 0) - to_chat(rewarded, "You feel a surge of mana flow into you!") + to_chat(rewarded, span_greentext("You feel a surge of mana flow into you!")) for(var/obj/effect/proc_holder/spell/spell in rewarded.mind.spell_list) spell.charge_counter = spell.charge_max spell.recharging = FALSE @@ -162,9 +162,9 @@ /datum/status_effect/tagalong/on_remove() if(owner.loc == shadowing) owner.forceMove(cached_location ? cached_location : get_turf(owner)) - shadowing.visible_message("[owner] breaks away from [shadowing]'s shadow!", \ - "You feel a sense of freezing cold pass through you!") - to_chat(owner, "You break away from [shadowing].") + shadowing.visible_message(span_warning("[owner] breaks away from [shadowing]'s shadow!"), \ + span_userdanger("You feel a sense of freezing cold pass through you!")) + to_chat(owner, span_velvet("You break away from [shadowing].")) playsound(owner, 'yogstation/sound/magic/devour_will_form.ogg', 50, TRUE) owner.setDir(SOUTH) @@ -176,15 +176,15 @@ cached_location = get_turf(shadowing) if(cached_location.get_lumcount() < DARKSPAWN_DIM_LIGHT) owner.forceMove(cached_location) - shadowing.visible_message("[owner] suddenly appears from the dark!") - to_chat(owner, "You are forced out of [shadowing]'s shadow!") + shadowing.visible_message(span_warning("[owner] suddenly appears from the dark!")) + to_chat(owner, span_warning("You are forced out of [shadowing]'s shadow!")) owner.Knockdown(30) qdel(src) var/obj/item/I = owner.get_active_held_item() if(I) - to_chat(owner, "Equipping an item forces you out!") + to_chat(owner, span_userdanger("Equipping an item forces you out!")) if(istype(I, /obj/item/dark_bead)) - to_chat(owner, "[I] crackles with feedback, briefly disorienting you!") + to_chat(owner, span_userdanger("[I] crackles with feedback, briefly disorienting you!")) owner.Stun(5) //short delay so they can't click as soon as they're out qdel(src) diff --git a/code/datums/status_effects/status_effect.dm b/code/datums/status_effects/status_effect.dm index d6377c115e75..a23cf4390fdd 100644 --- a/code/datums/status_effects/status_effect.dm +++ b/code/datums/status_effects/status_effect.dm @@ -70,6 +70,10 @@ return duration = world.time + original_duration +//do_after modifier! +/datum/status_effect/proc/interact_speed_modifier() + return 1 + //clickdelay/nextmove modifiers! /datum/status_effect/proc/nextmove_modifier() return 1 diff --git a/code/datums/status_effects/wound_effects.dm b/code/datums/status_effects/wound_effects.dm new file mode 100644 index 000000000000..b3751b29310a --- /dev/null +++ b/code/datums/status_effects/wound_effects.dm @@ -0,0 +1,196 @@ + +// The shattered remnants of your broken limbs fill you with determination! +/obj/screen/alert/status_effect/determined + name = "Determined" + desc = "The serious wounds you've sustained have put your body into fight-or-flight mode! Now's the time to look for an exit!" + icon_state = "regenerative_core" + +/datum/status_effect/determined + id = "determined" + alert_type = /obj/screen/alert/status_effect/determined + +/datum/status_effect/determined/on_apply() + . = ..() + owner.visible_message(span_danger("[owner]'s body tenses up noticeably, gritting against [owner.p_their()] pain!"), span_notice("Your senses sharpen as your body tenses up from the wounds you've sustained!"), \ + vision_distance=COMBAT_MESSAGE_RANGE) + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.bleed_mod *= WOUND_DETERMINATION_BLEED_MOD + +/datum/status_effect/determined/on_remove() + owner.visible_message(span_danger("[owner]'s body slackens noticeably!"), span_warning("Your adrenaline rush dies off, and the pain from your wounds come aching back in..."), vision_distance=COMBAT_MESSAGE_RANGE) + if(ishuman(owner)) + var/mob/living/carbon/human/human_owner = owner + human_owner.physiology.bleed_mod /= WOUND_DETERMINATION_BLEED_MOD + return ..() + +/datum/status_effect/limp + id = "limp" + status_type = STATUS_EFFECT_REPLACE + tick_interval = 10 + alert_type = /obj/screen/alert/status_effect/limp + var/msg_stage = 0//so you dont get the most intense messages immediately + /// The left leg of the limping person + var/obj/item/bodypart/l_leg/left + /// The right leg of the limping person + var/obj/item/bodypart/r_leg/right + /// Which leg we're limping with next + var/obj/item/bodypart/next_leg + /// How many deciseconds we limp for on the left leg + var/slowdown_left = 0 + /// How many deciseconds we limp for on the right leg + var/slowdown_right = 0 + +/datum/status_effect/limp/on_apply() + if(!iscarbon(owner)) + return FALSE + var/mob/living/carbon/C = owner + left = C.get_bodypart(BODY_ZONE_L_LEG) + right = C.get_bodypart(BODY_ZONE_R_LEG) + update_limp() + RegisterSignal(C, COMSIG_MOVABLE_MOVED, .proc/check_step) + RegisterSignal(C, list(COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB), .proc/update_limp) + return TRUE + +/datum/status_effect/limp/on_remove() + UnregisterSignal(owner, list(COMSIG_MOVABLE_MOVED, COMSIG_CARBON_GAIN_WOUND, COMSIG_CARBON_LOSE_WOUND, COMSIG_CARBON_ATTACH_LIMB, COMSIG_CARBON_REMOVE_LIMB)) + +/obj/screen/alert/status_effect/limp + name = "Limping" + desc = "One or more of your legs has been wounded, slowing down steps with that leg! Get it fixed, or at least in a sling of gauze!" + +/datum/status_effect/limp/proc/check_step(mob/whocares, OldLoc, Dir, forced) + if(!owner.client || !(owner.mobility_flags & MOBILITY_STAND) || !owner.has_gravity() || (owner.movement_type & FLYING) || forced || owner.buckled) + return + // less limping while we have determination still + var/determined_mod = owner.has_status_effect(STATUS_EFFECT_DETERMINED) ? 0.25 : 1 + + if(next_leg == left) + owner.client.move_delay += slowdown_left * determined_mod + next_leg = right + else + owner.client.move_delay += slowdown_right * determined_mod + next_leg = left + +/datum/status_effect/limp/proc/update_limp() + var/mob/living/carbon/C = owner + left = C.get_bodypart(BODY_ZONE_L_LEG) + right = C.get_bodypart(BODY_ZONE_R_LEG) + + if(!left && !right) + C.remove_status_effect(src) + return + + slowdown_left = 0 + slowdown_right = 0 + + if(left) + for(var/thing in left.wounds) + var/datum/wound/W = thing + slowdown_left += W.limp_slowdown + + if(right) + for(var/thing in right.wounds) + var/datum/wound/W = thing + slowdown_right += W.limp_slowdown + + // this handles losing your leg with the limp and the other one being in good shape as well + if(!slowdown_left && !slowdown_right) + C.remove_status_effect(src) + return + + +///////////////////////// +//////// WOUNDS ///////// +///////////////////////// + +// wound alert +/obj/screen/alert/status_effect/wound + name = "Wounded" + desc = "Your body has sustained serious damage, click here to inspect yourself." + +/obj/screen/alert/status_effect/wound/Click() + var/mob/living/carbon/human/H = usr + H.check_self_for_injuries() + +// wound status effect base +/datum/status_effect/wound + id = "wound" + status_type = STATUS_EFFECT_MULTIPLE + var/obj/item/bodypart/linked_limb + var/datum/wound/linked_wound + alert_type = NONE + +/datum/status_effect/wound/on_creation(mob/living/new_owner, incoming_wound) + . = ..() + linked_wound = incoming_wound + linked_limb = linked_wound.limb + +/datum/status_effect/wound/on_remove() + linked_wound = null + linked_limb = null + UnregisterSignal(owner, COMSIG_CARBON_LOSE_WOUND) + +/datum/status_effect/wound/on_apply() + if(!iscarbon(owner)) + return FALSE + RegisterSignal(owner, COMSIG_CARBON_LOSE_WOUND, .proc/check_remove) + return TRUE + +/// check if the wound getting removed is the wound we're tied to +/datum/status_effect/wound/proc/check_remove(mob/living/L, datum/wound/W) + if(W == linked_wound) + qdel(src) + + +// bones +/datum/status_effect/wound/blunt + +/datum/status_effect/wound/blunt/interact_speed_modifier() + var/mob/living/carbon/C = owner + + if(C.get_active_hand() == linked_limb) + to_chat(C, span_warning("The [lowertext(linked_wound)] in your [linked_limb.name] slows your progress!")) + return linked_wound.interaction_efficiency_penalty + + return 1 + +/datum/status_effect/wound/blunt/nextmove_modifier() + var/mob/living/carbon/C = owner + + if(C.get_active_hand() == linked_limb) + return linked_wound.interaction_efficiency_penalty + + return 1 + +// blunt +/datum/status_effect/wound/blunt/moderate + id = "disjoint" +/datum/status_effect/wound/blunt/severe + id = "hairline" +/datum/status_effect/wound/blunt/critical + id = "compound" + +// slash +/datum/status_effect/wound/slash/moderate + id = "abrasion" +/datum/status_effect/wound/slash/severe + id = "laceration" +/datum/status_effect/wound/slash/critical + id = "avulsion" + +// pierce +/datum/status_effect/wound/pierce/moderate + id = "breakage" +/datum/status_effect/wound/pierce/severe + id = "puncture" +/datum/status_effect/wound/pierce/critical + id = "rupture" + +// burns +/datum/status_effect/wound/burn/moderate + id = "seconddeg" +/datum/status_effect/wound/burn/severe + id = "thirddeg" +/datum/status_effect/wound/burn/critical + id = "fourthdeg" diff --git a/code/datums/traits/_quirk.dm b/code/datums/traits/_quirk.dm index 1fb16fd53c2b..9ba132d376ae 100644 --- a/code/datums/traits/_quirk.dm +++ b/code/datums/traits/_quirk.dm @@ -124,8 +124,8 @@ Use this as a guideline ///You'll need to use "HAS_TRAIT_FROM(src, X, sources)" checks around the code to check this; for instance, the Ageusia trait is checked in taste code ///If you need help finding where to put it, the declaration finder on GitHub is the best way to locate it - gain_text = "Things far away from you start looking blurry." - lose_text = "You start seeing faraway things normally again." + gain_text = span_danger("Things far away from you start looking blurry.") + lose_text = span_notice("You start seeing faraway things normally again.") medical_record_text = "Subject has permanent nearsightedness." ///These three are self-explanatory diff --git a/code/datums/traits/good.dm b/code/datums/traits/good.dm index bb622e000279..eb3997942c21 100644 --- a/code/datums/traits/good.dm +++ b/code/datums/traits/good.dm @@ -6,8 +6,8 @@ desc = "You can't taste anything! Toxic food will still poison you." value = 1 mob_trait = TRAIT_AGEUSIA - gain_text = "You can't taste anything!" - lose_text = "You can taste again!" + gain_text = span_notice("You can't taste anything!") + lose_text = span_notice("You can taste again!") medical_record_text = "Patient suffers from ageusia and is incapable of tasting food or reagents." /datum/quirk/alcohol_tolerance @@ -15,8 +15,8 @@ desc = "You become drunk more slowly and suffer fewer drawbacks from alcohol." value = 1 mob_trait = TRAIT_ALCOHOL_TOLERANCE - gain_text = "You feel like you could drink a whole keg!" - lose_text = "You don't feel as resistant to alcohol anymore. Somehow." + gain_text = span_notice("You feel like you could drink a whole keg!") + lose_text = span_danger("You don't feel as resistant to alcohol anymore. Somehow.") medical_record_text = "Patient demonstrates a high tolerance for alcohol." /datum/quirk/apathetic @@ -42,8 +42,8 @@ desc = "Nothing like a good drink to make you feel on top of the world. Whenever you're drunk, you slowly recover from injuries." value = 2 mob_trait = TRAIT_DRUNK_HEALING - gain_text = "You feel like a drink would do you good." - lose_text = "You no longer feel like drinking would ease your pain." + gain_text = span_notice("You feel like a drink would do you good.") + lose_text = span_danger("You no longer feel like drinking would ease your pain.") medical_record_text = "Patient has unusually efficient liver metabolism and can slowly regenerate wounds by drinking alcoholic beverages." /datum/quirk/empath @@ -51,8 +51,8 @@ desc = "Whether it's a sixth sense or careful study of body language, it only takes you a quick glance at someone to understand how they feel." value = 2 mob_trait = TRAIT_EMPATH - gain_text = "You feel in tune with those around you." - lose_text = "You feel isolated from others." + gain_text = span_notice("You feel in tune with those around you.") + lose_text = span_danger("You feel isolated from others.") medical_record_text = "Patient is highly perceptive of and sensitive to social cues, or may possibly have ESP. Further testing needed." /datum/quirk/freerunning @@ -60,8 +60,8 @@ desc = "You're great at quick moves! You can climb tables more quickly." value = 2 mob_trait = TRAIT_FREERUNNING - gain_text = "You feel lithe on your feet!" - lose_text = "You feel clumsy again." + gain_text = span_notice("You feel lithe on your feet!") + lose_text = span_danger("You feel clumsy again.") medical_record_text = "Patient scored highly on cardio tests." /datum/quirk/friendly @@ -69,8 +69,8 @@ desc = "You give the best hugs, especially when you're in the right mood." value = 1 mob_trait = TRAIT_FRIENDLY - gain_text = "You want to hug someone." - lose_text = "You no longer feel compelled to hug others." + gain_text = span_notice("You want to hug someone.") + lose_text = span_danger("You no longer feel compelled to hug others.") mood_quirk = TRUE medical_record_text = "Patient demonstrates low-inhibitions for physical contact and well-developed arms. Requesting another doctor take over this case." @@ -87,8 +87,8 @@ desc = "You walk with a gentle step; stepping on sharp objects is quieter, less painful and you won't leave footprints behind you." value = 1 mob_trait = TRAIT_LIGHT_STEP - gain_text = "You walk with a little more litheness." - lose_text = "You start tromping around like a barbarian." + gain_text = span_notice("You walk with a little more litheness.") + lose_text = span_danger("You start tromping around like a barbarian.") medical_record_text = "Patient's dexterity belies a strong capacity for stealth." /datum/quirk/musician @@ -96,8 +96,8 @@ desc = "You can tune handheld musical instruments to play melodies that clear certain negative effects and soothe the soul." value = 1 mob_trait = TRAIT_MUSICIAN - gain_text = "You know everything about musical instruments." - lose_text = "You forget how musical instruments work." + gain_text = span_notice("You know everything about musical instruments.") + lose_text = span_danger("You forget how musical instruments work.") medical_record_text = "Patient brain scans show a highly-developed auditory pathway." /datum/quirk/musician/on_spawn() @@ -114,8 +114,8 @@ desc = "You can see slightly more clearly in full darkness than most people." value = 1 mob_trait = TRAIT_NIGHT_VISION - gain_text = "The shadows seem a little less dark." - lose_text = "Everything seems a little darker." + gain_text = span_notice("The shadows seem a little less dark.") + lose_text = span_danger("Everything seems a little darker.") medical_record_text = "Patient's eyes show above-average acclimation to darkness." /datum/quirk/night_vision/on_spawn() @@ -130,8 +130,8 @@ desc = "You know how to handle a camera, shortening the delay between each shot." value = 1 mob_trait = TRAIT_PHOTOGRAPHER - gain_text = "You know everything about photography." - lose_text = "You forget how photo cameras work." + gain_text = span_notice("You know everything about photography.") + lose_text = span_danger("You forget how photo cameras work.") medical_record_text = "Patient mentions photography as a stress-relieving hobby." /datum/quirk/photographer/on_spawn() @@ -160,8 +160,8 @@ desc = "You hold a spiritual belief, whether in God, nature or the arcane rules of the universe. You gain comfort from the presence of holy people, and believe that your prayers are more special than others." value = 1 mob_trait = TRAIT_SPIRITUAL - gain_text = "You have faith in a higher power." - lose_text = "You lose faith!" + gain_text = span_notice("You have faith in a higher power.") + lose_text = span_danger("You lose faith!") medical_record_text = "Patient reports a belief in a higher power." /datum/quirk/spiritual/on_spawn() @@ -174,8 +174,8 @@ desc = "You're an experienced artist. While drawing graffiti, you can get twice as many uses out of drawing supplies." value = 1 mob_trait = TRAIT_TAGGER - gain_text = "You know how to tag walls efficiently." - lose_text = "You forget how to tag walls properly." + gain_text = span_notice("You know how to tag walls efficiently.") + lose_text = span_danger("You forget how to tag walls properly.") medical_record_text = "Patient was recently seen for possible paint huffing incident." /datum/quirk/tagger/on_spawn() @@ -190,6 +190,6 @@ desc = "Nothing gets between you and your food. You eat faster and can binge on junk food! Being fat suits you just fine." value = 1 mob_trait = TRAIT_VORACIOUS - gain_text = "You feel HONGRY." - lose_text = "You no longer feel HONGRY." + gain_text = span_notice("You feel HONGRY.") + lose_text = span_danger("You no longer feel HONGRY.") medical_record_text = "Patient demonstrates a disturbing capacity for eating." diff --git a/code/datums/traits/negative.dm b/code/datums/traits/negative.dm index 7344e3013950..b1cb74261eb3 100644 --- a/code/datums/traits/negative.dm +++ b/code/datums/traits/negative.dm @@ -5,8 +5,8 @@ desc = "Thanks to your poor posture, backpacks and other bags never sit right on your back. More evenly weighted objects are fine, though." value = -2 mood_quirk = TRUE - gain_text = "Your back REALLY hurts!" - lose_text = "Your back feels better." + gain_text = span_danger("Your back REALLY hurts!") + lose_text = span_notice("Your back feels better.") medical_record_text = "Patient scans indicate severe and chronic back pain." /datum/quirk/badback/on_process() @@ -20,8 +20,8 @@ name = "Blood Deficiency" desc = "Your body can't produce enough blood to sustain itself." value = -2 - gain_text = "You feel your vigor slowly fading away." - lose_text = "You feel vigorous again." + gain_text = span_danger("You feel your vigor slowly fading away.") + lose_text = span_notice("You feel vigorous again.") medical_record_text = "Patient requires regular treatment for blood loss due to low production of blood." /datum/quirk/blooddeficiency/on_process() @@ -36,8 +36,8 @@ name = "Blind" desc = "You are completely blind, nothing can counteract this." value = -4 - gain_text = "You can't see anything." - lose_text = "You miraculously gain back your vision." + gain_text = span_danger("You can't see anything.") + lose_text = span_notice("You miraculously gain back your vision.") medical_record_text = "Patient has permanent blindness." /datum/quirk/blindness/add() @@ -54,8 +54,8 @@ name = "Brain Tumor" desc = "You have a little friend in your brain that is slowly destroying it. Better bring some mannitol!" value = -3 - gain_text = "You feel smooth." - lose_text = "You feel wrinkled again." + gain_text = span_danger("You feel smooth.") + lose_text = span_notice("You feel wrinkled again.") medical_record_text = "Patient has a tumor in their brain that is slowly driving them to brain death." var/where = "at your feet" @@ -73,15 +73,15 @@ where = H.equip_in_one_of_slots(mannitolpills, slots, FALSE) || "at your feet" /datum/quirk/brainproblems/post_add() - to_chat(quirk_holder, "There is a pill bottle of mannitol [where]. You're going to need it.") + to_chat(quirk_holder, span_boldnotice("There is a pill bottle of mannitol [where]. You're going to need it.")) /datum/quirk/deafness name = "Deaf" desc = "You are incurably deaf." value = -2 mob_trait = TRAIT_DEAF - gain_text = "You can't hear anything." - lose_text = "You're able to hear again!" + gain_text = span_danger("You can't hear anything.") + lose_text = span_notice("You're able to hear again!") medical_record_text = "Patient's cochlear nerve is incurably damaged." /datum/quirk/depression @@ -89,8 +89,8 @@ desc = "You sometimes just hate life." mob_trait = TRAIT_DEPRESSION value = -1 - gain_text = "You start feeling depressed." - lose_text = "You no longer feel depressed." //if only it were that easy! + gain_text = span_danger("You start feeling depressed.") + lose_text = span_notice("You no longer feel depressed.") //if only it were that easy! medical_record_text = "Patient has a mild mood disorder, causing them to experience episodes of depression." mood_quirk = TRUE @@ -195,7 +195,7 @@ var/mob/living/carbon/human/H = quirk_holder SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H) - to_chat(quirk_holder, "There is a precious family [heirloom.name] [where], passed down from generation to generation. Keep it safe!") + to_chat(quirk_holder, span_boldnotice("There is a precious family [heirloom.name] [where], passed down from generation to generation. Keep it safe!")) var/list/names = splittext(quirk_holder.real_name, " ") var/family_name = names[names.len] @@ -221,16 +221,16 @@ desc = "You sleep like a rock! Whenever you're put to sleep or knocked unconscious, you take a little bit longer to wake up and cant see anything." value = -2 mob_trait = TRAIT_HEAVY_SLEEPER - gain_text = "You feel sleepy." - lose_text = "You feel awake again." + gain_text = span_danger("You feel sleepy.") + lose_text = span_notice("You feel awake again.") medical_record_text = "Patient has abnormal sleep study results and is difficult to wake up." /datum/quirk/hypersensitive name = "Hypersensitive" desc = "For better or worse, everything seems to affect your mood more than it should." value = -1 - gain_text = "You seem to make a big deal out of everything." - lose_text = "You don't seem to make a big deal out of everything anymore." + gain_text = span_danger("You seem to make a big deal out of everything.") + lose_text = span_notice("You don't seem to make a big deal out of everything anymore.") mood_quirk = TRUE //yogs medical_record_text = "Patient demonstrates a high level of emotional volatility." @@ -250,16 +250,16 @@ desc = "You just can't handle your drinks and get drunk very quickly." value = -1 mob_trait = TRAIT_LIGHT_DRINKER - gain_text = "Just the thought of drinking alcohol makes your head spin." - lose_text = "You're no longer severely affected by alcohol." + gain_text = span_notice("Just the thought of drinking alcohol makes your head spin.") + lose_text = span_danger("You're no longer severely affected by alcohol.") medical_record_text = "Patient demonstrates a low tolerance for alcohol. (Wimp)" /datum/quirk/nearsighted //t. errorage name = "Nearsighted" desc = "You are nearsighted without prescription glasses, but spawn with a pair." value = -1 - gain_text = "Things far away from you start looking blurry." - lose_text = "You start seeing faraway things normally again." + gain_text = span_danger("Things far away from you start looking blurry.") + lose_text = span_notice("You start seeing faraway things normally again.") medical_record_text = "Patient requires prescription glasses in order to counteract nearsightedness." /datum/quirk/nearsighted/add() @@ -288,7 +288,7 @@ return if(lums <= 0.2) if(quirk_holder.m_intent == MOVE_INTENT_RUN) - to_chat(quirk_holder, "Easy, easy, take it slow... you're in the dark...") + to_chat(quirk_holder, span_warning("Easy, easy, take it slow... you're in the dark...")) quirk_holder.toggle_move_intent() SEND_SIGNAL(quirk_holder, COMSIG_ADD_MOOD_EVENT, "nyctophobia", /datum/mood_event/nyctophobia) else @@ -299,8 +299,8 @@ desc = "The thought of violence makes you sick. So much so, in fact, that you can't hurt anyone." value = -2 mob_trait = TRAIT_PACIFISM - gain_text = "You feel repulsed by the thought of violence!" - lose_text = "You think you can defend yourself again." + gain_text = span_danger("You feel repulsed by the thought of violence!") + lose_text = span_notice("You think you can defend yourself again.") medical_record_text = "Patient is unusually pacifistic and cannot bring themselves to cause physical harm." @@ -415,8 +415,8 @@ desc = "You suffer from a severe disorder that causes very vivid hallucinations. Mindbreaker toxin can suppress its effects, and you are immune to mindbreaker's hallucinogenic properties. This is not a license to grief." value = -2 //no mob trait because it's handled uniquely - gain_text = "..." - lose_text = "You feel in tune with the world again." + gain_text = span_userdanger("...") + lose_text = span_notice("You feel in tune with the world again.") medical_record_text = "Patient suffers from acute Reality Dissociation Syndrome and experiences vivid hallucinations." /datum/quirk/insanity/on_process() @@ -439,8 +439,8 @@ name = "Social Anxiety" desc = "Talking to people is very difficult for you, and you often stutter or even lock up." value = -1 - gain_text = "You start worrying about what you're saying." - lose_text = "You feel easier about talking again." //if only it were that easy! + gain_text = span_danger("You start worrying about what you're saying.") + lose_text = span_notice("You feel easier about talking again.") //if only it were that easy! medical_record_text = "Patient is usually anxious in social encounters and prefers to avoid them." var/dumb_thing = TRUE @@ -453,10 +453,10 @@ if(prob(2 + nearby_people)) H.stuttering = max(3, H.stuttering) else if(prob(min(3, nearby_people)) && !H.silent) - to_chat(H, "You retreat into yourself. You really don't feel up to talking.") + to_chat(H, span_danger("You retreat into yourself. You really don't feel up to talking.")) H.silent = max(10, H.silent) else if(prob(0.5) && dumb_thing) - to_chat(H, "You think of a dumb thing you said a long time ago and scream internally.") + to_chat(H, span_userdanger("You think of a dumb thing you said a long time ago and scream internally.")) dumb_thing = FALSE //only once per life if(prob(1)) new/obj/item/reagent_containers/food/snacks/spaghetti/pastatomato(get_turf(H)) //now that's what I call spaghetti code @@ -466,8 +466,8 @@ name = "Junkie" desc = "You can't get enough of hard drugs." value = -2 - gain_text = "You suddenly feel the craving for drugs." - lose_text = "You feel like you should kick your drug habit." + gain_text = span_danger("You suddenly feel the craving for drugs.") + lose_text = span_notice("You feel like you should kick your drug habit.") medical_record_text = "Patient has a history of hard drugs." var/drug_list = list(/datum/reagent/drug/crank, /datum/reagent/drug/krokodil, /datum/reagent/medicine/morphine, /datum/reagent/drug/happiness, /datum/reagent/drug/methamphetamine, /datum/reagent/drug/ketamine) //List of possible IDs var/reagent_id //ID picked from list @@ -518,7 +518,7 @@ SEND_SIGNAL(H.back, COMSIG_TRY_STORAGE_SHOW, H) /datum/quirk/junkie/proc/announce_drugs() - to_chat(quirk_holder, "There is a [drug_instance.name] of [reagent_instance.name] [where_drug]. Better hope you don't run out...") + to_chat(quirk_holder, span_boldnotice("There is a [drug_instance.name] of [reagent_instance.name] [where_drug]. Better hope you don't run out...")) /datum/quirk/junkie/on_process() var/mob/living/carbon/human/H = quirk_holder @@ -531,7 +531,7 @@ if(!in_list) H.reagents.addiction_list += reagent_instance reagent_instance.addiction_stage = 0 - to_chat(quirk_holder, "You thought you kicked it, but you suddenly feel like you need [reagent_instance.name] again...") + to_chat(quirk_holder, span_danger("You thought you kicked it, but you suddenly feel like you need [reagent_instance.name] again...")) tick_counter = 0 else ++tick_counter @@ -552,8 +552,8 @@ desc = "Sometimes you just really want a smoke. Probably not great for your lungs." value = -1 mood_quirk = TRUE - gain_text = "You could really go for a smoke right about now." - lose_text = "You feel like you should quit smoking." + gain_text = span_danger("You could really go for a smoke right about now.") + lose_text = span_notice("You feel like you should quit smoking.") medical_record_text = "Patient is a current smoker." reagent_type = /datum/reagent/drug/nicotine accessory_type = /obj/item/lighter/greyscale @@ -570,7 +570,7 @@ . = ..() /datum/quirk/junkie/smoker/announce_drugs() - to_chat(quirk_holder, "There is a [drug_instance.name] [where_drug], and a lighter [where_accessory]. Make sure you get your favorite brand when you run out.") + to_chat(quirk_holder, span_boldnotice("There is a [drug_instance.name] [where_drug], and a lighter [where_accessory]. Make sure you get your favorite brand when you run out.")) /datum/quirk/junkie/smoker/on_process() @@ -590,17 +590,17 @@ value = -2 mood_quirk = TRUE mob_trait = TRAIT_UNSTABLE - gain_text = "There's a lot on your mind right now." - lose_text = "Your mind finally feels calm." + gain_text = span_danger("There's a lot on your mind right now.") + lose_text = span_notice("Your mind finally feels calm.") medical_record_text = "Patient's mind is in a vulnerable state, and cannot recover from traumatic events." /datum/quirk/sheltered name = "Sheltered" - desc = "You never learned galactic common." - value = -3 + desc = "You never learned to speak galactic common." + value = -1 mob_trait = TRAIT_SHELTERED - gain_text = "You do not understand galactic common." - lose_text = "You start to put together what people are saying in galactic common." + gain_text = span_danger("You do not speak galactic common.") + lose_text = span_notice("You start to put together how to speak galactic common.") medical_record_text = "Patient looks perplexed when questioned in galactic common." @@ -615,8 +615,8 @@ desc = "You have had an allergic reaction to medicine in the past. Better stay away from it!" value = -1 mob_trait = TRAIT_ALLERGIC - gain_text = "You remember your allergic reaction to a common medicine." - lose_text = "You no longer are allergic to medicine." + gain_text = span_danger("You remember your allergic reaction to a common medicine.") + lose_text = span_notice("You no longer are allergic to medicine.") medical_record_text = "Patient has a severe allergic reaction to a common medicine." var/allergy_chem_list = list( /datum/reagent/medicine/inacusiate, /datum/reagent/medicine/silver_sulfadiazine, @@ -635,14 +635,14 @@ /datum/quirk/allergic/on_spawn() reagent_id = pick(allergy_chem_list) var/datum/reagent/allergy = GLOB.chemical_reagents_list[reagent_id] - to_chat(quirk_holder, "You remember you are allergic to [allergy.name].") + to_chat(quirk_holder, span_danger("You remember you are allergic to [allergy.name].")) quirk_holder.allergies += allergy /datum/quirk/allergic/on_process() var/mob/living/carbon/H = quirk_holder var/datum/reagent/allergy = GLOB.chemical_reagents_list[reagent_id] if(cooldown == FALSE && H.reagents.has_reagent(reagent_id)) - to_chat(quirk_holder, "You forgot you were allergic to [allergy.name]!") + to_chat(quirk_holder, span_danger("You forgot you were allergic to [allergy.name]!")) H.reagents.add_reagent(/datum/reagent/toxin/histamine, rand(5,10)) cooldown = TRUE addtimer(VARSET_CALLBACK(src, cooldown, FALSE), cooldown_time) @@ -652,8 +652,8 @@ desc = "You have an uncontrollable urge to pick up things you see. Even things that don't belong to you." value = -1 mob_trait = TRAIT_KLEPTOMANIAC - gain_text = "You have an unmistakeable urge to grab nearby objects." - lose_text = "You no feel the urge to steal." + gain_text = span_danger("You have an unmistakeable urge to grab nearby objects.") + lose_text = span_notice("You no feel the urge to steal.") medical_record_text = "Patient has an uncontrollable urge to steal." /datum/quirk/kleptomaniac/on_process() @@ -667,7 +667,7 @@ if(!(L.mobility_flags & MOBILITY_PICKUP)) return if(!H.get_active_held_item()) - to_chat(quirk_holder, "You can't keep your eyes off [I.name].") + to_chat(quirk_holder, span_danger("You can't keep your eyes off [I.name].")) H.UnarmedAttack(I) /datum/quirk/ineloquent diff --git a/code/datums/traits/neutral.dm b/code/datums/traits/neutral.dm index 91afe641e07c..18be90aedaa5 100644 --- a/code/datums/traits/neutral.dm +++ b/code/datums/traits/neutral.dm @@ -5,8 +5,8 @@ name = "Vegetarian" desc = "You find the idea of eating meat morally and physically repulsive." value = 0 - gain_text = "You feel repulsion at the idea of eating meat." - lose_text = "You feel like eating meat isn't that bad." + gain_text = span_notice("You feel repulsion at the idea of eating meat.") + lose_text = span_notice("You feel like eating meat isn't that bad.") medical_record_text = "Patient reports a vegetarian diet." /datum/quirk/vegetarian/add() @@ -28,8 +28,8 @@ name = "Ananas Affinity" desc = "You find yourself greatly enjoying fruits of the ananas genus. You can't seem to ever get enough of their sweet goodness!" value = 0 - gain_text = "You feel an intense craving for pineapple." - lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + gain_text = span_notice("You feel an intense craving for pineapple.") + lose_text = span_notice("Your feelings towards pineapples seem to return to a lukewarm state.") medical_record_text = "Patient demonstrates a pathological love of pineapple." /datum/quirk/pineapple_liker/add() @@ -47,8 +47,8 @@ name = "Ananas Aversion" desc = "You find yourself greatly detesting fruits of the ananas genus. Serious, how the hell can anyone say these things are good? And what kind of madman would even dare putting it on a pizza!?" value = 0 - gain_text = "You find yourself pondering what kind of idiot actually enjoys pineapples..." - lose_text = "Your feelings towards pineapples seem to return to a lukewarm state." + gain_text = span_notice("You find yourself pondering what kind of idiot actually enjoys pineapples...") + lose_text = span_notice("Your feelings towards pineapples seem to return to a lukewarm state.") medical_record_text = "Patient is correct to think that pineapple is disgusting." /datum/quirk/pineapple_hater/add() @@ -66,8 +66,8 @@ name = "Deviant Tastes" desc = "You dislike food that most people enjoy, and find delicious what they don't." value = 0 - gain_text = "You start craving something that tastes strange." - lose_text = "You feel like eating normal food again." + gain_text = span_notice("You start craving something that tastes strange.") + lose_text = span_notice("You feel like eating normal food again.") medical_record_text = "Patient demonstrates irregular nutrition preferences." /datum/quirk/deviant_tastes/add() @@ -95,7 +95,7 @@ /datum/quirk/monochromatic/post_add() if(quirk_holder.mind.assigned_role == "Detective") - to_chat(quirk_holder, "Mmm. Nothing's ever clear on this station. It's all shades of gray...") + to_chat(quirk_holder, span_boldannounce("Mmm. Nothing's ever clear on this station. It's all shades of gray...")) quirk_holder.playsound_local(quirk_holder, 'sound/ambience/ambidet1.ogg', 50, FALSE) /datum/quirk/monochromatic/remove() @@ -107,8 +107,8 @@ desc = "You have developed a random accent." value = 0 mob_trait = TRAIT_RANDOM_ACCENT - gain_text = "You have developed an accent." - lose_text = "You have better control of how you pronounce your words." + gain_text = span_danger("You have developed an accent.") + lose_text = span_notice("You have better control of how you pronounce your words.") medical_record_text = "Patient is difficult to understand." /datum/quirk/random_accent/post_add() diff --git a/code/datums/voice_announcements.dm b/code/datums/voice_announcements.dm index 04cc6257b121..8e31ff48ae95 100644 --- a/code/datums/voice_announcements.dm +++ b/code/datums/voice_announcements.dm @@ -167,7 +167,7 @@ GLOBAL_LIST_EMPTY(voice_announce_list) var/z_level = console_turf.z SScommunications.nonsilicon_message_cooldown = world.time + 300 var/mob/living/user = client.mob - deadchat_broadcast(" made a priority announcement from [get_area_name(user, TRUE)].", "[user.real_name]", user) + deadchat_broadcast(" made a priority announcement from [span_name("[get_area_name(user, TRUE)]")].", span_name("[user.real_name]"), user) var/sound/sound1 = sound('sound/misc/announce.ogg') var/sound/sound2 = sound(snd, channel = CHANNEL_VOICE_ANNOUNCE, volume = 70) do_announce_sound(sound1, sound2, 15, z_level) diff --git a/code/datums/weather/weather.dm b/code/datums/weather/weather.dm index 665217e40681..3881574827de 100644 --- a/code/datums/weather/weather.dm +++ b/code/datums/weather/weather.dm @@ -4,12 +4,12 @@ var/name = "space wind" var/desc = "Heavy gusts of wind blanket the area, periodically knocking down anyone caught in the open." - var/telegraph_message = "The wind begins to pick up." //The message displayed in chat to foreshadow the weather's beginning + var/telegraph_message = span_warning("The wind begins to pick up.") //The message displayed in chat to foreshadow the weather's beginning var/telegraph_duration = 300 //In deciseconds, how long from the beginning of the telegraph until the weather begins var/telegraph_sound //The sound file played to everyone on an affected z-level var/telegraph_overlay //The overlay applied to all tiles on the z-level - var/weather_message = "The wind begins to blow ferociously!" //Displayed in chat once the weather begins in earnest + var/weather_message = span_userdanger("The wind begins to blow ferociously!") //Displayed in chat once the weather begins in earnest var/weather_duration = 1200 //In deciseconds, how long the weather lasts once it begins var/weather_duration_lower = 1200 //See above - this is the lowest possible duration var/weather_duration_upper = 1500 //See above - this is the highest possible duration @@ -17,7 +17,7 @@ var/weather_overlay var/weather_color = null - var/end_message = "The wind relents its assault." //Displayed once the weather is over + var/end_message = span_danger("The wind relents its assault.") //Displayed once the weather is over var/end_duration = 300 //In deciseconds, how long the "wind-down" graphic will appear before vanishing entirely var/end_sound var/end_overlay diff --git a/code/datums/weather/weather_types/acid_rain.dm b/code/datums/weather/weather_types/acid_rain.dm index a1ec4871d5b7..86614ac0c240 100644 --- a/code/datums/weather/weather_types/acid_rain.dm +++ b/code/datums/weather/weather_types/acid_rain.dm @@ -4,17 +4,17 @@ desc = "The planet's thunderstorms are by nature acidic, and will incinerate anyone standing beneath them without protection." telegraph_duration = 400 - telegraph_message = "Thunder rumbles far above. You hear droplets drumming against the canopy. Seek shelter." + telegraph_message = span_boldwarning("Thunder rumbles far above. You hear droplets drumming against the canopy. Seek shelter.") telegraph_sound = 'sound/ambience/acidrain_start.ogg' - weather_message = "Acidic rain pours down around you! Get inside!" + weather_message = span_userdanger("Acidic rain pours down around you! Get inside!") weather_overlay = "acid_rain" weather_duration_lower = 600 weather_duration_upper = 1500 weather_sound = 'sound/ambience/acidrain_mid.ogg' end_duration = 100 - end_message = "The downpour gradually slows to a light shower. It should be safe outside now." + end_message = span_boldannounce("The downpour gradually slows to a light shower. It should be safe outside now.") end_sound = 'sound/ambience/acidrain_end.ogg' area_type = /area diff --git a/code/datums/weather/weather_types/ash_storm.dm b/code/datums/weather/weather_types/ash_storm.dm index 53d9f4805ba1..570cfb9249be 100644 --- a/code/datums/weather/weather_types/ash_storm.dm +++ b/code/datums/weather/weather_types/ash_storm.dm @@ -3,16 +3,16 @@ name = "ash storm" desc = "An intense atmospheric storm lifts ash off of the planet's surface and billows it down across the area, dealing intense fire damage to the unprotected." - telegraph_message = "An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter." + telegraph_message = span_boldwarning("An eerie moan rises on the wind. Sheets of burning ash blacken the horizon. Seek shelter.") telegraph_duration = 300 telegraph_overlay = "light_ash" - weather_message = "Smoldering clouds of scorching ash billow down around you! Get inside!" + weather_message = span_userdanger("Smoldering clouds of scorching ash billow down around you! Get inside!") weather_duration_lower = 600 weather_duration_upper = 1200 weather_overlay = "ash_storm" - end_message = "The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now." + end_message = span_boldannounce("The shrieking wind whips away the last of the ash and falls to its usual murmur. It should be safe to go outside now.") end_duration = 300 end_overlay = "light_ash" @@ -102,10 +102,10 @@ name = "emberfall" desc = "A passing ash storm blankets the area in harmless embers." - weather_message = "Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by..." + weather_message = span_notice("Gentle embers waft down around you like grotesque snow. The storm seems to have passed you by...") weather_overlay = "light_ash" - end_message = "The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet." + end_message = span_notice("The emberfall slows, stops. Another layer of hardened soot to the basalt beneath your feet.") end_sound = null aesthetic = TRUE diff --git a/code/datums/weather/weather_types/floor_is_lava.dm b/code/datums/weather/weather_types/floor_is_lava.dm index ad7d9c8ff361..81e0c7bff6f7 100644 --- a/code/datums/weather/weather_types/floor_is_lava.dm +++ b/code/datums/weather/weather_types/floor_is_lava.dm @@ -3,15 +3,15 @@ name = "the floor is lava" desc = "The ground turns into surprisingly cool lava, lightly damaging anything on the floor." - telegraph_message = "You feel the ground beneath you getting hot. Waves of heat distort the air." + telegraph_message = span_warning("You feel the ground beneath you getting hot. Waves of heat distort the air.") telegraph_duration = 150 - weather_message = "The floor is lava! Get on top of something!" + weather_message = span_userdanger("The floor is lava! Get on top of something!") weather_duration_lower = 300 weather_duration_upper = 600 weather_overlay = "lava" - end_message = "The ground cools and returns to its usual form." + end_message = span_danger("The ground cools and returns to its usual form.") end_duration = 0 area_type = /area diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 72752abfe4e6..b60614c8e2db 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -4,9 +4,9 @@ desc = "A cloud of intense radiation passes through the area dealing rad damage to those who are unprotected." telegraph_duration = 400 - telegraph_message = "The air begins to grow warm." + telegraph_message = span_danger("The air begins to grow warm.") - weather_message = "You feel waves of heat wash over you! Find shelter!" + weather_message = span_userdanger("You feel waves of heat wash over you! Find shelter!") weather_overlay = "ash_storm" weather_duration_lower = 600 weather_duration_upper = 1500 @@ -14,7 +14,7 @@ weather_sound = 'sound/misc/bloblarm.ogg' end_duration = 100 - end_message = "The air seems to be cooling off again." + end_message = span_notice("The air seems to be cooling off again.") area_type = /area protected_areas = list(/area/maintenance, /area/ai_monitored/turret_protected/ai_upload, /area/ai_monitored/turret_protected/ai_upload_foyer, diff --git a/code/datums/weather/weather_types/snow_storm.dm b/code/datums/weather/weather_types/snow_storm.dm index 8ab4839cdbd3..505391464631 100644 --- a/code/datums/weather/weather_types/snow_storm.dm +++ b/code/datums/weather/weather_types/snow_storm.dm @@ -3,17 +3,17 @@ desc = "Harsh snowstorms roam the topside of this arctic planet, burying any area unfortunate enough to be in its path." probability = 90 - telegraph_message = "Drifting particles of snow begin to dust the surrounding area.." + telegraph_message = span_warning("Drifting particles of snow begin to dust the surrounding area..") telegraph_duration = 300 telegraph_overlay = "light_snow" - weather_message = "Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!" + weather_message = span_userdanger("Harsh winds pick up as dense snow begins to fall from the sky! Seek shelter!") weather_overlay = "snow_storm" weather_duration_lower = 600 weather_duration_upper = 1500 end_duration = 100 - end_message = "The snowfall dies down, it should be safe to go outside again." + end_message = span_boldannounce("The snowfall dies down, it should be safe to go outside again.") area_type = /area protect_indoors = TRUE diff --git a/code/datums/wires/_wires.dm b/code/datums/wires/_wires.dm index dbaffb517a56..10ebab692b1c 100644 --- a/code/datums/wires/_wires.dm +++ b/code/datums/wires/_wires.dm @@ -284,7 +284,7 @@ cut_color(target_wire) . = TRUE else - to_chat(L, "You need wirecutters!") + to_chat(L, span_warning("You need wirecutters!")) if("pulse") I = L.is_holding_tool_quality(TOOL_MULTITOOL) if(I || IsAdminGhost(usr)) @@ -293,7 +293,7 @@ pulse_color(target_wire, L) . = TRUE else - to_chat(L, "You need a multitool!") + to_chat(L, span_warning("You need a multitool!")) if("attach") if(is_attached(target_wire)) I = detach_assembly(target_wire) @@ -311,6 +311,6 @@ A.forceMove(L.drop_location()) . = TRUE else - to_chat(L, "You need an attachable assembly!") + to_chat(L, span_warning("You need an attachable assembly!")) #undef MAXIMUM_EMP_WIRES \ No newline at end of file diff --git a/code/datums/wires/mulebot.dm b/code/datums/wires/mulebot.dm index e7e40274e612..9376e9493efd 100644 --- a/code/datums/wires/mulebot.dm +++ b/code/datums/wires/mulebot.dm @@ -21,12 +21,12 @@ var/mob/living/simple_animal/bot/mulebot/M = holder switch(wire) if(WIRE_POWER1, WIRE_POWER2) - holder.visible_message("[icon2html(M, viewers(holder))] The charge light flickers.") + holder.visible_message(span_notice("[icon2html(M, viewers(holder))] The charge light flickers.")) if(WIRE_AVOIDANCE) - holder.visible_message("[icon2html(M, viewers(holder))] The external warning lights flash briefly.") + holder.visible_message(span_notice("[icon2html(M, viewers(holder))] The external warning lights flash briefly.")) if(WIRE_LOADCHECK) - holder.visible_message("[icon2html(M, viewers(holder))] The load platform clunks.") + holder.visible_message(span_notice("[icon2html(M, viewers(holder))] The load platform clunks.")) if(WIRE_MOTOR1, WIRE_MOTOR2) - holder.visible_message("[icon2html(M, viewers(holder))] The drive motor whines briefly.") + holder.visible_message(span_notice("[icon2html(M, viewers(holder))] The drive motor whines briefly.")) else - holder.visible_message("[icon2html(M, viewers(holder))] You hear a radio crackle.") \ No newline at end of file + holder.visible_message(span_notice("[icon2html(M, viewers(holder))] You hear a radio crackle.")) \ No newline at end of file diff --git a/code/datums/wires/syndicatebomb.dm b/code/datums/wires/syndicatebomb.dm index 30718540c0d1..3c448934b589 100644 --- a/code/datums/wires/syndicatebomb.dm +++ b/code/datums/wires/syndicatebomb.dm @@ -20,24 +20,24 @@ switch(wire) if(WIRE_BOOM) if(B.active) - holder.visible_message("[icon2html(B, viewers(holder))] An alarm sounds! It's go-") + holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-")) B.explode_now = TRUE tell_admins(B) else - holder.visible_message("[icon2html(B, viewers(holder))] Nothing happens.") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] Nothing happens.")) if(WIRE_UNBOLT) - holder.visible_message("[icon2html(B, viewers(holder))] The bolts spin in place for a moment.") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bolts spin in place for a moment.")) if(WIRE_DELAY) if(B.delayedbig) - holder.visible_message("[icon2html(B, viewers(holder))] Nothing happens.") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] Nothing happens.")) else - holder.visible_message("[icon2html(B, viewers(holder))] The bomb chirps.") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bomb chirps.")) playsound(B, 'sound/machines/chime.ogg', 30, 1) B.detonation_timer += 300 if(B.active) B.delayedbig = TRUE if(WIRE_PROCEED) - holder.visible_message("[icon2html(B, viewers(holder))] The bomb buzzes ominously!") + holder.visible_message(span_danger("[icon2html(B, viewers(holder))] The bomb buzzes ominously!")) playsound(B, 'sound/machines/buzz-sigh.ogg', 30, 1) var/seconds = B.seconds_remaining() if(seconds >= 61) // Long fuse bombs can suddenly become more dangerous if you tinker with them. @@ -48,13 +48,13 @@ B.detonation_timer = world.time + 100 if(WIRE_ACTIVATE) if(!B.active) - holder.visible_message("[icon2html(B, viewers(holder))] You hear the bomb start ticking!") + holder.visible_message(span_danger("[icon2html(B, viewers(holder))] You hear the bomb start ticking!")) B.activate() B.update_icon() else if(B.delayedlittle) - holder.visible_message("[icon2html(B, viewers(holder))] Nothing happens.") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] Nothing happens.")) else - holder.visible_message("[icon2html(B, viewers(holder))] The bomb seems to hesitate for a moment.") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bomb seems to hesitate for a moment.")) B.detonation_timer += 100 B.delayedlittle = TRUE @@ -63,22 +63,22 @@ switch(wire) if(WIRE_BOOM) if(!mend && B.active) - holder.visible_message("[icon2html(B, viewers(holder))] An alarm sounds! It's go-") + holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-")) B.explode_now = TRUE tell_admins(B) if(WIRE_UNBOLT) if(!mend && B.anchored) - holder.visible_message("[icon2html(B, viewers(holder))] The bolts lift out of the ground!") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The bolts lift out of the ground!")) playsound(B, 'sound/effects/stealthoff.ogg', 30, 1) B.anchored = FALSE if(WIRE_PROCEED) if(!mend && B.active) - holder.visible_message("[icon2html(B, viewers(holder))] An alarm sounds! It's go-") + holder.visible_message(span_danger("[icon2html(B, viewers(holder))] An alarm sounds! It's go-")) B.explode_now = TRUE tell_admins(B) if(WIRE_ACTIVATE) if(!mend && B.active) - holder.visible_message("[icon2html(B, viewers(holder))] The timer stops! The bomb has been defused!") + holder.visible_message(span_notice("[icon2html(B, viewers(holder))] The timer stops! The bomb has been defused!")) B.active = FALSE B.delayedlittle = FALSE B.delayedbig = FALSE diff --git a/code/datums/world_topic.dm b/code/datums/world_topic.dm index 1e1438eaea3a..11f314b02b2e 100644 --- a/code/datums/world_topic.dm +++ b/code/datums/world_topic.dm @@ -70,7 +70,7 @@ if(PRcounts[id] > PR_ANNOUNCEMENTS_PER_ROUND) return - var/final_composed = "PR: [input[keyword]]" + var/final_composed = span_announce("PR: [input[keyword]]") for(var/client/C in GLOB.clients) C.AnnouncePR(final_composed) @@ -79,7 +79,7 @@ require_comms_key = TRUE /datum/world_topic/ahelp_relay/Run(list/input) - relay_msg_admins("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]") + relay_msg_admins(span_adminnotice("HELP: [input["source"]] [input["message_sender"]]: [input["message"]]")) /datum/world_topic/comms_console keyword = "Comms_Console" @@ -119,7 +119,7 @@ sentmsg = oocmsg_toadmins // Get the admin one else sentmsg = oocmsg - sentmsg = "RELAY: [input["source"]] " + sentmsg + sentmsg = "[span_prefix("RELAY: [input["source"]]")] " + sentmsg //no pinging across servers, thats intentional to_chat(C,sentmsg) diff --git a/code/datums/wounds/_wounds.dm b/code/datums/wounds/_wounds.dm new file mode 100644 index 000000000000..f91b124e8d41 --- /dev/null +++ b/code/datums/wounds/_wounds.dm @@ -0,0 +1,376 @@ +/* + Wounds are specific medical complications that can arise and be applied to (currently) carbons, with a focus on humans. All of the code for and related to this is heavily WIP, + and the documentation will be slanted towards explaining what each part/piece is leading up to, until such a time as I finish the core implementations. The original design doc + can be found at https://hackmd.io/@Ryll/r1lb4SOwU + + Wounds are datums that operate like a mix of diseases, brain traumas, and components, and are applied to a /obj/item/bodypart (preferably attached to a carbon) when they take large spikes of damage + or under other certain conditions (thrown hard against a wall, sustained exposure to plasma fire, etc). Wounds are categorized by the three following criteria: + 1. Severity: Either MODERATE, SEVERE, or CRITICAL. See the hackmd for more details + 2. Viable zones: What body parts the wound is applicable to. Generic wounds like broken bones and severe burns can apply to every zone, but you may want to add special wounds for certain limbs + like a twisted ankle for legs only, or open air exposure of the organs for particularly gruesome chest wounds. Wounds should be able to function for every zone they are marked viable for. + 3. Damage type: Currently either BRUTE or BURN. Again, see the hackmd for a breakdown of my plans for each type. + + When a body part suffers enough damage to get a wound, the severity (determined by a roll or something, worse damage leading to worse wounds), affected limb, and damage type sustained are factored into + deciding what specific wound will be applied. I'd like to have a few different types of wounds for at least some of the choices, but I'm just doing rough generals for now. Expect polishing +*/ + +/datum/wound + /// What it's named + var/name = "Wound" + /// The description shown on the scanners + var/desc = "" + /// The basic treatment suggested by health analyzers + var/treat_text = "" + /// What the limb looks like on a cursory examine + var/examine_desc = "is badly hurt" + + /// needed for "your arm has a compound fracture" vs "your arm has some third degree burns" + var/a_or_from = "a" + /// The visible message when this happens + var/occur_text = "" + /// This sound will be played upon the wound being applied + var/sound_effect + + /// Either WOUND_SEVERITY_TRIVIAL (meme wounds like stubbed toe), WOUND_SEVERITY_MODERATE, WOUND_SEVERITY_SEVERE, or WOUND_SEVERITY_CRITICAL (or maybe WOUND_SEVERITY_LOSS) + var/severity = WOUND_SEVERITY_MODERATE + /// The list of wounds it belongs in, WOUND_LIST_BLUNT, WOUND_LIST_SLASH, or WOUND_LIST_BURN + var/wound_type + + /// What body zones can we affect + var/list/viable_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + /// Who owns the body part that we're wounding + var/mob/living/carbon/victim = null + /// The bodypart we're parented to + var/obj/item/bodypart/limb = null + + /// Specific items such as bandages or sutures that can try directly treating this wound + var/list/treatable_by + /// Specific items such as bandages or sutures that can try directly treating this wound only if the user has the victim in an aggressive grab or higher + var/list/treatable_by_grabbed + /// Tools with the specified tool flag will also be able to try directly treating this wound + var/treatable_tool + /// How long it will take to treat this wound with a standard effective tool, assuming it doesn't need surgery + var/base_treat_time = 5 SECONDS + + /// Using this limb in a do_after interaction will multiply the length by this duration (arms) + var/interaction_efficiency_penalty = 1 + /// Incoming damage on this limb will be multiplied by this, to simulate tenderness and vulnerability (mostly burns). + var/damage_mulitplier_penalty = 1 + /// If set and this wound is applied to a leg, we take this many deciseconds extra per step on this leg + var/limp_slowdown + /// How much we're contributing to this limb's bleed_rate + var/blood_flow + + /// The minimum we need to roll on [/obj/item/bodypart/proc/check_wounding] to begin suffering this wound, see check_wounding_mods() for more + var/threshold_minimum + /// How much having this wound will add to all future check_wounding() rolls on this limb, to allow progression to worse injuries with repeated damage + var/threshold_penalty + /// If we need to process each life tick + var/processes = FALSE + + /// If having this wound makes currently makes the parent bodypart unusable + var/disabling + + /// What status effect we assign on application + var/status_effect_type + /// The status effect we're linked to + var/datum/status_effect/linked_status_effect + /// If we're operating on this wound and it gets healed, we'll nix the surgery too + var/datum/surgery/attached_surgery + /// if you're a lazy git and just throw them in cryo, the wound will go away after accumulating severity * 25 power + var/cryo_progress + + /// What kind of scars this wound will create description wise once healed + var/scar_keyword = "generic" + /// If we've already tried scarring while removing (since remove_wound calls qdel, and qdel calls remove wound, .....) TODO: make this cleaner + var/already_scarred = FALSE + /// If we forced this wound through badmin smite, we won't count it towards the round totals + var/from_smite + + /// What flags apply to this wound + var/wound_flags = (FLESH_WOUND | BONE_WOUND | ACCEPTS_GAUZE) + +/datum/wound/Destroy() + if(attached_surgery) + QDEL_NULL(attached_surgery) + if(limb?.wounds && (src in limb.wounds)) // destroy can call remove_wound() and remove_wound() calls qdel, so we check to make sure there's anything to remove first + remove_wound() + set_limb(null) + victim = null + return ..() + +/** + * apply_wound() is used once a wound type is instantiated to assign it to a bodypart, and actually come into play. + * + * + * Arguments: + * * L: The bodypart we're wounding, we don't care about the person, we can get them through the limb + * * silent: Not actually necessary I don't think, was originally used for demoting wounds so they wouldn't make new messages, but I believe old_wound took over that, I may remove this shortly + * * old_wound: If our new wound is a replacement for one of the same time (promotion or demotion), we can reference the old one just before it's removed to copy over necessary vars + * * smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented) + */ +/datum/wound/proc/apply_wound(obj/item/bodypart/L, silent = FALSE, datum/wound/old_wound = null, smited = FALSE) + if(!istype(L) || !L.owner || !(L.body_zone in viable_zones) || isalien(L.owner) || !L.is_organic_limb()) + qdel(src) + return + + if(ishuman(L.owner)) + var/mob/living/carbon/human/H = L.owner + if(((wound_flags & BONE_WOUND) && !(HAS_BONE in H.dna.species.species_traits)) || ((wound_flags & FLESH_WOUND) && !(HAS_FLESH in H.dna.species.species_traits))) + qdel(src) + return + + // we accept promotions and demotions, but no point in redundancy. This should have already been checked wherever the wound was rolled and applied for (see: bodypart damage code), but we do an extra check + // in case we ever directly add wounds + for(var/i in L.wounds) + var/datum/wound/preexisting_wound = i + if((preexisting_wound.type == type) && (preexisting_wound != old_wound)) + qdel(src) + return + + victim = L.owner + set_limb(L) + LAZYADD(victim.all_wounds, src) + LAZYADD(limb.wounds, src) + limb.update_wounds() + if(status_effect_type) + linked_status_effect = victim.apply_status_effect(status_effect_type, src) + SEND_SIGNAL(victim, COMSIG_CARBON_GAIN_WOUND, src, limb) + if(!victim.alerts["wound"]) // only one alert is shared between all of the wounds + victim.throw_alert("wound", /obj/screen/alert/status_effect/wound) + + var/demoted + if(old_wound) + demoted = (severity <= old_wound.severity) + + if(severity == WOUND_SEVERITY_TRIVIAL) + return + + if(!(silent || demoted)) + var/msg = span_danger("[victim]'s [limb.name] [occur_text]!") + var/vis_dist = COMBAT_MESSAGE_RANGE + + if(severity != WOUND_SEVERITY_MODERATE) + msg = "[msg]" + vis_dist = DEFAULT_MESSAGE_RANGE + + victim.visible_message(msg, span_userdanger("Your [limb.name] [occur_text]!"), vision_distance = vis_dist) + if(sound_effect) + playsound(L.owner, sound_effect, 70 + 20 * severity, TRUE) + + if(!demoted) + wound_injury(old_wound) + second_wind() + +/// Remove the wound from whatever it's afflicting, and cleans up whateverstatus effects it had or modifiers it had on interaction times. ignore_limb is used for detachments where we only want to forget the victim +/datum/wound/proc/remove_wound(ignore_limb, replaced = FALSE) + //TODO: have better way to tell if we're getting removed without replacement (full heal) scar stuff + set_disabling(FALSE) + if(limb && !already_scarred && !replaced) + already_scarred = TRUE + var/datum/scar/new_scar = new + new_scar.generate(limb, src) + if(victim) + LAZYREMOVE(victim.all_wounds, src) + if(!victim.all_wounds) + victim.clear_alert("wound") + SEND_SIGNAL(victim, COMSIG_CARBON_LOSE_WOUND, src, limb) + if(limb && !ignore_limb) + LAZYREMOVE(limb.wounds, src) + limb.update_wounds(replaced) + if(limb?.can_be_disabled) + limb.update_disabled() + +/** + * replace_wound() is used when you want to replace the current wound with a new wound, presumably of the same category, just of a different severity (either up or down counts) + * + * This proc actually instantiates the new wound based off the specific type path passed, then returns the new instantiated wound datum. + * + * Arguments: + * * new_type- The TYPE PATH of the wound you want to replace this, like /datum/wound/slash/severe + * * smited- If this is a smite, we don't care about this wound for stat tracking purposes (not yet implemented) + */ +/datum/wound/proc/replace_wound(new_type, smited = FALSE) + var/datum/wound/new_wound = new new_type + already_scarred = TRUE + remove_wound(replaced=TRUE) + new_wound.apply_wound(limb, old_wound = src, smited = smited) + . = new_wound + qdel(src) + +/// The immediate negative effects faced as a result of the wound +/datum/wound/proc/wound_injury(datum/wound/old_wound = null) + return + +/// Proc called to change the variable `limb` and react to the event. +/datum/wound/proc/set_limb(new_value) + if(limb == new_value) + return FALSE //Limb can either be a reference to something or `null`. Returning the number variable makes it clear no change was made. + . = limb + limb = new_value + if(. && disabling) + var/obj/item/bodypart/old_limb = . + REMOVE_TRAIT(old_limb, TRAIT_PARALYSIS, src) + REMOVE_TRAIT(old_limb, TRAIT_DISABLED_BY_WOUND, src) + if(limb) + if(disabling) + ADD_TRAIT(limb, TRAIT_PARALYSIS, src) + ADD_TRAIT(limb, TRAIT_DISABLED_BY_WOUND, src) + + +/// Proc called to change the variable `disabling` and react to the event. +/datum/wound/proc/set_disabling(new_value) + if(disabling == new_value) + return + . = disabling + disabling = new_value + if(disabling) + if(!. && limb) //Gained disabling. + ADD_TRAIT(limb, TRAIT_PARALYSIS, src) + ADD_TRAIT(limb, TRAIT_DISABLED_BY_WOUND, src) + else if(. && limb) //Lost disabling. + REMOVE_TRAIT(limb, TRAIT_PARALYSIS, src) + REMOVE_TRAIT(limb, TRAIT_DISABLED_BY_WOUND, src) + +/// Additional beneficial effects when the wound is gained, in case you want to give a temporary boost to allow the victim to try an escape or last stand +/datum/wound/proc/second_wind() + switch(severity) + if(WOUND_SEVERITY_MODERATE) + victim.reagents.add_reagent(/datum/reagent/determination, WOUND_DETERMINATION_MODERATE) + if(WOUND_SEVERITY_SEVERE) + victim.reagents.add_reagent(/datum/reagent/determination, WOUND_DETERMINATION_SEVERE) + if(WOUND_SEVERITY_CRITICAL) + victim.reagents.add_reagent(/datum/reagent/determination, WOUND_DETERMINATION_CRITICAL) + if(WOUND_SEVERITY_LOSS) + victim.reagents.add_reagent(/datum/reagent/determination, WOUND_DETERMINATION_LOSS) + +/** + * try_treating() is an intercept run from [/mob/living/carbon/proc/attackby] right after surgeries but before anything else. Return TRUE here if the item is something that is relevant to treatment to take over the interaction. + * + * This proc leads into [/datum/wound/proc/treat] and probably shouldn't be added onto in children types. You can specify what items or tools you want to be intercepted + * with var/list/treatable_by and var/treatable_tool, then if an item fulfills one of those requirements and our wound claims it first, it goes over to treat() and treat_self(). + * + * Arguments: + * * I: The item we're trying to use + * * user: The mob trying to use it on us + */ +/datum/wound/proc/try_treating(obj/item/I, mob/user) + // first we weed out if we're not dealing with our wound's bodypart, or if it might be an attack + if(QDELETED(I) || limb.body_zone != user.zone_selected || (I.force && user.a_intent != INTENT_HELP)) + return FALSE + + var/allowed = FALSE + + // check if we have a valid treatable tool + if(I.tool_behaviour == treatable_tool) + allowed = TRUE + else if((treatable_tool == TOOL_CAUTERY && I.get_temperature() || istype(I, /obj/item/gun/energy/laser)) && user == victim) // allow improvised cauterization on yourself without an aggro grab allowed = TRUE + allowed = TRUE + // failing that, see if we're aggro grabbing them and if we have an item that works for aggro grabs only + else if(user.pulling == victim && user.grab_state >= GRAB_AGGRESSIVE && check_grab_treatments(I, user)) + allowed = TRUE + // failing THAT, we check if we have a generally allowed item + else + for(var/allowed_type in treatable_by) + if(istype(I, allowed_type)) + allowed = TRUE + break + + // if none of those apply, we return false to avoid interrupting + if(!allowed) + return FALSE + + // now that we've determined we have a valid attempt at treating, we can stomp on their dreams if we're already interacting with the patient + if(INTERACTING_WITH(user, victim)) + to_chat(user, span_warning("You're already interacting with [victim]!")) + return TRUE + + if(!victim.can_inject(user, TRUE)) + return TRUE + + // lastly, treat them + treat(I, user) + return TRUE + +/// Return TRUE if we have an item that can only be used while aggro grabbed (unhanded aggro grab treatments go in [/datum/wound/proc/try_handling]). Treatment is still is handled in [/datum/wound/proc/treat] +/datum/wound/proc/check_grab_treatments(obj/item/I, mob/user) + return FALSE + +/// Like try_treating() but for unhanded interactions from humans, used by joint dislocations for manual bodypart chiropractice for example. Ignores thick material checks since you can pop an arm into place through a thick suit unlike using sutures +/datum/wound/proc/try_handling(mob/living/carbon/human/user) + return FALSE + +/// Someone is using something that might be used for treating the wound on this limb +/datum/wound/proc/treat(obj/item/I, mob/user) + return + +/// If var/processing is TRUE, this is run on each life tick +/datum/wound/proc/handle_process() + return + +/// For use in do_after callback checks +/datum/wound/proc/still_exists() + return (!QDELETED(src) && limb) + +/// When our parent bodypart is hurt +/datum/wound/proc/receive_damage(wounding_type, wounding_dmg, wound_bonus) + return + +/// Called from cryoxadone and pyroxadone when they're proc'ing. Wounds will slowly be fixed separately from other methods when these are in effect. crappy name but eh +/datum/wound/proc/on_xadone(power) + cryo_progress += power + if(cryo_progress > 33 * severity) + qdel(src) + +/// When synthflesh is applied to the victim, we call this. No sense in setting up an entire chem reaction system for wounds when we only care for a few chems. Probably will change in the future +/datum/wound/proc/on_synthflesh(power) + return + +/// Called when the patient is undergoing stasis, so that having fully treated a wound doesn't make you sit there helplessly until you think to unbuckle them +/datum/wound/proc/on_stasis() + return + +/// Called when we're crushed in an airlock or firedoor, for one of the improvised joint dislocation fixes +/datum/wound/proc/crush() + return + +/// Used when we're being dragged while bleeding, the value we return is how much bloodloss this wound causes from being dragged. Since it's a proc, you can let bandages soak some of the blood +/datum/wound/proc/drag_bleed_amount() + return + + +/** + * get_bleed_rate_of_change() is used in [/mob/living/carbon/proc/bleed_warn] to gauge whether this wound (if bleeding) is becoming worse, better, or staying the same over time + * + * Returns BLOOD_FLOW_STEADY if we're not bleeding or there's no change (like piercing), BLOOD_FLOW_DECREASING if we're clotting (non-critical slashes, gauzed, coagulant, etc), BLOOD_FLOW_INCREASING if we're opening up (crit slashes/heparin) + */ +/datum/wound/proc/get_bleed_rate_of_change() + if(blood_flow && HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) + return BLOOD_FLOW_INCREASING + return BLOOD_FLOW_STEADY + +/** + * get_examine_description() is used in carbon/examine and human/examine to show the status of this wound. Useful if you need to show some status like the wound being splinted or bandaged. + * + * Return the full string line you want to show, note that we're already dealing with the 'warning' span at this point, and that \n is already appended for you in the place this is called from + * + * Arguments: + * * mob/user: The user examining the wound's owner, if that matters + */ +/datum/wound/proc/get_examine_description(mob/user) + . = "[victim.p_their(TRUE)] [limb.name] [examine_desc]" + . = severity <= WOUND_SEVERITY_MODERATE ? "[.]." : "[.]!" + +/datum/wound/proc/get_scanner_description(mob/user) + return "Type: [name]\nSeverity: [severity_text()]\nDescription: [desc]\nRecommended Treatment: [treat_text]" + +/datum/wound/proc/severity_text() + switch(severity) + if(WOUND_SEVERITY_TRIVIAL) + return "Trivial" + if(WOUND_SEVERITY_MODERATE) + return "Moderate" + if(WOUND_SEVERITY_SEVERE) + return "Severe" + if(WOUND_SEVERITY_CRITICAL) + return "Critical" diff --git a/code/datums/wounds/bones.dm b/code/datums/wounds/bones.dm new file mode 100644 index 000000000000..67e2d8a4775c --- /dev/null +++ b/code/datums/wounds/bones.dm @@ -0,0 +1,437 @@ + +/* + Blunt/Bone wounds +*/ +// TODO: well, a lot really, but i'd kill to get overlays and a bonebreaking effect like Blitz: The League, similar to electric shock skeletons + +/* + Base definition +*/ +/datum/wound/blunt + name = "Blunt (Bone) Wound" + sound_effect = 'sound/effects/wounds/crack1.ogg' + wound_type = WOUND_BLUNT + wound_flags = (BONE_WOUND | ACCEPTS_GAUZE) + + /// Have we been taped? + var/taped + /// Have we been bone gel'd? + var/gelled + /// If we did the gel + surgical tape healing method for fractures, how many ticks does it take to heal by default + var/regen_ticks_needed + /// Our current counter for gel + surgical tape regeneration + var/regen_ticks_current + /// If we suffer severe head booboos, we can get brain traumas tied to them + var/datum/brain_trauma/active_trauma + /// What brain trauma group, if any, we can draw from for head wounds + var/brain_trauma_group + /// If we deal brain traumas, when is the next one due? + var/next_trauma_cycle + /// How long do we wait +/- 20% for the next trauma? + var/trauma_cycle_cooldown + /// If this is a chest wound and this is set, we have this chance to cough up blood when hit in the chest + var/internal_bleeding_chance = 0 + +/* + Overwriting of base procs +*/ +/datum/wound/blunt/wound_injury(datum/wound/old_wound = null) + // hook into gaining/losing gauze so crit bone wounds can re-enable/disable depending if they're slung or not + RegisterSignal(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED), .proc/update_inefficiencies) + + if(limb.body_zone == BODY_ZONE_HEAD && brain_trauma_group) + processes = TRUE + active_trauma = victim.gain_trauma_type(brain_trauma_group, TRAUMA_RESILIENCE_WOUND) + next_trauma_cycle = world.time + (rand(100-WOUND_BONE_HEAD_TIME_VARIANCE, 100+WOUND_BONE_HEAD_TIME_VARIANCE) * 0.01 * trauma_cycle_cooldown) + + RegisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK, .proc/attack_with_hurt_hand) + if(limb.held_index && victim.get_item_for_held_index(limb.held_index) && (disabling || prob(30 * severity))) + var/obj/item/I = victim.get_item_for_held_index(limb.held_index) + if(istype(I, /obj/item/twohanded/offhand)) + I = victim.get_inactive_held_item() + + if(I && victim.dropItemToGround(I)) + victim.visible_message(span_danger("[victim] drops [I] in shock!"), span_warning("The force on your [limb.name] causes you to drop [I]!"), vision_distance=COMBAT_MESSAGE_RANGE) + + update_inefficiencies() + +/datum/wound/blunt/remove_wound(ignore_limb, replaced) + limp_slowdown = 0 + QDEL_NULL(active_trauma) + if(limb) + UnregisterSignal(limb, list(COMSIG_BODYPART_GAUZED, COMSIG_BODYPART_GAUZE_DESTROYED)) + if(victim) + UnregisterSignal(victim, COMSIG_HUMAN_EARLY_UNARMED_ATTACK) + return ..() + +/datum/wound/blunt/handle_process() + . = ..() + if(limb.body_zone == BODY_ZONE_HEAD && brain_trauma_group && world.time > next_trauma_cycle) + if(active_trauma) + QDEL_NULL(active_trauma) + else + active_trauma = victim.gain_trauma_type(brain_trauma_group, TRAUMA_RESILIENCE_WOUND) + next_trauma_cycle = world.time + (rand(100-WOUND_BONE_HEAD_TIME_VARIANCE, 100+WOUND_BONE_HEAD_TIME_VARIANCE) * 0.01 * trauma_cycle_cooldown) + + if(!gelled) + return + + regen_ticks_current++ + if(!(victim.mobility_flags & MOBILITY_STAND)) + if(prob(50)) + regen_ticks_current += 0.5 + if(victim.IsSleeping() && prob(50)) + regen_ticks_current += 0.5 + + if(prob(severity * 3)) + victim.take_bodypart_damage(rand(1, severity * 2), stamina=rand(2, severity * 2.5), wound_bonus=CANT_WOUND) + if(prob(33)) + to_chat(victim, span_danger("You feel a sharp pain in your body as your bones are reforming!")) + + if(regen_ticks_current > regen_ticks_needed) + if(!victim || !limb) + qdel(src) + return + to_chat(victim, span_green("Your [limb.name] has recovered from your fracture!")) + remove_wound() + +/// If we're a human who's punching something with a broken arm, we might hurt ourselves doing so +/datum/wound/blunt/proc/attack_with_hurt_hand(mob/M, atom/target, proximity) + if(victim.get_active_hand() != limb || victim.a_intent == INTENT_HELP || !ismob(target) || severity <= WOUND_SEVERITY_MODERATE) + return + + // With a severe or critical wound, you have a 15% or 30% chance to proc pain on hit + if(prob((severity - 1) * 15)) + // And you have a 70% or 50% chance to actually land the blow, respectively + if(prob(70 - 20 * (severity - 1))) + to_chat(victim, span_userdanger("The fracture in your [limb.name] shoots with pain as you strike [target]!")) + limb.receive_damage(brute=rand(1,5)) + else + victim.visible_message(span_danger("[victim] weakly strikes [target] with [victim.p_their()] broken [limb.name], recoiling from pain!"), \ + span_userdanger("You fail to strike [target] as the fracture in your [limb.name] lights up in unbearable pain!"), vision_distance=COMBAT_MESSAGE_RANGE) + victim.emote("scream") + victim.Stun(0.5 SECONDS) + limb.receive_damage(brute=rand(3,7)) + return COMPONENT_NO_ATTACK_HAND + +/datum/wound/blunt/receive_damage(wounding_type, wounding_dmg, wound_bonus) + if(!victim || wounding_dmg < WOUND_MINIMUM_DAMAGE) + return + if(ishuman(victim)) + var/mob/living/carbon/human/human_victim = victim + if(NOBLOOD in human_victim.dna?.species.species_traits) + return + + if(victim.stat != DEAD && limb.body_zone == BODY_ZONE_CHEST && victim.blood_volume && prob(internal_bleeding_chance + wounding_dmg)) + var/blood_bled = rand(1, wounding_dmg * (severity == WOUND_SEVERITY_CRITICAL ? 2 : 1.5)) // 12 brute toolbox can cause up to 18/24 bleeding with a severe/critical chest wound + switch(blood_bled) + if(1 to 6) + victim.bleed(blood_bled, TRUE) + if(7 to 13) + victim.visible_message(span_smalldanger("[victim] coughs up a bit of blood from the blow to [victim.p_their()] chest."), span_danger("You cough up a bit of blood from the blow to your chest."), vision_distance=COMBAT_MESSAGE_RANGE) + victim.bleed(blood_bled, TRUE) + if(14 to 19) + victim.visible_message(span_smalldanger("[victim] spits out a string of blood from the blow to [victim.p_their()] chest!"), span_danger("You spit out a string of blood from the blow to your chest!"), vision_distance=COMBAT_MESSAGE_RANGE) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir) + victim.bleed(blood_bled) + if(20 to INFINITY) + victim.visible_message(span_danger("[victim] chokes up a spray of blood from the blow to [victim.p_their()] chest!"), span_danger("You choke up on a spray of blood from the blow to your chest!"), vision_distance=COMBAT_MESSAGE_RANGE) + victim.bleed(blood_bled) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir) + victim.add_splatter_floor(get_step(victim.loc, victim.dir)) + + +/datum/wound/blunt/get_examine_description(mob/user) + if(!limb.current_gauze && !gelled && !taped) + return ..() + + var/list/msg = list() + if(!limb.current_gauze) + msg += "[victim.p_their(TRUE)] [limb.name] [examine_desc]" + else + var/sling_condition = "" + // how much life we have left in these bandages + switch(limb.current_gauze.absorption_capacity) + if(0 to 1.25) + sling_condition = "just barely" + if(1.25 to 2.75) + sling_condition = "loosely" + if(2.75 to 4) + sling_condition = "mostly" + if(4 to INFINITY) + sling_condition = "tightly" + + msg += "[victim.p_their(TRUE)] [limb.name] is [sling_condition] fastened in a sling of [limb.current_gauze.name]" + + if(taped) + msg += ", and appears to be reforming itself under some surgical tape!" + else if(gelled) + msg += ", with fizzing flecks of blue bone gel sparking off the bone!" + else + msg += "!" + return "[msg.Join()]" + +/* + New common procs for /datum/wound/blunt/ +*/ + +/datum/wound/blunt/proc/update_inefficiencies() + if(limb.body_zone in list(BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)) + if(limb.current_gauze) + limp_slowdown = initial(limp_slowdown) * limb.current_gauze.splint_factor + else + limp_slowdown = initial(limp_slowdown) + victim.apply_status_effect(STATUS_EFFECT_LIMP) + else if(limb.body_zone in list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM)) + if(limb.current_gauze) + interaction_efficiency_penalty = 1 + ((interaction_efficiency_penalty - 1) * limb.current_gauze.splint_factor) + else + interaction_efficiency_penalty = interaction_efficiency_penalty + + if(initial(disabling)) + set_disabling(!limb.current_gauze) + + limb.update_wounds() + +/// Joint Dislocation (Moderate Blunt) + +/datum/wound/blunt/moderate + name = "Joint Dislocation" + desc = "Patient's bone has been unset from socket, causing pain and reduced motor function." + treat_text = "Recommended application of bonesetter to affected limb, though manual relocation by applying an aggressive grab to the patient and helpfully interacting with afflicted limb may suffice." + examine_desc = "is awkwardly jammed out of place" + occur_text = "jerks violently and becomes unseated" + severity = WOUND_SEVERITY_MODERATE + viable_zones = list(BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG) + interaction_efficiency_penalty = 1.5 + limp_slowdown = 3 + threshold_minimum = 35 + threshold_penalty = 15 + treatable_tool = TOOL_BONESET + wound_flags = (BONE_WOUND) + status_effect_type = /datum/status_effect/wound/blunt/moderate + scar_keyword = "bluntmoderate" + +/datum/wound/blunt/moderate/crush() + if(prob(33)) + victim.visible_message(span_danger("[victim]'s dislocated [limb.name] pops back into place!"), span_userdanger("Your dislocated [limb.name] pops back into place! Ow!")) + remove_wound() + +/datum/wound/blunt/moderate/try_handling(mob/living/carbon/human/user) + if(user.pulling != victim || user.zone_selected != limb.body_zone || user.a_intent == INTENT_GRAB) + return FALSE + + if(user.grab_state == GRAB_PASSIVE) + to_chat(user, span_warning("You must have [victim] in an aggressive grab to manipulate [victim.p_their()] [lowertext(name)]!")) + return TRUE + + if(user.grab_state >= GRAB_AGGRESSIVE) + user.visible_message(span_danger("[user] begins twisting and straining [victim]'s dislocated [limb.name]!"), span_notice("You begin twisting and straining [victim]'s dislocated [limb.name]..."), ignored_mobs=victim) + to_chat(victim, span_userdanger("[user] begins twisting and straining your dislocated [limb.name]!")) + if(user.a_intent == INTENT_HELP) + chiropractice(user) + else + malpractice(user) + return TRUE + +/// If someone is snapping our dislocated joint back into place by hand with an aggro grab and help intent +/datum/wound/blunt/moderate/proc/chiropractice(mob/living/carbon/human/user) + var/time = base_treat_time + + if(!do_after(user, time, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + + if(prob(65)) + user.visible_message(span_danger("[user] snaps [victim]'s dislocated [limb.name] back into place!"), span_notice("You snap [victim]'s dislocated [limb.name] back into place!"), ignored_mobs=victim) + to_chat(victim, span_userdanger("[user] snaps your dislocated [limb.name] back into place!")) + victim.emote("scream") + limb.receive_damage(brute=20, wound_bonus=CANT_WOUND) + qdel(src) + else + user.visible_message(span_danger("[user] wrenches [victim]'s dislocated [limb.name] around painfully!"), span_danger("You wrench [victim]'s dislocated [limb.name] around painfully!"), ignored_mobs=victim) + to_chat(victim, span_userdanger("[user] wrenches your dislocated [limb.name] around painfully!")) + limb.receive_damage(brute=10, wound_bonus=CANT_WOUND) + chiropractice(user) + +/// If someone is snapping our dislocated joint into a fracture by hand with an aggro grab and harm or disarm intent +/datum/wound/blunt/moderate/proc/malpractice(mob/living/carbon/human/user) + var/time = base_treat_time + + if(!do_after(user, time, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + + if(prob(65)) + user.visible_message(span_danger("[user] snaps [victim]'s dislocated [limb.name] with a sickening crack!"), span_danger("You snap [victim]'s dislocated [limb.name] with a sickening crack!"), ignored_mobs=victim) + to_chat(victim, span_userdanger("[user] snaps your dislocated [limb.name] with a sickening crack!")) + victim.emote("scream") + limb.receive_damage(brute=25, wound_bonus=30) + else + user.visible_message(span_danger("[user] wrenches [victim]'s dislocated [limb.name] around painfully!"), span_danger("You wrench [victim]'s dislocated [limb.name] around painfully!"), ignored_mobs=victim) + to_chat(victim, span_userdanger("[user] wrenches your dislocated [limb.name] around painfully!")) + limb.receive_damage(brute=10, wound_bonus=CANT_WOUND) + malpractice(user) + + +/datum/wound/blunt/moderate/treat(obj/item/I, mob/user) + if(victim == user) + victim.visible_message(span_danger("[user] begins resetting [victim.p_their()] [limb.name] with [I]."), span_warning("You begin resetting your [limb.name] with [I]...")) + else + user.visible_message(span_danger("[user] begins resetting [victim]'s [limb.name] with [I]."), span_notice("You begin resetting [victim]'s [limb.name] with [I]...")) + + if(!do_after(user, base_treat_time * (user == victim ? 1.5 : 1), target = victim, extra_checks=CALLBACK(src, .proc/still_exists))) + return + + if(victim == user) + limb.receive_damage(brute=15, wound_bonus=CANT_WOUND) + victim.visible_message(span_danger("[user] finishes resetting [victim.p_their()] [limb.name]!"), span_userdanger("You reset your [limb.name]!")) + else + limb.receive_damage(brute=10, wound_bonus=CANT_WOUND) + user.visible_message(span_danger("[user] finishes resetting [victim]'s [limb.name]!"), span_nicegreen("You finish resetting [victim]'s [limb.name]!"), victim) + to_chat(victim, span_userdanger("[user] resets your [limb.name]!")) + + victim.emote("scream") + qdel(src) + +/* + Severe (Hairline Fracture) +*/ + +/datum/wound/blunt/severe + name = "Hairline Fracture" + desc = "Patient's bone has suffered a crack in the foundation, causing serious pain and reduced limb functionality." + treat_text = "Recommended light surgical application of bone gel, though a sling of medical gauze will prevent worsening situation." + examine_desc = "appears grotesquely swollen, its attachment weakened" + occur_text = "sprays chips of bone and develops a nasty looking bruise" + + severity = WOUND_SEVERITY_SEVERE + interaction_efficiency_penalty = 2 + limp_slowdown = 6 + threshold_minimum = 60 + threshold_penalty = 30 + treatable_by = list(/obj/item/stack/medical/bone_gel) + status_effect_type = /datum/status_effect/wound/blunt/severe + scar_keyword = "bluntsevere" + brain_trauma_group = BRAIN_TRAUMA_MILD + trauma_cycle_cooldown = 1.5 MINUTES + internal_bleeding_chance = 40 + wound_flags = (BONE_WOUND | ACCEPTS_GAUZE | MANGLES_BONE) + regen_ticks_needed = 120 // ticks every 2 seconds, 240 seconds, so roughly 4 minutes default + +/// Compound Fracture (Critical Blunt) +/datum/wound/blunt/critical + name = "Compound Fracture" + desc = "Patient's bones have suffered multiple gruesome fractures, causing significant pain and near uselessness of limb." + treat_text = "Immediate binding of affected limb, followed by surgical intervention ASAP." + examine_desc = "is mangled and pulped, seemingly held together by tissue alone" + occur_text = "cracks apart, exposing broken bones to open air" + + severity = WOUND_SEVERITY_CRITICAL + interaction_efficiency_penalty = 4 + limp_slowdown = 9 + sound_effect = 'sound/effects/wounds/crack2.ogg' + threshold_minimum = 115 + threshold_penalty = 50 + disabling = TRUE + treatable_by = list(/obj/item/stack/medical/bone_gel) + status_effect_type = /datum/status_effect/wound/blunt/critical + scar_keyword = "bluntcritical" + brain_trauma_group = BRAIN_TRAUMA_SEVERE + trauma_cycle_cooldown = 2.5 MINUTES + internal_bleeding_chance = 60 + wound_flags = (BONE_WOUND | ACCEPTS_GAUZE | MANGLES_BONE) + regen_ticks_needed = 240 // ticks every 2 seconds, 480 seconds, so roughly 8 minutes default + +// doesn't make much sense for "a" bone to stick out of your head +/datum/wound/blunt/critical/apply_wound(obj/item/bodypart/L, silent, datum/wound/old_wound, smited) + if(L.body_zone == BODY_ZONE_HEAD) + occur_text = "splits open, exposing a bare, cracked skull through the flesh and blood" + examine_desc = "has an unsettling indent, with bits of skull poking out" + . = ..() + +/// if someone is using bone gel on our wound +/datum/wound/blunt/proc/gel(obj/item/stack/medical/bone_gel/I, mob/user) + if(gelled) + to_chat(user, span_warning("[user == victim ? "Your" : "[victim]'s"] [limb.name] is already coated with bone gel!")) + return + + user.visible_message(span_danger("[user] begins hastily applying [I] to [victim]'s' [limb.name]..."), span_warning("You begin hastily applying [I] to [user == victim ? "your" : "[victim]'s"] [limb.name], disregarding the warning label...")) + + if(!do_after(user, base_treat_time * 1.5 * (user == victim ? 1.5 : 1), target = victim, extra_checks=CALLBACK(src, .proc/still_exists))) + return + + I.use(1) + victim.emote("scream") + if(user != victim) + user.visible_message(span_notice("[user] finishes applying [I] to [victim]'s [limb.name], emitting a fizzing noise!"), span_notice("You finish applying [I] to [victim]'s [limb.name]!"), ignored_mobs=victim) + to_chat(victim, span_userdanger("[user] finishes applying [I] to your [limb.name], and you can feel the bones exploding with pain as they begin melting and reforming!")) + else + var/painkiller_bonus = 0 + if(victim.drunkenness > 10) + painkiller_bonus += 10 + if(victim.reagents?.has_reagent(/datum/reagent/medicine/morphine)) + painkiller_bonus += 20 + if(victim.reagents?.has_reagent(/datum/reagent/determination)) + painkiller_bonus += 10 + + if(prob(25 + (20 * (severity - 2)) - painkiller_bonus)) // 25%/45% chance to fail self-applying with severe and critical wounds, modded by painkillers + victim.visible_message(span_danger("[victim] fails to finish applying [I] to [victim.p_their()] [limb.name], passing out from the pain!"), span_notice("You black out from the pain of applying [I] to your [limb.name] before you can finish!")) + victim.AdjustUnconscious(5 SECONDS) + return + regen_ticks_needed *= 1.5 + victim.visible_message(span_notice("[victim] finishes applying [I] to [victim.p_their()] [limb.name], grimacing from the pain!"), span_notice("You finish applying [I] to your [limb.name], and your bones explode in pain!")) + + limb.receive_damage(25, stamina=100, wound_bonus=CANT_WOUND) + if(!gelled) + gelled = TRUE + taped = TRUE + processes = TRUE + +/// if someone is using surgical tape on our wound +/*datum/wound/blunt/proc/tape(obj/item/stack/sticky_tape/surgical/I, mob/user) + if(!gelled) + to_chat(user, span_warning("[user == victim ? "Your" : "[victim]'s"] [limb.name] must be coated with bone gel to perform this emergency operation!")) + return + if(taped) + to_chat(user, span_warning("[user == victim ? "Your" : "[victim]'s"] [limb.name] is already wrapped in [I.name] and reforming!")) + return + + user.visible_message(span_danger("[user] begins applying [I] to [victim]'s' [limb.name]..."), span_warning("You begin applying [I] to [user == victim ? "your" : "[victim]'s"] [limb.name]...")) + + if(!do_after(user, base_treat_time * (user == victim ? 1.5 : 1), target = victim, extra_checks=CALLBACK(src, .proc/still_exists))) + return + + if(victim == user) + regen_ticks_needed *= 1.5 + I.use(1) + if(user != victim) + user.visible_message(span_notice("[user] finishes applying [I] to [victim]'s [limb.name], emitting a fizzing noise!"), span_notice("You finish applying [I] to [victim]'s [limb.name]!"), ignored_mobs=victim) + to_chat(victim, span_green("[user] finishes applying [I] to your [limb.name], you immediately begin to feel your bones start to reform!")) + else + victim.visible_message(span_notice("[victim] finishes applying [I] to [victim.p_their()] [limb.name], !"), span_green("You finish applying [I] to your [limb.name], and you immediately begin to feel your bones start to reform!")) + + taped = TRUE + processes = TRUE*/ + +/datum/wound/blunt/treat(obj/item/I, mob/user) + if(istype(I, /obj/item/stack/medical/bone_gel)) + gel(I, user) + /*else if(istype(I, /obj/item/stack/sticky_tape/surgical)) + tape(I, user)*/ + +/datum/wound/blunt/get_scanner_description(mob/user) + . = ..() + + . += "
" + + if(!gelled) + . += "Alternative Treatment: Apply bone gel directly to injured limb. This is both excruciatingly painful and slow, and only recommended in dire circumstances.\n" + //else if(!taped) + //. += "Continue Alternative Treatment: Apply surgical tape directly to injured limb to begin bone regeneration. Note, this is both excruciatingly painful and slow.\n" + else + . += "Note: Bone regeneration in effect. Bone is round [(regen_ticks_current*100/regen_ticks_needed)]% regenerated.\n" + + if(limb.body_zone == BODY_ZONE_HEAD) + . += "Cranial Trauma Detected: Patient will suffer random bouts of [severity == WOUND_SEVERITY_SEVERE ? "mild" : "severe"] brain traumas until bone is repaired." + else if(limb.body_zone == BODY_ZONE_CHEST && victim.blood_volume) + . += "Ribcage Trauma Detected: Further trauma to chest is likely to worsen internal bleeding until bone is repaired." + . += "
" diff --git a/code/datums/wounds/burns.dm b/code/datums/wounds/burns.dm new file mode 100644 index 000000000000..44e039eb54ee --- /dev/null +++ b/code/datums/wounds/burns.dm @@ -0,0 +1,309 @@ + +/* + Burn wounds +*/ + +// TODO: well, a lot really, but specifically I want to add potential fusing of clothing/equipment on the affected area, and limb infections, though those may go in body part code +/datum/wound/burn + name = "Burn Wound" + a_or_from = "from" + wound_type = WOUND_BURN + processes = TRUE + sound_effect = 'sound/effects/wounds/sizzle1.ogg' + wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE) + + treatable_by = list(/obj/item/stack/medical/ointment, /obj/item/stack/medical/mesh) // sterilizer and alcohol will require reagent treatments, coming soon + + // Flesh damage vars + /// How much damage to our flesh we currently have. Once both this and infestation reach 0, the wound is considered healed + var/flesh_damage = 5 + /// Our current counter for how much flesh regeneration we have stacked from regenerative mesh/synthflesh/whatever, decrements each tick and lowers flesh_damage + var/flesh_healing = 0 + + // Infestation vars (only for severe and critical) + /// How quickly infection breeds on this burn if we don't have disinfectant + var/infestation_rate = 0 + /// Our current level of infection + var/infestation = 0 + /// Our current level of sanitization/anti-infection, from disinfectants/alcohol/UV lights. While positive, totally pauses and slowly reverses infestation effects each tick + var/sanitization = 0 + + /// Once we reach infestation beyond WOUND_INFESTATION_SEPSIS, we get this many warnings before the limb is completely paralyzed (you'd have to ignore a really bad burn for a really long time for this to happen) + var/strikes_to_lose_limb = 4 + + +/datum/wound/burn/handle_process() + . = ..() + if(strikes_to_lose_limb == 0) // we've already hit sepsis, nothing more to do + victim.adjustToxLoss(0.5) + if(prob(1)) + victim.visible_message(span_danger("The infection on the remnants of [victim]'s [limb.name] shift and bubble nauseatingly!"), span_warning("You can feel the infection on the remnants of your [limb.name] coursing through your veins!"), vision_distance = COMBAT_MESSAGE_RANGE) + return + + if(victim.reagents) + if(victim.reagents.has_reagent(/datum/reagent/consumable/honey)) + sanitization += 2 + if(victim.reagents.has_reagent(/datum/reagent/medicine/spaceacillin)) + sanitization += 0.9 + if(victim.reagents.has_reagent(/datum/reagent/space_cleaner/sterilizine/)) + sanitization += 0.9 + if(victim.reagents.has_reagent(/datum/reagent/medicine/mine_salve)) + sanitization += 0.3 + flesh_healing += 0.5 + + if(limb.current_gauze) + limb.seep_gauze(WOUND_BURN_SANITIZATION_RATE) + + if(flesh_healing > 0) // good bandages multiply the length of flesh healing + var/bandage_factor = (limb.current_gauze ? limb.current_gauze.splint_factor : 1) + flesh_damage = max(0, flesh_damage - 1) + flesh_healing = max(0, flesh_healing - bandage_factor) + + // if we have little/no infection, the limb doesn't have much burn damage, and our nutrition is good, heal some flesh + if(infestation <= WOUND_INFECTION_MODERATE && (limb.burn_dam < 5) && (victim.nutrition >= NUTRITION_LEVEL_FED)) + flesh_healing += 0.2 + + // here's the check to see if we're cleared up + if((flesh_damage <= 0) && (infestation <= WOUND_INFECTION_MODERATE)) + to_chat(victim, span_green("The burns on your [limb.name] have cleared up!")) + qdel(src) + return + + // sanitization is checked after the clearing check but before the actual ill-effects, because we freeze the effects of infection while we have sanitization + if(sanitization > 0) + var/bandage_factor = (limb.current_gauze ? limb.current_gauze.splint_factor : 1) + infestation = max(0, infestation - WOUND_BURN_SANITIZATION_RATE) + sanitization = max(0, sanitization - (WOUND_BURN_SANITIZATION_RATE * bandage_factor)) + return + + infestation += infestation_rate + + switch(infestation) + if(0 to WOUND_INFECTION_MODERATE) + if(WOUND_INFECTION_MODERATE to WOUND_INFECTION_SEVERE) + if(prob(30)) + victim.adjustToxLoss(0.2) + if(prob(6)) + to_chat(victim, span_warning("The blisters on your [limb.name] ooze a strange pus...")) + if(WOUND_INFECTION_SEVERE to WOUND_INFECTION_CRITICAL) + if(!disabling && prob(2)) + to_chat(victim, span_warning("Your [limb.name] completely locks up, as you struggle for control against the infection!")) + set_disabling(TRUE) + else if(disabling && prob(8)) + to_chat(victim, span_notice("You regain sensation in your [limb.name], but it's still in terrible shape!")) + set_disabling(FALSE) + else if(prob(20)) + victim.adjustToxLoss(0.5) + if(WOUND_INFECTION_CRITICAL to WOUND_INFECTION_SEPTIC) + if(!disabling && prob(3)) + to_chat(victim, span_warning("You suddenly lose all sensation of the festering infection in your [limb.name]!")) + set_disabling(TRUE) + else if(disabling && prob(3)) + to_chat(victim, span_notice("You can barely feel your [limb.name] again, and you have to strain to retain motor control!")) + set_disabling(FALSE) + else if(prob(1)) + to_chat(victim, span_warning("You contemplate life without your [limb.name]...")) + victim.adjustToxLoss(0.75) + else if(prob(4)) + victim.adjustToxLoss(1) + if(WOUND_INFECTION_SEPTIC to INFINITY) + if(prob(0.5 * infestation)) + strikes_to_lose_limb-- + switch(strikes_to_lose_limb) + if(3 to INFINITY) + to_chat(victim, span_deadsay("The skin on your [limb.name] is literally dripping off, you feel awful!")) + if(2) + to_chat(victim, span_deadsay("The infection in your [limb.name] is literally dripping off, you feel horrible!")) + if(1) + to_chat(victim, span_deadsay("Infection has just about completely claimed your [limb.name]!")) + if(0) + to_chat(victim, span_deadsay("The last of the nerve endings in your [limb.name] wither away, as the infection completely paralyzes your joint connector.")) + threshold_penalty = 120 // piss easy to destroy + var/datum/brain_trauma/severe/paralysis/sepsis = new (limb.body_zone) + victim.gain_trauma(sepsis) + +/datum/wound/burn/get_examine_description(mob/user) + if(strikes_to_lose_limb <= 0) + return span_deadsay("[victim.p_their(TRUE)] [limb.name] has locked up completely and is non-functional.") + + var/list/condition = list("[victim.p_their(TRUE)] [limb.name] [examine_desc]") + if(limb.current_gauze) + var/bandage_condition + switch(limb.current_gauze.absorption_capacity) + if(0 to 1.25) + bandage_condition = "nearly ruined" + if(1.25 to 2.75) + bandage_condition = "badly worn" + if(2.75 to 4) + bandage_condition = "slightly pus-stained" + if(4 to INFINITY) + bandage_condition = "clean" + + condition += " underneath a dressing of [bandage_condition] [limb.current_gauze.name]" + else + switch(infestation) + if(WOUND_INFECTION_MODERATE to WOUND_INFECTION_SEVERE) + condition += ", with early signs of infection." + if(WOUND_INFECTION_SEVERE to WOUND_INFECTION_CRITICAL) + condition += ", with growing clouds of infection." + if(WOUND_INFECTION_CRITICAL to WOUND_INFECTION_SEPTIC) + condition += ", with streaks of rotten, pulsating infection!" + if(WOUND_INFECTION_SEPTIC to INFINITY) + return span_deadsay("[victim.p_their(TRUE)] [limb.name] is a mess of charred skin and infected rot!") + else + condition += "!" + + return "[condition.Join()]" + +/datum/wound/burn/get_scanner_description(mob/user) + if(strikes_to_lose_limb == 0) + var/oopsie = "Type: [name]\nSeverity: [severity_text()]" + oopsie += "
Infection Level: The bodypart has suffered complete sepsis and must be removed. Amputate or augment limb immediately.
" + return oopsie + + . = ..() + . += "
" + + if(infestation <= sanitization && flesh_damage <= flesh_healing) + . += "No further treatment required: Burns will heal shortly." + else + switch(infestation) + if(WOUND_INFECTION_MODERATE to WOUND_INFECTION_SEVERE) + . += "Infection Level: Moderate\n" + if(WOUND_INFECTION_SEVERE to WOUND_INFECTION_CRITICAL) + . += "Infection Level: Severe\n" + if(WOUND_INFECTION_CRITICAL to WOUND_INFECTION_SEPTIC) + . += "Infection Level: CRITICAL\n" + if(WOUND_INFECTION_SEPTIC to INFINITY) + . += "Infection Level: LOSS IMMINENT\n" + if(infestation > sanitization) + . += "\tSurgical debridement, antiobiotics/sterilizers, or regenerative mesh will rid infection. Paramedic UV penlights are also effective.\n" + + if(flesh_damage > 0) + . += "Flesh damage detected: Application of ointment, regenerative mesh, Synthflesh, or ingestion of \"Miner's Salve\" will repair damaged flesh. Good nutrition, rest, and keeping the wound clean can also slowly repair flesh.\n" + . += "
" + +/* + new burn common procs +*/ + +/// if someone is using ointment on our burns +/datum/wound/burn/proc/ointment(obj/item/stack/medical/ointment/I, mob/user) + user.visible_message(span_notice("[user] begins applying [I] to [victim]'s [limb.name]..."), span_notice("You begin applying [I] to [user == victim ? "your" : "[victim]'s"] [limb.name]...")) + if(!do_after(user, (user == victim ? I.self_delay : I.other_delay), extra_checks = CALLBACK(src, .proc/still_exists))) + return + + limb.heal_damage(I.heal_brute, I.heal_burn) + user.visible_message(span_green("[user] applies [I] to [victim]."), span_green("You apply [I] to [user == victim ? "your" : "[victim]'s"] [limb.name].")) + I.use(1) + sanitization += I.sanitization + flesh_healing += I.flesh_regeneration + + if((infestation <= 0 || sanitization >= infestation) && (flesh_damage <= 0 || flesh_healing > flesh_damage)) + to_chat(user, span_notice("You've done all you can with [I], now you must wait for the flesh on [victim]'s [limb.name] to recover.")) + else + try_treating(I, user) + +/// if someone is using mesh on our burns +/datum/wound/burn/proc/mesh(obj/item/stack/medical/mesh/I, mob/user) + if(!I.is_open) + to_chat(user, span_warning("You need to open [I] first.")) + return + user.visible_message(span_notice("[user] begins wrapping [victim]'s [limb.name] with [I]..."), span_notice("You begin wrapping [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...")) + if(!do_after(user, (user == victim ? I.self_delay : I.other_delay), target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + + limb.heal_damage(I.heal_brute, I.heal_burn) + user.visible_message(span_green("[user] applies [I] to [victim]."), span_green("You apply [I] to [user == victim ? "your" : "[victim]'s"] [limb.name].")) + I.use(1) + sanitization += I.sanitization + flesh_healing += I.flesh_regeneration + + if(sanitization >= infestation && flesh_healing > flesh_damage) + to_chat(user, span_notice("You've done all you can with [I], now you must wait for the flesh on [victim]'s [limb.name] to recover.")) + else + try_treating(I, user) + +/// Paramedic UV penlights +/datum/wound/burn/proc/uv(obj/item/flashlight/pen/paramedic/I, mob/user) + if(!COOLDOWN_FINISHED(I, uv_cooldown)) + to_chat(user, span_notice("[I] is still recharging!")) + return + if(infestation <= 0 || infestation < sanitization) + to_chat(user, span_notice("There's no infection to treat on [victim]'s [limb.name]!")) + return + + user.visible_message(span_notice("[user] flashes the burns on [victim]'s [limb] with [I]."), span_notice("You flash the burns on [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]."), vision_distance=COMBAT_MESSAGE_RANGE) + sanitization += I.uv_power + COOLDOWN_START(I, uv_cooldown, I.uv_cooldown_length) + +/datum/wound/burn/treat(obj/item/I, mob/user) + if(istype(I, /obj/item/stack/medical/ointment)) + ointment(I, user) + else if(istype(I, /obj/item/stack/medical/mesh)) + mesh(I, user) + else if(istype(I, /obj/item/flashlight/pen/paramedic)) + uv(I, user) + +// people complained about burns not healing on stasis beds, so in addition to checking if it's cured, they also get the special ability to very slowly heal on stasis beds if they have the healing effects stored +/datum/wound/burn/on_stasis() + . = ..() + if(flesh_healing > 0) + flesh_damage = max(0, flesh_damage - 0.2) + if((flesh_damage <= 0) && (infestation <= 1)) + to_chat(victim, span_green("The burns on your [limb.name] have cleared up!")) + qdel(src) + return + if(sanitization > 0) + infestation = max(0, infestation - WOUND_BURN_SANITIZATION_RATE * 0.2) + +/datum/wound/burn/on_synthflesh(amount) + flesh_healing += amount * 0.5 // 20u patch will heal 10 flesh standard + +// we don't even care about first degree burns, straight to second +/datum/wound/burn/moderate + name = "Second Degree Burns" + desc = "Patient is suffering considerable burns with mild skin penetration, weakening limb integrity and increased burning sensations." + treat_text = "Recommended application of topical ointment or regenerative mesh to affected region." + examine_desc = "is badly burned and breaking out in blisters" + occur_text = "breaks out with violent red burns" + severity = WOUND_SEVERITY_MODERATE + damage_mulitplier_penalty = 1.1 + threshold_minimum = 40 + threshold_penalty = 30 // burns cause significant decrease in limb integrity compared to other wounds + status_effect_type = /datum/status_effect/wound/burn/moderate + flesh_damage = 5 + scar_keyword = "burnmoderate" + +/datum/wound/burn/severe + name = "Third Degree Burns" + desc = "Patient is suffering extreme burns with full skin penetration, creating serious risk of infection and greatly reduced limb integrity." + treat_text = "Recommended immediate disinfection and excision of any infected skin, followed by bandaging and ointment." + examine_desc = "appears seriously charred, with aggressive red splotches" + occur_text = "chars rapidly, exposing ruined tissue and spreading angry red burns" + severity = WOUND_SEVERITY_SEVERE + damage_mulitplier_penalty = 1.2 + threshold_minimum = 80 + threshold_penalty = 40 + status_effect_type = /datum/status_effect/wound/burn/severe + treatable_by = list(/obj/item/flashlight/pen/paramedic, /obj/item/stack/medical/ointment, /obj/item/stack/medical/mesh) + infestation_rate = 0.07 // appx 9 minutes to reach sepsis without any treatment + flesh_damage = 12.5 + scar_keyword = "burnsevere" + +/datum/wound/burn/critical + name = "Catastrophic Burns" + desc = "Patient is suffering near complete loss of tissue and significantly charred muscle and bone, creating life-threatening risk of infection and negligible limb integrity." + treat_text = "Immediate surgical debriding of any infected skin, followed by potent tissue regeneration formula and bandaging." + examine_desc = "is a ruined mess of blanched bone, melted fat, and charred tissue" + occur_text = "vaporizes as flesh, bone, and fat melt together in a horrifying mess" + severity = WOUND_SEVERITY_CRITICAL + damage_mulitplier_penalty = 1.3 + sound_effect = 'sound/effects/wounds/sizzle2.ogg' + threshold_minimum = 140 + threshold_penalty = 80 + status_effect_type = /datum/status_effect/wound/burn/critical + treatable_by = list(/obj/item/flashlight/pen/paramedic, /obj/item/stack/medical/ointment, /obj/item/stack/medical/mesh) + infestation_rate = 0.15 // appx 4.33 minutes to reach sepsis without any treatment + flesh_damage = 20 + scar_keyword = "burncritical" diff --git a/code/datums/wounds/loss.dm b/code/datums/wounds/loss.dm new file mode 100644 index 000000000000..e037183157b9 --- /dev/null +++ b/code/datums/wounds/loss.dm @@ -0,0 +1,53 @@ + +/datum/wound/loss + name = "Dismemberment Wound" + desc = "oof ouch!!" + + sound_effect = 'sound/effects/dismember.ogg' + severity = WOUND_SEVERITY_LOSS + threshold_minimum = WOUND_DISMEMBER_OUTRIGHT_THRESH // not actually used since dismembering is handled differently, but may as well assign it since we got it + status_effect_type = null + scar_keyword = "dismember" + wound_flags = null + already_scarred = TRUE // We manually assign scars for dismembers through endround missing limbs and aheals + +/// Our special proc for our special dismembering, the wounding type only matters for what text we have +/datum/wound/loss/proc/apply_dismember(obj/item/bodypart/dismembered_part, wounding_type=WOUND_SLASH, outright = FALSE) + if(!istype(dismembered_part) || !dismembered_part.owner || !(dismembered_part.body_zone in viable_zones) || isalien(dismembered_part.owner) || !dismembered_part.can_dismember()) + qdel(src) + return + + if(dismembered_part.body_zone == BODY_ZONE_CHEST) + occur_text = "is split open, causing [victim.p_their()] internals organs to spill out!" + else if(outright) + switch(wounding_type) + if(WOUND_BLUNT) + occur_text = "is outright smashed to a gross pulp, severing it completely!" + if(WOUND_SLASH) + occur_text = "is outright slashed off, severing it completely!" + if(WOUND_PIERCE) + occur_text = "is outright blasted apart, severing it completely!" + if(WOUND_BURN) + occur_text = "is outright incinerated, falling to dust!" + else + switch(wounding_type) + if(WOUND_BLUNT) + occur_text = "is shattered through the last bone holding it together, severing it completely!" + if(WOUND_SLASH) + occur_text = "is slashed through the last tissue holding it together, severing it completely!" + if(WOUND_PIERCE) + occur_text = "is pierced through the last tissue holding it together, severing it completely!" + if(WOUND_BURN) + occur_text = "is completely incinerated, falling to dust!" + victim = dismembered_part.owner + + var/msg = span_bolddanger("[victim]'s [dismembered_part.name] [occur_text]!") + + victim.visible_message(msg, span_userdanger("Your [dismembered_part.name] [occur_text]!")) + + set_limb(dismembered_part) + second_wind() + log_wound(victim, src) + dismembered_part.dismember(wounding_type == WOUND_BURN ? BURN : BRUTE) + qdel(src) + return TRUE diff --git a/code/datums/wounds/pierce.dm b/code/datums/wounds/pierce.dm new file mode 100644 index 000000000000..850cb4e3c5d7 --- /dev/null +++ b/code/datums/wounds/pierce.dm @@ -0,0 +1,186 @@ + +/* + Piercing wounds +*/ + +/datum/wound/pierce + name = "Piercing Wound" + sound_effect = 'sound/weapons/slice.ogg' + processes = TRUE + wound_type = WOUND_PIERCE + treatable_by = list(/obj/item/stack/medical/suture) + treatable_tool = TOOL_CAUTERY + base_treat_time = 3 SECONDS + wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE) + + /// How much blood we start losing when this wound is first applied + var/initial_flow + /// If gauzed, what percent of the internal bleeding actually clots of the total absorption rate + var/gauzed_clot_rate + + /// When hit on this bodypart, we have this chance of losing some blood + the incoming damage + var/internal_bleeding_chance + /// If we let off blood when hit, the max blood lost is this * the incoming damage + var/internal_bleeding_coefficient + +/datum/wound/pierce/wound_injury(datum/wound/old_wound) + blood_flow = initial_flow + +/datum/wound/pierce/receive_damage(wounding_type, wounding_dmg, wound_bonus) + if(victim.stat == DEAD || wounding_dmg < 5) + return + if(victim.blood_volume && prob(internal_bleeding_chance + wounding_dmg)) + if(limb.current_gauze && limb.current_gauze.splint_factor) + wounding_dmg *= (1 - limb.current_gauze.splint_factor) + var/blood_bled = rand(1, wounding_dmg * internal_bleeding_coefficient) // 12 brute toolbox can cause up to 15/18/21 bloodloss on mod/sev/crit + switch(blood_bled) + if(1 to 6) + victim.bleed(blood_bled, TRUE) + if(7 to 13) + victim.visible_message(span_smalldanger("Blood droplets fly from the hole in [victim]'s [limb.name]."), span_danger("You cough up a bit of blood from the blow to your [limb.name]."), vision_distance=COMBAT_MESSAGE_RANGE) + victim.bleed(blood_bled, TRUE) + if(14 to 19) + victim.visible_message(span_smalldanger("A small stream of blood spurts from the hole in [victim]'s [limb.name]!"), span_danger("You spit out a string of blood from the blow to your [limb.name]!"), vision_distance=COMBAT_MESSAGE_RANGE) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir) + victim.bleed(blood_bled) + if(20 to INFINITY) + victim.visible_message(span_danger("A spray of blood streams from the gash in [victim]'s [limb.name]!"), span_danger("You choke up on a spray of blood from the blow to your [limb.name]!"), vision_distance=COMBAT_MESSAGE_RANGE) + victim.bleed(blood_bled) + new /obj/effect/temp_visual/dir_setting/bloodsplatter(victim.loc, victim.dir) + victim.add_splatter_floor(get_step(victim.loc, victim.dir)) + +/datum/wound/pierce/get_bleed_rate_of_change() + if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) + return BLOOD_FLOW_INCREASING + if(limb.current_gauze) + return BLOOD_FLOW_DECREASING + return BLOOD_FLOW_STEADY + +/datum/wound/pierce/handle_process() + blood_flow = min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW) + + if(victim.bodytemperature < (BODYTEMP_NORMAL - 10)) + blood_flow -= 0.2 + if(prob(5)) + to_chat(victim, span_notice("You feel the [lowertext(name)] in your [limb.name] firming up from the cold!")) + + if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) + blood_flow += 0.5 // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first + + if(limb.current_gauze) + blood_flow -= limb.current_gauze.absorption_rate * gauzed_clot_rate + limb.current_gauze.absorption_capacity -= limb.current_gauze.absorption_rate + + if(blood_flow <= 0) + qdel(src) + +/datum/wound/pierce/on_stasis() + . = ..() + if(blood_flow <= 0) + qdel(src) + +/datum/wound/pierce/check_grab_treatments(obj/item/I, mob/user) + if(I.get_temperature()) // if we're using something hot but not a cautery, we need to be aggro grabbing them first, so we don't try treating someone we're eswording + return TRUE + +/datum/wound/pierce/treat(obj/item/I, mob/user) + if(istype(I, /obj/item/stack/medical/suture)) + suture(I, user) + else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature() > 300) + tool_cauterize(I, user) + +/datum/wound/pierce/on_xadone(power) + . = ..() + blood_flow -= 0.03 * power // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort + +/datum/wound/pierce/on_synthflesh(power) + . = ..() + blood_flow -= 0.05 * power // 20u * 0.05 = -1 blood flow, less than with slashes but still good considering smaller bleed rates + +/// If someone is using a suture to close this puncture +/datum/wound/pierce/proc/suture(obj/item/stack/medical/suture/I, mob/user) + var/self_penalty_mult = (user == victim ? 1.4 : 1) + user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.name] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...")) + if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + user.visible_message(span_green("[user] stitches up some of the bleeding on [victim]."), span_green("You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"].")) + var/blood_sutured = I.stop_bleeding / self_penalty_mult + blood_flow -= blood_sutured + limb.heal_damage(I.heal_brute, I.heal_burn) + I.use(1) + + if(blood_flow > 0) + try_treating(I, user) + else + to_chat(user, span_green("You successfully close the hole in [user == victim ? "your" : "[victim]'s"] [limb.name].")) + +/// If someone is using either a cautery tool or something with heat to cauterize this pierce +/datum/wound/pierce/proc/tool_cauterize(obj/item/I, mob/user) + var/improv_penalty_mult = (I.tool_behaviour == TOOL_CAUTERY ? 1 : 1.25) // 25% longer and less effective if you don't use a real cautery + var/self_penalty_mult = (user == victim ? 1.5 : 1) // 50% longer and less effective if you do it to yourself + + user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.name] with [I]..."), span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...")) + if(!do_after(user, base_treat_time * self_penalty_mult * improv_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + + user.visible_message(span_green("[user] cauterizes some of the bleeding on [victim]."), span_green("You cauterize some of the bleeding on [victim].")) + limb.receive_damage(burn = 2 + severity, wound_bonus = CANT_WOUND) + if(prob(30)) + victim.emote("scream") + var/blood_cauterized = (0.6 / (self_penalty_mult * improv_penalty_mult)) + blood_flow -= blood_cauterized + + if(blood_flow > 0) + try_treating(I, user) + +/datum/wound/pierce/moderate + name = "Minor Breakage" + desc = "Patient's skin has been broken open, causing severe bruising and minor internal bleeding in affected area." + treat_text = "Treat affected site with bandaging or exposure to extreme cold. In dire cases, brief exposure to vacuum may suffice." // space is cold in ss13, so it's like an ice pack! + examine_desc = "has a small, circular hole, gently bleeding" + occur_text = "spurts out a thin stream of blood" + sound_effect = 'sound/effects/wounds/pierce1.ogg' + severity = WOUND_SEVERITY_MODERATE + initial_flow = 1.5 + gauzed_clot_rate = 0.8 + internal_bleeding_chance = 30 + internal_bleeding_coefficient = 1.25 + threshold_minimum = 30 + threshold_penalty = 2 + status_effect_type = /datum/status_effect/wound/pierce/moderate + scar_keyword = "piercemoderate" + +/datum/wound/pierce/severe + name = "Open Puncture" + desc = "Patient's internal tissue is penetrated, causing sizeable internal bleeding and reduced limb stability." + treat_text = "Repair punctures in skin by suture or cautery, extreme cold may also work." + examine_desc = "is pierced clear through, with bits of tissue obscuring the open hole" + occur_text = "looses a violent spray of blood, revealing a pierced wound" + sound_effect = 'sound/effects/wounds/pierce2.ogg' + severity = WOUND_SEVERITY_SEVERE + initial_flow = 2.25 + gauzed_clot_rate = 0.6 + internal_bleeding_chance = 60 + internal_bleeding_coefficient = 1.5 + threshold_minimum = 50 + threshold_penalty = 35 + status_effect_type = /datum/status_effect/wound/pierce/severe + scar_keyword = "piercesevere" + +/datum/wound/pierce/critical + name = "Ruptured Cavity" + desc = "Patient's internal tissue and circulatory system is shredded, causing significant internal bleeding and damage to internal organs." + treat_text = "Surgical repair of puncture wound, followed by supervised resanguination." + examine_desc = "is ripped clear through, barely held together by exposed bone" + occur_text = "blasts apart, sending chunks of viscera flying in all directions" + sound_effect = 'sound/effects/wounds/pierce3.ogg' + severity = WOUND_SEVERITY_CRITICAL + initial_flow = 3 + gauzed_clot_rate = 0.4 + internal_bleeding_chance = 80 + internal_bleeding_coefficient = 1.75 + threshold_minimum = 100 + threshold_penalty = 50 + status_effect_type = /datum/status_effect/wound/pierce/critical + scar_keyword = "piercecritical" + wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE | MANGLES_FLESH) diff --git a/code/datums/wounds/scars/_scars.dm b/code/datums/wounds/scars/_scars.dm new file mode 100644 index 000000000000..21cb09b201d7 --- /dev/null +++ b/code/datums/wounds/scars/_scars.dm @@ -0,0 +1,163 @@ +/** + * scars are cosmetic datums that are assigned to bodyparts once they recover from wounds. Each wound type and severity have their own descriptions for what the scars + * look like, and then each body part has a list of "specific locations" like your elbow or wrist or wherever the scar can appear, to make it more interesting than "right arm" + * + * + * Arguments: + * * + */ +/datum/scar + var/obj/item/bodypart/limb + var/mob/living/carbon/victim + /// The severity of the scar, derived from the worst severity a wound was at before it was healed (see: slashes), determines how visible/bold the scar description is + var/severity + /// The description of the scar for examining + var/description + /// A string detailing the specific part of the bodypart the scar is on, for fluff purposes. See [/datum/scar/proc/generate] + var/precise_location + + /// These scars are assumed to come from changeling disguises, rather than from persistence or wounds. As such, they are deleted by dropping changeling disguises, and are ignored by persistence + var/fake=FALSE + + /// How many tiles away someone can see this scar, goes up with severity. Clothes covering this limb will decrease visibility by 1 each, except for the head/face which is a binary "is mask obscuring face" check + var/visibility = 2 + /// Whether this scar can actually be covered up by clothing + var/coverable = TRUE + /// Obviously, scars that describe damaged flesh wouldn't apply to a skeleton (in some cases like bone wounds, there can be different descriptions for skeletons and fleshy humanoids) + var/biology = BIO_FLESH_BONE + /// If we're a persistent scar or may become one, we go in this character slot + var/persistent_character_slot = 0 + +/datum/scar/Destroy(force, ...) + if(limb) + LAZYREMOVE(limb.scars, src) + if(victim) + LAZYREMOVE(victim.all_scars, src) + . = ..() + +/** + * generate() is used to actually fill out the info for a scar, according to the limb and wound it is provided. + * + * After creating a scar, call this on it while targeting the scarred bodypart with a given wound to apply the scar. + * + * Arguments: + * * BP- The bodypart being targeted + * * W- The wound being used to generate the severity and description info + * * add_to_scars- Should always be TRUE unless you're just storing a scar for later usage, like how cuts want to store a scar for the highest severity of cut, rather than the severity when the wound is fully healed (probably demoted to moderate) + */ +/datum/scar/proc/generate(obj/item/bodypart/BP, datum/wound/W, add_to_scars=TRUE) + limb = BP + severity = W.severity + if(limb.owner) + victim = limb.owner + persistent_character_slot = victim.mind?.original_character_slot_index + if(add_to_scars) + LAZYADD(limb.scars, src) + if(victim) + LAZYADD(victim.all_scars, src) + + biology = victim?.get_biological_state() || BIO_FLESH_BONE + + if(biology == BIO_JUST_BONE) + description = pick_list(BONE_SCAR_FILE, W.scar_keyword) || "general disfigurement" + else // no specific support for flesh w/o bone scars since it's not really useful + description = pick_list(FLESH_SCAR_FILE, W.scar_keyword) || "general disfigurement" + + precise_location = pick_list_replacements(SCAR_LOC_FILE, limb.body_zone) + switch(W.severity) + if(WOUND_SEVERITY_MODERATE) + visibility = 2 + if(WOUND_SEVERITY_SEVERE) + visibility = 3 + if(WOUND_SEVERITY_CRITICAL) + visibility = 5 + if(WOUND_SEVERITY_LOSS) + visibility = 7 + precise_location = "amputation" + +/// Used when we finalize a scar from a healing cut +/datum/scar/proc/lazy_attach(obj/item/bodypart/BP, datum/wound/W) + LAZYADD(BP.scars, src) + if(BP.owner) + victim = BP.owner + LAZYADD(victim.all_scars, src) + +/// Used to "load" a persistent scar +/datum/scar/proc/load(obj/item/bodypart/BP, version, description, specific_location, severity=WOUND_SEVERITY_SEVERE, biology=BIO_FLESH_BONE, char_slot) + if(!BP.is_organic_limb()) + qdel(src) + return + + limb = BP + if(limb.owner) + victim = limb.owner + if(victim.get_biological_state() != biology) + qdel(src) + return + LAZYADD(victim.all_scars, src) + + src.severity = severity + src.biology = biology + persistent_character_slot = char_slot + LAZYADD(limb.scars, src) + + src.description = description + precise_location = specific_location + switch(severity) + if(WOUND_SEVERITY_MODERATE) + visibility = 2 + if(WOUND_SEVERITY_SEVERE) + visibility = 3 + if(WOUND_SEVERITY_CRITICAL) + visibility = 5 + if(WOUND_SEVERITY_LOSS) + visibility = 7 + return src + +/// What will show up in examine_more() if this scar is visible +/datum/scar/proc/get_examine_description(mob/viewer) + if(!victim || !is_visible(viewer)) + return + + var/msg = "[victim.p_they(TRUE)] [victim.p_have()] [description] on [victim.p_their()] [precise_location]." + switch(severity) + if(WOUND_SEVERITY_MODERATE) + msg = span_tinynoticeital("[msg]") + if(WOUND_SEVERITY_SEVERE) + msg = span_smallnoticeital("[msg]") + if(WOUND_SEVERITY_CRITICAL) + msg = span_smallnoticeital("[msg]") + if(WOUND_SEVERITY_LOSS) + msg = "[victim.p_their(TRUE)] [limb.name] [description]." // different format + msg = span_notice("[msg]") + return "\t[msg]" + +/// Whether a scar can currently be seen by the viewer +/datum/scar/proc/is_visible(mob/viewer) + if(!victim || !viewer) + return + if(get_dist(viewer, victim) > visibility) + return + + if(!ishuman(victim) || isobserver(viewer) || victim == viewer) + return TRUE + + var/mob/living/carbon/human/human_victim = victim + if(istype(limb, /obj/item/bodypart/head)) + if((human_victim.wear_mask && (human_victim.wear_mask.flags_inv & HIDEFACE)) || (human_victim.head && (human_victim.head.flags_inv & HIDEFACE))) + return FALSE + else if(limb.scars_covered_by_clothes) + var/num_covers = LAZYLEN(human_victim.clothingonpart(limb)) + if(num_covers + get_dist(viewer, victim) >= visibility) + return FALSE + + return TRUE + +/// Used to format a scar to save for either persistent scars, or for changeling disguises +/datum/scar/proc/format() + return fake ? null : "[SCAR_CURRENT_VERSION]|[limb.body_zone]|[description]|[precise_location]|[severity]|[biology]|[persistent_character_slot]" + +/// Used to format a scar to save in preferences for persistent scars +/datum/scar/proc/format_amputated(body_zone) + description = pick_list(FLESH_SCAR_FILE, "dismemberment") + return "[SCAR_CURRENT_VERSION]|[body_zone]|[description]|amputated|[WOUND_SEVERITY_LOSS]|[BIO_FLESH_BONE]|[persistent_character_slot]" diff --git a/code/datums/wounds/slash.dm b/code/datums/wounds/slash.dm new file mode 100644 index 000000000000..253efffca442 --- /dev/null +++ b/code/datums/wounds/slash.dm @@ -0,0 +1,299 @@ + +/* + Slashing wounds +*/ + +/datum/wound/slash + name = "Slashing (Cut) Wound" + sound_effect = 'sound/weapons/slice.ogg' + processes = TRUE + wound_type = WOUND_SLASH + treatable_by = list(/obj/item/stack/medical/suture) + treatable_by_grabbed = list(/obj/item/gun/energy/laser) + treatable_tool = TOOL_CAUTERY + base_treat_time = 3 SECONDS + wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE) + + /// How much blood we start losing when this wound is first applied + var/initial_flow + /// When we have less than this amount of flow, either from treatment or clotting, we demote to a lower cut or are healed of the wound + var/minimum_flow + /// How much our blood_flow will naturally decrease per tick, not only do larger cuts bleed more blood faster, they clot slower (higher number = clot quicker, negative = opening up) + var/clot_rate + + /// Once the blood flow drops below minimum_flow, we demote it to this type of wound. If there's none, we're all better + var/demotes_to + + /// The maximum flow we've had so far + var/highest_flow + + /// A bad system I'm using to track the worst scar we earned (since we can demote, we want the biggest our wound has been, not what it was when it was cured (probably moderate)) + var/datum/scar/highest_scar + +/datum/wound/slash/wound_injury(datum/wound/slash/old_wound = null) + blood_flow = initial_flow + if(old_wound) + blood_flow = max(old_wound.blood_flow, initial_flow) + if(old_wound.severity > severity && old_wound.highest_scar) + highest_scar = old_wound.highest_scar + old_wound.highest_scar = null + + if(!highest_scar) + highest_scar = new + highest_scar.generate(limb, src, add_to_scars=FALSE) + +/datum/wound/slash/remove_wound(ignore_limb, replaced) + if(!replaced && highest_scar) + already_scarred = TRUE + highest_scar.lazy_attach(limb) + return ..() + +/datum/wound/slash/get_examine_description(mob/user) + if(!limb.current_gauze) + return ..() + + var/list/msg = list("The cuts on [victim.p_their()] [limb.name] are wrapped with ") + // how much life we have left in these bandages + switch(limb.current_gauze.absorption_capacity) + if(0 to 1.25) + msg += "nearly ruined " + if(1.25 to 2.75) + msg += "badly worn " + if(2.75 to 4) + msg += "slightly bloodied " + if(4 to INFINITY) + msg += "clean " + msg += "[limb.current_gauze.name]!" + + return "[msg.Join()]" + +/datum/wound/slash/receive_damage(wounding_type, wounding_dmg, wound_bonus) + if(victim.stat != DEAD && wounding_type == WOUND_SLASH) // can't stab dead bodies to make it bleed faster this way + blood_flow += 0.05 * wounding_dmg + +/datum/wound/slash/drag_bleed_amount() + // say we have 3 severe cuts with 3 blood flow each, pretty reasonable + // compare with being at 100 brute damage before, where you bled (brute/100 * 2), = 2 blood per tile + var/bleed_amt = min(blood_flow * 0.1, 1) // 3 * 3 * 0.1 = 0.9 blood total, less than before! the share here is .3 blood of course. + + if(limb.current_gauze) // gauze stops all bleeding from dragging on this limb, but wears the gauze out quicker + limb.seep_gauze(bleed_amt * 0.33) + return + + return bleed_amt + +/datum/wound/slash/get_bleed_rate_of_change() + if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) + return BLOOD_FLOW_INCREASING + if(limb.current_gauze || clot_rate > 0) + return BLOOD_FLOW_DECREASING + if(clot_rate < 0) + return BLOOD_FLOW_INCREASING + +/datum/wound/slash/handle_process() + if(victim.stat == DEAD) + blood_flow -= max(clot_rate, WOUND_SLASH_DEAD_CLOT_MIN) + if(blood_flow < minimum_flow) + if(demotes_to) + replace_wound(demotes_to) + return + qdel(src) + return + + blood_flow = min(blood_flow, WOUND_SLASH_MAX_BLOODFLOW) + + if(HAS_TRAIT(victim, TRAIT_BLOODY_MESS)) + blood_flow += 0.5 // old heparin used to just add +2 bleed stacks per tick, this adds 0.5 bleed flow to all open cuts which is probably even stronger as long as you can cut them first + if(limb.current_gauze) + if(clot_rate > 0) + blood_flow -= clot_rate + blood_flow -= limb.current_gauze.absorption_rate + limb.seep_gauze(limb.current_gauze.absorption_rate) + else + blood_flow -= clot_rate + + if(blood_flow > highest_flow) + highest_flow = blood_flow + + if(blood_flow < minimum_flow) + if(demotes_to) + replace_wound(demotes_to) + else + to_chat(victim, span_green("The cut on your [limb.name] has stopped bleeding!")) + qdel(src) + + +/datum/wound/slash/on_stasis() + if(blood_flow >= minimum_flow) + return + if(demotes_to) + replace_wound(demotes_to) + return + qdel(src) + +/* BEWARE, THE BELOW NONSENSE IS MADNESS. bones.dm looks more like what I have in mind and is sufficiently clean, don't pay attention to this messiness */ + +/datum/wound/slash/check_grab_treatments(obj/item/I, mob/user) + if(istype(I, /obj/item/gun/energy/laser)) + return TRUE + if(I.get_temperature()) // if we're using something hot but not a cautery, we need to be aggro grabbing them first, so we don't try treating someone we're eswording + return TRUE + +/datum/wound/slash/treat(obj/item/I, mob/user) + if(istype(I, /obj/item/gun/energy/laser)) + las_cauterize(I, user) + else if(I.tool_behaviour == TOOL_CAUTERY || I.get_temperature()) + tool_cauterize(I, user) + else if(istype(I, /obj/item/stack/medical/suture)) + suture(I, user) + +/datum/wound/slash/try_handling(mob/living/carbon/human/user) + if(user.pulling != victim || user.zone_selected != limb.body_zone || user.a_intent == INTENT_GRAB || !iscatperson(user) || !victim.can_inject(user, TRUE)) + return FALSE + + if(INTERACTING_WITH(user, victim)) + to_chat(user, span_warning("You're already interacting with [victim]!")) + return + if(user.is_mouth_covered()) + to_chat(user, span_warning("Your mouth is covered, you can't lick [victim]'s wounds!")) + return + if(!user.getorganslot(ORGAN_SLOT_TONGUE)) + to_chat(user, span_warning("You can't lick wounds without a tongue!")) // f in chat + return + lick_wounds(user) + return TRUE + +/// if a felinid is licking this cut to reduce bleeding +/datum/wound/slash/proc/lick_wounds(mob/living/carbon/human/user) + // transmission is one way patient -> felinid since google said cat saliva is antiseptic or whatever, and also because felinids are already risking getting beaten for this even without people suspecting they're spreading a deathvirus + for(var/datum/disease/D in victim.diseases) + user.ForceContractDisease(D) + + user.visible_message(span_notice("[user] begins licking the wounds on [victim]'s [limb.name]."), span_notice("You begin licking the wounds on [victim]'s [limb.name]..."), ignored_mobs=victim) + to_chat(victim, "[user] begins to lick the wounds on your [limb.name].[user] licks the wounds on your [limb.name]! minimum_flow) + try_handling(user) + else if(demotes_to) + to_chat(user, span_green("You successfully lower the severity of [victim]'s cuts.")) + +/datum/wound/slash/on_xadone(power) + . = ..() + blood_flow -= 0.03 * power // i think it's like a minimum of 3 power, so .09 blood_flow reduction per tick is pretty good for 0 effort + +/datum/wound/slash/on_synthflesh(power) + . = ..() + blood_flow -= 0.075 * power // 20u * 0.075 = -1.5 blood flow, pretty good for how little effort it is + +/// If someone's putting a laser gun up to our cut to cauterize it +/datum/wound/slash/proc/las_cauterize(obj/item/gun/energy/laser/lasgun, mob/user) + var/self_penalty_mult = (user == victim ? 1.25 : 1) + user.visible_message(span_warning("[user] begins aiming [lasgun] directly at [victim]'s [limb.name]..."), span_userdanger("You begin aiming [lasgun] directly at [user == victim ? "your" : "[victim]'s"] [limb.name]...")) + if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + var/damage = lasgun.chambered.BB.damage + lasgun.chambered.BB.bare_wound_bonus = 0 + lasgun.chambered.BB.wound_bonus -= 30 + lasgun.chambered.BB.damage *= self_penalty_mult + if(!lasgun.process_fire(victim, victim, TRUE, null, limb.body_zone)) + return + victim.emote("scream") + blood_flow -= damage / (5 * self_penalty_mult) // 20 / 5 = 4 bloodflow removed, p good + victim.visible_message(span_warning("The cuts on [victim]'s [limb.name] scar over!")) + +/// If someone is using either a cautery tool or something with heat to cauterize this cut +/datum/wound/slash/proc/tool_cauterize(obj/item/I, mob/user) + var/improv_penalty_mult = (I.tool_behaviour == TOOL_CAUTERY ? 1 : 1.25) // 25% longer and less effective if you don't use a real cautery + var/self_penalty_mult = (user == victim ? 1.5 : 1) // 50% longer and less effective if you do it to yourself + + user.visible_message(span_danger("[user] begins cauterizing [victim]'s [limb.name] with [I]..."), span_warning("You begin cauterizing [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...")) + if(!do_after(user, base_treat_time * self_penalty_mult * improv_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + + user.visible_message(span_green("[user] cauterizes some of the bleeding on [victim]."), span_green("You cauterize some of the bleeding on [victim].")) + limb.receive_damage(burn = 2 + severity, wound_bonus = CANT_WOUND) + if(prob(30)) + victim.emote("scream") + var/blood_cauterized = (0.6 / (self_penalty_mult * improv_penalty_mult)) + blood_flow -= blood_cauterized + + if(blood_flow > minimum_flow) + try_treating(I, user) + else if(demotes_to) + to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts.")) + +/// If someone is using a suture to close this cut +/datum/wound/slash/proc/suture(obj/item/stack/medical/suture/I, mob/user) + var/self_penalty_mult = (user == victim ? 1.4 : 1) + user.visible_message(span_notice("[user] begins stitching [victim]'s [limb.name] with [I]..."), span_notice("You begin stitching [user == victim ? "your" : "[victim]'s"] [limb.name] with [I]...")) + + if(!do_after(user, base_treat_time * self_penalty_mult, target=victim, extra_checks = CALLBACK(src, .proc/still_exists))) + return + user.visible_message(span_green("[user] stitches up some of the bleeding on [victim]."), span_green("You stitch up some of the bleeding on [user == victim ? "yourself" : "[victim]"].")) + var/blood_sutured = I.stop_bleeding / self_penalty_mult + blood_flow -= blood_sutured + limb.heal_damage(I.heal_brute, I.heal_burn) + I.use(1) + + if(blood_flow > minimum_flow) + try_treating(I, user) + else if(demotes_to) + to_chat(user, span_green("You successfully lower the severity of [user == victim ? "your" : "[victim]'s"] cuts.")) + + +/datum/wound/slash/moderate + name = "Rough Abrasion" + desc = "Patient's skin has been badly scraped, generating moderate blood loss." + treat_text = "Application of clean bandages or first-aid grade sutures, followed by food and rest." + examine_desc = "has an open cut" + occur_text = "is cut open, slowly leaking blood" + sound_effect = 'sound/effects/wounds/blood1.ogg' + severity = WOUND_SEVERITY_MODERATE + initial_flow = 2 + minimum_flow = 0.5 + clot_rate = 0.12 + threshold_minimum = 20 + threshold_penalty = 10 + status_effect_type = /datum/status_effect/wound/slash/moderate + scar_keyword = "slashmoderate" + +/datum/wound/slash/severe + name = "Open Laceration" + desc = "Patient's skin is ripped clean open, allowing significant blood loss." + treat_text = "Speedy application of first-aid grade sutures and clean bandages, followed by vitals monitoring to ensure recovery." + examine_desc = "has a severe cut" + occur_text = "is ripped open, veins spurting blood" + sound_effect = 'sound/effects/wounds/blood2.ogg' + severity = WOUND_SEVERITY_SEVERE + initial_flow = 3.25 + minimum_flow = 2.75 + clot_rate = 0.06 + threshold_minimum = 50 + threshold_penalty = 25 + demotes_to = /datum/wound/slash/moderate + status_effect_type = /datum/status_effect/wound/slash/severe + scar_keyword = "slashsevere" + +/datum/wound/slash/critical + name = "Weeping Avulsion" + desc = "Patient's skin is completely torn open, along with significant loss of tissue. Extreme blood loss will lead to quick death without intervention." + treat_text = "Immediate bandaging and either suturing or cauterization, followed by supervised resanguination." + examine_desc = "is carved down to the bone, spraying blood wildly" + occur_text = "is torn open, spraying blood wildly" + sound_effect = 'sound/effects/wounds/blood3.ogg' + severity = WOUND_SEVERITY_CRITICAL + initial_flow = 4.25 + minimum_flow = 4 + clot_rate = -0.05 // critical cuts actively get worse instead of better + threshold_minimum = 80 + threshold_penalty = 40 + demotes_to = /datum/wound/slash/severe + status_effect_type = /datum/status_effect/wound/slash/critical + scar_keyword = "slashcritical" + wound_flags = (FLESH_WOUND | ACCEPTS_GAUZE | MANGLES_FLESH) diff --git a/code/game/area/Space_Station_13_areas.dm b/code/game/area/Space_Station_13_areas.dm index 3ef76f97cb2b..c4e3621c2b77 100644 --- a/code/game/area/Space_Station_13_areas.dm +++ b/code/game/area/Space_Station_13_areas.dm @@ -446,7 +446,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station icon_state = "bar" minimap_color = "#5ac866" mood_bonus = 5 - mood_message = "I love being in the bar!\n" + mood_message = span_nicegreen("I love being in the bar!\n") airlock_wires = /datum/wires/airlock/service /area/crew_quarters/bar/Initialize(mapload) diff --git a/code/game/area/areas.dm b/code/game/area/areas.dm index 37dd6b54d27c..69cc8ef0c204 100644 --- a/code/game/area/areas.dm +++ b/code/game/area/areas.dm @@ -43,7 +43,7 @@ /// Bonus mood for being in this area var/mood_bonus = 0 /// Mood message for being here, only shows up if mood_bonus != 0 - var/mood_message = "This area is pretty nice!\n" + var/mood_message = span_nicegreen("This area is pretty nice!\n") var/power_equip = TRUE var/power_light = TRUE diff --git a/code/game/area/areas/ruins/icemoon.dm b/code/game/area/areas/ruins/icemoon.dm index f64699119925..a9932e2dca33 100644 --- a/code/game/area/areas/ruins/icemoon.dm +++ b/code/game/area/areas/ruins/icemoon.dm @@ -8,7 +8,7 @@ name = "Bath House" icon_state = "dk_yellow" mood_bonus = 10 - mood_message = "This place is like paradise, I don't ever want to leave!\n" + mood_message = span_nicegreen("This place is like paradise, I don't ever want to leave!\n") /area/ruin/powered/inn name = "Inn" diff --git a/code/game/atoms.dm b/code/game/atoms.dm index 138b2fb400fb..e8d40ee44a69 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -223,7 +223,7 @@ LAZYREMOVE(M.do_afters, src) targeted_by = null - + QDEL_NULL(light) return ..() @@ -491,12 +491,26 @@ . += "Nothing." else if(reagents.flags & AMOUNT_VISIBLE) if(reagents.total_volume) - . += "It has [reagents.total_volume] unit\s left." + . += span_notice("It has [reagents.total_volume] unit\s left.") else - . += "It's empty." + . += span_danger("It's empty.") SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE, user, .) +/** + * Called when a mob examines (shift click or verb) this atom twice (or more) within EXAMINE_MORE_TIME (default 1.5 seconds) + * + * This is where you can put extra information on something that may be superfluous or not important in critical gameplay + * moments, while allowing people to manually double-examine to take a closer look + * + * Produces a signal [COMSIG_PARENT_EXAMINE_MORE] + */ +/atom/proc/examine_more(mob/user) + . = list() + SEND_SIGNAL(src, COMSIG_PARENT_EXAMINE_MORE, user, .) + if(!LAZYLEN(.)) // lol ..length + return FALSE + /** * An atom we are buckled or is contained within us has tried to move * @@ -506,7 +520,7 @@ /atom/proc/relaymove(mob/user) if(buckle_message_cooldown <= world.time) buckle_message_cooldown = world.time + 50 - to_chat(user, "You can't move while buckled to [src]!") + to_chat(user, span_warning("You can't move while buckled to [src]!")) return /// Handle what happens when your contents are exploded by a bomb @@ -744,13 +758,13 @@ var/datum/component/storage/STR = GetComponent(/datum/component/storage) //yogs start -- stops things from dumping into themselves if(STR == src_object) - to_chat(user,"You can't dump the contents of [src_object.parent] into itself!") + to_chat(user,span_warning("You can't dump the contents of [src_object.parent] into itself!")) return //yogs end while (do_after(user, 10, TRUE, src, FALSE, CALLBACK(STR, /datum/component/storage.proc/handle_mass_item_insertion, things, src_object, user, progress))) stoplag(1) qdel(progress) - to_chat(user, "You dump as much of [src_object.parent]'s contents into [STR.insert_preposition]to [src] as you can.") + to_chat(user, span_notice("You dump as much of [src_object.parent]'s contents into [STR.insert_preposition]to [src] as you can.")) STR.orient2hud(user) src_object.orient2hud(user) if(user.active_storage) //refresh the HUD to show the transfered contents @@ -983,7 +997,7 @@ /atom/proc/multitool_check_buffer(user, obj/item/I, silent = FALSE) if(!istype(I, /obj/item/multitool)) if(user && !silent) - to_chat(user, "[I] has no data buffer!") + to_chat(user, span_warning("[I] has no data buffer!")) return FALSE return TRUE @@ -1110,6 +1124,40 @@ var/reverse_message = "has been [what_done] by [ssource][postfix]" target.log_message(reverse_message, LOG_ATTACK, color="orange", log_globally=FALSE) +/** + * log_wound() is for when someone is *attacked* and suffers a wound. Note that this only captures wounds from damage, so smites/forced wounds aren't logged, as well as demotions like cuts scabbing over + * + * Note that this has no info on the attack that dealt the wound: information about where damage came from isn't passed to the bodypart's damaged proc. When in doubt, check the attack log for attacks at that same time + * TODO later: Add logging for healed wounds, though that will require some rewriting of healing code to prevent admin heals from spamming the logs. Not high priority + * + * Arguments: + * * victim- The guy who got wounded + * * suffered_wound- The wound, already applied, that we're logging. It has to already be attached so we can get the limb from it + * * dealt_damage- How much damage is associated with the attack that dealt with this wound. + * * dealt_wound_bonus- The wound_bonus, if one was specified, of the wounding attack + * * dealt_bare_wound_bonus- The bare_wound_bonus, if one was specified *and applied*, of the wounding attack. Not shown if armor was present + * * base_roll- Base wounding ability of an attack is a random number from 1 to (dealt_damage ** WOUND_DAMAGE_EXPONENT). This is the number that was rolled in there, before mods + */ +/proc/log_wound(atom/victim, datum/wound/suffered_wound, dealt_damage, dealt_wound_bonus, dealt_bare_wound_bonus, base_roll) + if(QDELETED(victim) || !suffered_wound) + return + var/message = "has suffered: [suffered_wound][suffered_wound.limb ? " to [suffered_wound.limb.name]" : null]"// maybe indicate if it's a promote/demote? + + if(dealt_damage) + message += " | Damage: [dealt_damage]" + // The base roll is useful since it can show how lucky someone got with the given attack. For example, dealing a cut + if(base_roll) + message += "(rolled [base_roll]/[dealt_damage ** WOUND_DAMAGE_EXPONENT])" + + if(dealt_wound_bonus) + message += " | WB: [dealt_wound_bonus]" + + if(dealt_bare_wound_bonus) + message += " | BWB: [dealt_bare_wound_bonus]" + + victim.log_message(message, LOG_ATTACK, color="blue") + + /atom/movable/proc/add_filter(name,priority,list/params) if(!filter_data) filter_data = list() diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index d4621d620531..96652a4a50e1 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -182,7 +182,7 @@ var/mob/M = AM log_combat(src, M, "grabbed", addition="passive grab") if(!supress_message) - visible_message("[src] has grabbed [M] passively!") + visible_message(span_warning("[src] has grabbed [M] passively!")) return TRUE /atom/movable/proc/stop_pulling() @@ -705,12 +705,12 @@ /atom/movable/proc/force_push(atom/movable/AM, force = move_force, direction, silent = FALSE) . = AM.force_pushed(src, force, direction) if(!silent && .) - visible_message("[src] forcefully pushes against [AM]!", "You forcefully push against [AM]!") + visible_message(span_warning("[src] forcefully pushes against [AM]!"), span_warning("You forcefully push against [AM]!")) /atom/movable/proc/move_crush(atom/movable/AM, force = move_force, direction, silent = FALSE) . = AM.move_crushed(src, force, direction) if(!silent && .) - visible_message("[src] crushes past [AM]!", "You crush [AM]!") + visible_message(span_danger("[src] crushes past [AM]!"), span_danger("You crush [AM]!")) /atom/movable/proc/move_crushed(atom/movable/pusher, force = MOVE_FORCE_DEFAULT, direction) return FALSE diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm index 13742025ca49..69929b66c9d1 100644 --- a/code/game/gamemodes/changeling/changeling.dm +++ b/code/game/gamemodes/changeling/changeling.dm @@ -118,6 +118,12 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th user.update_body() user.domutcheck() + // get rid of any scars from previous changeling-ing + for(var/i in user.all_scars) + var/datum/scar/iter_scar = i + if(iter_scar.fake) + qdel(iter_scar) + //vars hackery. not pretty, but better than the alternative. for(var/slot in GLOB.slots) if(istype(user.vars[slot], GLOB.slot2type[slot]) && !(chosen_prof.exists_list[slot])) //remove unnecessary flesh items @@ -144,6 +150,10 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th C.item_state = chosen_prof.item_state_list[slot] if(equip) user.equip_to_slot_or_del(C, GLOB.slot2slot[slot]) + for(var/stored_scar_line in chosen_prof.stored_scars) + var/datum/scar/attempted_fake_scar = user.load_scar(stored_scar_line) + if(attempted_fake_scar) + attempted_fake_scar.fake = TRUE user.regenerate_icons() @@ -162,4 +172,4 @@ GLOBAL_VAR(changeling_team_objective_type) //If this is not null, we hand our th round_credits += "
" round_credits += ..() - return round_credits + return round_credits \ No newline at end of file diff --git a/code/game/gamemodes/clock_cult/clock_cult.dm b/code/game/gamemodes/clock_cult/clock_cult.dm index a96b293153d6..37c159eff2be 100644 --- a/code/game/gamemodes/clock_cult/clock_cult.dm +++ b/code/game/gamemodes/clock_cult/clock_cult.dm @@ -84,7 +84,7 @@ Credit where due: if(R.deployed) var/mob/living/silicon/ai/AI = R.mainframe R.undeploy() - to_chat(AI, "Anomaly Detected. Returned to core!") //The AI needs to be in its core to properly be converted + to_chat(AI, span_userdanger("Anomaly Detected. Returned to core!")) //The AI needs to be in its core to properly be converted . = L.mind.add_antag_datum(C) @@ -100,7 +100,7 @@ Credit where due: Ratvar, the Clockwork Justiciar, [GLOB.ratvar_awakens ? "has been freed from his eternal prison" : "lies in exile, derelict and forgotten in an unseen realm"].
") flash_color(L, flash_color = list("#BE8700", "#BE8700", "#BE8700", rgb(0,0,0)), flash_time = 50) else - L.visible_message("[L] seems to resist an unseen force!", null, null, 7, L) + L.visible_message(span_boldwarning("[L] seems to resist an unseen force!"), null, null, 7, L) to_chat(L, "The world before you suddenly glows a brilliant yellow. [issilicon(L) ? "You cannot compute this truth!" : \ "Your mind is racing!"] You hear the whooshing steam and cl[pick("ank", "ink", "unk", "ang")]ing cogs of a billion billion machines, and the sound \ is a meaningless cacophony.
\ @@ -201,9 +201,9 @@ Credit where due: if(!M) return 0 to_chat(M, "You are a servant of Ratvar, the Clockwork Justiciar!") - to_chat(M, "You have approximately [ark_time] minutes until the Ark activates.") - to_chat(M, "Unlock Script scripture by converting a new servant.") - to_chat(M, "Application scripture will be unlocked halfway until the Ark's activation.") + to_chat(M, span_brass("You have approximately [ark_time] minutes until the Ark activates.")) + to_chat(M, span_brass("Unlock Script scripture by converting a new servant.")) + to_chat(M, span_brass("Application scripture will be unlocked halfway until the Ark's activation.")) M.playsound_local(get_turf(M), 'sound/ambience/antag/clockcultalr.ogg', 100, FALSE, pressure_affected = FALSE) return 1 @@ -354,7 +354,7 @@ Credit where due: /obj/item/paper/servant_primer/examine(mob/user) . = ..() if(!is_servant_of_ratvar(user) && !isobserver(user)) - . += "You can't understand any of the words on [src]." + . += span_danger("You can't understand any of the words on [src].") /obj/effect/spawner/lootdrop/clockcult name = "clock tile" diff --git a/code/game/gamemodes/clown_ops/clown_weapons.dm b/code/game/gamemodes/clown_ops/clown_weapons.dm index 3881490d7334..9d67cdc93938 100644 --- a/code/game/gamemodes/clown_ops/clown_weapons.dm +++ b/code/game/gamemodes/clown_ops/clown_weapons.dm @@ -64,7 +64,7 @@ hitsound = null attack_verb_on = list("slipped") clumsy_check = FALSE - sharpness = IS_BLUNT + sharpness = SHARP_NONE item_color = "yellow" heat = 0 light_color = "#ffff00" @@ -107,7 +107,7 @@ /obj/item/melee/transforming/energy/sword/bananium/suicide_act(mob/user) if(!active) transform_weapon(user, TRUE) - user.visible_message("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku, but the blade slips off of [user.p_them()] harmlessly!") + user.visible_message(span_suicide("[user] is [pick("slitting [user.p_their()] stomach open with", "falling on")] [src]! It looks like [user.p_theyre()] trying to commit seppuku, but the blade slips off of [user.p_them()] harmlessly!")) var/datum/component/slippery/slipper = GetComponent(/datum/component/slippery) slipper.Slip(src, user) return SHAME @@ -194,7 +194,7 @@ QDEL_NULL(bomb) /obj/item/grown/bananapeel/bombanana/suicide_act(mob/user) - user.visible_message("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.") + user.visible_message(span_suicide("[user] is deliberately slipping on the [src.name]! It looks like \he's trying to commit suicide.")) playsound(loc, 'sound/misc/slip.ogg', 50, 1, -1) bomb.preprime(user, 0, FALSE) return (BRUTELOSS) diff --git a/code/game/gamemodes/clown_ops/honkmother.dm b/code/game/gamemodes/clown_ops/honkmother.dm index d673074cbbc9..f4ca2f97247f 100644 --- a/code/game/gamemodes/clown_ops/honkmother.dm +++ b/code/game/gamemodes/clown_ops/honkmother.dm @@ -25,7 +25,7 @@ /obj/structure/destructible/honkmother/Initialize() . = ..() START_PROCESSING(SSobj, src) - send_to_playing_players("HONK!") + send_to_playing_players(span_clown("HONK!")) //mine now bitch sound_to_playing_players('sound/effects/ratvar_reveal.ogg') var/mutable_appearance/alert_overlay = mutable_appearance('icons/obj/items_and_weapons.dmi', "bike_horn") @@ -41,7 +41,7 @@ return FALSE var/type = pick(typesof(/mob/living/simple_animal/hostile/retaliate/clown)) var/mob/R = new type(get_turf(src)) - R.visible_message("[R] awakens!") + R.visible_message(span_warning("[R] awakens!")) R.key = O.key //moves and turns things into BANANIUM diff --git a/code/game/gamemodes/cult/cult.dm b/code/game/gamemodes/cult/cult.dm index 9bcebbdf5f1c..37ed5f4c4dc7 100644 --- a/code/game/gamemodes/cult/cult.dm +++ b/code/game/gamemodes/cult/cult.dm @@ -232,13 +232,13 @@ continue cultist.playsound_local(cultist, 'sound/magic/demon_dies.ogg', 75, FALSE) if(isconstruct(cultist)) - to_chat(cultist, "You feel your form lose some of its density, becoming more fragile!") + to_chat(cultist, span_cultbold("You feel your form lose some of its density, becoming more fragile!")) cultist.maxHealth *= 0.75 cultist.health *= 0.75 else cultist.Stun(20) cultist.confused += 15 //30 seconds of confusion - to_chat(cultist, "Your mind is flooded with pain as the last bloodstone is destroyed!") + to_chat(cultist, span_narsiesmall("Your mind is flooded with pain as the last bloodstone is destroyed!")) /datum/game_mode/proc/cult_loss_anchor() priority_announce("Whatever you did worked. Veil density has returned to a safe level. Shuttle locks lifted.","Central Command Higher Dimensional Affairs") @@ -252,23 +252,23 @@ continue cultist.playsound_local(cultist, 'sound/effects/screech.ogg', 75, FALSE) if(isconstruct(cultist)) - to_chat(cultist, "You feel your form lose most of its density, becoming incredibly fragile!") + to_chat(cultist, span_cultbold("You feel your form lose most of its density, becoming incredibly fragile!")) cultist.maxHealth *= 0.5 cultist.health *= 0.5 else cultist.Stun(40) cultist.confused += 30 //one minute of confusion - to_chat(cultist, "You feel a bleakness as the destruction of the anchor cuts off your connection to Nar-Sie!") + to_chat(cultist, span_narsiesmall("You feel a bleakness as the destruction of the anchor cuts off your connection to Nar-Sie!")) /datum/game_mode/proc/disable_bloodstone_cooldown() bloodstone_cooldown = FALSE for(var/datum/mind/M in cult) var/mob/living/L = M.current if(L) - to_chat(M, "The veil has weakened enough for another attempt, prepare the summoning!") + to_chat(M, span_narsiesmall("The veil has weakened enough for another attempt, prepare the summoning!")) if(isconstruct(L)) L.maxHealth = initial(L.maxHealth) - to_chat(L, "Your form regains its original durability!") + to_chat(L, span_cult("Your form regains its original durability!")) //send message to cultists saying they can do stuff again /datum/game_mode/cult/generate_credit_text() diff --git a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm index 03673aacdc10..ee302fd29b02 100644 --- a/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm +++ b/code/game/gamemodes/dynamic/dynamic_rulesets_roundstart.dm @@ -558,9 +558,9 @@ if(!M) return 0 to_chat(M, "You are a servant of Ratvar, the Clockwork Justiciar!") - to_chat(M, "You have approximately [ark_time] minutes until the Ark activates.") - to_chat(M, "Unlock Script scripture by converting a new servant.") - to_chat(M, "Application scripture will be unlocked halfway until the Ark's activation.") + to_chat(M, span_brass("You have approximately [ark_time] minutes until the Ark activates.")) + to_chat(M, span_brass("Unlock Script scripture by converting a new servant.")) + to_chat(M, span_brass("Application scripture will be unlocked halfway until the Ark's activation.")) M.playsound_local(get_turf(M), 'sound/ambience/antag/clockcultalr.ogg', 100, FALSE, pressure_affected = FALSE) return 1 diff --git a/code/game/gamemodes/dynamic/ruleset_picking.dm b/code/game/gamemodes/dynamic/ruleset_picking.dm index 9221e4a3c152..692887b4dca6 100644 --- a/code/game/gamemodes/dynamic/ruleset_picking.dm +++ b/code/game/gamemodes/dynamic/ruleset_picking.dm @@ -93,7 +93,7 @@ /// Fired when an admin cancels the current midround injection. /datum/game_mode/dynamic/proc/admin_cancel_midround(mob/user, timer_id) if (midround_injection_timer_id != timer_id || !deltimer(midround_injection_timer_id)) - to_chat(user, "Too late!") + to_chat(user, span_notice("Too late!")) return dynamic_log("[key_name(user)] cancelled the next midround injection.") @@ -103,7 +103,7 @@ /// Fired when an admin requests a different midround injection. /datum/game_mode/dynamic/proc/admin_different_midround(mob/user, timer_id) if (midround_injection_timer_id != timer_id || !deltimer(midround_injection_timer_id)) - to_chat(user, "Too late!") + to_chat(user, span_notice("Too late!")) return midround_injection_timer_id = null diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm index ab0a0547604a..8c667cebbcf1 100644 --- a/code/game/gamemodes/game_mode.dm +++ b/code/game/gamemodes/game_mode.dm @@ -84,7 +84,7 @@ return FALSE return TRUE else - message_admins("DEBUG: GAME STARTING WITHOUT PLAYER NUMBER CHECKS, THIS WILL PROBABLY BREAK SHIT.") + message_admins(span_notice("DEBUG: GAME STARTING WITHOUT PLAYER NUMBER CHECKS, THIS WILL PROBABLY BREAK SHIT.")) return TRUE @@ -414,7 +414,7 @@ //yogs start -- quiet mode if(mind.quiet_round) - to_chat(mind.current,"There aren't enough antag volunteers, so your quiet round setting will not be considered!") + to_chat(mind.current,span_userdanger("There aren't enough antag volunteers, so your quiet round setting will not be considered!")) //yogs end return mind @@ -567,7 +567,7 @@ //Reports player logouts// ////////////////////////// /proc/display_roundstart_logout_report() - var/list/msg = list("Roundstart logout report\n\n") + var/list/msg = list(span_boldnotice("Roundstart logout report\n\n")) for(var/i in GLOB.mob_living_list) var/mob/living/L = i var/mob/living/carbon/C = L @@ -585,7 +585,7 @@ failed = TRUE //AFK client if(!failed && L.stat) if(L.suiciding) //Suicider - msg += "[L.name] ([L.key]), the [L.job] (Suicide)\n" + msg += "[L.name] ([L.key]), the [L.job] ([span_boldannounce("Suicide")])\n" failed = TRUE //Disconnected client if(!failed && L.stat == UNCONSCIOUS) msg += "[L.name] ([L.key]), the [L.job] (Dying)\n" @@ -608,7 +608,7 @@ if(D.mind && D.mind.current == L) if(L.stat == DEAD) if(L.suiciding) //Suicider - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Suicide)\n" + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_boldannounce("Suicide")])\n" continue //Disconnected client else msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Dead)\n" @@ -617,7 +617,7 @@ if(D.can_reenter_corpse) continue //Adminghost, or cult/wizard ghost else - msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] (Ghosted)\n" + msg += "[L.name] ([ckey(D.mind.key)]), the [L.job] ([span_boldannounce("Ghosted")])\n" continue //Ghosted while alive diff --git a/code/game/gamemodes/hivemind/radar.dm b/code/game/gamemodes/hivemind/radar.dm index bb5827cdc2c0..27c1154d8d6a 100644 --- a/code/game/gamemodes/hivemind/radar.dm +++ b/code/game/gamemodes/hivemind/radar.dm @@ -50,7 +50,7 @@ else scan_target = null if(!trackable_targets_exist) - to_chat(owner, "The psychic energies eminating from afar have died down... for now") + to_chat(owner, span_assimilator("The psychic energies eminating from afar have died down... for now")) owner.remove_status_effect(STATUS_EFFECT_HIVE_RADAR) //"Trackable" status effect diff --git a/code/game/gamemodes/meteor/meteor.dm b/code/game/gamemodes/meteor/meteor.dm index 588f690e8d9a..8bd3c4055e75 100644 --- a/code/game/gamemodes/meteor/meteor.dm +++ b/code/game/gamemodes/meteor/meteor.dm @@ -41,11 +41,11 @@ ++survivors if(player.onCentCom()) - survivor_list += "[player.real_name] escaped to the safety of CentCom." + survivor_list += span_greentext("[player.real_name] escaped to the safety of CentCom.") else if(player.onSyndieBase()) - survivor_list += "[player.real_name] escaped to the (relative) safety of Syndicate Space." + survivor_list += span_greentext("[player.real_name] escaped to the (relative) safety of Syndicate Space.") else - survivor_list += "[player.real_name] survived but is stranded without any hope of rescue." + survivor_list += span_neutraltext("[player.real_name] survived but is stranded without any hope of rescue.") if(survivors) return "
The following survived the meteor storm:
[survivor_list.Join("
")]
" diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm index eecdfeeee9fd..612efe7a78b2 100644 --- a/code/game/gamemodes/meteor/meteors.dm +++ b/code/game/gamemodes/meteor/meteors.dm @@ -148,7 +148,7 @@ GLOBAL_LIST_INIT(meteorsC, list(/obj/effect/meteor/dust)) //for space dust event continue if(isliving(thing)) var/mob/living/living_thing = thing - living_thing.visible_message("[src] slams into [living_thing].", "[src] slams into you!.") + living_thing.visible_message(span_warning("[src] slams into [living_thing]."), span_userdanger("[src] slams into you!.")) switch(hitpwr) if(EXPLODE_DEVASTATE) SSexplosions.high_mov_atom += thing diff --git a/code/game/gamemodes/objective.dm b/code/game/gamemodes/objective.dm index 89935e0b7eb6..944d0a398ef1 100644 --- a/code/game/gamemodes/objective.dm +++ b/code/game/gamemodes/objective.dm @@ -863,7 +863,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) var/mob/new_target = input(admin,"Select target:", "Objective target") as null|anything in possible_targets target = new_target.mind else - to_chat(admin, "No active AIs with minds!") + to_chat(admin, span_warning("No active AIs with minds!")) update_explanation_text() /datum/objective/destroy/internal @@ -1147,7 +1147,7 @@ GLOBAL_LIST_EMPTY(possible_items_special) return pet = selected_pet else - to_chat(admin, "No living pets!") + to_chat(admin, span_warning("No living pets!")) update_explanation_text() /datum/objective/minor/pet/update_explanation_text() diff --git a/code/game/golf/golf.dm b/code/game/golf/golf.dm index d439f598d90f..6d2db074b112 100644 --- a/code/game/golf/golf.dm +++ b/code/game/golf/golf.dm @@ -15,33 +15,33 @@ icon_state = icon_state + "_w" playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) user.visible_message("[user.name] secures [src] to the floor.", \ - "You secure [src] to the floor.", \ - " You hear a ratchet") + span_notice("You secure [src] to the floor."), \ + " [span_italics("You hear a ratchet")]") src.anchored = 1 if(1) anchored = 0 icon_state = initial(icon_state) playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1) user.visible_message("[user.name] unsecures [src] from the floor.", \ - "You unwrench [src] from the floor.", \ - "You hear a ratchet.") + span_notice("You unwrench [src] from the floor."), \ + span_italics("You hear a ratchet.")) src.anchored = 0 /obj/machinery/golfhole/Cross(atom/movable/mover, turf/target) . = ..() if (istype(mover,/obj/item/golfball) && mover.throwing && anchored) if (contents.len >= 3) - visible_message("The golf hole is full! Try removing golfballs from the hole.") + visible_message(span_notice("The golf hole is full! Try removing golfballs from the hole.")) return FALSE var/obj/item/golfball = mover if(prob(75)) golfball.loc = src - visible_message("The golfball lands in [src].") + visible_message(span_notice("The golfball lands in [src].")) update_icon() else - visible_message("The golfball bounces out of [src]!") + visible_message(span_notice("The golfball bounces out of [src]!")) return FALSE else return ..() @@ -50,14 +50,14 @@ /obj/machinery/golfhole/attack_hand(atom, mob/user) var/obj/item/golfball/ball = locate(/obj/item/golfball) in contents if (ball) - visible_message("The golfball is removed from the hole.") + visible_message(span_notice("The golfball is removed from the hole.")) ball.loc = get_turf(src.loc) /obj/machinery/golfhole/proc/hole_place_item_in(obj/item/golfball, mob/user) golfball.loc = src user.visible_message("[user.name] knocks the golfball into [src].", \ - "You knock the golfball into [src].") + span_notice("You knock the golfball into [src].")) /obj/machinery/golfhole/blue icon = 'yogstation/icons/code/game/golf/golfstuff.dmi' diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm index 5068fe6ef1a0..578981580bb7 100644 --- a/code/game/machinery/PDApainter.dm +++ b/code/game/machinery/PDApainter.dm @@ -70,7 +70,7 @@ else if(istype(O, /obj/item/pda)) if(storedpda) - to_chat(user, "There is already a PDA inside!") + to_chat(user, span_warning("There is already a PDA inside!")) return else if(!user.transferItemToLoc(O, src)) return @@ -83,17 +83,17 @@ if(!O.tool_start_check(user, amount=0)) return user.visible_message("[user] is repairing [src].", \ - "You begin repairing [src]...", \ - "You hear welding.") + span_notice("You begin repairing [src]..."), \ + span_italics("You hear welding.")) if(O.use_tool(src, user, 40, volume=50)) if(!(stat & BROKEN)) return - to_chat(user, "You repair [src].") + to_chat(user, span_notice("You repair [src].")) stat &= ~BROKEN obj_integrity = max_integrity update_icon() else - to_chat(user, "[src] does not need repairs.") + to_chat(user, span_notice("[src] does not need repairs.")) else return ..() @@ -122,7 +122,7 @@ ejectpda() else - to_chat(user, "[src] is empty.") + to_chat(user, span_notice("[src] is empty.")) /obj/machinery/pdapainter/verb/ejectpda() @@ -138,4 +138,4 @@ storedpda = null update_icon() else - to_chat(usr, "[src] is empty!") + to_chat(usr, span_warning("[src] is empty!")) diff --git a/code/game/machinery/Sleeper.dm b/code/game/machinery/Sleeper.dm index 5cb6f5908857..b347ca6107bd 100644 --- a/code/game/machinery/Sleeper.dm +++ b/code/game/machinery/Sleeper.dm @@ -25,7 +25,7 @@ ) var/list/chem_buttons //Used when emagged to scramble which chem is used, eg: mutadone -> morphine var/scrambled_chems = FALSE //Are chem buttons scrambled? used as a warning - var/enter_message = "You feel cool air surround you. You go numb as your senses turn inward." + var/enter_message = span_notice("You feel cool air surround you. You go numb as your senses turn inward.") payment_department = ACCOUNT_MED fair_market_price = 5 @@ -57,8 +57,8 @@ icon_state = initial(icon_state) /obj/machinery/sleeper/container_resist(mob/living/user) - visible_message("[occupant] emerges from [src]!", - "You climb out of [src]!") + visible_message(span_notice("[occupant] emerges from [src]!"), + span_notice("You climb out of [src]!")) open_machine() /obj/machinery/sleeper/Exited(atom/movable/user) @@ -103,10 +103,10 @@ if(..()) return if(occupant) - to_chat(user, "[src] is currently occupied!") + to_chat(user, span_warning("[src] is currently occupied!")) return if(state_open) - to_chat(user, "[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!") + to_chat(user, span_warning("[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!")) return if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I)) return @@ -128,7 +128,7 @@ . = !(state_open || panel_open || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR if(.) I.play_tool_sound(src, 50) - visible_message("[usr] pries open [src].", "You pry open [src].") + visible_message(span_notice("[usr] pries open [src]."), span_notice("You pry open [src].")) open_machine() /obj/machinery/sleeper/ui_state(mob/user) @@ -152,7 +152,7 @@ /obj/machinery/sleeper/examine(mob/user) . = ..() - . += "Alt-click [src] to [state_open ? "close" : "open"] it." + . += span_notice("Alt-click [src] to [state_open ? "close" : "open"] it.") /obj/machinery/sleeper/process() ..() @@ -225,11 +225,11 @@ if(inject_chem(chem, usr)) . = TRUE if(scrambled_chems && prob(5)) - to_chat(usr, "Chemical system re-route detected, results may not be as expected!") + to_chat(usr, span_warning("Chemical system re-route detected, results may not be as expected!")) /obj/machinery/sleeper/emag_act(mob/user) scramble_chem_buttons() - to_chat(user, "You scramble the sleeper's user interface!") + to_chat(user, span_warning("You scramble the sleeper's user interface!")) /obj/machinery/sleeper/proc/inject_chem(chem, mob/user) if((chem in available_chems) && chem_allowed(chem)) diff --git a/code/game/machinery/_machinery.dm b/code/game/machinery/_machinery.dm index a7d40547b021..8b02fea64e09 100644 --- a/code/game/machinery/_machinery.dm +++ b/code/game/machinery/_machinery.dm @@ -125,6 +125,10 @@ Class Procs: var/payment_department = ACCOUNT_ENG /// For storing and overriding ui id var/tgui_id // ID of TGUI interface + var/climbable = FALSE + var/climb_time = 20 + var/climb_stun = 20 + var/mob/living/machineclimber /obj/machinery/Initialize() if(!armor) @@ -255,7 +259,7 @@ Class Procs: return FALSE var/mob/living/carbon/H = user if(istype(H) && H.has_dna() && H.dna.check_mutation(ACTIVE_HULK)) - to_chat(H, "HULK NOT NERD. HULK SMASH!!!") + to_chat(H, span_warning("HULK NOT NERD. HULK SMASH!!!")) return FALSE if(!Adjacent(user)) if(!(istype(H) && H.has_dna() && H.dna.check_mutation(TK))) @@ -321,7 +325,7 @@ Class Procs: else user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - user.visible_message("[user.name] smashes against \the [src.name] with its paws.", null, null, COMBAT_MESSAGE_RANGE) + user.visible_message(span_danger("[user.name] smashes against \the [src.name] with its paws."), null, null, COMBAT_MESSAGE_RANGE) take_damage(4, BRUTE, "melee", 1) /obj/machinery/attack_robot(mob/user) @@ -353,7 +357,7 @@ Class Procs: . = !(state_open || panel_open || is_operational() || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR if(.) I.play_tool_sound(src, 50) - visible_message("[usr] pries open \the [src].", "You pry open \the [src].") + visible_message(span_notice("[usr] pries open \the [src]."), span_notice("You pry open \the [src].")) open_machine() /obj/machinery/proc/default_deconstruction_crowbar(obj/item/I, ignore_panel = 0) @@ -405,11 +409,11 @@ Class Procs: if(!panel_open) panel_open = TRUE icon_state = icon_state_open - to_chat(user, "You open the maintenance hatch of [src].") + to_chat(user, span_notice("You open the maintenance hatch of [src].")) else panel_open = FALSE icon_state = icon_state_closed - to_chat(user, "You close the maintenance hatch of [src].") + to_chat(user, span_notice("You close the maintenance hatch of [src].")) return 1 return 0 @@ -417,13 +421,13 @@ Class Procs: if(panel_open && I.tool_behaviour == TOOL_WRENCH) I.play_tool_sound(src, 50) setDir(turn(dir,-90)) - to_chat(user, "You rotate [src].") + to_chat(user, span_notice("You rotate [src].")) return 1 return 0 /obj/proc/can_be_unfasten_wrench(mob/user, silent) //if we can unwrench this object; returns SUCCESSFUL_UNFASTEN and FAILED_UNFASTEN, which are both TRUE, or CANT_UNFASTEN, which isn't. if(!(isfloorturf(loc) || istype(loc, /turf/open/indestructible)) && !anchored) - to_chat(user, "[src] needs to be on the floor to be secured!") + to_chat(user, span_warning("[src] needs to be on the floor to be secured!")) return FAILED_UNFASTEN return SUCCESSFUL_UNFASTEN @@ -433,12 +437,12 @@ Class Procs: if(!can_be_unfasten || can_be_unfasten == FAILED_UNFASTEN) return can_be_unfasten if(time) - to_chat(user, "You begin [anchored ? "un" : ""]securing [src]...") + to_chat(user, span_notice("You begin [anchored ? "un" : ""]securing [src]...")) I.play_tool_sound(src, 50) var/prev_anchored = anchored //as long as we're the same anchored state and we're either on a floor or are anchored, toggle our anchored state if(I.use_tool(src, user, time, extra_checks = CALLBACK(src, .proc/unfasten_wrench_check, prev_anchored, user))) - to_chat(user, "You [anchored ? "un" : ""]secure [src].") + to_chat(user, span_notice("You [anchored ? "un" : ""]secure [src].")) setAnchored(!anchored) playsound(src, 'sound/items/deconstruct.ogg', 50, 1) return SUCCESSFUL_UNFASTEN @@ -493,7 +497,7 @@ Class Procs: B.moveToNullspace() SEND_SIGNAL(W, COMSIG_TRY_STORAGE_INSERT, A, null, null, TRUE) component_parts -= A - to_chat(user, "[capitalize(A.name)] replaced with [B.name].") + to_chat(user, span_notice("[capitalize(A.name)] replaced with [B.name].")) shouldplaysound = 1 //Only play the sound when parts are actually replaced! break RefreshParts() @@ -506,18 +510,18 @@ Class Procs: /obj/machinery/proc/display_parts(mob/user) . = list() - . += "It contains the following parts:" + . += span_notice("It contains the following parts:") for(var/obj/item/C in component_parts) - . += "[icon2html(C, user)] \A [C]." + . += span_notice("[icon2html(C, user)] \A [C].") . = jointext(., "") /obj/machinery/examine(mob/user) . = ..() if(stat & BROKEN) - . += "It looks broken and non-functional." + . += span_notice("It looks broken and non-functional.") if(!(resistance_flags & INDESTRUCTIBLE)) if(resistance_flags & ON_FIRE) - . += "It's on fire!" + . += span_warning("It's on fire!") var/healthpercent = (obj_integrity/max_integrity) * 100 switch(healthpercent) if(50 to 99) @@ -525,7 +529,7 @@ Class Procs: if(25 to 50) . += "It appears heavily damaged." if(0 to 25) - . += "It's falling apart!" + . += span_warning("It's falling apart!") if(user.research_scanner && component_parts) . += display_parts(user, TRUE) @@ -580,3 +584,52 @@ Class Procs: /obj/machinery/rust_heretic_act() take_damage(500, BRUTE, "melee", 1) + +/obj/machinery/MouseDrop_T(atom/movable/O, mob/user) + . = ..() + if(!climbable) + return + if(user == O && iscarbon(O)) + var/mob/living/carbon/C = O + if(C.mobility_flags & MOBILITY_MOVE) + climb_machine(user) + return + if(!istype(O, /obj/item) || user.get_active_held_item() != O) + return + if(iscyborg(user)) + return + if(!user.dropItemToGround(O)) + return + if (O.loc != src.loc) + step(O, get_dir(O, src)) + +/obj/machinery/proc/do_climb(atom/movable/A) + if(climbable) + density = FALSE + . = step(A,get_dir(A,src.loc)) + density = TRUE + +/obj/machinery/proc/climb_machine(mob/living/user) + src.add_fingerprint(user) + user.visible_message("[user] starts climbing onto [src].", \ + "You start climbing onto [src]...") + var/adjusted_climb_time = climb_time + if(user.restrained()) //climbing takes twice as long when restrained. + adjusted_climb_time *= 2 + if(isalien(user)) + adjusted_climb_time *= 0.25 //aliens are terrifyingly fast + if(HAS_TRAIT(user, TRAIT_FREERUNNING)) //do you have any idea how fast I am??? + adjusted_climb_time *= 0.8 + machineclimber = user + if(do_mob(user, user, adjusted_climb_time)) + if(src.loc) //Checking if structure has been destroyed + if(do_climb(user)) + user.visible_message("[user] climbs onto [src].", \ + "You climb onto [src].") + log_combat(user, src, "climbed onto") + if(climb_stun) + user.Stun(climb_stun) + . = 1 + else + to_chat(user, "You fail to climb onto [src].") + machineclimber = null diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index b52cef12ac19..51773e1cea6d 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -15,7 +15,7 @@ /obj/machinery/ai_slipper/examine(mob/user) . = ..() - . += "It has [uses] uses of foam remaining." + . += span_notice("It has [uses] uses of foam remaining.") /obj/machinery/ai_slipper/update_icon() if(stat & BROKEN) @@ -27,17 +27,17 @@ /obj/machinery/ai_slipper/interact(mob/user) if(!allowed(user)) - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) return if(!uses) - to_chat(user, "[src] is out of foam and cannot be activated.") + to_chat(user, span_danger("[src] is out of foam and cannot be activated.")) return if(cooldown_time > world.time) - to_chat(user, "[src] cannot be activated for [DisplayTimeText(world.time - cooldown_time)].") + to_chat(user, span_danger("[src] cannot be activated for [DisplayTimeText(world.time - cooldown_time)].")) return new /obj/effect/particle_effect/foam(loc) uses-- - to_chat(user, "You activate [src]. It now has [uses] uses of foam remaining.") + to_chat(user, span_notice("You activate [src]. It now has [uses] uses of foam remaining.")) cooldown = world.time + cooldown_time power_change() addtimer(CALLBACK(src, .proc/power_change), cooldown_time) diff --git a/code/game/machinery/airlock_cycle_control.dm b/code/game/machinery/airlock_cycle_control.dm index f9302c01902f..ab4ba9fe0910 100644 --- a/code/game/machinery/airlock_cycle_control.dm +++ b/code/game/machinery/airlock_cycle_control.dm @@ -437,7 +437,7 @@ if(2) if(W.tool_behaviour == TOOL_WIRECUTTER && panel_open && wires.is_all_cut()) W.play_tool_sound(src) - to_chat(user, "You cut the final wires.") + to_chat(user, span_notice("You cut the final wires.")) new /obj/item/stack/cable_coil(loc, 5) buildstage = 1 update_icon() @@ -445,7 +445,7 @@ else if(W.tool_behaviour == TOOL_SCREWDRIVER) // Opening that up. W.play_tool_sound(src) panel_open = !panel_open - to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") + to_chat(user, span_notice("The wires have been [panel_open ? "exposed" : "unexposed"].")) update_icon() return else if(istype(W, /obj/item/card/id) || istype(W, /obj/item/pda))// trying to unlock the interface with an ID card @@ -457,11 +457,11 @@ if(1) if(W.tool_behaviour == TOOL_CROWBAR) user.visible_message("[user.name] removes the electronics from [src.name].",\ - "You start prying out the circuit...") + span_notice("You start prying out the circuit...")) W.play_tool_sound(src) if (W.use_tool(src, user, 20)) if (buildstage == 1) - to_chat(user, "You remove the airlock controller electronics.") + to_chat(user, span_notice("You remove the airlock controller electronics.")) new /obj/item/electronics/advanced_airlock_controller( src.loc ) playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) buildstage = 0 @@ -471,14 +471,14 @@ if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/cable = W if(cable.get_amount() < 5) - to_chat(user, "You need five lengths of cable to wire the airlock controller!") + to_chat(user, span_warning("You need five lengths of cable to wire the airlock controller!")) return user.visible_message("[user.name] wires the airlock controller.", \ - "You start wiring the airlock controller...") + span_notice("You start wiring the airlock controller...")) if (do_after(user, 20, target = src)) if (cable.get_amount() >= 5 && buildstage == 1) cable.use(5) - to_chat(user, "You wire the airlock controller.") + to_chat(user, span_notice("You wire the airlock controller.")) wires.repair() aidisabled = 0 locked = FALSE @@ -491,7 +491,7 @@ if(0) if(istype(W, /obj/item/electronics/advanced_airlock_controller)) if(user.temporarilyRemoveItemFromInventory(W)) - to_chat(user, "You insert the circuit.") + to_chat(user, span_notice("You insert the circuit.")) buildstage = 1 update_icon() qdel(W) @@ -501,14 +501,14 @@ var/obj/item/electroadaptive_pseudocircuit/P = W if(!P.adapt_circuit(user, 25)) return - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt an airlock controller circuit and slot it into the assembly.") + user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \ + span_notice("You adapt an airlock controller circuit and slot it into the assembly.")) buildstage = 1 update_icon() return if(W.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You detach \the [src] from the wall.") + to_chat(user, span_notice("You detach \the [src] from the wall.")) W.play_tool_sound(src) new /obj/item/wallframe/advanced_airlock_controller( user.loc ) qdel(src) @@ -674,7 +674,7 @@ if(!A.allowed(usr)) if(is_allowed) is_allowed = FALSE - to_chat(usr, "Access denied.") + to_chat(usr, span_danger("Access denied.")) if(A.density) spawn() A.do_animate("deny") @@ -771,15 +771,15 @@ /obj/machinery/advanced_airlock_controller/proc/togglelock(mob/living/user) if(stat & (NOPOWER|BROKEN)) - to_chat(user, "It does nothing!") + to_chat(user, span_warning("It does nothing!")) else if(src.allowed(usr) && !wires.is_cut(WIRE_IDSCAN)) locked = !locked update_icon() - to_chat(user, "You [ locked ? "lock" : "unlock"] the airlock controller interface.") + to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] the airlock controller interface.")) updateUsrDialog() else - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) return /obj/machinery/advanced_airlock_controller/power_change() @@ -790,7 +790,7 @@ if(obj_flags & EMAGGED) return obj_flags |= EMAGGED - visible_message("Sparks fly out of [src]!", "You emag [src], disabling its safeties.") + visible_message(span_warning("Sparks fly out of [src]!"), span_notice("You emag [src], disabling its safeties.")) playsound(src, "sparks", 50, 1) /obj/machinery/advanced_airlock_controller/obj_break(damage_flag) diff --git a/code/game/machinery/announcement_system.dm b/code/game/machinery/announcement_system.dm index 03827ac882ef..1a7697f1d43e 100644 --- a/code/game/machinery/announcement_system.dm +++ b/code/game/machinery/announcement_system.dm @@ -59,12 +59,12 @@ GLOBAL_LIST_EMPTY(announcement_systems) if(P.tool_behaviour == TOOL_SCREWDRIVER) P.play_tool_sound(src) panel_open = !panel_open - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch of [src].") + to_chat(user, span_notice("You [panel_open ? "open" : "close"] the maintenance hatch of [src].")) update_icon() else if(default_deconstruction_crowbar(P)) return else if(P.tool_behaviour == TOOL_MULTITOOL && panel_open && (stat & BROKEN)) - to_chat(user, "You reset [src]'s firmware.") + to_chat(user, span_notice("You reset [src]'s firmware.")) stat &= ~BROKEN update_icon() else @@ -121,7 +121,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) if(!usr.canUseTopic(src, !issilicon(usr))) return if(stat & BROKEN) - visible_message("[src] buzzes.", "You hear a faint buzz.") + visible_message(span_warning("[src] buzzes."), span_italics("You hear a faint buzz.")) playsound(src.loc, 'sound/machines/buzz-two.ogg', 50, 1) return switch(action) @@ -154,7 +154,7 @@ GLOBAL_LIST_EMPTY(announcement_systems) if(!user.canUseTopic(src, !issilicon(user))) return if(stat & BROKEN) - to_chat(user, "[src]'s firmware appears to be malfunctioning!") + to_chat(user, span_warning("[src]'s firmware appears to be malfunctioning!")) return interact(user) diff --git a/code/game/machinery/aug_manipulator.dm b/code/game/machinery/aug_manipulator.dm index 3d1de53b49d4..03f682bc68b9 100644 --- a/code/game/machinery/aug_manipulator.dm +++ b/code/game/machinery/aug_manipulator.dm @@ -13,7 +13,7 @@ /obj/machinery/aug_manipulator/examine(mob/user) . = ..() if(storedpart) - . += "Alt-click to eject the limb." + . += span_notice("Alt-click to eject the limb.") /obj/machinery/aug_manipulator/Initialize() initial_icon_state = initial(icon_state) @@ -60,10 +60,10 @@ else if(istype(O, /obj/item/bodypart)) var/obj/item/bodypart/B = O if(B.status != BODYPART_ROBOTIC) - to_chat(user, "The machine only accepts cybernetics!") + to_chat(user, span_warning("The machine only accepts cybernetics!")) return if(storedpart) - to_chat(user, "There is already something inside!") + to_chat(user, span_warning("There is already something inside!")) return else O = user.get_active_held_item() @@ -79,18 +79,18 @@ return user.visible_message("[user] begins repairing [src].", \ - "You begin repairing [src]...", \ - "You hear welding.") + span_notice("You begin repairing [src]..."), \ + span_italics("You hear welding.")) if(O.use_tool(src, user, 40, volume=50)) if(!(stat & BROKEN)) return - to_chat(user, "You repair [src].") + to_chat(user, span_notice("You repair [src].")) stat &= ~BROKEN obj_integrity = max(obj_integrity, max_integrity) update_icon() else - to_chat(user, "[src] does not need repairs.") + to_chat(user, span_notice("[src] does not need repairs.")) else return ..() @@ -112,7 +112,7 @@ eject_part(user) else - to_chat(user, "\The [src] is empty.") + to_chat(user, span_notice("\The [src] is empty.")) /obj/machinery/aug_manipulator/proc/eject_part(mob/living/user) if(storedpart) @@ -120,7 +120,7 @@ storedpart = null update_icon() else - to_chat(user, "[src] is empty.") + to_chat(user, span_notice("[src] is empty.")) /obj/machinery/aug_manipulator/AltClick(mob/living/user) ..() diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 12e434160274..73496e8308c2 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -140,11 +140,11 @@ if((autoqueue.len + 1) < queue_max_len) add_to_queue(request, multiplier) // Add item to queue for processing else - to_chat(usr, "The autolathe queue is full!") + to_chat(usr, span_warning("The autolathe queue is full!")) if("eject") request = stored_research.isDesignResearchedID(params["item_id"]) if(processing_queue) - to_chat(usr, "The autolathe queue is processing, please stop before ejecting material") + to_chat(usr, span_warning("The autolathe queue is processing, please stop before ejecting material")) if(!request) return var/multiplier = text2num(params["multiplier"]) diff --git a/code/game/machinery/bank_machine.dm b/code/game/machinery/bank_machine.dm index cb50e31bb1cb..c5b77c174b91 100644 --- a/code/game/machinery/bank_machine.dm +++ b/code/game/machinery/bank_machine.dm @@ -34,7 +34,7 @@ var/datum/bank_account/D = SSeconomy.get_dep_account(ACCOUNT_CAR) if(D) D.adjust_money(value) - to_chat(user, "You deposit [I]. The Cargo Budget is now $[D.account_balance].") + to_chat(user, span_notice("You deposit [I]. The Cargo Budget is now $[D.account_balance].")) qdel(I) return return ..() diff --git a/code/game/machinery/bounty_board.dm b/code/game/machinery/bounty_board.dm index bbd745ef41d0..97490cae0d42 100644 --- a/code/game/machinery/bounty_board.dm +++ b/code/game/machinery/bounty_board.dm @@ -48,16 +48,16 @@ GLOBAL_LIST_EMPTY(request_list) to_chat(user, "There's no account assigned with this ID.") return TRUE if(I.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") + to_chat(user, span_notice("You start [anchored ? "un" : ""]securing [name]...")) I.play_tool_sound(src) if(I.use_tool(src, user, 30)) playsound(loc, 'sound/items/deconstruct.ogg', 50, TRUE) if(stat & BROKEN) - to_chat(user, "The broken remains of [src] fall on the ground.") + to_chat(user, span_warning("The broken remains of [src] fall on the ground.")) new /obj/item/stack/sheet/metal(loc, 3) new /obj/item/shard(loc) else - to_chat(user, "You [anchored ? "un" : ""]secure [name].") + to_chat(user, span_notice("You [anchored ? "un" : ""]secure [name].")) new /obj/item/wallframe/bounty_board(loc) qdel(src) diff --git a/code/game/machinery/buttons.dm b/code/game/machinery/buttons.dm index 6ac722f12192..f9c590ed5be3 100644 --- a/code/game/machinery/buttons.dm +++ b/code/game/machinery/buttons.dm @@ -63,34 +63,34 @@ default_deconstruction_screwdriver(user, "button-open", "[skin]",W) update_icon() else - to_chat(user, "Maintenance Access Denied") + to_chat(user, span_danger("Maintenance Access Denied")) flick("[skin]-denied", src) return if(panel_open) if(!device && istype(W, /obj/item/assembly)) if(!user.transferItemToLoc(W, src)) - to_chat(user, "\The [W] is stuck to you!") + to_chat(user, span_warning("\The [W] is stuck to you!")) return device = W - to_chat(user, "You add [W] to the button.") + to_chat(user, span_notice("You add [W] to the button.")) if(!board && istype(W, /obj/item/electronics/airlock)) if(!user.transferItemToLoc(W, src)) - to_chat(user, "\The [W] is stuck to you!") + to_chat(user, span_warning("\The [W] is stuck to you!")) return board = W if(board.one_access) req_one_access = board.accesses else req_access = board.accesses - to_chat(user, "You add [W] to the button.") + to_chat(user, span_notice("You add [W] to the button.")) if(!device && !board && W.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start unsecuring the button frame...") + to_chat(user, span_notice("You start unsecuring the button frame...")) W.play_tool_sound(src) if(W.use_tool(src, user, 4 SECONDS)) - to_chat(user, "You unsecure the button frame.") + to_chat(user, span_notice("You unsecure the button frame.")) transfer_fingerprints_to(new /obj/item/wallframe/button(get_turf(src))) playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) qdel(src) @@ -100,19 +100,19 @@ var/obj/item/multitool/P = W if(!id) // Generate New ID if none exists id = rand(1, 25565) // rare enough that ids should never conflict - to_chat(user, "No ID found. Generating New ID") + to_chat(user, span_notice("No ID found. Generating New ID")) P.buffer = id - to_chat(user, "You link the button to the [P].") + to_chat(user, span_notice("You link the button to the [P].")) setup_device() // Has to be done. It sets the signaller up else - to_chat(user, "No blast door controller found") + to_chat(user, span_warning("No blast door controller found")) if(board && W.tool_behaviour == TOOL_WIRECUTTER) - to_chat(user, "You start wiping the button's ID...") + to_chat(user, span_warning("You start wiping the button's ID...")) W.play_tool_sound(src) if(W.use_tool(src, user, 4 SECONDS)) // To make sure they're not doing this unintentionally - to_chat(user, "You wipe the button's ID.") + to_chat(user, span_notice("You wipe the button's ID.")) id = null update_icon() @@ -165,14 +165,14 @@ req_one_access = list() board = null update_icon() - to_chat(user, "You remove electronics from the button frame.") + to_chat(user, span_notice("You remove electronics from the button frame.")) else if(skin == "doorctrl") skin = "launcher" else skin = "doorctrl" - to_chat(user, "You change the button frame's front panel.") + to_chat(user, span_notice("You change the button frame's front panel.")) return if((stat & (NOPOWER|BROKEN))) @@ -182,7 +182,7 @@ return if(!allowed(user)) - to_chat(user, "Access Denied") + to_chat(user, span_danger("Access Denied")) flick("[skin]-denied", src) return diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 8807d488aff7..8798b5b55945 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -110,24 +110,24 @@ if(isEmpProof(TRUE)) //don't reveal it's upgraded if was done via MALF AI Upgrade Camera Network ability . += "It has electromagnetic interference shielding installed." else - . += "It can be shielded against electromagnetic interference with some plasma." + . += span_info("It can be shielded against electromagnetic interference with some plasma.") if(isXRay(TRUE)) //don't reveal it's upgraded if was done via MALF AI Upgrade Camera Network ability . += "It has an X-ray photodiode installed." else - . += "It can be upgraded with an X-ray photodiode with an analyzer." + . += span_info("It can be upgraded with an X-ray photodiode with an analyzer.") if(isMotion()) . += "It has a proximity sensor installed." else - . += "It can be upgraded with a proximity sensor." + . += span_info("It can be upgraded with a proximity sensor.") if(!status) - . += "It's currently deactivated." + . += span_info("It's currently deactivated.") if(!panel_open && powered()) - . += "You'll need to open its maintenance panel with a screwdriver to turn it back on." + . += span_notice("You'll need to open its maintenance panel with a screwdriver to turn it back on.") if(panel_open) - . += "Its maintenance panel is currently open." + . += span_info("Its maintenance panel is currently open.") if(!status && powered()) - . += "It can reactivated with wirecutters." + . += span_info("It can reactivated with wirecutters.") /obj/machinery/camera/emp_act(severity) . = ..() @@ -186,7 +186,7 @@ if(..()) return TRUE panel_open = !panel_open - to_chat(user, "You screw the camera's panel [panel_open ? "open" : "closed"].") + to_chat(user, span_notice("You screw the camera's panel [panel_open ? "open" : "closed"].")) I.play_tool_sound(src) update_icon() return TRUE @@ -204,7 +204,7 @@ return FALSE setViewRange((view_range == initial(view_range)) ? short_range : initial(view_range)) - to_chat(user, "You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus.") + to_chat(user, span_notice("You [(view_range == initial(view_range)) ? "restore" : "mess up"] the camera's focus.")) return TRUE /obj/machinery/camera/welder_act(mob/living/user, obj/item/I) @@ -214,10 +214,10 @@ if(!I.tool_start_check(user, amount=0)) return TRUE - to_chat(user, "You start to weld [src]...") + to_chat(user, span_notice("You start to weld [src]...")) if(I.use_tool(src, user, 100, volume=50)) - user.visible_message("[user] unwelds [src], leaving it as just a frame bolted to the wall.", - "You unweld [src], leaving it as just a frame bolted to the wall") + user.visible_message(span_warning("[user] unwelds [src], leaving it as just a frame bolted to the wall."), + span_warning("You unweld [src], leaving it as just a frame bolted to the wall")) deconstruct(TRUE) return TRUE @@ -230,19 +230,19 @@ if(!user.temporarilyRemoveItemFromInventory(I)) return upgradeXRay(FALSE, TRUE) - to_chat(user, "You attach [I] into [assembly]'s inner circuits.") + to_chat(user, span_notice("You attach [I] into [assembly]'s inner circuits.")) qdel(I) else - to_chat(user, "[src] already has that upgrade!") + to_chat(user, span_notice("[src] already has that upgrade!")) return else if(istype(I, /obj/item/stack/sheet/mineral/plasma)) if(!isEmpProof(TRUE)) //don't reveal it was already upgraded if was done via MALF AI Upgrade Camera Network ability if(I.use_tool(src, user, 0, amount=1)) upgradeEmpProof(FALSE, TRUE) - to_chat(user, "You attach [I] into [assembly]'s inner circuits.") + to_chat(user, span_notice("You attach [I] into [assembly]'s inner circuits.")) else - to_chat(user, "[src] already has that upgrade!") + to_chat(user, span_notice("[src] already has that upgrade!")) return else if(istype(I, /obj/item/assembly/prox_sensor)) @@ -250,10 +250,10 @@ if(!user.temporarilyRemoveItemFromInventory(I)) return upgradeMotion() - to_chat(user, "You attach [I] into [assembly]'s inner circuits.") + to_chat(user, span_notice("You attach [I] into [assembly]'s inner circuits.")) qdel(I) else - to_chat(user, "[src] already has that upgrade!") + to_chat(user, span_notice("[src] already has that upgrade!")) return // OTHER @@ -272,7 +272,7 @@ P = I itemname = P.name info = P.notehtml - to_chat(U, "You hold \the [itemname] up to the camera...") + to_chat(U, span_notice("You hold \the [itemname] up to the camera...")) U.changeNext_move(CLICK_CD_MELEE) for(var/mob/O in GLOB.player_list) if(isAI(O)) @@ -291,14 +291,14 @@ else if(istype(I, /obj/item/camera_bug)) if(!can_use()) - to_chat(user, "Camera non-functional.") + to_chat(user, span_notice("Camera non-functional.")) return if(bug) - to_chat(user, "Camera bug removed.") + to_chat(user, span_notice("Camera bug removed.")) bug.bugged_cameras -= src.c_tag bug = null else - to_chat(user, "Camera bugged.") + to_chat(user, span_notice("Camera bugged.")) bug = I bug.bugged_cameras[src.c_tag] = src return @@ -371,10 +371,10 @@ addtimer(CALLBACK(src, .proc/cancelCameraAlarm), 100) if(displaymessage) if(user) - visible_message("[user] [change_msg] [src]!") + visible_message(span_danger("[user] [change_msg] [src]!")) add_hiddenprint(user) else - visible_message("\The [src] [change_msg]!") + visible_message(span_danger("\The [src] [change_msg]!")) playsound(src, 'sound/items/wirecutter.ogg', 100, TRUE) update_icon() //update Initialize() if you remove this. diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index a20facc7a5b7..f69ec7ca6b95 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -37,30 +37,30 @@ . += "It has electromagnetic interference shielding installed." has_upgrades = TRUE else if(state == STATE_WIRED) - . += "It can be shielded against electromagnetic interference with some plasma." + . += span_info("It can be shielded against electromagnetic interference with some plasma.") if(xray_module) . += "It has an X-ray photodiode installed." has_upgrades = TRUE else if(state == STATE_WIRED) - . += "It can be upgraded with an X-ray photodiode with an analyzer." + . += span_info("It can be upgraded with an X-ray photodiode with an analyzer.") if(proxy_module) . += "It has a proximity sensor installed." has_upgrades = TRUE else if(state == STATE_WIRED) - . += "It can be upgraded with a proximity sensor." + . += span_info("It can be upgraded with a proximity sensor.") //construction states switch(state) if(STATE_WRENCHED) - . += "You can secure it in place with a welder, or removed with a wrench." + . += span_info("You can secure it in place with a welder, or removed with a wrench.") if(STATE_WELDED) - . += "You can add wires to it, or unweld it from the wall." + . += span_info("You can add wires to it, or unweld it from the wall.") if(STATE_WIRED) if(has_upgrades) - . += "You can remove the contained upgrades with a crowbar." - . += "You can complete it with a screwdriver, or unwire it to start removal." + . += span_info("You can remove the contained upgrades with a crowbar.") + . += span_info("You can complete it with a screwdriver, or unwire it to start removal.") if(STATE_FINISHED) - . += "You shouldn't be seeing this, tell a coder!" + . += span_boldwarning("You shouldn't be seeing this, tell a coder!") /obj/structure/camera_assembly/Initialize(mapload, ndir, building) . = ..() @@ -125,7 +125,7 @@ if(STATE_WRENCHED) if(W.tool_behaviour == TOOL_WELDER) if(weld(W, user)) - to_chat(user, "You weld [src] securely into place.") + to_chat(user, span_notice("You weld [src] securely into place.")) setAnchored(TRUE) state = STATE_WELDED return @@ -134,17 +134,17 @@ if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = W if(C.use(2)) - to_chat(user, "You add wires to [src].") + to_chat(user, span_notice("You add wires to [src].")) state = STATE_WIRED else - to_chat(user, "You need two lengths of cable to wire a camera!") + to_chat(user, span_warning("You need two lengths of cable to wire a camera!")) return return else if(W.tool_behaviour == TOOL_WELDER) if(weld(W, user)) - to_chat(user, "You unweld [src] from its place.") + to_chat(user, span_notice("You unweld [src] from its place.")) state = STATE_WRENCHED setAnchored(TRUE) return @@ -152,7 +152,7 @@ if(STATE_WIRED) // Upgrades! if(istype(W, /obj/item/stack/sheet/mineral/plasma)) //emp upgrade if(emp_module) - to_chat(user, "[src] already contains a [emp_module]!") + to_chat(user, span_warning("[src] already contains a [emp_module]!")) return if(!W.use_tool(src, user, 0, amount=1)) //only use one sheet, otherwise the whole stack will be consumed. return @@ -160,16 +160,16 @@ if(malf_xray_firmware_active) malf_xray_firmware_active = FALSE //flavor reason: MALF AI Upgrade Camera Network ability's firmware is incompatible with the new part //real reason: make it a normal upgrade so the finished camera's icons and examine texts are restored. - to_chat(user, "You attach [W] into [src]'s inner circuits.") + to_chat(user, span_notice("You attach [W] into [src]'s inner circuits.")) return else if(istype(W, /obj/item/analyzer)) //xray upgrade if(xray_module) - to_chat(user, "[src] already contains a [xray_module]!") + to_chat(user, span_warning("[src] already contains a [xray_module]!")) return if(!user.transferItemToLoc(W, src)) return - to_chat(user, "You attach [W] into [src]'s inner circuits.") + to_chat(user, span_notice("You attach [W] into [src]'s inner circuits.")) xray_module = W if(malf_xray_firmware_active) malf_xray_firmware_active = FALSE //flavor reason: MALF AI Upgrade Camera Network ability's firmware is incompatible with the new part @@ -179,11 +179,11 @@ else if(istype(W, /obj/item/assembly/prox_sensor)) //motion sensing upgrade if(proxy_module) - to_chat(user, "[src] already contains a [proxy_module]!") + to_chat(user, span_warning("[src] already contains a [proxy_module]!")) return if(!user.transferItemToLoc(W, src)) return - to_chat(user, "You attach [W] into [src]'s inner circuits.") + to_chat(user, span_notice("You attach [W] into [src]'s inner circuits.")) proxy_module = W return @@ -204,7 +204,7 @@ var/obj/item/choice = input(user, "Select a part to remove:", src) as null|obj in droppable_parts if(!choice || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return - to_chat(user, "You remove [choice] from [src].") + to_chat(user, span_notice("You remove [choice] from [src].")) drop_upgrade(choice) tool.play_tool_sound(src) return TRUE @@ -219,11 +219,11 @@ tool.play_tool_sound(src) var/input = stripped_input(user, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13") if(!input) - to_chat(user, "No input found, please hang up and try your call again!") + to_chat(user, span_warning("No input found, please hang up and try your call again!")) return var/list/tempnetwork = splittext(input, ",") if(tempnetwork.len < 1) - to_chat(user, "No network found, please hang up and try your call again!") + to_chat(user, span_warning("No network found, please hang up and try your call again!")) return for(var/i in tempnetwork) tempnetwork -= i @@ -244,7 +244,7 @@ new /obj/item/stack/cable_coil(drop_location(), 2) I.play_tool_sound(src) - to_chat(user, "You cut the wires from the circuits.") + to_chat(user, span_notice("You cut the wires from the circuits.")) state = STATE_WELDED return TRUE @@ -252,7 +252,7 @@ if(state != STATE_WRENCHED) return FALSE I.play_tool_sound(src) - to_chat(user, "You detach [src] from its place.") + to_chat(user, span_notice("You detach [src] from its place.")) new /obj/item/wallframe/camera(drop_location()) //drop upgrades if(xray_module) @@ -268,7 +268,7 @@ /obj/structure/camera_assembly/proc/weld(obj/item/weldingtool/W, mob/living/user) if(!W.tool_start_check(user, amount=3)) return FALSE - to_chat(user, "You start to weld [src]...") + to_chat(user, span_notice("You start to weld [src]...")) if(W.use_tool(src, user, 20, amount=3, volume = 50)) return TRUE return FALSE diff --git a/code/game/machinery/camera/motion.dm b/code/game/machinery/camera/motion.dm index af5093d6caf9..3481dc985f3a 100644 --- a/code/game/machinery/camera/motion.dm +++ b/code/game/machinery/camera/motion.dm @@ -66,7 +66,7 @@ for (var/mob/living/silicon/aiPlayer in GLOB.player_list) if (status) aiPlayer.triggerAlarm("Motion", get_area(src), list(src), src) - visible_message("A red light flashes on the [src]!") + visible_message(span_warning("A red light flashes on the [src]!")) detectTime = -1 return TRUE diff --git a/code/game/machinery/camera/tracking.dm b/code/game/machinery/camera/tracking.dm index d6e5a7f0436b..0b69224d12f1 100644 --- a/code/game/machinery/camera/tracking.dm +++ b/code/game/machinery/camera/tracking.dm @@ -80,11 +80,11 @@ U.tracking = 1 if(!target || !target.can_track(usr)) - to_chat(U, "Target is not near any active cameras.") + to_chat(U, span_warning("Target is not near any active cameras.")) U.cameraFollow = null return - to_chat(U, "Now tracking [target.get_visible_name()] on camera.") + to_chat(U, span_notice("Now tracking [target.get_visible_name()] on camera.")) var/cameraticks = 0 spawn(0) @@ -95,11 +95,11 @@ if(!target.can_track(usr)) U.tracking = 1 if(!cameraticks) - to_chat(U, "Target is not near any active cameras. Attempting to reacquire...") + to_chat(U, span_warning("Target is not near any active cameras. Attempting to reacquire...")) cameraticks++ if(cameraticks > 9) U.cameraFollow = null - to_chat(U, "Unable to reacquire, cancelling track...") + to_chat(U, span_warning("Unable to reacquire, cancelling track...")) tracking = 0 return else diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm index cb5aa575b432..a20aa05f6520 100644 --- a/code/game/machinery/cell_charger.dm +++ b/code/game/machinery/cell_charger.dm @@ -34,26 +34,26 @@ /obj/machinery/cell_charger/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/stock_parts/cell) && !panel_open) if(stat & BROKEN) - to_chat(user, "[src] is broken!") + to_chat(user, span_warning("[src] is broken!")) return if(!anchored) - to_chat(user, "[src] isn't attached to the ground!") + to_chat(user, span_warning("[src] isn't attached to the ground!")) return if(charging) - to_chat(user, "There is already a cell in the charger!") + to_chat(user, span_warning("There is already a cell in the charger!")) return else var/area/a = loc.loc // Gets our locations location, like a dream within a dream if(!isarea(a)) return if(a.power_equip == 0) // There's no APC in this area, don't try to cheat power! - to_chat(user, "[src] blinks red as you try to insert the cell!") + to_chat(user, span_warning("[src] blinks red as you try to insert the cell!")) return if(!user.transferItemToLoc(W,src)) return charging = W - user.visible_message("[user] inserts a cell into [src].", "You insert a cell into [src].") + user.visible_message("[user] inserts a cell into [src].", span_notice("You insert a cell into [src].")) chargelevel = -1 update_icon() else @@ -90,7 +90,7 @@ user.put_in_hands(charging) charging.add_fingerprint(user) - user.visible_message("[user] removes [charging] from [src].", "You remove [charging] from [src].") + user.visible_message("[user] removes [charging] from [src].", span_notice("You remove [charging] from [src].")) removecell() @@ -99,7 +99,7 @@ return charging.forceMove(loc) - to_chat(user, "You telekinetically remove [charging] from [src].") + to_chat(user, span_notice("You telekinetically remove [charging] from [src].")) removecell() diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index e02d4e418f6f..a16db0ca56ab 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -89,7 +89,7 @@ GLOBAL_VAR_INIT(clones, 0) /obj/machinery/clonepod/examine(mob/user) . = ..() - . += "The linking device can be scanned with a multitool." + . += span_notice("The linking device can be scanned with a multitool.") if(in_range(user, src) || isobserver(user)) . += "The status display reads: Cloning speed at [speed_coeff*50]%.
Predicted amount of cellular damage: [100-heal_level]%." . += "The status display reads: Biomass levels at [biomass]%" // read out the amount of biomass if you examine @@ -115,7 +115,7 @@ GLOBAL_VAR_INIT(clones, 0) /obj/item/disk/data/attack_self(mob/user) read_only = !read_only - to_chat(user, "You flip the write-protect tab to [read_only ? "protected" : "unprotected"].") + to_chat(user, span_notice("You flip the write-protect tab to [read_only ? "protected" : "unprotected"].")) /obj/item/disk/data/examine(mob/user) . = ..() @@ -267,11 +267,11 @@ GLOBAL_VAR_INIT(clones, 0) if(grab_ghost_when == CLONER_FRESH_CLONE) H.grab_ghost() - to_chat(H, "Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?
") + to_chat(H, span_notice("Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?")) if(grab_ghost_when == CLONER_MATURE_CLONE) H.ghostize(TRUE) //Only does anything if they were still in their old body and not already a ghost - to_chat(H.get_ghost(TRUE), "Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete.") + to_chat(H.get_ghost(TRUE), span_notice("Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete.")) if(H) H.faction |= factions @@ -410,10 +410,10 @@ GLOBAL_VAR_INIT(clones, 0) var/mob/living/mob_occupant = occupant if(W.GetID()) if(!check_access(W)) - to_chat(user, "Access Denied.") + to_chat(user, span_danger("Access Denied.")) return if(!(mob_occupant || mess)) - to_chat(user, "Error: Pod has no occupant.") + to_chat(user, span_danger("Error: Pod has no occupant.")) return else add_fingerprint(user) @@ -421,7 +421,7 @@ GLOBAL_VAR_INIT(clones, 0) log_combat(user, mob_occupant, "ejected", W, "from [src]") connected_message("Emergency Ejection") SPEAK("An emergency ejection of [clonemind.name] has occurred. Survival not guaranteed.") - to_chat(user, "You force an emergency ejection. ") + to_chat(user, span_notice("You force an emergency ejection. ")) go_out() else return ..() @@ -429,7 +429,7 @@ GLOBAL_VAR_INIT(clones, 0) /obj/machinery/clonepod/emag_act(mob/user) if(!occupant) return - to_chat(user, "You corrupt the genetic compiler.") + to_chat(user, span_warning("You corrupt the genetic compiler.")) malfunction() add_fingerprint(user) log_cloning("[key_name(user)] emagged [src] at [AREACOORD(src)], causing it to malfunction.") @@ -460,7 +460,7 @@ GLOBAL_VAR_INIT(clones, 0) unattached_flesh.Cut() mess = FALSE new /obj/effect/gibspawner/generic(get_turf(src), mob_occupant) - audible_message("You hear a splat.") + audible_message(span_italics("You hear a splat.")) icon_state = "pod_0" return @@ -476,8 +476,8 @@ GLOBAL_VAR_INIT(clones, 0) if(grab_ghost_when == CLONER_MATURE_CLONE) mob_occupant.grab_ghost() - to_chat(occupant, "There is a bright flash!
You feel like a new being.
") - to_chat(occupant, "You do not remember your death, how you died, or who killed you. See rule 1.6.") //yogs + to_chat(occupant, span_notice("There is a bright flash!
You feel like a new being.")) + to_chat(occupant, span_notice("You do not remember your death, how you died, or who killed you. See rule 1.6.")) //yogs mob_occupant.flash_act() GLOB.clones++ @@ -504,7 +504,7 @@ GLOBAL_VAR_INIT(clones, 0) clonemind.transfer_to(mob_occupant) mob_occupant.grab_ghost() // We really just want to make you suffer. flash_color(mob_occupant, flash_color="#960000", flash_time=100) - to_chat(mob_occupant, "Agony blazes across your consciousness as your body is torn apart.
Is this what dying is like? Yes it is.
") + to_chat(mob_occupant, span_warning("Agony blazes across your consciousness as your body is torn apart.
Is this what dying is like? Yes it is.")) playsound(src, 'sound/machines/warning-buzzer.ogg', 50) SEND_SOUND(mob_occupant, sound('sound/hallucinations/veryfar_noise.ogg',0,1,50)) log_cloning("[key_name(mob_occupant)] destroyed within [src] at [AREACOORD(src)] due to malfunction.") diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 60e5ad879ba0..e9ca42a8ddc6 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -106,7 +106,7 @@ if(..()) return TRUE if(circuit && !(flags_1&NODECONSTRUCT_1)) - to_chat(user, "You start to disconnect the monitor...") + to_chat(user, span_notice("You start to disconnect the monitor...")) if(I.use_tool(src, user, time_to_scewdrive, volume=50)) deconstruct(TRUE, user) return TRUE @@ -151,7 +151,7 @@ A.setAnchored(TRUE) if(stat & BROKEN) if(user) - to_chat(user, "The broken glass falls out.") + to_chat(user, span_notice("The broken glass falls out.")) else playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, 1) new /obj/item/shard(drop_location()) @@ -160,7 +160,7 @@ A.icon_state = "3" else if(user) - to_chat(user, "You disconnect the monitor.") + to_chat(user, span_notice("You disconnect the monitor.")) A.state = 4 A.icon_state = "4" circuit = null diff --git a/code/game/machinery/computer/aifixer.dm b/code/game/machinery/computer/aifixer.dm index 8fa0a34b6c38..cc72c13010af 100644 --- a/code/game/machinery/computer/aifixer.dm +++ b/code/game/machinery/computer/aifixer.dm @@ -14,9 +14,9 @@ /obj/machinery/computer/aifixer/screwdriver_act(mob/living/user, obj/item/I) if(occupier) if(stat & (NOPOWER|BROKEN)) - to_chat(user, "The screws on [name]'s screen won't budge.") + to_chat(user, span_warning("The screws on [name]'s screen won't budge.")) else - to_chat(user, "The screws on [name]'s screen won't budge and it emits a warning beep.") + to_chat(user, span_warning("The screws on [name]'s screen won't budge and it emits a warning beep.")) else return ..() @@ -53,7 +53,7 @@ switch(action) if("PRG_beginReconstruction") if(occupier?.health < 100) - to_chat(usr, "Reconstruction in progress. This will take several minutes.") + to_chat(usr, span_notice("Reconstruction in progress. This will take several minutes.")) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 25, FALSE) restoring = TRUE occupier.notify_ghost_cloning("Your core files are being restored!", source = src) @@ -106,22 +106,22 @@ AI.control_disabled = TRUE AI.radio_enabled = FALSE to_chat(AI, "You have been uploaded to a stationary terminal. Sadly, there is no remote access from here.") - to_chat(user, "Transfer successful: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.") + to_chat(user, "[span_boldnotice("Transfer successful")]: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.") card.AI = null update_icon() else //Uploading AI from terminal to card if(occupier && !restoring) - to_chat(occupier, "You have been downloaded to a mobile storage device. Still no remote access.") - to_chat(user, "Transfer successful: [occupier.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.") + to_chat(occupier, span_notice("You have been downloaded to a mobile storage device. Still no remote access.")) + to_chat(user, "[span_notice("Transfer successful")]: [occupier.name] ([rand(1000,9999)].exe) removed from host terminal and stored within local memory.") occupier.forceMove(card) card.AI = occupier occupier = null update_icon() else if (restoring) - to_chat(user, "ERROR: Reconstruction in progress.") + to_chat(user, span_alert("ERROR: Reconstruction in progress.")) else if (!occupier) - to_chat(user, "ERROR: Unable to locate artificial intelligence.") + to_chat(user, "[span_boldannounce("ERROR")]: Unable to locate artificial intelligence.") /obj/machinery/computer/aifixer/on_deconstruction() if(occupier) diff --git a/code/game/machinery/computer/apc_control.dm b/code/game/machinery/computer/apc_control.dm index 63c8d3bd8cdd..d94d0827de9c 100644 --- a/code/game/machinery/computer/apc_control.dm +++ b/code/game/machinery/computer/apc_control.dm @@ -32,7 +32,7 @@ /obj/machinery/computer/apc_control/attack_ai(mob/user) if(!IsAdminGhost(user)) - to_chat(user,"[src] does not support AI control.") //You already have APC access, cheater! + to_chat(user,span_warning("[src] does not support AI control.")) //You already have APC access, cheater! return ..() diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm index 3d1642fee1b8..0edf270b0356 100644 --- a/code/game/machinery/computer/arcade.dm +++ b/code/game/machinery/computer/arcade.dm @@ -101,7 +101,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( new prizeselect(src) var/atom/movable/the_prize = pick(contents) - visible_message("[src] dispenses [the_prize]!", "You hear a chime and a clunk.") + visible_message(span_notice("[src] dispenses [the_prize]!"), span_notice("You hear a chime and a clunk.")) the_prize.forceMove(get_turf(src)) @@ -134,13 +134,13 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/obj/item/stack/arcadeticket/T = O var/amount = T.get_amount() if(amount <2) - to_chat(user, "You need 2 tickets to claim a prize!") + to_chat(user, span_warning("You need 2 tickets to claim a prize!")) return prizevend(user) T.pay_tickets() T.update_icon() O = T - to_chat(user, "You turn in 2 tickets to the [src] and claim a prize!") + to_chat(user, span_notice("You turn in 2 tickets to the [src] and claim a prize!")) return // ** BATTLE ** // @@ -330,7 +330,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/machinery/computer/arcade/battle/emag_act(mob/user) if(obj_flags & EMAGGED) return - to_chat(user, "A mesmerizing Rhumba beat starts playing from the arcade machine's speakers!") + to_chat(user, span_warning("A mesmerizing Rhumba beat starts playing from the arcade machine's speakers!")) temp = "If you die in the game, you die for real!" player_hp = 30 player_mp = 10 @@ -467,17 +467,17 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( dat += "
You ran out of food and starved." if(obj_flags & EMAGGED) user.set_nutrition(0) //yeah you pretty hongry - to_chat(user, "Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.") + to_chat(user, span_userdanger("Your body instantly contracts to that of one who has not eaten in months. Agonizing cramps seize you as you fall to the floor.")) if(fuel <= 0) dat += "
You ran out of fuel, and drift, slowly, into a star." if(obj_flags & EMAGGED) var/mob/living/M = user M.adjust_fire_stacks(5) M.IgniteMob() //flew into a star, so you're on fire - to_chat(user, "You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.") + to_chat(user, span_userdanger("You feel an immense wave of heat emanate from the arcade machine. Your skin bursts into flames.")) if(obj_flags & EMAGGED) - to_chat(user, "You're never going to make it to Orion...") + to_chat(user, span_userdanger("You're never going to make it to Orion...")) user.death() obj_flags &= ~EMAGGED //removes the emagged status after you lose gameStatus = ORION_STATUS_START @@ -545,21 +545,21 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( switch(event) if(ORION_TRAIL_RAIDERS) if(prob(50)) - to_chat(usr, "You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?") + to_chat(usr, span_userdanger("You hear battle shouts. The tramping of boots on cold metal. Screams of agony. The rush of venting air. Are you going insane?")) M.hallucination += 30 else - to_chat(usr, "Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...") + to_chat(usr, span_userdanger("Something strikes you from behind! It hurts like hell and feel like a blunt weapon, but nothing is there...")) M.take_bodypart_damage(30) playsound(loc, 'sound/weapons/genhit2.ogg', 100, 1) if(ORION_TRAIL_ILLNESS) var/severity = rand(1,3) //pray to RNGesus. PRAY, PIGS if(severity == 1) - to_chat(M, "You suddenly feel slightly nauseated." ) + to_chat(M, span_userdanger("You suddenly feel slightly nauseated.") ) if(severity == 2) - to_chat(usr, "You suddenly feel extremely nauseated and hunch over until it passes.") + to_chat(usr, span_userdanger("You suddenly feel extremely nauseated and hunch over until it passes.")) M.Stun(60) if(severity >= 3) //you didn't pray hard enough - to_chat(M, "An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.") + to_chat(M, span_warning("An overpowering wave of nausea consumes over you. You hunch over, your stomach's contents preparing for a spectacular exit.")) M.Stun(100) sleep(30) M.vomit(10, distance = 5) @@ -570,7 +570,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( M.take_bodypart_damage(25) playsound(loc, 'sound/weapons/genhit.ogg', 100, 1) else - to_chat(M, "A violent gale blows past you, and you barely manage to stay standing!") + to_chat(M, span_userdanger("A violent gale blows past you, and you barely manage to stay standing!")) if(ORION_TRAIL_COLLISION) //by far the most damaging event if(prob(90)) playsound(loc, 'sound/effects/bang.ogg', 100, 1) @@ -590,7 +590,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( playsound(loc, 'sound/effects/bang.ogg', 50, 1) if(ORION_TRAIL_MALFUNCTION) playsound(loc, 'sound/effects/empulse.ogg', 50, 1) - visible_message("[src] malfunctions, randomizing in-game stats!") + visible_message(span_danger("[src] malfunctions, randomizing in-game stats!")) var/oldfood = food var/oldfuel = fuel food = rand(10,80) / rand(1,2) @@ -598,9 +598,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( if(electronics) sleep(10) if(oldfuel > fuel && oldfood > food) - audible_message("[src] lets out a somehow reassuring chime.") + audible_message(span_danger("[src] lets out a somehow reassuring chime.")) else if(oldfuel < fuel || oldfood < food) - audible_message("[src] lets out a somehow ominous chime.") + audible_message(span_danger("[src] lets out a somehow ominous chime.")) food = oldfood fuel = oldfuel playsound(loc, 'sound/machines/chime.ogg', 50, 1) @@ -1086,7 +1086,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( /obj/machinery/computer/arcade/orion_trail/emag_act(mob/user) if(obj_flags & EMAGGED) return - to_chat(user, "You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.") + to_chat(user, span_notice("You override the cheat code menu and skip to Cheat #[rand(1, 50)]: Realism Mode.")) name = "The Orion Trail: Realism Edition" desc = "Learn how our ancestors got to Orion, and try not to die in the process!" newgame() @@ -1112,9 +1112,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( if(!(in_range(user, src))) return if(!active) - . += "There's a little switch on the bottom. It's flipped down." + . += span_notice("There's a little switch on the bottom. It's flipped down.") else - . += "There's a little switch on the bottom. It's flipped up." + . += span_notice("There's a little switch on the bottom. It's flipped up.") /obj/item/orion_ship/attack_self(mob/user) //Minibomb-level explosion. Should probably be more because of how hard it is to survive the machine! Also, just over a 5-second fuse if(active) @@ -1122,19 +1122,19 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( log_bomber(usr, "primed an explosive", src, "for detonation") - to_chat(user, "You flip the switch on the underside of [src].") + to_chat(user, span_warning("You flip the switch on the underside of [src].")) active = 1 - visible_message("[src] softly beeps and whirs to life!") + visible_message(span_notice("[src] softly beeps and whirs to life!")) playsound(loc, 'sound/machines/defib_SaftyOn.ogg', 25, 1) say("This is ship ID #[rand(1,1000)] to Orion Port Authority. We're coming in for landing, over.") sleep(20) - visible_message("[src] begins to vibrate...") + visible_message(span_warning("[src] begins to vibrate...")) say("Uh, Port? Having some issues with our reactor, could you check it out? Over.") sleep(30) say("Oh, God! Code Eight! CODE EIGHT! IT'S GONNA BL-") playsound(loc, 'sound/machines/buzz-sigh.ogg', 25, 1) sleep(3.6) - visible_message("[src] explodes!") + visible_message(span_userdanger("[src] explodes!")) explosion(loc, 2,4,8, flame_range = 16) qdel(src) @@ -1152,9 +1152,9 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( var/mob/living/carbon/c_user = user if(!c_user.get_bodypart(BODY_ZONE_L_ARM) && !c_user.get_bodypart(BODY_ZONE_R_ARM)) return - to_chat(c_user, "You move your hand towards the machine, and begin to hesitate as a bloodied guillotine emerges from inside of it...") + to_chat(c_user, span_warning("You move your hand towards the machine, and begin to hesitate as a bloodied guillotine emerges from inside of it...")) if(do_after(c_user, 50, target = src)) - to_chat(c_user, "The guillotine drops on your arm, and the machine sucks it in!") + to_chat(c_user, span_userdanger("The guillotine drops on your arm, and the machine sucks it in!")) playsound(loc, 'sound/weapons/slice.ogg', 25, 1, -1) var/which_hand = BODY_ZONE_L_ARM if(!(c_user.active_hand_index % 2)) @@ -1166,7 +1166,7 @@ GLOBAL_LIST_INIT(arcade_prize_pool, list( for(var/i=1; i<=rand(3,5); i++) prizevend(user) else - to_chat(c_user, "You (wisely) decide against putting your hand in the machine.") + to_chat(c_user, span_notice("You (wisely) decide against putting your hand in the machine.")) #undef ORION_TRAIL_WINTURN #undef ORION_TRAIL_RAIDERS diff --git a/code/game/machinery/computer/atmos_control.dm b/code/game/machinery/computer/atmos_control.dm index 0467515c7185..7cabc9b4c943 100644 --- a/code/game/machinery/computer/atmos_control.dm +++ b/code/game/machinery/computer/atmos_control.dm @@ -242,7 +242,7 @@ GLOBAL_LIST_EMPTY(atmos_air_controllers) var/list/text = splittext(U.id, "_") IO |= text[1] if(!IO.len) - to_chat(user, "No machinery detected.") + to_chat(user, span_alert("No machinery detected.")) var/S = input("Select the device set: ", "Selection", IO[1]) as anything in IO if(src) src.input_tag = "[S]_in" diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm index 7e7fec58e098..6c022460a1f9 100644 --- a/code/game/machinery/computer/buildandrepair.dm +++ b/code/game/machinery/computer/buildandrepair.dm @@ -8,9 +8,9 @@ switch(state) if(0) if(P.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start wrenching the frame into place...") + to_chat(user, span_notice("You start wrenching the frame into place...")) if(P.use_tool(src, user, 20, volume=50)) - to_chat(user, "You wrench the frame into place.") + to_chat(user, span_notice("You wrench the frame into place.")) setAnchored(TRUE) state = 1 return @@ -18,18 +18,18 @@ if(!P.tool_start_check(user, amount=0)) return - to_chat(user, "You start deconstructing the frame...") + to_chat(user, span_notice("You start deconstructing the frame...")) if(P.use_tool(src, user, 20, volume=50)) - to_chat(user, "You deconstruct the frame.") + to_chat(user, span_notice("You deconstruct the frame.")) var/obj/item/stack/sheet/metal/M = new (drop_location(), 5) M.add_fingerprint(user) qdel(src) return if(1) if(P.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start to unfasten the frame...") + to_chat(user, span_notice("You start to unfasten the frame...")) if(P.use_tool(src, user, 20, volume=50)) - to_chat(user, "You unfasten the frame.") + to_chat(user, span_notice("You unfasten the frame.")) setAnchored(FALSE) state = 0 return @@ -37,24 +37,24 @@ if(!user.transferItemToLoc(P, src)) return playsound(src, 'sound/items/deconstruct.ogg', 50, 1) - to_chat(user, "You place [P] inside the frame.") + to_chat(user, span_notice("You place [P] inside the frame.")) icon_state = "1" circuit = P circuit.add_fingerprint(user) return else if(istype(P, /obj/item/circuitboard) && !circuit) - to_chat(user, "This frame does not accept circuit boards of this type!") + to_chat(user, span_warning("This frame does not accept circuit boards of this type!")) return if(P.tool_behaviour == TOOL_SCREWDRIVER && circuit) P.play_tool_sound(src) - to_chat(user, "You screw [circuit] into place.") + to_chat(user, span_notice("You screw [circuit] into place.")) state = 2 icon_state = "2" return if(P.tool_behaviour == TOOL_CROWBAR && circuit) P.play_tool_sound(src) - to_chat(user, "You remove [circuit].") + to_chat(user, span_notice("You remove [circuit].")) state = 1 icon_state = "0" circuit.forceMove(drop_location()) @@ -64,25 +64,25 @@ if(2) if(P.tool_behaviour == TOOL_SCREWDRIVER && circuit) P.play_tool_sound(src) - to_chat(user, "You unfasten the circuit board.") + to_chat(user, span_notice("You unfasten the circuit board.")) state = 1 icon_state = "1" return if(istype(P, /obj/item/stack/cable_coil)) if(!P.tool_start_check(user, amount=5)) return - to_chat(user, "You start adding cables to the frame...") + to_chat(user, span_notice("You start adding cables to the frame...")) if(P.use_tool(src, user, 20, volume=50, amount=5)) if(state != 2) return - to_chat(user, "You add cables to the frame.") + to_chat(user, span_notice("You add cables to the frame.")) state = 3 icon_state = "3" return if(3) if(P.tool_behaviour == TOOL_WIRECUTTER) P.play_tool_sound(src) - to_chat(user, "You remove the cables.") + to_chat(user, span_notice("You remove the cables.")) state = 2 icon_state = "2" var/obj/item/stack/cable_coil/A = new (drop_location(), 5) @@ -93,18 +93,18 @@ if(!P.tool_start_check(user, amount=2)) return playsound(src, 'sound/items/deconstruct.ogg', 50, 1) - to_chat(user, "You start to put in the glass panel...") + to_chat(user, span_notice("You start to put in the glass panel...")) if(P.use_tool(src, user, 20, amount=2)) if(state != 3) return - to_chat(user, "You put in the glass panel.") + to_chat(user, span_notice("You put in the glass panel.")) state = 4 src.icon_state = "4" return if(4) if(P.tool_behaviour == TOOL_CROWBAR) P.play_tool_sound(src) - to_chat(user, "You remove the glass panel.") + to_chat(user, span_notice("You remove the glass panel.")) state = 3 icon_state = "3" var/obj/item/stack/sheet/glass/G = new(drop_location(), 2) @@ -112,7 +112,7 @@ return if(P.tool_behaviour == TOOL_SCREWDRIVER) P.play_tool_sound(src) - to_chat(user, "You connect the monitor.") + to_chat(user, span_notice("You connect the monitor.")) var/obj/B = new circuit.build_path (loc, circuit) B.setDir(dir) transfer_fingerprints_to(B) @@ -137,7 +137,7 @@ return if(anchored) - to_chat(usr, "You must unwrench [src] before rotating it!") + to_chat(usr, span_warning("You must unwrench [src] before rotating it!")) return setDir(turn(dir, -90)) diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm index cd36149b9092..10818c303d0e 100644 --- a/code/game/machinery/computer/camera_advanced.dm +++ b/code/game/machinery/computer/camera_advanced.dm @@ -311,10 +311,10 @@ /obj/machinery/computer/camera_advanced/ratvar/can_use(mob/living/user) if(!is_servant_of_ratvar(user)) - to_chat(user, "[src]'s keys are in a language foreign to you, and you don't understand anything on its screen.") + to_chat(user, span_warning("[src]'s keys are in a language foreign to you, and you don't understand anything on its screen.")) return if(clockwork_ark_active()) - to_chat(user, "The Ark is active, and [src] has shut down.") + to_chat(user, span_warning("The Ark is active, and [src] has shut down.")) return . = ..() @@ -343,31 +343,31 @@ if(!is_reebe(user.z) || !is_station_level(T.z)) return if(isclosedturf(T)) - to_chat(user, "You can't teleport into a wall.") + to_chat(user, "[span_sevtug_small("You can't teleport into a wall.")]") return else if(isspaceturf(T)) - to_chat(user, "[prob(1) ? "Servant cannot into space." : "You can't teleport into space."]") + to_chat(user, "[span_sevtug_small("[prob(1) ? "Servant cannot into space." : "You can't teleport into space."]")]") return else if(T.flags_1 & NOJAUNT_1) - to_chat(user, "This tile is blessed by strange energies and deflects the warp.") + to_chat(user, "[span_sevtug_small("This tile is blessed by strange energies and deflects the warp.")]") return else if(locate(/obj/effect/blessing, T)) - to_chat(user, "This tile is blessed by holy water and deflects the warp.") + to_chat(user, "[span_sevtug_small("This tile is blessed by holy water and deflects the warp.")]") return var/area/AR = get_area(T) if(!AR.clockwork_warp_allowed) - to_chat(user, "[AR.clockwork_warp_fail]") + to_chat(user, "[span_sevtug_small("[AR.clockwork_warp_fail]")]") return if(alert(user, "Are you sure you want to warp to [AR]?", target.name, "Warp", "Cancel") == "Cancel" || QDELETED(R) || !user.canUseTopic(R)) return do_sparks(5, TRUE, user) do_sparks(5, TRUE, T) - user.visible_message("[user]'s [target.name] flares!", "You begin warping to [AR]...") + user.visible_message(span_warning("[user]'s [target.name] flares!"), "You begin warping to [AR]...") button_icon_state = "warp_cancel" owner.update_action_buttons() var/warp_time = 50 if(!istype(T, /turf/open/floor/clockwork) && GLOB.clockwork_hardmode_active) - to_chat(user, "The [target.name]'s inner machinery protests vehemently as it attempts to warp you to a non-brass tile, this will take time...") + to_chat(user, "[span_sevtug_small("The [target.name]'s inner machinery protests vehemently as it attempts to warp you to a non-brass tile, this will take time...")]") warp_time = 300 warping = new(T, user, warp_time) if(!do_after(user, warp_time, target = warping, extra_checks = CALLBACK(src, .proc/is_canceled))) @@ -379,7 +379,7 @@ return button_icon_state = "warp_down" owner.update_action_buttons() - T.visible_message("[user] warps in!") + T.visible_message(span_warning("[user] warps in!")) playsound(user, 'sound/magic/magic_missile.ogg', 50, TRUE) playsound(T, 'sound/magic/magic_missile.ogg', 50, TRUE) user.forceMove(get_turf(T)) diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm index 4e7ec1263aac..4688a4607cf0 100644 --- a/code/game/machinery/computer/card.dm +++ b/code/game/machinery/computer/card.dm @@ -57,7 +57,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) /obj/machinery/computer/card/examine(mob/user) . = ..() if(modify) - . += "Alt-click to eject the ID card." + . += span_notice("Alt-click to eject the ID card.") /obj/machinery/computer/card/Initialize() . = ..() @@ -370,7 +370,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) if(region_access) authenticated = 1 else if ((!( authenticated ) && issilicon(usr)) && (!modify)) - to_chat(usr, "You can't modify an ID without an ID inserted to modify! Once one is in the modify slot on the computer, you can log in.") + to_chat(usr, span_warning("You can't modify an ID without an ID inserted to modify! Once one is in the modify slot on the computer, you can log in.")) if ("logout") region_access = null head_subordinates = null @@ -407,11 +407,11 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) updateUsrDialog() break if(!jobdatum) - to_chat(usr, "No log exists for this job.") + to_chat(usr, span_warning("No log exists for this job.")) updateUsrDialog() return if(!isnull(modify.registered_age) && modify.registered_age < jobdatum.minimal_character_age) - to_chat(usr, "This individual is too young to hold that Job, per Nanotrasen guidelines. Suggest aborting Job Assignment!") + to_chat(usr, span_warning("This individual is too young to hold that Job, per Nanotrasen guidelines. Suggest aborting Job Assignment!")) if(modify.registered_account) modify.registered_account.account_job = jobdatum // this is a terrible idea and people will grief but sure whatever @@ -425,7 +425,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) modify.assignment = "Unassigned" playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) else - to_chat(usr, "You are not authorized to demote this position.") + to_chat(usr, span_error("You are not authorized to demote this position.")) if ("reg") if (authenticated) var/t2 = modify @@ -435,7 +435,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) modify.registered_age = newAge playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) else if(!isnull(newAge)) - to_chat(usr, "Invalid age entered- age not updated.") + to_chat(usr, span_alert("Invalid age entered- age not updated.")) updateUsrDialog() var/newName = reject_bad_name(href_list["reg"]) @@ -443,7 +443,7 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) modify.registered_name = newName playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) else - to_chat(usr, "Invalid name entered.") + to_chat(usr, span_error("Invalid name entered.")) updateUsrDialog() return if ("mode") @@ -502,12 +502,12 @@ GLOBAL_VAR_INIT(time_last_changed_position, 0) SSjob.prioritized_jobs -= j priority = FALSE else if(j.total_positions <= j.current_positions) - to_chat(usr, "[j.title] has had all positions filled. Open up more slots before prioritizing it.") + to_chat(usr, span_notice("[j.title] has had all positions filled. Open up more slots before prioritizing it.")) updateUsrDialog() return else SSjob.prioritized_jobs += j - to_chat(usr, "[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.") + to_chat(usr, span_notice("[j.title] has been successfully [priority ? "prioritized" : "unprioritized"]. Potential employees will notice your request.")) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, 0) if ("print") diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 5e3557c16a18..a1afc9915064 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -138,7 +138,7 @@ if (!user.transferItemToLoc(W,src)) return diskette = W - to_chat(user, "You insert [W].") + to_chat(user, span_notice("You insert [W].")) playsound(src, 'sound/machines/terminal_insert_disc.ogg', 50, 0) updateUsrDialog() else if(W.tool_behaviour == TOOL_MULTITOOL) @@ -177,7 +177,7 @@ else dat += "Stop autoprocess" else - dat += "Autoprocess" + dat += span_linkOff("Autoprocess") dat += "

Cloning Pod Status

" dat += "
[temp] 
" switch(menu) @@ -214,14 +214,14 @@ dat += "Body-Only Scan" dat += "
[scanner.locked ? "Unlock Scanner" : "Lock Scanner"]" else - dat += "Start Scan" + dat += span_linkOff("Start Scan") // Database dat += "

Database Functions

" if (records.len && records.len > 0) dat += "View Records ([records.len])
" else - dat += "View Records (0)
" + dat += "[span_linkOff("View Records (0)")]
" if (diskette) dat += "Eject Disk
" @@ -252,7 +252,7 @@ else dat += "Unable to locate Health Implant.

" - dat += "Unique Identifier:
[active_record.fields["UI"]]
" + dat += "Unique Identifier:
[span_highlight("[active_record.fields["UI"]]")]
" dat += "Structural Enzymes:
" for(var/key in active_record.fields["SE"]) if(key != RACEMUT) @@ -282,7 +282,7 @@ if(can_load) dat += "
Load From Disk" else - dat += "Cannot Load From Disk: Access Denied" + dat += span_linkOff("Cannot Load From Disk: Access Denied") if(diskette.fields["SE"]) if(!include_se) dat += "
Currently Excluding SE" diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm index 2f5d10f94dfb..015398197738 100755 --- a/code/game/machinery/computer/communications.dm +++ b/code/game/machinery/computer/communications.dm @@ -81,7 +81,7 @@ obj_flags |= EMAGGED if (authenticated) authorize_access = get_all_accesses() - to_chat(user, "You scramble the communication routing circuits!") + to_chat(user, span_danger("You scramble the communication routing circuits!")) playsound(src, 'sound/machines/terminal_alert.ogg', 50, 0) /obj/machinery/computer/communications/ui_act(action, list/params) @@ -131,11 +131,11 @@ var/obj/item/held_item = usr.get_active_held_item() var/obj/item/card/id/id_card = held_item?.GetID() if (!istype(id_card)) - to_chat(usr, "You need to swipe your ID!") + to_chat(usr, span_warning("You need to swipe your ID!")) playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return if (!(ACCESS_CAPTAIN in id_card.access)) - to_chat(usr, "You are not authorized to do this!") + to_chat(usr, span_warning("You are not authorized to do this!")) playsound(src, 'sound/machines/terminal_prompt_deny.ogg', 50, FALSE) return @@ -147,13 +147,13 @@ set_security_level(new_sec_level) - to_chat(usr, "Authorization confirmed. Modifying security level.") + to_chat(usr, span_notice("Authorization confirmed. Modifying security level.")) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) // Only notify people if an actual change happened log_game("[key_name(usr)] has changed the security level to [params["newSecurityLevel"]] with [src] at [AREACOORD(usr)].") message_admins("[ADMIN_LOOKUPFLW(usr)] has changed the security level to [params["newSecurityLevel"]] with [src] at [AREACOORD(usr)].") - deadchat_broadcast(" has changed the security level to [params["newSecurityLevel"]] with [src] at [get_area_name(usr, TRUE)].", "[usr.real_name]", usr) + deadchat_broadcast(" has changed the security level to [params["newSecurityLevel"]] with [src] at [span_name("[get_area_name(usr, TRUE)]")].", span_name("[usr.real_name]"), usr) alert_level_tick += 1 if ("deleteMessage") @@ -183,27 +183,27 @@ var/emagged = obj_flags & EMAGGED if (emagged) message_syndicate(message, usr) - to_chat(usr, "SYSERR @l(19833)of(transmit.dm): !@$ MESSAGE TRANSMITTED TO SYNDICATE COMMAND.") + to_chat(usr, span_danger("SYSERR @l(19833)of(transmit.dm): !@$ MESSAGE TRANSMITTED TO SYNDICATE COMMAND.")) else message_centcom(message, usr) - to_chat(usr, "Message transmitted to Central Command.") + to_chat(usr, span_notice("Message transmitted to Central Command.")) var/associates = emagged ? "the Syndicate": "CentCom" usr.log_talk(message, LOG_SAY, tag = "message to [associates]") - deadchat_broadcast(" has messaged [associates], \"[message]\" at [get_area_name(usr, TRUE)].", "[usr.real_name]", usr) + deadchat_broadcast(" has messaged [associates], \"[message]\" at [span_name("[get_area_name(usr, TRUE)]")].", span_name("[usr.real_name]"), usr) COOLDOWN_START(src, important_action_cooldown, IMPORTANT_ACTION_COOLDOWN) if ("purchaseShuttle") var/can_buy_shuttles_or_fail_reason = can_buy_shuttles(usr) if (can_buy_shuttles_or_fail_reason != TRUE) if (can_buy_shuttles_or_fail_reason != FALSE) - to_chat(usr, "[can_buy_shuttles_or_fail_reason]") + to_chat(usr, span_alert("[can_buy_shuttles_or_fail_reason]")) return var/list/shuttles = flatten_list(SSmapping.shuttle_templates) var/datum/map_template/shuttle/shuttle = locate(params["shuttle"]) in shuttles if (!istype(shuttle)) return if (!shuttle.prerequisites_met()) - to_chat(usr, "You have not met the requirements for purchasing this shuttle.") + to_chat(usr, span_alert("You have not met the requirements for purchasing this shuttle.")) return if(shuttle.emag_buy && !(obj_flags & EMAGGED)) return //return silently, only way this could happen is an attempted href exploit @@ -233,7 +233,7 @@ return var/reason = trim(html_encode(params["reason"]), MAX_MESSAGE_LEN) nuke_request(reason, usr) - to_chat(usr, "Request sent.") + to_chat(usr, span_notice("Request sent.")) usr.log_message("has requested the nuclear codes from CentCom with reason \"[reason]\"", LOG_SAY) priority_announce("The codes for the on-station nuclear self-destruct have been requested by [usr]. Confirmation or denial of this request will be sent shortly.", "Nuclear Self-Destruct Codes Requested", SSstation.announcer.get_rand_report_sound()) playsound(src, 'sound/machines/terminal_prompt.ogg', 50, FALSE) @@ -243,7 +243,7 @@ return if (!(obj_flags & EMAGGED)) return - to_chat(usr, "Backup routing data restored.") + to_chat(usr, span_notice("Backup routing data restored.")) playsound(src, 'sound/machines/terminal_prompt_confirm.ogg', 50, FALSE) obj_flags &= ~EMAGGED if ("sendToOtherSector") @@ -308,7 +308,7 @@ authenticated = TRUE authorize_access = get_all_accesses() authorize_name = "Unknown" - to_chat(usr, "[src] lets out a quiet alarm as its login is overridden.") + to_chat(usr, span_warning("[src] lets out a quiet alarm as its login is overridden.")) playsound(src, 'sound/machines/terminal_alert.ogg', 25, FALSE) else if (IsAdminGhost(usr)) authenticated = TRUE @@ -330,12 +330,12 @@ revoke_maint_all_access() log_game("[key_name(usr)] disabled emergency maintenance access.") message_admins("[ADMIN_LOOKUPFLW(usr)] disabled emergency maintenance access.") - deadchat_broadcast(" disabled emergency maintenance access at [get_area_name(usr, TRUE)].", "[usr.real_name]", usr) + deadchat_broadcast(" disabled emergency maintenance access at [span_name("[get_area_name(usr, TRUE)]")].", span_name("[usr.real_name]"), usr) else make_maint_all_access() log_game("[key_name(usr)] enabled emergency maintenance access.") message_admins("[ADMIN_LOOKUPFLW(usr)] enabled emergency maintenance access.") - deadchat_broadcast(" enabled emergency maintenance access at [get_area_name(usr, TRUE)].", "[usr.real_name]", usr) + deadchat_broadcast(" enabled emergency maintenance access at [span_name("[get_area_name(usr, TRUE)]")].", span_name("[usr.real_name]"), usr) if ("printSpare") if (authenticated_as_non_silicon_head(usr)) playsound(loc, 'sound/items/poster_being_created.ogg', 100, 1) @@ -498,17 +498,17 @@ /obj/machinery/computer/communications/proc/make_announcement(mob/living/user) var/is_ai = issilicon(user) if(!SScommunications.can_announce(user, is_ai)) - to_chat(user, "Intercomms recharging. Please stand by.") + to_chat(user, span_alert("Intercomms recharging. Please stand by.")) return var/input = stripped_multiline_input(user, "Please choose a message to announce to the station crew.", "What?") if(!input || !user.canUseTopic(src, !issilicon(usr))) return SScommunications.make_announcement(user, is_ai, input) - deadchat_broadcast(" made a priority announcement from [get_area_name(usr, TRUE)].", "[user.real_name]", user) + deadchat_broadcast(" made a priority announcement from [span_name("[get_area_name(usr, TRUE)]")].", span_name("[user.real_name]"), user) /obj/machinery/computer/communications/proc/make_voice_announcement(mob/living/user) if(!SScommunications.can_announce(user, FALSE)) - to_chat(user, "Intercomms recharging. Please stand by.") + to_chat(user, span_alert("Intercomms recharging. Please stand by.")) return var/datum/voice_announce/command/announce_datum = new(user.client, src) announce_datum.open() diff --git a/code/game/machinery/computer/dna_console.dm b/code/game/machinery/computer/dna_console.dm index bd93664bc2cc..8db8055080a7 100644 --- a/code/game/machinery/computer/dna_console.dm +++ b/code/game/machinery/computer/dna_console.dm @@ -147,7 +147,7 @@ if (istype(I, /obj/item/chromosome)) I.forceMove(src) stored_chromosomes += I - to_chat(user, "You insert [I].") + to_chat(user, span_notice("You insert [I].")) return // Insert data disk if console disk slot is empty @@ -159,7 +159,7 @@ diskette.forceMove(drop_location()) diskette = null diskette = I - to_chat(user, "You insert [I].") + to_chat(user, span_notice("You insert [I].")) return // Recycle non-activator used injectors @@ -167,15 +167,15 @@ if(istype(I, /obj/item/dnainjector/activator)) var/obj/item/dnainjector/activator/A = I if(A.used) - to_chat(user,"Recycled [I].") + to_chat(user,span_notice("Recycled [I].")) if(A.research) if(prob(60)) var/c_typepath = generate_chromosome() var/obj/item/chromosome/CM = new c_typepath (src) stored_chromosomes += CM - to_chat(user,"[capitalize(CM.name)] added to storage.") + to_chat(user,span_notice("[capitalize(CM.name)] added to storage.")) else - to_chat(user, "There was not enough genetic data to extract a viable chromosome.") + to_chat(user, span_notice("There was not enough genetic data to extract a viable chromosome.")) qdel(I) return @@ -385,7 +385,7 @@ scanner_occupant.dna.remove_all_mutations(list(MUT_NORMAL, MUT_EXTRA)) scanner_occupant.dna.generate_dna_blocks() scrambleready = world.time + SCRAMBLE_TIMEOUT - to_chat(usr,"DNA scrambled.") + to_chat(usr,span_notice("DNA scrambled.")) scanner_occupant.radiation += RADIATION_STRENGTH_MULTIPLIER*50/(connected_scanner.damage_coeff ** 2) return @@ -459,7 +459,7 @@ // GUARD CHECK - Is the occupant currently undergoing some form of // transformation? If so, we don't want to be pulsing genes. if(scanner_occupant.transformation_timer) - to_chat(usr,"Gene pulse failed: The scanner occupant undergoing a transformation.") + to_chat(usr,span_warning("Gene pulse failed: The scanner occupant undergoing a transformation.")) return // Resolve mutation's BYOND path from the alias @@ -656,7 +656,7 @@ var/datum/mutation/human/A = new HM.type() A.copy_mutation(HM) stored_mutations += A - to_chat(usr,"Mutation successfully stored.") + to_chat(usr,span_notice("Mutation successfully stored.")) return // Save a mutation to the diskette's storage buffer. @@ -674,13 +674,13 @@ // GUARD CHECK - Make sure the disk is not full if(LAZYLEN(diskette.mutations) >= diskette.max_mutations) - to_chat(usr,"Disk storage is full.") + to_chat(usr,span_warning("Disk storage is full.")) return // GUARD CHECK - Make sure the disk isn't set to read only, as we're // attempting to write to it if(diskette.read_only) - to_chat(usr,"Disk is set to read only mode.") + to_chat(usr,span_warning("Disk is set to read only mode.")) return var/search_flags = 0 @@ -706,7 +706,7 @@ var/datum/mutation/human/A = new HM.type() A.copy_mutation(HM) diskette.mutations += A - to_chat(usr,"Mutation successfully stored to disk.") + to_chat(usr,span_notice("Mutation successfully stored to disk.")) return // Completely removes a MUT_EXTRA mutation or mutation with corrupt gene @@ -759,7 +759,7 @@ // GUARD CHECK - Make sure the disk isn't set to read only, as we're // attempting to write to it (via deletion) if(diskette.read_only) - to_chat(usr,"Disk is set to read only mode.") + to_chat(usr,span_warning("Disk is set to read only mode.")) return var/bref = params["mutref"] @@ -820,7 +820,7 @@ // If we got a new type, add it to our storage stored_mutations += new result_path() - to_chat(usr, "Success! New mutation has been added to console storage.") + to_chat(usr, span_boldnotice("Success! New mutation has been added to console storage.")) // If it's already discovered, end here. Otherwise, add it to the list of // discovered mutations. @@ -846,13 +846,13 @@ // GUARD CHECK - Make sure the disk is not full. if(LAZYLEN(diskette.mutations) >= diskette.max_mutations) - to_chat(usr,"Disk storage is full.") + to_chat(usr,span_warning("Disk storage is full.")) return // GUARD CHECK - Make sure the disk isn't set to read only, as we're // attempting to write to it if(diskette.read_only) - to_chat(usr,"Disk is set to read only mode.") + to_chat(usr,span_warning("Disk is set to read only mode.")) return // GUARD CHECK - We're running a research-type operation. If, for some @@ -882,7 +882,7 @@ // If we got a new type, add it to our storage diskette.mutations += new result_path() - to_chat(usr, "Success! New mutation has been added to the disk.") + to_chat(usr, span_boldnotice("Success! New mutation has been added to the disk.")) // If it's already discovered, end here. Otherwise, add it to the list of // discovered mutations @@ -926,7 +926,7 @@ // GUARD CHECK - Make sure the disk isn't set to read only, as we're // attempting to write to it if(diskette.read_only) - to_chat(usr,"Disk is set to read only mode.") + to_chat(usr,span_warning("Disk is set to read only mode.")) return // Convert the index to a number and clamp within the array range @@ -975,7 +975,7 @@ // GUARD CHECK - Make sure the disk isn't set to read only, as we're // attempting to write (via deletion) to it if(diskette.read_only) - to_chat(usr,"Disk is set to read only mode.") + to_chat(usr,span_warning("Disk is set to read only mode.")) return diskette.genetic_makeup_buffer.Cut() @@ -1070,7 +1070,7 @@ // However, if this is the case, we can't make a complete injector and // this catches that edge case if(!buffer_slot["UI"]) - to_chat(usr,"Genetic data corrupted, unable to create injector.") + to_chat(usr,span_warning("Genetic data corrupted, unable to create injector.")) return I = new /obj/item/dnainjector/timed(loc) @@ -1085,7 +1085,7 @@ // However, if this is the case, we can't make a complete injector and // this catches that edge case if(!buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"]) - to_chat(usr,"Genetic data corrupted, unable to create injector.") + to_chat(usr,span_warning("Genetic data corrupted, unable to create injector.")) return I = new /obj/item/dnainjector/timed(loc) @@ -1100,7 +1100,7 @@ // However, if this is the case, we can't make a complete injector and // this catches that edge case if(!buffer_slot["UI"] || !buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"]) - to_chat(usr,"Genetic data corrupted, unable to create injector.") + to_chat(usr,span_warning("Genetic data corrupted, unable to create injector.")) return I = new /obj/item/dnainjector/timed(loc) @@ -1315,7 +1315,7 @@ // GUARD CHECK - Make sure we limit the number of mutations appropriately if(LAZYLEN(injector_selection[adv_inj]) >= max_injector_mutations) - to_chat(usr,"Advanced injector mutation storage is full.") + to_chat(usr,span_warning("Advanced injector mutation storage is full.")) return var/mut_source = params["source"] @@ -1352,7 +1352,7 @@ // If this would take us over the max instability, we inform the user. if(instability_total > max_injector_instability) - to_chat(usr,"Extra mutation would make the advanced injector too instable.") + to_chat(usr,span_warning("Extra mutation would make the advanced injector too instable.")) return // If we've got here, all our checks are passed and we can successfully @@ -1360,7 +1360,7 @@ var/datum/mutation/human/A = new HM.type() A.copy_mutation(HM) injector_selection[adv_inj] += A - to_chat(usr,"Mutation successfully added to advanced injector.") + to_chat(usr,span_notice("Mutation successfully added to advanced injector.")) return // Deletes a mutation from an advanced injector @@ -1420,7 +1420,7 @@ // However, if this is the case, we can't make a complete injector and // this catches that edge case if(!buffer_slot["UI"]) - to_chat(usr,"Genetic data corrupted, unable to apply genetic data.") + to_chat(usr,span_warning("Genetic data corrupted, unable to apply genetic data.")) return FALSE scanner_occupant.dna.uni_identity = buffer_slot["UI"] scanner_occupant.updateappearance(mutations_overlay_update=1) @@ -1432,7 +1432,7 @@ // However, if this is the case, we can't make a complete injector and // this catches that edge case if(!buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"]) - to_chat(usr,"Genetic data corrupted, unable to apply genetic data.") + to_chat(usr,span_warning("Genetic data corrupted, unable to apply genetic data.")) return FALSE scanner_occupant.real_name = buffer_slot["name"] scanner_occupant.name = buffer_slot["name"] @@ -1446,7 +1446,7 @@ // However, if this is the case, we can't make a complete injector and // this catches that edge case if(!buffer_slot["UI"] || !buffer_slot["name"] || !buffer_slot["UE"] || !buffer_slot["blood_type"]) - to_chat(usr,"Genetic data corrupted, unable to apply genetic data.") + to_chat(usr,span_warning("Genetic data corrupted, unable to apply genetic data.")) return FALSE scanner_occupant.dna.uni_identity = buffer_slot["UI"] scanner_occupant.updateappearance(mutations_overlay_update=1) @@ -1551,7 +1551,7 @@ var/type = delayed_action["type"] var/buffer_slot = delayed_action["buffer_slot"] if(apply_genetic_makeup(type, buffer_slot)) - to_chat(connected_scanner.occupant, "[src] activates!") + to_chat(connected_scanner.occupant, span_notice("[src] activates!")) delayed_action = null /** diff --git a/code/game/machinery/computer/gulag_teleporter.dm b/code/game/machinery/computer/gulag_teleporter.dm index 1d62e3f219c3..2a843719e91c 100644 --- a/code/game/machinery/computer/gulag_teleporter.dm +++ b/code/game/machinery/computer/gulag_teleporter.dm @@ -30,10 +30,10 @@ if (!user.transferItemToLoc(W,src)) return id = W - to_chat(user, "You insert [W].") + to_chat(user, span_notice("You insert [W].")) return else - to_chat(user, "There's an ID inserted already.") + to_chat(user, span_notice("There's an ID inserted already.")) return ..() /obj/machinery/computer/gulag_teleporter_computer/ui_interact(mob/user, datum/tgui/ui) @@ -82,7 +82,7 @@ if(..()) return if(!allowed(usr)) - to_chat(usr, "Access denied.") + to_chat(usr, span_warning("Access denied.")) return switch(action) if("scan_teleporter") @@ -152,7 +152,7 @@ playsound(src, 'sound/weapons/emitter.ogg', 50, 1) prisoner.forceMove(get_turf(beacon)) prisoner.Paralyze(40) // small travel dizziness - to_chat(prisoner, "The teleportation makes you a little dizzy.") + to_chat(prisoner, span_warning("The teleportation makes you a little dizzy.")) new /obj/effect/particle_effect/sparks(get_turf(prisoner)) playsound(src, "sparks", 50, 1) if(teleporter.locked) diff --git a/code/game/machinery/computer/launchpad_control.dm b/code/game/machinery/computer/launchpad_control.dm index a9b8224cf9f1..aabfe3dbac16 100644 --- a/code/game/machinery/computer/launchpad_control.dm +++ b/code/game/machinery/computer/launchpad_control.dm @@ -14,7 +14,7 @@ . = ..() /obj/machinery/computer/launchpad/attack_paw(mob/user) - to_chat(user, "You are too primitive to use this computer!") + to_chat(user, span_warning("You are too primitive to use this computer!")) return /obj/machinery/computer/launchpad/attackby(obj/item/W, mob/user, params) @@ -26,9 +26,9 @@ if(LAZYLEN(launchpads) < maximum_pads) launchpads |= M.buffer M.buffer = null - to_chat(user, "You upload the data from the [W.name]'s buffer.") + to_chat(user, span_notice("You upload the data from the [W.name]'s buffer.")) else - to_chat(user, "[src] cannot handle any more connections!") + to_chat(user, span_warning("[src] cannot handle any more connections!")) else return ..() @@ -40,10 +40,10 @@ /obj/machinery/computer/launchpad/proc/teleport(mob/user, obj/machinery/launchpad/pad, sending) if(QDELETED(pad)) - to_chat(user, "ERROR: Launchpad not responding. Check launchpad integrity.") + to_chat(user, span_warning("ERROR: Launchpad not responding. Check launchpad integrity.")) return if(!pad.isAvailable()) - to_chat(user, "ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.") + to_chat(user, span_warning("ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.")) return pad.doteleport(user, sending) diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm index 2b56af897770..f6e962b83fae 100644 --- a/code/game/machinery/computer/law.dm +++ b/code/game/machinery/computer/law.dm @@ -27,15 +27,15 @@ if(stat & (NOPOWER|BROKEN|MAINT)) return if(!current) - to_chat(user, "You haven't selected anything to transmit laws to!") + to_chat(user, span_caution("You haven't selected anything to transmit laws to!")) return if(!can_upload_to(current)) - to_chat(user, "Upload failed! Check to make sure [current.name] is functioning properly.") + to_chat(user, "[span_caution("Upload failed!")] Check to make sure [current.name] is functioning properly.") current = null return var/turf/currentloc = get_turf(current) if(currentloc && user.z != currentloc.z) - to_chat(user, "Upload failed! Unable to establish a connection to [current.name]. You're too far away!") + to_chat(user, "[span_caution("Upload failed!")] Unable to establish a connection to [current.name]. You're too far away!") current = null return M.install(current.laws, user) @@ -56,7 +56,7 @@ current = select_active_ai(user) if (!current) - to_chat(user, "No active AIs detected!") + to_chat(user, span_caution("No active AIs detected!")) else to_chat(user, "[current.name] selected for law changes.") @@ -77,7 +77,7 @@ current = select_active_free_borg(user) if(!current) - to_chat(user, "No active unslaved cyborgs detected!") + to_chat(user, span_caution("No active unslaved cyborgs detected!")) else to_chat(user, "[current.name] selected for law changes.") diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm index 868e803f8f06..325ac0c799a1 100644 --- a/code/game/machinery/computer/medical.dm +++ b/code/game/machinery/computer/medical.dm @@ -29,7 +29,7 @@ if(!user.transferItemToLoc(O, src)) return scan = O - to_chat(user, "You insert [O].") + to_chat(user, span_notice("You insert [O].")) else return ..() diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm index 021c39ea58a9..42ce0d6da944 100644 --- a/code/game/machinery/computer/pod.dm +++ b/code/game/machinery/computer/pod.dm @@ -42,7 +42,7 @@ /obj/machinery/computer/pod/ui_interact(mob/user) . = ..() if(!allowed(user)) - to_chat(user, "Access denied.") + to_chat(user, span_warning("Access denied.")) return var/dat = "" diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm index a02727913ef7..b151b37604cc 100644 --- a/code/game/machinery/computer/prisoner.dm +++ b/code/game/machinery/computer/prisoner.dm @@ -93,7 +93,7 @@ return inserted_id = I else - to_chat(usr, "No valid ID.") + to_chat(usr, span_danger("No valid ID.")) else if(inserted_id) switch(href_list["id"]) if("eject") @@ -134,7 +134,7 @@ var/obj/item/implant/I = locate(href_list["warn"]) in GLOB.tracked_implants if(I && istype(I) && I.imp_in) var/mob/living/R = I.imp_in - to_chat(R, "You hear a voice in your head saying: '[warning]'") + to_chat(R, span_italics("You hear a voice in your head saying: '[warning]'")) log_directed_talk(usr, R, warning, LOG_SAY, "implant message") src.add_fingerprint(usr) diff --git a/code/game/machinery/computer/robot.dm b/code/game/machinery/computer/robot.dm index 700092ed3e1f..12e7d89c1a57 100644 --- a/code/game/machinery/computer/robot.dm +++ b/code/game/machinery/computer/robot.dm @@ -82,25 +82,25 @@ var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs if(can_control(usr, R) && !..()) var/turf/T = get_turf(R) - message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!") - log_game("\[key_name(usr)] detonated [key_name(R)]!") + message_admins(span_notice("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(R, R.client)] at [ADMIN_VERBOSEJMP(T)]!")) + log_game("[span_notice("[key_name(usr)] detonated [key_name(R)]!")]") if(R.connected_ai) - to_chat(R.connected_ai, "

ALERT - Cyborg detonation detected: [R.name]
") + to_chat(R.connected_ai, "

[span_alert("ALERT - Cyborg detonation detected: [R.name]")]
") R.self_destruct() else - to_chat(usr, "Access Denied.") + to_chat(usr, span_danger("Access Denied.")) if("stopbot") if(allowed(usr)) var/mob/living/silicon/robot/R = locate(params["ref"]) in GLOB.silicon_mobs if(can_control(usr, R) && !..()) - message_admins("[ADMIN_LOOKUPFLW(usr)] [!R.lockcharge ? "locked down" : "released"] [ADMIN_LOOKUPFLW(R)]!") + message_admins(span_notice("[ADMIN_LOOKUPFLW(usr)] [!R.lockcharge ? "locked down" : "released"] [ADMIN_LOOKUPFLW(R)]!")) log_game("[key_name(usr)] [!R.lockcharge ? "locked down" : "released"] [key_name(R)]!") R.SetLockdown(!R.lockcharge) - to_chat(R, "[!R.lockcharge ? "Your lockdown has been lifted!" : "You have been locked down!"]") + to_chat(R, !R.lockcharge ? span_notice("Your lockdown has been lifted!") : span_alert("You have been locked down!")) if(R.connected_ai) to_chat(R.connected_ai, "[!R.lockcharge ? "NOTICE - Cyborg lockdown lifted" : "ALERT - Cyborg lockdown detected"]: [R.name]
") else - to_chat(usr, "Access Denied.") + to_chat(usr, span_danger("Access Denied.")) if("magbot") var/mob/living/silicon/S = usr if((istype(S) && S.hack_software) || IsAdminGhost(usr)) @@ -113,7 +113,7 @@ if(allowed(usr)) var/mob/living/simple_animal/drone/D = locate(params["ref"]) in GLOB.mob_list if(D.hacked) - to_chat(usr, "ERROR: [D] is not responding to external commands.") + to_chat(usr, span_danger("ERROR: [D] is not responding to external commands.")) else var/turf/T = get_turf(D) message_admins("[ADMIN_LOOKUPFLW(usr)] detonated [key_name_admin(D)] at [ADMIN_VERBOSEJMP(T)]!") @@ -121,5 +121,5 @@ var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, TRUE, D) s.start() - D.visible_message("\the [D] self destructs!") + D.visible_message(span_danger("\the [D] self destructs!")) D.gib() \ No newline at end of file diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm index d934e074f40e..4d9d55645511 100644 --- a/code/game/machinery/computer/security.dm +++ b/code/game/machinery/computer/security.dm @@ -656,7 +656,7 @@ var/name = stripped_input(usr, "Please input citation crime:", "Security Records", "") var/fine = FLOOR(input(usr, "Please input citation fine:", "Security Records", 50) as num, 1) if(!fine || fine < 0) - to_chat(usr, "You're pretty sure that's not how money works.") + to_chat(usr, span_warning("You're pretty sure that's not how money works.")) return fine = min(fine, maxFine) if(!valid_record_change(usr, name, null, active_security_record)) diff --git a/code/game/machinery/computer/teleporter.dm b/code/game/machinery/computer/teleporter.dm index fbfd4c2113b8..a5a7d91f8398 100644 --- a/code/game/machinery/computer/teleporter.dm +++ b/code/game/machinery/computer/teleporter.dm @@ -146,7 +146,7 @@ var/area/A = get_area(R) L[avoid_assoc_duplicate_keys(A.name, areaindex)] = R if(!L.len) - to_chat(user, "No active connected stations located.") + to_chat(user, span_alert("No active connected stations located.")) return var/desc = input("Please select a station to lock in.", "Locking Computer") as null|anything in L var/obj/machinery/teleport/station/target_station = L[desc] diff --git a/code/game/machinery/computer/warrant.dm b/code/game/machinery/computer/warrant.dm index b761ce8dbe63..137d7a6e7669 100644 --- a/code/game/machinery/computer/warrant.dm +++ b/code/game/machinery/computer/warrant.dm @@ -117,17 +117,17 @@ if(C && istype(C)) var/pay = C.get_item_credit_value() if(!pay) - to_chat(M, "[C] doesn't seem to be worth anything!") + to_chat(M, span_warning("[C] doesn't seem to be worth anything!")) else var/diff = p.fine - p.paid GLOB.data_core.payCitation(current.fields["id"], text2num(href_list["cdataid"]), pay) - to_chat(M, "You have paid [pay] credit\s towards your fine") + to_chat(M, span_notice("You have paid [pay] credit\s towards your fine")) if (pay == diff || pay > diff || pay >= diff) investigate_log("Citation Paid off: [p.crimeName] Fine: [p.fine] | Paid off by [key_name(usr)]", INVESTIGATE_RECORDS) - to_chat(M, "The fine has been paid in full") + to_chat(M, span_notice("The fine has been paid in full")) qdel(C) playsound(src, "terminal_type", 25, 0) else - to_chat(M, "Fines can only be paid with holochips") + to_chat(M, span_warning("Fines can only be paid with holochips")) updateUsrDialog() add_fingerprint(M) diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index 7d7092be5bfe..7738828acd45 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -77,57 +77,57 @@ switch(state) if(1) if(istype(P, /obj/item/circuitboard/machine)) - to_chat(user, "The frame needs wiring first!") + to_chat(user, span_warning("The frame needs wiring first!")) return else if(istype(P, /obj/item/circuitboard)) - to_chat(user, "This frame does not accept circuit boards of this type!") + to_chat(user, span_warning("This frame does not accept circuit boards of this type!")) return if(istype(P, /obj/item/stack/cable_coil)) if(!P.tool_start_check(user, amount=5)) return - to_chat(user, "You start to add cables to the frame...") + to_chat(user, span_notice("You start to add cables to the frame...")) if(P.use_tool(src, user, 20, volume=50, amount=5)) - to_chat(user, "You add cables to the frame.") + to_chat(user, span_notice("You add cables to the frame.")) state = 2 icon_state = "box_1" return if(P.tool_behaviour == TOOL_SCREWDRIVER && !anchored) - user.visible_message("[user] disassembles the frame.", \ - "You start to disassemble the frame...", "You hear banging and clanking.") + user.visible_message(span_warning("[user] disassembles the frame."), \ + span_notice("You start to disassemble the frame..."), "You hear banging and clanking.") if(P.use_tool(src, user, 40, volume=50)) if(state == 1) - to_chat(user, "You disassemble the frame.") + to_chat(user, span_notice("You disassemble the frame.")) var/obj/item/stack/sheet/metal/M = new (loc, 5) M.add_fingerprint(user) qdel(src) return if(P.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") + to_chat(user, span_notice("You start [anchored ? "un" : ""]securing [name]...")) if(P.use_tool(src, user, 40, volume=75)) if(state == 1) - to_chat(user, "You [anchored ? "un" : ""]secure [name].") + to_chat(user, span_notice("You [anchored ? "un" : ""]secure [name].")) setAnchored(!anchored) return if(2) if(P.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") + to_chat(user, span_notice("You start [anchored ? "un" : ""]securing [name]...")) if(P.use_tool(src, user, 40, volume=75)) - to_chat(user, "You [anchored ? "un" : ""]secure [name].") + to_chat(user, span_notice("You [anchored ? "un" : ""]secure [name].")) setAnchored(!anchored) return if(istype(P, /obj/item/circuitboard/machine)) var/obj/item/circuitboard/machine/B = P if(!anchored && B.needs_anchored) - to_chat(user, "The frame needs to be secured first!") + to_chat(user, span_warning("The frame needs to be secured first!")) return if(!user.transferItemToLoc(B, src)) return playsound(src.loc, 'sound/items/deconstruct.ogg', 50, 1) - to_chat(user, "You add the circuit board to the frame.") + to_chat(user, span_notice("You add the circuit board to the frame.")) circuit = B icon_state = "box_2" state = 3 @@ -137,12 +137,12 @@ return else if(istype(P, /obj/item/circuitboard)) - to_chat(user, "This frame does not accept circuit boards of this type!") + to_chat(user, span_warning("This frame does not accept circuit boards of this type!")) return if(P.tool_behaviour == TOOL_WIRECUTTER) P.play_tool_sound(src) - to_chat(user, "You remove the cables.") + to_chat(user, span_notice("You remove the cables.")) state = 1 icon_state = "box_0" new /obj/item/stack/cable_coil(drop_location(), 5) @@ -156,9 +156,9 @@ components.Remove(circuit) circuit = null if(components.len == 0) - to_chat(user, "You remove the circuit board.") + to_chat(user, span_notice("You remove the circuit board.")) else - to_chat(user, "You remove the circuit board and other components.") + to_chat(user, span_notice("You remove the circuit board and other components.")) for(var/atom/movable/AM in components) AM.forceMove(drop_location()) desc = initial(desc) @@ -168,9 +168,9 @@ return if(P.tool_behaviour == TOOL_WRENCH && !circuit.needs_anchored) - to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") + to_chat(user, span_notice("You start [anchored ? "un" : ""]securing [name]...")) if(P.use_tool(src, user, 40, volume=75)) - to_chat(user, "You [anchored ? "un" : ""]secure [name].") + to_chat(user, span_notice("You [anchored ? "un" : ""]secure [name].")) setAnchored(!anchored) return @@ -235,7 +235,7 @@ S.merge(NS) if(!QDELETED(part)) //If we're a stack and we merged we might not exist anymore components += part - to_chat(user, "[part.name] applied.") + to_chat(user, span_notice("[part.name] applied.")) if(added_components.len) replacer.play_rped_sound() return @@ -257,15 +257,15 @@ NS.add(used_amt) req_components[I] -= used_amt - to_chat(user, "You add [P] to [src].") + to_chat(user, span_notice("You add [P] to [src].")) return if(!user.transferItemToLoc(P, src)) break - to_chat(user, "You add [P] to [src].") + to_chat(user, span_notice("You add [P] to [src].")) components += P req_components[I]-- return 1 - to_chat(user, "You cannot add that to the machine!") + to_chat(user, span_warning("You cannot add that to the machine!")) return 0 if(user.a_intent == INTENT_HARM) return ..() diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm index 2366b90a15c9..3da8f7a08887 100644 --- a/code/game/machinery/cryopod.dm +++ b/code/game/machinery/cryopod.dm @@ -114,14 +114,14 @@ GLOBAL_LIST_INIT(typecache_cryoitems, typecacheof(list( else if(href_list["item"]) if(!allowed(user)) - to_chat(user, "Access Denied.") + to_chat(user, span_warning("Access Denied.")) return if(!allow_items) return if(frozen_items.len == 0) - to_chat(user, "There is nothing to recover from storage.") + to_chat(user, span_notice("There is nothing to recover from storage.")) return var/obj/item/I = input(user, "Please choose which object to retrieve.","Object recovery",null) as null|anything in frozen_items @@ -129,24 +129,24 @@ GLOBAL_LIST_INIT(typecache_cryoitems, typecacheof(list( return if(!(I in frozen_items)) - to_chat(user, "\The [I] is no longer in storage.") + to_chat(user, span_notice("\The [I] is no longer in storage.")) return - visible_message("The console beeps happily as it disgorges \the [I].") + visible_message(span_notice("The console beeps happily as it disgorges \the [I].")) I.forceMove(drop_location()) frozen_items -= I else if(href_list["allitems"]) if(!allowed(user)) - to_chat(user, "Access Denied.") + to_chat(user, span_warning("Access Denied.")) return if(!allow_items) return if(frozen_items.len == 0) - to_chat(user, "There is nothing to recover from storage.") + to_chat(user, span_notice("There is nothing to recover from storage.")) return - visible_message("The console beeps happily as it disgorges the desired objects.") + visible_message(span_notice("The console beeps happily as it disgorges the desired objects.")) for(var/obj/item/I in frozen_items) I.forceMove(drop_location()) @@ -219,7 +219,7 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) icon_state = "cryopod" var/mob/living/mob_occupant = occupant if(mob_occupant && mob_occupant.stat != DEAD) - to_chat(occupant, "You feel cool air surround you. You go numb as your senses turn inward.") + to_chat(occupant, span_boldnotice("You feel cool air surround you. You go numb as your senses turn inward.")) if(!occupant) //Check they still exist return if(mob_occupant.client)//if they're logged in @@ -239,8 +239,8 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) name = initial(name) /obj/machinery/cryopod/container_resist(mob/living/user) - visible_message("[occupant] emerges from [src]!", - "You climb out of [src]!") + visible_message(span_notice("[occupant] emerges from [src]!"), + span_notice("You climb out of [src]!")) open_machine() /obj/machinery/cryopod/relaymove(mob/user) @@ -271,7 +271,7 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) O.team.objectives -= O qdel(O) for(var/datum/mind/M in O.team.members) - to_chat(M.current, "
Your target is no longer within reach. Objective removed!") + to_chat(M.current, "
[span_userdanger("Your target is no longer within reach. Objective removed!")]") M.announce_objectives() else if(O.target == mob_occupant.mind) O.target = null @@ -285,7 +285,7 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) for(var/M in owners) var/datum/mind/own = M - to_chat(own.current, "
You get the feeling your target is no longer within reach. Time for Plan [pick("A","B","C","D","X","Y","Z")]. Objectives updated!") + to_chat(own.current, "
[span_userdanger("You get the feeling your target is no longer within reach. Time for Plan [pick("A","B","C","D","X","Y","Z")]. Objectives updated!")]") O.owner.announce_objectives() // This function can not be undone; do not call this unless you are sure @@ -323,7 +323,7 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) if(GLOB.announcement_systems.len) var/obj/machinery/announcement_system/announcer = pick(GLOB.announcement_systems) announcer.announce("CRYOSTORAGE", mob_occupant.real_name, announce_rank, list()) - visible_message("\The [src] hums and hisses as it moves [mob_occupant.real_name] into storage.") + visible_message(span_notice("\The [src] hums and hisses as it moves [mob_occupant.real_name] into storage.")) for(var/obj/item/W in mob_occupant.GetAllContents()) if(QDELETED(W)) @@ -362,26 +362,26 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) return if(!GLOB.cryopods_enabled) - to_chat(user, "[src] is currently disabled. It will be enabled in [round(((30 MINUTES) - world.time) / (1 MINUTES))] minutes") + to_chat(user, span_boldnotice("[src] is currently disabled. It will be enabled in [round(((30 MINUTES) - world.time) / (1 MINUTES))] minutes")) return if(occupant) - to_chat(user, "The cryo pod is already occupied!") + to_chat(user, span_boldnotice("The cryo pod is already occupied!")) return if(target.stat == DEAD) - to_chat(user, "Dead people can not be put into cryo.") + to_chat(user, span_notice("Dead people can not be put into cryo.")) return if(findtext(target.ckey, "@") || !target.mind) - to_chat(user, "This person cannot be put in cryogenic storage!") + to_chat(user, span_notice("This person cannot be put in cryogenic storage!")) return if(target.client && user != target) if(iscyborg(target)) - to_chat(user, "You can't put [target] into [src]. They're online.") + to_chat(user, span_danger("You can't put [target] into [src]. They're online.")) else - to_chat(user, "You can't put [target] into [src]. They're conscious.") + to_chat(user, span_danger("You can't put [target] into [src]. They're conscious.")) return else if(target.client) if(alert(target,"Would you like to enter cryosleep?",,"Yes","No") == "No") @@ -407,7 +407,7 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) //rerun the checks in case of shenanigans if(occupant) - to_chat(user, "\The [src] is in use.") + to_chat(user, span_boldnotice("\The [src] is in use.")) return if(target == user) @@ -415,8 +415,8 @@ GLOBAL_VAR_INIT(cryopods_enabled, FALSE) else visible_message("[user] starts putting [target] into the cryo pod.") close_machine(target) - to_chat(target, "If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.") + to_chat(target, span_boldnotice("If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.")) name = "[name] ([occupant.name])" - log_admin("[key_name(target)] entered a stasis pod.") + log_admin(span_notice("[key_name(target)] entered a stasis pod.")) message_admins("[key_name_admin(target)] entered a stasis pod. (JMP)") add_fingerprint(target) diff --git a/code/game/machinery/dance_machine.dm b/code/game/machinery/dance_machine.dm index 563115376eb6..fe097fe5f34c 100644 --- a/code/game/machinery/dance_machine.dm +++ b/code/game/machinery/dance_machine.dm @@ -69,10 +69,10 @@ if(!active && !(flags_1 & NODECONSTRUCT_1)) if(O.tool_behaviour == TOOL_WRENCH) if(!anchored && !isinspace()) - to_chat(user,"You secure [src] to the floor.") + to_chat(user,span_notice("You secure [src] to the floor.")) setAnchored(TRUE) else if(anchored) - to_chat(user,"You unsecure and disconnect [src].") + to_chat(user,span_notice("You unsecure and disconnect [src].")) setAnchored(FALSE) playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) return @@ -86,14 +86,14 @@ /obj/machinery/jukebox/ui_status(mob/user) if(!anchored) - to_chat(user,"This device must be anchored by a wrench!") + to_chat(user,span_warning("This device must be anchored by a wrench!")) return UI_CLOSE if(!allowed(user) && !isobserver(user)) - to_chat(user,"Error: Access Denied.") + to_chat(user,span_warning("Error: Access Denied.")) user.playsound_local(src, 'sound/misc/compiler-failure.ogg', 25, TRUE) return UI_CLOSE if(!songs.len && !isobserver(user)) - to_chat(user,"Error: No music tracks have been authorized for your station. Petition Central Command to resolve this issue.") + to_chat(user,span_warning("Error: No music tracks have been authorized for your station. Petition Central Command to resolve this issue.")) playsound(src, 'sound/misc/compiler-failure.ogg', 25, TRUE) return UI_CLOSE return ..() @@ -134,7 +134,7 @@ return if(!active) if(stop > world.time) - to_chat(usr, "Error: The device is still resetting from the last activation, it will be ready again in [DisplayTimeText(stop-world.time)].") + to_chat(usr, span_warning("Error: The device is still resetting from the last activation, it will be ready again in [DisplayTimeText(stop-world.time)].")) playsound(src, 'sound/misc/compiler-failure.ogg', 50, TRUE) return activate_music() @@ -145,7 +145,7 @@ return TRUE if("select_track") if(active) - to_chat(usr, "Error: You cannot change the song until the current one is over.") + to_chat(usr, span_warning("Error: You cannot change the song until the current one is over.")) return var/list/available = list() for(var/datum/track/S in songs) diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index 46cec39392a6..4bc87338e217 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -28,9 +28,9 @@ if(defib) . += "There is a defib unit hooked up. Alt-click to remove it." if(GLOB.security_level >= SEC_LEVEL_RED) - . += "Due to a security situation, its locking clamps can be toggled by swiping any ID." + . += span_notice("Due to a security situation, its locking clamps can be toggled by swiping any ID.") else - . += "Its locking clamps can be [clamps_locked ? "dis" : ""]engaged by swiping an ID with access." + . += span_notice("Its locking clamps can be [clamps_locked ? "dis" : ""]engaged by swiping an ID with access.") /obj/machinery/defibrillator_mount/process() if(defib && defib.cell && defib.cell.charge < defib.cell.maxcharge && is_operational()) @@ -57,23 +57,23 @@ //defib interaction /obj/machinery/defibrillator_mount/attack_hand(mob/living/user) if(!defib) - to_chat(user, "There's no defibrillator unit loaded!") + to_chat(user, span_warning("There's no defibrillator unit loaded!")) return if(defib.paddles.loc != defib) - to_chat(user, "[defib.paddles.loc == user ? "You are already" : "Someone else is"] holding [defib]'s paddles!") + to_chat(user, span_warning("[defib.paddles.loc == user ? "You are already" : "Someone else is"] holding [defib]'s paddles!")) return user.put_in_hands(defib.paddles) /obj/machinery/defibrillator_mount/attackby(obj/item/I, mob/living/user, params) if(istype(I, /obj/item/defibrillator)) if(defib) - to_chat(user, "There's already a defibrillator in [src]!") + to_chat(user, span_warning("There's already a defibrillator in [src]!")) return if(HAS_TRAIT(I, TRAIT_NODROP) || !user.transferItemToLoc(I, src)) - to_chat(user, "[I] is stuck to your hand!") + to_chat(user, span_warning("[I] is stuck to your hand!")) return - user.visible_message("[user] hooks up [I] to [src]!", \ - "You press [I] into the mount, and it clicks into place.") + user.visible_message(span_notice("[user] hooks up [I] to [src]!"), \ + span_notice("You press [I] into the mount, and it clicks into place.")) playsound(src, 'sound/machines/click.ogg', 50, TRUE) defib = I update_icon() @@ -85,30 +85,30 @@ if(id) if(check_access(id) || GLOB.security_level >= SEC_LEVEL_RED) //anyone can toggle the clamps in red alert! if(!defib) - to_chat(user, "You can't engage the clamps on a defibrillator that isn't there.") + to_chat(user, span_warning("You can't engage the clamps on a defibrillator that isn't there.")) return clamps_locked = !clamps_locked - to_chat(user, "Clamps [clamps_locked ? "" : "dis"]engaged.") + to_chat(user, span_notice("Clamps [clamps_locked ? "" : "dis"]engaged.")) update_icon() else - to_chat(user, "Insufficient access.") + to_chat(user, span_warning("Insufficient access.")) return ..() /obj/machinery/defibrillator_mount/multitool_act(mob/living/user, obj/item/multitool) if(!defib) - to_chat(user, "There isn't any defibrillator to clamp in!") + to_chat(user, span_warning("There isn't any defibrillator to clamp in!")) return TRUE if(!clamps_locked) - to_chat(user, "[src]'s clamps are disengaged!") + to_chat(user, span_warning("[src]'s clamps are disengaged!")) return TRUE - user.visible_message("[user] presses [multitool] into [src]'s ID slot...", \ - "You begin overriding the clamps on [src]...") + user.visible_message(span_notice("[user] presses [multitool] into [src]'s ID slot..."), \ + span_notice("You begin overriding the clamps on [src]...")) playsound(src, 'sound/machines/click.ogg', 50, TRUE) if(!do_after(user, 100, target = src) || !clamps_locked) return - user.visible_message("[user] pulses [multitool], and [src]'s clamps slide up.", \ - "You override the locking clamps on [src]!") + user.visible_message(span_notice("[user] pulses [multitool], and [src]'s clamps slide up."), \ + span_notice("You override the locking clamps on [src]!")) playsound(src, 'sound/machines/locktoggle.ogg', 50, TRUE) clamps_locked = FALSE update_icon() @@ -118,16 +118,16 @@ if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) return if(!defib) - to_chat(user, "It'd be hard to remove a defib unit from a mount that has none.") + to_chat(user, span_warning("It'd be hard to remove a defib unit from a mount that has none.")) return if(clamps_locked) - to_chat(user, "You try to tug out [defib], but the mount's clamps are locked tight!") + to_chat(user, span_warning("You try to tug out [defib], but the mount's clamps are locked tight!")) return if(!user.put_in_hands(defib)) - to_chat(user, "You need a free hand!") + to_chat(user, span_warning("You need a free hand!")) return - user.visible_message("[user] unhooks [defib] from [src].", \ - "You slide out [defib] from [src] and unhook the charging cables.") + user.visible_message(span_notice("[user] unhooks [defib] from [src]."), \ + span_notice("You slide out [defib] from [src] and unhook the charging cables.")) playsound(src, 'sound/items/deconstruct.ogg', 50, TRUE) defib = null update_icon() diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index 60d35634c0e3..e04d296ca5d5 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -32,7 +32,7 @@ if(!I.tool_start_check(user, amount=0)) return - to_chat(user, "You begin repairing [src]...") + to_chat(user, span_notice("You begin repairing [src]...")) if(I.use_tool(src, user, 40, volume=40)) obj_integrity = clamp(obj_integrity + 20, 0, max_integrity) else @@ -68,10 +68,10 @@ if(istype(I,/obj/item/stack/sheet/mineral/wood)) var/obj/item/stack/sheet/mineral/wood/W = I if(W.amount < 5) - to_chat(user, "You need at least five wooden planks to make a wall!") + to_chat(user, span_warning("You need at least five wooden planks to make a wall!")) return else - to_chat(user, "You start adding [I] to [src]...") + to_chat(user, span_notice("You start adding [I] to [src]...")) if(do_after(user, 50, target=src)) W.use(5) new /turf/closed/wall/mineral/wood/nonmetal(get_turf(src)) @@ -79,9 +79,9 @@ return else if(I.tool_behaviour == TOOL_CROWBAR && user.a_intent != INTENT_HARM) user.visible_message("[user.name] starts prying [src.name] apart.", \ - "You start prying the barricade apart") + span_notice("You start prying the barricade apart")) if(I.use_tool(src, user, 190, volume=50)) - to_chat(user, "You disassemble the barricade.") + to_chat(user, span_notice("You disassemble the barricade.")) new /obj/item/stack/sheet/mineral/wood(user.loc, 5) qdel(src) else @@ -99,9 +99,9 @@ /obj/structure/barricade/wooden/crude/attackby(obj/item/I, mob/user) // Make it so you cant turn crude planks into walls if(I.tool_behaviour == TOOL_CROWBAR && user.a_intent != INTENT_HARM) user.visible_message("[user.name] starts prying [src.name] apart.", \ - "You start prying the barricade apart") + span_notice("You start prying the barricade apart")) if(I.use_tool(src, user, 190, volume=50)) - to_chat(user, "You disassemble the barricade.") + to_chat(user, span_notice("You disassemble the barricade.")) new /obj/item/stack/sheet/mineral/wood(user.loc, 5) qdel(src) @@ -151,7 +151,7 @@ density = TRUE anchored = TRUE if(deploy_message) - visible_message("[src] deploys!") + visible_message(span_warning("[src] deploys!")) /obj/item/grenade/barrier @@ -165,7 +165,7 @@ /obj/item/grenade/barrier/examine(mob/user) . = ..() - . += "Alt-click to toggle modes." + . += span_notice("Alt-click to toggle modes.") /obj/item/grenade/barrier/AltClick(mob/living/carbon/user) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) diff --git a/code/game/machinery/dish_drive.dm b/code/game/machinery/dish_drive.dm index f6e4e8cdc668..a66dccc96c8f 100644 --- a/code/game/machinery/dish_drive.dm +++ b/code/game/machinery/dish_drive.dm @@ -34,15 +34,15 @@ /obj/machinery/dish_drive/examine(mob/user) . = ..() if(user.Adjacent(src)) - . += "Alt-click it to beam its contents to any nearby disposal bins." + . += span_notice("Alt-click it to beam its contents to any nearby disposal bins.") /obj/machinery/dish_drive/attack_hand(mob/living/user) if(!contents.len) - to_chat(user, "There's nothing in [src]!") + to_chat(user, span_warning("There's nothing in [src]!")) return var/obj/item/I = contents[contents.len] //the most recently-added item user.put_in_hands(I) - to_chat(user, "You take out [I] from [src].") + to_chat(user, span_notice("You take out [I] from [src].")) playsound(src, 'sound/items/pshoom.ogg', 50, TRUE) flick("synthesizer_beam", src) @@ -50,7 +50,7 @@ if(is_type_in_list(I, collectable_items) && user.a_intent != INTENT_HARM) if(!user.transferItemToLoc(I, src)) return - to_chat(user, "You put [I] in [src], and it's beamed into energy!") + to_chat(user, span_notice("You put [I] in [src], and it's beamed into energy!")) playsound(src, 'sound/items/pshoom.ogg', 50, TRUE) flick("synthesizer_beam", src) return @@ -88,7 +88,7 @@ for(var/obj/item/I in view(4, src)) if(is_type_in_list(I, collectable_items) && I.loc != src && (!I.reagents || !I.reagents.total_volume)) if(I.Adjacent(src)) - visible_message("[src] beams up [I]!") + visible_message(span_notice("[src] beams up [I]!")) I.forceMove(src) playsound(src, 'sound/items/pshoom.ogg', 50, TRUE) flick("synthesizer_beam", src) @@ -98,7 +98,7 @@ /obj/machinery/dish_drive/attack_ai(mob/living/user) if(stat) return - to_chat(user, "You send a disposal transmission signal to [src].") + to_chat(user, span_notice("You send a disposal transmission signal to [src].")) do_the_dishes(TRUE) /obj/machinery/dish_drive/AltClick(mob/living/user) @@ -111,7 +111,7 @@ var/obj/machinery/disposal/bin/bin = locate() in view(7, src) if(!bin) if(manual) - visible_message("[src] buzzes. There are no disposal bins in range!") + visible_message(span_warning("[src] buzzes. There are no disposal bins in range!")) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE) return var/disposed = 0 @@ -121,7 +121,7 @@ use_power(active_power_usage) disposed++ if (disposed) - visible_message("[src] [pick("whooshes", "bwooms", "fwooms", "pshooms")] and beams [disposed] stored item\s into the nearby [bin.name].") + visible_message(span_notice("[src] [pick("whooshes", "bwooms", "fwooms", "pshooms")] and beams [disposed] stored item\s into the nearby [bin.name].")) playsound(src, 'sound/items/pshoom.ogg', 50, TRUE) playsound(bin, 'sound/items/pshoom.ogg', 50, TRUE) Beam(bin, icon_state = "rped_upgrade", time = 5) diff --git a/code/game/machinery/dna_scanner.dm b/code/game/machinery/dna_scanner.dm index bec9d3e4ada2..72b16c05f8f5 100644 --- a/code/game/machinery/dna_scanner.dm +++ b/code/game/machinery/dna_scanner.dm @@ -56,7 +56,7 @@ /obj/machinery/dna_scannernew/proc/toggle_open(mob/user) if(panel_open) - to_chat(user, "Close the maintenance panel first.") + to_chat(user, span_notice("Close the maintenance panel first.")) return if(state_open) @@ -64,7 +64,7 @@ return else if(locked) - to_chat(user, "The bolts are locked down, securing the door shut.") + to_chat(user, span_notice("The bolts are locked down, securing the door shut.")) return open_machine() @@ -75,15 +75,15 @@ return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message("You see [user] kicking against the door of [src]!", \ - "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a metallic creaking from [src].") + user.visible_message(span_notice("You see [user] kicking against the door of [src]!"), \ + span_notice("You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)"), \ + span_italics("You hear a metallic creaking from [src].")) if(do_after(user,(breakout_time), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked) return locked = FALSE - user.visible_message("[user] successfully broke out of [src]!", \ - "You successfully break out of [src]!") + user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ + span_notice("You successfully break out of [src]!")) open_machine() /obj/machinery/dna_scannernew/proc/locate_computer(type_) @@ -121,7 +121,7 @@ if(user.stat || locked) if(message_cooldown <= world.time) message_cooldown = world.time + 50 - to_chat(user, "[src]'s door won't budge!") + to_chat(user, span_warning("[src]'s door won't budge!")) return open_machine() diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index e17c2afe8343..fc1fc26b8616 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -375,7 +375,7 @@ return locked = TRUE playsound(src,boltDown,30,0,3) - audible_message("You hear a click from the bottom of the door.", null, 1) + audible_message(span_italics("You hear a click from the bottom of the door."), null, 1) update_icon() /obj/machinery/door/airlock/unlock() @@ -386,7 +386,7 @@ return locked = FALSE playsound(src,boltUp,30,0,3) - audible_message("You hear a click from the bottom of the door.", null, 1) + audible_message(span_italics("You hear a click from the bottom of the door."), null, 1) update_icon() /obj/machinery/door/airlock/narsie_act() @@ -771,11 +771,11 @@ /obj/machinery/door/airlock/examine(mob/user) . = ..() if(obj_flags & EMAGGED) - . += "Its access panel is smoking slightly." + . += span_warning("Its access panel is smoking slightly.") if(charge && !panel_open && in_range(user, src)) - . += "The maintenance panel seems haphazardly fastened." + . += span_warning("The maintenance panel seems haphazardly fastened.") if(charge && panel_open) - . += "Something is wired up to the airlock's electronics!" + . += span_warning("Something is wired up to the airlock's electronics!") if(note) if(!in_range(user, src)) . += "There's a [note.name] pinned to the front. You can't read it from here." @@ -806,10 +806,10 @@ . += "It looks very robust." if(issilicon(user) && !(stat & BROKEN)) - . += "Shift-click [src] to [ density ? "open" : "close"] it." - . += "Ctrl-click [src] to [ locked ? "raise" : "drop"] its bolts." - . += "Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it." - . += "Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access." + . += span_notice("Shift-click [src] to [ density ? "open" : "close"] it.") + . += span_notice("Ctrl-click [src] to [ locked ? "raise" : "drop"] its bolts.") + . += span_notice("Alt-click [src] to [ secondsElectrified ? "un-electrify" : "permanently electrify"] it.") + . += span_notice("Ctrl-Shift-click [src] to [ emergency ? "disable" : "enable"] emergency access.") /obj/machinery/door/airlock/attack_ai(mob/user) if(!canAIControl(user)) @@ -817,12 +817,12 @@ hack(user) return else - to_chat(user, "Airlock AI control has been blocked with a firewall. Unable to hack.") + to_chat(user, span_warning("Airlock AI control has been blocked with a firewall. Unable to hack.")) if(obj_flags & EMAGGED) - to_chat(user, "Unable to interface: Airlock is unresponsive.") + to_chat(user, span_warning("Unable to interface: Airlock is unresponsive.")) return if(detonated) - to_chat(user, "Unable to interface. Airlock control panel damaged.") + to_chat(user, span_warning("Unable to interface. Airlock control panel damaged.")) return ui_interact(user) @@ -900,16 +900,16 @@ if((HAS_TRAIT(H, TRAIT_DUMB)) && Adjacent(user)) playsound(src, 'sound/effects/bang.ogg', 25, TRUE) if(!istype(H.head, /obj/item/clothing/head/helmet)) - H.visible_message("[user] headbutts the airlock.", \ - "You headbutt the airlock!") + H.visible_message(span_danger("[user] headbutts the airlock."), \ + span_userdanger("You headbutt the airlock!")) H.Paralyze(100) H.apply_damage(10, BRUTE, BODY_ZONE_HEAD) else - visible_message("[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.") + visible_message(span_danger("[user] headbutts the airlock. Good thing [user.p_theyre()] wearing a helmet.")) /obj/machinery/door/airlock/attempt_wire_interaction(mob/user) if(security_level) - to_chat(user, "Wires are protected!") + to_chat(user, span_warning("Wires are protected!")) return WIRE_INTERACTION_FAIL return ..() @@ -960,28 +960,28 @@ if(istype(C, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/S = C if(S.get_amount() < 2) - to_chat(user, "You need at least 2 metal sheets to reinforce [src].") + to_chat(user, span_warning("You need at least 2 metal sheets to reinforce [src].")) return - to_chat(user, "You start reinforcing [src].") + to_chat(user, span_notice("You start reinforcing [src].")) if(do_after(user, 20, TRUE, src)) if(!panel_open || !S.use(2)) return - user.visible_message("[user] reinforces \the [src] with metal.", - "You reinforce \the [src] with metal.") + user.visible_message(span_notice("[user] reinforces \the [src] with metal."), + span_notice("You reinforce \the [src] with metal.")) security_level = AIRLOCK_SECURITY_METAL update_icon() return else if(istype(C, /obj/item/stack/sheet/plasteel)) var/obj/item/stack/sheet/plasteel/S = C if(S.get_amount() < 2) - to_chat(user, "You need at least 2 plasteel sheets to reinforce [src].") + to_chat(user, span_warning("You need at least 2 plasteel sheets to reinforce [src].")) return - to_chat(user, "You start reinforcing [src].") + to_chat(user, span_notice("You start reinforcing [src].")) if(do_after(user, 20, TRUE, src)) if(!panel_open || !S.use(2)) return - user.visible_message("[user] reinforces \the [src] with plasteel.", - "You reinforce \the [src] with plasteel.") + user.visible_message(span_notice("[user] reinforces \the [src] with plasteel."), + span_notice("You reinforce \the [src] with plasteel.")) security_level = AIRLOCK_SECURITY_PLASTEEL modify_max_integrity(normal_integrity * AIRLOCK_INTEGRITY_MULTIPLIER) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_R @@ -991,13 +991,13 @@ if(C.tool_behaviour == TOOL_WELDER) if(!C.tool_start_check(user, amount=2)) return - to_chat(user, "You begin cutting the panel's shielding...") + to_chat(user, span_notice("You begin cutting the panel's shielding...")) if(C.use_tool(src, user, 40, volume=50, amount = 2)) if(!panel_open) return - user.visible_message("[user] cuts through \the [src]'s shielding.", - "You cut through \the [src]'s shielding.", - "You hear welding.") + user.visible_message(span_notice("[user] cuts through \the [src]'s shielding."), + span_notice("You cut through \the [src]'s shielding."), + span_italics("You hear welding.")) security_level = AIRLOCK_SECURITY_NONE spawn_atom_to_turf(/obj/item/stack/sheet/metal, user.loc, 2) update_icon() @@ -1005,14 +1005,14 @@ if(AIRLOCK_SECURITY_PLASTEEL_I_S) if(C.tool_behaviour == TOOL_CROWBAR) var/obj/item/crowbar/W = C - to_chat(user, "You start removing the inner layer of shielding...") + to_chat(user, span_notice("You start removing the inner layer of shielding...")) if(W.use_tool(src, user, 40, volume=100)) if(!panel_open) return if(security_level != AIRLOCK_SECURITY_PLASTEEL_I_S) return - user.visible_message("[user] remove \the [src]'s shielding.", - "You remove \the [src]'s inner shielding.") + user.visible_message(span_notice("[user] remove \the [src]'s shielding."), + span_notice("You remove \the [src]'s inner shielding.")) security_level = AIRLOCK_SECURITY_NONE modify_max_integrity(normal_integrity) damage_deflection = AIRLOCK_DAMAGE_DEFLECTION_N @@ -1023,25 +1023,25 @@ if(C.tool_behaviour == TOOL_WELDER) if(!C.tool_start_check(user, amount=2)) return - to_chat(user, "You begin cutting the inner layer of shielding...") + to_chat(user, span_notice("You begin cutting the inner layer of shielding...")) if(C.use_tool(src, user, 40, volume=50, amount=2)) if(!panel_open) return - user.visible_message("[user] cuts through \the [src]'s shielding.", - "You cut through \the [src]'s shielding.", - "You hear welding.") + user.visible_message(span_notice("[user] cuts through \the [src]'s shielding."), + span_notice("You cut through \the [src]'s shielding."), + span_italics("You hear welding.")) security_level = AIRLOCK_SECURITY_PLASTEEL_I_S return if(AIRLOCK_SECURITY_PLASTEEL_O_S) if(C.tool_behaviour == TOOL_CROWBAR) - to_chat(user, "You start removing outer layer of shielding...") + to_chat(user, span_notice("You start removing outer layer of shielding...")) if(C.use_tool(src, user, 40, volume=100)) if(!panel_open) return if(security_level != AIRLOCK_SECURITY_PLASTEEL_O_S) return - user.visible_message("[user] remove \the [src]'s shielding.", - "You remove \the [src]'s shielding.") + user.visible_message(span_notice("[user] remove \the [src]'s shielding."), + span_notice("You remove \the [src]'s shielding.")) security_level = AIRLOCK_SECURITY_PLASTEEL_I spawn_atom_to_turf(/obj/item/stack/sheet/plasteel, user.loc, 1) return @@ -1049,37 +1049,37 @@ if(C.tool_behaviour == TOOL_WELDER) if(!C.tool_start_check(user, amount=2)) return - to_chat(user, "You begin cutting the outer layer of shielding...") + to_chat(user, span_notice("You begin cutting the outer layer of shielding...")) if(C.use_tool(src, user, 40, volume=50, amount=2)) if(!panel_open) return - user.visible_message("[user] cuts through \the [src]'s shielding.", - "You cut through \the [src]'s shielding.", - "You hear welding.") + user.visible_message(span_notice("[user] cuts through \the [src]'s shielding."), + span_notice("You cut through \the [src]'s shielding."), + span_italics("You hear welding.")) security_level = AIRLOCK_SECURITY_PLASTEEL_O_S return if(AIRLOCK_SECURITY_PLASTEEL) if(C.tool_behaviour == TOOL_WIRECUTTER) if(hasPower() && shock(user, 60)) // Protective grille of wiring is electrified return - to_chat(user, "You start cutting through the outer grille.") + to_chat(user, span_notice("You start cutting through the outer grille.")) if(C.use_tool(src, user, 10, volume=100)) if(!panel_open) return - user.visible_message("[user] cut through \the [src]'s outer grille.", - "You cut through \the [src]'s outer grille.") + user.visible_message(span_notice("[user] cut through \the [src]'s outer grille."), + span_notice("You cut through \the [src]'s outer grille.")) security_level = AIRLOCK_SECURITY_PLASTEEL_O return if(C.tool_behaviour == TOOL_SCREWDRIVER) if(panel_open && detonated) - to_chat(user, "[src] has no maintenance panel!") + to_chat(user, span_warning("[src] has no maintenance panel!")) return panel_open = !panel_open - to_chat(user, "You [panel_open ? "open":"close"] the maintenance panel of the airlock.") + to_chat(user, span_notice("You [panel_open ? "open":"close"] the maintenance panel of the airlock.")) C.play_tool_sound(src) update_icon() else if((C.tool_behaviour == TOOL_WIRECUTTER) && note) - user.visible_message("[user] cuts down [note] from [src].", "You remove [note] from [src].") + user.visible_message(span_notice("[user] cuts down [note] from [src]."), span_notice("You remove [note] from [src].")) C.play_tool_sound(src) note.forceMove(get_turf(user)) note = null @@ -1097,29 +1097,29 @@ S.show_access(src, user) //yogs end else if(istype(C, /obj/item/doorCharge)) if(!panel_open || security_level) - to_chat(user, "The maintenance panel must be open to apply [C]!") + to_chat(user, span_warning("The maintenance panel must be open to apply [C]!")) return if(obj_flags & EMAGGED) return if(charge && !detonated) - to_chat(user, "There's already a charge hooked up to this door!") + to_chat(user, span_warning("There's already a charge hooked up to this door!")) return if(detonated) - to_chat(user, "The maintenance panel is destroyed!") + to_chat(user, span_warning("The maintenance panel is destroyed!")) return - to_chat(user, "You apply [C]. Next time someone opens the door, it will explode.") + to_chat(user, span_warning("You apply [C]. Next time someone opens the door, it will explode.")) panel_open = FALSE update_icon() user.transferItemToLoc(C, src, TRUE) charge = C else if(istype(C, /obj/item/paper) || istype(C, /obj/item/photo)) if(note) - to_chat(user, "There's already something pinned to this airlock! Use wirecutters to remove it.") + to_chat(user, span_warning("There's already something pinned to this airlock! Use wirecutters to remove it.")) return if(!user.transferItemToLoc(C, src)) - to_chat(user, "For some reason, you can't attach [C]!") + to_chat(user, span_warning("For some reason, you can't attach [C]!")) return - user.visible_message("[user] pins [C] to [src].", "You pin [C] to [src].") + user.visible_message(span_notice("[user] pins [C] to [src]."), span_notice("You pin [C] to [src].")) note = C update_icon() else if(istype(C, /obj/item/brace)) //yogs @@ -1129,7 +1129,7 @@ if(!density) return if(locked || welded) - to_chat(user, "Your [C.name] can't force open locked doors without smashing them down [src].") + to_chat(user, span_warning("Your [C.name] can't force open locked doors without smashing them down [src].")) return open(2) var/obj/item/umbral_tendrils/T = C @@ -1138,9 +1138,9 @@ else if(user.a_intent == INTENT_DISARM && density) if(!locked && !welded) if(!T.darkspawn.has_psi(15)) - to_chat(user, "You need at least 15 Psi to force open an airlock!") + to_chat(user, span_warning("You need at least 15 Psi to force open an airlock!")) return - user.visible_message("[user] starts forcing open [src]!", "ueahz
You begin forcing open [src]...
") + user.visible_message(span_warning("[user] starts forcing open [src]!"), span_velvet("ueahz
You begin forcing open [src]...")) playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) if(!T.twin) if(!do_after(user, 75, target = src)) @@ -1150,13 +1150,13 @@ return open(2) if(density && !open(2)) - to_chat(user, "Despite your attempts, [src] refuses to open!") + to_chat(user, span_warning("Despite your attempts, [src] refuses to open!")) T.darkspawn.use_psi(15) else if(!T.darkspawn.has_psi(30)) - to_chat(user, "You need at least 30 Psi to smash down an airlock!") + to_chat(user, span_warning("You need at least 30 Psi to smash down an airlock!")) return - user.visible_message("[user] starts slamming [T] into [src]!", \ + user.visible_message(span_boldwarning("[user] starts slamming [T] into [src]!"), \ "You loudly begin smashing down [src].") while(obj_integrity > max_integrity * 0.25) if(T.twin) @@ -1173,7 +1173,7 @@ take_damage(max_integrity / rand(8, 15)) to_chat(user, "klaj.") ex_act(EXPLODE_DEVASTATE) - user.visible_message("[user] slams down [src]!", "KLAJ.") + user.visible_message(span_boldwarning("[user] slams down [src]!"), "KLAJ.") T.darkspawn.use_psi(30) qdel(T) else @@ -1186,28 +1186,28 @@ if(!W.tool_start_check(user, amount=0)) return user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \ - "You begin [welded ? "unwelding":"welding"] the airlock...", \ - "You hear welding.") + span_notice("You begin [welded ? "unwelding":"welding"] the airlock..."), \ + span_italics("You hear welding.")) if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user))) welded = !welded user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \ - "You [welded ? "weld the airlock shut":"unweld the airlock"].") + span_notice("You [welded ? "weld the airlock shut":"unweld the airlock"].")) update_icon() else if(obj_integrity < max_integrity) if(!W.tool_start_check(user, amount=0)) return user.visible_message("[user] is welding the airlock.", \ - "You begin repairing the airlock...", \ - "You hear welding.") + span_notice("You begin repairing the airlock..."), \ + span_italics("You hear welding.")) if(W.use_tool(src, user, 40, volume=50, extra_checks = CALLBACK(src, .proc/weld_checks, W, user))) obj_integrity = max_integrity stat &= ~BROKEN user.visible_message("[user.name] has repaired [src].", \ - "You finish repairing the airlock.") + span_notice("You finish repairing the airlock.")) update_icon() else - to_chat(user, "The airlock doesn't need repairing.") + to_chat(user, span_notice("The airlock doesn't need repairing.")) /obj/machinery/door/airlock/proc/weld_checks(obj/item/weldingtool/W, mob/user) return !operating && density @@ -1219,33 +1219,33 @@ else beingcrowbarred = 0 if(panel_open && charge) - to_chat(user, "You carefully start removing [charge] from [src]...") + to_chat(user, span_notice("You carefully start removing [charge] from [src]...")) if(!I.use_tool(src, user, 150, volume=50)) - to_chat(user, "You slip and [charge] detonates!") + to_chat(user, span_warning("You slip and [charge] detonates!")) user.Paralyze(60) return blow_charge() - user.visible_message("[user] removes [charge] from [src].", \ - "You gently pry out [charge] from [src] and unhook its wires.") + user.visible_message(span_notice("[user] removes [charge] from [src]."), \ + span_notice("You gently pry out [charge] from [src] and unhook its wires.")) charge.forceMove(get_turf(user)) charge = null return if(!security_level && (beingcrowbarred && panel_open && ((obj_flags & EMAGGED) || (density && welded && !operating && !hasPower() && !locked)))) user.visible_message("[user] removes the electronics from the airlock assembly.", \ - "You start to remove electronics from the airlock assembly...") + span_notice("You start to remove electronics from the airlock assembly...")) if(I.use_tool(src, user, 40, volume=100)) deconstruct(TRUE, user) return else if(hasPower()) - to_chat(user, "The airlock's motors resist your efforts to force it!") + to_chat(user, span_warning("The airlock's motors resist your efforts to force it!")) else if(locked) - to_chat(user, "The airlock's bolts prevent it from being forced!") + to_chat(user, span_warning("The airlock's bolts prevent it from being forced!")) else if(brace) - to_chat(user, "The airlock won't budge!") + to_chat(user, span_warning("The airlock won't budge!")) else if( !welded && !operating) if(istype(I, /obj/item/twohanded/fireaxe)) //being fireaxe'd var/obj/item/twohanded/fireaxe/F = I if(!F.wielded) - to_chat(user, "You need to be wielding the fire axe to do that!") + to_chat(user, span_warning("You need to be wielding the fire axe to do that!")) return INVOKE_ASYNC(src, (density ? .proc/open : .proc/close), 2) @@ -1258,15 +1258,15 @@ return if(locked) - to_chat(user, "The bolts are down, it won't budge!") + to_chat(user, span_warning("The bolts are down, it won't budge!")) return if(welded) - to_chat(user, "It's welded, it won't budge!") + to_chat(user, span_warning("It's welded, it won't budge!")) return if(brace) - to_chat(user, "The airlock won't budge!") + to_chat(user, span_warning("The airlock won't budge!")) return var/time_to_open = 5 @@ -1285,7 +1285,7 @@ time_to_open = 15 else if(user) - to_chat(user, "You do not have enough charge in the [J] for this. You need at least [J.pump_cost]% ") + to_chat(user, span_warning("You do not have enough charge in the [J] for this. You need at least [J.pump_cost]% ")) return playsound(src, 'sound/machines/airlock_alien_prying.ogg', 100, TRUE) //is it aliens or just the CE being a dick? @@ -1293,7 +1293,7 @@ if(do_after(user, time_to_open, TRUE, src)) open(2) if(density && !open(2)) - to_chat(user, "Despite your attempts, [src] refuses to open.") + to_chat(user, span_warning("Despite your attempts, [src] refuses to open.")) prying_so_hard = FALSE @@ -1308,15 +1308,15 @@ return if(welded && !locked) - to_chat(user, "It's welded, this will take a while...") + to_chat(user, span_warning("It's welded, this will take a while...")) time_to_open = 100 * door_time_multiplier if(locked && !welded) - to_chat(user, "The bolts are down, it won't budge! Forcing the bolts will take a while...") + to_chat(user, span_warning("The bolts are down, it won't budge! Forcing the bolts will take a while...")) time_to_open = 80 * door_time_multiplier if(locked && welded) - to_chat(user, "The bolts are down, and it's welded.Forcing the bolts and breaking the seal will take a long while...") + to_chat(user, span_warning("The bolts are down, and it's welded.Forcing the bolts and breaking the seal will take a long while...")) time_to_open = 200 * door_time_multiplier if(brace) @@ -1327,7 +1327,7 @@ if(do_after(user, time_to_open, TRUE, src)) open(2) if(density && !open(2)) - to_chat(user, "Despite your attempts, [src] refuses to open.") + to_chat(user, span_warning("Despite your attempts, [src] refuses to open.")) /obj/machinery/door/airlock/open(forced=0) @@ -1438,7 +1438,7 @@ /obj/machinery/door/airlock/proc/change_paintjob(obj/item/airlock_painter/painter, mob/user) if(!can_repaint) - to_chat(user, "The airlock painter does not support this airlock.") + to_chat(user, span_warning("The airlock painter does not support this airlock.")) return if((!in_range(src, user) && loc != user) || !painter.can_use(user)) // user should be adjacent to the airlock, and the painter should have a toner cartridge that isn't empty @@ -1454,7 +1454,7 @@ var/obj/structure/door_assembly/assembly = initial(airlock.assemblytype) if(airlock_material == "glass" && initial(assembly.noglass)) // prevents painting glass airlocks with a paint job that doesn't have a glass version, such as the freezer - to_chat(user, "This paint job can only be applied to non-glass airlocks.") + to_chat(user, span_warning("This paint job can only be applied to non-glass airlocks.")) return // applies the user-chosen airlock's icon, overlays and assemblytype to the src airlock @@ -1492,11 +1492,11 @@ if(!density) //Already open return if(locked || welded) //Extremely generic, as aliens only understand the basics of how airlocks work. - to_chat(user, "[src] refuses to budge!") + to_chat(user, span_warning("[src] refuses to budge!")) return - user.visible_message("[user] begins prying open [src].",\ - "You begin digging your claws into [src] with all your might!",\ - "You hear groaning metal...") + user.visible_message(span_warning("[user] begins prying open [src]."),\ + span_noticealien("You begin digging your claws into [src] with all your might!"),\ + span_warning("You hear groaning metal...")) var/time_to_open = 5 if(hasPower()) time_to_open = 50 //Powered airlocks take longer to open, and are loud. @@ -1505,7 +1505,7 @@ if(do_after(user, time_to_open, TRUE, src)) if(density && !open(2)) //The airlock is still closed, but something prevented it opening. (Another player noticed and bolted/welded the airlock in time!) - to_chat(user, "Despite your efforts, [src] managed to resist your attempts to open it!") + to_chat(user, span_warning("Despite your efforts, [src] managed to resist your attempts to open it!")) /obj/machinery/door/airlock/hostile_lockdown(mob/origin) // Must be powered and have working AI wire. @@ -1580,10 +1580,10 @@ A.obj_integrity = A.max_integrity * 0.5 else if(obj_flags & EMAGGED) if(user) - to_chat(user, "You discard the damaged electronics.") + to_chat(user, span_warning("You discard the damaged electronics.")) else if(user) - to_chat(user, "You remove the airlock electronics.") + to_chat(user, span_notice("You remove the airlock electronics.")) var/obj/item/electronics/airlock/ae if(!electronics) @@ -1604,7 +1604,7 @@ switch(the_rcd.mode) if(RCD_DECONSTRUCT) if(security_level != AIRLOCK_SECURITY_NONE) - to_chat(user, "[src]'s reinforcement needs to be removed first.") + to_chat(user, span_notice("[src]'s reinforcement needs to be removed first.")) return FALSE return list("mode" = RCD_DECONSTRUCT, "delay" = 50, "cost" = 32) return FALSE @@ -1612,7 +1612,7 @@ /obj/machinery/door/airlock/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) - to_chat(user, "You deconstruct the airlock.") + to_chat(user, span_notice("You deconstruct the airlock.")) qdel(src) return TRUE return FALSE @@ -1756,11 +1756,11 @@ if(!user_allowed(user)) return if(wires.is_cut(WIRE_BOLTS)) - to_chat(user, "The door bolt drop wire is cut - you can't toggle the door bolts.") + to_chat(user, span_warning("The door bolt drop wire is cut - you can't toggle the door bolts.")) return if(locked) if(!hasPower()) - to_chat(user, "The door has no power - you can't raise the door bolts.") + to_chat(user, span_warning("The door has no power - you can't raise the door bolts.")) else unbolt() to_chat(user, "Door bolts raised.") @@ -1789,7 +1789,7 @@ /obj/machinery/door/airlock/proc/blow_charge() panel_open = TRUE update_icon(AIRLOCK_OPENING) - visible_message("[src]'s panel is blown off in a spray of deadly shrapnel!") + visible_message(span_warning("[src]'s panel is blown off in a spray of deadly shrapnel!")) charge.forceMove(drop_location()) charge.ex_act(EXPLODE_DEVASTATE) detonated = TRUE diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm index b5ea06cc9260..7bf3fefe4449 100644 --- a/code/game/machinery/doors/airlock_electronics.dm +++ b/code/game/machinery/doors/airlock_electronics.dm @@ -9,7 +9,7 @@ /obj/item/electronics/airlock/examine(mob/user) . = ..() - . += "Has a neat selection menu for modifying airlock access levels." + . += span_notice("Has a neat selection menu for modifying airlock access levels.") /obj/item/electronics/airlock/ui_state(mob/user) return GLOB.always_state diff --git a/code/game/machinery/doors/airlock_types.dm b/code/game/machinery/doors/airlock_types.dm index 0e8db90345d5..cc067f320c31 100644 --- a/code/game/machinery/doors/airlock_types.dm +++ b/code/game/machinery/doors/airlock_types.dm @@ -584,9 +584,9 @@ var/gear_text = "The cogwheel is flickering and twisting wildly. Report this to a coder." switch(construction_state) if(GEAR_SECURE) - gear_text = "The cogwheel is solidly wrenched to the brass around it." + gear_text = span_brass("The cogwheel is solidly wrenched to the brass around it.") if(GEAR_LOOSE) - gear_text = "The cogwheel has been loosened, but remains connected loosely to the door!" + gear_text = span_alloy("The cogwheel has been loosened, but remains connected loosely to the door!") . += gear_text /obj/machinery/door/airlock/clockwork/emp_act(severity) @@ -638,30 +638,30 @@ return 0 else if(I.tool_behaviour == TOOL_WRENCH) if(construction_state == GEAR_SECURE) - user.visible_message("[user] begins loosening [src]'s cogwheel...", "You begin loosening [src]'s cogwheel...") + user.visible_message(span_notice("[user] begins loosening [src]'s cogwheel..."), span_notice("You begin loosening [src]'s cogwheel...")) if(!I.use_tool(src, user, 75, volume=50) || construction_state != GEAR_SECURE) return 1 - user.visible_message("[user] loosens [src]'s cogwheel!", "[src]'s cogwheel pops off and dangles loosely.") + user.visible_message(span_notice("[user] loosens [src]'s cogwheel!"), span_notice("[src]'s cogwheel pops off and dangles loosely.")) playsound(src, 'sound/items/deconstruct.ogg', 50, 1) construction_state = GEAR_LOOSE else if(construction_state == GEAR_LOOSE) - user.visible_message("[user] begins tightening [src]'s cogwheel...", "You begin tightening [src]'s cogwheel into place...") + user.visible_message(span_notice("[user] begins tightening [src]'s cogwheel..."), span_notice("You begin tightening [src]'s cogwheel into place...")) if(!I.use_tool(src, user, 75, volume=50) || construction_state != GEAR_LOOSE) return 1 - user.visible_message("[user] tightens [src]'s cogwheel!", "You firmly tighten [src]'s cogwheel into place.") + user.visible_message(span_notice("[user] tightens [src]'s cogwheel!"), span_notice("You firmly tighten [src]'s cogwheel into place.")) playsound(src, 'sound/items/deconstruct.ogg', 50, 1) construction_state = GEAR_SECURE return 1 else if(I.tool_behaviour == TOOL_CROWBAR) if(construction_state == GEAR_SECURE) - to_chat(user, "[src]'s cogwheel is too tightly secured! Your [I.name] can't reach under it!") + to_chat(user, span_warning("[src]'s cogwheel is too tightly secured! Your [I.name] can't reach under it!")) return 1 else if(construction_state == GEAR_LOOSE) - user.visible_message("[user] begins slowly lifting off [src]'s cogwheel...", "You slowly begin lifting off [src]'s cogwheel...") + user.visible_message(span_notice("[user] begins slowly lifting off [src]'s cogwheel..."), span_notice("You slowly begin lifting off [src]'s cogwheel...")) if(!I.use_tool(src, user, 75, volume=50) || construction_state != GEAR_LOOSE) return 1 - user.visible_message("[user] lifts off [src]'s cogwheel, causing it to fall apart!", \ - "You lift off [src]'s cogwheel, causing it to fall apart!") + user.visible_message(span_notice("[user] lifts off [src]'s cogwheel, causing it to fall apart!"), \ + span_notice("You lift off [src]'s cogwheel, causing it to fall apart!")) deconstruct(TRUE) return 1 return 0 diff --git a/code/game/machinery/doors/brigdoors.dm b/code/game/machinery/doors/brigdoors.dm index 6b9232160b1e..a20f491636ad 100644 --- a/code/game/machinery/doors/brigdoors.dm +++ b/code/game/machinery/doors/brigdoors.dm @@ -209,7 +209,7 @@ . = TRUE if(!allowed(usr)) - to_chat(usr, "Access denied.") + to_chat(usr, span_warning("Access denied.")) return FALSE switch(action) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 665ff85b222e..4abd3b29a4c1 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -60,16 +60,16 @@ . = ..() if(red_alert_access) if(GLOB.security_level >= SEC_LEVEL_RED) - . += "Due to a security threat, its access requirements have been lifted!" + . += span_notice("Due to a security threat, its access requirements have been lifted!") else - . += "In the event of a red alert, its access requirements will automatically lift." + . += span_notice("In the event of a red alert, its access requirements will automatically lift.") if(!poddoor) - . += "Its maintenance panel is screwed in place." + . += span_notice("Its maintenance panel is screwed in place.") if(!isdead(user)) var/userDir = turn(get_dir(src, user), 180) var/turf/T = get_step(src, userDir) var/areaName = T.loc.name - . += "It leads into [areaName]." + . += span_notice("It leads into [areaName].") /obj/machinery/door/check_access_list(list/access_list) if(red_alert_access && GLOB.security_level >= SEC_LEVEL_RED) @@ -370,7 +370,12 @@ /obj/machinery/door/proc/crush() for(var/mob/living/L in get_turf(src)) - L.visible_message("[src] closes on [L], crushing [L.p_them()]!", "[src] closes on you and crushes you!") + L.visible_message(span_warning("[src] closes on [L], crushing [L.p_them()]!"), span_userdanger("[src] closes on you and crushes you!")) + if(iscarbon(L)) + var/mob/living/carbon/C = L + for(var/i in C.all_wounds) // should probably replace with signal + var/datum/wound/W = i + W.crush(DOOR_CRUSH_DAMAGE) if(isalien(L)) //For xenos L.adjustBruteLoss(DOOR_CRUSH_DAMAGE * 1.5) //Xenos go into crit after aproximately the same amount of crushes as humans. L.emote("roar") diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm index 6c182091eaea..bcca67f909e0 100644 --- a/code/game/machinery/doors/firedoor.dm +++ b/code/game/machinery/doors/firedoor.dm @@ -38,13 +38,13 @@ /obj/machinery/door/firedoor/examine(mob/user) . = ..() if(!density) - . += "It is open, but could be pried closed." + . += span_notice("It is open, but could be pried closed.") else if(!welded) - . += "It is closed, but could be pried open. Deconstruction would require it to be welded shut." + . += span_notice("It is closed, but could be pried open. Deconstruction would require it to be welded shut.") else if(boltslocked) - . += "It is welded shut. The floor bolts have been locked by screws." + . += span_notice("It is welded shut. The floor bolts have been locked by screws.") else - . += "The bolt locks have been unscrewed, but the bolts themselves are still wrenched to the floor." + . += span_notice("The bolt locks have been unscrewed, but the bolts themselves are still wrenched to the floor.") /obj/machinery/door/firedoor/proc/CalculateAffectingAreas() remove_from_areas() @@ -121,21 +121,21 @@ if(welded) if(C.tool_behaviour == TOOL_WRENCH) if(boltslocked) - to_chat(user, "There are screws locking the bolts in place!") + to_chat(user, span_notice("There are screws locking the bolts in place!")) return C.play_tool_sound(src) - user.visible_message("[user] starts undoing [src]'s bolts...", \ - "You start unfastening [src]'s floor bolts...") + user.visible_message(span_notice("[user] starts undoing [src]'s bolts..."), \ + span_notice("You start unfastening [src]'s floor bolts...")) if(!C.use_tool(src, user, 50)) return playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) - user.visible_message("[user] unfastens [src]'s bolts.", \ - "You undo [src]'s floor bolts.") + user.visible_message(span_notice("[user] unfastens [src]'s bolts."), \ + span_notice("You undo [src]'s floor bolts.")) deconstruct(TRUE) return if(C.tool_behaviour == TOOL_SCREWDRIVER) - user.visible_message("[user] [boltslocked ? "unlocks" : "locks"] [src]'s bolts.", \ - "You [boltslocked ? "unlock" : "lock"] [src]'s floor bolts.") + user.visible_message(span_notice("[user] [boltslocked ? "unlocks" : "locks"] [src]'s bolts."), \ + span_notice("You [boltslocked ? "unlock" : "lock"] [src]'s floor bolts.")) C.play_tool_sound(src) boltslocked = !boltslocked return @@ -148,10 +148,10 @@ /obj/machinery/door/firedoor/try_to_weld(obj/item/weldingtool/W, mob/user) if(!W.tool_start_check(user, amount=0)) return - user.visible_message("[user] starts [welded ? "unwelding" : "welding"] [src].", "You start welding [src].") + user.visible_message(span_notice("[user] starts [welded ? "unwelding" : "welding"] [src]."), span_notice("You start welding [src].")) if(W.use_tool(src, user, 40, volume=50)) welded = !welded - to_chat(user, "[user] [welded?"welds":"unwelds"] [src].", "You [welded ? "weld" : "unweld"] [src].") + to_chat(user, span_danger("[user] [welded?"welds":"unwelds"] [src]."), span_notice("You [welded ? "weld" : "unweld"] [src].")) update_icon() /obj/machinery/door/firedoor/try_to_crowbar(obj/item/I, mob/user) @@ -161,7 +161,7 @@ if(density) if(is_holding_pressure()) // tell the user that this is a bad idea, and have a do_after as well - to_chat(user, "As you begin crowbarring \the [src] a gush of air blows in your face... maybe you should reconsider?") + to_chat(user, span_warning("As you begin crowbarring \the [src] a gush of air blows in your face... maybe you should reconsider?")) if(!do_after(user, 15, TRUE, src)) // give them a few seconds to reconsider their decision. return log_game("[key_name_admin(user)] has opened a firelock with a pressure difference at [AREACOORD(loc)]") // there bibby I made it logged just for you. Enjoy. @@ -196,7 +196,7 @@ /obj/machinery/door/firedoor/attack_alien(mob/user) add_fingerprint(user) if(welded) - to_chat(user, "[src] refuses to budge!") + to_chat(user, span_warning("[src] refuses to budge!")) return if(user.a_intent == INTENT_HARM) return ..() @@ -326,7 +326,7 @@ if(M.stat == CONSCIOUS && M.pulling && M.pulling.loc == T2 && !M.pulling.anchored && M.pulling.move_resist <= M.move_force) var/mob/living/M2 = M.pulling if(!istype(M2) || !M2.buckled || !M2.buckled.buckle_prevents_pull) - to_chat(M, "You pull [M.pulling] through [src] right as it closes") + to_chat(M, span_notice("You pull [M.pulling] through [src] right as it closes")) M.pulling.forceMove(T1) M.start_pulling(M2) @@ -334,7 +334,7 @@ if(M.stat == CONSCIOUS && M.pulling && M.pulling.loc == T1 && !M.pulling.anchored && M.pulling.move_resist <= M.move_force) var/mob/living/M2 = M.pulling if(!istype(M2) || !M2.buckled || !M2.buckled.buckle_prevents_pull) - to_chat(M, "You pull [M.pulling] through [src] right as it closes") + to_chat(M, span_notice("You pull [M.pulling] through [src] right as it closes")) M.pulling.forceMove(T2) M.start_pulling(M2) . = ..() @@ -351,7 +351,7 @@ var/status1 = check_door_side(T) var/status2 = check_door_side(T2) if((status1 == 1 && status2 == -1) || (status1 == -1 && status2 == 1)) - to_chat(user, "Access denied. Try closing another firedoor to minimize decompression, or using a crowbar.") + to_chat(user, span_warning("Access denied. Try closing another firedoor to minimize decompression, or using a crowbar.")) return FALSE return TRUE @@ -460,15 +460,15 @@ . = ..() switch(constructionStep) if(CONSTRUCTION_PANEL_OPEN) - . += "It is unbolted from the floor. A small loosely connected metal plate is covering the wires." + . += span_notice("It is unbolted from the floor. A small loosely connected metal plate is covering the wires.") if(!reinforced) - . += "It could be reinforced with plasteel." + . += span_notice("It could be reinforced with plasteel.") if(CONSTRUCTION_WIRES_EXPOSED) - . += "The maintenance plate has been pried away, and wires are trailing." + . += span_notice("The maintenance plate has been pried away, and wires are trailing.") if(CONSTRUCTION_GUTTED) - . += "The maintenance panel is missing wires and the circuit board is loosely connected." + . += span_notice("The maintenance panel is missing wires and the circuit board is loosely connected.") if(CONSTRUCTION_NOCIRCUIT) - . += "There are no firelock electronics in the frame. The frame could be cut apart." + . += span_notice("There are no firelock electronics in the frame. The frame could be cut apart.") /obj/structure/firelock_frame/update_icon() ..() @@ -481,7 +481,7 @@ /obj/structure/firelock_frame/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) if(passed_mode == RCD_DECONSTRUCT) - to_chat(user, "You deconstruct [src].") + to_chat(user, span_notice("You deconstruct [src].")) qdel(src) return TRUE return FALSE @@ -491,31 +491,31 @@ if(CONSTRUCTION_PANEL_OPEN) if(C.tool_behaviour == TOOL_CROWBAR) C.play_tool_sound(src) - user.visible_message("[user] starts prying something out from [src]...", \ - "You begin prying out the wire cover...") + user.visible_message(span_notice("[user] starts prying something out from [src]..."), \ + span_notice("You begin prying out the wire cover...")) if(!C.use_tool(src, user, 50)) return if(constructionStep != CONSTRUCTION_PANEL_OPEN) return playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) - user.visible_message("[user] pries out a metal plate from [src], exposing the wires.", \ - "You remove the cover plate from [src], exposing the wires.") + user.visible_message(span_notice("[user] pries out a metal plate from [src], exposing the wires."), \ + span_notice("You remove the cover plate from [src], exposing the wires.")) constructionStep = CONSTRUCTION_WIRES_EXPOSED update_icon() return if(C.tool_behaviour == TOOL_WRENCH) if(locate(/obj/machinery/door/firedoor) in get_turf(src)) - to_chat(user, "There's already a firelock there.") + to_chat(user, span_warning("There's already a firelock there.")) return C.play_tool_sound(src) - user.visible_message("[user] starts bolting down [src]...", \ - "You begin bolting [src]...") + user.visible_message(span_notice("[user] starts bolting down [src]..."), \ + span_notice("You begin bolting [src]...")) if(!C.use_tool(src, user, 30)) return if(locate(/obj/machinery/door/firedoor) in get_turf(src)) return - user.visible_message("[user] finishes the firelock.", \ - "You finish the firelock.") + user.visible_message(span_notice("[user] finishes the firelock."), \ + span_notice("You finish the firelock.")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) if(border) new /obj/machinery/door/firedoor/border_only(get_turf(src), dir) @@ -528,22 +528,22 @@ if(istype(C, /obj/item/stack/sheet/plasteel)) var/obj/item/stack/sheet/plasteel/P = C if(border) - to_chat(user, "[src] cannot be reinforced.") + to_chat(user, span_warning("[src] cannot be reinforced.")) return if(reinforced) - to_chat(user, "[src] is already reinforced.") + to_chat(user, span_warning("[src] is already reinforced.")) return if(P.get_amount() < 2) - to_chat(user, "You need more plasteel to reinforce [src].") + to_chat(user, span_warning("You need more plasteel to reinforce [src].")) return - user.visible_message("[user] begins reinforcing [src]...", \ - "You begin reinforcing [src]...") + user.visible_message(span_notice("[user] begins reinforcing [src]..."), \ + span_notice("You begin reinforcing [src]...")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) if(do_after(user, 60, target = src)) if(constructionStep != CONSTRUCTION_PANEL_OPEN || reinforced || P.get_amount() < 2 || !P) return - user.visible_message("[user] reinforces [src].", \ - "You reinforce [src].") + user.visible_message(span_notice("[user] reinforces [src]."), \ + span_notice("You reinforce [src].")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) P.use(2) reinforced = 1 @@ -552,42 +552,42 @@ if(CONSTRUCTION_WIRES_EXPOSED) if(C.tool_behaviour == TOOL_WIRECUTTER) C.play_tool_sound(src) - user.visible_message("[user] starts cutting the wires from [src]...", \ - "You begin removing [src]'s wires...") + user.visible_message(span_notice("[user] starts cutting the wires from [src]..."), \ + span_notice("You begin removing [src]'s wires...")) if(!C.use_tool(src, user, 60)) return if(constructionStep != CONSTRUCTION_WIRES_EXPOSED) return - user.visible_message("[user] removes the wires from [src].", \ - "You remove the wiring from [src], exposing the circuit board.") + user.visible_message(span_notice("[user] removes the wires from [src]."), \ + span_notice("You remove the wiring from [src], exposing the circuit board.")) new/obj/item/stack/cable_coil(get_turf(src), 5) constructionStep = CONSTRUCTION_GUTTED update_icon() return if(C.tool_behaviour == TOOL_CROWBAR) C.play_tool_sound(src) - user.visible_message("[user] starts prying a metal plate into [src]...", \ - "You begin prying the cover plate back onto [src]...") + user.visible_message(span_notice("[user] starts prying a metal plate into [src]..."), \ + span_notice("You begin prying the cover plate back onto [src]...")) if(!C.use_tool(src, user, 80)) return if(constructionStep != CONSTRUCTION_WIRES_EXPOSED) return playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) - user.visible_message("[user] pries the metal plate into [src].", \ - "You pry [src]'s cover plate into place, hiding the wires.") + user.visible_message(span_notice("[user] pries the metal plate into [src]."), \ + span_notice("You pry [src]'s cover plate into place, hiding the wires.")) constructionStep = CONSTRUCTION_PANEL_OPEN update_icon() return if(CONSTRUCTION_GUTTED) if(C.tool_behaviour == TOOL_CROWBAR) - user.visible_message("[user] begins removing the circuit board from [src]...", \ - "You begin prying out the circuit board from [src]...") + user.visible_message(span_notice("[user] begins removing the circuit board from [src]..."), \ + span_notice("You begin prying out the circuit board from [src]...")) if(!C.use_tool(src, user, 50, volume=50)) return if(constructionStep != CONSTRUCTION_GUTTED) return - user.visible_message("[user] removes [src]'s circuit board.", \ - "You remove the circuit board from [src].") + user.visible_message(span_notice("[user] removes [src]'s circuit board."), \ + span_notice("You remove the circuit board from [src].")) new /obj/item/electronics/firelock(drop_location()) constructionStep = CONSTRUCTION_NOCIRCUIT update_icon() @@ -595,16 +595,16 @@ if(istype(C, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/B = C if(B.get_amount() < 5) - to_chat(user, "You need more wires to add wiring to [src].") + to_chat(user, span_warning("You need more wires to add wiring to [src].")) return - user.visible_message("[user] begins wiring [src]...", \ - "You begin adding wires to [src]...") + user.visible_message(span_notice("[user] begins wiring [src]..."), \ + span_notice("You begin adding wires to [src]...")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) if(do_after(user, 60, target = src)) if(constructionStep != CONSTRUCTION_GUTTED || B.get_amount() < 5 || !B) return - user.visible_message("[user] adds wires to [src].", \ - "You wire [src].") + user.visible_message(span_notice("[user] adds wires to [src]."), \ + span_notice("You wire [src].")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) B.use(5) constructionStep = CONSTRUCTION_WIRES_EXPOSED @@ -614,14 +614,14 @@ if(C.tool_behaviour == TOOL_WELDER) if(!C.tool_start_check(user, amount=1)) return - user.visible_message("[user] begins cutting apart [src]'s frame...", \ - "You begin slicing [src] apart...") + user.visible_message(span_notice("[user] begins cutting apart [src]'s frame..."), \ + span_notice("You begin slicing [src] apart...")) if(C.use_tool(src, user, 40, volume=50, amount=1)) if(constructionStep != CONSTRUCTION_NOCIRCUIT) return - user.visible_message("[user] cuts apart [src]!", \ - "You cut [src] into metal.") + user.visible_message(span_notice("[user] cuts apart [src]!"), \ + span_notice("You cut [src] into metal.")) var/turf/T = get_turf(src) new /obj/item/stack/sheet/metal(T, 3) if(reinforced) @@ -629,16 +629,16 @@ qdel(src) return if(istype(C, /obj/item/electronics/firelock)) - user.visible_message("[user] starts adding [C] to [src]...", \ - "You begin adding a circuit board to [src]...") + user.visible_message(span_notice("[user] starts adding [C] to [src]..."), \ + span_notice("You begin adding a circuit board to [src]...")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) if(!do_after(user, 40, target = src)) return if(constructionStep != CONSTRUCTION_NOCIRCUIT) return qdel(C) - user.visible_message("[user] adds a circuit to [src].", \ - "You insert and secure [C].") + user.visible_message(span_notice("[user] adds a circuit to [src]."), \ + span_notice("You insert and secure [C].")) playsound(get_turf(src), 'sound/items/deconstruct.ogg', 50, 1) constructionStep = CONSTRUCTION_GUTTED update_icon() @@ -647,8 +647,8 @@ var/obj/item/electroadaptive_pseudocircuit/P = C if(!P.adapt_circuit(user, 30)) return - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt a firelock circuit and slot it into the assembly.") + user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \ + span_notice("You adapt a firelock circuit and slot it into the assembly.")) constructionStep = CONSTRUCTION_GUTTED update_icon() return @@ -662,8 +662,8 @@ /obj/structure/firelock_frame/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_UPGRADE_SIMPLE_CIRCUITS) - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt a firelock circuit and slot it into the assembly.") + user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \ + span_notice("You adapt a firelock circuit and slot it into the assembly.")) constructionStep = CONSTRUCTION_GUTTED update_icon() return TRUE diff --git a/code/game/machinery/doors/ministile.dm b/code/game/machinery/doors/ministile.dm new file mode 100644 index 000000000000..50ab911a34e8 --- /dev/null +++ b/code/game/machinery/doors/ministile.dm @@ -0,0 +1,48 @@ +/obj/machinery/ministile + name = "ministile" + desc = "A mechanical door that permits one-way access to an area." + icon = 'icons/obj/objects.dmi' + icon_state = "ministile_map" + power_channel = ENVIRON + density = TRUE + obj_integrity = 150 + max_integrity = 150 + //Smaller turnstile easier to smash + armor = list("melee" = 30, "bullet" = 20, "laser" = 0, "energy" = 60, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50) + anchored = TRUE + use_power = FALSE + idle_power_usage = 2 + resistance_flags = LAVA_PROOF | FIRE_PROOF | UNACIDABLE | ACID_PROOF + layer = OPEN_DOOR_LAYER + climbable = TRUE + +/obj/machinery/ministile/hop + name = "HOP line turnstile" + req_one_access = list(ACCESS_HEADS) + +/obj/machinery/ministile/Initialize() + . = ..() + icon_state = "ministile" + +/obj/machinery/ministile/CanAtmosPass(turf/T) + return TRUE + +/obj/machinery/ministile/Cross(atom/movable/mover) + . = ..() + if(istype(mover) && (mover.pass_flags & PASSGLASS)) + return TRUE + if(!isliving(mover)) + return TRUE + var/allowed = allowed(mover) + //Sec can drag you out unceremoniously. + if(!allowed && mover.pulledby) + allowed = allowed(mover.pulledby) + + if(get_dir(loc, mover.loc) == dir || allowed || mover==machineclimber) //Make sure looking at appropriate border, loc is first so the turnstyle faces the mover + flick("ministile_operate", src) + playsound(src,'sound/items/ratchet.ogg',50,0,3) + return TRUE + else + flick("ministile_deny", src) + playsound(src,'sound/machines/deniedbeep.ogg',50,0,3) + return FALSE diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index b7b028284bb9..6678e30019fa 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -105,22 +105,22 @@ /obj/machinery/door/poddoor/attackby(obj/item/W, mob/user, params) . = ..() if(special && W.tool_behaviour == TOOL_SCREWDRIVER) // No Cheesing - to_chat(user, "This door appears to have a different screw.") + to_chat(user, span_warning("This door appears to have a different screw.")) return if(W.tool_behaviour == TOOL_SCREWDRIVER) if(density) - to_chat(user, "You need to open [src] before opening its maintenance panel.") + to_chat(user, span_warning("You need to open [src] before opening its maintenance panel.")) return else if(default_deconstruction_screwdriver(user, icon_state, icon_state, W)) - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch of [src].") + to_chat(user, span_notice("You [panel_open ? "open" : "close"] the maintenance hatch of [src].")) return TRUE if(panel_open) if(W.tool_behaviour == TOOL_MULTITOOL && constructionstate == INTACT) if(id != null) - to_chat(user, "This door is already linked. Unlink it first!") + to_chat(user, span_warning("This door is already linked. Unlink it first!")) return if(!multitool_check_buffer(user, W)) @@ -128,34 +128,34 @@ var/obj/item/multitool/P = W id = P.buffer - to_chat(user, "You link the button to the [src].") + to_chat(user, span_notice("You link the button to the [src].")) return if(W.tool_behaviour == TOOL_WIRECUTTER) if(id != null) - to_chat(user, "You start to unlink the door.") + to_chat(user, span_notice("You start to unlink the door.")) if(do_after(user, 10 SECONDS, target = src)) - to_chat(user, "You unlink the door.") + to_chat(user, span_notice("You unlink the door.")) id = null else - to_chat(user, "This door is already unlinked.") + to_chat(user, span_warning("This door is already unlinked.")) return if(W.tool_behaviour == TOOL_WELDER && constructionstate == INTACT) - to_chat(user, "You start to remove the outer plasteel cover.") + to_chat(user, span_notice("You start to remove the outer plasteel cover.")) playsound(src.loc, 'sound/items/welder.ogg', 50, 1) if(do_after(user, 10 SECONDS, target = src)) - to_chat(user, "You remove the outer plasteel cover.") + to_chat(user, span_notice("You remove the outer plasteel cover.")) constructionstate = CUT_COVER id = null // Effectivley breaks the door new /obj/item/stack/sheet/plasteel(loc, 5) return else - to_chat(user, "The cover is already off.") + to_chat(user, span_warning("The cover is already off.")) if(W.tool_behaviour == TOOL_CROWBAR && constructionstate == CUT_COVER) - to_chat(user, "You start to remove all of the internal components") + to_chat(user, span_notice("You start to remove all of the internal components")) if(do_after(user, 15 SECONDS, target = src)) if(istype(src, /obj/machinery/door/poddoor/shutters)) // Simplified Code new /obj/item/stack/sheet/plasteel(loc, 5) @@ -171,7 +171,7 @@ if(istype(W, /obj/item/stack/sheet/plasteel)) var/obj/item/stack/sheet/plasteel/P = W if(P.use(5)) - to_chat(user, "You need 5 plasteel sheets to put the plating back on.") + to_chat(user, span_warning("You need 5 plasteel sheets to put the plating back on.")) return constructionstate = INTACT @@ -180,5 +180,5 @@ /obj/machinery/door/poddoor/examine(mob/user) . = ..() if(panel_open) - . += "The maintenance panel is [panel_open ? "opened" : "closed"]." + . += "You need to open the door to access the maintenance panel!") + to_chat(user, span_warning("You need to open the door to access the maintenance panel!")) return I.play_tool_sound(src) panel_open = !panel_open - to_chat(user, "You [panel_open ? "open":"close"] the maintenance panel of the [name].") + to_chat(user, span_notice("You [panel_open ? "open":"close"] the maintenance panel of the [name].")) return if(I.tool_behaviour == TOOL_CROWBAR) if(panel_open && !density && !operating) user.visible_message("[user] removes the electronics from the [name].", \ - "You start to remove electronics from the [name]...") + span_notice("You start to remove electronics from the [name]...")) if(I.use_tool(src, user, 40, volume=50)) if(panel_open && !density && !operating && loc) var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(loc) @@ -268,11 +268,11 @@ WA.created_name = name if(obj_flags & EMAGGED) - to_chat(user, "You discard the damaged electronics.") + to_chat(user, span_warning("You discard the damaged electronics.")) qdel(src) return - to_chat(user, "You remove the airlock electronics.") + to_chat(user, span_notice("You remove the airlock electronics.")) var/obj/item/electronics/airlock/ae if(!electronics) @@ -305,7 +305,7 @@ else close(2) else - to_chat(user, "The door's motors resist your efforts to force it!") + to_chat(user, span_warning("The door's motors resist your efforts to force it!")) /obj/machinery/door/window/do_animate(animation) switch(animation) @@ -355,7 +355,7 @@ /obj/machinery/door/window/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_DECONSTRUCT) - to_chat(user, "You deconstruct the windoor.") + to_chat(user, span_notice("You deconstruct the windoor.")) qdel(src) return TRUE return FALSE diff --git a/code/game/machinery/doppler_array.dm b/code/game/machinery/doppler_array.dm index 33a5d3b9980a..86d8e41a9d61 100644 --- a/code/game/machinery/doppler_array.dm +++ b/code/game/machinery/doppler_array.dm @@ -21,7 +21,7 @@ GLOBAL_LIST_EMPTY(doppler_arrays) /obj/machinery/doppler_array/examine(mob/user) ..() - to_chat(user, "Its dish is facing to the [dir2text(dir)].") + to_chat(user, span_notice("Its dish is facing to the [dir2text(dir)].")) /obj/machinery/doppler_array/process() return PROCESS_KILL @@ -31,17 +31,17 @@ GLOBAL_LIST_EMPTY(doppler_arrays) if(!anchored && !isinspace()) anchored = TRUE power_change() - to_chat(user, "You fasten [src].") + to_chat(user, span_notice("You fasten [src].")) else if(anchored) anchored = FALSE power_change() - to_chat(user, "You unfasten [src].") + to_chat(user, span_notice("You unfasten [src].")) I.play_tool_sound(src) else return ..() /obj/machinery/doppler_array/proc/rot_message(mob/user) - to_chat(user, "You adjust [src]'s dish to face to the [dir2text(dir)].") + to_chat(user, span_notice("You adjust [src]'s dish to face to the [dir2text(dir)].")) playsound(src, 'sound/items/screwdriver2.ogg', 50, 1) /obj/machinery/doppler_array/proc/sense_explosion(datum/source, turf/epicenter, devastation_range, heavy_impact_range, light_impact_range, diff --git a/code/game/machinery/droneDispenser.dm b/code/game/machinery/droneDispenser.dm index f31b8fc73104..75cedc1c1bba 100644 --- a/code/game/machinery/droneDispenser.dm +++ b/code/game/machinery/droneDispenser.dm @@ -109,7 +109,7 @@ /obj/machinery/droneDispenser/examine(mob/user) . = ..() if((mode == DRONE_RECHARGING) && !stat && recharging_text) - . += "[recharging_text]" + . += span_warning("[recharging_text]") /obj/machinery/droneDispenser/process() ..() @@ -130,7 +130,7 @@ if(maximum_idle && (count_shells() >= maximum_idle)) return // then do nothing; check again next tick if(begin_create_message) - visible_message("[src] [begin_create_message]") + visible_message(span_notice("[src] [begin_create_message]")) if(work_sound) playsound(src, work_sound, 50, 1) mode = DRONE_PRODUCTION @@ -148,7 +148,7 @@ if(create_sound) playsound(src, create_sound, 50, 1) if(end_create_message) - visible_message("[src] [end_create_message]") + visible_message(span_notice("[src] [end_create_message]")) mode = DRONE_RECHARGING timer = world.time + cooldownTime @@ -158,7 +158,7 @@ if(recharge_sound) playsound(src, recharge_sound, 50, 1) if(recharge_message) - visible_message("[src] [recharge_message]") + visible_message(span_notice("[src] [recharge_message]")) mode = DRONE_READY update_icon() @@ -184,26 +184,26 @@ var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) materials.retrieve_all() I.play_tool_sound(src) - to_chat(user, "You retrieve the materials from [src].") + to_chat(user, span_notice("You retrieve the materials from [src].")) else if(I.tool_behaviour == TOOL_WELDER) if(!(stat & BROKEN)) - to_chat(user, "[src] doesn't need repairs.") + to_chat(user, span_warning("[src] doesn't need repairs.")) return if(!I.tool_start_check(user, amount=1)) return user.visible_message( - "[user] begins patching up [src] with [I].", - "You begin restoring the damage to [src]...") + span_notice("[user] begins patching up [src] with [I]."), + span_notice("You begin restoring the damage to [src]...")) if(!I.use_tool(src, user, 40, volume=50, amount=1)) return user.visible_message( - "[user] fixes [src]!", - "You restore [src] to operation.") + span_notice("[user] fixes [src]!"), + span_notice("You restore [src] to operation.")) stat &= ~BROKEN obj_integrity = max_integrity @@ -216,7 +216,7 @@ if(!.) return if(break_message) - audible_message("[src] [break_message]") + audible_message(span_warning("[src] [break_message]")) if(break_sound) playsound(src, break_sound, 50, TRUE) diff --git a/code/game/machinery/electrolyzer.dm b/code/game/machinery/electrolyzer.dm index 46f754513013..d18fba7d8929 100644 --- a/code/game/machinery/electrolyzer.dm +++ b/code/game/machinery/electrolyzer.dm @@ -118,23 +118,23 @@ return if(istype(I, /obj/item/stock_parts/cell)) if(!panel_open) - to_chat(user, "The hatch must be open to insert a power cell!") + to_chat(user, span_warning("The hatch must be open to insert a power cell!")) return if(cell) - to_chat(user, "There is already a power cell inside!") + to_chat(user, span_warning("There is already a power cell inside!")) return if(!user.transferItemToLoc(I, src)) return cell = I I.add_fingerprint(usr) - user.visible_message("\The [user] inserts a power cell into \the [src].", "You insert the power cell into \the [src].") + user.visible_message(span_notice("\The [user] inserts a power cell into \the [src]."), span_notice("You insert the power cell into \the [src].")) SStgui.update_uis(src) return if(I.tool_behaviour == TOOL_SCREWDRIVER) panel_open = !panel_open - user.visible_message("\The [user] [panel_open ? "opens" : "closes"] the hatch on \the [src].", "You [panel_open ? "open" : "close"] the hatch on \the [src].") + user.visible_message(span_notice("\The [user] [panel_open ? "opens" : "closes"] the hatch on \the [src]."), span_notice("You [panel_open ? "open" : "close"] the hatch on \the [src].")) update_icon() return if(default_deconstruction_crowbar(I)) @@ -167,7 +167,7 @@ if("power") on = !on mode = ELECTROLYZER_MODE_STANDBY - usr.visible_message("[usr] switches [on ? "on" : "off"] \the [src].", "You switch [on ? "on" : "off"] \the [src].") + usr.visible_message(span_notice("[usr] switches [on ? "on" : "off"] \the [src]."), span_notice("You switch [on ? "on" : "off"] \the [src].")) update_icon() if (on) START_PROCESSING(SSmachines, src) diff --git a/code/game/machinery/embedded_controller/access_controller.dm b/code/game/machinery/embedded_controller/access_controller.dm index afb5f188b7f6..f4ec0aa85a09 100644 --- a/code/game/machinery/embedded_controller/access_controller.dm +++ b/code/game/machinery/embedded_controller/access_controller.dm @@ -32,7 +32,7 @@ req_access = list() req_one_access = list() playsound(src, "sparks", 100, 1) - to_chat(user, "You short out the access controller.") + to_chat(user, span_warning("You short out the access controller.")) /obj/machinery/doorButtons/proc/removeMe() return @@ -61,7 +61,7 @@ if(busy) return if(!allowed(user)) - to_chat(user, "Access denied.") + to_chat(user, span_warning("Access denied.")) return if(controller && !controller.busy && door) if(controller.stat & NOPOWER) @@ -129,7 +129,7 @@ if(busy) return if(!allowed(usr)) - to_chat(usr, "Access denied.") + to_chat(usr, span_warning("Access denied.")) return switch(href_list["command"]) if("close_exterior") diff --git a/code/game/machinery/embedded_controller/airlock_controller.dm b/code/game/machinery/embedded_controller/airlock_controller.dm index 9f1ebe67a9c2..2d4ddc48a190 100644 --- a/code/game/machinery/embedded_controller/airlock_controller.dm +++ b/code/game/machinery/embedded_controller/airlock_controller.dm @@ -285,20 +285,20 @@ if(AIRLOCK_STATE_INOPEN) state_options = {"Close Interior Airlock
Cycle to Exterior Airlock
"} - current_status = "Interior Airlock Open
Chamber Pressurized" + current_status = "Interior Airlock Open
[span_good("Chamber Pressurized")]" if(AIRLOCK_STATE_PRESSURIZE) state_options = "Abort Cycling
" - current_status = "Cycling to Interior Airlock
Chamber Pressurizing" + current_status = "Cycling to Interior Airlock
[span_average("Chamber Pressurizing")]" if(AIRLOCK_STATE_CLOSED) state_options = {"Open Interior Airlock
Open Exterior Airlock
"} if(AIRLOCK_STATE_DEPRESSURIZE) state_options = "Abort Cycling
" - current_status = "Cycling to Exterior Airlock
Chamber Depressurizing" + current_status = "Cycling to Exterior Airlock
[span_average("Chamber Depressurizing")]" if(AIRLOCK_STATE_OUTOPEN) state_options = {"Cycle to Interior Airlock
Close Exterior Airlock
"} - current_status = "Exterior Airlock Open
Chamber Depressurized" + current_status = "Exterior Airlock Open
[span_bad("Chamber Depressurized")]" var/output = {"

Airlock Status

diff --git a/code/game/machinery/exp_cloner.dm b/code/game/machinery/exp_cloner.dm index 5cdd5aa5f527..416c43047ac2 100644 --- a/code/game/machinery/exp_cloner.dm +++ b/code/game/machinery/exp_cloner.dm @@ -57,11 +57,11 @@ if(grab_ghost_when == CLONER_FRESH_CLONE) H.grab_ghost() - to_chat(H, "Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?
") + to_chat(H, span_notice("Consciousness slowly creeps over you as your body regenerates.
So this is what cloning feels like?")) if(grab_ghost_when == CLONER_MATURE_CLONE) H.ghostize(TRUE) //Only does anything if they were still in their old body and not already a ghost - to_chat(H.get_ghost(TRUE), "Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete.") + to_chat(H.get_ghost(TRUE), span_notice("Your body is beginning to regenerate in a cloning pod. You will become conscious when it is complete.")) if(H) H.faction |= factions @@ -212,7 +212,7 @@ dat += "Clone" dat += "
[src.scanner.locked ? "Unlock Scanner" : "Lock Scanner"]" else - dat += "Clone" + dat += span_linkOff("Clone") var/datum/browser/popup = new(user, "cloning", "Prototype Cloning System Control") popup.set_content(dat) diff --git a/code/game/machinery/fat_sucker.dm b/code/game/machinery/fat_sucker.dm index e72929885da5..b69f50b6c10d 100644 --- a/code/game/machinery/fat_sucker.dm +++ b/code/game/machinery/fat_sucker.dm @@ -42,13 +42,13 @@ /obj/machinery/fat_sucker/examine(mob/user) . = ..() - . += {"Alt-Click to toggle the safety hatch. - Removing [bite_size] nutritional units per operation. - Requires [nutrient_to_meat] nutritional units per meat slab."} + . += {"[span_notice("Alt-Click to toggle the safety hatch.")] + [span_notice("Removing [bite_size] nutritional units per operation.")] + [span_notice("Requires [nutrient_to_meat] nutritional units per meat slab.")]"} /obj/machinery/fat_sucker/close_machine(mob/user) if(panel_open) - to_chat(user, "You need to close the maintenance hatch first!") + to_chat(user, span_warning("You need to close the maintenance hatch first!")) return ..() playsound(src, 'sound/machines/click.ogg', 50) @@ -57,7 +57,7 @@ occupant.forceMove(drop_location()) occupant = null return - to_chat(occupant, "You enter [src]") + to_chat(occupant, span_notice("You enter [src]")) addtimer(CALLBACK(src, .proc/start_extracting), 20, TIMER_OVERRIDE|TIMER_UNIQUE) update_icon() @@ -70,18 +70,18 @@ /obj/machinery/fat_sucker/container_resist(mob/living/user) if(!free_exit || state_open) - to_chat(user, "The emergency release is not responding! You start pushing against the hull!") + to_chat(user, span_notice("The emergency release is not responding! You start pushing against the hull!")) user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message("You see [user] kicking against the door of [src]!", \ - "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a metallic creaking from [src].") + user.visible_message(span_notice("You see [user] kicking against the door of [src]!"), \ + span_notice("You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)"), \ + span_italics("You hear a metallic creaking from [src].")) if(do_after(user, breakout_time, target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src || state_open) return free_exit = TRUE - user.visible_message("[user] successfully broke out of [src]!", \ - "You successfully break out of [src]!") + user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ + span_notice("You successfully break out of [src]!")) open_machine() return open_machine() @@ -92,19 +92,19 @@ else if(!processing || free_exit) open_machine() else - to_chat(user, "The safety hatch has been disabled!") + to_chat(user, span_warning("The safety hatch has been disabled!")) /obj/machinery/fat_sucker/AltClick(mob/living/user) if(!user.canUseTopic(src, BE_CLOSE)) return if(user == occupant) - to_chat(user, "You can't reach the controls from inside!") + to_chat(user, span_warning("You can't reach the controls from inside!")) return if(!(obj_flags & EMAGGED) && !allowed(user)) - to_chat(user, "You lack the required access.") + to_chat(user, span_warning("You lack the required access.")) return free_exit = !free_exit - to_chat(user, "Safety hatch [free_exit ? "unlocked" : "locked"].") + to_chat(user, span_notice("Safety hatch [free_exit ? "unlocked" : "locked"].")) /obj/machinery/fat_sucker/update_icon() overlays.Cut() @@ -189,10 +189,10 @@ if(..()) return if(occupant) - to_chat(user, "[src] is currently occupied!") + to_chat(user, span_warning("[src] is currently occupied!")) return if(state_open) - to_chat(user, "[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!") + to_chat(user, span_warning("[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!")) return if(default_deconstruction_screwdriver(user, icon_state, icon_state, I)) update_icon() @@ -208,5 +208,5 @@ return start_at = 100 stop_at = 0 - to_chat(user, "You remove the access restrictions and lower the automatic ejection threshold!") + to_chat(user, span_notice("You remove the access restrictions and lower the automatic ejection threshold!")) obj_flags |= EMAGGED diff --git a/code/game/machinery/firealarm.dm b/code/game/machinery/firealarm.dm index 475b421c1143..9a7ec3f04e5c 100644 --- a/code/game/machinery/firealarm.dm +++ b/code/game/machinery/firealarm.dm @@ -111,8 +111,8 @@ obj_flags |= EMAGGED update_icon() if(user) - user.visible_message("Sparks fly out of [src]!", - "You emag [src], disabling its thermal sensors.") + user.visible_message(span_warning("Sparks fly out of [src]!"), + span_notice("You emag [src], disabling its thermal sensors.")) playsound(src, "sparks", 50, 1) /obj/machinery/firealarm/temperature_expose(datum/gas_mixture/air, temperature, volume) @@ -160,7 +160,7 @@ if(W.tool_behaviour == TOOL_SCREWDRIVER && buildstage == 2) W.play_tool_sound(src) panel_open = !panel_open - to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"].") + to_chat(user, span_notice("The wires have been [panel_open ? "exposed" : "unexposed"].")) update_icon() return @@ -171,12 +171,12 @@ if(!W.tool_start_check(user, amount=0)) return - to_chat(user, "You begin repairing [src]...") + to_chat(user, span_notice("You begin repairing [src]...")) if(W.use_tool(src, user, 40, volume=50)) obj_integrity = max_integrity - to_chat(user, "You repair [src].") + to_chat(user, span_notice("You repair [src].")) else - to_chat(user, "[src] is already in good condition!") + to_chat(user, span_warning("[src] is already in good condition!")) return switch(buildstage) @@ -184,16 +184,16 @@ if(W.tool_behaviour == TOOL_MULTITOOL) detecting = !detecting if (src.detecting) - user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.") + user.visible_message("[user] has reconnected [src]'s detecting unit!", span_notice("You reconnect [src]'s detecting unit.")) else - user.visible_message("[user] has disconnected [src]'s detecting unit!", "You disconnect [src]'s detecting unit.") + user.visible_message("[user] has disconnected [src]'s detecting unit!", span_notice("You disconnect [src]'s detecting unit.")) return else if(W.tool_behaviour == TOOL_WIRECUTTER) buildstage = 1 W.play_tool_sound(src) new /obj/item/stack/cable_coil(user.loc, 5) - to_chat(user, "You cut the wires from \the [src].") + to_chat(user, span_notice("You cut the wires from \the [src].")) update_icon() return @@ -208,31 +208,31 @@ if(istype(W, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/coil = W if(coil.get_amount() < 5) - to_chat(user, "You need more cable for this!") + to_chat(user, span_warning("You need more cable for this!")) else coil.use(5) buildstage = 2 - to_chat(user, "You wire \the [src].") + to_chat(user, span_notice("You wire \the [src].")) update_icon() return else if(W.tool_behaviour == TOOL_CROWBAR) user.visible_message("[user.name] removes the electronics from [src.name].", \ - "You start prying out the circuit...") + span_notice("You start prying out the circuit...")) if(W.use_tool(src, user, 20, volume=50)) if(buildstage == 1) if(stat & BROKEN) - to_chat(user, "You remove the destroyed circuit.") + to_chat(user, span_notice("You remove the destroyed circuit.")) stat &= ~BROKEN else - to_chat(user, "You pry out the circuit.") + to_chat(user, span_notice("You pry out the circuit.")) new /obj/item/electronics/firealarm(user.loc) buildstage = 0 update_icon() return if(0) if(istype(W, /obj/item/electronics/firealarm)) - to_chat(user, "You insert the circuit.") + to_chat(user, span_notice("You insert the circuit.")) qdel(W) buildstage = 1 update_icon() @@ -242,15 +242,15 @@ var/obj/item/electroadaptive_pseudocircuit/P = W if(!P.adapt_circuit(user, 15)) return - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt a fire alarm circuit and slot it into the assembly.") + user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \ + span_notice("You adapt a fire alarm circuit and slot it into the assembly.")) buildstage = 1 update_icon() return else if(W.tool_behaviour == TOOL_WRENCH) user.visible_message("[user] removes the fire alarm assembly from the wall.", \ - "You remove the fire alarm assembly from the wall.") + span_notice("You remove the fire alarm assembly from the wall.")) var/obj/item/wallframe/firealarm/frame = new /obj/item/wallframe/firealarm() frame.forceMove(user.drop_location()) W.play_tool_sound(src) @@ -268,8 +268,8 @@ /obj/machinery/firealarm/rcd_act(mob/user, obj/item/construction/rcd/the_rcd, passed_mode) switch(passed_mode) if(RCD_UPGRADE_SIMPLE_CIRCUITS) - user.visible_message("[user] fabricates a circuit and places it into [src].", \ - "You adapt a fire alarm circuit and slot it into the assembly.") + user.visible_message(span_notice("[user] fabricates a circuit and places it into [src]."), \ + span_notice("You adapt a fire alarm circuit and slot it into the assembly.")) buildstage = 1 update_icon() return TRUE diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm index a12e99f7220f..03fa24d167ac 100644 --- a/code/game/machinery/flasher.dm +++ b/code/game/machinery/flasher.dm @@ -57,9 +57,9 @@ add_fingerprint(user) if (W.tool_behaviour == TOOL_WIRECUTTER) if (bulb) - user.visible_message("[user] begins to disconnect [src]'s flashbulb.", "You begin to disconnect [src]'s flashbulb...") + user.visible_message("[user] begins to disconnect [src]'s flashbulb.", span_notice("You begin to disconnect [src]'s flashbulb...")) if(W.use_tool(src, user, 30, volume=50) && bulb) - user.visible_message("[user] has disconnected [src]'s flashbulb!", "You disconnect [src]'s flashbulb.") + user.visible_message("[user] has disconnected [src]'s flashbulb!", span_notice("You disconnect [src]'s flashbulb.")) bulb.forceMove(loc) bulb = null power_change() @@ -68,20 +68,20 @@ if (!bulb) if(!user.transferItemToLoc(W, src)) return - user.visible_message("[user] installs [W] into [src].", "You install [W] into [src].") + user.visible_message("[user] installs [W] into [src].", span_notice("You install [W] into [src].")) bulb = W power_change() else - to_chat(user, "A flashbulb is already installed in [src]!") + to_chat(user, span_warning("A flashbulb is already installed in [src]!")) else if (W.tool_behaviour == TOOL_WRENCH) if(!bulb) - to_chat(user, "You start unsecuring the flasher frame...") + to_chat(user, span_notice("You start unsecuring the flasher frame...")) if(W.use_tool(src, user, 40, volume=50)) - to_chat(user, "You unsecure the flasher frame.") + to_chat(user, span_notice("You unsecure the flasher frame.")) deconstruct(TRUE) else - to_chat(user, "Remove a flashbulb from [src] first!") + to_chat(user, span_warning("Remove a flashbulb from [src] first!")) else return ..() @@ -173,13 +173,13 @@ W.play_tool_sound(src, 100) if (!anchored && !isinspace()) - to_chat(user, "[src] is now secured.") + to_chat(user, span_notice("[src] is now secured.")) add_overlay("[base_state]-s") setAnchored(TRUE) power_change() proximity_monitor.SetRange(range) else - to_chat(user, "[src] can now be moved.") + to_chat(user, span_notice("[src] can now be moved.")) cut_overlays() setAnchored(FALSE) power_change() @@ -198,7 +198,7 @@ /obj/item/wallframe/flasher/examine(mob/user) . = ..() - . += "Its channel ID is '[id]'." + . += span_notice("Its channel ID is '[id]'.") /obj/item/wallframe/flasher/after_attach(var/obj/O) ..() diff --git a/code/game/machinery/gulag_item_reclaimer.dm b/code/game/machinery/gulag_item_reclaimer.dm index b31ecb1ea30a..428b2e6f4f09 100644 --- a/code/game/machinery/gulag_item_reclaimer.dm +++ b/code/game/machinery/gulag_item_reclaimer.dm @@ -35,10 +35,10 @@ if(!user.transferItemToLoc(I, src)) return inserted_id = I - to_chat(user, "You insert [I].") + to_chat(user, span_notice("You insert [I].")) return else - to_chat(user, "There's an ID inserted already.") + to_chat(user, span_notice("There's an ID inserted already.")) return ..() /obj/machinery/gulag_item_reclaimer/ui_interact(mob/user, datum/tgui/ui) @@ -87,7 +87,7 @@ if("release_items") var/mob/living/carbon/human/H = locate(params["mobref"]) in stored_items if(H != usr && !allowed(usr)) - to_chat(usr, "Access denied.") + to_chat(usr, span_warning("Access denied.")) return drop_items(H) . = TRUE diff --git a/code/game/machinery/gulag_processor.dm b/code/game/machinery/gulag_processor.dm index 26525321404f..05744acdb623 100644 --- a/code/game/machinery/gulag_processor.dm +++ b/code/game/machinery/gulag_processor.dm @@ -50,9 +50,9 @@ GLOBAL_VAR_INIT(gulag_required_items, typecacheof(list( /obj/machinery/gulag_processor/examine(mob/user) . = ..() if(id) - . += "\The [id] ID has been inserted." + . += span_notice("\The [id] ID has been inserted.") else - . += "There is no ID inserted." + . += span_warning("There is no ID inserted.") /obj/machinery/gulag_processor/AltClick(mob/living/user) if(id) @@ -86,10 +86,10 @@ GLOBAL_VAR_INIT(gulag_required_items, typecacheof(list( if(!id) I.moveToNullspace() id = I - to_chat(user, "You insert [I].") + to_chat(user, span_notice("You insert [I].")) return else - to_chat(user, "There's an ID inserted already.") + to_chat(user, span_notice("There's an ID inserted already.")) return ..() @@ -120,7 +120,7 @@ GLOBAL_VAR_INIT(gulag_required_items, typecacheof(list( /obj/machinery/gulag_processor/proc/toggle_open() if(panel_open) - to_chat(usr, "Close the maintenance panel first.") + to_chat(usr, span_notice("Close the maintenance panel first.")) return if(state_open) @@ -137,10 +137,10 @@ GLOBAL_VAR_INIT(gulag_required_items, typecacheof(list( handle_prisoner(id) id = null else - visible_message("No ID inserted. Processing aborted..") + visible_message(span_warning("No ID inserted. Processing aborted..")) else open_machine() - visible_message("No occupant detected. Processing aborted.") + visible_message(span_warning("No occupant detected. Processing aborted.")) return // strips and stores all occupant's items @@ -185,7 +185,7 @@ GLOBAL_VAR_INIT(gulag_required_items, typecacheof(list( if(!prisoner.handcuffed) prisoner.handcuffed = new /obj/item/restraints/handcuffs/cable/zipties/used(prisoner) prisoner.update_handcuffed() - visible_message("Prisoner Processed.") + visible_message(span_warning("Prisoner Processed.")) /obj/item/circuitboard/machine/gulag_processor name = "labor camp processor (Machine Board)" diff --git a/code/game/machinery/gulag_teleporter.dm b/code/game/machinery/gulag_teleporter.dm index 9847fe27d833..514df7175a99 100644 --- a/code/game/machinery/gulag_teleporter.dm +++ b/code/game/machinery/gulag_teleporter.dm @@ -44,7 +44,7 @@ The console is located at computer/gulag_teleporter.dm /obj/machinery/gulag_teleporter/interact(mob/user) . = ..() if(locked) - to_chat(user, "[src] is locked!") + to_chat(user, span_warning("[src] is locked!")) return toggle_open() @@ -89,7 +89,7 @@ The console is located at computer/gulag_teleporter.dm if(locked) if(message_cooldown <= world.time) message_cooldown = world.time + 50 - to_chat(user, "[src]'s door won't budge!") + to_chat(user, span_warning("[src]'s door won't budge!")) return open_machine() @@ -99,15 +99,15 @@ The console is located at computer/gulag_teleporter.dm return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message("You see [user] kicking against the door of [src]!", \ - "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a metallic creaking from [src].") + user.visible_message(span_notice("You see [user] kicking against the door of [src]!"), \ + span_notice("You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)"), \ + span_italics("You hear a metallic creaking from [src].")) if(do_after(user,(breakout_time), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked) return locked = FALSE - user.visible_message("[user] successfully broke out of [src]!", \ - "You successfully break out of [src]!") + user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ + span_notice("You successfully break out of [src]!")) open_machine() /obj/machinery/gulag_teleporter/proc/locate_reclaimer() @@ -117,7 +117,7 @@ The console is located at computer/gulag_teleporter.dm /obj/machinery/gulag_teleporter/proc/toggle_open() if(panel_open) - to_chat(usr, "Close the maintenance panel first.") + to_chat(usr, span_notice("Close the maintenance panel first.")) return if(state_open) diff --git a/code/game/machinery/harvester.dm b/code/game/machinery/harvester.dm index 36e6210c0540..78111c409f8e 100644 --- a/code/game/machinery/harvester.dm +++ b/code/game/machinery/harvester.dm @@ -85,7 +85,7 @@ var/mob/living/carbon/C = occupant operation_order = reverseList(C.bodyparts) //Chest and head are first in bodyparts, so we invert it to make them suffer more harvesting = TRUE - visible_message("The [name] begins warming up!") + visible_message(span_notice("The [name] begins warming up!")) say("Initializing harvest protocol.") update_icon(TRUE) addtimer(CALLBACK(src, .proc/harvest), interval) @@ -135,10 +135,10 @@ if(..()) return if(occupant) - to_chat(user, "[src] is currently occupied!") + to_chat(user, span_warning("[src] is currently occupied!")) return if(state_open) - to_chat(user, "[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!") + to_chat(user, span_warning("[src] must be closed to [panel_open ? "close" : "open"] its maintenance hatch!")) return if(default_deconstruction_screwdriver(user, "[initial(icon_state)]-o", initial(icon_state), I)) return @@ -154,7 +154,7 @@ . = !(state_open || panel_open || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR //We removed is_operational() here if(.) I.play_tool_sound(src, 50) - visible_message("[usr] pries open \the [src].", "You pry open [src].") + visible_message(span_notice("[usr] pries open \the [src]."), span_notice("You pry open [src].")) open_machine() /obj/machinery/harvester/emag_act(mob/user) @@ -162,15 +162,15 @@ return obj_flags |= EMAGGED allow_living = TRUE - to_chat(user, "You overload [src]'s lifesign scanners.") + to_chat(user, span_warning("You overload [src]'s lifesign scanners.")) /obj/machinery/harvester/container_resist(mob/living/user) if(!harvesting) - visible_message("[occupant] emerges from [src]!", - "You climb out of [src]!") + visible_message(span_notice("[occupant] emerges from [src]!"), + span_notice("You climb out of [src]!")) open_machine() else - to_chat(user,"[src] is active and can't be opened!") //rip + to_chat(user,span_warning("[src] is active and can't be opened!")) //rip /obj/machinery/harvester/Exited(atom/movable/user) if (!state_open && user == occupant) @@ -185,8 +185,8 @@ if(stat & BROKEN) return if(state_open) - . += "[src] must be closed before harvesting." + . += span_notice("[src] must be closed before harvesting.") else if(!harvesting) - . += "Alt-click [src] to start harvesting." + . += span_notice("Alt-click [src] to start harvesting.") if(in_range(user, src) || isobserver(user)) . += "The status display reads: Harvest speed at [interval*0.1] seconds per organ." diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 560d98fc8568..2950672e6011 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -172,7 +172,7 @@ obj/machinery/holopad/secure/Initialize() /obj/machinery/holopad/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Current projection range: [holo_range] units." + . += span_notice("The status display reads: Current projection range: [holo_range] units.") /obj/machinery/holopad/attackby(obj/item/P, mob/user, params) if(default_deconstruction_screwdriver(user, "holopad_open", "holopad0", P)) @@ -189,11 +189,11 @@ obj/machinery/holopad/secure/Initialize() if(istype(P,/obj/item/disk/holodisk)) if(disk) - to_chat(user,"There's already a disk inside [src]!") + to_chat(user,span_warning("There's already a disk inside [src]!")) return if (!user.transferItemToLoc(P,src)) return - to_chat(user,"You insert [P] into [src].") + to_chat(user,span_notice("You insert [P] into [src].")) disk = P return @@ -243,15 +243,15 @@ obj/machinery/holopad/secure/Initialize() if("AIrequest") if(last_request + 200 < world.time) last_request = world.time - to_chat(usr, "You requested an AI's presence.") + to_chat(usr, span_info("You requested an AI's presence.")) var/area/area = get_area(src) for(var/mob/living/silicon/ai/AI in GLOB.silicon_mobs) if(!AI.client) continue - to_chat(AI, "Your presence is requested at \the [area].") + to_chat(AI, span_info("Your presence is requested at \the [area].")) return TRUE else - to_chat(usr, "A request for AI presence was already sent recently.") + to_chat(usr, span_info("A request for AI presence was already sent recently.")) return if("holocall") if(outgoing_call) @@ -273,7 +273,7 @@ obj/machinery/holopad/secure/Initialize() calling = TRUE return TRUE else - to_chat(usr, "You must stand on the holopad to make a call!") + to_chat(usr, span_warning("You must stand on the holopad to make a call!")) if("connectcall") var/datum/holocall/call_to_connect = locate(params["holopad"]) in holo_calls if(!QDELETED(call_to_connect)) @@ -389,7 +389,7 @@ obj/machinery/holopad/secure/Initialize() if(is_operational() && (!AI || AI.eyeobj.loc == loc))//If the projector has power and client eye is on it if (AI && istype(AI.current, /obj/machinery/holopad)) - to_chat(user, "ERROR: \black Image feed in progress.") + to_chat(user, "[span_danger("ERROR:")] \black Image feed in progress.") return var/obj/effect/overlay/holo_pad_hologram/Hologram = new(loc)//Spawn a blank effect at the location. @@ -412,11 +412,11 @@ obj/machinery/holopad/secure/Initialize() move_hologram() set_holo(user, Hologram) - visible_message("A holographic image of [user] flickers to life before your eyes!") + visible_message(span_notice("A holographic image of [user] flickers to life before your eyes!")) return Hologram else - to_chat(user, "ERROR: Unable to project hologram.") + to_chat(user, "[span_danger("ERROR:")] Unable to project hologram.") /*This is the proc for special two-way communication between AI and holopad/people talking near holopad. For the other part of the code, check silicon say.dm. Particularly robot talk.*/ @@ -567,7 +567,7 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ Hologram.setAnchored(TRUE)//So space wind cannot drag it. Hologram.name = "[record.caller_name] (Hologram)"//If someone decides to right click. Hologram.set_light(2) //hologram lighting - visible_message("A holographic image of [record.caller_name] flickers to life before your eyes!") + visible_message(span_notice("A holographic image of [record.caller_name] flickers to life before your eyes!")) return Hologram /obj/machinery/holopad/proc/replay_start() @@ -695,4 +695,4 @@ For the other part of the code, check silicon say.dm. Particularly robot talk.*/ alpha = 100 #undef HOLOPAD_PASSIVE_POWER_USAGE -#undef HOLOGRAM_POWER_USAGE \ No newline at end of file +#undef HOLOGRAM_POWER_USAGE diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm index f2b36a3616d8..27045b3f472f 100644 --- a/code/game/machinery/igniter.dm +++ b/code/game/machinery/igniter.dm @@ -43,7 +43,7 @@ /obj/machinery/igniter/attackby(obj/item/O, mob/user, params) if(default_deconstruction_screwdriver(user, icon_state, icon_state, O)) - to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch of [src].") + to_chat(user, span_notice("You [panel_open ? "open" : "close"] the maintenance hatch of [src].")) return TRUE if(default_deconstruction_crowbar(O)) return TRUE @@ -51,7 +51,7 @@ /obj/machinery/igniter/examine(mob/user) . = ..() if(panel_open) - . += "The maintenance panel is [panel_open ? "opened" : "closed"]." + . += "[user] has disabled \the [src]!", "You disable the connection to \the [src].") + user.visible_message(span_notice("[user] has disabled \the [src]!"), span_notice("You disable the connection to \the [src].")) if (!src.disable) - user.visible_message("[user] has reconnected \the [src]!", "You fix the connection to \the [src].") + user.visible_message(span_notice("[user] has reconnected \the [src]!"), span_notice("You fix the connection to \the [src].")) update_icon() else return ..() diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index ac4330cf2495..9f1f6c0abd0c 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -72,36 +72,36 @@ return if(attached) - visible_message("[attached] is detached from [src].") + visible_message(span_warning("[attached] is detached from [src].")) attached = null update_icon() return if(!target.has_dna()) - to_chat(usr, "The drip beeps: Warning, incompatible creature!") + to_chat(usr, span_danger("The drip beeps: Warning, incompatible creature!")) return if(Adjacent(target) && usr.Adjacent(target)) if(beaker) - usr.visible_message("[usr] attaches [src] to [target].", "You attach [src] to [target].") + usr.visible_message(span_warning("[usr] attaches [src] to [target]."), span_notice("You attach [src] to [target].")) log_combat(usr, target, "attached", src, "containing: [beaker.name] - ([beaker.reagents.log_list()])") add_fingerprint(usr) attached = target START_PROCESSING(SSmachines, src) update_icon() else - to_chat(usr, "There's nothing attached to the IV drip!") + to_chat(usr, span_warning("There's nothing attached to the IV drip!")) /obj/machinery/iv_drip/attackby(obj/item/W, mob/user, params) if(is_type_in_typecache(W, drip_containers)) if(beaker) - to_chat(user, "There is already a reagent container loaded!") + to_chat(user, span_warning("There is already a reagent container loaded!")) return if(!user.transferItemToLoc(W, src)) return beaker = W - to_chat(user, "You attach [W] to [src].") + to_chat(user, span_notice("You attach [W] to [src].")) user.log_message("attached a [W] to [src] at [AREACOORD(src)] containing ([beaker.reagents.log_list()])", LOG_ATTACK) add_fingerprint(user) update_icon() @@ -119,7 +119,7 @@ return PROCESS_KILL if(!(get_dist(src, attached) <= 1 && isturf(attached.loc))) - to_chat(attached, "The IV drip needle is ripped out of you!") + to_chat(attached, span_userdanger("The IV drip needle is ripped out of you!")) attached.apply_damage(3, BRUTE, pick(BODY_ZONE_R_ARM, BODY_ZONE_L_ARM)) attached = null update_icon() @@ -177,7 +177,7 @@ set src in view(1) if(!isliving(usr)) - to_chat(usr, "You can't do that!") + to_chat(usr, span_warning("You can't do that!")) return if(usr.incapacitated()) @@ -193,7 +193,7 @@ set src in view(1) if(!isliving(usr)) - to_chat(usr, "You can't do that!") + to_chat(usr, span_warning("You can't do that!")) return if(usr.incapacitated()) @@ -211,13 +211,13 @@ if(beaker) if(beaker.reagents && beaker.reagents.reagent_list.len) - . += "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid." + . += span_notice("Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.") else - . += "Attached is an empty [beaker.name]." + . += span_notice("Attached is an empty [beaker.name].") else - . += "No chemicals are attached." + . += span_notice("No chemicals are attached.") - . += "[attached ? attached : "No one"] is attached." + . += span_notice("[attached ? attached : "No one"] is attached.") /obj/machinery/iv_drip/saline diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index ac55bec628ed..78509641a159 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -63,7 +63,7 @@ return var/obj/item/multitool/M = I M.buffer = src - to_chat(user, "You save the data in the [I.name]'s buffer.") + to_chat(user, span_notice("You save the data in the [I.name]'s buffer.")) return 1 if(default_deconstruction_crowbar(I)) @@ -100,13 +100,13 @@ /obj/machinery/launchpad/proc/doteleport(mob/user, sending) if(teleporting) - to_chat(user, "ERROR: Launchpad busy.") + to_chat(user, span_warning("ERROR: Launchpad busy.")) return var/turf/dest = get_turf(src) if(dest && is_centcom_level(dest.z)) - to_chat(user, "ERROR: Launchpad not operative. Heavy area shielding makes teleporting impossible.") + to_chat(user, span_warning("ERROR: Launchpad not operative. Heavy area shielding makes teleporting impossible.")) return var/target_x = x + x_offset @@ -158,7 +158,7 @@ if(isAI(ROI)) var/mob/living/silicon/ai/I = ROI if(I.move_resist > 1000) - to_chat(user, "ERROR: Launchpad overloaded, unable to operate.") + to_chat(user, span_warning("ERROR: Launchpad overloaded, unable to operate.")) continue // if it's anchored, don't teleport var/on_chair = "" @@ -244,7 +244,7 @@ return if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr))) return - usr.visible_message("[usr] starts closing [src]...", "You start closing [src]...") + usr.visible_message(span_notice("[usr] starts closing [src]..."), span_notice("You start closing [src]...")) if(do_after(usr, 30, target = usr)) usr.put_in_hands(briefcase) moveToNullspace() //hides it from suitcase contents @@ -257,7 +257,7 @@ if(L.pad == src) //do not attempt to link when already linked return ..() L.pad = src - to_chat(user, "You link [src] to [L].") + to_chat(user, span_notice("You link [src] to [L].")) else return ..() @@ -284,7 +284,7 @@ if(!is_syndicate(user)) // You don't know how to use launchpad as non syndicate. return add_fingerprint(user) - user.visible_message("[user] starts setting down [src]...", "You start setting up [pad]...") + user.visible_message(span_notice("[user] starts setting down [src]..."), span_notice("You start setting up [pad]...")) if(do_after(user, 30, target = user)) pad.forceMove(get_turf(src)) pad.update_indicator() @@ -298,7 +298,7 @@ if(L.pad == src.pad) //do not attempt to link when already linked return ..() L.pad = src.pad - to_chat(user, "You link [pad] to [L].") + to_chat(user, span_notice("You link [pad] to [L].")) else return ..() @@ -320,7 +320,7 @@ if(!is_syndicate(user)) // you don't know how to use the launchpad stealth remote as a non syndicate return ui_interact(user) - to_chat(user, "[src] projects a display onto your retina.") + to_chat(user, span_notice("[src] projects a display onto your retina.")) /obj/item/launchpad_remote/ui_state(mob/user) @@ -350,10 +350,10 @@ /obj/item/launchpad_remote/proc/teleport(mob/user, obj/machinery/launchpad/pad) if(QDELETED(pad)) - to_chat(user, "ERROR: Launchpad not responding. Check launchpad integrity.") + to_chat(user, span_warning("ERROR: Launchpad not responding. Check launchpad integrity.")) return if(!pad.isAvailable()) - to_chat(user, "ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.") + to_chat(user, span_warning("ERROR: Launchpad not operative. Make sure the launchpad is ready and powered.")) return pad.doteleport(user, sending) diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm index 97e9fc52bc58..7e819f7d4963 100644 --- a/code/game/machinery/lightswitch.dm +++ b/code/game/machinery/lightswitch.dm @@ -39,7 +39,7 @@ . = ..() . += "It is [area.lightswitch ? "on" : "off"]." if((obj_flags & EMAGGED) && user.can_hear()) - . += "You hear a faint hum coming from the switch." + . += span_danger("You hear a faint hum coming from the switch.") /obj/machinery/light_switch/interact(mob/user) if(obj_flags & EMAGGED) @@ -76,9 +76,9 @@ /obj/machinery/light_switch/emag_act(mob/user) if(obj_flags & EMAGGED) - to_chat(user, "Nothing new seems to happen when you swipe the emag.") + to_chat(user, span_warning("Nothing new seems to happen when you swipe the emag.")) return - to_chat(user, "You swipe the emag on the light switch. ") + to_chat(user, span_notice("You swipe the emag on the light switch. ")) if(user.can_hear()) - to_chat(user, "The light switch gives off a soft hum.") + to_chat(user, span_notice("The light switch gives off a soft hum.")) obj_flags |= EMAGGED diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 19e86374385c..64f99249fe5b 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -64,7 +64,7 @@ /obj/machinery/limbgrower/attackby(obj/item/O, mob/user, params) if (busy) - to_chat(user, "The Limb Grower is busy. Please wait for completion of previous operation.") + to_chat(user, span_alert("The Limb Grower is busy. Please wait for completion of previous operation.")) return if(default_deconstruction_screwdriver(user, "limbgrower_panelopen", "limbgrower_idleoff", O)) @@ -110,7 +110,7 @@ addtimer(CALLBACK(src, .proc/build_item),32*prod_coeff) else - to_chat(usr, "The limb grower is busy. Please wait for completion of previous operation.") + to_chat(usr, span_alert("The limb grower is busy. Please wait for completion of previous operation.")) updateUsrDialog() return @@ -125,7 +125,7 @@ //Just build whatever it is new buildpath(loc) else - src.visible_message(" Something went very wrong and there isnt enough synthflesh anymore!") + src.visible_message(span_error(" Something went very wrong and there isnt enough synthflesh anymore!")) busy = FALSE flick("limbgrower_unfill",src) icon_state = "limbgrower_idleoff" @@ -187,7 +187,7 @@ if(!(selected_category in D.category)) continue if(disabled || !can_build(D)) - dat += "[D.name]" + dat += span_linkOff("[D.name]") else dat += "[D.name]" dat += "[get_design_cost(D)]
" @@ -228,5 +228,5 @@ var/datum/design/D = SSresearch.techweb_design_by_id(id) if((D.build_type & LIMBGROWER) && ("emagged" in D.category)) stored_research.add_design(D) - to_chat(user, "A warning flashes onto the screen, stating that safety overrides have been deactivated!") + to_chat(user, span_warning("A warning flashes onto the screen, stating that safety overrides have been deactivated!")) obj_flags |= EMAGGED diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm index e5df2c29d18a..5217c389f2d7 100644 --- a/code/game/machinery/mass_driver.dm +++ b/code/game/machinery/mass_driver.dm @@ -24,7 +24,7 @@ continue O_limit++ if(O_limit >= 20) - audible_message("[src] lets out a screech, it doesn't seem to be able to handle the load.") + audible_message(span_notice("[src] lets out a screech, it doesn't seem to be able to handle the load.")) break use_power(500) O.throw_at(target, drive_range * power, power) diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm index 51b704c5e323..e73de649cc66 100644 --- a/code/game/machinery/navbeacon.dm +++ b/code/game/machinery/navbeacon.dm @@ -92,7 +92,7 @@ if(I.tool_behaviour == TOOL_SCREWDRIVER) open = !open - user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.") + user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", span_notice("You [open ? "open" : "close"] the beacon's cover.")) update_icon() @@ -100,12 +100,12 @@ if(open) if (src.allowed(user)) src.locked = !src.locked - to_chat(user, "Controls are now [src.locked ? "locked" : "unlocked"].") + to_chat(user, span_notice("Controls are now [src.locked ? "locked" : "unlocked"].")) else - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) updateDialog() else - to_chat(user, "You must open the cover first!") + to_chat(user, span_warning("You must open the cover first!")) else return ..() @@ -123,7 +123,7 @@ return // prevent intraction when T-scanner revealed if(!open && !ai) // can't alter controls if not open, unless you're an AI - to_chat(user, "The beacon's control cover is closed!") + to_chat(user, span_warning("The beacon's control cover is closed!")) return diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm index cddd41e45f89..2094f8c4829f 100644 --- a/code/game/machinery/newscaster.dm +++ b/code/game/machinery/newscaster.dm @@ -704,17 +704,17 @@ GLOBAL_LIST_EMPTY(allCasters) /obj/machinery/newscaster/attackby(obj/item/I, mob/living/user, params) if(I.tool_behaviour == TOOL_WRENCH) - to_chat(user, "You start [anchored ? "un" : ""]securing [name]...") + to_chat(user, span_notice("You start [anchored ? "un" : ""]securing [name]...")) I.play_tool_sound(src) if(I.use_tool(src, user, 60)) playsound(loc, 'sound/items/deconstruct.ogg', 50, 1) if(stat & BROKEN) - to_chat(user, "The broken remains of [src] fall on the ground.") + to_chat(user, span_warning("The broken remains of [src] fall on the ground.")) new /obj/item/stack/sheet/metal(loc, 5) new /obj/item/shard(loc) new /obj/item/shard(loc) else - to_chat(user, "You [anchored ? "un" : ""]secure [name].") + to_chat(user, span_notice("You [anchored ? "un" : ""]secure [name].")) new /obj/item/wallframe/newscaster(loc) qdel(src) else if(I.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM) @@ -722,17 +722,17 @@ GLOBAL_LIST_EMPTY(allCasters) if(!I.tool_start_check(user, amount=0)) return user.visible_message("[user] is repairing [src].", \ - "You begin repairing [src]...", \ - "You hear welding.") + span_notice("You begin repairing [src]..."), \ + span_italics("You hear welding.")) if(I.use_tool(src, user, 40, volume=50)) if(!(stat & BROKEN)) return - to_chat(user, "You repair [src].") + to_chat(user, span_notice("You repair [src].")) obj_integrity = max_integrity stat &= ~BROKEN update_icon() else - to_chat(user, "[src] does not need repairs.") + to_chat(user, span_notice("[src] does not need repairs.")) else return ..() @@ -762,7 +762,7 @@ GLOBAL_LIST_EMPTY(allCasters) /obj/machinery/newscaster/attack_paw(mob/user) if(user.a_intent != INTENT_HARM) - to_chat(user, "The newscaster controls are far too complicated for your tiny brain!") + to_chat(user, span_warning("The newscaster controls are far too complicated for your tiny brain!")) else take_damage(5, BRUTE, "melee") @@ -785,9 +785,9 @@ GLOBAL_LIST_EMPTY(allCasters) else targetcam = R.aicamera else - to_chat(user, "You cannot interface with silicon photo uploading!") + to_chat(user, span_warning("You cannot interface with silicon photo uploading!")) if(!targetcam.stored.len) - to_chat(usr, "No images saved") + to_chat(usr, span_boldannounce("No images saved")) return var/datum/picture/selection = targetcam.selectpicture(user) if(selection) @@ -870,13 +870,13 @@ GLOBAL_LIST_EMPTY(allCasters) var/creationTime /obj/item/newspaper/suicide_act(mob/user) - user.visible_message("[user] is focusing intently on [src]! It looks like [user.p_theyre()] trying to commit sudoku... until [user.p_their()] eyes light up with realization!") + user.visible_message(span_suicide("[user] is focusing intently on [src]! It looks like [user.p_theyre()] trying to commit sudoku... until [user.p_their()] eyes light up with realization!")) user.say(";JOURNALISM IS MY CALLING! EVERYBODY APPRECIATES UNBIASED REPORTI-GLORF", forced="newspaper suicide") var/mob/living/carbon/human/H = user var/obj/W = new /obj/item/reagent_containers/food/drinks/bottle/whiskey(H.loc) playsound(H.loc, 'sound/items/drink.ogg', rand(10,50), 1) W.reagents.trans_to(H, W.reagents.total_volume, transfered_by = user) - user.visible_message("[user] downs the contents of [W.name] in one gulp! Shoulda stuck to sudoku!") + user.visible_message(span_suicide("[user] downs the contents of [W.name] in one gulp! Shoulda stuck to sudoku!")) return(TOXLOSS) @@ -1008,10 +1008,10 @@ GLOBAL_LIST_EMPTY(allCasters) /obj/item/newspaper/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pen)) if(!user.is_literate()) - to_chat(user, "You scribble illegibly on [src]!") + to_chat(user, span_notice("You scribble illegibly on [src]!")) return if(scribble_page == curr_page) - to_chat(user, "There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?") + to_chat(user, span_notice("There's already a scribble in this page... You wouldn't want to make things too cluttered, would you?")) else var/s = stripped_input(user, "Write something", "Newspaper") if (!s) diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 2fad67dca7d3..d8cb030b2b23 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -137,12 +137,12 @@ Buildable meters var/flags = initial(fakeA.pipe_flags) for(var/obj/machinery/atmospherics/M in loc) if((M.pipe_flags & flags & PIPING_ONE_PER_TURF)) //Only one dense/requires density object per tile, eg connectors/cryo/heater/coolers. - to_chat(user, "Something is hogging the tile!") + to_chat(user, span_warning("Something is hogging the tile!")) return TRUE if((M.piping_layer != piping_layer) && !((M.pipe_flags | flags) & PIPING_ALL_LAYER)) //don't continue if either pipe goes across all layers continue if(M.GetInitDirections() & SSair.get_init_dirs(pipe_type, fixed_dir())) // matches at least one direction on either type of pipe - to_chat(user, "There is already a pipe at that location!") + to_chat(user, span_warning("There is already a pipe at that location!")) return TRUE // no conflicts found @@ -154,8 +154,8 @@ Buildable meters W.play_tool_sound(src) user.visible_message( \ "[user] fastens \the [src].", \ - "You fasten \the [src].", \ - "You hear ratcheting.") + span_notice("You fasten \the [src]."), \ + span_italics("You hear ratcheting.")) qdel(src) @@ -176,7 +176,7 @@ Buildable meters T.flipped = flipped /obj/item/pipe/directional/suicide_act(mob/user) - user.visible_message("[user] shoves [src] in [user.p_their()] mouth and turns it on! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] shoves [src] in [user.p_their()] mouth and turns it on! It looks like [user.p_theyre()] trying to commit suicide!")) if(iscarbon(user)) var/mob/living/carbon/C = user for(var/i=1 to 20) @@ -204,11 +204,11 @@ Buildable meters pipe = P break if(!pipe) - to_chat(user, "You need to fasten it to a pipe!") + to_chat(user, span_warning("You need to fasten it to a pipe!")) return TRUE new /obj/machinery/meter(loc, piping_layer) W.play_tool_sound(src) - to_chat(user, "You fasten the meter to the pipe.") + to_chat(user, span_notice("You fasten the meter to the pipe.")) qdel(src) /obj/item/pipe_meter/screwdriver_act(mob/living/user, obj/item/S) @@ -217,12 +217,12 @@ Buildable meters return TRUE if(!isturf(loc)) - to_chat(user, "You need to fasten it to the floor!") + to_chat(user, span_warning("You need to fasten it to the floor!")) return TRUE new /obj/machinery/meter/turf(loc, piping_layer) S.play_tool_sound(src) - to_chat(user, "You fasten the meter to the [loc.name].") + to_chat(user, span_notice("You fasten the meter to the [loc.name].")) qdel(src) /obj/item/pipe_meter/dropped() diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm index 89a2acd9acd2..7e7f5525e518 100644 --- a/code/game/machinery/pipe/pipe_dispenser.dm +++ b/code/game/machinery/pipe/pipe_dispenser.dm @@ -67,10 +67,10 @@ if(istype(W, /obj/item/pipe)) var/obj/item/pipe/P = W if(!P.disposable) - to_chat(usr, "[src] is too valuable to dispose of!") + to_chat(usr, span_warning("[src] is too valuable to dispose of!")) return // yogs end - to_chat(usr, "You put [W] back into [src].") + to_chat(usr, span_notice("You put [W] back into [src].")) qdel(W) return else @@ -148,7 +148,7 @@ var/obj/structure/disposalconstruct/C = new (loc, p_type) if(!C.can_place()) - to_chat(usr, "There's not enough room to build that here!") + to_chat(usr, span_warning("There's not enough room to build that here!")) qdel(C) return if(href_list["dir"]) diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index 3b4d731c4d98..74dadc5648de 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -194,7 +194,7 @@ if(anchored) //you can't turn a turret on/off if it's not anchored/secured on = !on //toggle on/off else - to_chat(usr, "It has to be secured first!") + to_chat(usr, span_notice("It has to be secured first!")) interact(usr) return @@ -228,18 +228,18 @@ if(I.tool_behaviour == TOOL_CROWBAR) //If the turret is destroyed, you can remove it with a crowbar to //try and salvage its components - to_chat(user, "You begin prying the metal coverings off...") + to_chat(user, span_notice("You begin prying the metal coverings off...")) if(I.use_tool(src, user, 20)) if(prob(70)) if(stored_gun) stored_gun.forceMove(loc) - to_chat(user, "You remove the turret and salvage some components.") + to_chat(user, span_notice("You remove the turret and salvage some components.")) if(prob(50)) new /obj/item/stack/sheet/metal(loc, rand(1,4)) if(prob(50)) new /obj/item/assembly/prox_sensor(loc) else - to_chat(user, "You remove the turret but did not manage to salvage anything.") + to_chat(user, span_notice("You remove the turret but did not manage to salvage anything.")) qdel(src) else if((I.tool_behaviour == TOOL_WRENCH) && (!on)) @@ -251,13 +251,13 @@ setAnchored(TRUE) invisibility = INVISIBILITY_MAXIMUM update_icon() - to_chat(user, "You secure the exterior bolts on the turret.") + to_chat(user, span_notice("You secure the exterior bolts on the turret.")) if(has_cover) cover = new /obj/machinery/porta_turret_cover(loc) //create a new turret. While this is handled in process(), this is to workaround a bug where the turret becomes invisible for a split second cover.parent_turret = src //make the cover's parent src else if(anchored) setAnchored(FALSE) - to_chat(user, "You unsecure the exterior bolts on the turret.") + to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) power_change() invisibility = 0 qdel(cover) //deletes the cover, and the turret instance itself becomes its own cover. @@ -266,22 +266,22 @@ //Behavior lock/unlock mangement if(allowed(user)) locked = !locked - to_chat(user, "Controls are now [locked ? "locked" : "unlocked"].") + to_chat(user, span_notice("Controls are now [locked ? "locked" : "unlocked"].")) else - to_chat(user, "Access denied.") + to_chat(user, span_notice("Access denied.")) else if(I.tool_behaviour == TOOL_MULTITOOL && !locked) if(!multitool_check_buffer(user, I)) return var/obj/item/multitool/M = I M.buffer = src - to_chat(user, "You add [src] to multitool buffer.") + to_chat(user, span_notice("You add [src] to multitool buffer.")) else return ..() /obj/machinery/porta_turret/emag_act(mob/user) if(obj_flags & EMAGGED) return - to_chat(user, "You short out [src]'s threat assessment circuits.") + to_chat(user, span_warning("You short out [src]'s threat assessment circuits.")) visible_message("[src] hums oddly...") obj_flags |= EMAGGED controllock = TRUE @@ -615,7 +615,7 @@ return FALSE if(remote_controller) if(warning_message) - to_chat(remote_controller, "Your uplink to [src] has been severed!") + to_chat(remote_controller, span_warning("Your uplink to [src] has been severed!")) quit_action.Remove(remote_controller) toggle_action.Remove(remote_controller) remote_controller.click_intercept = null @@ -831,8 +831,8 @@ /obj/machinery/turretid/examine(mob/user) . += ..() if(issilicon(user) && !(stat & BROKEN)) - . += {"Ctrl-click [src] to [ enabled ? "disable" : "enable"] turrets. - Alt-click [src] to set turrets to [ lethal ? "stun" : "kill"]."} + . += {"[span_notice("Ctrl-click [src] to [ enabled ? "disable" : "enable"] turrets.")] + [span_notice("Alt-click [src] to set turrets to [ lethal ? "stun" : "kill"].")]"} /obj/machinery/turretid/attackby(obj/item/I, mob/user, params) if(stat & BROKEN) @@ -853,11 +853,11 @@ if ( get_dist(src, user) == 0 ) // trying to unlock the interface if (allowed(usr)) if(obj_flags & EMAGGED) - to_chat(user, "The turret control is unresponsive.") + to_chat(user, span_notice("The turret control is unresponsive.")) return locked = !locked - to_chat(user, "You [ locked ? "lock" : "unlock"] the panel.") + to_chat(user, span_notice("You [ locked ? "lock" : "unlock"] the panel.")) if (locked) if (user.machine==src) user.unset_machine() @@ -866,12 +866,12 @@ if (user.machine==src) attack_hand(user) else - to_chat(user, "Access denied.") + to_chat(user, span_warning("Access denied.")) /obj/machinery/turretid/emag_act(mob/user) if(obj_flags & EMAGGED) return - to_chat(user, "You short out the turret controls' access analysis module.") + to_chat(user, span_danger("You short out the turret controls' access analysis module.")) obj_flags |= EMAGGED locked = FALSE if(user && user.machine == src) @@ -881,13 +881,13 @@ if(!ailock || IsAdminGhost(user)) return attack_hand(user) else - to_chat(user, "There seems to be a firewall preventing you from accessing this device.") + to_chat(user, span_notice("There seems to be a firewall preventing you from accessing this device.")) /obj/machinery/turretid/ui_interact(mob/user) . = ..() if ( get_dist(src, user) > 0 ) if ( !(issilicon(user) || IsAdminGhost(user)) ) - to_chat(user, "You are too far away.") + to_chat(user, span_notice("You are too far away.")) user.unset_machine() user << browse(null, "window=turretid") return diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index f06f4d677d83..763853bf15d9 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -25,14 +25,14 @@ if(PTURRET_UNSECURED) //first step if(I.tool_behaviour == TOOL_WRENCH && !anchored) I.play_tool_sound(src, 100) - to_chat(user, "You secure the external bolts.") + to_chat(user, span_notice("You secure the external bolts.")) setAnchored(TRUE) build_step = PTURRET_BOLTED return else if(I.tool_behaviour == TOOL_CROWBAR && !anchored) I.play_tool_sound(src, 75) - to_chat(user, "You dismantle the turret construction.") + to_chat(user, span_notice("You dismantle the turret construction.")) new /obj/item/stack/sheet/metal( loc, 5) qdel(src) return @@ -41,16 +41,16 @@ if(istype(I, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = I if(M.use(2)) - to_chat(user, "You add some metal armor to the interior frame.") + to_chat(user, span_notice("You add some metal armor to the interior frame.")) build_step = PTURRET_START_INTERNAL_ARMOUR icon_state = "turret_frame2" else - to_chat(user, "You need two sheets of metal to continue construction!") + to_chat(user, span_warning("You need two sheets of metal to continue construction!")) return else if(I.tool_behaviour == TOOL_WRENCH) I.play_tool_sound(src, 75) - to_chat(user, "You unfasten the external bolts.") + to_chat(user, span_notice("You unfasten the external bolts.")) setAnchored(FALSE) build_step = PTURRET_UNSECURED return @@ -59,7 +59,7 @@ if(PTURRET_START_INTERNAL_ARMOUR) if(I.tool_behaviour == TOOL_WRENCH) I.play_tool_sound(src, 100) - to_chat(user, "You bolt the metal armor into place.") + to_chat(user, span_notice("You bolt the metal armor into place.")) build_step = PTURRET_INTERNAL_ARMOUR_ON return @@ -67,11 +67,11 @@ if(!I.tool_start_check(user, amount=5)) //uses up 5 fuel return - to_chat(user, "You start to remove the turret's interior metal armor...") + to_chat(user, span_notice("You start to remove the turret's interior metal armor...")) if(I.use_tool(src, user, 20, volume=50, amount=5)) //uses up 5 fuel build_step = PTURRET_BOLTED - to_chat(user, "You remove the turret's interior metal armor.") + to_chat(user, span_notice("You remove the turret's interior metal armor.")) new /obj/item/stack/sheet/metal(drop_location(), 2) return @@ -82,13 +82,13 @@ if(!user.transferItemToLoc(E, src)) return installed_gun = E - to_chat(user, "You add [I] to the turret.") + to_chat(user, span_notice("You add [I] to the turret.")) build_step = PTURRET_GUN_EQUIPPED return else if(I.tool_behaviour == TOOL_WRENCH) I.play_tool_sound(src, 100) - to_chat(user, "You remove the turret's metal armor bolts.") + to_chat(user, span_notice("You remove the turret's metal armor bolts.")) build_step = PTURRET_START_INTERNAL_ARMOUR return @@ -97,7 +97,7 @@ build_step = PTURRET_SENSORS_ON if(!user.temporarilyRemoveItemFromInventory(I)) return - to_chat(user, "You add the proximity sensor to the turret.") + to_chat(user, span_notice("You add the proximity sensor to the turret.")) qdel(I) return @@ -106,7 +106,7 @@ if(I.tool_behaviour == TOOL_SCREWDRIVER) I.play_tool_sound(src, 100) build_step = PTURRET_CLOSED - to_chat(user, "You close the internal access hatch.") + to_chat(user, span_notice("You close the internal access hatch.")) return @@ -114,16 +114,16 @@ if(istype(I, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = I if(M.use(2)) - to_chat(user, "You add some metal armor to the exterior frame.") + to_chat(user, span_notice("You add some metal armor to the exterior frame.")) build_step = PTURRET_START_EXTERNAL_ARMOUR else - to_chat(user, "You need two sheets of metal to continue construction!") + to_chat(user, span_warning("You need two sheets of metal to continue construction!")) return else if(I.tool_behaviour == TOOL_SCREWDRIVER) I.play_tool_sound(src, 100) build_step = PTURRET_SENSORS_ON - to_chat(user, "You open the internal access hatch.") + to_chat(user, span_notice("You open the internal access hatch.")) return if(PTURRET_START_EXTERNAL_ARMOUR) @@ -131,10 +131,10 @@ if(!I.tool_start_check(user, amount=5)) return - to_chat(user, "You begin to weld the turret's armor down...") + to_chat(user, span_notice("You begin to weld the turret's armor down...")) if(I.use_tool(src, user, 30, volume=50, amount=5)) build_step = PTURRET_EXTERNAL_ARMOUR_ON - to_chat(user, "You weld the turret's armor down.") + to_chat(user, span_notice("You weld the turret's armor down.")) //The final step: create a full turret @@ -151,7 +151,7 @@ else if(I.tool_behaviour == TOOL_CROWBAR) I.play_tool_sound(src, 75) - to_chat(user, "You pry off the turret's exterior armor.") + to_chat(user, span_notice("You pry off the turret's exterior armor.")) new /obj/item/stack/sheet/metal(loc, 2) build_step = PTURRET_CLOSED return @@ -177,11 +177,11 @@ build_step = PTURRET_INTERNAL_ARMOUR_ON installed_gun.forceMove(loc) - to_chat(user, "You remove [installed_gun] from the turret frame.") + to_chat(user, span_notice("You remove [installed_gun] from the turret frame.")) installed_gun = null if(PTURRET_SENSORS_ON) - to_chat(user, "You remove the prox sensor from the turret frame.") + to_chat(user, span_notice("You remove the prox sensor from the turret frame.")) new /obj/item/assembly/prox_sensor(loc) build_step = PTURRET_GUN_EQUIPPED diff --git a/code/game/machinery/porta_turret/portable_turret_cover.dm b/code/game/machinery/porta_turret/portable_turret_cover.dm index 4df7001c11d8..a8d4da97b57f 100644 --- a/code/game/machinery/porta_turret/portable_turret_cover.dm +++ b/code/game/machinery/porta_turret/portable_turret_cover.dm @@ -46,12 +46,12 @@ if(!parent_turret.anchored) parent_turret.setAnchored(TRUE) - to_chat(user, "You secure the exterior bolts on the turret.") + to_chat(user, span_notice("You secure the exterior bolts on the turret.")) parent_turret.invisibility = 0 parent_turret.update_icon() else parent_turret.setAnchored(FALSE) - to_chat(user, "You unsecure the exterior bolts on the turret.") + to_chat(user, span_notice("You unsecure the exterior bolts on the turret.")) parent_turret.invisibility = INVISIBILITY_MAXIMUM parent_turret.update_icon() qdel(src) @@ -59,16 +59,16 @@ else if(I.GetID()) if(parent_turret.allowed(user)) parent_turret.locked = !parent_turret.locked - to_chat(user, "Controls are now [parent_turret.locked ? "locked" : "unlocked"].") + to_chat(user, span_notice("Controls are now [parent_turret.locked ? "locked" : "unlocked"].")) updateUsrDialog() else - to_chat(user, "Access denied.") + to_chat(user, span_notice("Access denied.")) else if(I.tool_behaviour == TOOL_MULTITOOL && !parent_turret.locked) if(!multitool_check_buffer(user, I)) return var/obj/item/multitool/M = I M.buffer = parent_turret - to_chat(user, "You add [parent_turret] to multitool buffer.") + to_chat(user, span_notice("You add [parent_turret] to multitool buffer.")) else return ..() @@ -89,7 +89,7 @@ /obj/machinery/porta_turret_cover/emag_act(mob/user) if(!(parent_turret.obj_flags & EMAGGED)) - to_chat(user, "You short out [parent_turret]'s threat assessment circuits.") + to_chat(user, span_notice("You short out [parent_turret]'s threat assessment circuits.")) visible_message("[parent_turret] hums oddly...") parent_turret.obj_flags |= EMAGGED parent_turret.on = 0 diff --git a/code/game/machinery/quantum_pad.dm b/code/game/machinery/quantum_pad.dm index fe4806fcca01..07e5bf83d261 100644 --- a/code/game/machinery/quantum_pad.dm +++ b/code/game/machinery/quantum_pad.dm @@ -31,11 +31,11 @@ /obj/machinery/quantumpad/examine(mob/user) . = ..() - . += "It is [ linked_pad ? "currently" : "not"] linked to another pad." + . += span_notice("It is [ linked_pad ? "currently" : "not"] linked to another pad.") if(!panel_open) - . += "The panel is screwed in, obstructing the linking device." + . += span_notice("The panel is screwed in, obstructing the linking device.") else - . += "The linking device is now able to be scanned with a multitool." + . += span_notice("The linking device is now able to be scanned with a multitool.") /obj/machinery/quantumpad/RefreshParts() var/E = 0 @@ -60,7 +60,7 @@ return var/obj/item/multitool/M = I M.buffer = src - to_chat(user, "You save the data in [I]'s buffer. It can now be saved to pads with closed panels.") + to_chat(user, span_notice("You save the data in [I]'s buffer. It can now be saved to pads with closed panels.")) return TRUE else if(I.tool_behaviour == TOOL_MULTITOOL) if(!multitool_check_buffer(user, I)) @@ -68,25 +68,25 @@ var/obj/item/multitool/M = I if(istype(M.buffer, /obj/machinery/quantumpad)) if(M.buffer == src) - to_chat(user, "You cannot link a pad to itself!") + to_chat(user, span_warning("You cannot link a pad to itself!")) return TRUE else linked_pad = M.buffer - to_chat(user, "You link [src] to the one in [I]'s buffer.") + to_chat(user, span_notice("You link [src] to the one in [I]'s buffer.")) return TRUE else - to_chat(user, "There is no quantum pad data saved in [I]'s buffer!") + to_chat(user, span_warning("There is no quantum pad data saved in [I]'s buffer!")) return TRUE else if(istype(I, /obj/item/quantum_keycard)) var/obj/item/quantum_keycard/K = I if(K.qpad) - to_chat(user, "You insert [K] into [src]'s card slot, activating it.") + to_chat(user, span_notice("You insert [K] into [src]'s card slot, activating it.")) interact(user, K.qpad) else - to_chat(user, "You insert [K] into [src]'s card slot, initiating the link procedure.") + to_chat(user, span_notice("You insert [K] into [src]'s card slot, initiating the link procedure.")) if(do_after(user, 40, target = src)) - to_chat(user, "You complete the link between [K] and [src].") + to_chat(user, span_notice("You complete the link between [K] and [src].")) K.qpad = src if(default_deconstruction_crowbar(I)) @@ -97,23 +97,23 @@ /obj/machinery/quantumpad/interact(mob/user, obj/machinery/quantumpad/target_pad = linked_pad) if(!target_pad || QDELETED(target_pad)) if(!map_pad_link_id || !initMappedLink()) - to_chat(user, "Target pad not found!") + to_chat(user, span_warning("Target pad not found!")) return if(world.time < last_teleport + teleport_cooldown) - to_chat(user, "[src] is recharging power. Please wait [DisplayTimeText(last_teleport + teleport_cooldown - world.time)].") + to_chat(user, span_warning("[src] is recharging power. Please wait [DisplayTimeText(last_teleport + teleport_cooldown - world.time)].")) return if(teleporting) - to_chat(user, "[src] is charging up. Please wait.") + to_chat(user, span_warning("[src] is charging up. Please wait.")) return if(target_pad.teleporting) - to_chat(user, "Target pad is busy. Please wait.") + to_chat(user, span_warning("Target pad is busy. Please wait.")) return if(target_pad.stat & NOPOWER) - to_chat(user, "Target pad is not responding to ping.") + to_chat(user, span_warning("Target pad is not responding to ping.")) return add_fingerprint(user) doteleport(user, target_pad) @@ -144,11 +144,11 @@ teleporting = FALSE return if(stat & NOPOWER) - to_chat(user, "[src] is unpowered!") + to_chat(user, span_warning("[src] is unpowered!")) teleporting = FALSE return if(!target_pad || QDELETED(target_pad) || target_pad.stat & NOPOWER) - to_chat(user, "Linked pad is not responding to ping. Teleport aborted.") + to_chat(user, span_warning("Linked pad is not responding to ping. Teleport aborted.")) teleporting = FALSE return diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index e5c64e76439a..6801572053e3 100755 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -11,6 +11,12 @@ var/obj/item/charging = null var/recharge_coeff = 1 + var/icon_state_off = "rechargeroff" + var/icon_state_idle = "recharger0" + var/icon_state_charging = "recharger1" + var/icon_state_recharged = "recharger2" + var/icon_state_open = "rechargeropen" + var/static/list/allowed_devices = typecacheof(list( /obj/item/gun/energy, /obj/item/melee/baton, @@ -24,12 +30,12 @@ /obj/machinery/recharger/examine(mob/user) . = ..() if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) - . += "You're too far away to examine [src]'s contents and display!" + . += span_warning("You're too far away to examine [src]'s contents and display!") return if(charging) - . += {"\The [src] contains: - - \A [charging]."} + . += {"[span_notice("\The [src] contains:")] + [span_notice("- \A [charging].")]"} if(!(stat & (NOPOWER|BROKEN))) . += "The status display reads:" @@ -52,11 +58,11 @@ /obj/machinery/recharger/attackby(obj/item/G, mob/user, params) if(G.tool_behaviour == TOOL_WRENCH) if(charging) - to_chat(user, "Remove the charging item first!") + to_chat(user, span_notice("Remove the charging item first!")) return setAnchored(!anchored) power_change() - to_chat(user, "You [anchored ? "attached" : "detached"] [src].") + to_chat(user, span_notice("You [anchored ? "attached" : "detached"] [src].")) G.play_tool_sound(src) return @@ -70,13 +76,13 @@ //Checks to make sure he's not in space doing it, and that the area got proper power. var/area/a = get_area(src) if(!isarea(a) || a.power_equip == 0) - to_chat(user, "[src] blinks red as you try to insert [G].") + to_chat(user, span_notice("[src] blinks red as you try to insert [G].")) return 1 if (istype(G, /obj/item/gun/energy)) var/obj/item/gun/energy/E = G if(!E.can_charge) - to_chat(user, "Your gun has no external power connector.") + to_chat(user, span_notice("Your gun has no external power connector.")) return 1 if(!user.transferItemToLoc(G, src)) @@ -84,7 +90,7 @@ setCharging(G) else - to_chat(user, "[src] isn't connected to anything!") + to_chat(user, span_notice("[src] isn't connected to anything!")) return 1 if(anchored && !charging) @@ -158,18 +164,33 @@ /obj/machinery/recharger/update_icon(using_power = 0, scan) //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. if(stat & (NOPOWER|BROKEN) || !anchored) - icon_state = "rechargeroff" + icon_state = icon_state_off return if(scan) - icon_state = "rechargeroff" + icon_state = icon_state_idle return if(panel_open) - icon_state = "rechargeropen" + icon_state = icon_state_open return if(charging) if(using_power) - icon_state = "recharger1" + icon_state = icon_state_charging else - icon_state = "recharger2" + icon_state = icon_state_recharged return - icon_state = "recharger0" + icon_state = icon_state_idle + +/obj/machinery/recharger/wallrecharger + name = "wall recharger" + icon = 'icons/obj/stationobjs.dmi' + icon_state = "wrecharger0" + desc = "A wall mounted charging dock for energy based weaponry." + use_power = IDLE_POWER_USE + idle_power_usage = 5 + active_power_usage = 400 + + icon_state_off = "rechargeroff" + icon_state_idle = "wrecharger0" + icon_state_charging = "wrecharger1" + icon_state_recharged = "wrecharger2" + icon_state_open = "wrechargeropen" diff --git a/code/game/machinery/recycler.dm b/code/game/machinery/recycler.dm index bcc9b54573eb..8089b0e02ddb 100644 --- a/code/game/machinery/recycler.dm +++ b/code/game/machinery/recycler.dm @@ -41,7 +41,7 @@ /obj/machinery/recycler/examine(mob/user) . = ..() - . += "Reclaiming [amount_produced]% of materials salvaged." + . += span_notice("Reclaiming [amount_produced]% of materials salvaged.") . += {"The power light is [(stat & NOPOWER) ? "off" : "on"]. The safety-mode light is [safety_mode ? "on" : "off"]. The safety-sensors status light is [obj_flags & EMAGGED ? "off" : "on"]."} @@ -69,7 +69,7 @@ safety_mode = FALSE update_icon() playsound(src, "sparks", 75, TRUE, -1) - to_chat(user, "You use the cryptographic sequencer on [src].") + to_chat(user, span_notice("You use the cryptographic sequencer on [src].")) /obj/machinery/recycler/update_icon() ..() @@ -199,4 +199,4 @@ name = "paper - 'garbage duty instructions'" info = "

New Assignment

You have been assigned to collect garbage from trash bins, located around the station. The crewmembers will put their trash into it and you will collect the said trash.

There is a recycling machine near your closet, inside maintenance; use it to recycle the trash for a small chance to get useful minerals. Then deliver these minerals to cargo or engineering. You are our last hope for a clean station, do not screw this up!" -#undef SAFETY_COOLDOWN \ No newline at end of file +#undef SAFETY_COOLDOWN diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm index 5a0781eacbc4..cd5e2b24ac7c 100644 --- a/code/game/machinery/requests_console.dm +++ b/code/game/machinery/requests_console.dm @@ -163,11 +163,11 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) dat += departments_table(GLOB.req_console_information) if(REQ_SCREEN_SENT) - dat += "Message sent.

" + dat += "[span_good("Message sent.")]

" dat += "<< Back
" if(REQ_SCREEN_ERR) - dat += "An error occurred.

" + dat += "[span_bad("An error occurred.")]

" dat += "<< Back
" if(REQ_SCREEN_VIEW_MSGS) @@ -204,7 +204,7 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) if ((announceAuth || IsAdminGhost(user)) && message) dat += "Announce Message
" else - dat += "Announce Message
" + dat += "[span_linkOff("Announce Message")]
" dat += "
<< Back
" if(!dat) @@ -377,14 +377,14 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) update_icon() if(REQ_HIGH_MESSAGE_PRIORITY) - header = "High Priority
[header]" + header = "[span_bad("High Priority")]
[header]" alert = "PRIORITY Alert from [source][authentic]" if(newmessagepriority < REQ_HIGH_MESSAGE_PRIORITY) newmessagepriority = REQ_HIGH_MESSAGE_PRIORITY update_icon() if(REQ_EXTREME_MESSAGE_PRIORITY) - header = "!!!Extreme Priority!!!
[header]" + header = "[span_bad("!!!Extreme Priority!!!")]
[header]" alert = "EXTREME PRIORITY Alert from [source][authentic]" silenced = FALSE if(newmessagepriority < REQ_EXTREME_MESSAGE_PRIORITY) @@ -404,10 +404,10 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) /obj/machinery/requests_console/attackby(obj/item/O, mob/user, params) if(O.tool_behaviour == TOOL_CROWBAR) if(open) - to_chat(user, "You close the maintenance panel.") + to_chat(user, span_notice("You close the maintenance panel.")) open = FALSE else - to_chat(user, "You open the maintenance panel.") + to_chat(user, span_notice("You open the maintenance panel.")) open = TRUE update_icon() return @@ -415,12 +415,12 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) if(open) hackState = !hackState if(hackState) - to_chat(user, "You modify the wiring.") + to_chat(user, span_notice("You modify the wiring.")) else - to_chat(user, "You reset the wiring.") + to_chat(user, span_notice("You reset the wiring.")) update_icon() else - to_chat(user, "You must open the maintenance panel first!") + to_chat(user, span_warning("You must open the maintenance panel first!")) return var/obj/item/card/id/ID = O.GetID() @@ -433,13 +433,13 @@ GLOBAL_LIST_EMPTY(req_console_ckey_departments) announceAuth = TRUE else announceAuth = FALSE - to_chat(user, "You are not authorized to send announcements!") + to_chat(user, span_warning("You are not authorized to send announcements!")) updateUsrDialog() return if (istype(O, /obj/item/stamp)) if(screen == REQ_SCREEN_AUTHENTICATE) var/obj/item/stamp/T = O - msgStamped = "Stamped with the [T.name]" + msgStamped = span_boldnotice("Stamped with the [T.name]") updateUsrDialog() return return ..() diff --git a/code/game/machinery/scan_gate.dm b/code/game/machinery/scan_gate.dm index 9359e26b2a54..7ae7a322c2f0 100644 --- a/code/game/machinery/scan_gate.dm +++ b/code/game/machinery/scan_gate.dm @@ -45,9 +45,9 @@ /obj/machinery/scanner_gate/examine(mob/user) . = ..() if(locked) - . += "The control panel is ID-locked. Swipe a valid ID to unlock it." + . += span_notice("The control panel is ID-locked. Swipe a valid ID to unlock it.") else - . += "The control panel is unlocked. Swipe an ID to lock it." + . += span_notice("The control panel is unlocked. Swipe an ID to lock it.") /obj/machinery/scanner_gate/Crossed(atom/movable/AM) . = ..() @@ -71,14 +71,14 @@ if(allowed(user)) locked = FALSE req_access = list() - to_chat(user, "You unlock [src].") + to_chat(user, span_notice("You unlock [src].")) else if(!(obj_flags & EMAGGED)) - to_chat(user, "You lock [src] with [W].") + to_chat(user, span_notice("You lock [src] with [W].")) var/list/access = W.GetAccess() req_access = access locked = TRUE else - to_chat(user, "You try to lock [src] with [W], but nothing happens.") + to_chat(user, span_warning("You try to lock [src] with [W], but nothing happens.")) else return ..() @@ -88,7 +88,7 @@ locked = FALSE req_access = list() obj_flags |= EMAGGED - to_chat(user, "You fry the ID checking system.") + to_chat(user, span_notice("You fry the ID checking system.")) /obj/machinery/scanner_gate/proc/perform_scan(mob/living/M) var/beep = FALSE diff --git a/code/game/machinery/sci_bombardment.dm b/code/game/machinery/sci_bombardment.dm index 622a89a8ba07..1832b143bc91 100644 --- a/code/game/machinery/sci_bombardment.dm +++ b/code/game/machinery/sci_bombardment.dm @@ -79,12 +79,12 @@ if(!scibomb) scibomb = B playsound(src, 'sound/effects/bin_close.ogg', 100, 1) - to_chat(usr, "You load [B] into the firing mechanism.") + to_chat(usr, span_notice("You load [B] into the firing mechanism.")) update_icon() else - to_chat(usr, "There is already a transfer valve loaded in the firing mechanism!") + to_chat(usr, span_warning("There is already a transfer valve loaded in the firing mechanism!")) else - to_chat(usr, "[B] is refused, as it is invalid or incomplete.") + to_chat(usr, span_warning("[B] is refused, as it is invalid or incomplete.")) return /** @@ -201,7 +201,7 @@ locked = !locked radio.talk_into(src, "Controls [locked ? "locked" : "unlocked"] by [I.registered_name].",) else - to_chat(usr, "Access denied. Please seek assistance from station AI or Research Director.") + to_chat(usr, span_warning("Access denied. Please seek assistance from station AI or Research Director.")) update_icon() . = TRUE if("count")//Prompts user to change countdown timer (Minimum based on var/mincount) @@ -209,17 +209,17 @@ return var/a = text2num(stripped_input(usr, "Set a new countdown timer. (Minimum [mincount])", name, mincount)) countdown = max(a, mincount) - to_chat(usr, "Countdown set to [countdown] seconds.") + to_chat(usr, span_notice("Countdown set to [countdown] seconds.")) . = TRUE if("unload")//If unlocked, allows user to remove TTV from the machine, if present if(!scibomb || locked) return if(!stopcount) playsound(src, 'sound/misc/box_deploy.ogg', 80, 0.5) - to_chat(usr, "It's too late to do that now! There's only [tick] seconds remaining! Abort!") + to_chat(usr, span_warning("It's too late to do that now! There's only [tick] seconds remaining! Abort!")) return playsound(src, 'sound/machines/blastdoor.ogg', 75, 0) - to_chat(usr, "[scibomb] is ejected from the loading chamber.") + to_chat(usr, span_notice("[scibomb] is ejected from the loading chamber.")) scibomb.forceMove(drop_location()) scibomb = null update_icon() diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm index 7214875e4bdc..492218d4ed71 100644 --- a/code/game/machinery/shieldgen.dm +++ b/code/game/machinery/shieldgen.dm @@ -122,25 +122,25 @@ if(.) return if(locked && !issilicon(user)) - to_chat(user, "The machine is locked, you are unable to use it!") + to_chat(user, span_warning("The machine is locked, you are unable to use it!")) return if(panel_open) - to_chat(user, "The panel must be closed before operating this machine!") + to_chat(user, span_warning("The panel must be closed before operating this machine!")) return if (active) user.visible_message("[user] deactivated \the [src].", \ - "You deactivate \the [src].", \ - "You hear heavy droning fade out.") + span_notice("You deactivate \the [src]."), \ + span_italics("You hear heavy droning fade out.")) shields_down() else if(anchored) user.visible_message("[user] activated \the [src].", \ - "You activate \the [src].", \ - "You hear heavy droning.") + span_notice("You activate \the [src]."), \ + span_italics("You hear heavy droning.")) shields_up() else - to_chat(user, "The device must first be secured to the floor!") + to_chat(user, span_warning("The device must first be secured to the floor!")) return /obj/machinery/shieldgen/attackby(obj/item/W, mob/user, params) @@ -148,60 +148,60 @@ W.play_tool_sound(src, 100) panel_open = !panel_open if(panel_open) - to_chat(user, "You open the panel and expose the wiring.") + to_chat(user, span_notice("You open the panel and expose the wiring.")) else - to_chat(user, "You close the panel.") + to_chat(user, span_notice("You close the panel.")) else if(istype(W, /obj/item/stack/cable_coil) && (stat & BROKEN) && panel_open) var/obj/item/stack/cable_coil/coil = W if (coil.get_amount() < 1) - to_chat(user, "You need one length of cable to repair [src]!") + to_chat(user, span_warning("You need one length of cable to repair [src]!")) return - to_chat(user, "You begin to replace the wires...") + to_chat(user, span_notice("You begin to replace the wires...")) if(do_after(user, 30, target = src)) if(coil.get_amount() < 1) return coil.use(1) obj_integrity = max_integrity stat &= ~BROKEN - to_chat(user, "You repair \the [src].") + to_chat(user, span_notice("You repair \the [src].")) update_icon() else if(W.tool_behaviour == TOOL_WRENCH) if(locked) - to_chat(user, "The bolts are covered! Unlocking this would retract the covers.") + to_chat(user, span_warning("The bolts are covered! Unlocking this would retract the covers.")) return if(!anchored && !isinspace()) W.play_tool_sound(src, 100) - to_chat(user, "You secure \the [src] to the floor!") + to_chat(user, span_notice("You secure \the [src] to the floor!")) setAnchored(TRUE) else if(anchored) W.play_tool_sound(src, 100) - to_chat(user, "You unsecure \the [src] from the floor!") + to_chat(user, span_notice("You unsecure \the [src] from the floor!")) if(active) - to_chat(user, "\The [src] shuts off!") + to_chat(user, span_notice("\The [src] shuts off!")) shields_down() setAnchored(FALSE) else if(W.GetID()) if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked - to_chat(user, "You [locked ? "lock" : "unlock"] the controls.") + to_chat(user, span_notice("You [locked ? "lock" : "unlock"] the controls.")) else if(obj_flags & EMAGGED) - to_chat(user, "Error, access controller damaged!") + to_chat(user, span_danger("Error, access controller damaged!")) else - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) else return ..() /obj/machinery/shieldgen/emag_act(mob/user) if(obj_flags & EMAGGED) - to_chat(user, "The access controller is damaged!") + to_chat(user, span_warning("The access controller is damaged!")) return obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, 1) - to_chat(user, "You short out the access controller.") + to_chat(user, span_warning("You short out the access controller.")) /obj/machinery/shieldgen/update_icon() if(active) @@ -279,8 +279,8 @@ if(fields) active = ACTIVE_HASFIELDS if(!power) - visible_message("The [src.name] shuts down due to lack of power!", \ - "You hear heavy droning fade out.") + visible_message(span_danger("The [src.name] shuts down due to lack of power!"), \ + span_italics("You hear heavy droning fade out.")) icon_state = "Shield_Gen" active = FALSE for(var/d in GLOB.cardinals) @@ -337,7 +337,7 @@ /obj/machinery/shieldwallgen/can_be_unfasten_wrench(mob/user, silent) if(active) if(!silent) - to_chat(user, "Turn off the shield generator first!") + to_chat(user, span_warning("Turn off the shield generator first!")) return FAILED_UNFASTEN return ..() @@ -348,11 +348,11 @@ else if(W.GetID()) if(allowed(user) && !(obj_flags & EMAGGED)) locked = !locked - to_chat(user, "You [src.locked ? "lock" : "unlock"] the controls.") + to_chat(user, span_notice("You [src.locked ? "lock" : "unlock"] the controls.")) else if(obj_flags & EMAGGED) - to_chat(user, "Error, access controller damaged!") + to_chat(user, span_danger("Error, access controller damaged!")) else - to_chat(user, "Access denied.") + to_chat(user, span_danger("Access denied.")) else add_fingerprint(user) @@ -363,37 +363,37 @@ if(.) return if(!anchored) - to_chat(user, "\The [src] needs to be firmly secured to the floor first!") + to_chat(user, span_warning("\The [src] needs to be firmly secured to the floor first!")) return if(locked && !issilicon(user)) - to_chat(user, "The controls are locked!") + to_chat(user, span_warning("The controls are locked!")) return if(!power) - to_chat(user, "\The [src] needs to be powered by a wire!") + to_chat(user, span_warning("\The [src] needs to be powered by a wire!")) return if(active) user.visible_message("[user] turned \the [src] off.", \ - "You turn off \the [src].", \ - "You hear heavy droning fade out.") + span_notice("You turn off \the [src]."), \ + span_italics("You hear heavy droning fade out.")) active = FALSE update_activity() else user.visible_message("[user] turned \the [src] on.", \ - "You turn on \the [src].", \ - "You hear heavy droning.") + span_notice("You turn on \the [src]."), \ + span_italics("You hear heavy droning.")) active = ACTIVE_SETUPFIELDS update_activity() add_fingerprint(user) /obj/machinery/shieldwallgen/emag_act(mob/user) if(obj_flags & EMAGGED) - to_chat(user, "The access controller is damaged!") + to_chat(user, span_warning("The access controller is damaged!")) return obj_flags |= EMAGGED locked = FALSE playsound(src, "sparks", 100, 1) - to_chat(user, "You short out the access controller.") + to_chat(user, span_warning("You short out the access controller.")) //////////////Containment Field START /obj/machinery/shieldwall @@ -416,7 +416,7 @@ needs_power = TRUE setDir(get_dir(gen_primary, gen_secondary)) for(var/mob/living/L in get_turf(src)) - visible_message("\The [src] is suddenly occupying the same space as \the [L]!") + visible_message(span_danger("\The [src] is suddenly occupying the same space as \the [L]!")) L.gib() /obj/machinery/shieldwall/Destroy() diff --git a/code/game/machinery/slotmachine.dm b/code/game/machinery/slotmachine.dm index d5001cf8bc2f..ee7927463e40 100644 --- a/code/game/machinery/slotmachine.dm +++ b/code/game/machinery/slotmachine.dm @@ -88,26 +88,26 @@ C.throw_at(user, 3, 10) if(prob(10)) balance = max(balance - SPIN_PRICE, 0) - to_chat(user, "[src] spits your coin back out!") + to_chat(user, span_warning("[src] spits your coin back out!")) else if(!user.temporarilyRemoveItemFromInventory(C)) return - to_chat(user, "You insert a [C.cmineral] coin into [src]'s slot!") + to_chat(user, span_notice("You insert a [C.cmineral] coin into [src]'s slot!")) balance += C.value qdel(C) else - to_chat(user, "This machine is only accepting holochips!") + to_chat(user, span_warning("This machine is only accepting holochips!")) else if(istype(I, /obj/item/holochip)) if(paymode == HOLOCHIP) var/obj/item/holochip/H = I if(!user.temporarilyRemoveItemFromInventory(H)) return - to_chat(user, "You insert [H.credits] holocredits into [src]'s holoreader!") + to_chat(user, span_notice("You insert [H.credits] holocredits into [src]'s holoreader!")) balance += H.credits qdel(H) else - to_chat(user, "This machine is only accepting coins!") + to_chat(user, span_warning("This machine is only accepting coins!")) else if(I.tool_behaviour == TOOL_MULTITOOL) if(balance > 0) visible_message("[src] says, 'ERROR! Please empty the machine balance before altering paymode.'") //Prevents converting coins into holocredits and vice versa @@ -195,7 +195,7 @@ var/the_name if(user) the_name = user.real_name - visible_message("[user] pulls the lever and the slot machine starts spinning!") + visible_message(span_notice("[user] pulls the lever and the slot machine starts spinning!")) else the_name = "Exaybachay" @@ -223,14 +223,14 @@ /obj/machinery/computer/slot_machine/proc/can_spin(mob/user) if(stat & NOPOWER) - to_chat(user, "The slot machine has no power!") + to_chat(user, span_warning("The slot machine has no power!")) if(stat & BROKEN) - to_chat(user, "The slot machine is broken!") + to_chat(user, span_warning("The slot machine is broken!")) if(working) - to_chat(user, "You need to wait until the machine stops spinning before you can play again!") + to_chat(user, span_warning("You need to wait until the machine stops spinning before you can play again!")) return 0 if(balance < SPIN_PRICE) - to_chat(user, "Insufficient money to play!") + to_chat(user, span_warning("Insufficient money to play!")) return 0 return 1 @@ -273,12 +273,12 @@ give_money(SMALL_PRIZE) else if(linelength == 3) - to_chat(user, "You win three free games!") + to_chat(user, span_notice("You win three free games!")) balance += SPIN_PRICE * 4 money = max(money - SPIN_PRICE * 4, money) else - to_chat(user, "No luck!") + to_chat(user, span_warning("No luck!")) /obj/machinery/computer/slot_machine/proc/get_lines() var/amountthesame diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index e7c026c97bc1..a5c28d67a8b5 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -143,20 +143,20 @@ if(istype(I, /obj/item/stock_parts/cell)) if(panel_open) if(cell) - to_chat(user, "There is already a power cell inside!") + to_chat(user, span_warning("There is already a power cell inside!")) return else if(!user.transferItemToLoc(I, src)) return cell = I I.add_fingerprint(usr) - user.visible_message("\The [user] inserts a power cell into \the [src].", "You insert the power cell into \the [src].") + user.visible_message("\The [user] inserts a power cell into \the [src].", span_notice("You insert the power cell into \the [src].")) SStgui.update_uis(src) else - to_chat(user, "The hatch must be open to insert a power cell!") + to_chat(user, span_warning("The hatch must be open to insert a power cell!")) return else if(I.tool_behaviour == TOOL_SCREWDRIVER) panel_open = !panel_open - user.visible_message("\The [user] [panel_open ? "opens" : "closes"] the hatch on \the [src].", "You [panel_open ? "open" : "close"] the hatch on \the [src].") + user.visible_message("\The [user] [panel_open ? "opens" : "closes"] the hatch on \the [src].", span_notice("You [panel_open ? "open" : "close"] the hatch on \the [src].")) update_icon() else if(default_deconstruction_crowbar(I)) return @@ -238,7 +238,7 @@ /obj/machinery/space_heater/proc/togglepower() on = !on mode = HEATER_MODE_STANDBY - usr.visible_message("[usr] switches [on ? "on" : "off"] \the [src].", "You switch [on ? "on" : "off"] \the [src].") + usr.visible_message("[usr] switches [on ? "on" : "off"] \the [src].", span_notice("You switch [on ? "on" : "off"] \the [src].")) update_icon() if (on) START_PROCESSING(SSmachines, src) diff --git a/code/game/machinery/stasis.dm b/code/game/machinery/stasis.dm index 009f0c3bbfe6..1733bd385d0d 100644 --- a/code/game/machinery/stasis.dm +++ b/code/game/machinery/stasis.dm @@ -30,9 +30,9 @@ /obj/machinery/stasis/examine(mob/user) . = ..() - . += "Alt-click to [stasis_enabled ? "turn off" : "turn on"] the machine." + . += span_notice("Alt-click to [stasis_enabled ? "turn off" : "turn on"] the machine.") if(obj_flags & EMAGGED) - . += "There's a worrying blue mist surrounding it." + . += span_warning("There's a worrying blue mist surrounding it.") /obj/machinery/stasis/proc/play_power_sound() var/_running = stasis_running() @@ -106,7 +106,7 @@ target.ExtinguishMob() use_power = ACTIVE_POWER_USE if(obj_flags & EMAGGED) - to_chat(target, "Your limbs start to feel numb...") + to_chat(target, span_warning("Your limbs start to feel numb...")) /obj/machinery/stasis/proc/thaw_them(mob/living/target) target.remove_status_effect(STATUS_EFFECT_STASIS) @@ -173,9 +173,9 @@ /obj/machinery/stasis/emag_act(mob/user) if(obj_flags & EMAGGED) - to_chat(user, "The stasis bed's safeties are already overriden!") + to_chat(user, span_warning("The stasis bed's safeties are already overriden!")) return - to_chat(user, "You override the stasis bed's safeties!") + to_chat(user, span_notice("You override the stasis bed's safeties!")) obj_flags |= EMAGGED #undef STASIS_TOGGLE_COOLDOWN diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm index 615d34d9feab..22637ac1807c 100644 --- a/code/game/machinery/suit_storage_unit.dm +++ b/code/game/machinery/suit_storage_unit.dm @@ -195,27 +195,27 @@ return var/mob/living/target = A if(!state_open) - to_chat(user, "The unit's doors are shut!") + to_chat(user, span_warning("The unit's doors are shut!")) return if(!is_operational()) - to_chat(user, "The unit is not operational!") + to_chat(user, span_warning("The unit is not operational!")) return if(occupant || helmet || suit || storage) - to_chat(user, "It's too cluttered inside to fit in!") + to_chat(user, span_warning("It's too cluttered inside to fit in!")) return if(target == user) - user.visible_message("[user] starts squeezing into [src]!", "You start working your way into [src]...") + user.visible_message(span_warning("[user] starts squeezing into [src]!"), span_notice("You start working your way into [src]...")) else - target.visible_message("[user] starts shoving [target] into [src]!", "[user] starts shoving you into [src]!") + target.visible_message(span_warning("[user] starts shoving [target] into [src]!"), span_userdanger("[user] starts shoving you into [src]!")) if(do_mob(user, target, 30)) if(occupant || helmet || suit || storage) return if(target == user) - user.visible_message("[user] slips into [src] and closes the door behind [user.p_them()]!", "You slip into [src]'s cramped space and shut its door.") + user.visible_message(span_warning("[user] slips into [src] and closes the door behind [user.p_them()]!"), "You slip into [src]'s cramped space and shut its door.") else - target.visible_message("[user] pushes [target] into [src] and shuts its door!", "[user] shoves you into [src] and shuts the door!") + target.visible_message("[user] pushes [target] into [src] and shuts its door!", span_userdanger("[user] shoves you into [src] and shuts the door!")) close_machine(target) add_fingerprint(user) @@ -238,7 +238,7 @@ uv = FALSE locked = FALSE if(uv_super) - visible_message("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.") + visible_message(span_warning("[src]'s door creaks open with a loud whining noise. A cloud of foul black smoke escapes from its chamber.")) playsound(src, 'sound/machines/airlock_alien_prying.ogg', 50, 1) helmet = null qdel(helmet) @@ -252,9 +252,9 @@ wires.cut_all() else if(!occupant) - visible_message("[src]'s door slides open. The glowing yellow lights dim to a gentle green.") + visible_message(span_notice("[src]'s door slides open. The glowing yellow lights dim to a gentle green.")) else - visible_message("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.") + visible_message(span_warning("[src]'s door slides open, barraging you with the nauseating smell of charred flesh.")) playsound(src, 'sound/machines/airlockclose.ogg', 25, 1) var/list/things_to_clear = list() //Done this way since using GetAllContents on the SSU itself would include circuitry and such. if(suit) @@ -291,7 +291,7 @@ if(locked) if(message_cooldown <= world.time) message_cooldown = world.time + 50 - to_chat(user, "[src]'s door won't budge!") + to_chat(user, span_warning("[src]'s door won't budge!")) return open_machine() dump_contents() @@ -303,21 +303,21 @@ return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message("You see [user] kicking against the doors of [src]!", \ - "You start kicking against the doors... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a thump from [src].") + user.visible_message(span_notice("You see [user] kicking against the doors of [src]!"), \ + span_notice("You start kicking against the doors... (this will take about [DisplayTimeText(breakout_time)].)"), \ + span_italics("You hear a thump from [src].")) if(do_after(user,(breakout_time), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src ) return - user.visible_message("[user] successfully broke out of [src]!", \ - "You successfully break out of [src]!") + user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ + span_notice("You successfully break out of [src]!")) open_machine() dump_contents() add_fingerprint(user) if(locked) - visible_message("You see [user] kicking against the doors of [src]!", \ - "You start kicking against the doors...") + visible_message(span_notice("You see [user] kicking against the doors of [src]!"), \ + span_notice("You start kicking against the doors...")) addtimer(CALLBACK(src, .proc/resist_open, user), 300) else open_machine() @@ -325,42 +325,42 @@ /obj/machinery/suit_storage_unit/proc/resist_open(mob/user) if(!state_open && occupant && (user in src) && user.stat == 0) // Check they're still here. - visible_message("You see [user] burst out of [src]!", \ - "You escape the cramped confines of [src]!") + visible_message(span_notice("You see [user] burst out of [src]!"), \ + span_notice("You escape the cramped confines of [src]!")) open_machine() /obj/machinery/suit_storage_unit/attackby(obj/item/I, mob/user, params) if(state_open && is_operational()) if(istype(I, /obj/item/clothing/suit)) if(suit) - to_chat(user, "The unit already contains a suit!.") + to_chat(user, span_warning("The unit already contains a suit!.")) return if(!user.transferItemToLoc(I, src)) return suit = I else if(istype(I, /obj/item/clothing/head)) if(helmet) - to_chat(user, "The unit already contains a helmet!") + to_chat(user, span_warning("The unit already contains a helmet!")) return if(!user.transferItemToLoc(I, src)) return helmet = I else if(istype(I, /obj/item/clothing/mask)) if(mask) - to_chat(user, "The unit already contains a mask!") + to_chat(user, span_warning("The unit already contains a mask!")) return if(!user.transferItemToLoc(I, src)) return mask = I else if(storage) - to_chat(user, "The auxiliary storage compartment is full!") + to_chat(user, span_warning("The auxiliary storage compartment is full!")) return if(!user.transferItemToLoc(I, src)) return storage = I - visible_message("[user] inserts [I] into [src].", "You load [I] into [src].") + visible_message(span_notice("[user] inserts [I] into [src]."), span_notice("You load [I] into [src].")) update_icon() return @@ -380,7 +380,7 @@ . = !(state_open || panel_open || is_operational() || locked || (flags_1 & NODECONSTRUCT_1)) && I.tool_behaviour == TOOL_CROWBAR if(.) I.play_tool_sound(src, 50) - visible_message("[usr] pries open \the [src].", "You pry open \the [src].") + visible_message(span_notice("[usr] pries open \the [src]."), span_notice("You pry open \the [src].")) open_machine() /obj/machinery/suit_storage_unit/ui_interact(mob/user, datum/tgui/ui) @@ -443,7 +443,7 @@ else if(occupant) var/mob/living/mob_occupant = occupant - to_chat(mob_occupant, "[src]'s confines grow warm, then hot, then scorching. You're being burned [!mob_occupant.stat ? "alive" : "away"]!") + to_chat(mob_occupant, span_userdanger("[src]'s confines grow warm, then hot, then scorching. You're being burned [!mob_occupant.stat ? "alive" : "away"]!")) cook() . = TRUE if("dispense") diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm index 3683fe5fb7f6..82dd5ab0aa33 100644 --- a/code/game/machinery/syndicatebeacon.dm +++ b/code/game/machinery/syndicatebeacon.dm @@ -21,7 +21,7 @@ /obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null) if(surplus() < 1500) if(user) - to_chat(user, "The connected wire doesn't have enough current.") + to_chat(user, span_notice("The connected wire doesn't have enough current.")) return for(var/obj/singularity/singulo in GLOB.singularities) if(singulo.z == z) @@ -29,7 +29,7 @@ icon_state = "[icontype]1" active = 1 if(user) - to_chat(user, "You activate the beacon.") + to_chat(user, span_notice("You activate the beacon.")) /obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user = null) @@ -39,7 +39,7 @@ icon_state = "[icontype]0" active = 0 if(user) - to_chat(user, "You deactivate the beacon.") + to_chat(user, span_notice("You deactivate the beacon.")) /obj/machinery/power/singularity_beacon/attack_ai(mob/user) @@ -53,25 +53,25 @@ if(anchored) return active ? Deactivate(user) : Activate(user) else - to_chat(user, "You need to screw the beacon to the floor first!") + to_chat(user, span_warning("You need to screw the beacon to the floor first!")) /obj/machinery/power/singularity_beacon/attackby(obj/item/W, mob/user, params) if(W.tool_behaviour == TOOL_SCREWDRIVER) if(active) - to_chat(user, "You need to deactivate the beacon first!") + to_chat(user, span_warning("You need to deactivate the beacon first!")) return if(anchored) setAnchored(FALSE) - to_chat(user, "You unscrew the beacon from the floor.") + to_chat(user, span_notice("You unscrew the beacon from the floor.")) disconnect_from_network() return else if(!connect_to_network()) - to_chat(user, "This device must be placed over an exposed, powered cable node!") + to_chat(user, span_warning("This device must be placed over an exposed, powered cable node!")) return setAnchored(TRUE) - to_chat(user, "You screw the beacon to the floor and attach the cable.") + to_chat(user, span_notice("You screw the beacon to the floor and attach the cable.")) return else return ..() @@ -116,7 +116,7 @@ /obj/item/sbeacondrop/attack_self(mob/user) if(user) - to_chat(user, "Locked In.") + to_chat(user, span_notice("Locked In.")) new droptype( user.loc ) playsound(src, 'sound/effects/pop.ogg', 100, 1, 1) qdel(src) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index 9b4c581e3c68..768793b418df 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -112,25 +112,25 @@ if(I.tool_behaviour == TOOL_WRENCH && can_unanchor) if(!anchored) if(!isturf(loc) || isspaceturf(loc)) - to_chat(user, "The bomb must be placed on solid ground to attach it.") + to_chat(user, span_notice("The bomb must be placed on solid ground to attach it.")) else - to_chat(user, "You firmly wrench the bomb to the floor.") + to_chat(user, span_notice("You firmly wrench the bomb to the floor.")) I.play_tool_sound(src) setAnchored(TRUE) if(active) - to_chat(user, "The bolts lock in place.") + to_chat(user, span_notice("The bolts lock in place.")) else if(!active) - to_chat(user, "You wrench the bomb from the floor.") + to_chat(user, span_notice("You wrench the bomb from the floor.")) I.play_tool_sound(src) setAnchored(FALSE) else - to_chat(user, "The bolts are locked down!") + to_chat(user, span_warning("The bolts are locked down!")) else if(I.tool_behaviour == TOOL_SCREWDRIVER) open_panel = !open_panel update_icon() - to_chat(user, "You [open_panel ? "open" : "close"] the wire panel.") + to_chat(user, span_notice("You [open_panel ? "open" : "close"] the wire panel.")) else if(is_wire_tool(I) && open_panel) wires.interact(user) @@ -138,23 +138,23 @@ else if(I.tool_behaviour == TOOL_CROWBAR) if(open_panel && wires.is_all_cut()) if(payload) - to_chat(user, "You carefully pry out [payload].") + to_chat(user, span_notice("You carefully pry out [payload].")) payload.forceMove(drop_location()) payload = null else - to_chat(user, "There isn't anything in here to remove!") + to_chat(user, span_warning("There isn't anything in here to remove!")) else if (open_panel) - to_chat(user, "The wires connecting the shell to the explosives are holding it down!") + to_chat(user, span_warning("The wires connecting the shell to the explosives are holding it down!")) else - to_chat(user, "The cover is screwed on, it won't pry off!") + to_chat(user, span_warning("The cover is screwed on, it won't pry off!")) else if(istype(I, /obj/item/bombcore)) if(!payload) if(!user.transferItemToLoc(I, src)) return payload = I - to_chat(user, "You place [payload] into [src].") + to_chat(user, span_notice("You place [payload] into [src].")) else - to_chat(user, "[payload] is already loaded into [src]! You'll have to remove it first.") + to_chat(user, span_warning("[payload] is already loaded into [src]! You'll have to remove it first.")) else if(I.tool_behaviour == TOOL_WELDER) if(payload || !wires.is_all_cut() || !open_panel) return @@ -162,16 +162,16 @@ if(!I.tool_start_check(user, amount=5)) //uses up 5 fuel return - to_chat(user, "You start to cut [src] apart...") + to_chat(user, span_notice("You start to cut [src] apart...")) if(I.use_tool(src, user, 20, volume=50, amount=5)) //uses up 5 fuel - to_chat(user, "You cut [src] apart.") + to_chat(user, span_notice("You cut [src] apart.")) new /obj/item/stack/sheet/plasteel( loc, 5) qdel(src) else var/old_integ = obj_integrity . = ..() if((old_integ > obj_integrity) && active && (payload in src)) - to_chat(user, "That seems like a really bad idea...") + to_chat(user, span_warning("That seems like a really bad idea...")) /obj/machinery/syndicatebomb/interact(mob/user) wires.interact(user) @@ -179,7 +179,7 @@ if(!active) settings(user) else if(anchored) - to_chat(user, "The bomb is bolted to the floor!") + to_chat(user, span_warning("The bomb is bolted to the floor!")) /obj/machinery/syndicatebomb/proc/activate() active = TRUE @@ -194,10 +194,10 @@ var/new_timer = input(user, "Please set the timer.", "Timer", "[timer_set]") as num if(in_range(src, user) && isliving(user)) //No running off and setting bombs from across the station timer_set = clamp(new_timer, minimum_timer, maximum_timer) - loc.visible_message("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.") + loc.visible_message(span_notice("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.")) if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user)) if(!active) - visible_message("[icon2html(src, viewers(loc))] [timer_set] seconds until detonation, please clear the area.") + visible_message(span_danger("[icon2html(src, viewers(loc))] [timer_set] seconds until detonation, please clear the area.")) activate() update_icon() add_fingerprint(user) @@ -312,7 +312,7 @@ var/obj/machinery/syndicatebomb/holder = loc if(istype(holder)) attempts++ - holder.loc.visible_message("[icon2html(holder, viewers(holder))] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...") + holder.loc.visible_message(span_danger("[icon2html(holder, viewers(holder))] Alert: Bomb has detonated. Your score is now [defusals] for [attempts]. Resetting wires...")) reset() else qdel(src) @@ -322,7 +322,7 @@ if(istype(holder)) attempts++ defusals++ - holder.loc.visible_message("[icon2html(holder, viewers(holder))] Alert: Bomb has been defused. Your score is now [defusals] for [attempts]! Resetting wires in 5 seconds...") + holder.loc.visible_message(span_notice("[icon2html(holder, viewers(holder))] Alert: Bomb has been defused. Your score is now [defusals] for [attempts]! Resetting wires in 5 seconds...")) sleep(50) //Just in case someone is trying to remove the bomb core this gives them a little window to crowbar it out if(istype(holder)) reset() @@ -443,9 +443,9 @@ if(!user.transferItemToLoc(I, src)) return beakers += I - to_chat(user, "You load [src] with [I].") + to_chat(user, span_notice("You load [src] with [I].")) else - to_chat(user, "[I] won't fit! \The [src] can only hold up to [max_beakers] containers.") + to_chat(user, span_warning("[I] won't fit! \The [src] can only hold up to [max_beakers] containers.")) return ..() @@ -527,7 +527,7 @@ detonated++ existent++ playsound(user, 'sound/machines/click.ogg', 20, 1) - to_chat(user, "[existent] found, [detonated] triggered.") + to_chat(user, span_notice("[existent] found, [detonated] triggered.")) if(detonated) detonated-- log_bomber(user, "remotely detonated [detonated ? "syndicate bombs" : "a syndicate bomb"] using a", src) diff --git a/code/game/machinery/telecomms/computers/logbrowser.dm b/code/game/machinery/telecomms/computers/logbrowser.dm index feece3aabe87..94ebf9bbff2a 100644 --- a/code/game/machinery/telecomms/computers/logbrowser.dm +++ b/code/game/machinery/telecomms/computers/logbrowser.dm @@ -177,7 +177,7 @@ if(href_list["delete"]) if(!src.allowed(usr) && !(obj_flags & EMAGGED)) - to_chat(usr, "ACCESS DENIED.") + to_chat(usr, span_danger("ACCESS DENIED.")) return if(SelectedServer) diff --git a/code/game/machinery/telecomms/computers/message.dm b/code/game/machinery/telecomms/computers/message.dm index 41efb704def1..ba3673650cf4 100644 --- a/code/game/machinery/telecomms/computers/message.dm +++ b/code/game/machinery/telecomms/computers/message.dm @@ -22,14 +22,14 @@ //Sparks effect - For emag var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread //Messages - Saves me time if I want to change something. - var/noserver = "ALERT: No server detected." - var/incorrectkey = "ALERT: Incorrect decryption key!" - var/defaultmsg = "Welcome. Please select an option." - var/rebootmsg = "%$&(£: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!" + var/noserver = span_alert("ALERT: No server detected.") + var/incorrectkey = span_warning("ALERT: Incorrect decryption key!") + var/defaultmsg = span_notice("Welcome. Please select an option.") + var/rebootmsg = span_warning("%$&(£: Critical %$$@ Error // !RestArting! - ?pLeaSe wAit!") //Computer properties var/screen = MSG_MON_SCREEN_MAIN // 0 = Main menu, 1 = Message Logs, 2 = Hacked screen, 3 = Custom Message var/hacking = FALSE // Is it being hacked into by the AI/Cyborg - var/message = "System bootup complete. Please select an option." // The message that shows on the main menu. + var/message = span_notice("System bootup complete. Please select an option.") // The message that shows on the main menu. var/auth = FALSE // Are they authenticated? var/optioncount = 7 // Custom Message Properties @@ -43,7 +43,7 @@ /obj/machinery/computer/message_monitor/attackby(obj/item/O, mob/living/user, params) if(O.tool_behaviour == TOOL_SCREWDRIVER && (obj_flags & EMAGGED)) //Stops people from just unscrewing the monitor and putting it back to get the console working again. - to_chat(user, "It is too hot to mess with!") + to_chat(user, span_warning("It is too hot to mess with!")) else return ..() @@ -62,7 +62,7 @@ addtimer(CALLBACK(src, .proc/UnmagConsole), time) message = rebootmsg else - to_chat(user, "A no server error appears on the screen.") + to_chat(user, span_notice("A no server error appears on the screen.")) /obj/machinery/computer/message_monitor/New() ..() @@ -132,9 +132,9 @@ //Bottom message if(!auth) - dat += "

Please authenticate with the server in order to show additional options." + dat += "

[span_notice("Please authenticate with the server in order to show additional options.")]" else - dat += "

Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties." + dat += "

[span_warning("Reg, #514 forbids sending messages to a Head of Staff containing Erotic Rendering Properties.")]" //Message Logs if(MSG_MON_SCREEN_LOGS) @@ -243,10 +243,10 @@ /obj/machinery/computer/message_monitor/proc/BruteForce(mob/user) if(isnull(linkedServer)) - to_chat(user, "Could not complete brute-force: Linked Server Disconnected!") + to_chat(user, span_warning("Could not complete brute-force: Linked Server Disconnected!")) else var/currentKey = linkedServer.decryptkey - to_chat(user, "Brute-force completed! The key is '[currentKey]'.") + to_chat(user, span_warning("Brute-force completed! The key is '[currentKey]'.")) hacking = FALSE screen = MSG_MON_SCREEN_MAIN // Return the screen back to normal @@ -293,10 +293,10 @@ if(message_servers.len > 1) linkedServer = input(usr, "Please select a server.", "Select a server.", null) as null|anything in message_servers - message = "NOTICE: Server selected." + message = span_alert("NOTICE: Server selected.") else if(message_servers.len > 0) linkedServer = message_servers[1] - message = "NOTICE: Only Single Server Detected - Server selected." + message = span_notice("NOTICE: Only Single Server Detected - Server selected.") else message = noserver @@ -313,14 +313,14 @@ message = noserver else if(auth) linkedServer.pda_msgs = list() - message = "NOTICE: Logs cleared." + message = span_notice("NOTICE: Logs cleared.") //Clears the request console logs - KEY REQUIRED if (href_list["clear_requests"]) if(LINKED_SERVER_NONRESPONSIVE) message = noserver else if(auth) linkedServer.rc_msgs = list() - message = "NOTICE: Logs cleared." + message = span_notice("NOTICE: Logs cleared.") //Change the password - KEY REQUIRED if (href_list["pass"]) if(LINKED_SERVER_NONRESPONSIVE) @@ -331,12 +331,12 @@ if(linkedServer.decryptkey == dkey) var/newkey = stripped_input(usr,"Please enter the new key (3 - 16 characters max):") if(length(newkey) <= 3) - message = "NOTICE: Decryption key too short!" + message = span_notice("NOTICE: Decryption key too short!") else if(length(newkey) > 16) - message = "NOTICE: Decryption key too long!" + message = span_notice("NOTICE: Decryption key too long!") else if(newkey && newkey != "") linkedServer.decryptkey = newkey - message = "NOTICE: Decryption key set." + message = span_notice("NOTICE: Decryption key set.") else message = incorrectkey @@ -358,7 +358,7 @@ message = noserver else //if(istype(href_list["delete_logs"], /datum/data_pda_msg)) linkedServer.pda_msgs -= locate(href_list["delete_logs"]) in linkedServer.pda_msgs - message = "NOTICE: Log Deleted!" + message = span_notice("NOTICE: Log Deleted!") //Delete the request console log. if (href_list["delete_requests"]) //Are they on the view logs screen? @@ -367,7 +367,7 @@ message = noserver else //if(istype(href_list["delete_logs"], /datum/data_pda_msg)) linkedServer.rc_msgs -= locate(href_list["delete_requests"]) in linkedServer.rc_msgs - message = "NOTICE: Log Deleted!" + message = span_notice("NOTICE: Log Deleted!") //Create a custom message if (href_list["msg"]) if(LINKED_SERVER_NONRESPONSIVE) @@ -413,11 +413,11 @@ customsender = "UNKNOWN" if(isnull(customrecepient)) - message = "NOTICE: No recepient selected!" + message = span_notice("NOTICE: No recepient selected!") return attack_hand(usr) if(isnull(custommessage) || custommessage == "") - message = "NOTICE: No message entered!" + message = span_notice("NOTICE: No message entered!") return attack_hand(usr) var/datum/signal/subspace/messaging/pda/signal = new(src, list( diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm index 2048b2428b3e..6d959a6de2f9 100644 --- a/code/game/machinery/telecomms/machine_interactions.dm +++ b/code/game/machinery/telecomms/machine_interactions.dm @@ -101,7 +101,7 @@ if("id") if(params["value"]) if(length(params["value"]) > 32) - to_chat(operator, "Error: Machine ID too long!") + to_chat(operator, span_warning("Error: Machine ID too long!")) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE) return else @@ -111,7 +111,7 @@ if("network") if(params["value"]) if(length(params["value"]) > 15) - to_chat(operator, "Error: Network name too long!") + to_chat(operator, span_warning("Error: Network name too long!")) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE) return else @@ -127,7 +127,7 @@ if("freq") var/newfreq = tempfreq if(newfreq == FREQ_SYNDICATE) - to_chat(operator, "Error: Interference preventing filtering frequency: \"[newfreq] GHz\"") + to_chat(operator, span_warning("Error: Interference preventing filtering frequency: \"[newfreq] GHz\"")) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, TRUE) else if(!(newfreq in freq_listening) && newfreq < 10000) diff --git a/code/game/machinery/telecomms/machines/message_server.dm b/code/game/machinery/telecomms/machines/message_server.dm index 0db00f29b737..1723b9d2a963 100644 --- a/code/game/machinery/telecomms/machines/message_server.dm +++ b/code/game/machinery/telecomms/machines/message_server.dm @@ -26,21 +26,21 @@ if(stored) user.put_in_hands(stored) stored = null - to_chat(user, "You remove the blackbox from [src]. The tapes stop spinning.") + to_chat(user, span_notice("You remove the blackbox from [src]. The tapes stop spinning.")) update_icon() return else - to_chat(user, "It seems that the blackbox is missing...") + to_chat(user, span_warning("It seems that the blackbox is missing...")) return /obj/machinery/blackbox_recorder/attackby(obj/item/I, mob/living/user, params) . = ..() if(istype(I, /obj/item/blackbox)) if(HAS_TRAIT(I, TRAIT_NODROP) || !user.transferItemToLoc(I, src)) - to_chat(user, "[I] is stuck to your hand!") + to_chat(user, span_warning("[I] is stuck to your hand!")) return - user.visible_message("[user] clicks [I] into [src]!", \ - "You press the device into [src], and it clicks into place. The tapes begin spinning again.") + user.visible_message(span_notice("[user] clicks [I] into [src]!"), \ + span_notice("You press the device into [src], and it clicks into place. The tapes begin spinning again.")) playsound(src, 'sound/machines/click.ogg', 50, TRUE) stored = I update_icon() @@ -109,7 +109,7 @@ /obj/machinery/telecomms/message_server/examine(mob/user) . = ..() if(calibrating) - . += "It's still calibrating." + . += span_warning("It's still calibrating.") /obj/machinery/telecomms/message_server/proc/GenerateKey() var/newKey diff --git a/code/game/machinery/telecomms/telecomunications.dm b/code/game/machinery/telecomms/telecomunications.dm index ae227a1a8354..26ef12cd4caf 100644 --- a/code/game/machinery/telecomms/telecomunications.dm +++ b/code/game/machinery/telecomms/telecomunications.dm @@ -196,5 +196,5 @@ GLOBAL_LIST_EMPTY(telecomms_list) /obj/machinery/telecomms/emag_act() obj_flags |= EMAGGED - visible_message("Sparks fly out of the [src]!") + visible_message(span_notice("Sparks fly out of the [src]!")) traffic += 50 diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm index 3b8e0144bc81..ffd2b23768f6 100644 --- a/code/game/machinery/teleporter.dm +++ b/code/game/machinery/teleporter.dm @@ -70,7 +70,7 @@ return if (QDELETED(com.target)) com.target = null - visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.") + visible_message(span_alert("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.")) return if (ismovable(M)) if(do_teleport(M, com.target, channel = TELEPORT_CHANNEL_BLUESPACE)) @@ -80,7 +80,7 @@ if(ishuman(M))//don't remove people from the round randomly you jerks var/mob/living/carbon/human/human = M if(human.dna && human.dna.species.id == "human") - to_chat(M, "You hear a buzzing in your ears.") + to_chat(M, span_italics("You hear a buzzing in your ears.")) human.set_species(/datum/species/fly) human.apply_effect((rand(120 - accuracy * 40, 180 - accuracy * 60)), EFFECT_IRRADIATE, 0) @@ -131,9 +131,9 @@ /obj/machinery/teleport/station/examine(mob/user) . = ..() if(!panel_open) - . += "The panel is screwed in, obstructing the linking device and wiring panel." + . += span_notice("The panel is screwed in, obstructing the linking device and wiring panel.") else - . += "The linking device is now able to be scanned with a multitool.
The wiring can be connected to a nearby console and hub with a pair of wirecutters.
" + . += span_notice("The linking device is now able to be scanned with a multitool.
The wiring can be connected to a nearby console and hub with a pair of wirecutters.") if(in_range(user, src) || isobserver(user)) . += "The status display reads: This station can be linked to [efficiency] other station(s)." @@ -168,15 +168,15 @@ var/obj/item/multitool/M = W if(panel_open) M.buffer = src - to_chat(user, "You download the data to the [W.name]'s buffer.") + to_chat(user, span_caution("You download the data to the [W.name]'s buffer.")) else if(M.buffer && istype(M.buffer, /obj/machinery/teleport/station) && M.buffer != src) if(linked_stations.len < efficiency) linked_stations.Add(M.buffer) M.buffer = null - to_chat(user, "You upload the data from the [W.name]'s buffer.") + to_chat(user, span_caution("You upload the data from the [W.name]'s buffer.")) else - to_chat(user, "This station can't hold more information, try to use better parts.") + to_chat(user, span_alert("This station can't hold more information, try to use better parts.")) return else if(default_deconstruction_screwdriver(user, "controller-o", "controller", W)) update_icon() @@ -188,7 +188,7 @@ else if(W.tool_behaviour == TOOL_WIRECUTTER) if(panel_open) link_console_and_hub() - to_chat(user, "You reconnect the station to nearby machinery.") + to_chat(user, span_caution("You reconnect the station to nearby machinery.")) return else return ..() @@ -201,13 +201,13 @@ return if (teleporter_console.target) if(teleporter_hub.panel_open || teleporter_hub.stat & (BROKEN|NOPOWER)) - to_chat(user, "The teleporter hub isn't responding.") + to_chat(user, span_alert("The teleporter hub isn't responding.")) else engaged = !engaged use_power(5000) - to_chat(user, "Teleporter [engaged ? "" : "dis"]engaged!") + to_chat(user, span_notice("Teleporter [engaged ? "" : "dis"]engaged!")) else - to_chat(user, "No target detected.") + to_chat(user, span_alert("No target detected.")) engaged = FALSE teleporter_hub.update_icon() add_fingerprint(user) diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm index 20ec0d437b1e..ef35c679d10c 100644 --- a/code/game/machinery/washing_machine.dm +++ b/code/game/machinery/washing_machine.dm @@ -12,7 +12,7 @@ /obj/machinery/washing_machine/examine(mob/user) . = ..() - . += "Alt-click it to start a wash cycle." + . += span_notice("Alt-click it to start a wash cycle.") /obj/machinery/washing_machine/AltClick(mob/user) if(!user.canUseTopic(src, !issilicon(user))) @@ -22,11 +22,11 @@ return if(state_open) - to_chat(user, "Close the door first") + to_chat(user, span_notice("Close the door first")) return if(bloody_mess) - to_chat(user, "[src] must be cleaned up first.") + to_chat(user, span_warning("[src] must be cleaned up first.")) return busy = TRUE @@ -248,19 +248,19 @@ else if(user.a_intent != INTENT_HARM) if (!state_open) - to_chat(user, "Open the door first!") + to_chat(user, span_warning("Open the door first!")) return 1 if(bloody_mess) - to_chat(user, "[src] must be cleaned up first.") + to_chat(user, span_warning("[src] must be cleaned up first.")) return 1 if(contents.len >= max_wash_capacity) - to_chat(user, "The washing machine is full!") + to_chat(user, span_warning("The washing machine is full!")) return 1 if(!user.transferItemToLoc(W, src)) - to_chat(user, "\The [W] is stuck to your hand, you cannot put it in the washing machine!") + to_chat(user, span_warning("\The [W] is stuck to your hand, you cannot put it in the washing machine!")) return 1 if(istype(W, /obj/item/toy/crayon) || istype(W, /obj/item/stamp) || istype(W, /obj/item/reagent_containers/food/snacks/grown/rainbow_flower) || istype(W, /obj/item/stack/ore/bluespace_crystal)) @@ -275,7 +275,7 @@ if(.) return if(busy) - to_chat(user, "[src] is busy.") + to_chat(user, span_warning("[src] is busy.")) return if(user.pulling && user.a_intent == INTENT_GRAB && isliving(user.pulling)) diff --git a/code/game/mecha/equipment/mecha_equipment.dm b/code/game/mecha/equipment/mecha_equipment.dm index 9559c9e9da69..b7449b69d779 100644 --- a/code/game/mecha/equipment/mecha_equipment.dm +++ b/code/game/mecha/equipment/mecha_equipment.dm @@ -40,7 +40,7 @@ src.update_chassis_page() log_message("[src] is destroyed.", LOG_MECHA) if(chassis.occupant) - chassis.occupant_message("[src] is destroyed!") + chassis.occupant_message(span_danger("[src] is destroyed!")) chassis.occupant.playsound_local(chassis, destroy_sound, 50) chassis = null return ..() @@ -50,9 +50,9 @@ if(!user.temporarilyRemoveItemFromInventory(src)) return FALSE attach(M) - user.visible_message("[user] attaches [src] to [M].", "You attach [src] to [M].") + user.visible_message("[user] attaches [src] to [M].", span_notice("You attach [src] to [M].")) return TRUE - to_chat(user, "You are unable to attach [src] to [M]!") + to_chat(user, span_warning("You are unable to attach [src] to [M]!")) return FALSE /obj/item/mecha_parts/mecha_equipment/proc/get_equip_info() diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm index 02f2b51c9b79..15ba85f5b76b 100644 --- a/code/game/mecha/equipment/tools/medical_tools.dm +++ b/code/game/mecha/equipment/tools/medical_tools.dm @@ -55,8 +55,8 @@ return if(!patient_insertion_check(target)) return - occupant_message("You start putting [target] into [src]...") - chassis.visible_message("[chassis] starts putting [target] into \the [src].") + occupant_message(span_notice("You start putting [target] into [src]...")) + chassis.visible_message(span_warning("[chassis] starts putting [target] into \the [src].")) if(do_after_cooldown(target)) if(!patient_insertion_check(target)) return @@ -64,19 +64,19 @@ patient = target START_PROCESSING(SSobj, src) update_equip_info() - occupant_message("[target] successfully loaded into [src]. Life support functions engaged.") - chassis.visible_message("[chassis] loads [target] into [src].") + occupant_message(span_notice("[target] successfully loaded into [src]. Life support functions engaged.")) + chassis.visible_message(span_warning("[chassis] loads [target] into [src].")) log_message("[target] loaded. Life support functions engaged.", LOG_MECHA) /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/patient_insertion_check(mob/living/carbon/target) if(target.buckled) - occupant_message("[target] will not fit into the sleeper because [target.p_theyre()] buckled to [target.buckled]!") + occupant_message(span_warning("[target] will not fit into the sleeper because [target.p_theyre()] buckled to [target.buckled]!")) return if(target.has_buckled_mobs()) - occupant_message("[target] will not fit into the sleeper because of the creatures attached to it!") + occupant_message(span_warning("[target] will not fit into the sleeper because of the creatures attached to it!")) return if(patient) - occupant_message("The sleeper is already occupied!") + occupant_message(span_warning("The sleeper is already occupied!")) return return 1 @@ -92,7 +92,7 @@ /obj/item/mecha_parts/mecha_equipment/medical/sleeper/detach() if(patient) - occupant_message("Unable to detach [src] - equipment occupied!") + occupant_message(span_warning("Unable to detach [src] - equipment occupied!")) return STOP_PROCESSING(SSobj, src) return ..() @@ -168,9 +168,9 @@ Respiratory Damage: [patient.getOxyLoss()]%
Toxin Content: [patient.getToxLoss()]%
Burn Severity: [patient.getFireLoss()]%
- [patient.getCloneLoss() ? "Subject appears to have cellular damage." : ""]
- [patient.getOrganLoss(ORGAN_SLOT_BRAIN) ? "Significant brain damage detected." : ""]
- [length(patient.get_traumas()) ? "Brain Traumas detected." : ""]
+ [span_danger("[patient.getCloneLoss() ? "Subject appears to have cellular damage." : ""]")]
+ [span_danger("[patient.getOrganLoss(ORGAN_SLOT_BRAIN) ? "Significant brain damage detected." : ""]")]
+ [span_danger("[length(patient.get_traumas()) ? "Brain Traumas detected." : ""]")]
"} /obj/item/mecha_parts/mecha_equipment/medical/sleeper/proc/get_patient_reagents() @@ -299,10 +299,10 @@ if(mode) return analyze_reagents(target) if(!syringes.len) - occupant_message("No syringes loaded.") + occupant_message(span_alert("No syringes loaded.")) return if(reagents.total_volume<=0) - occupant_message("No available reagents to load syringe with.") + occupant_message(span_alert("No available reagents to load syringe with.")) return var/turf/trg = get_turf(target) var/obj/item/reagent_containers/syringe/mechsyringe = syringes[1] @@ -326,7 +326,7 @@ var/mob/living/carbon/M = safepick(mobs) if(M) var/R - mechsyringe.visible_message(" [M] was hit by the syringe!") + mechsyringe.visible_message(span_attack(" [M] was hit by the syringe!")) if(M.can_inject(null, 1)) if(mechsyringe.reagents) for(var/datum/reagent/A in mechsyringe.reagents.reagent_list) @@ -476,7 +476,7 @@ occupant_message("The object is too far away.") return 0 if(!A.reagents || ismob(A)) - occupant_message("No reagent info gained from [A].") + occupant_message(span_alert("No reagent info gained from [A].")) return 0 occupant_message("Analyzing reagents...") for(var/datum/reagent/R in A.reagents.reagent_list) diff --git a/code/game/mecha/equipment/tools/mining_tools.dm b/code/game/mecha/equipment/tools/mining_tools.dm index bae8f5046cfb..df17aace31fa 100644 --- a/code/game/mecha/equipment/tools/mining_tools.dm +++ b/code/game/mecha/equipment/tools/mining_tools.dm @@ -29,9 +29,9 @@ var/obj/target_obj = target if(target_obj.resistance_flags & UNACIDABLE) return - target.visible_message("[chassis] starts to drill [target].", \ - "[chassis] starts to drill [target]...", \ - "You hear drilling.") + target.visible_message(span_warning("[chassis] starts to drill [target]."), \ + span_userdanger("[chassis] starts to drill [target]..."), \ + span_italics("You hear drilling.")) if(do_after_cooldown(target)) set_ready_state(FALSE) @@ -68,7 +68,7 @@ drill.log_message("Drilled through [src]", LOG_MECHA) dismantle_wall(TRUE, FALSE) else - drill.occupant_message("[src] is too durable to drill through.") + drill.occupant_message(span_danger("[src] is too durable to drill through.")) /turf/closed/mineral/drill_act(obj/item/mecha_parts/mecha_equipment/drill/drill) for(var/turf/closed/mineral/M in range(drill.chassis,1)) @@ -107,8 +107,8 @@ butchering.butchering_enabled = FALSE /obj/item/mecha_parts/mecha_equipment/drill/proc/drill_mob(mob/living/target, mob/user) - target.visible_message("[chassis] is drilling [target] with [src]!", \ - "[chassis] is drilling you with [src]!") + target.visible_message(span_danger("[chassis] is drilling [target] with [src]!"), \ + span_userdanger("[chassis] is drilling you with [src]!")) log_combat(user, target, "drilled", "[name]", "(INTENT: [uppertext(user.a_intent)]) (DAMTYPE: [uppertext(damtype)])") if(target.stat == DEAD && target.getBruteLoss() >= 200) log_combat(user, target, "gibbed", name) diff --git a/code/game/mecha/equipment/tools/other_tools.dm b/code/game/mecha/equipment/tools/other_tools.dm index 60c8627d4480..401b4e54acd0 100644 --- a/code/game/mecha/equipment/tools/other_tools.dm +++ b/code/game/mecha/equipment/tools/other_tools.dm @@ -422,7 +422,7 @@ occupant_message("Unit is full.") return 0 else - occupant_message("[fuel] traces in target minimal! [P] cannot be used as fuel.") + occupant_message(span_warning("[fuel] traces in target minimal! [P] cannot be used as fuel.")) return /obj/item/mecha_parts/mecha_equipment/generator/attackby(weapon,mob/user, params) diff --git a/code/game/mecha/equipment/tools/weapon_bay.dm b/code/game/mecha/equipment/tools/weapon_bay.dm index 1b3db529cc5a..e1d1e1034966 100644 --- a/code/game/mecha/equipment/tools/weapon_bay.dm +++ b/code/game/mecha/equipment/tools/weapon_bay.dm @@ -6,9 +6,9 @@ /obj/item/mecha_parts/concealed_weapon_bay/try_attach_part(mob/user, obj/mecha/M) if(istype(M, /obj/mecha/combat)) - to_chat(user, "[M] can already hold weapons!") + to_chat(user, span_warning("[M] can already hold weapons!")) return if(locate(/obj/item/mecha_parts/concealed_weapon_bay) in M.contents) - to_chat(user, "[M] already has a concealed weapon bay!") + to_chat(user, span_warning("[M] already has a concealed weapon bay!")) return ..() \ No newline at end of file diff --git a/code/game/mecha/equipment/tools/work_tools.dm b/code/game/mecha/equipment/tools/work_tools.dm index 244bd50158df..2f43ffd01e74 100644 --- a/code/game/mecha/equipment/tools/work_tools.dm +++ b/code/game/mecha/equipment/tools/work_tools.dm @@ -63,14 +63,14 @@ cargo_holder.cargo += O O.forceMove(chassis) O.anchored = FALSE - occupant_message("[target] successfully loaded.") + occupant_message(span_notice("[target] successfully loaded.")) log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]", LOG_MECHA) else O.anchored = initial(O.anchored) else - occupant_message("Not enough room in cargo compartment!") + occupant_message(span_warning("Not enough room in cargo compartment!")) else - occupant_message("[target] is firmly secured!") + occupant_message(span_warning("[target] is firmly secured!")) else if(isliving(target)) var/mob/living/M = target @@ -82,9 +82,9 @@ return M.adjustOxyLoss(round(dam_force/2)) M.updatehealth() - target.visible_message("[chassis] squeezes [target].", \ - "[chassis] squeezes [target].",\ - "You hear something crack.") + target.visible_message(span_danger("[chassis] squeezes [target]."), \ + span_userdanger("[chassis] squeezes [target]."),\ + span_italics("You hear something crack.")) log_combat(chassis.occupant, M, "attacked", "[name]", "(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") else step_away(M,chassis) @@ -123,14 +123,14 @@ cargo_holder.cargo += O O.forceMove(chassis) O.anchored = FALSE - occupant_message("[target] successfully loaded.") + occupant_message(span_notice("[target] successfully loaded.")) log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]", LOG_MECHA) else O.anchored = initial(O.anchored) else - occupant_message("Not enough room in cargo compartment!") + occupant_message(span_warning("Not enough room in cargo compartment!")) else - occupant_message("[target] is firmly secured!") + occupant_message(span_warning("[target] is firmly secured!")) else if(isliving(target)) var/mob/living/M = target @@ -143,12 +143,12 @@ return M.adjustOxyLoss(round(dam_force/2)) M.updatehealth() - target.visible_message("[chassis] destroys [target] in an unholy fury.", \ - "[chassis] destroys [target] in an unholy fury.") + target.visible_message(span_danger("[chassis] destroys [target] in an unholy fury."), \ + span_userdanger("[chassis] destroys [target] in an unholy fury.")) log_combat(chassis.occupant, M, "attacked", "[name]", "(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") else - target.visible_message("[chassis] destroys [target] in an unholy fury.", \ - "[chassis] destroys [target] in an unholy fury.") + target.visible_message(span_danger("[chassis] destroys [target] in an unholy fury."), \ + span_userdanger("[chassis] destroys [target] in an unholy fury.")) else if(chassis.occupant.a_intent == INTENT_DISARM) if(real_clamp) var/mob/living/carbon/C = target @@ -166,12 +166,12 @@ limbs_gone = "[limbs_gone], [affected]" if(play_sound) playsound(src, get_dismember_sound(), 80, TRUE) - target.visible_message("[chassis] rips [target]'s arms off.", \ - "[chassis] rips [target]'s arms off.") + target.visible_message(span_danger("[chassis] rips [target]'s arms off."), \ + span_userdanger("[chassis] rips [target]'s arms off.")) log_combat(chassis.occupant, M, "dismembered of[limbs_gone],", "[name]", "(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])") else - target.visible_message("[chassis] rips [target]'s arms off.", \ - "[chassis] rips [target]'s arms off.") + target.visible_message(span_danger("[chassis] rips [target]'s arms off."), \ + span_userdanger("[chassis] rips [target]'s arms off.")) else step_away(M,chassis) target.visible_message("[chassis] tosses [target] like a piece of paper.") @@ -199,7 +199,7 @@ if(istype(target, /obj/structure/reagent_dispensers/watertank) && get_dist(chassis,target) <= 1) var/obj/structure/reagent_dispensers/watertank/WT = target WT.reagents.trans_to(src, 1000) - occupant_message("Extinguisher refilled.") + occupant_message(span_notice("Extinguisher refilled.")) playsound(chassis, 'sound/effects/refill.ogg', 50, 1, -6) else if(reagents.total_volume > 0) @@ -394,12 +394,12 @@ cable = new(src, 0) cable.amount += to_load target.use(to_load) - occupant_message("[to_load] meters of cable successfully loaded.") + occupant_message(span_notice("[to_load] meters of cable successfully loaded.")) send_byjax(chassis.occupant,"exosuit.browser","[REF(src)]",src.get_equip_info()) else - occupant_message("Reel is full.") + occupant_message(span_warning("Reel is full.")) else - occupant_message("Unable to load [target] - no cable found.") + occupant_message(span_warning("Unable to load [target] - no cable found.")) /obj/item/mecha_parts/mecha_equipment/cable_layer/Topic(href,href_list) @@ -491,16 +491,16 @@ /obj/item/mecha_parts/mecha_equipment/ripleyupgrade/can_attach(obj/mecha/working/ripley/M) if(M.type != /obj/mecha/working/ripley) - to_chat(loc, "This conversion kit can only be applied to APLU MK-I models.") + to_chat(loc, span_warning("This conversion kit can only be applied to APLU MK-I models.")) return FALSE if(M.cargo.len) - to_chat(loc, "[M]'s cargo hold must be empty before this conversion kit can be applied.") + to_chat(loc, span_warning("[M]'s cargo hold must be empty before this conversion kit can be applied.")) return FALSE if(!M.maint_access) //non-removable upgrade, so lets make sure the pilot or owner has their say. - to_chat(loc, "[M] must have maintenance protocols active in order to allow this conversion kit.") + to_chat(loc, span_warning("[M] must have maintenance protocols active in order to allow this conversion kit.")) return FALSE if(M.occupant) //We're actualy making a new mech and swapping things over, it might get weird if players are involved - to_chat(loc, "[M] must be unoccupied before this conversion kit can be applied.") + to_chat(loc, span_warning("[M] must be unoccupied before this conversion kit can be applied.")) return FALSE return TRUE diff --git a/code/game/mecha/equipment/weapons/mecha_ammo.dm b/code/game/mecha/equipment/weapons/mecha_ammo.dm index 6e151b800eeb..27508b8366dc 100644 --- a/code/game/mecha/equipment/weapons/mecha_ammo.dm +++ b/code/game/mecha/equipment/weapons/mecha_ammo.dm @@ -21,10 +21,10 @@ /obj/item/mecha_ammo/attack_self(mob/user) ..() if(rounds) - to_chat(user, "You cannot flatten the ammo box until it's empty!") + to_chat(user, span_warning("You cannot flatten the ammo box until it's empty!")) return - to_chat(user, "You fold [src] flat.") + to_chat(user, span_notice("You fold [src] flat.")) var/I = new /obj/item/stack/sheet/metal(user.loc) qdel(src) user.put_in_hands(I) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index 67e6d565e7c9..cddd27e003be 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -99,7 +99,7 @@ /obj/machinery/mecha_part_fabricator/examine(mob/user) . = ..() if(in_range(user, src) || isobserver(user)) - . += "The status display reads: Storing up to [rmat.local_size] material units.
Material consumption at [component_coeff*100]%.
Build time reduced by [100-time_coeff*100]%.
" + . += span_notice("The status display reads: Storing up to [rmat.local_size] material units.
Material consumption at [component_coeff*100]%.
Build time reduced by [100-time_coeff*100]%.") /** * Generates an info list for a given part. @@ -623,7 +623,7 @@ if(..()) return TRUE if(being_built) - to_chat(user, "\The [src] is currently processing! Please wait until completion.") + to_chat(user, span_warning("\The [src] is currently processing! Please wait until completion.")) return FALSE return default_deconstruction_screwdriver(user, "fab-o", "fab-idle", I) @@ -631,16 +631,16 @@ if(..()) return TRUE if(being_built) - to_chat(user, "\The [src] is currently processing! Please wait until completion.") + to_chat(user, span_warning("\The [src] is currently processing! Please wait until completion.")) return FALSE return default_deconstruction_crowbar(I) /obj/machinery/mecha_part_fabricator/proc/is_insertion_ready(mob/user) if(panel_open) - to_chat(user, "You can't load [src] while it's opened!") + to_chat(user, span_warning("You can't load [src] while it's opened!")) return FALSE if(being_built) - to_chat(user, "\The [src] is currently processing! Please wait until completion.") + to_chat(user, span_warning("\The [src] is currently processing! Please wait until completion.")) return FALSE return TRUE diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm index e27b8780bc66..e6264eeb35e9 100644 --- a/code/game/mecha/mecha.dm +++ b/code/game/mecha/mecha.dm @@ -328,7 +328,7 @@ var/mob/living/carbon/human/H = user for(var/O in H.held_items) if(istype(O, /obj/item/gun)) - . += "It looks like you can hit the pilot directly if you target the center or above." + . += span_warning("It looks like you can hit the pilot directly if you target the center or above.") break //in case user is holding two guns //processing internal damage, temperature, air regulation, alert updates, lights power use. @@ -445,7 +445,7 @@ use_power(lights_energy_drain) if(!enclosed && occupant?.incapacitated()) //no sides mean it's easy to just sorta fall out if you're incapacitated. - visible_message("[occupant] tumbles out of the cockpit!") + visible_message(span_warning("[occupant] tumbles out of the cockpit!")) go_out() //Maybe we should install seat belts? //Diagnostic HUD updates @@ -495,7 +495,7 @@ if(user.incapacitated()) return if(state) - occupant_message("Maintenance protocols in effect.") + occupant_message(span_warning("Maintenance protocols in effect.")) return if(!get_charge()) return @@ -513,13 +513,13 @@ if(!Adjacent(target)) if(selected && selected.is_ranged()) if(HAS_TRAIT(L, TRAIT_PACIFISM) && selected.harmful) - to_chat(user, "You don't want to harm other living beings!") + to_chat(user, span_warning("You don't want to harm other living beings!")) return if(selected.action(target,params)) selected.start_cooldown() else if(selected && selected.is_melee()) if(isliving(target) && selected.harmful && HAS_TRAIT(L, TRAIT_PACIFISM)) - to_chat(user, "You don't want to harm other living beings!") + to_chat(user, span_warning("You don't want to harm other living beings!")) return if(selected.action(target,params)) selected.start_cooldown() @@ -549,7 +549,7 @@ if(.) events.fireEvent("onMove",get_turf(src)) if (internal_tank?.disconnect()) // Something moved us and broke connection - occupant_message("Air port connection teared off!") + occupant_message(span_warning("Air port connection teared off!")) log_message("Lost connection to gas port.", LOG_MECHA) /obj/mecha/Process_Spacemove(var/movement_dir = 0) @@ -564,7 +564,7 @@ if(istype(backup) && movement_dir && !backup.anchored) if(backup.newtonian_move(turn(movement_dir, 180))) if(occupant) - to_chat(occupant, "You push off of [backup] to propel yourself.") + to_chat(occupant, span_info("You push off of [backup] to propel yourself.")) return TRUE /obj/mecha/relaymove(mob/user,direction) @@ -574,16 +574,16 @@ return if(user != occupant) //While not "realistic", this piece is player friendly. user.forceMove(get_turf(src)) - to_chat(user, "You climb out from [src].") + to_chat(user, span_notice("You climb out from [src].")) return FALSE if(internal_tank?.connected_port) if(world.time - last_message > 20) - occupant_message("Unable to move while connected to the air system port!") + occupant_message(span_warning("Unable to move while connected to the air system port!")) last_message = world.time return FALSE if(state) if(world.time - last_message > 20) - occupant_message("Maintenance protocols in effect.") + occupant_message(span_danger("Maintenance protocols in effect.")) last_message = world.time return return domove(direction) @@ -597,7 +597,7 @@ return FALSE if(defence_mode) if(world.time - last_message > 20) - occupant_message("Unable to move while in defence mode") + occupant_message(span_danger("Unable to move while in defence mode")) last_message = world.time return FALSE if(zoom_mode) @@ -607,12 +607,12 @@ return FALSE if(!cell) if(world.time - last_message > 20) - occupant_message("Missing power cell.") + occupant_message(span_warning("Missing power cell.")) last_message = world.time return FALSE if(!scanmod || !capacitor) if(world.time - last_message > 20) - occupant_message("Missing [scanmod? "capacitor" : "scanning module"].") + occupant_message(span_warning("Missing [scanmod? "capacitor" : "scanning module"].")) last_message = world.time return FALSE @@ -658,7 +658,7 @@ /obj/mecha/Bump(var/atom/obstacle) var/turf/newloc = get_step(src,dir) if(newloc.flags_1 & NOJAUNT_1) - to_chat(occupant, "Some strange aura is blocking the way.") + to_chat(occupant, span_warning("Some strange aura is blocking the way.")) return if(phasing && get_charge() >= phasing_energy_drain && !throwing) spawn() @@ -726,11 +726,11 @@ if(internal_damage & int_dam_flag) switch(int_dam_flag) if(MECHA_INT_TEMP_CONTROL) - occupant_message("Life support system reactivated.") + occupant_message(span_boldnotice("Life support system reactivated.")) if(MECHA_INT_FIRE) - occupant_message("Internal fire extinquished.") + occupant_message(span_boldnotice("Internal fire extinquished.")) if(MECHA_INT_TANK_BREACH) - occupant_message("Damaged internal tank has been sealed.") + occupant_message(span_boldnotice("Damaged internal tank has been sealed.")) internal_damage &= ~int_dam_flag diag_hud_set_mechstat() @@ -745,25 +745,25 @@ if(user.can_dominate_mechs) examine(user) //Get diagnostic information! for(var/obj/item/mecha_parts/mecha_tracking/B in trackers) - to_chat(user, "Warning: Tracking Beacon detected. Enter at your own risk. Beacon Data:") + to_chat(user, span_danger("Warning: Tracking Beacon detected. Enter at your own risk. Beacon Data:")) to_chat(user, "[B.get_mecha_info()]") break //Nothing like a big, red link to make the player feel powerful! - to_chat(user, "ASSUME DIRECT CONTROL?
") + to_chat(user, "[span_userdanger("ASSUME DIRECT CONTROL?")]
") else examine(user) if(occupant) - to_chat(user, "This exosuit has a pilot and cannot be controlled.") + to_chat(user, span_warning("This exosuit has a pilot and cannot be controlled.")) return var/can_control_mech = FALSE for(var/obj/item/mecha_parts/mecha_tracking/ai_control/A in trackers) can_control_mech = TRUE - to_chat(user, "[icon2html(src, user)] Status of [name]:\n[A.get_mecha_info()]") + to_chat(user, "[span_notice("[icon2html(src, user)] Status of [name]:")]\n[A.get_mecha_info()]") break if(!can_control_mech) - to_chat(user, "You cannot control exosuits without AI control beacons installed.") + to_chat(user, span_warning("You cannot control exosuits without AI control beacons installed.")) return - to_chat(user, "Take control of exosuit?
") + to_chat(user, "[span_boldnotice("Take control of exosuit?")]
") /obj/mecha/transfer_ai(interaction, mob/user, mob/living/silicon/ai/AI, obj/item/aicard/card) if(!..()) @@ -773,11 +773,11 @@ switch(interaction) if(AI_TRANS_TO_CARD) //Upload AI from mech to AI card. if(!state) //Mech must be in maint mode to allow carding. - to_chat(user, "[name] must have maintenance protocols active in order to allow a transfer.") + to_chat(user, span_warning("[name] must have maintenance protocols active in order to allow a transfer.")) return AI = occupant if(!AI || !isAI(occupant)) //Mech does not have an AI for a pilot - to_chat(user, "No AI detected in the [name] onboard computer.") + to_chat(user, span_warning("No AI detected in the [name] onboard computer.")) return AI.ai_restore_power()//So the AI initially has power. AI.control_disabled = TRUE @@ -792,33 +792,33 @@ AI.remote_control = null icon_state = initial(icon_state)+"-open" to_chat(AI, "You have been downloaded to a mobile storage device. Wireless connection offline.") - to_chat(user, "Transfer successful: [AI.name] ([rand(1000,9999)].exe) removed from [name] and stored within local memory.") + to_chat(user, "[span_boldnotice("Transfer successful")]: [AI.name] ([rand(1000,9999)].exe) removed from [name] and stored within local memory.") if(AI_MECH_HACK) //Called by AIs on the mech AI.linked_core = new /obj/structure/AIcore/deactivated(AI.loc) if(AI.can_dominate_mechs) if(occupant) //Oh, I am sorry, were you using that? - to_chat(AI, "Pilot detected! Forced ejection initiated!") - to_chat(occupant, "You have been forcibly ejected!") + to_chat(AI, span_warning("Pilot detected! Forced ejection initiated!")) + to_chat(occupant, span_danger("You have been forcibly ejected!")) go_out(1) //IT IS MINE, NOW. SUCK IT, RD! ai_enter_mech(AI, interaction) if(AI_TRANS_FROM_CARD) //Using an AI card to upload to a mech. AI = card.AI if(!AI) - to_chat(user, "There is no AI currently installed on this device.") + to_chat(user, span_warning("There is no AI currently installed on this device.")) return if(AI.deployed_shell) //Recall AI if shelled so it can be checked for a client AI.disconnect_shell() if(AI.stat || !AI.client) - to_chat(user, "[AI.name] is currently unresponsive, and cannot be uploaded.") + to_chat(user, span_warning("[AI.name] is currently unresponsive, and cannot be uploaded.")) return if(occupant || dna_lock) //Normal AIs cannot steal mechs! - to_chat(user, "Access denied. [name] is [occupant ? "currently occupied" : "secured with a DNA lock"].") + to_chat(user, span_warning("Access denied. [name] is [occupant ? "currently occupied" : "secured with a DNA lock"].")) return AI.control_disabled = FALSE AI.radio_enabled = TRUE - to_chat(user, "Transfer successful: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.") + to_chat(user, "[span_boldnotice("Transfer successful")]: [AI.name] ([rand(1000,9999)].exe) installed and executed successfully. Local copy has been removed.") card.AI = null ai_enter_mech(AI, interaction) @@ -838,8 +838,8 @@ AI.remote_control = src AI.mobility_flags = ALL //Much easier than adding AI checks! Be sure to set this back to 0 if you decide to allow an AI to leave a mech somehow. AI.can_shunt = FALSE //ONE AI ENTERS. NO AI LEAVES. - to_chat(AI, AI.can_dominate_mechs ? "Takeover of [name] complete! You are now loaded onto the onboard computer. Do not attempt to leave the station sector!" :\ - "You have been uploaded to a mech's onboard computer.") + to_chat(AI, AI.can_dominate_mechs ? span_announce("Takeover of [name] complete! You are now loaded onto the onboard computer. Do not attempt to leave the station sector!") :\ + span_notice("You have been uploaded to a mech's onboard computer.")) to_chat(AI, "Use Middle-Mouse to activate mech functions and equipment. Click normally for AI interactions.") if(interaction == AI_TRANS_FROM_CARD) GrantActions(AI, FALSE) //No eject/return to core action for AI uploaded by card @@ -901,7 +901,7 @@ return log_message("[user] tries to move in.", LOG_MECHA) if (occupant) - to_chat(usr, "The [name] is already occupied!") + to_chat(usr, span_warning("The [name] is already occupied!")) log_message("Permission denied (Occupied).", LOG_MECHA) return if(dna_lock) @@ -911,19 +911,19 @@ if(C.dna.unique_enzymes==dna_lock) passed = TRUE if (!passed) - to_chat(user, "Access denied. [name] is secured with a DNA lock.") + to_chat(user, span_warning("Access denied. [name] is secured with a DNA lock.")) log_message("Permission denied (DNA LOCK).", LOG_MECHA) return if(!operation_allowed(user)) - to_chat(user, "Access denied. Insufficient operation keycodes.") + to_chat(user, span_warning("Access denied. Insufficient operation keycodes.")) log_message("Permission denied (No keycode).", LOG_MECHA) return if(user.buckled) - to_chat(user, "You are currently buckled and cannot move.") + to_chat(user, span_warning("You are currently buckled and cannot move.")) log_message("Permission denied (Buckled).", LOG_MECHA) return if(user.has_buckled_mobs()) //mob attached to us - to_chat(user, "You can't enter the exosuit with other creatures attached to you!") + to_chat(user, span_warning("You can't enter the exosuit with other creatures attached to you!")) log_message("Permission denied (Attached mobs).", LOG_MECHA) return @@ -931,17 +931,17 @@ if(do_after(user, enter_delay, target = src)) if(obj_integrity <= 0) - to_chat(user, "You cannot get in the [name], it has been destroyed!") + to_chat(user, span_warning("You cannot get in the [name], it has been destroyed!")) else if(occupant) - to_chat(user, "[occupant] was faster! Try better next time, loser.") + to_chat(user, span_danger("[occupant] was faster! Try better next time, loser.")) else if(user.buckled) - to_chat(user, "You can't enter the exosuit while buckled.") + to_chat(user, span_warning("You can't enter the exosuit while buckled.")) else if(user.has_buckled_mobs()) - to_chat(user, "You can't enter the exosuit with other creatures attached to you!") + to_chat(user, span_warning("You can't enter the exosuit with other creatures attached to you!")) else moved_inside(user) else - to_chat(user, "You stop entering the exosuit!") + to_chat(user, span_warning("You stop entering the exosuit!")) return /obj/mecha/proc/moved_inside(mob/living/carbon/human/H) @@ -964,40 +964,40 @@ /obj/mecha/proc/mmi_move_inside(obj/item/mmi/mmi_as_oc, mob/user) if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client) - to_chat(user, "Consciousness matrix not detected!") + to_chat(user, span_warning("Consciousness matrix not detected!")) return FALSE else if(mmi_as_oc.brainmob.stat) - to_chat(user, "Beta-rhythm below acceptable level!") + to_chat(user, span_warning("Beta-rhythm below acceptable level!")) return FALSE else if(occupant) - to_chat(user, "Occupant detected!") + to_chat(user, span_warning("Occupant detected!")) return FALSE else if(dna_lock && (!mmi_as_oc.brainmob.stored_dna || (dna_lock != mmi_as_oc.brainmob.stored_dna.unique_enzymes))) - to_chat(user, "Access denied. [name] is secured with a DNA lock.") + to_chat(user, span_warning("Access denied. [name] is secured with a DNA lock.")) return FALSE - visible_message("[user] starts to insert an MMI into [name].") + visible_message(span_notice("[user] starts to insert an MMI into [name].")) if(do_after(user, 40, target = src)) if(!occupant) return mmi_moved_inside(mmi_as_oc, user) else - to_chat(user, "Occupant detected!") + to_chat(user, span_warning("Occupant detected!")) else - to_chat(user, "You stop inserting the MMI.") + to_chat(user, span_notice("You stop inserting the MMI.")) return FALSE /obj/mecha/proc/mmi_moved_inside(obj/item/mmi/mmi_as_oc, mob/user) if(!(Adjacent(mmi_as_oc) && Adjacent(user))) return FALSE if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client) - to_chat(user, "Consciousness matrix not detected!") + to_chat(user, span_notice("Consciousness matrix not detected!")) return FALSE else if(mmi_as_oc.brainmob.stat) - to_chat(user, "Beta-rhythm below acceptable level!") + to_chat(user, span_warning("Beta-rhythm below acceptable level!")) return FALSE if(!user.transferItemToLoc(mmi_as_oc, src)) - to_chat(user, "\the [mmi_as_oc] is stuck to your hand, you cannot put it in \the [src]!") + to_chat(user, span_warning("\the [mmi_as_oc] is stuck to your hand, you cannot put it in \the [src]!")) return FALSE var/mob/living/brainmob = mmi_as_oc.brainmob mmi_as_oc.mecha = src @@ -1072,10 +1072,10 @@ return else if(!AI.linked_core) - to_chat(AI, "Inactive core destroyed. Unable to return.") + to_chat(AI, span_userdanger("Inactive core destroyed. Unable to return.")) AI.linked_core = null return - to_chat(AI, "Returning to core...") + to_chat(AI, span_notice("Returning to core...")) AI.controlled_mech = null AI.remote_control = null RemoveActions(occupant, 1) @@ -1175,7 +1175,7 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? /obj/mecha/proc/ammo_resupply(var/obj/item/mecha_ammo/A, mob/user,var/fail_chat_override = FALSE) if(!A.rounds) if(!fail_chat_override) - to_chat(user, "This box of ammo is empty!") + to_chat(user, span_warning("This box of ammo is empty!")) return FALSE var/ammo_needed var/found_gun @@ -1196,7 +1196,7 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? else gun.projectiles_cache = gun.projectiles_cache + ammo_needed playsound(get_turf(user),A.load_audio,50,1) - to_chat(user, "You add [ammo_needed] [A.round_term][ammo_needed > 1?"s":""] to the [gun.name]") + to_chat(user, span_notice("You add [ammo_needed] [A.round_term][ammo_needed > 1?"s":""] to the [gun.name]")) A.rounds = A.rounds - ammo_needed A.update_name() return TRUE @@ -1207,13 +1207,13 @@ GLOBAL_VAR_INIT(year_integer, text2num(year)) // = 2013??? else gun.projectiles_cache = gun.projectiles_cache + A.rounds playsound(get_turf(user),A.load_audio,50,1) - to_chat(user, "You add [A.rounds] [A.round_term][A.rounds > 1?"s":""] to the [gun.name]") + to_chat(user, span_notice("You add [A.rounds] [A.round_term][A.rounds > 1?"s":""] to the [gun.name]")) A.rounds = 0 A.update_name() return TRUE if(!fail_chat_override) if(found_gun) - to_chat(user, "You can't fit any more ammo of this type!") + to_chat(user, span_notice("You can't fit any more ammo of this type!")) else - to_chat(user, "None of the equipment on this exosuit can use this ammo!") + to_chat(user, span_notice("None of the equipment on this exosuit can use this ammo!")) return FALSE diff --git a/code/game/mecha/mecha_actions.dm b/code/game/mecha/mecha_actions.dm index 10903a42a9ac..00c67fd64be5 100644 --- a/code/game/mecha/mecha_actions.dm +++ b/code/game/mecha/mecha_actions.dm @@ -179,10 +179,10 @@ button_icon_state = "mech_defense_mode_[chassis.defence_mode ? "on" : "off"]" if(chassis.defence_mode) chassis.deflect_chance = chassis.defence_mode_deflect_chance - chassis.occupant_message("You enable [chassis] defence mode.") + chassis.occupant_message(span_notice("You enable [chassis] defence mode.")) else chassis.deflect_chance = initial(chassis.deflect_chance) - chassis.occupant_message("You disable [chassis] defence mode.") + chassis.occupant_message(span_danger("You disable [chassis] defence mode.")) chassis.log_message("Toggled defence mode.", LOG_MECHA) UpdateButtonIcon() @@ -206,13 +206,13 @@ chassis.bumpsmash = 1 chassis.step_in = min(1, round(chassis.step_in/2)) chassis.step_energy_drain = max(chassis.overload_step_energy_drain_min,chassis.step_energy_drain*chassis.leg_overload_coeff) - chassis.occupant_message("You enable leg actuators overload.") + chassis.occupant_message(span_danger("You enable leg actuators overload.")) else chassis.leg_overload_mode = 0 chassis.bumpsmash = initial(chassis.bumpsmash) chassis.step_in = initial(chassis.step_in) chassis.step_energy_drain = chassis.normal_step_energy_drain - chassis.occupant_message("You disable leg actuators overload.") + chassis.occupant_message(span_notice("You disable leg actuators overload.")) UpdateButtonIcon() /datum/action/innate/mecha/mech_smoke diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm index 2747930e6c59..79a9eb277d8e 100644 --- a/code/game/mecha/mecha_construction_paths.dm +++ b/code/game/mecha/mecha_construction_paths.dm @@ -59,7 +59,7 @@ . = user.transferItemToLoc(I, parent) if(.) var/atom/parent_atom = parent - user.visible_message("[user] has connected [I] to [parent].", "You connect [I] to [parent].") + user.visible_message("[user] has connected [I] to [parent].", span_notice("You connect [I] to [parent].")) parent_atom.add_overlay(I.icon_state+"+o") qdel(I) @@ -296,102 +296,102 @@ switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.") + user.visible_message("[user] connects [parent] hydraulic systems", span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message("[user] activates [parent] hydraulic systems.", span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.") + user.visible_message("[user] disconnects [parent] hydraulic systems", span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message("[user] deactivates [parent] hydraulic systems.", span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I].", "You install [I].") + user.visible_message("[user] installs [I].", span_notice("You install [I].")) else - user.visible_message("[user] unsecures the capacitor from [parent].", "You unsecure the capacitor from [parent].") + user.visible_message("[user] unsecures the capacitor from [parent].", span_notice("You unsecure the capacitor from [parent].")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].") + user.visible_message("[user] installs the internal armor layer to [parent].", span_notice("You install the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell.")) if(16) if(diff==FORWARD) - user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + user.visible_message("[user] secures the internal armor layer.", span_notice("You secure the internal armor layer.")) else - user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].") + user.visible_message("[user] pries internal armor layer from [parent].", span_notice("You pry internal armor layer from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].") + user.visible_message("[user] welds the internal armor layer to [parent].", span_notice("You weld the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + user.visible_message("[user] unfastens the internal armor layer.", span_notice("You unfasten the internal armor layer.")) if(18) if(diff==FORWARD) - user.visible_message("[user] installs the external reinforced armor layer to [parent].", "You install the external reinforced armor layer to [parent].") + user.visible_message("[user] installs the external reinforced armor layer to [parent].", span_notice("You install the external reinforced armor layer to [parent].")) else - user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") + user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent].")) if(19) if(diff==FORWARD) - user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.") + user.visible_message("[user] secures the external armor layer.", span_notice("You secure the external reinforced armor layer.")) else - user.visible_message("[user] pries external armor layer from [parent].", "You pry external armor layer from [parent].") + user.visible_message("[user] pries external armor layer from [parent].", span_notice("You pry external armor layer from [parent].")) if(20) if(diff==FORWARD) - user.visible_message("[user] welds the external armor layer to [parent].", "You weld the external armor layer to [parent].") + user.visible_message("[user] welds the external armor layer to [parent].", span_notice("You weld the external armor layer to [parent].")) else - user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + user.visible_message("[user] unfastens the external armor layer.", span_notice("You unfasten the external armor layer.")) return TRUE /datum/component/construction/unordered/mecha_chassis/gygax @@ -428,112 +428,112 @@ switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.") + user.visible_message("[user] connects [parent] hydraulic systems", span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message("[user] activates [parent] hydraulic systems.", span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.") + user.visible_message("[user] disconnects [parent] hydraulic systems", span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message("[user] deactivates [parent] hydraulic systems.", span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + user.visible_message("[user] secures the weapon control module.", span_notice("You secure the weapon control module.")) else - user.visible_message("[user] removes the weapon control module from [parent].", "You remove the weapon control module from [parent].") + user.visible_message("[user] removes the weapon control module from [parent].", span_notice("You remove the weapon control module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + user.visible_message("[user] unfastens the weapon control module.", span_notice("You unfasten the weapon control module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module.")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.") + user.visible_message("[user] unfastens the capacitor.", span_notice("You unfasten the capacitor.")) if(16) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].") + user.visible_message("[user] installs the internal armor layer to [parent].", span_notice("You install the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell.")) if(18) if(diff==FORWARD) - user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + user.visible_message("[user] secures the internal armor layer.", span_notice("You secure the internal armor layer.")) else - user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].") + user.visible_message("[user] pries internal armor layer from [parent].", span_notice("You pry internal armor layer from [parent].")) if(19) if(diff==FORWARD) - user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].") + user.visible_message("[user] welds the internal armor layer to [parent].", span_notice("You weld the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + user.visible_message("[user] unfastens the internal armor layer.", span_notice("You unfasten the internal armor layer.")) if(20) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") + user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent].")) if(21) if(diff==FORWARD) - user.visible_message("[user] secures Gygax Armor Plates.", "You secure Gygax Armor Plates.") + user.visible_message("[user] secures Gygax Armor Plates.", span_notice("You secure Gygax Armor Plates.")) else - user.visible_message("[user] pries Gygax Armor Plates from [parent].", "You pry Gygax Armor Plates from [parent].") + user.visible_message("[user] pries Gygax Armor Plates from [parent].", span_notice("You pry Gygax Armor Plates from [parent].")) if(22) if(diff==FORWARD) - user.visible_message("[user] welds Gygax Armor Plates to [parent].", "You weld Gygax Armor Plates to [parent].") + user.visible_message("[user] welds Gygax Armor Plates to [parent].", span_notice("You weld Gygax Armor Plates to [parent].")) else - user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.") + user.visible_message("[user] unfastens Gygax Armor Plates.", span_notice("You unfasten Gygax Armor Plates.")) return TRUE /datum/component/construction/unordered/mecha_chassis/firefighter @@ -593,107 +593,107 @@ //TODO: better messages. switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.") + user.visible_message("[user] connects [parent] hydraulic systems", span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message("[user] activates [parent] hydraulic systems.", span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.") + user.visible_message("[user] disconnects [parent] hydraulic systems", span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message("[user] deactivates [parent] hydraulic systems.", span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I]into [parent].", "You install [I]into [parent].") + user.visible_message("[user] installs [I]into [parent].", span_notice("You install [I]into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.") + user.visible_message("[user] unfastens the capacitor.", span_notice("You unfasten the capacitor.")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].") + user.visible_message("[user] installs the internal armor layer to [parent].", span_notice("You install the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell.")) if(16) if(diff==FORWARD) - user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + user.visible_message("[user] secures the internal armor layer.", span_notice("You secure the internal armor layer.")) else - user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].") + user.visible_message("[user] pries internal armor layer from [parent].", span_notice("You pry internal armor layer from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].") + user.visible_message("[user] welds the internal armor layer to [parent].", span_notice("You weld the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + user.visible_message("[user] unfastens the internal armor layer.", span_notice("You unfasten the internal armor layer.")) if(18) if(diff==FORWARD) - user.visible_message("[user] starts to install the external armor layer to [parent].", "You install the external armor layer to [parent].") + user.visible_message("[user] starts to install the external armor layer to [parent].", span_notice("You install the external armor layer to [parent].")) else - user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") + user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent].")) if(19) if(diff==FORWARD) - user.visible_message("[user] installs the external reinforced armor layer to [parent].", "You install the external reinforced armor layer to [parent].") + user.visible_message("[user] installs the external reinforced armor layer to [parent].", span_notice("You install the external reinforced armor layer to [parent].")) else - user.visible_message("[user] removes the external armor from [parent].", "You remove the external armor from [parent].") + user.visible_message("[user] removes the external armor from [parent].", span_notice("You remove the external armor from [parent].")) if(20) if(diff==FORWARD) - user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.") + user.visible_message("[user] secures the external armor layer.", span_notice("You secure the external reinforced armor layer.")) else - user.visible_message("[user] pries external armor layer from [parent].", "You pry external armor layer from [parent].") + user.visible_message("[user] pries external armor layer from [parent].", span_notice("You pry external armor layer from [parent].")) if(21) if(diff==FORWARD) - user.visible_message("[user] welds the external armor layer to [parent].", "You weld the external armor layer to [parent].") + user.visible_message("[user] welds the external armor layer to [parent].", span_notice("You weld the external armor layer to [parent].")) else - user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + user.visible_message("[user] unfastens the external armor layer.", span_notice("You unfasten the external armor layer.")) return TRUE /datum/component/construction/unordered/mecha_chassis/honker @@ -792,21 +792,21 @@ //TODO: better messages. switch(index) if(2) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) if(4) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) if(6) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) if(8) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) if(10) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) if(12) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) if(14) - user.visible_message("[user] puts [I] on [parent].", "You put [I] on [parent].") + user.visible_message("[user] puts [I] on [parent].", span_notice("You put [I] on [parent].")) if(16) - user.visible_message("[user] puts [I] on [parent].", "You put [I] on [parent].") + user.visible_message("[user] puts [I] on [parent].", span_notice("You put [I] on [parent].")) return TRUE /datum/component/construction/unordered/mecha_chassis/durand @@ -841,112 +841,112 @@ //TODO: better messages. switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.") + user.visible_message("[user] connects [parent] hydraulic systems", span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message("[user] activates [parent] hydraulic systems.", span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.") + user.visible_message("[user] disconnects [parent] hydraulic systems", span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message("[user] deactivates [parent] hydraulic systems.", span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + user.visible_message("[user] secures the weapon control module.", span_notice("You secure the weapon control module.")) else - user.visible_message("[user] removes the weapon control module from [parent].", "You remove the weapon control module from [parent].") + user.visible_message("[user] removes the weapon control module from [parent].", span_notice("You remove the weapon control module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + user.visible_message("[user] unfastens the weapon control module.", span_notice("You unfasten the weapon control module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module.")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.") + user.visible_message("[user] unfastens the capacitor.", span_notice("You unfasten the capacitor.")) if(16) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].") + user.visible_message("[user] installs the internal armor layer to [parent].", span_notice("You install the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell.")) if(18) if(diff==FORWARD) - user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + user.visible_message("[user] secures the internal armor layer.", span_notice("You secure the internal armor layer.")) else - user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].") + user.visible_message("[user] pries internal armor layer from [parent].", span_notice("You pry internal armor layer from [parent].")) if(19) if(diff==FORWARD) - user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].") + user.visible_message("[user] welds the internal armor layer to [parent].", span_notice("You weld the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + user.visible_message("[user] unfastens the internal armor layer.", span_notice("You unfasten the internal armor layer.")) if(20) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") + user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent].")) if(21) if(diff==FORWARD) - user.visible_message("[user] secures Durand Armor Plates.", "You secure Durand Armor Plates.") + user.visible_message("[user] secures Durand Armor Plates.", span_notice("You secure Durand Armor Plates.")) else - user.visible_message("[user] pries Durand Armor Plates from [parent].", "You pry Durand Armor Plates from [parent].") + user.visible_message("[user] pries Durand Armor Plates from [parent].", span_notice("You pry Durand Armor Plates from [parent].")) if(22) if(diff==FORWARD) - user.visible_message("[user] welds Durand Armor Plates to [parent].", "You weld Durand Armor Plates to [parent].") + user.visible_message("[user] welds Durand Armor Plates to [parent].", span_notice("You weld Durand Armor Plates to [parent].")) else - user.visible_message("[user] unfastens Durand Armor Plates.", "You unfasten Durand Armor Plates.") + user.visible_message("[user] unfastens Durand Armor Plates.", span_notice("You unfasten Durand Armor Plates.")) return TRUE //PHAZON @@ -1068,131 +1068,131 @@ //TODO: better messages. switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.") + user.visible_message("[user] connects [parent] hydraulic systems", span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message("[user] activates [parent] hydraulic systems.", span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.") + user.visible_message("[user] disconnects [parent] hydraulic systems", span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message("[user] deactivates [parent] hydraulic systems.", span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the weapon control module.", "You secure the weapon control module.") + user.visible_message("[user] secures the weapon control module.", span_notice("You secure the weapon control module.")) else - user.visible_message("[user] removes the weapon control module from [parent].", "You remove the weapon control module from [parent].") + user.visible_message("[user] removes the weapon control module from [parent].", span_notice("You remove the weapon control module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the weapon control module.", "You unfasten the weapon control module.") + user.visible_message("[user] unfastens the weapon control module.", span_notice("You unfasten the weapon control module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module.")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs [I].", "You install [I].") + user.visible_message("[user] installs [I].", span_notice("You install [I].")) else - user.visible_message("[user] unsecures the capacitor from [parent].", "You unsecure the capacitor from [parent].") + user.visible_message("[user] unsecures the capacitor from [parent].", span_notice("You unsecure the capacitor from [parent].")) if(16) if(diff==FORWARD) - user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.") + user.visible_message("[user] connects the bluespace crystal.", span_notice("You connect the bluespace crystal.")) else - user.visible_message("[user] removes the bluespace crystal from [parent].", "You remove the bluespace crystal from [parent].") + user.visible_message("[user] removes the bluespace crystal from [parent].", span_notice("You remove the bluespace crystal from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.") + user.visible_message("[user] engages the bluespace crystal.", span_notice("You engage the bluespace crystal.")) else - user.visible_message("[user] disconnects the bluespace crystal from [parent].", "You disconnect the bluespace crystal from [parent].") + user.visible_message("[user] disconnects the bluespace crystal from [parent].", span_notice("You disconnect the bluespace crystal from [parent].")) if(18) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.") + user.visible_message("[user] disengages the bluespace crystal.", span_notice("You disengage the bluespace crystal.")) if(19) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent].")) if(20) if(diff==FORWARD) - user.visible_message("[user] installs the phase armor layer to [parent].", "You install the phase armor layer to [parent].") + user.visible_message("[user] installs the phase armor layer to [parent].", span_notice("You install the phase armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell.")) if(21) if(diff==FORWARD) - user.visible_message("[user] secures the phase armor layer.", "You secure the phase armor layer.") + user.visible_message("[user] secures the phase armor layer.", span_notice("You secure the phase armor layer.")) else - user.visible_message("[user] pries the phase armor layer from [parent].", "You pry the phase armor layer from [parent].") + user.visible_message("[user] pries the phase armor layer from [parent].", span_notice("You pry the phase armor layer from [parent].")) if(22) if(diff==FORWARD) - user.visible_message("[user] welds the phase armor layer to [parent].", "You weld the phase armor layer to [parent].") + user.visible_message("[user] welds the phase armor layer to [parent].", span_notice("You weld the phase armor layer to [parent].")) else - user.visible_message("[user] unfastens the phase armor layer.", "You unfasten the phase armor layer.") + user.visible_message("[user] unfastens the phase armor layer.", span_notice("You unfasten the phase armor layer.")) if(23) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] cuts phase armor layer from [parent].", "You cut the phase armor layer from [parent].") + user.visible_message("[user] cuts phase armor layer from [parent].", span_notice("You cut the phase armor layer from [parent].")) if(24) if(diff==FORWARD) - user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.") + user.visible_message("[user] secures Phazon Armor Plates.", span_notice("You secure Phazon Armor Plates.")) else - user.visible_message("[user] pries Phazon Armor Plates from [parent].", "You pry Phazon Armor Plates from [parent].") + user.visible_message("[user] pries Phazon Armor Plates from [parent].", span_notice("You pry Phazon Armor Plates from [parent].")) if(25) if(diff==FORWARD) - user.visible_message("[user] welds Phazon Armor Plates to [parent].", "You weld Phazon Armor Plates to [parent].") + user.visible_message("[user] welds Phazon Armor Plates to [parent].", span_notice("You weld Phazon Armor Plates to [parent].")) else - user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.") + user.visible_message("[user] unfastens Phazon Armor Plates.", span_notice("You unfasten Phazon Armor Plates.")) if(26) if(diff==FORWARD) user.visible_message("[user] carefully inserts the anomaly core into [parent] and secures it.", - "You slowly place the anomaly core into its socket and close its chamber.") + span_notice("You slowly place the anomaly core into its socket and close its chamber.")) return TRUE //ODYSSEUS @@ -1228,100 +1228,100 @@ //TODO: better messages. switch(index) if(1) - user.visible_message("[user] connects [parent] hydraulic systems", "You connect [parent] hydraulic systems.") + user.visible_message("[user] connects [parent] hydraulic systems", span_notice("You connect [parent] hydraulic systems.")) if(2) if(diff==FORWARD) - user.visible_message("[user] activates [parent] hydraulic systems.", "You activate [parent] hydraulic systems.") + user.visible_message("[user] activates [parent] hydraulic systems.", span_notice("You activate [parent] hydraulic systems.")) else - user.visible_message("[user] disconnects [parent] hydraulic systems", "You disconnect [parent] hydraulic systems.") + user.visible_message("[user] disconnects [parent] hydraulic systems", span_notice("You disconnect [parent] hydraulic systems.")) if(3) if(diff==FORWARD) - user.visible_message("[user] adds the wiring to [parent].", "You add the wiring to [parent].") + user.visible_message("[user] adds the wiring to [parent].", span_notice("You add the wiring to [parent].")) else - user.visible_message("[user] deactivates [parent] hydraulic systems.", "You deactivate [parent] hydraulic systems.") + user.visible_message("[user] deactivates [parent] hydraulic systems.", span_notice("You deactivate [parent] hydraulic systems.")) if(4) if(diff==FORWARD) - user.visible_message("[user] adjusts the wiring of [parent].", "You adjust the wiring of [parent].") + user.visible_message("[user] adjusts the wiring of [parent].", span_notice("You adjust the wiring of [parent].")) else - user.visible_message("[user] removes the wiring from [parent].", "You remove the wiring from [parent].") + user.visible_message("[user] removes the wiring from [parent].", span_notice("You remove the wiring from [parent].")) if(5) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] disconnects the wiring of [parent].", "You disconnect the wiring of [parent].") + user.visible_message("[user] disconnects the wiring of [parent].", span_notice("You disconnect the wiring of [parent].")) if(6) if(diff==FORWARD) - user.visible_message("[user] secures the mainboard.", "You secure the mainboard.") + user.visible_message("[user] secures the mainboard.", span_notice("You secure the mainboard.")) else - user.visible_message("[user] removes the central control module from [parent].", "You remove the central computer mainboard from [parent].") + user.visible_message("[user] removes the central control module from [parent].", span_notice("You remove the central computer mainboard from [parent].")) if(7) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.") + user.visible_message("[user] unfastens the mainboard.", span_notice("You unfasten the mainboard.")) if(8) if(diff==FORWARD) - user.visible_message("[user] secures the peripherals control module.", "You secure the peripherals control module.") + user.visible_message("[user] secures the peripherals control module.", span_notice("You secure the peripherals control module.")) else - user.visible_message("[user] removes the peripherals control module from [parent].", "You remove the peripherals control module from [parent].") + user.visible_message("[user] removes the peripherals control module from [parent].", span_notice("You remove the peripherals control module from [parent].")) if(9) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.") + user.visible_message("[user] unfastens the peripherals control module.", span_notice("You unfasten the peripherals control module.")) if(10) if(diff==FORWARD) - user.visible_message("[user] secures the scanner module.", "You secure the scanner module.") + user.visible_message("[user] secures the scanner module.", span_notice("You secure the scanner module.")) else - user.visible_message("[user] removes the scanner module from [parent].", "You remove the scanner module from [parent].") + user.visible_message("[user] removes the scanner module from [parent].", span_notice("You remove the scanner module from [parent].")) if(11) if(diff==FORWARD) - user.visible_message("[user] installs [I] to [parent].", "You install [I] to [parent].") + user.visible_message("[user] installs [I] to [parent].", span_notice("You install [I] to [parent].")) else - user.visible_message("[user] unfastens the scanner module.", "You unfasten the scanner module.") + user.visible_message("[user] unfastens the scanner module.", span_notice("You unfasten the scanner module.")) if(12) if(diff==FORWARD) - user.visible_message("[user] secures the capacitor.", "You secure the capacitor.") + user.visible_message("[user] secures the capacitor.", span_notice("You secure the capacitor.")) else - user.visible_message("[user] removes the capacitor from [parent].", "You remove the capacitor from [parent].") + user.visible_message("[user] removes the capacitor from [parent].", span_notice("You remove the capacitor from [parent].")) if(13) if(diff==FORWARD) - user.visible_message("[user] installs [I] into [parent].", "You install [I] into [parent].") + user.visible_message("[user] installs [I] into [parent].", span_notice("You install [I] into [parent].")) else - user.visible_message("[user] unfastens the capacitor.", "You unfasten the capacitor.") + user.visible_message("[user] unfastens the capacitor.", span_notice("You unfasten the capacitor.")) if(14) if(diff==FORWARD) - user.visible_message("[user] secures the power cell.", "You secure the power cell.") + user.visible_message("[user] secures the power cell.", span_notice("You secure the power cell.")) else - user.visible_message("[user] pries the power cell from [parent].", "You pry the power cell from [parent].") + user.visible_message("[user] pries the power cell from [parent].", span_notice("You pry the power cell from [parent].")) if(15) if(diff==FORWARD) - user.visible_message("[user] installs the internal armor layer to [parent].", "You install the internal armor layer to [parent].") + user.visible_message("[user] installs the internal armor layer to [parent].", span_notice("You install the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the power cell.", "You unfasten the power cell.") + user.visible_message("[user] unfastens the power cell.", span_notice("You unfasten the power cell.")) if(16) if(diff==FORWARD) - user.visible_message("[user] secures the internal armor layer.", "You secure the internal armor layer.") + user.visible_message("[user] secures the internal armor layer.", span_notice("You secure the internal armor layer.")) else - user.visible_message("[user] pries internal armor layer from [parent].", "You pry internal armor layer from [parent].") + user.visible_message("[user] pries internal armor layer from [parent].", span_notice("You pry internal armor layer from [parent].")) if(17) if(diff==FORWARD) - user.visible_message("[user] welds the internal armor layer to [parent].", "You weld the internal armor layer to [parent].") + user.visible_message("[user] welds the internal armor layer to [parent].", span_notice("You weld the internal armor layer to [parent].")) else - user.visible_message("[user] unfastens the internal armor layer.", "You unfasten the internal armor layer.") + user.visible_message("[user] unfastens the internal armor layer.", span_notice("You unfasten the internal armor layer.")) if(18) if(diff==FORWARD) - user.visible_message("[user] installs the external armor layer to [parent].", "You install the external reinforced armor layer to [parent].") + user.visible_message("[user] installs the external armor layer to [parent].", span_notice("You install the external reinforced armor layer to [parent].")) else - user.visible_message("[user] cuts the internal armor layer from [parent].", "You cut the internal armor layer from [parent].") + user.visible_message("[user] cuts the internal armor layer from [parent].", span_notice("You cut the internal armor layer from [parent].")) if(19) if(diff==FORWARD) - user.visible_message("[user] secures the external armor layer.", "You secure the external reinforced armor layer.") + user.visible_message("[user] secures the external armor layer.", span_notice("You secure the external reinforced armor layer.")) else - user.visible_message("[user] pries the external armor layer from [parent].", "You pry the external armor layer from [parent].") + user.visible_message("[user] pries the external armor layer from [parent].", span_notice("You pry the external armor layer from [parent].")) if(20) if(diff==FORWARD) - user.visible_message("[user] welds the external armor layer to [parent].", "You weld the external armor layer to [parent].") + user.visible_message("[user] welds the external armor layer to [parent].", span_notice("You weld the external armor layer to [parent].")) else - user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.") + user.visible_message("[user] unfastens the external armor layer.", span_notice("You unfasten the external armor layer.")) return TRUE diff --git a/code/game/mecha/mecha_control_console.dm b/code/game/mecha/mecha_control_console.dm index 28225bbada8a..590b33b2bf8e 100644 --- a/code/game/mecha/mecha_control_console.dm +++ b/code/game/mecha/mecha_control_console.dm @@ -59,7 +59,7 @@ var/obj/mecha/M = MT.chassis if(trim(message) && M) M.occupant_message(message) - to_chat(usr, "Message sent.") + to_chat(usr, span_notice("Message sent.")) . = TRUE if("shock") var/obj/item/mecha_parts/mecha_tracking/MT = locate(params["tracker_ref"]) diff --git a/code/game/mecha/mecha_defense.dm b/code/game/mecha/mecha_defense.dm index ee70d44e5dc8..2cf91ea7e2f1 100644 --- a/code/game/mecha/mecha_defense.dm +++ b/code/game/mecha/mecha_defense.dm @@ -20,7 +20,7 @@ else check_for_internal_damage(list(MECHA_INT_FIRE,MECHA_INT_TEMP_CONTROL,MECHA_INT_TANK_BREACH,MECHA_INT_CONTROL_LOST,MECHA_INT_SHORT_CIRCUIT)) if(. >= 5 || prob(33)) - occupant_message("Taking damage!") + occupant_message(span_userdanger("Taking damage!")) log_message("Took [damage_amount] points of damage. Damage type: [damage_type]", LOG_MECHA) /obj/mecha/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir) @@ -47,7 +47,7 @@ booster_damage_modifier /= facing_modifier booster_deflection_modifier *= facing_modifier if(prob(deflect_chance * booster_deflection_modifier)) - visible_message("[src]'s armour deflects the attack!") + visible_message(span_danger("[src]'s armour deflects the attack!")) log_message("Armor saved.", LOG_MECHA) return 0 if(.) @@ -61,7 +61,7 @@ user.changeNext_move(CLICK_CD_MELEE) // Ugh. Ideally we shouldn't be setting cooldowns outside of click code. user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) playsound(loc, 'sound/weapons/tap.ogg', 40, 1, -1) - user.visible_message("[user] hits [name]. Nothing happens.", null, null, COMBAT_MESSAGE_RANGE) + user.visible_message(span_danger("[user] hits [name]. Nothing happens."), null, null, COMBAT_MESSAGE_RANGE) log_message("Attack by hand/paw. Attacker - [user].", LOG_MECHA, color="red") /obj/mecha/attack_paw(mob/user as mob) @@ -206,33 +206,33 @@ output_maintenance_dialog(id_card, user) return else - to_chat(user, "Invalid ID: Access denied.") + to_chat(user, span_warning("Invalid ID: Access denied.")) else - to_chat(user, "Maintenance protocols disabled by operator.") + to_chat(user, span_warning("Maintenance protocols disabled by operator.")) else if(W.tool_behaviour == TOOL_WRENCH) if(state==1) state = 2 - to_chat(user, "You undo the securing bolts.") + to_chat(user, span_notice("You undo the securing bolts.")) else if(state==2) state = 1 - to_chat(user, "You tighten the securing bolts.") + to_chat(user, span_notice("You tighten the securing bolts.")) return else if(W.tool_behaviour == TOOL_CROWBAR) if(state==2) state = 3 - to_chat(user, "You open the hatch to the power unit.") + to_chat(user, span_notice("You open the hatch to the power unit.")) else if(state==3) state=2 - to_chat(user, "You close the hatch to the power unit.") + to_chat(user, span_notice("You close the hatch to the power unit.")) return else if(istype(W, /obj/item/stack/cable_coil)) if(state == 3 && (internal_damage & MECHA_INT_SHORT_CIRCUIT)) var/obj/item/stack/cable_coil/CC = W if(CC.use(2)) clearInternalDamage(MECHA_INT_SHORT_CIRCUIT) - to_chat(user, "You replace the fused wires.") + to_chat(user, span_notice("You replace the fused wires.")) else - to_chat(user, "You need two lengths of cable to fix this mech!") + to_chat(user, span_warning("You need two lengths of cable to fix this mech!")) return else if(istype(W, /obj/item/stock_parts/cell)) @@ -241,12 +241,12 @@ if(!user.transferItemToLoc(W, src)) return var/obj/item/stock_parts/cell/C = W - to_chat(user, "You install the power cell.") + to_chat(user, span_notice("You install the power cell.")) playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE) cell = C log_message("Powercell installed", LOG_MECHA) else - to_chat(user, "There's already a power cell installed.") + to_chat(user, span_notice("There's already a power cell installed.")) return if(istype(W, /obj/item/stock_parts/scanning_module)) @@ -254,13 +254,13 @@ if(!scanmod) if(!user.transferItemToLoc(W, src)) return - to_chat(user, "You install the scanning module.") + to_chat(user, span_notice("You install the scanning module.")) playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE) scanmod = W log_message("[W] installed", LOG_MECHA) update_part_values() else - to_chat(user, "There's already a scanning module installed.") + to_chat(user, span_notice("There's already a scanning module installed.")) return if(istype(W, /obj/item/stock_parts/capacitor)) @@ -268,13 +268,13 @@ if(!capacitor) if(!user.transferItemToLoc(W, src)) return - to_chat(user, "You install the capacitor.") + to_chat(user, span_notice("You install the capacitor.")) playsound(src, 'sound/items/screwdriver2.ogg', 50, FALSE) capacitor = W log_message("[W] installed", LOG_MECHA) update_part_values() else - to_chat(user, "There's already a capacitor installed.") + to_chat(user, span_notice("There's already a capacitor installed.")) return else if(W.tool_behaviour == TOOL_WELDER && user.a_intent != INTENT_HARM) @@ -283,15 +283,15 @@ if(W.use_tool(src, user, 0, volume=50, amount=1)) if (internal_damage & MECHA_INT_TANK_BREACH) clearInternalDamage(MECHA_INT_TANK_BREACH) - to_chat(user, "You repair the damaged gas tank.") + to_chat(user, span_notice("You repair the damaged gas tank.")) else - user.visible_message("[user] repairs some damage to [name].", "You repair some damage to [src].") + user.visible_message(span_notice("[user] repairs some damage to [name]."), span_notice("You repair some damage to [src].")) obj_integrity += min(10, max_integrity-obj_integrity) if(obj_integrity == max_integrity) - to_chat(user, "It looks to be fully repaired now.") + to_chat(user, span_notice("It looks to be fully repaired now.")) return 1 else - to_chat(user, "The [name] is at full integrity!") + to_chat(user, span_warning("The [name] is at full integrity!")) return 1 else if(istype(W, /obj/item/mecha_parts)) diff --git a/code/game/mecha/mecha_parts.dm b/code/game/mecha/mecha_parts.dm index 59b74adfa8d4..0ebbbdda9cbb 100644 --- a/code/game/mecha/mecha_parts.dm +++ b/code/game/mecha/mecha_parts.dm @@ -11,9 +11,9 @@ /obj/item/mecha_parts/proc/try_attach_part(mob/user, obj/mecha/M) //For attaching parts to a finished mech if(!user.transferItemToLoc(src, M)) - to_chat(user, "\The [src] is stuck to your hand, you cannot put it in \the [M]!") + to_chat(user, span_warning("\The [src] is stuck to your hand, you cannot put it in \the [M]!")) return FALSE - user.visible_message("[user] attaches [src] to [M].", "You attach [src] to [M].") + user.visible_message("[user] attaches [src] to [M].", span_notice("You attach [src] to [M].")) return TRUE /obj/item/mecha_parts/part/try_attach_part(mob/user, obj/mecha/M) diff --git a/code/game/mecha/mecha_topic.dm b/code/game/mecha/mecha_topic.dm index 62904fb63a6d..b6fdd2d91e2c 100644 --- a/code/game/mecha/mecha_topic.dm +++ b/code/game/mecha/mecha_topic.dm @@ -52,11 +52,11 @@ /obj/mecha/proc/report_internal_damage() . = "" var/list/dam_reports = list( - "[MECHA_INT_FIRE]" = "INTERNAL FIRE", - "[MECHA_INT_TEMP_CONTROL]" = "LIFE SUPPORT SYSTEM MALFUNCTION", - "[MECHA_INT_TANK_BREACH]" = "GAS TANK BREACH", - "[MECHA_INT_CONTROL_LOST]" = "COORDINATION SYSTEM CALIBRATION FAILURE - Recalibrate", - "[MECHA_INT_SHORT_CIRCUIT]" = "SHORT CIRCUIT" + "[MECHA_INT_FIRE]" = span_userdanger("INTERNAL FIRE"), + "[MECHA_INT_TEMP_CONTROL]" = span_userdanger("LIFE SUPPORT SYSTEM MALFUNCTION"), + "[MECHA_INT_TANK_BREACH]" = span_userdanger("GAS TANK BREACH"), + "[MECHA_INT_CONTROL_LOST]" = "[span_userdanger("COORDINATION SYSTEM CALIBRATION FAILURE")] - Recalibrate", + "[MECHA_INT_SHORT_CIRCUIT]" = span_userdanger("SHORT CIRCUIT") ) for(var/tflag in dam_reports) var/intdamflag = text2num(tflag) @@ -64,7 +64,7 @@ . += dam_reports[tflag] . += "
" if(return_pressure() > WARNING_HIGH_PRESSURE) - . += "DANGEROUSLY HIGH CABIN PRESSURE
" + . += "[span_userdanger("DANGEROUSLY HIGH CABIN PRESSURE")]
" @@ -81,13 +81,13 @@ tank_temperature = internal_tank ? int_tank_air.return_temperature() : "Unknown" cabin_pressure = round(return_pressure(),0.01) . = {"[report_internal_damage()] - [integrity<30?"DAMAGE LEVEL CRITICAL
":null] + [integrity<30?"[span_userdanger("DAMAGE LEVEL CRITICAL")]
":null] Integrity: [integrity]%
Powercell charge: [isnull(cell_charge)?"No powercell installed":"[cell.percent()]%"]
Air source: [internal_tank?"[use_internal_tank?"Internal Airtank":"Environment"]":"Environment"]
Airtank pressure: [internal_tank?"[tank_pressure]kPa":"N/A"]
Airtank temperature: [internal_tank?"[tank_temperature]°K|[tank_temperature - T0C]°C":"N/A"]
- Cabin pressure: [internal_tank?"[cabin_pressure>WARNING_HIGH_PRESSURE ? "[cabin_pressure]": cabin_pressure]kPa":"N/A"]
+ Cabin pressure: [internal_tank?"[cabin_pressure>WARNING_HIGH_PRESSURE ? span_danger("[cabin_pressure]"): cabin_pressure]kPa":"N/A"]
Cabin temperature: [internal_tank?"[return_temperature()]°K|[return_temperature() - T0C]°C":"N/A"]
[dna_lock?"DNA-locked:
[dna_lock] \[Reset\]
":""]
[thrusters_action.owner ? "Thrusters: [thrusters_active ? "Enabled" : "Disabled"]
" : ""] @@ -176,7 +176,7 @@ continue //there's some strange access without a name . += "[a_name] - Add
" . += "
Finish " - . += "(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)" + . += span_danger("(Warning! The ID upload panel will be locked. It can be unlocked only through Exosuit Interface.)") . += "" user << browse(., "window=exosuit_add_access") onclose(user, "exosuit_add_access") @@ -240,9 +240,9 @@ state = 0 to_chat(usr, "The securing bolts are now hidden.") else if(state==2) //user feedback YOGGERZ - visible_message("You need to tighten the securing bolts first!") + visible_message(span_warning("You need to tighten the securing bolts first!")) else if(state==3) - visible_message("You need to close the hatch to the power unit first!") + visible_message(span_warning("You need to close the hatch to the power unit first!")) output_maintenance_dialog(id_card,usr) return @@ -328,7 +328,7 @@ if(href_list["toggle_maint_access"]) if(state) - occupant_message("Maintenance protocols in effect") + occupant_message(span_danger("Maintenance protocols in effect")) return maint_access = !maint_access send_byjax(usr,"exosuit.browser","t_maint_access","[maint_access?"Forbid":"Permit"] maintenance protocols") @@ -340,7 +340,7 @@ occupant_message("Disconnected from the air system port.") log_message("Disconnected from gas port.", LOG_MECHA) else - occupant_message("Unable to disconnect from the air system port!") + occupant_message(span_warning("Unable to disconnect from the air system port!")) return else var/obj/machinery/atmospherics/components/unary/portables_connector/possible_port = locate() in loc @@ -348,13 +348,13 @@ occupant_message("Connected to the air system port.") log_message("Connected to gas port.", LOG_MECHA) else - occupant_message("Unable to connect with air system port!") + occupant_message(span_warning("Unable to connect with air system port!")) return send_byjax(occupant,"exosuit.browser","t_port_connection","[internal_tank.connected_port?"Disconnect from":"Connect to"] gas port") if(href_list["dna_lock"]) if(occupant && !iscarbon(occupant)) - to_chat(occupant, " You do not have any DNA!") + to_chat(occupant, span_danger(" You do not have any DNA!")) return dna_lock = occupant.dna.unique_enzymes occupant_message("You feel a prick as the needle takes your DNA sample.") @@ -369,8 +369,8 @@ spawn(100) if(T == loc) clearInternalDamage(MECHA_INT_CONTROL_LOST) - occupant_message("Recalibration successful.") + occupant_message(span_notice("Recalibration successful.")) log_message("Recalibration of coordination system finished with 0 errors.", LOG_MECHA) else - occupant_message("Recalibration failed!") + occupant_message(span_warning("Recalibration failed!")) log_message("Recalibration of coordination system failed with 1 error.", LOG_MECHA, color="red") diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm index 52deff92ef89..3ff9c6b15440 100644 --- a/code/game/mecha/mecha_wreckage.dm +++ b/code/game/mecha/mecha_wreckage.dm @@ -32,12 +32,12 @@ /obj/structure/mecha_wreckage/examine(mob/user) . = ..() if(AI) - . += "The AI recovery beacon is active." + . += span_notice("The AI recovery beacon is active.") /obj/structure/mecha_wreckage/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_WELDER) if(salvage_num <= 0 || !length(welder_salvage)) - to_chat(user, "You don't see anything that can be cut with [I]!") + to_chat(user, span_warning("You don't see anything that can be cut with [I]!")) return if(!I.use_tool(src, user, 0, volume=50)) @@ -46,27 +46,27 @@ var/type = prob(70) ? pick(welder_salvage) : null if(type) var/N = new type(get_turf(user)) - user.visible_message("[user] cuts [N] from [src].", "You cut [N] from [src].") + user.visible_message("[user] cuts [N] from [src].", span_notice("You cut [N] from [src].")) if(istype(N, /obj/item/mecha_parts/part)) welder_salvage -= type salvage_num-- else - to_chat(user, "You fail to salvage anything valuable from [src]!") + to_chat(user, span_warning("You fail to salvage anything valuable from [src]!")) return else if(I.tool_behaviour == TOOL_WIRECUTTER) if(salvage_num <= 0) - to_chat(user, "You don't see anything that can be cut with [I]!") + to_chat(user, span_warning("You don't see anything that can be cut with [I]!")) return else if(wirecutters_salvage && wirecutters_salvage.len) var/type = prob(70) ? pick(wirecutters_salvage) : null if(type) var/N = new type(get_turf(user)) - user.visible_message("[user] cuts [N] from [src].", "You cut [N] from [src].") + user.visible_message("[user] cuts [N] from [src].", span_notice("You cut [N] from [src].")) wirecutters_salvage -= type salvage_num-- else - to_chat(user, "You fail to salvage anything valuable from [src]!") + to_chat(user, span_warning("You fail to salvage anything valuable from [src]!")) else if(I.tool_behaviour == TOOL_CROWBAR) if(crowbar_salvage && crowbar_salvage.len) @@ -74,10 +74,10 @@ if(S) S.forceMove(user.drop_location()) crowbar_salvage -= S - user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].") + user.visible_message("[user] pries [S] from [src].", span_notice("You pry [S] from [src].")) return else - to_chat(user, "You don't see anything that can be pried with [I]!") + to_chat(user, span_warning("You don't see anything that can be pried with [I]!")) /obj/structure/mecha_wreckage/transfer_ai(interaction, mob/user, null, obj/item/aicard/card) @@ -87,7 +87,7 @@ //Proc called on the wreck by the AI card. if(interaction == AI_TRANS_TO_CARD) //AIs can only be transferred in one direction, from the wreck to the card. if(!AI) //No AI in the wreck - to_chat(user, "No AI backups found.") + to_chat(user, span_warning("No AI backups found.")) return cut_overlays() //Remove the recovery beacon overlay AI.forceMove(card) //Move the dead AI to the card. @@ -96,7 +96,7 @@ to_chat(AI, "The remains of your file system have been recovered on a mobile storage device.") else //Give the AI a heads-up that it is probably going to get fixed. AI.notify_ghost_cloning("You have been recovered from the wreckage!", source = card) - to_chat(user, "Backup files recovered: [AI.name] ([rand(1000,9999)].exe) salvaged from [name] and stored within local memory.") + to_chat(user, "[span_boldnotice("Backup files recovered")]: [AI.name] ([rand(1000,9999)].exe) salvaged from [name] and stored within local memory.") else return ..() diff --git a/code/game/mecha/working/ripley.dm b/code/game/mecha/working/ripley.dm index e91ef04e687a..450327fd2590 100644 --- a/code/game/mecha/working/ripley.dm +++ b/code/game/mecha/working/ripley.dm @@ -183,7 +183,7 @@ if(href_list["drop_from_cargo"]) var/obj/O = locate(href_list["drop_from_cargo"]) in cargo if(O) - occupant_message("You unload [O].") + occupant_message(span_notice("You unload [O].")) O.forceMove(drop_location()) cargo -= O log_message("Unloaded [O]. Cargo compartment capacity: [cargo_capacity - src.cargo.len]", LOG_MECHA) @@ -222,13 +222,13 @@ drill.equip_cooldown = initial(drill.equip_cooldown) /obj/mecha/working/ripley/relay_container_resist(mob/living/user, obj/O) - to_chat(user, "You lean on the back of [O] and start pushing so it falls out of [src].") + to_chat(user, span_notice("You lean on the back of [O] and start pushing so it falls out of [src].")) if(do_after(user, 300, target = O)) if(!user || user.stat != CONSCIOUS || user.loc != src || O.loc != src ) return - to_chat(user, "You successfully pushed [O] out of [src]!") + to_chat(user, span_notice("You successfully pushed [O] out of [src]!")) O.forceMove(drop_location()) cargo -= O else if(user.loc == src) //so we don't get the message if we resisted multiple times and succeeded. - to_chat(user, "You fail to push [O] out of [src]!") + to_chat(user, span_warning("You fail to push [O] out of [src]!")) diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm index 7019249fa3c8..230f0eb151ee 100644 --- a/code/game/objects/buckling.dm +++ b/code/game/objects/buckling.dm @@ -61,9 +61,9 @@ M.buckling = src if(!M.can_buckle() && !force) if(M == usr) - to_chat(M, "You are unable to buckle yourself to [src]!") + to_chat(M, span_warning("You are unable to buckle yourself to [src]!")) else - to_chat(usr, "You are unable to buckle [M] to [src]!") + to_chat(usr, span_warning("You are unable to buckle [M] to [src]!")) M.buckling = null return FALSE @@ -132,28 +132,28 @@ if(.) if(M == user) M.visible_message(\ - "[M] buckles [M.p_them()]self to [src].",\ - "You buckle yourself to [src].",\ - "You hear metal clanking.") + span_notice("[M] buckles [M.p_them()]self to [src]."),\ + span_notice("You buckle yourself to [src]."),\ + span_italics("You hear metal clanking.")) else M.visible_message(\ - "[user] buckles [M] to [src]!",\ - "[user] buckles you to [src]!",\ - "You hear metal clanking.") + span_warning("[user] buckles [M] to [src]!"),\ + span_warning("[user] buckles you to [src]!"),\ + span_italics("You hear metal clanking.")) /atom/movable/proc/user_unbuckle_mob(mob/living/buckled_mob, mob/user) var/mob/living/M = unbuckle_mob(buckled_mob) if(M) if(M != user) M.visible_message(\ - "[user] unbuckles [M] from [src].",\ - "[user] unbuckles you from [src].",\ - "You hear metal clanking.") + span_notice("[user] unbuckles [M] from [src]."),\ + span_notice("[user] unbuckles you from [src]."),\ + span_italics("You hear metal clanking.")) else M.visible_message(\ - "[M] unbuckles [M.p_them()]self from [src].",\ - "You unbuckle yourself from [src].",\ - "You hear metal clanking.") + span_notice("[M] unbuckles [M.p_them()]self from [src]."),\ + span_notice("You unbuckle yourself from [src]."),\ + span_italics("You hear metal clanking.")) add_fingerprint(user) if(isliving(M.pulledby)) var/mob/living/L = M.pulledby diff --git a/code/game/objects/effects/alien_acid.dm b/code/game/objects/effects/alien_acid.dm index 1a668b809f8c..18974a9a01aa 100644 --- a/code/game/objects/effects/alien_acid.dm +++ b/code/game/objects/effects/alien_acid.dm @@ -63,7 +63,7 @@ if(L.acid_act(10, acid_used, "feet")) acid_level = max(0, acid_level - acid_used*10) playsound(L, 'sound/weapons/sear.ogg', 50, 1) - to_chat(L, "[src] burns you!") + to_chat(L, span_userdanger("[src] burns you!")) //xenomorph corrosive acid /obj/effect/acid/alien @@ -77,17 +77,17 @@ playsound(loc, 'sound/items/welder.ogg', 100, 1) target_strength-- if(target_strength <= 0) - target.visible_message("[target] collapses under its own weight into a puddle of goop and undigested debris!") + target.visible_message(span_warning("[target] collapses under its own weight into a puddle of goop and undigested debris!")) target.acid_melt() qdel(src) else switch(target_strength) if(24) - visible_message("[target] is holding up against the acid!") + visible_message(span_warning("[target] is holding up against the acid!")) if(16) - visible_message("[target] is being melted by the acid!") + visible_message(span_warning("[target] is being melted by the acid!")) if(8) - visible_message("[target] is struggling to withstand the acid!") + visible_message(span_warning("[target] is struggling to withstand the acid!")) if(4) - visible_message("[target] begins to crumble under the acid!") + visible_message(span_warning("[target] begins to crumble under the acid!")) diff --git a/code/game/objects/effects/anomalies.dm b/code/game/objects/effects/anomalies.dm index 90261e794a1a..81b6aef02977 100644 --- a/code/game/objects/effects/anomalies.dm +++ b/code/game/objects/effects/anomalies.dm @@ -76,7 +76,7 @@ /obj/effect/anomaly/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_ANALYZER || istype(I, /obj/item/multitool/tricorder)) - to_chat(user, "Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].") + to_chat(user, span_notice("Analyzing... [src]'s unstable field is fluctuating along frequency [format_frequency(aSignal.frequency)], code [aSignal.code].")) /////////////////////// @@ -171,9 +171,9 @@ return else M.adjustFireLoss(shockdamage) - M.visible_message("[M] was shocked by \the [name]!", \ - "You feel a powerful shock coursing through your body!", \ - "You hear a heavy electrical crack.") + M.visible_message(span_danger("[M] was shocked by \the [name]!"), \ + span_userdanger("You feel a powerful shock coursing through your body!"), \ + span_italics("You hear a heavy electrical crack.")) /obj/effect/anomaly/flux/detonate() if(explosive) diff --git a/code/game/objects/effects/contraband.dm b/code/game/objects/effects/contraband.dm index bad9d4123e8e..2a08dc367a47 100644 --- a/code/game/objects/effects/contraband.dm +++ b/code/game/objects/effects/contraband.dm @@ -90,10 +90,10 @@ if(I.tool_behaviour == TOOL_WIRECUTTER) I.play_tool_sound(src, 100) if(ruined) - to_chat(user, "You remove the remnants of the poster.") + to_chat(user, span_notice("You remove the remnants of the poster.")) qdel(src) else - to_chat(user, "You carefully remove the poster from the wall.") + to_chat(user, span_notice("You carefully remove the poster from the wall.")) roll_and_drop(user.loc) /obj/structure/sign/poster/attack_hand(mob/user) @@ -121,7 +121,7 @@ //separated to reduce code duplication. Moved here for ease of reference and to unclutter r_wall/attackby() /turf/closed/wall/proc/place_poster(obj/item/poster/P, mob/user) if(!P.poster_structure) - to_chat(user, "[P] has no poster... inside it? Inform a coder!") + to_chat(user, span_warning("[P] has no poster... inside it? Inform a coder!")) return // Deny placing posters on currently-diagonal walls, although the wall may change in the future. @@ -134,14 +134,14 @@ var/stuff_on_wall = 0 for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff if(istype(O, /obj/structure/sign/poster)) - to_chat(user, "The wall is far too cluttered to place a poster!") + to_chat(user, span_warning("The wall is far too cluttered to place a poster!")) return stuff_on_wall++ if(stuff_on_wall == 3) - to_chat(user, "The wall is far too cluttered to place a poster!") + to_chat(user, span_warning("The wall is far too cluttered to place a poster!")) return - to_chat(user, "You start placing the poster on the wall..." ) + to_chat(user, span_notice("You start placing the poster on the wall...") ) var/obj/structure/sign/poster/D = P.poster_structure @@ -156,10 +156,10 @@ return if(iswallturf(src) && user && user.loc == temp_loc) //Let's check if everything is still there - to_chat(user, "You place the poster!") + to_chat(user, span_notice("You place the poster!")) return - to_chat(user, "The poster falls down!") + to_chat(user, span_notice("The poster falls down!")) D.roll_and_drop(temp_loc) /turf/closed/wall/proc/place_borg_poster(obj/item/wantedposterposter/P, mob/user) @@ -173,19 +173,19 @@ var/stuff_on_wall = 0 for(var/obj/O in contents) //Let's see if it already has a poster on it or too much stuff if(istype(O, /obj/structure/sign/poster)) - to_chat(user, "The wall is far too cluttered to place a poster!") + to_chat(user, span_warning("The wall is far too cluttered to place a poster!")) return stuff_on_wall++ if(stuff_on_wall >= 3) - to_chat(user, "The wall is far too cluttered to place a poster!") + to_chat(user, span_warning("The wall is far too cluttered to place a poster!")) return - to_chat(user, "You start placing the poster on the wall..." ) + to_chat(user, span_notice("You start placing the poster on the wall...") ) var/datum/data/record/R = P.chosen var/datum/data/record/S = find_record("name", R.fields["name"], GLOB.data_core.security) //Curse old coders if(!R) - to_chat(user, "The criminal record seems to be missing!") + to_chat(user, span_notice("The criminal record seems to be missing!")) return var/obj/item/photo/photo = R.fields["photo_front"] var/wanted_name = R.fields["name"] @@ -210,10 +210,10 @@ return if(iswallturf(src) && user && user.loc == temp_loc) //Let's check if everything is still there - to_chat(user, "You place the poster!") + to_chat(user, span_notice("You place the poster!")) return - to_chat(user, "The poster falls down!") + to_chat(user, span_notice("The poster falls down!")) qdel(D) // Various possible posters follow diff --git a/code/game/objects/effects/custom_portals.dm b/code/game/objects/effects/custom_portals.dm index a65cfc331a04..33e8caa7f1d8 100644 --- a/code/game/objects/effects/custom_portals.dm +++ b/code/game/objects/effects/custom_portals.dm @@ -41,7 +41,7 @@ GLOBAL_LIST_EMPTY(custom_portals) return var/turf/real_target = get_link_target_turf() if(!real_target) - to_chat(M, "This portal has no linked portal!") + to_chat(M, span_warning("This portal has no linked portal!")) if(!force && (!ismecha(M) && !istype(M, /obj/item/projectile) && M.anchored)) return if(ismegafauna(M)) diff --git a/code/game/objects/effects/decals/cleanable.dm b/code/game/objects/effects/decals/cleanable.dm index d956ef5928b4..677af3020d24 100644 --- a/code/game/objects/effects/decals/cleanable.dm +++ b/code/game/objects/effects/decals/cleanable.dm @@ -34,17 +34,17 @@ if(src.reagents && W.reagents) . = 1 //so the containers don't splash their content on the src while scooping. if(!src.reagents.total_volume) - to_chat(user, "[src] isn't thick enough to scoop up!") + to_chat(user, span_notice("[src] isn't thick enough to scoop up!")) return if(W.reagents.total_volume >= W.reagents.maximum_volume) - to_chat(user, "[W] is full!") + to_chat(user, span_notice("[W] is full!")) return - to_chat(user, "You start scooping up [src] into [W]...") + to_chat(user, span_notice("You start scooping up [src] into [W]...")) var/scoop_time scoop_time = min((W.reagents.maximum_volume - W.reagents.total_volume), src.reagents.total_volume) //1 second per 10 units scooped if(do_mob(user, user, scoop_time)) if(src) - to_chat(user, "You scoop up [src] into [W]!") + to_chat(user, span_notice("You scoop up [src] into [W]!")) reagents.trans_to(W, reagents.total_volume, transfered_by = user) if(!reagents.total_volume) //scooped up all of it qdel(src) @@ -56,7 +56,7 @@ else var/hotness = W.is_hot() reagents.expose_temperature(hotness) - to_chat(user, "You heat [name] with [W]!") + to_chat(user, span_notice("You heat [name] with [W]!")) else return ..() diff --git a/code/game/objects/effects/decals/cleanable/food.dm b/code/game/objects/effects/decals/cleanable/food.dm index 80fbf9ce79b5..98ed08f66140 100644 --- a/code/game/objects/effects/decals/cleanable/food.dm +++ b/code/game/objects/effects/decals/cleanable/food.dm @@ -40,17 +40,17 @@ if(src.reagents && W.reagents) . = 1 //so the containers don't splash their content on the src while scooping. if(!src.reagents.total_volume) - to_chat(user, "[src] isn't thick enough to scoop up!") + to_chat(user, span_notice("[src] isn't thick enough to scoop up!")) return if(W.reagents.total_volume >= W.reagents.maximum_volume) - to_chat(user, "[W] is full!") + to_chat(user, span_notice("[W] is full!")) return - user.visible_message("[user] shamefully begins gathering up all [src]...", "You shamefully begin gathering up all [src] into [W]...") + user.visible_message(span_notice("[user] shamefully begins gathering up all [src]..."), span_notice("You shamefully begin gathering up all [src] into [W]...")) var/scoop_time scoop_time = min((W.reagents.maximum_volume - W.reagents.total_volume), src.reagents.total_volume) * 2 //don't spill your flour if(do_mob(user, user, scoop_time)) if(src) - to_chat(user, "You scoop up [src] into [W].") + to_chat(user, span_notice("You scoop up [src] into [W].")) reagents.trans_to(W, reagents.total_volume, transfered_by = user) if(!reagents.total_volume) //scooped up all of it qdel(src) diff --git a/code/game/objects/effects/decals/cleanable/misc.dm b/code/game/objects/effects/decals/cleanable/misc.dm index 6719fad372ba..2b85035348ec 100644 --- a/code/game/objects/effects/decals/cleanable/misc.dm +++ b/code/game/objects/effects/decals/cleanable/misc.dm @@ -125,7 +125,7 @@ var/mob/living/carbon/human/H = user if(isflyperson(H)) playsound(get_turf(src), 'sound/items/drink.ogg', 50, 1) //slurp - H.visible_message("[H] extends a small proboscis into the vomit pool, sucking it with a slurping sound.") + H.visible_message(span_alert("[H] extends a small proboscis into the vomit pool, sucking it with a slurping sound.")) if(reagents) for(var/datum/reagent/R in reagents.reagent_list) if (istype(R, /datum/reagent/consumable)) diff --git a/code/game/objects/effects/decals/cleanable/robots.dm b/code/game/objects/effects/decals/cleanable/robots.dm index 6a0f1be45967..1a60d8a02bfe 100644 --- a/code/game/objects/effects/decals/cleanable/robots.dm +++ b/code/game/objects/effects/decals/cleanable/robots.dm @@ -58,7 +58,7 @@ /obj/effect/decal/cleanable/oil/attackby(obj/item/I, mob/living/user) var/attacked_by_hot_thing = I.is_hot() if(attacked_by_hot_thing) - visible_message("[user] tries to ignite [src] with [I]!", "You try to ignite [src] with [I].") + visible_message(span_warning("[user] tries to ignite [src] with [I]!"), span_warning("You try to ignite [src] with [I].")) log_combat(user, src, (attacked_by_hot_thing < 480) ? "tried to ignite" : "ignited", I) fire_act(attacked_by_hot_thing) return @@ -67,7 +67,7 @@ /obj/effect/decal/cleanable/oil/fire_act(exposed_temperature, exposed_volume) if(exposed_temperature < 480) return - visible_message("[src] catches fire!") + visible_message(span_danger("[src] catches fire!")) var/turf/T = get_turf(src) qdel(src) new /obj/effect/hotspot(T) diff --git a/code/game/objects/effects/decals/remains.dm b/code/game/objects/effects/decals/remains.dm index 87337a526cb8..e495202bc05b 100644 --- a/code/game/objects/effects/decals/remains.dm +++ b/code/game/objects/effects/decals/remains.dm @@ -4,7 +4,7 @@ icon = 'icons/effects/blood.dmi' /obj/effect/decal/remains/acid_act() - visible_message("[src] dissolve[gender==PLURAL?"":"s"] into a puddle of sizzling goop!") + visible_message(span_warning("[src] dissolve[gender==PLURAL?"":"s"] into a puddle of sizzling goop!")) playsound(src, 'sound/items/welder.ogg', 150, 1) new /obj/effect/decal/cleanable/greenglow(drop_location()) qdel(src) diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm index 9d0c8bf74bab..97bd11510ef8 100644 --- a/code/game/objects/effects/effect_system/effects_foam.dm +++ b/code/game/objects/effects/effect_system/effects_foam.dm @@ -288,7 +288,7 @@ return user.changeNext_move(CLICK_CD_MELEE) user.do_attack_animation(src, ATTACK_EFFECT_PUNCH) - to_chat(user, "You hit [src] but bounce off it!") + to_chat(user, span_warning("You hit [src] but bounce off it!")) playsound(src.loc, 'sound/weapons/tap.ogg', 100, 1) /obj/structure/foamedmetal/iron @@ -323,7 +323,7 @@ if(!U.welded) U.welded = TRUE U.update_icon() - U.visible_message("[U] sealed shut!") + U.visible_message(span_danger("[U] sealed shut!")) for(var/mob/living/L in O) L.ExtinguishMob() for(var/obj/item/Item in O) diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm index dbc9b3527532..bbd44f5662b8 100644 --- a/code/game/objects/effects/effect_system/effects_other.dm +++ b/code/game/objects/effects/effect_system/effects_other.dm @@ -102,6 +102,6 @@ /datum/effect_system/reagents_explosion/start() if(explosion_message) - location.visible_message("The solution violently explodes!", \ - "You hear an explosion!") + location.visible_message(span_danger("The solution violently explodes!"), \ + span_italics("You hear an explosion!")) dyn_explosion(location, amount, flashing_factor) \ No newline at end of file diff --git a/code/game/objects/effects/effect_system/effects_smoke.dm b/code/game/objects/effects/effect_system/effects_smoke.dm index e261cf86bb28..e83f4da302a0 100644 --- a/code/game/objects/effects/effect_system/effects_smoke.dm +++ b/code/game/objects/effects/effect_system/effects_smoke.dm @@ -176,7 +176,7 @@ if(!isnull(U.welded) && !U.welded) //must be an unwelded vent pump or vent scrubber. U.welded = TRUE U.update_icon() - U.visible_message("[U] was frozen shut!") + U.visible_message(span_danger("[U] was frozen shut!")) for(var/mob/living/L in T) L.ExtinguishMob() for(var/obj/item/Item in T) diff --git a/code/game/objects/effects/glowshroom.dm b/code/game/objects/effects/glowshroom.dm index 28cc952767c2..e9f151fc1748 100644 --- a/code/game/objects/effects/glowshroom.dm +++ b/code/game/objects/effects/glowshroom.dm @@ -171,7 +171,7 @@ /obj/structure/glowshroom/acid_act(acidpwr, acid_volume) . = 1 - visible_message("[src] melts away!") + visible_message(span_danger("[src] melts away!")) var/obj/effect/decal/cleanable/molten_object/I = new (get_turf(src)) I.desc = "Looks like this was \an [src] some time ago." qdel(src) diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm index 04d1b056d698..6e0fb9d849c5 100644 --- a/code/game/objects/effects/mines.dm +++ b/code/game/objects/effects/mines.dm @@ -67,12 +67,12 @@ if(!proximity) return if(!istype(plantspot,/turf/open/floor)) - to_chat(user, "You can't plant the mine here!") + to_chat(user, span_warning("You can't plant the mine here!")) return - to_chat(user, "You start arming the [src]...") + to_chat(user, span_notice("You start arming the [src]...")) if(do_after(user, arming_time, target = src)) new mine_type(plantspot) - to_chat(user, "You plant and arm the [src].") + to_chat(user, span_notice("You plant and arm the [src].")) log_combat(user, src, "planted and armed") qdel(src) @@ -90,16 +90,16 @@ /obj/effect/mine/attackby(obj/I, mob/user, params) if(istype(I, /obj/item/multitool)) - to_chat(user, "You begin to disarm the [src]...") + to_chat(user, span_notice("You begin to disarm the [src]...")) if(do_after(user, disarm_time, target = src)) - to_chat(user, "You disarm the [src].") + to_chat(user, span_notice("You disarm the [src].")) new disarm_product(src.loc) qdel(src) return return ..() /obj/effect/mine/proc/mineEffect(mob/victim) - to_chat(victim, "*click*") + to_chat(victim, span_danger("*click*")) /obj/effect/mine/Crossed(AM as mob|obj) . = ..() @@ -122,7 +122,7 @@ /obj/effect/mine/proc/triggermine(mob/victim) if(triggered) return - visible_message("[victim] sets off [icon2html(src, viewers(src))] [src]!") + visible_message(span_danger("[victim] sets off [icon2html(src, viewers(src))] [src]!")) var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, src) s.start() @@ -200,7 +200,7 @@ /obj/effect/mine/kickmine/mineEffect(mob/victim) if(isliving(victim) && victim.client) - to_chat(victim, "You have been kicked FOR NO REISIN!") + to_chat(victim, span_userdanger("You have been kicked FOR NO REISIN!")) qdel(victim.client) @@ -287,14 +287,14 @@ chainsaw.attack_self(victim) chainsaw.wield(victim) victim.reagents.add_reagent(/datum/reagent/medicine/adminordrazine,25) - to_chat(victim, "KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!") + to_chat(victim, span_warning("KILL, KILL, KILL! YOU HAVE NO ALLIES ANYMORE, KILL THEM ALL!")) victim.client.color = pure_red animate(victim.client,color = red_splash, time = 10, easing = SINE_EASING|EASE_OUT) sleep(10) animate(victim.client,color = old_color, time = duration)//, easing = SINE_EASING|EASE_OUT) sleep(duration) - to_chat(victim, "Your bloodlust seeps back into the bog of your subconscious and you regain self control.") + to_chat(victim, span_notice("Your bloodlust seeps back into the bog of your subconscious and you regain self control.")) qdel(chainsaw) victim.log_message("exited a blood frenzy", LOG_ATTACK) qdel(src) @@ -307,7 +307,7 @@ /obj/effect/mine/pickup/healing/mineEffect(mob/living/carbon/victim) if(!victim.client || !istype(victim)) return - to_chat(victim, "You feel great!") + to_chat(victim, span_notice("You feel great!")) victim.revive(full_heal = 1, admin_revive = 1) /obj/effect/mine/pickup/speed @@ -319,8 +319,8 @@ /obj/effect/mine/pickup/speed/mineEffect(mob/living/carbon/victim) if(!victim.client || !istype(victim)) return - to_chat(victim, "You feel fast!") + to_chat(victim, span_notice("You feel fast!")) victim.add_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB, update=TRUE, priority=100, multiplicative_slowdown=-2, blacklisted_movetypes=(FLYING|FLOATING)) sleep(duration) victim.remove_movespeed_modifier(MOVESPEED_ID_YELLOW_ORB) - to_chat(victim, "You slow down.") + to_chat(victim, span_notice("You slow down.")) diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm index 5ba0f5ebc750..235c6eb8aaf7 100644 --- a/code/game/objects/effects/spiders.dm +++ b/code/game/objects/effects/spiders.dm @@ -43,7 +43,7 @@ if(istype(mover.pulledby, /mob/living/simple_animal/hostile/poison/giant_spider)) return TRUE if(prob(50)) - to_chat(mover, "You get stuck in \the [src] for a moment.") + to_chat(mover, span_danger("You get stuck in \the [src] for a moment.")) return FALSE else if(istype(mover, /obj/item/projectile)) return prob(30) @@ -141,7 +141,7 @@ var/obj/machinery/atmospherics/components/unary/vent_pump/exit_vent = pick(vents) if(prob(50)) visible_message("[src] scrambles into the ventilation ducts!", \ - "You hear something scampering through the ventilation ducts.") + span_italics("You hear something scampering through the ventilation ducts.")) spawn(rand(20,60)) forceMove(exit_vent) @@ -154,7 +154,7 @@ return if(prob(50)) - audible_message("You hear something scampering through the ventilation ducts.") + audible_message(span_italics("You hear something scampering through the ventilation ducts.")) sleep(travel_time) if(!exit_vent || exit_vent.welded) @@ -174,7 +174,7 @@ var/target_atom = pick(nearby) walk_to(src, target_atom) if(prob(40)) - src.visible_message("\The [src] skitters[pick(" away"," around","")].") + src.visible_message(span_notice("\The [src] skitters[pick(" away"," around","")].")) else if(prob(10)) //ventcrawl! for(var/obj/machinery/atmospherics/components/unary/vent_pump/v in view(7,src)) @@ -214,7 +214,7 @@ var/breakout_time = 600 user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - to_chat(user, "You struggle against the tight bonds... (This will take about [DisplayTimeText(breakout_time)].)") + to_chat(user, span_notice("You struggle against the tight bonds... (This will take about [DisplayTimeText(breakout_time)].)")) visible_message("You see something struggling and writhing in \the [src]!") if(do_after(user,(breakout_time), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src) @@ -225,7 +225,7 @@ /obj/structure/spider/cocoon/Destroy() var/turf/T = get_turf(src) - src.visible_message("\The [src] splits open.") + src.visible_message(span_warning("\The [src] splits open.")) for(var/atom/movable/A in contents) A.forceMove(T) return ..() diff --git a/code/game/objects/effects/step_triggers.dm b/code/game/objects/effects/step_triggers.dm index f8da95fee32f..c271dfb79c31 100644 --- a/code/game/objects/effects/step_triggers.dm +++ b/code/game/objects/effects/step_triggers.dm @@ -36,7 +36,7 @@ /obj/effect/step_trigger/message/Trigger(mob/M) if(M.client) - to_chat(M, "[message]") + to_chat(M, span_info("[message]")) if(once) qdel(src) diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index fe8223ccad44..deff8e03426c 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -80,7 +80,8 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/flags_cover = 0 //for flags such as GLASSESCOVERSEYES var/heat = 0 - var/sharpness = IS_BLUNT + ///All items with sharpness of SHARP_EDGED or higher will automatically get the butchering component. + var/sharpness = SHARP_NONE var/tool_behaviour = NONE var/toolspeed = 1 @@ -130,6 +131,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(GLOB.rpg_loot_items) AddComponent(/datum/component/fantasy) + if(sharpness && force > 5) //give sharp objects butchering functionality, for consistency + AddComponent(/datum/component/butchering, 80 * toolspeed) + if(force_string) item_flags |= FORCE_STRING_OVERRIDE @@ -175,6 +179,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/suicide_act(mob/user) return +/obj/item/proc/get_sharpness() + return sharpness + /obj/item/verb/move_to_top() set name = "Move To Top" set category = "Object" @@ -278,9 +285,9 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(can_handle_hot) extinguish() - to_chat(user, "You put out the fire on [src].") + to_chat(user, span_notice("You put out the fire on [src].")) else - to_chat(user, "You burn your hand on [src]!") + to_chat(user, span_warning("You burn your hand on [src]!")) var/obj/item/bodypart/affecting = C.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") if(affecting && affecting.receive_damage( 0, 5 )) // 5 burn damage C.update_damage_overlays() @@ -290,7 +297,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/mob/living/carbon/C = user if(istype(C)) if(!C.gloves || (!(C.gloves.resistance_flags & (UNACIDABLE|ACID_PROOF)))) - to_chat(user, "The acid on [src] burns your hand!") + to_chat(user, span_warning("The acid on [src] burns your hand!")) var/obj/item/bodypart/affecting = C.get_bodypart("[(user.active_hand_index % 2 == 0) ? "r" : "l" ]_arm") if(affecting && affecting.receive_damage( 0, 5 )) // 5 burn damage C.update_damage_overlays() @@ -302,7 +309,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) var/grav = user.has_gravity() if(grav > STANDARD_GRAVITY) var/grav_power = min(3,grav - STANDARD_GRAVITY) - to_chat(user,"You start picking up [src]...") + to_chat(user,span_notice("You start picking up [src]...")) if(!do_mob(user,src,30*grav_power)) return @@ -351,7 +358,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(!A.has_fine_manipulation) if(src in A.contents) // To stop Aliens having items stuck in their pockets A.dropItemToGround(src) - to_chat(user, "Your claws aren't capable of such fine manipulation!") + to_chat(user, span_warning("Your claws aren't capable of such fine manipulation!")) return attack_paw(A) @@ -373,7 +380,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) SEND_SIGNAL(src, COMSIG_ITEM_HIT_REACT, args) if(prob(final_block_chance)) - owner.visible_message("[owner] blocks [attack_text] with [src]!") + owner.visible_message(span_danger("[owner] blocks [attack_text] with [src]!")) return 1 return 0 @@ -469,15 +476,15 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(M.is_eyes_covered()) // you can't stab someone in the eyes wearing a mask! - to_chat(user, "You're going to need to remove [M.p_their()] eye protection first!") + to_chat(user, span_danger("You're going to need to remove [M.p_their()] eye protection first!")) return if(isalien(M))//Aliens don't have eyes./N slimes also don't have eyes! - to_chat(user, "You cannot locate any eyes on this creature!") + to_chat(user, span_warning("You cannot locate any eyes on this creature!")) return if(isbrain(M)) - to_chat(user, "You cannot locate any organic eyes on this brain!") + to_chat(user, span_danger("You cannot locate any organic eyes on this brain!")) return src.add_fingerprint(user) @@ -487,12 +494,12 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) user.do_attack_animation(M) if(M != user) - M.visible_message("[user] has stabbed [M] in the eye with [src]!", \ - "[user] stabs you in the eye with [src]!") + M.visible_message(span_danger("[user] has stabbed [M] in the eye with [src]!"), \ + span_userdanger("[user] stabs you in the eye with [src]!")) else user.visible_message( \ - "[user] has stabbed [user.p_them()]self in the eyes with [src]!", \ - "You stab yourself in the eyes with [src]!" \ + span_danger("[user] has stabbed [user.p_them()]self in the eyes with [src]!"), \ + span_userdanger("You stab yourself in the eyes with [src]!") \ ) if(is_human_victim) var/mob/living/carbon/human/U = M @@ -513,20 +520,20 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) if(eyes.damage >= 10) M.adjust_blurriness(15) if(M.stat != DEAD) - to_chat(M, "Your eyes start to bleed profusely!") + to_chat(M, span_danger("Your eyes start to bleed profusely!")) if(!(HAS_TRAIT(M, TRAIT_BLIND) || HAS_TRAIT(M, TRAIT_NEARSIGHT))) - to_chat(M, "You become nearsighted!") + to_chat(M, span_danger("You become nearsighted!")) M.become_nearsighted(EYE_DAMAGE) if(prob(50)) if(M.stat != DEAD) if(M.drop_all_held_items()) - to_chat(M, "You drop what you're holding and clutch at your eyes!") + to_chat(M, span_danger("You drop what you're holding and clutch at your eyes!")) M.adjust_blurriness(10) M.Unconscious(20) M.Paralyze(40) if (prob(eyes.damage - 10 + 1)) M.become_blind(EYE_DAMAGE) - to_chat(M, "You go blind!") + to_chat(M, span_danger("You go blind!")) /obj/item/singularity_pull(S, current_size) ..() @@ -605,11 +612,6 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/is_sharp() return sharpness -/obj/item/proc/get_dismemberment_chance(obj/item/bodypart/affecting) - if(affecting.can_dismember(src)) - if((sharpness || damtype == BURN) && w_class >= WEIGHT_CLASS_NORMAL && force >= 10) - . = force * (affecting.get_damage() / affecting.max_damage) - /obj/item/proc/get_dismember_sound() if(damtype == BURN) . = 'sound/weapons/sear.ogg' @@ -630,7 +632,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE) /obj/item/proc/ignition_effect(atom/A, mob/user) if(is_hot()) - . = "[user] lights [A] with [src]." + . = span_notice("[user] lights [A] with [src].") else . = "" diff --git a/code/game/objects/items/AI_modules.dm b/code/game/objects/items/AI_modules.dm index 717941cf1349..7d3b581f6ad6 100644 --- a/code/game/objects/items/AI_modules.dm +++ b/code/game/objects/items/AI_modules.dm @@ -42,7 +42,7 @@ AI MODULES //The proc other things should be calling /obj/item/aiModule/proc/install(datum/ai_laws/law_datum, mob/user) if(!bypass_law_amt_check && (!laws.len || laws[1] == "")) //So we don't loop trough an empty list and end up with runtimes. - to_chat(user, "ERROR: No laws found on board.") + to_chat(user, span_warning("ERROR: No laws found on board.")) return var/overflow = FALSE @@ -54,16 +54,16 @@ AI MODULES if(mylaw != "") tot_laws++ if(tot_laws > CONFIG_GET(number/silicon_max_law_amount) && !bypass_law_amt_check)//allows certain boards to avoid this check, eg: reset - to_chat(user, "Not enough memory allocated to [law_datum.owner ? law_datum.owner : "the AI core"]'s law processor to handle this amount of laws.") + to_chat(user, span_caution("Not enough memory allocated to [law_datum.owner ? law_datum.owner : "the AI core"]'s law processor to handle this amount of laws.")) message_admins("[ADMIN_LOOKUPFLW(user)] tried to upload laws to [law_datum.owner ? ADMIN_LOOKUPFLW(law_datum.owner) : "an AI core"] that would exceed the law cap.") overflow = TRUE var/law2log = transmitInstructions(law_datum, user, overflow) //Freeforms return something extra we need to log if(law_datum.owner) - to_chat(user, "Upload complete. [law_datum.owner]'s laws have been modified.") + to_chat(user, span_notice("Upload complete. [law_datum.owner]'s laws have been modified.")) law_datum.owner.law_change_counter++ else - to_chat(user, "Upload complete.") + to_chat(user, span_notice("Upload complete.")) var/time = time2text(world.realtime,"hh:mm:ss") var/ainame = law_datum.owner ? law_datum.owner.name : "empty AI core" @@ -77,7 +77,7 @@ AI MODULES //The proc that actually changes the silicon's laws. /obj/item/aiModule/proc/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow = FALSE) if(law_datum.owner) - to_chat(law_datum.owner, "[sender] has uploaded a change to the laws you must follow using a [name].") + to_chat(law_datum.owner, span_userdanger("[sender] has uploaded a change to the laws you must follow using a [name].")) /******************** Modules ********************/ @@ -270,15 +270,15 @@ AI MODULES if(lawpos == null) return if(lawpos <= 0) - to_chat(user, "Error: The law number of [lawpos] is invalid.") + to_chat(user, span_warning("Error: The law number of [lawpos] is invalid.")) lawpos = 1 return - to_chat(user, "Law [lawpos] selected.") + to_chat(user, span_notice("Law [lawpos] selected.")) ..() /obj/item/aiModule/remove/install(datum/ai_laws/law_datum, mob/user) if(lawpos > (law_datum.get_law_amount(list(LAW_INHERENT = 1, LAW_SUPPLIED = 1)))) - to_chat(user, "There is no law [lawpos] to delete!") + to_chat(user, span_warning("There is no law [lawpos] to delete!")) return ..() @@ -483,7 +483,7 @@ AI MODULES return var/datum/antagonist/overthrow/O = user_mind.has_antag_datum(/datum/antagonist/overthrow) if(!O) - to_chat(user, "It appears that to install this module, you require a password you do not know.") // This is the best fluff i could come up in my mind + to_chat(user, span_warning("It appears that to install this module, you require a password you do not know.")) // This is the best fluff i could come up in my mind return var/mob/living/silicon/ai/AI = law_datum.owner if(!AI) @@ -498,10 +498,10 @@ AI MODULES T.silent = TRUE target_mind.remove_antag_datum(/datum/antagonist/overthrow) if(AI) - to_chat(AI, "You feel your circuits being scrambled! You serve another overthrow team now!") // to make it clearer for the AI + to_chat(AI, span_userdanger("You feel your circuits being scrambled! You serve another overthrow team now!")) // to make it clearer for the AI T = target_mind.add_antag_datum(/datum/antagonist/overthrow, O.team) if(AI) - to_chat(AI, "You serve the [T.team] team now! Assist them in completing the team shared objectives, which you can see in your notes.") + to_chat(AI, span_warning("You serve the [T.team] team now! Assist them in completing the team shared objectives, which you can see in your notes.")) ..() /******************** Hacked AI Module ******************/ @@ -521,7 +521,7 @@ AI MODULES /obj/item/aiModule/syndicate/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow) // ..() //We don't want this module reporting to the AI who dun it. --NEO if(law_datum.owner) - to_chat(law_datum.owner, "BZZZZT") + to_chat(law_datum.owner, span_warning("BZZZZT")) if(!overflow) law_datum.owner.add_hacked_law(laws[1]) else @@ -545,7 +545,7 @@ AI MODULES /obj/item/aiModule/toyAI/transmitInstructions(datum/ai_laws/law_datum, mob/sender, overflow) //..() if(law_datum.owner) - to_chat(law_datum.owner, "BZZZZT") + to_chat(law_datum.owner, span_warning("BZZZZT")) if(!overflow) law_datum.owner.add_ion_law(laws[1]) else @@ -559,9 +559,9 @@ AI MODULES /obj/item/aiModule/toyAI/attack_self(mob/user) laws[1] = generate_ion_law() - to_chat(user, "You press the button on [src].") + to_chat(user, span_notice("You press the button on [src].")) playsound(user, 'sound/machines/click.ogg', 20, 1) - src.loc.visible_message("[icon2html(src, viewers(loc))] [laws[1]]") + src.loc.visible_message(span_warning("[icon2html(src, viewers(loc))] [laws[1]]")) /******************** Mother Drone ******************/ diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index 9e99e74426c8..e39228329ccc 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -29,7 +29,7 @@ RLD var/datum/effect_system/spark_spread/spark_system var/matter = 0 var/max_matter = 100 - var/no_ammo_message = "The \'Low Ammo\' light on the device blinks yellow." + var/no_ammo_message = span_warning("The \'Low Ammo\' light on the device blinks yellow.") var/has_ammobar = FALSE //controls whether or not does update_icon apply ammo indicator overlays var/ammo_sections = 10 //amount of divisions in the ammo indicator overlay/number of ammo indicator states /// Bitflags for upgrades @@ -79,10 +79,10 @@ RLD /// Installs an upgrade into the RCD checking if it is already installed, or if it is a banned upgrade /obj/item/construction/proc/install_upgrade(obj/item/rcd_upgrade/rcd_up, mob/user) if(rcd_up.upgrade & upgrade) - to_chat(user, "[src] has already installed this upgrade!") + to_chat(user, span_warning("[src] has already installed this upgrade!")) return if(rcd_up.upgrade & banned_upgrades) - to_chat(user, "[src] can't install this upgrade!") + to_chat(user, span_warning("[src] can't install this upgrade!")) return upgrade |= rcd_up.upgrade if((rcd_up.upgrade & RCD_UPGRADE_SILO_LINK) && !silo_mats) @@ -99,7 +99,7 @@ RLD var/obj/item/rcd_ammo/R = O var/load = min(R.ammoamt, max_matter - matter) if(load <= 0) - to_chat(user, "[src] can't hold any more matter-units!") + to_chat(user, span_warning("[src] can't hold any more matter-units!")) return FALSE R.ammoamt -= load if(R.ammoamt <= 0) @@ -110,14 +110,14 @@ RLD else if(istype(O, /obj/item/stack)) loaded = loadwithsheets(O, user) if(loaded) - to_chat(user, "[src] now holds [matter]/[max_matter] matter-units.") + to_chat(user, span_notice("[src] now holds [matter]/[max_matter] matter-units.")) update_icon() //ensures that ammo counters (if present) get updated return loaded /obj/item/construction/proc/loadwithsheets(obj/item/stack/S, mob/user) var/value = S.matter_amount if(value <= 0) - to_chat(user, "You can't insert [S.name] into [src]!") + to_chat(user, span_notice("You can't insert [S.name] into [src]!")) return FALSE var/maxsheets = round((max_matter-matter)/value) //calculate the max number of sheets that will fit in RCD if(maxsheets > 0) @@ -125,9 +125,9 @@ RLD S.use(amount_to_use) matter += value*amount_to_use playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) - to_chat(user, "You insert [amount_to_use] [S.name] sheets into [src]. ") + to_chat(user, span_notice("You insert [amount_to_use] [S.name] sheets into [src]. ")) return TRUE - to_chat(user, "You can't insert any more [S.name] sheets into [src]!") + to_chat(user, span_warning("You can't insert any more [S.name] sheets into [src]!")) return FALSE /obj/item/construction/proc/activate() @@ -150,10 +150,10 @@ RLD else if(silo_mats.on_hold()) if(user) - to_chat(user, "Mineral access is on hold, please contact the quartermaster.") + to_chat(user, span_alert("Mineral access is on hold, please contact the quartermaster.")) return FALSE if(!silo_mats.mat_container) - to_chat(user, "No silo link detected. Connect to silo via multitool.") + to_chat(user, span_alert("No silo link detected. Connect to silo via multitool.")) return FALSE if(!silo_mats.mat_container.has_materials(list(/datum/material/iron = 500), amount)) if(user) @@ -172,7 +172,7 @@ RLD else if(silo_mats.on_hold()) if(user) - to_chat(user, "Mineral access is on hold, please contact the quartermaster.") + to_chat(user, span_alert("Mineral access is on hold, please contact the quartermaster.")) return FALSE . = silo_mats.mat_container.has_materials(list(/datum/material/iron = 500), amount) if(!. && user) @@ -183,7 +183,7 @@ RLD /obj/item/construction/proc/range_check(atom/A, mob/user) if(!(A in view(7, get_turf(user)))) - to_chat(user, "The \'Out of Range\' light on [src] blinks red.") + to_chat(user, span_warning("The \'Out of Range\' light on [src] blinks red.")) return FALSE else return TRUE @@ -241,7 +241,7 @@ RLD var/obj/item/electronics/airlock/airlock_electronics /obj/item/construction/rcd/suicide_act(mob/user) - user.visible_message("[user] sets the RCD to 'Wall' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide..") + user.visible_message(span_suicide("[user] sets the RCD to 'Wall' and points it down [user.p_their()] throat! It looks like [user.p_theyre()] trying to commit suicide..")) return (BRUTELOSS) /obj/item/construction/rcd/verb/toggle_window_glass_verb() @@ -311,17 +311,17 @@ RLD else window_type = /obj/structure/window/fulltile - to_chat(user, "You change \the [src]'s window mode to [window_size] [window_glass] window.") + to_chat(user, span_notice("You change \the [src]'s window mode to [window_size] [window_glass] window.")) /obj/item/construction/rcd/proc/toggle_silo_link(mob/user) if(silo_mats) if(!silo_mats.mat_container) - to_chat(user, "No silo link detected. Connect to silo via multitool.") + to_chat(user, span_alert("No silo link detected. Connect to silo via multitool.")) return FALSE silo_link = !silo_link - to_chat(user, "You change \the [src]'s storage link state: [silo_link ? "ON" : "OFF"].") + to_chat(user, span_notice("You change \the [src]'s storage link state: [silo_link ? "ON" : "OFF"].")) else - to_chat(user, "\the [src] doesn't have remote storage connection.") + to_chat(user, span_warning("\the [src] doesn't have remote storage connection.")) /obj/item/construction/rcd/proc/get_airlock_image(airlock_type) var/obj/machinery/door/airlock/proto = airlock_type @@ -634,7 +634,7 @@ RLD else return playsound(src, 'sound/effects/pop.ogg', 50, FALSE) - to_chat(user, "You change RCD's mode to '[choice]'.") + to_chat(user, span_notice("You change RCD's mode to '[choice]'.")) /obj/item/construction/rcd/proc/target_check(atom/A, mob/user) // only returns true for stuff the device can actually work with if((isturf(A) && A.density && mode==RCD_DECONSTRUCT) || (isturf(A) && !A.density) || (istype(A, /obj/machinery/door/airlock) && mode==RCD_DECONSTRUCT) || istype(A, /obj/structure/grille) || (istype(A, /obj/structure/window) && mode==RCD_DECONSTRUCT) || istype(A, /obj/structure/girder)) @@ -671,7 +671,7 @@ RLD update_icon() /obj/item/construction/rcd/borg - no_ammo_message = "Insufficient charge." + no_ammo_message = span_warning("Insufficient charge.") desc = "A device used to rapidly build walls and floors." canRturf = TRUE banned_upgrades = RCD_UPGRADE_SILO_LINK @@ -810,13 +810,13 @@ RLD switch(mode) if(REMOVE_MODE) mode = LIGHT_MODE - to_chat(user, "You change RLD's mode to 'Permanent Light Construction'.") + to_chat(user, span_notice("You change RLD's mode to 'Permanent Light Construction'.")) if(LIGHT_MODE) mode = GLOW_MODE - to_chat(user, "You change RLD's mode to 'Light Launcher'.") + to_chat(user, span_notice("You change RLD's mode to 'Light Launcher'.")) if(GLOW_MODE) mode = REMOVE_MODE - to_chat(user, "You change RLD's mode to 'Deconstruct'.") + to_chat(user, span_notice("You change RLD's mode to 'Deconstruct'.")) /obj/item/construction/rld/proc/checkdupes(var/target) @@ -836,7 +836,7 @@ RLD if(REMOVE_MODE) if(istype(A, /obj/machinery/light/)) if(checkResource(deconcost, user)) - to_chat(user, "You start deconstructing [A]...") + to_chat(user, span_notice("You start deconstructing [A]...")) user.Beam(A,icon_state="nzcrentrs_power",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) if(do_after(user, decondelay, target = A)) @@ -850,7 +850,7 @@ RLD if(iswallturf(A)) var/turf/closed/wall/W = A if(checkResource(floorcost, user)) - to_chat(user, "You start building a wall light...") + to_chat(user, span_notice("You start building a wall light...")) user.Beam(A,icon_state="nzcrentrs_power",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) playsound(src.loc, 'sound/effects/light_flicker.ogg', 50, FALSE) @@ -866,7 +866,7 @@ RLD if(start.CanAtmosPass(C) && !dupes.len) candidates += C if(!candidates.len) - to_chat(user, "Valid target not found...") + to_chat(user, span_warning("Valid target not found...")) playsound(src.loc, 'sound/misc/compiler-failure.ogg', 30, TRUE) return FALSE for(var/turf/open/O in candidates) @@ -896,7 +896,7 @@ RLD if(isfloorturf(A)) var/turf/open/floor/F = A if(checkResource(floorcost, user)) - to_chat(user, "You start building a floor light...") + to_chat(user, span_notice("You start building a floor light...")) user.Beam(A,icon_state="light_beam",time=15) playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) playsound(src.loc, 'sound/effects/light_flicker.ogg', 50, TRUE) @@ -916,7 +916,7 @@ RLD if(GLOW_MODE) if(useResource(launchcost, user)) activate() - to_chat(user, "You fire a glowstick!") + to_chat(user, span_notice("You fire a glowstick!")) var/obj/item/flashlight/glowstick/G = new /obj/item/flashlight/glowstick(start) G.color = color_choice G.light_color = G.color diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index e568fbb9755d..458fd4f5f981 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -29,7 +29,7 @@ if(!loaded) if(!user.transferItemToLoc(W, src)) - to_chat(user, "[src] is stuck to your hand!") + to_chat(user, span_warning("[src] is stuck to your hand!")) return else loaded = W //W.loc is src at this point. @@ -43,12 +43,12 @@ else return update_icon() - to_chat(user, "You add the cables to [src]. It now contains [loaded.amount].") + to_chat(user, span_notice("You add the cables to [src]. It now contains [loaded.amount].")) else if(W.tool_behaviour == TOOL_SCREWDRIVER) if(!loaded) return if(ghetto && prob(10)) //Is it a ghetto RCL? If so, give it a 10% chance to fall apart - to_chat(user, "You attempt to loosen the securing screws on the side, but it falls apart!") + to_chat(user, span_warning("You attempt to loosen the securing screws on the side, but it falls apart!")) while(loaded.amount > 30) //There are only two kinds of situations: "nodiff" (60,90), or "diff" (31-59, 61-89) var/diff = loaded.amount % 30 if(diff) @@ -60,7 +60,7 @@ qdel(src) return - to_chat(user, "You loosen the securing screws on the side, allowing you to lower the guiding edge and retrieve the wires.") + to_chat(user, span_notice("You loosen the securing screws on the side, allowing you to lower the guiding edge and retrieve the wires.")) while(loaded.amount > 30) //There are only two kinds of situations: "nodiff" (60,90), or "diff" (31-59, 61-89) var/diff = loaded.amount % 30 if(diff) @@ -81,7 +81,7 @@ /obj/item/twohanded/rcl/examine(mob/user) . = ..() if(loaded) - . += "It contains [loaded.amount]/[max_amount] cables." + . += span_info("It contains [loaded.amount]/[max_amount] cables.") /obj/item/twohanded/rcl/Destroy() QDEL_NULL(loaded) @@ -113,7 +113,7 @@ update_icon() if(!loaded || !loaded.amount) if(loud) - to_chat(user, "The last of the cables unreel from [src].") + to_chat(user, span_notice("The last of the cables unreel from [src].")) if(loaded) QDEL_NULL(loaded) loaded = null @@ -167,11 +167,11 @@ if(!isturf(user.loc)) return if(is_empty(user, 0)) - to_chat(user, "\The [src] is empty!") + to_chat(user, span_warning("\The [src] is empty!")) return if(prob(2) && ghetto) //Give ghetto RCLs a 2% chance to jam, requiring it to be reactviated manually. - to_chat(user, "[src]'s wires jam!") + to_chat(user, span_warning("[src]'s wires jam!")) active = FALSE return else @@ -259,7 +259,7 @@ if(!isturf(user.loc)) return if(is_empty(user, 0)) - to_chat(user, "\The [src] is empty!") + to_chat(user, span_warning("\The [src] is empty!")) return var/turf/T = get_turf(user) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index 865a6f45ff81..38323903c1ec 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -275,7 +275,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( ui_interact(user) /obj/item/pipe_dispenser/suicide_act(mob/user) - user.visible_message("[user] points the end of the RPD down [user.p_their()] throat and presses a button! It looks like [user.p_theyre()] trying to commit suicide...") + user.visible_message(span_suicide("[user] points the end of the RPD down [user.p_their()] throat and presses a button! It looks like [user.p_theyre()] trying to commit suicide...")) playsound(get_turf(user), 'sound/machines/click.ogg', 50, 1) playsound(get_turf(user), 'sound/items/deconstruct.ogg', 50, 1) return(BRUTELOSS) @@ -399,10 +399,10 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( if(istype(A, /obj/item/pipe)) var/obj/item/pipe/P = A if(!P.disposable) - to_chat(usr, "[src] is too valuable to dispose of!") + to_chat(usr, span_warning("[src] is too valuable to dispose of!")) return // yogs end - to_chat(user, "You start destroying a pipe...") + to_chat(user, span_notice("You start destroying a pipe...")) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, destroy_speed, target = A)) activate() @@ -412,24 +412,24 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( if((mode&PAINT_MODE)) if(istype(A, /obj/machinery/atmospherics/pipe) && !istype(A, /obj/machinery/atmospherics/pipe/layer_manifold)) var/obj/machinery/atmospherics/pipe/P = A - to_chat(user, "You start painting \the [P] [paint_color]...") + to_chat(user, span_notice("You start painting \the [P] [paint_color]...")) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, paint_speed, target = A)) P.paint(GLOB.pipe_paint_colors[paint_color]) //paint the pipe - user.visible_message("[user] paints \the [P] [paint_color].","You paint \the [P] [paint_color].") + user.visible_message(span_notice("[user] paints \the [P] [paint_color]."),span_notice("You paint \the [P] [paint_color].")) return var/obj/item/pipe/P = A if(istype(P) && findtext("[P.pipe_type]", "/obj/machinery/atmospherics/pipe") && !findtext("[P.pipe_type]", "layer_manifold")) - to_chat(user, "You start painting \the [A] [paint_color]...") + to_chat(user, span_notice("You start painting \the [A] [paint_color]...")) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, paint_speed, target = A)) A.add_atom_colour(GLOB.pipe_paint_colors[paint_color], FIXED_COLOUR_PRIORITY) //paint the pipe - user.visible_message("[user] paints \the [A] [paint_color].","You paint \the [A] [paint_color].") + user.visible_message(span_notice("[user] paints \the [A] [paint_color]."),span_notice("You paint \the [A] [paint_color].")) return if(mode&BUILD_MODE) if(istype(get_area(user), /area/reebe/city_of_cogs)) - to_chat(user, "You cannot build on Reebe..") + to_chat(user, span_notice("You cannot build on Reebe..")) return switch(category) //if we've gotten this var, the target is valid if(ATMOS_CATEGORY) //Making pipes @@ -437,7 +437,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( return ..() playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if (recipe.type == /datum/pipe_info/meter) - to_chat(user, "You start building a meter...") + to_chat(user, span_notice("You start building a meter...")) if(do_after(user, atmos_build_speed, target = A)) activate() var/obj/item/pipe_meter/PM = new /obj/item/pipe_meter(get_turf(A)) @@ -446,12 +446,12 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( PM.wrench_act(user, src) else if(recipe.all_layers == FALSE && (piping_layer == 1 || piping_layer == 5)) - to_chat(user, "You can't build this object on the layer...") + to_chat(user, span_notice("You can't build this object on the layer...")) return ..() - to_chat(user, "You start building a pipe...") + to_chat(user, span_notice("You start building a pipe...")) if(do_after(user, atmos_build_speed, target = A)) if(recipe.all_layers == FALSE && (piping_layer == 1 || piping_layer == 5))//double check to stop cheaters (and to not waste time waiting for something that can't be placed) - to_chat(user, "You can't build this object on the layer...") + to_chat(user, span_notice("You can't build this object on the layer...")) return ..() activate() var/obj/machinery/atmospherics/path = queued_p_type @@ -475,15 +475,15 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( return ..() A = get_turf(A) if(isclosedturf(A)) - to_chat(user, "[src]'s error light flickers; there's something in the way!") + to_chat(user, span_warning("[src]'s error light flickers; there's something in the way!")) return - to_chat(user, "You start building a disposals pipe...") + to_chat(user, span_notice("You start building a disposals pipe...")) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, disposal_build_speed, target = A)) var/obj/structure/disposalconstruct/C = new (A, queued_p_type, queued_p_dir, queued_p_flipped) if(!C.can_place()) - to_chat(user, "There's not enough room to build that here!") + to_chat(user, span_warning("There's not enough room to build that here!")) qdel(C) return @@ -500,9 +500,9 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( return ..() A = get_turf(A) if(isclosedturf(A)) - to_chat(user, "[src]'s error light flickers; there's something in the way!") + to_chat(user, span_warning("[src]'s error light flickers; there's something in the way!")) return - to_chat(user, "You start building a transit tube...") + to_chat(user, span_notice("You start building a transit tube...")) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, transit_build_speed, target = A)) activate() @@ -529,9 +529,9 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( return ..() A = get_turf(A) if(isclosedturf(A)) - to_chat(user, "[src]'s error light flickers; there's something in the way!") + to_chat(user, span_warning("[src]'s error light flickers; there's something in the way!")) return - to_chat(user, "You start building a fluid duct...") + to_chat(user, span_notice("You start building a fluid duct...")) playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1) if(do_after(user, plumbing_build_speed, target = A)) var/obj/machinery/duct/D @@ -562,7 +562,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list( piping_layer = max(PIPING_LAYER_MIN, piping_layer - 1) else return - to_chat(source, "You set the layer to [piping_layer].") + to_chat(source, span_notice("You set the layer to [piping_layer].")) /obj/item/pipe_dispenser/plumbing name = "Plumberinator" diff --git a/code/game/objects/items/RSF.dm b/code/game/objects/items/RSF.dm index 9163a967df5f..e38c7f736cb4 100644 --- a/code/game/objects/items/RSF.dm +++ b/code/game/objects/items/RSF.dm @@ -40,7 +40,7 @@ RSF /obj/item/rsf/examine(mob/user) . = ..() - . += "It currently holds [matter]/[max_matter] matter-units." + . += span_notice("It currently holds [matter]/[max_matter] matter-units.") /obj/item/rsf/cyborg matter = 50 @@ -50,7 +50,7 @@ RSF if(istype(W, /obj/item/rcd_ammo))//If the thing we got hit by is in our matter list var/tempMatter = matter + 10 if(tempMatter > max_matter) - to_chat(user, "\The [src] can't hold any more matter-units!") + to_chat(user, span_warning("\The [src] can't hold any more matter-units!")) return qdel(W) matter = tempMatter //We add its value @@ -63,7 +63,7 @@ RSF return ..() if(loaded) - to_chat(user, "[src] now holds [matter]/[max_matter] matter-units.") + to_chat(user, span_notice("[src] now holds [matter]/[max_matter] matter-units.")) icon_state = initial(icon_state)//and set the icon state to the initial value it had playsound(src.loc, 'sound/machines/click.ogg', 10, 1) @@ -90,16 +90,16 @@ RSF /obj/item/rsf/proc/loadwithsheets(obj/item/stack/S, mob/user) var/value = S.matter_amount if(value <= 0) - to_chat(user, "You can't insert [S.name] into [src]!") + to_chat(user, span_notice("You can't insert [S.name] into [src]!")) return FALSE var/maxsheets = round((max_matter-matter)/value) //calculate the max number of sheets that will fit in RCD if(maxsheets > 0) var/amount_to_use = min(S.amount, maxsheets) S.use(amount_to_use) matter += value*amount_to_use - to_chat(user, "You insert [amount_to_use] [S.name] sheets into [src]. ") + to_chat(user, span_notice("You insert [amount_to_use] [S.name] sheets into [src]. ")) return TRUE - to_chat(user, "You can't insert any more [S.name] sheets into [src]!") + to_chat(user, span_warning("You can't insert any more [S.name] sheets into [src]!")) return FALSE ///Forms a radial menu based off an object in a list, or a list's associated object @@ -125,7 +125,7 @@ RSF if(use_matter(dispense_cost, user))//If we can charge that amount of charge, we do so and return true playsound(loc, 'sound/machines/click.ogg', 10, TRUE) var/atom/meme = new to_dispense(get_turf(A)) - to_chat(user, "[action_type] [meme.name]...") + to_chat(user, span_notice("[action_type] [meme.name]...")) ///A helper proc. checks to see if we can afford the amount of charge that is passed, and if we can docs the charge from our base, and returns TRUE. If we can't we return FALSE /obj/item/rsf/proc/use_matter(charge, mob/user) @@ -133,18 +133,18 @@ RSF var/mob/living/silicon/robot/R = user var/end_charge = R.cell.charge - charge if(end_charge < 0) - to_chat(user, "You do not have enough power to use [src].") + to_chat(user, span_warning("You do not have enough power to use [src].")) icon_state = spent_icon_state return FALSE R.cell.charge = end_charge return TRUE else if(matter - 1 < 0) - to_chat(user, "\The [src] doesn't have enough matter-units left.") + to_chat(user, span_warning("\The [src] doesn't have enough matter-units left.")) icon_state = spent_icon_state return FALSE matter-- - to_chat(user, "\The [src] now holds [matter]/[max_matter] matter-units.") + to_chat(user, span_notice("\The [src] now holds [matter]/[max_matter] matter-units.")) return TRUE ///Helper proc that iterates through all the things we are allowed to spawn on, and sees if the passed atom is one of them @@ -153,7 +153,7 @@ RSF if(istype(to_check, sort)) return TRUE - to_chat(user, "\The [src] is unable to place this here!") + to_chat(user, span_warning("\The [src] is unable to place this here!")) return FALSE /obj/item/rsf/cookiesynth @@ -184,9 +184,9 @@ RSF /obj/item/rsf/cookiesynth/emag_act(mob/user) obj_flags ^= EMAGGED if(obj_flags & EMAGGED) - to_chat(user, "You short out [src]'s reagent safety checker!") + to_chat(user, span_warning("You short out [src]'s reagent safety checker!")) else - to_chat(user, "You reset [src]'s reagent safety checker!") + to_chat(user, span_warning("You reset [src]'s reagent safety checker!")) /obj/item/rsf/cookiesynth/attack_self(mob/user) var/mob/living/silicon/robot/P = null @@ -239,12 +239,12 @@ RSF if (!(istype(A, /obj/structure/table) || isfloorturf(A))) return if(matter < 1) - to_chat(user, "[src] doesn't have enough matter left. Wait for it to recharge!") + to_chat(user, span_warning("[src] doesn't have enough matter left. Wait for it to recharge!")) return if(iscyborg(user)) var/mob/living/silicon/robot/R = user if(!R.cell || R.cell.charge < 400) - to_chat(user, "You do not have enough power to use [src].") + to_chat(user, span_warning("You do not have enough power to use [src].")) return var/turf/T = get_turf(A) playsound(src.loc, 'sound/machines/click.ogg', 10, 1) diff --git a/code/game/objects/items/airlock_painter.dm b/code/game/objects/items/airlock_painter.dm index 8055048e6b1c..724c6df2a745 100644 --- a/code/game/objects/items/airlock_painter.dm +++ b/code/game/objects/items/airlock_painter.dm @@ -53,10 +53,10 @@ //because you're expecting user input. /obj/item/airlock_painter/proc/can_use(mob/user) if(!ink) - to_chat(user, "There is no toner cartridge installed in [src]!") + to_chat(user, span_warning("There is no toner cartridge installed in [src]!")) return FALSE else if(ink.charges < 1) - to_chat(user, "[src] is out of ink!") + to_chat(user, span_warning("[src] is out of ink!")) return FALSE else return TRUE @@ -65,7 +65,7 @@ var/obj/item/organ/lungs/L = user.getorganslot(ORGAN_SLOT_LUNGS) if(can_use(user) && L) - user.visible_message("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is inhaling toner from [src]! It looks like [user.p_theyre()] trying to commit suicide!")) use(user) // Once you've inhaled the toner, you throw up your lungs @@ -91,27 +91,27 @@ // TODO maybe add some colorful vomit? - user.visible_message("[user] vomits out [user.p_their()] [L]!") + user.visible_message(span_suicide("[user] vomits out [user.p_their()] [L]!")) playsound(user.loc, 'sound/effects/splat.ogg', 50, TRUE) L.forceMove(T) return (TOXLOSS|OXYLOSS) else if(can_use(user) && !L) - user.visible_message("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.") + user.visible_message(span_suicide("[user] is spraying toner on [user.p_them()]self from [src]! It looks like [user.p_theyre()] trying to commit suicide.")) user.reagents.add_reagent(/datum/reagent/colorful_reagent, 1) user.reagents.reaction(user, TOUCH, 1) return TOXLOSS else - user.visible_message("[user] is trying to inhale toner from [src]! It might be a suicide attempt if [src] had any toner.") + user.visible_message(span_suicide("[user] is trying to inhale toner from [src]! It might be a suicide attempt if [src] had any toner.")) return SHAME /obj/item/airlock_painter/examine(mob/user) . = ..() if(!ink) - . += "It doesn't have a toner cartridge installed." + . += span_notice("It doesn't have a toner cartridge installed.") return var/ink_level = "high" if(ink.charges < 1) @@ -120,17 +120,17 @@ ink_level = "low" else if((ink.charges/ink.max_charges) > 1) //Over 100% (admin var edit) ink_level = "dangerously high" - . += "Its ink levels look [ink_level]." + . += span_notice("Its ink levels look [ink_level].") /obj/item/airlock_painter/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/toner)) if(ink) - to_chat(user, "[src] already contains \a [ink]!") + to_chat(user, span_warning("[src] already contains \a [ink]!")) return if(!user.transferItemToLoc(W, src)) return - to_chat(user, "You install [W] into [src].") + to_chat(user, span_notice("You install [W] into [src].")) ink = W playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) else @@ -141,5 +141,5 @@ playsound(src.loc, 'sound/machines/click.ogg', 50, TRUE) ink.forceMove(user.drop_location()) user.put_in_hands(ink) - to_chat(user, "You remove [ink] from [src].") + to_chat(user, span_notice("You remove [ink] from [src].")) ink = null diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm index d8279832bb44..0028667330da 100644 --- a/code/game/objects/items/apc_frame.dm +++ b/code/game/objects/items/apc_frame.dm @@ -19,13 +19,13 @@ var/turf/T = get_turf(user) var/area/A = get_area(T) if(!isfloorturf(T)) - to_chat(user, "You cannot place [src] on this spot!") + to_chat(user, span_warning("You cannot place [src] on this spot!")) return if(A.always_unpowered) - to_chat(user, "You cannot place [src] in this area!") + to_chat(user, span_warning("You cannot place [src] in this area!")) return if(gotwallitem(T, ndir, inverse*2)) - to_chat(user, "There's already an item on this wall!") + to_chat(user, span_warning("There's already an item on this wall!")) return return TRUE @@ -34,8 +34,8 @@ if(result_path) playsound(src.loc, 'sound/machines/click.ogg', 75, 1) user.visible_message("[user.name] attaches [src] to the wall.", - "You attach [src] to the wall.", - "You hear clicking.") + span_notice("You attach [src] to the wall."), + span_italics("You hear clicking.")) var/ndir = get_dir(on_wall,user) if(inverse) ndir = turn(ndir, 180) @@ -70,7 +70,7 @@ var/glass_amt = round(materials[/datum/material/glass]/MINERAL_MATERIAL_AMOUNT) if(W.tool_behaviour == TOOL_WRENCH && (metal_amt || glass_amt)) - to_chat(user, "You dismantle [src].") + to_chat(user, span_notice("You dismantle [src].")) if(metal_amt) new /obj/item/stack/sheet/metal(get_turf(src), metal_amt) if(glass_amt) @@ -94,18 +94,18 @@ var/turf/T = get_turf(on_wall) //the user is not where it needs to be. var/area/A = get_area(T) if(A.get_apc()) - to_chat(user, "This area already has an APC!") + to_chat(user, span_warning("This area already has an APC!")) return //only one APC per area if(!A.requires_power) - to_chat(user, "You cannot place [src] in this area!") + to_chat(user, span_warning("You cannot place [src] in this area!")) return //can't place apcs in areas with no power requirement for(var/obj/machinery/power/terminal/E in T) if(E.master) - to_chat(user, "There is another network terminal here!") + to_chat(user, span_warning("There is another network terminal here!")) return else new /obj/item/stack/cable_coil(T, 10) - to_chat(user, "You cut the cables and disassemble the unused power terminal.") + to_chat(user, span_notice("You cut the cables and disassemble the unused power terminal.")) qdel(E) return TRUE diff --git a/code/game/objects/items/armor_polish.dm b/code/game/objects/items/armor_polish.dm index 7f82fa292d27..58570c7c0d84 100644 --- a/code/game/objects/items/armor_polish.dm +++ b/code/game/objects/items/armor_polish.dm @@ -27,19 +27,19 @@ obj/item/armorpolish/afterattack(atom/target, mob/user, proximity) remaining_uses -= 1 to_chat(user, "You apply [src] to the [target.name].") if(remaining_uses <= 0) { - to_chat(user, "The [src] disintegrates into nothing...") + to_chat(user, span_warning("The [src] disintegrates into nothing...")) qdel(src) } else { - to_chat(user, "The [src] has [remaining_uses] use[remaining_uses > 1 ? "s" : ""] left.") + to_chat(user, span_warning("The [src] has [remaining_uses] use[remaining_uses > 1 ? "s" : ""] left.")) } else if(istype(target,/obj/item/clothing/suit)) { - to_chat(user, "This suit is strong enough already! Try it on something weaker.") + to_chat(user, span_warning("This suit is strong enough already! Try it on something weaker.")) } else { - to_chat(user, "This headgear is strong enough already! Try it on something weaker.") + to_chat(user, span_warning("This headgear is strong enough already! Try it on something weaker.")) } else - to_chat(user, "You can only polish suits and headgear!") + to_chat(user, span_warning("You can only polish suits and headgear!")) diff --git a/code/game/objects/items/blueprints.dm b/code/game/objects/items/blueprints.dm index e5b0617c63c0..1bd3eccff5e6 100644 --- a/code/game/objects/items/blueprints.dm +++ b/code/game/objects/items/blueprints.dm @@ -101,9 +101,9 @@ if(href_list["view_wireset"]) legend = href_list["view_wireset"]; if(href_list["view_blueprints"]) - set_viewer(usr, "You flip the blueprints over to view the complex information diagram.") + set_viewer(usr, span_notice("You flip the blueprints over to view the complex information diagram.")) if(href_list["hide_blueprints"]) - clear_viewer(usr,"You flip the blueprints over to view the simple information diagram.") + clear_viewer(usr,span_notice("You flip the blueprints over to view the simple information diagram.")) if(href_list["refresh"]) clear_viewer(usr) set_viewer(usr) @@ -186,12 +186,12 @@ if(!str || !length(str) || str==prevname) //cancel return if(length(str) > 50) - to_chat(usr, "The given name is too long. The area's name is unchanged.") + to_chat(usr, span_warning("The given name is too long. The area's name is unchanged.")) return rename_area(A, str) - to_chat(usr, "You rename the '[prevname]' to '[str]'.") + to_chat(usr, span_notice("You rename the '[prevname]' to '[str]'.")) log_game("[key_name(usr)] has renamed [prevname] to [str]") A.update_areasize() interact() diff --git a/code/game/objects/items/body_egg.dm b/code/game/objects/items/body_egg.dm index f4af60fdafa5..91abab8e840d 100644 --- a/code/game/objects/items/body_egg.dm +++ b/code/game/objects/items/body_egg.dm @@ -7,7 +7,7 @@ /obj/item/organ/body_egg/on_find(mob/living/finder) ..() - to_chat(finder, "You found an unknown alien organism in [owner]'s [zone]!") + to_chat(finder, span_warning("You found an unknown alien organism in [owner]'s [zone]!")) /obj/item/organ/body_egg/New(loc) if(iscarbon(loc)) diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm index 213e63c328d4..aff64dbbb7dd 100644 --- a/code/game/objects/items/bodybag.dm +++ b/code/game/objects/items/bodybag.dm @@ -25,7 +25,7 @@ /obj/item/bodybag/suicide_act(mob/user) if(isopenturf(user.loc)) - user.visible_message("[user] is crawling into [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is crawling into [src]! It looks like [user.p_theyre()] trying to commit suicide!")) var/obj/structure/closet/body_bag/R = new unfoldedbag_path(user.loc) R.add_fingerprint(user) qdel(src) @@ -53,13 +53,13 @@ . = ..() if(contents.len) var/s = contents.len == 1 ? "" : "s" - . += "You can make out the shape[s] of [contents.len] object[s] through the fabric." + . += span_notice("You can make out the shape[s] of [contents.len] object[s] through the fabric.") /obj/item/bodybag/bluespace/Destroy() for(var/atom/movable/A in contents) A.forceMove(get_turf(src)) if(isliving(A)) - to_chat(A, "You suddenly feel the space around you torn apart! You're free!") + to_chat(A, span_notice("You suddenly feel the space around you torn apart! You're free!")) return ..() /obj/item/bodybag/bluespace/proc/CanReachReact(atom/movable/source, list/next) @@ -70,7 +70,7 @@ for(var/atom/movable/A in contents) A.forceMove(R) if(isliving(A)) - to_chat(A, "You suddenly feel air around you! You're free!") + to_chat(A, span_notice("You suddenly feel air around you! You're free!")) R.open(user) R.add_fingerprint(user) R.foldedbag_instance = src @@ -78,14 +78,14 @@ /obj/item/bodybag/bluespace/container_resist(mob/living/user) if(user.incapacitated()) - to_chat(user, "You can't get out while you're restrained like this!") + to_chat(user, span_warning("You can't get out while you're restrained like this!")) return user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - to_chat(user, "You claw at the fabric of [src], trying to tear it open...") - to_chat(loc, "Someone starts trying to break free of [src]!") + to_chat(user, span_notice("You claw at the fabric of [src], trying to tear it open...")) + to_chat(loc, span_warning("Someone starts trying to break free of [src]!")) if(!do_after(user, 200, target = src)) - to_chat(loc, "The pressure subsides. It seems that they've stopped resisting...") + to_chat(loc, span_warning("The pressure subsides. It seems that they've stopped resisting...")) return - loc.visible_message("[user] suddenly appears in front of [loc]!", "[user] breaks free of [src]!") + loc.visible_message(span_warning("[user] suddenly appears in front of [loc]!"), span_userdanger("[user] breaks free of [src]!")) qdel(src) diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm index 5a2b457ff21f..ebc90bd5c558 100644 --- a/code/game/objects/items/candle.dm +++ b/code/game/objects/items/candle.dm @@ -71,7 +71,7 @@ /obj/item/candle/attack_self(mob/user) if(put_out_candle()) - user.visible_message("[user] snuffs [src].") + user.visible_message(span_notice("[user] snuffs [src].")) /obj/item/candle/infinite infinite = TRUE diff --git a/code/game/objects/items/cardboard_cutouts.dm b/code/game/objects/items/cardboard_cutouts.dm index fc631ae1fc49..5b433a90b0cd 100644 --- a/code/game/objects/items/cardboard_cutouts.dm +++ b/code/game/objects/items/cardboard_cutouts.dm @@ -38,7 +38,7 @@ /obj/item/cardboard_cutout/attack_hand(mob/living/user) if(user.a_intent == INTENT_HELP || pushed_over) return ..() - user.visible_message("[user] pushes over [src]!", "You push over [src]!") + user.visible_message(span_warning("[user] pushes over [src]!"), span_danger("You push over [src]!")) playsound(src, 'sound/weapons/genhit.ogg', 50, 1) push_over() @@ -54,7 +54,7 @@ /obj/item/cardboard_cutout/attack_self(mob/living/user) if(!pushed_over) return - to_chat(user, "You right [src].") + to_chat(user, span_notice("You right [src].")) desc = initial(desc) icon = initial(icon) icon_state = initial(icon_state) //This resets a cutout to its blank state - this is intentional to allow for resetting @@ -86,7 +86,7 @@ /obj/item/cardboard_cutout/bullet_act(obj/item/projectile/P) if(istype(P, /obj/item/projectile/bullet/reusable)) P.on_hit(src, 0) - visible_message("[src] has been hit by [P]!") + visible_message(span_danger("[src] has been hit by [P]!")) playsound(src, 'sound/weapons/slice.ogg', 50, 1) if(prob(P.damage)) push_over() @@ -108,7 +108,7 @@ return FALSE if(!check_menu(user, crayon)) return FALSE - user.visible_message("[user] gives [src] a new look.", "Voila! You give [src] a new look.") + user.visible_message(span_notice("[user] gives [src] a new look."), span_notice("Voila! You give [src] a new look.")) crayon.use_charges(1) crayon.check_empty(user) alpha = 255 @@ -213,14 +213,14 @@ if(user.incapacitated()) return FALSE if(pushed_over) - to_chat(user, "Right [src] first!") + to_chat(user, span_warning("Right [src] first!")) return FALSE if(!crayon || !user.is_holding(crayon)) return FALSE if(crayon.check_empty(user)) return FALSE if(crayon.is_capped) - to_chat(user, "Take the cap off first!") + to_chat(user, span_warning("Take the cap off first!")) return FALSE return TRUE diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 204741af900a..c7782039530e 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -20,7 +20,7 @@ var/list/files = list() /obj/item/card/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins to swipe [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] begins to swipe [user.p_their()] neck with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS /obj/item/card/data @@ -140,7 +140,7 @@ var/minor if(registered_name && registered_age && registered_age < AGE_MINOR) minor = " (MINOR)" - user.visible_message("[user] shows you: [icon2html(src, viewers(user))] [src.name][minor].", "You show \the [src.name][minor].") + user.visible_message(span_notice("[user] shows you: [icon2html(src, viewers(user))] [src.name][minor]."), span_notice("You show \the [src.name][minor].")) /obj/item/card/id/vv_edit_var(var_name, var_value) . = ..() @@ -165,20 +165,20 @@ /obj/item/card/id/proc/insert_money(obj/item/I, mob/user, physical_currency) var/cash_money = I.get_item_credit_value() if(!cash_money) - to_chat(user, "[I] doesn't seem to be worth anything!") + to_chat(user, span_warning("[I] doesn't seem to be worth anything!")) return if(!registered_account) - to_chat(user, "[src] doesn't have a linked account to deposit [I] into!") + to_chat(user, span_warning("[src] doesn't have a linked account to deposit [I] into!")) return registered_account.adjust_money(cash_money) if(physical_currency) - to_chat(user, "You stuff [I] into [src]. It disappears in a small puff of bluespace smoke, adding [cash_money] credits to the linked account.") + to_chat(user, span_notice("You stuff [I] into [src]. It disappears in a small puff of bluespace smoke, adding [cash_money] credits to the linked account.")) else - to_chat(user, "You insert [I] into [src], adding [cash_money] credits to the linked account.") + to_chat(user, span_notice("You insert [I] into [src], adding [cash_money] credits to the linked account.")) - to_chat(user, "The linked account now reports a balance of $[registered_account.account_balance].") + to_chat(user, span_notice("The linked account now reports a balance of $[registered_account.account_balance].")) qdel(I) @@ -198,42 +198,42 @@ if(!alt_click_can_use_id(user)) return if(!new_bank_id || new_bank_id < 111111 || new_bank_id > 999999) - to_chat(user, "The account ID number needs to be between 111111 and 999999.") + to_chat(user, span_warning("The account ID number needs to be between 111111 and 999999.")) return for(var/A in SSeconomy.bank_accounts) var/datum/bank_account/B = A if(B.account_id == new_bank_id) B.bank_cards += src registered_account = B - to_chat(user, "The provided account has been linked to this ID card.") + to_chat(user, span_notice("The provided account has been linked to this ID card.")) return - to_chat(user, "The account ID number provided is invalid.") + to_chat(user, span_warning("The account ID number provided is invalid.")) return if (world.time < registered_account.withdrawDelay) - registered_account.bank_card_talk("ERROR: UNABLE TO LOGIN DUE TO SCHEDULED MAINTENANCE. MAINTENANCE IS SCHEDULED TO COMPLETE IN [(registered_account.withdrawDelay - world.time)/10] SECONDS.", TRUE) + registered_account.bank_card_talk(span_warning("ERROR: UNABLE TO LOGIN DUE TO SCHEDULED MAINTENANCE. MAINTENANCE IS SCHEDULED TO COMPLETE IN [(registered_account.withdrawDelay - world.time)/10] SECONDS."), TRUE) return var/amount_to_remove = FLOOR(input(user, "How much do you want to withdraw? Current Balance: [registered_account.account_balance]", "Withdraw Funds", 5) as num, 1) if(!amount_to_remove || amount_to_remove < 0) - to_chat(user, "You're pretty sure that's not how money works.") + to_chat(user, span_warning("You're pretty sure that's not how money works.")) return if(!alt_click_can_use_id(user)) return if(registered_account.adjust_money(-amount_to_remove)) var/obj/item/holochip/holochip = new (user.drop_location(), amount_to_remove) user.put_in_hands(holochip) - to_chat(user, "You withdraw [amount_to_remove] credits into a holochip.") + to_chat(user, span_notice("You withdraw [amount_to_remove] credits into a holochip.")) return else var/difference = amount_to_remove - registered_account.account_balance - registered_account.bank_card_talk("ERROR: The linked account requires [difference] more credit\s to perform that withdrawal.", TRUE) + registered_account.bank_card_talk(span_warning("ERROR: The linked account requires [difference] more credit\s to perform that withdrawal."), TRUE) /obj/item/card/id/examine(mob/user) .=..() if(registered_age) - . += "The card indicates that the holder is [registered_age] years old. [(registered_age < AGE_MINOR) ? "There's a holographic stripe that reads 'MINOR: DO NOT SERVE ALCOHOL OR TOBACCO' along the bottom of the card." : ""]" + . += "The card indicates that the holder is [registered_age] years old. [(registered_age < AGE_MINOR) ? "There's a holographic stripe that reads [span_danger("'MINOR: DO NOT SERVE ALCOHOL OR TOBACCO'")] along the bottom of the card." : ""]" if(mining_points) . += "There's [mining_points] mining equipment redemption point\s loaded onto this card." @@ -243,12 +243,12 @@ var/datum/bank_account/D = SSeconomy.get_dep_account(registered_account.account_job.paycheck_department) if(D) . += "The [D.account_holder] reports a balance of $[D.account_balance]." - . += "Alt-Click the ID to pull money from the linked account in the form of holochips." - . += "You can insert credits into the linked account by pressing holochips, cash, or coins against the ID." + . += span_info("Alt-Click the ID to pull money from the linked account in the form of holochips.") + . += span_info("You can insert credits into the linked account by pressing holochips, cash, or coins against the ID.") if(registered_account.account_holder == user.real_name) - . += "If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number." + . += span_boldnotice("If you lose this ID card, you can reclaim your account by Alt-Clicking a blank ID card while holding it and entering your account ID number.") else - . += "There is no registered account linked to this card. Alt-Click to add one." + . += span_info("There is no registered account linked to this card. Alt-Click to add one.") /obj/item/card/id/GetAccess() return access @@ -314,7 +314,7 @@ update_label("John Doe", "Clowny") src.access |= I.access if(isliving(user) && user.mind) if(user.mind.special_role || anyone) - to_chat(usr, "The card's microscanners activate as you pass it over the ID, copying its access.") + to_chat(usr, span_notice("The card's microscanners activate as you pass it over the ID, copying its access.")) /obj/item/card/id/syndicate/attack_self(mob/user) if(isliving(user) && user.mind) @@ -350,7 +350,7 @@ update_label("John Doe", "Clowny") assignment = target_occupation update_label() forged = TRUE - to_chat(user, "You successfully forge the ID card.") + to_chat(user, span_notice("You successfully forge the ID card.")) log_game("[key_name(user)] has forged \the [initial(name)] with name \"[registered_name]\" and occupation \"[assignment]\".") // First time use automatically sets the account id to the user. @@ -363,7 +363,7 @@ update_label("John Doe", "Clowny") if(account.account_id == accountowner.account_id) account.bank_cards += src registered_account = account - to_chat(user, "Your account number has been automatically assigned.") + to_chat(user, span_notice("Your account number has been automatically assigned.")) return else if (popup_input == "Forge/Reset" && forged) registered_name = initial(registered_name) @@ -371,7 +371,7 @@ update_label("John Doe", "Clowny") log_game("[key_name(user)] has reset \the [initial(name)] named \"[src]\" to default.") update_label() forged = FALSE - to_chat(user, "You successfully reset the ID card.") + to_chat(user, span_notice("You successfully reset the ID card.")) return else if (popup_input == "Change Account ID") set_new_account(user) @@ -391,10 +391,10 @@ update_label("John Doe", "Clowny") if(!alt_click_can_use_id(user)) return if(!new_bank_id || new_bank_id < 111111 || new_bank_id > 999999) - to_chat(user, "The account ID number needs to be between 111111 and 999999.") + to_chat(user, span_warning("The account ID number needs to be between 111111 and 999999.")) return if (registered_account && registered_account.account_id == new_bank_id) - to_chat(user, "The account ID was already assigned to this card.") + to_chat(user, span_warning("The account ID was already assigned to this card.")) return for(var/A in SSeconomy.bank_accounts) @@ -405,11 +405,11 @@ update_label("John Doe", "Clowny") B.bank_cards += src registered_account = B - to_chat(user, "The provided account has been linked to this ID card.") + to_chat(user, span_notice("The provided account has been linked to this ID card.")) return TRUE - to_chat(user, "The account ID number provided is invalid.") + to_chat(user, span_warning("The account ID number provided is invalid.")) return /obj/item/card/id/syndicate/anyone @@ -455,7 +455,7 @@ update_label("John Doe", "Clowny") addtimer(CALLBACK(src, .proc/wipe_id), 50 SECONDS) /obj/item/card/id/captains_spare/temporary/proc/wipe_id() - visible_message("The temporary spare begins to smolder", "The temporary spare begins to smolder", "The temporary spare begins to smolder") + visible_message(span_danger("The temporary spare begins to smolder"), span_userdanger("The temporary spare begins to smolder"), span_userdanger("The temporary spare begins to smolder")) sleep(10 SECONDS) if(isliving(loc)) var/mob/living/M = loc @@ -581,7 +581,7 @@ update_label("John Doe", "Clowny") registered_age = null /obj/item/card/id/prisoner/attack_self(mob/user) - to_chat(usr, "You have accumulated [points] out of the [goal] points you need for freedom.") + to_chat(usr, span_notice("You have accumulated [points] out of the [goal] points you need for freedom.")) /obj/item/card/id/prisoner/one name = "Prisoner #13-001" diff --git a/code/game/objects/items/charter.dm b/code/game/objects/items/charter.dm index c550a0c87268..767e2884c0fb 100644 --- a/code/game/objects/items/charter.dm +++ b/code/game/objects/items/charter.dm @@ -59,7 +59,7 @@ to_chat(user, "Your name has been sent to your employers for approval.") // Autoapproves after a certain time response_timer_id = addtimer(CALLBACK(src, .proc/rename_station, new_name, user.name, user.real_name, key_name(user)), approval_time, TIMER_STOPPABLE) - to_chat(GLOB.admins, "CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]") + to_chat(GLOB.admins, span_adminnotice("CUSTOM STATION RENAME:[ADMIN_LOOKUPFLW(user)] proposes to rename the [name_type] to [new_name] (will autoapprove in [DisplayTimeText(approval_time)]). [ADMIN_SMITE(user)] (REJECT) [ADMIN_CENTCOM_REPLY(user)]")) /obj/item/station_charter/proc/reject_proposed(user) if(!user) diff --git a/code/game/objects/items/chrono_eraser.dm b/code/game/objects/items/chrono_eraser.dm index 54a15cb39e07..2c22780d1265 100644 --- a/code/game/objects/items/chrono_eraser.dm +++ b/code/game/objects/items/chrono_eraser.dm @@ -85,14 +85,14 @@ var/mob/living/user = loc if(F.gun) if(isliving(user) && F.captured) - to_chat(user, "FAIL: [F.captured] already has an existing connection.") + to_chat(user, span_alert("FAIL: [F.captured] already has an existing connection.")) field_disconnect(F) else startpos = get_turf(src) field = F F.gun = src if(isliving(user) && F.captured) - to_chat(user, "Connection established with target: [F.captured]") + to_chat(user, span_notice("Connection established with target: [F.captured]")) /obj/item/gun/energy/chrono_gun/proc/field_disconnect(obj/structure/chrono_field/F) @@ -101,7 +101,7 @@ if(F.gun == src) F.gun = null if(isliving(user) && F.captured) - to_chat(user, "Disconnected from target: [F.captured]") + to_chat(user, span_alert("Disconnected from target: [F.captured]")) field = null startpos = null @@ -188,7 +188,7 @@ mob_underlay = mutable_appearance(cached_icon, "frame1") update_icon() - desc = initial(desc) + "
It appears to contain [target.name]." + desc = initial(desc) + "
[span_info("It appears to contain [target.name].")]" START_PROCESSING(SSobj, src) return ..() @@ -213,7 +213,7 @@ AM.forceMove(drop_location()) qdel(src) else if(tickstokill <= 0) - to_chat(captured, "As the last essence of your being is erased from time, you are taken back to your most enjoyable memory. You feel happy...") + to_chat(captured, span_boldnotice("As the last essence of your being is erased from time, you are taken back to your most enjoyable memory. You feel happy...")) var/mob/dead/observer/ghost = captured.ghostize(1) if(captured.mind) if(ghost) diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm index 956cbb5cb3bf..8b50ea42b48d 100644 --- a/code/game/objects/items/cigs_lighters.dm +++ b/code/game/objects/items/cigs_lighters.dm @@ -81,11 +81,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) - to_chat(user, "[cig] is already lit.") + to_chat(user, span_notice("[cig] is already lit.")) if(M == user) cig.attackby(src, user) else - cig.light("[user] holds [src] out for [M], and lights [cig].") + cig.light(span_notice("[user] holds [src] out for [M], and lights [cig].")) else ..() @@ -133,7 +133,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/list/list_reagents = list(/datum/reagent/drug/nicotine = 15) /obj/item/clothing/mask/cigarette/suicide_act(mob/user) - user.visible_message("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.") + user.visible_message(span_suicide("[user] is huffing [src] as quickly as [user.p_they()] can! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer.")) return (TOXLOSS|OXYLOSS) /obj/item/clothing/mask/cigarette/Initialize() @@ -163,12 +163,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM return if(istype(glass)) //you can dip cigarettes into beakers if(glass.reagents.trans_to(src, chem_volume, transfered_by = user)) //if reagents were transfered, show the message - to_chat(user, "You dip \the [src] into \the [glass].") + to_chat(user, span_notice("You dip \the [src] into \the [glass].")) else //if not, either the beaker was empty, or the cigarette was full if(!glass.reagents.total_volume) - to_chat(user, "[glass] is empty.") + to_chat(user, span_notice("[glass] is empty.")) else - to_chat(user, "[src] is full.") + to_chat(user, span_notice("[src] is full.")) /obj/item/clothing/mask/cigarette/proc/light(flavor_text = null) @@ -234,7 +234,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM lit = FALSE if(ismob(loc)) var/mob/living/M = loc - to_chat(M, "Your [name] goes out.") + to_chat(M, span_notice("Your [name] goes out.")) M.update_inv_wear_mask() M.update_inv_hands() @@ -259,7 +259,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(smoketime < 1) new type_butt(location) if(ismob(loc)) - to_chat(M, "Your [name] goes out.") + to_chat(M, span_notice("Your [name] goes out.")) qdel(src) return open_flame() @@ -269,7 +269,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/attack_self(mob/user) if(lit) - user.visible_message("[user] calmly drops and treads on \the [src], putting it out instantly.") + user.visible_message(span_notice("[user] calmly drops and treads on \the [src], putting it out instantly.")) new type_butt(user.loc) new /obj/effect/decal/cleanable/ash(user.loc) qdel(src) @@ -279,16 +279,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!istype(M)) return ..() if(M.on_fire && !lit) - light("[user] lights [src] with [M]'s burning body. What a cold-blooded badass.") + light(span_notice("[user] lights [src] with [M]'s burning body. What a cold-blooded badass.")) return var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) - to_chat(user, "The [cig.name] is already lit.") + to_chat(user, span_notice("The [cig.name] is already lit.")) if(M == user) cig.attackby(src, user) else - cig.light("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name].") + cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name].")) else return ..() @@ -333,7 +333,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM list_reagents = list(/datum/reagent/drug/nicotine = 20, /datum/reagent/medicine/regen_jelly = 15, /datum/reagent/drug/krokodil = 4) /obj/item/clothing/mask/cigarette/nonico - desc = "A nicotine-free cigarette." + desc = "A tobacco-free cigarette, it contains chamomile, lemon balm, and catnip." list_reagents = list(/datum/reagent/carbon = 15) // Rollies. @@ -460,7 +460,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM new /obj/effect/decal/cleanable/ash(location) if(ismob(loc)) var/mob/living/M = loc - to_chat(M, "Your [name] goes out.") + to_chat(M, span_notice("Your [name] goes out.")) lit = 0 icon_state = icon_off item_state = icon_off @@ -479,7 +479,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/reagent_containers/food/snacks/grown/G = O if(!packeditem) if(G.dry == 1) - to_chat(user, "You stuff [O] into [src].") + to_chat(user, span_notice("You stuff [O] into [src].")) smoketime = 400 packeditem = 1 name = "[O.name]-packed [initial(name)]" @@ -487,30 +487,30 @@ CIGARETTE PACKETS ARE IN FANCY.DM O.reagents.trans_to(src, O.reagents.total_volume, transfered_by = user) qdel(O) else - to_chat(user, "It has to be dried first!") + to_chat(user, span_warning("It has to be dried first!")) else - to_chat(user, "It is already packed!") + to_chat(user, span_warning("It is already packed!")) else var/lighting_text = O.ignition_effect(src,user) if(lighting_text) if(smoketime > 0) light(lighting_text) else - to_chat(user, "There is nothing to smoke!") + to_chat(user, span_warning("There is nothing to smoke!")) else return ..() /obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user) var/turf/location = get_turf(user) if(lit) - user.visible_message("[user] puts out [src].", "You put out [src].") + user.visible_message(span_notice("[user] puts out [src]."), span_notice("You put out [src].")) lit = 0 icon_state = icon_off item_state = icon_off STOP_PROCESSING(SSobj, src) return if(!lit && smoketime > 0) - to_chat(user, "You empty [src] onto [location].") + to_chat(user, span_notice("You empty [src] onto [location].")) new /obj/effect/decal/cleanable/ash(location) packeditem = 0 smoketime = 0 @@ -567,11 +567,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/suicide_act(mob/living/carbon/user) if (lit) - user.visible_message("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] begins holding \the [src]'s flame up to [user.p_their()] face! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/welder.ogg', 50, 1) return FIRELOSS else - user.visible_message("[user] begins whacking [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] begins whacking [user.p_them()]self with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS /obj/item/lighter/update_icon() @@ -582,7 +582,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/ignition_effect(atom/A, mob/user) if(is_hot()) - . = "With a single flick of [user.p_their()] wrist, [user] smoothly lights [A] with [src]. Damn [user.p_theyre()] cool." + . = span_rose("With a single flick of [user.p_their()] wrist, [user] smoothly lights [A] with [src]. Damn [user.p_theyre()] cool.") /obj/item/lighter/proc/set_lit(new_lit) lit = new_lit @@ -609,7 +609,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!lit) set_lit(TRUE) if(fancy) - user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", "Without even breaking stride, you flip open and light [src] in one smooth movement.") + user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.", span_notice("Without even breaking stride, you flip open and light [src] in one smooth movement.")) else var/prot = FALSE var/mob/living/carbon/human/H = user @@ -622,19 +622,19 @@ CIGARETTE PACKETS ARE IN FANCY.DM prot = TRUE if(prot || prob(75)) - user.visible_message("After a few attempts, [user] manages to light [src].", "After a few attempts, you manage to light [src].") + user.visible_message("After a few attempts, [user] manages to light [src].", span_notice("After a few attempts, you manage to light [src].")) else var/hitzone = user.held_index_to_dir(user.active_hand_index) == "r" ? BODY_ZONE_PRECISE_R_HAND : BODY_ZONE_PRECISE_L_HAND user.apply_damage(5, BURN, hitzone) - user.visible_message("After a few attempts, [user] manages to light [src] - however, [user.p_they()] burn [user.p_their()] finger in the process.", "You burn yourself while lighting the lighter!") + user.visible_message(span_warning("After a few attempts, [user] manages to light [src] - however, [user.p_they()] burn [user.p_their()] finger in the process."), span_warning("You burn yourself while lighting the lighter!")) SEND_SIGNAL(user, COMSIG_ADD_MOOD_EVENT, "burnt_thumb", /datum/mood_event/burnt_thumb) else set_lit(FALSE) if(fancy) - user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what [user.p_theyre()] doing. Wow.", "You quietly shut off [src] without even looking at what you're doing. Wow.") + user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what [user.p_theyre()] doing. Wow.", span_notice("You quietly shut off [src] without even looking at what you're doing. Wow.")) else - user.visible_message("[user] quietly shuts off [src].", "You quietly shut off [src].") + user.visible_message("[user] quietly shuts off [src].", span_notice("You quietly shut off [src].")) else . = ..() @@ -645,14 +645,14 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/obj/item/clothing/mask/cigarette/cig = help_light_cig(M) if(lit && cig && user.a_intent == INTENT_HELP) if(cig.lit) - to_chat(user, "The [cig.name] is already lit.") + to_chat(user, span_notice("The [cig.name] is already lit.")) if(M == user) cig.attackby(src, user) else if(fancy) - cig.light("[user] whips the [name] out and holds it for [M]. [user.p_their(TRUE)] arm is as steady as the unflickering flame [user.p_they()] light[user.p_s()] \the [cig] with.") + cig.light(span_rose("[user] whips the [name] out and holds it for [M]. [user.p_their(TRUE)] arm is as steady as the unflickering flame [user.p_they()] light[user.p_s()] \the [cig] with.")) else - cig.light("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name].") + cig.light(span_notice("[user] holds the [name] out for [M], and lights [M.p_their()] [cig.name].")) else ..() @@ -709,7 +709,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/lighter/greyscale/ignition_effect(atom/A, mob/user) if(is_hot()) - . = "After some fiddling, [user] manages to light [A] with [src]." + . = span_notice("After some fiddling, [user] manages to light [A] with [src].") /obj/item/lighter/slime @@ -745,10 +745,10 @@ CIGARETTE PACKETS ARE IN FANCY.DM qdel(target) qdel(src) user.put_in_active_hand(R) - to_chat(user, "You roll the [target.name] into a rolling paper.") + to_chat(user, span_notice("You roll the [target.name] into a rolling paper.")) R.desc = "Dried [target.name] rolled up in a thin piece of paper." else - to_chat(user, "You need to dry this first!") + to_chat(user, span_warning("You need to dry this first!")) /////////////// //VAPE NATION// @@ -766,7 +766,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/super = 0 //for the fattest vapes dude. /obj/item/clothing/mask/vape/suicide_act(mob/user) - user.visible_message("[user] is puffin hard on dat vape, [user.p_they()] trying to join the vape life on a whole notha plane!")//it doesn't give you cancer, it is cancer + user.visible_message(span_suicide("[user] is puffin hard on dat vape, [user.p_they()] trying to join the vape life on a whole notha plane!"))//it doesn't give you cancer, it is cancer return (TOXLOSS|OXYLOSS) @@ -783,7 +783,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(O.tool_behaviour == TOOL_SCREWDRIVER) if(!screw) screw = TRUE - to_chat(user, "You open the cap on [src].") + to_chat(user, span_notice("You open the cap on [src].")) ENABLE_BITFIELD(reagents.flags, OPENCONTAINER) if(obj_flags & EMAGGED) add_overlay("vapeopen_high") @@ -793,7 +793,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM add_overlay("vapeopen_low") else screw = FALSE - to_chat(user, "You close the cap on [src].") + to_chat(user, span_notice("You close the cap on [src].")) DISABLE_BITFIELD(reagents.flags, OPENCONTAINER) cut_overlays() @@ -802,16 +802,16 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!super) cut_overlays() super = 1 - to_chat(user, "You increase the voltage of [src].") + to_chat(user, span_notice("You increase the voltage of [src].")) add_overlay("vapeopen_med") else cut_overlays() super = 0 - to_chat(user, "You decrease the voltage of [src].") + to_chat(user, span_notice("You decrease the voltage of [src].")) add_overlay("vapeopen_low") if(screw && (obj_flags & EMAGGED)) - to_chat(user, "[src] can't be modified!") + to_chat(user, span_notice("[src] can't be modified!")) else ..() @@ -822,30 +822,30 @@ CIGARETTE PACKETS ARE IN FANCY.DM cut_overlays() obj_flags |= EMAGGED super = 0 - to_chat(user, "You maximize the voltage of [src].") + to_chat(user, span_warning("You maximize the voltage of [src].")) add_overlay("vapeopen_high") var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread //for effect sp.set_up(5, 1, src) sp.start() else - to_chat(user, "[src] is already emagged!") + to_chat(user, span_warning("[src] is already emagged!")) else - to_chat(user, "You need to open the cap to do that.") + to_chat(user, span_notice("You need to open the cap to do that.")) /obj/item/clothing/mask/vape/attack_self(mob/user) if(reagents.total_volume > 0) - to_chat(user, "You empty [src] of all reagents.") + to_chat(user, span_notice("You empty [src] of all reagents.")) reagents.clear_reagents() /obj/item/clothing/mask/vape/equipped(mob/user, slot) . = ..() if(slot == SLOT_WEAR_MASK) if(!screw) - to_chat(user, "You start puffing on the vape.") + to_chat(user, span_notice("You start puffing on the vape.")) DISABLE_BITFIELD(reagents.flags, NO_REACT) START_PROCESSING(SSobj, src) else //it will not start if the vape is opened. - to_chat(user, "You need to close the cap first!") + to_chat(user, span_warning("You need to close the cap first!")) /obj/item/clothing/mask/vape/dropped(mob/user) . = ..() @@ -897,7 +897,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM if(!reagents.total_volume) if(ismob(loc)) - to_chat(M, "[src] is empty!") + to_chat(M, span_notice("[src] is empty!")) STOP_PROCESSING(SSobj, src) //it's reusable so it won't unequip when empty return @@ -921,7 +921,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM var/datum/effect_system/spark_spread/sp = new /datum/effect_system/spark_spread sp.set_up(5, 1, src) sp.start() - to_chat(M, "[src] suddenly explodes in your mouth!") + to_chat(M, span_userdanger("[src] suddenly explodes in your mouth!")) qdel(src) return @@ -931,4 +931,3 @@ CIGARETTE PACKETS ARE IN FANCY.DM /obj/item/clothing/mask/cigarette/lit/Initialize() . = ..() light() // These cigarettes start lit. - \ No newline at end of file diff --git a/code/game/objects/items/circuitboards/circuitboard.dm b/code/game/objects/items/circuitboards/circuitboard.dm index 8c1b92172b82..ed3dc08fe9bd 100644 --- a/code/game/objects/items/circuitboards/circuitboard.dm +++ b/code/game/objects/items/circuitboards/circuitboard.dm @@ -64,4 +64,4 @@ micro-manipulator, console screen, beaker, Microlaser, matter bin, power cells. if(!ispath(A)) continue nice_list += list("[req_components[A]] [initial(A.name)]") - . += "Required components: [english_list(nice_list)]." + . += span_notice("Required components: [english_list(nice_list)].") diff --git a/code/game/objects/items/circuitboards/computer_circuitboards.dm b/code/game/objects/items/circuitboards/computer_circuitboards.dm index a830d0b7c042..81284c9b9cd9 100644 --- a/code/game/objects/items/circuitboards/computer_circuitboards.dm +++ b/code/game/objects/items/circuitboards/computer_circuitboards.dm @@ -32,7 +32,7 @@ /obj/item/circuitboard/computer/card/minor/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) target_dept = (target_dept == dept_list.len) ? 1 : (target_dept + 1) - to_chat(user, "You set the board to \"[dept_list[target_dept]]\".") + to_chat(user, span_notice("You set the board to \"[dept_list[target_dept]]\".")) else return ..() @@ -200,11 +200,11 @@ if(build_path == /obj/machinery/computer/libraryconsole/bookmanagement) name = "Library Visitor Console (Computer Board)" build_path = /obj/machinery/computer/libraryconsole - to_chat(user, "Defaulting access protocols.") + to_chat(user, span_notice("Defaulting access protocols.")) else name = "Book Inventory Management Console (Computer Board)" build_path = /obj/machinery/computer/libraryconsole/bookmanagement - to_chat(user, "Access protocols successfully updated.") + to_chat(user, span_notice("Access protocols successfully updated.")) else return ..() @@ -350,11 +350,11 @@ if(build_path == /obj/machinery/computer/rdconsole/core) name = "R&D Console - Robotics (Computer Board)" build_path = /obj/machinery/computer/rdconsole/robotics - to_chat(user, "Access protocols successfully updated.") + to_chat(user, span_notice("Access protocols successfully updated.")) else name = "R&D Console (Computer Board)" build_path = /obj/machinery/computer/rdconsole/core - to_chat(user, "Defaulting access protocols.") + to_chat(user, span_notice("Defaulting access protocols.")) else return ..() @@ -448,15 +448,15 @@ /obj/item/circuitboard/computer/cargo/multitool_act(mob/living/user) if(!(obj_flags & EMAGGED)) contraband = !contraband - to_chat(user, "Receiver spectrum set to [contraband ? "Broad" : "Standard"].") + to_chat(user, span_notice("Receiver spectrum set to [contraband ? "Broad" : "Standard"].")) else - to_chat(user, "The spectrum chip is unresponsive.") + to_chat(user, span_notice("The spectrum chip is unresponsive.")) /obj/item/circuitboard/computer/cargo/emag_act(mob/living/user) if(!(obj_flags & EMAGGED)) contraband = TRUE obj_flags |= EMAGGED - to_chat(user, "You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.") + to_chat(user, span_notice("You adjust [src]'s routing and receiver spectrum, unlocking special supplies and contraband.")) /obj/item/circuitboard/computer/cargo/express name = "Express Supply Console (Computer Board)" @@ -464,13 +464,13 @@ /obj/item/circuitboard/computer/cargo/express/multitool_act(mob/living/user) if (!(obj_flags & EMAGGED)) - to_chat(user, "Routing protocols are already set to: \"factory defaults\".") + to_chat(user, span_notice("Routing protocols are already set to: \"factory defaults\".")) else - to_chat(user, "You reset the routing protocols to: \"factory defaults\".") + to_chat(user, span_notice("You reset the routing protocols to: \"factory defaults\".")) obj_flags &= ~EMAGGED /obj/item/circuitboard/computer/cargo/express/emag_act(mob/living/user) - to_chat(user, "You change the routing protocols, allowing the Drop Pod to land anywhere on the station.") + to_chat(user, span_notice("You change the routing protocols, allowing the Drop Pod to land anywhere on the station.")) obj_flags |= EMAGGED /obj/item/circuitboard/computer/cargo/request diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 35d91e5d9924..0b66104d6cd6 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -176,7 +176,7 @@ name = initial(new_type.name) build_path = initial(new_type.build_path) I.play_tool_sound(src) - to_chat(user, "You change the circuitboard setting to \"[new_setting]\".") + to_chat(user, span_notice("You change the circuitboard setting to \"[new_setting]\".")) else return ..() @@ -378,7 +378,7 @@ name = initial(new_type.name) build_path = initial(new_type.build_path) I.play_tool_sound(src) - to_chat(user, "You change the circuitboard setting to \"[new_setting]\".") + to_chat(user, span_notice("You change the circuitboard setting to \"[new_setting]\".")) else return ..() @@ -434,7 +434,7 @@ else build_path = /obj/machinery/holopad/secure secure = TRUE - to_chat(user, "You [secure? "en" : "dis"]able the security on the [src]") + to_chat(user, span_notice("You [secure? "en" : "dis"]able the security on the [src]")) . = ..() /obj/item/circuitboard/machine/holopad/examine(mob/user) @@ -528,13 +528,13 @@ var/position = fridges_name_paths.Find(build_path, fridges_name_paths) position = (position == fridges_name_paths.len) ? 1 : (position + 1) build_path = fridges_name_paths[position] - to_chat(user, "You set the board to [fridges_name_paths[build_path]].") + to_chat(user, span_notice("You set the board to [fridges_name_paths[build_path]].")) else return ..() /obj/item/circuitboard/machine/smartfridge/examine(mob/user) . = ..() - . += "[src] is set to [fridges_name_paths[build_path]]. You can use a screwdriver to reconfigure it." + . += span_info("[src] is set to [fridges_name_paths[build_path]]. You can use a screwdriver to reconfigure it.") /obj/item/circuitboard/machine/space_heater @@ -698,7 +698,7 @@ build_path = new_path name = "[new_name] 3000 (Machine Board)" - to_chat(user, "You change the circuit board setting to \"[new_name]\".") + to_chat(user, span_notice("You change the circuit board setting to \"[new_name]\".")) else return ..() @@ -918,7 +918,7 @@ /obj/item/circuitboard/machine/public_nanite_chamber/multitool_act(mob/living/user) if(!(src.loc == user)) - to_chat(user, "You have to hold the circuit in your hand to change it!") + to_chat(user, span_warning("You have to hold the circuit in your hand to change it!")) return var/new_cloud = input("Set the public nanite chamber's Cloud ID (1-100).", "Cloud ID", cloud_id) as num|null if(new_cloud) @@ -1025,18 +1025,18 @@ /obj/item/circuitboard/machine/dish_drive/examine(mob/user) . = ..() - . += {"Its suction function is [suction ? "enabled" : "disabled"]. Use it in-hand to switch.\n - Its disposal auto-transmit function is [transmit ? "enabled" : "disabled"]. Alt-click it to switch."} + . += {"[span_notice("Its suction function is [suction ? "enabled" : "disabled"]. Use it in-hand to switch.")]\n + [span_notice("Its disposal auto-transmit function is [transmit ? "enabled" : "disabled"]. Alt-click it to switch.")]"} /obj/item/circuitboard/machine/dish_drive/attack_self(mob/living/user) suction = !suction - to_chat(user, "You [suction ? "enable" : "disable"] the board's suction function.") + to_chat(user, span_notice("You [suction ? "enable" : "disable"] the board's suction function.")) /obj/item/circuitboard/machine/dish_drive/AltClick(mob/living/user) if(!user.Adjacent(src)) return transmit = !transmit - to_chat(user, "You [transmit ? "enable" : "disable"] the board's automatic disposal transmission.") + to_chat(user, span_notice("You [transmit ? "enable" : "disable"] the board's automatic disposal transmission.")) /obj/item/circuitboard/machine/gibber name = "Gibber (Machine Board)" @@ -1092,11 +1092,11 @@ if(build_path == /obj/machinery/processor) name = "Slime Processor (Machine Board)" build_path = /obj/machinery/processor/slime - to_chat(user, "Name protocols successfully updated.") + to_chat(user, span_notice("Name protocols successfully updated.")) else name = "Food Processor (Machine Board)" build_path = /obj/machinery/processor - to_chat(user, "Defaulting name protocols.") + to_chat(user, span_notice("Defaulting name protocols.")) else return ..() diff --git a/code/game/objects/items/clown_items.dm b/code/game/objects/items/clown_items.dm index 3d359c59705c..f68c1423d2a0 100644 --- a/code/game/objects/items/clown_items.dm +++ b/code/game/objects/items/clown_items.dm @@ -49,7 +49,7 @@ msg = "It's started to get a little smaller than it used to be, but it'll definitely still last for a while." else msg = "It's seen some light use, but it's still pretty fresh." - . += "[msg]" + . += span_notice("[msg]") /obj/item/soap/nanotrasen desc = "A heavy duty bar of Nanotrasen brand soap. Smells of plasma." @@ -75,21 +75,21 @@ /obj/item/soap/suicide_act(mob/user) user.say(";FFFFFFFFFFFFFFFFUUUUUUUDGE!!", forced="soap suicide") - user.visible_message("[user] lifts [src] to [user.p_their()] mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!") + user.visible_message(span_suicide("[user] lifts [src] to [user.p_their()] mouth and gnaws on it furiously, producing a thick froth! [user.p_they(TRUE)]'ll never get that BB gun now!")) new /obj/effect/particle_effect/foam(loc) return (TOXLOSS) /obj/item/soap/proc/decreaseUses(mob/user, amount = 1) uses -= amount if(uses <= 0) - to_chat(user, "[src] crumbles into tiny bits!") + to_chat(user, span_warning("[src] crumbles into tiny bits!")) qdel(src) /obj/item/soap/afterattack(atom/target, mob/user, proximity) . = ..() if(iscarbon(target) && user == target && user.zone_selected == BODY_ZONE_PRECISE_MOUTH && user.a_intent == INTENT_HELP) //mmm, soap... var/mob/living/carbon/C = user - user.visible_message("[user] takes a bite out of [src.name]!", "You gnaw on [src]! This can't be good for you...") + user.visible_message(span_notice("[user] takes a bite out of [src.name]!"), span_notice("You gnaw on [src]! This can't be good for you...")) playsound(get_turf(C), 'sound/items/eatfood.ogg', 25, 0) C.reagents.add_reagent(/datum/reagent/toxin/formaldehyde, 2) C.reagents.add_reagent(/datum/reagent/toxin/chloralhydrate, 3) @@ -101,32 +101,32 @@ //I couldn't feasibly fix the overlay bugs caused by cleaning items we are wearing. //So this is a workaround. This also makes more sense from an IC standpoint. ~Carn if(user.client && ((target in user.client.screen) && !user.is_holding(target))) - to_chat(user, "You need to take that [target.name] off before cleaning it!") + to_chat(user, span_warning("You need to take that [target.name] off before cleaning it!")) else if(istype(target, /obj/effect/decal/cleanable)) - user.visible_message("[user] begins to scrub \the [target.name] out with [src].", "You begin to scrub \the [target.name] out with [src]...") + user.visible_message("[user] begins to scrub \the [target.name] out with [src].", span_warning("You begin to scrub \the [target.name] out with [src]...")) if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You scrub \the [target.name] out.") + to_chat(user, span_notice("You scrub \the [target.name] out.")) qdel(target) decreaseUses(user) else if(ishuman(target) && user.zone_selected == BODY_ZONE_PRECISE_MOUTH) var/mob/living/carbon/human/H = user - user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!", "You wash \the [target]'s mouth out with [src.name]!") //washes mouth out with soap sounds better than 'the soap' here if(user.zone_selected == "mouth") + user.visible_message(span_warning("\the [user] washes \the [target]'s mouth out with [src.name]!"), span_notice("You wash \the [target]'s mouth out with [src.name]!")) //washes mouth out with soap sounds better than 'the soap' here if(user.zone_selected == "mouth") H.lip_style = null //removes lipstick H.update_body() decreaseUses(user) return else if(istype(target, /obj/structure/window)) - user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") + user.visible_message("[user] begins to clean \the [target.name] with [src]...", span_notice("You begin to clean \the [target.name] with [src]...")) if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You clean \the [target.name].") + to_chat(user, span_notice("You clean \the [target.name].")) target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) target.set_opacity(initial(target.opacity)) decreaseUses(user) else - user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...") + user.visible_message("[user] begins to clean \the [target.name] with [src]...", span_notice("You begin to clean \the [target.name] with [src]...")) if(do_after(user, src.cleanspeed, target = target)) - to_chat(user, "You clean \the [target.name].") + to_chat(user, span_notice("You clean \the [target.name].")) target.wash(CLEAN_SCRUB) target.remove_atom_colour(WASHABLE_COLOUR_PRIORITY) target.wash_cream() @@ -163,7 +163,7 @@ return ..() /obj/item/bikehorn/suicide_act(mob/user) - user.visible_message("[user] solemnly points [src] at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] solemnly points [src] at [user.p_their()] temple! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/bikehorn.ogg', 50, TRUE) return (BRUTELOSS) diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index bb448d11d14e..dfb186eb0c58 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -33,7 +33,7 @@ /obj/item/lipstick/attack_self(mob/user) cut_overlays() - to_chat(user, "You twist \the [src] [open ? "closed" : "open"].") + to_chat(user, span_notice("You twist \the [src] [open ? "closed" : "open"].")) open = !open if(open) var/mutable_appearance/colored_overlay = mutable_appearance(icon, "lipstick_uncap_color") @@ -53,31 +53,31 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if(ispolysmorph(M))//polysmorphs dont have sprites for lipstick - to_chat(user,"Where are the lips on that?") + to_chat(user,span_warning("Where are the lips on that?")) return if(H.is_mouth_covered()) - to_chat(user, "Remove [ H == user ? "your" : "[H.p_their()]" ] mask!") + to_chat(user, span_warning("Remove [ H == user ? "your" : "[H.p_their()]" ] mask!")) return if(H.lip_style) //if they already have lipstick on - to_chat(user, "You need to wipe off the old lipstick first!") + to_chat(user, span_warning("You need to wipe off the old lipstick first!")) return if(H == user) - user.visible_message("[user] does [user.p_their()] lips with \the [src].", \ - "You take a moment to apply \the [src]. Perfect!") + user.visible_message(span_notice("[user] does [user.p_their()] lips with \the [src]."), \ + span_notice("You take a moment to apply \the [src]. Perfect!")) H.lip_style = "lipstick" H.lip_color = colour H.update_body() else - user.visible_message("[user] begins to do [H]'s lips with \the [src].", \ - "You begin to apply \the [src] on [H]'s lips...") + user.visible_message(span_warning("[user] begins to do [H]'s lips with \the [src]."), \ + span_notice("You begin to apply \the [src] on [H]'s lips...")) if(do_after(user, 20, target = H)) user.visible_message("[user] does [H]'s lips with \the [src].", \ - "You apply \the [src] on [H]'s lips.") + span_notice("You apply \the [src] on [H]'s lips.")) H.lip_style = "lipstick" H.lip_color = colour H.update_body() else - to_chat(user, "Where are the lips on that?") + to_chat(user, span_warning("Where are the lips on that?")) //you can wipe off lipstick with paper! /obj/item/paper/attack(mob/M, mob/user) @@ -88,15 +88,15 @@ if(ishuman(M)) var/mob/living/carbon/human/H = M if(H == user) - to_chat(user, "You wipe off the lipstick with [src].") + to_chat(user, span_notice("You wipe off the lipstick with [src].")) H.lip_style = null H.update_body() else - user.visible_message("[user] begins to wipe [H]'s lipstick off with \the [src].", \ - "You begin to wipe off [H]'s lipstick...") + user.visible_message(span_warning("[user] begins to wipe [H]'s lipstick off with \the [src]."), \ + span_notice("You begin to wipe off [H]'s lipstick...")) if(do_after(user, 10, target = H)) user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \ - "You wipe off [H]'s lipstick.") + span_notice("You wipe off [H]'s lipstick.")) H.lip_style = null H.update_body() else @@ -111,7 +111,7 @@ w_class = WEIGHT_CLASS_TINY /obj/item/razor/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] begins shaving [user.p_them()]self without the razor guard! It looks like [user.p_theyre()] trying to commit suicide!")) shave(user, BODY_ZONE_PRECISE_MOUTH) shave(user, BODY_ZONE_HEAD)//doesnt need to be BODY_ZONE_HEAD specifically, but whatever return BRUTELOSS @@ -131,23 +131,23 @@ var/mob/living/carbon/human/H = M var/location = user.zone_selected if((location in list(BODY_ZONE_PRECISE_EYES, BODY_ZONE_PRECISE_MOUTH, BODY_ZONE_HEAD)) && !H.get_bodypart(BODY_ZONE_HEAD)) - to_chat(user, "[H] doesn't have a head!") + to_chat(user, span_warning("[H] doesn't have a head!")) return if(location == BODY_ZONE_PRECISE_MOUTH) if(user.a_intent == INTENT_HELP) if(H.gender == MALE) if (H == user) - to_chat(user, "You need a mirror to properly style your own facial hair!") + to_chat(user, span_warning("You need a mirror to properly style your own facial hair!")) return if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return var/new_style = input(user, "Select a facial hair style", "Grooming") as null|anything in GLOB.facial_hair_styles_list if(!get_location_accessible(H, location)) - to_chat(user, "The mask is in the way!") + to_chat(user, span_warning("The mask is in the way!")) return - user.visible_message("[user] tries to change [H]'s facial hair style using [src].", "You try to change [H]'s facial hair style using [src].") + user.visible_message(span_notice("[user] tries to change [H]'s facial hair style using [src]."), span_notice("You try to change [H]'s facial hair style using [src].")) if(new_style && do_after(user, 60, target = H)) - user.visible_message("[user] successfully changes [H]'s facial hair style using [src].", "You successfully change [H]'s facial hair style using [src].") + user.visible_message(span_notice("[user] successfully changes [H]'s facial hair style using [src]."), span_notice("You successfully change [H]'s facial hair style using [src].")) H.facial_hair_style = new_style H.update_hair() return @@ -156,74 +156,74 @@ else if(!(FACEHAIR in H.dna.species.species_traits)) - to_chat(user, "There is no facial hair to shave!") + to_chat(user, span_warning("There is no facial hair to shave!")) return if(!get_location_accessible(H, location)) - to_chat(user, "The mask is in the way!") + to_chat(user, span_warning("The mask is in the way!")) return if(H.facial_hair_style == "Shaved") - to_chat(user, "Already clean-shaven!") + to_chat(user, span_warning("Already clean-shaven!")) return if(H == user) //shaving yourself user.visible_message("[user] starts to shave [user.p_their()] facial hair with [src].", \ - "You take a moment to shave your facial hair with [src]...") + span_notice("You take a moment to shave your facial hair with [src]...")) if(do_after(user, 50, target = H)) user.visible_message("[user] shaves [user.p_their()] facial hair clean with [src].", \ - "You finish shaving with [src]. Fast and clean!") + span_notice("You finish shaving with [src]. Fast and clean!")) shave(H, location) else - user.visible_message("[user] tries to shave [H]'s facial hair with [src].", \ - "You start shaving [H]'s facial hair...") + user.visible_message(span_warning("[user] tries to shave [H]'s facial hair with [src]."), \ + span_notice("You start shaving [H]'s facial hair...")) if(do_after(user, 50, target = H)) - user.visible_message("[user] shaves off [H]'s facial hair with [src].", \ - "You shave [H]'s facial hair clean off.") + user.visible_message(span_warning("[user] shaves off [H]'s facial hair with [src]."), \ + span_notice("You shave [H]'s facial hair clean off.")) shave(H, location) else if(location == BODY_ZONE_HEAD) if(user.a_intent == INTENT_HELP) if (H == user) - to_chat(user, "You need a mirror to properly style your own hair!") + to_chat(user, span_warning("You need a mirror to properly style your own hair!")) return if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return var/new_style = input(user, "Select a hair style", "Grooming") as null|anything in GLOB.hair_styles_list if(!get_location_accessible(H, location)) - to_chat(user, "The headgear is in the way!") + to_chat(user, span_warning("The headgear is in the way!")) return - user.visible_message("[user] tries to change [H]'s hairstyle using [src].", "You try to change [H]'s hairstyle using [src].") + user.visible_message(span_notice("[user] tries to change [H]'s hairstyle using [src]."), span_notice("You try to change [H]'s hairstyle using [src].")) if(new_style && do_after(user, 60, target = H)) - user.visible_message("[user] successfully changes [H]'s hairstyle using [src].", "You successfully change [H]'s hairstyle using [src].") + user.visible_message(span_notice("[user] successfully changes [H]'s hairstyle using [src]."), span_notice("You successfully change [H]'s hairstyle using [src].")) H.hair_style = new_style H.update_hair() return else if(!(HAIR in H.dna.species.species_traits)) - to_chat(user, "There is no hair to shave!") + to_chat(user, span_warning("There is no hair to shave!")) return if(!get_location_accessible(H, location)) - to_chat(user, "The headgear is in the way!") + to_chat(user, span_warning("The headgear is in the way!")) return if(H.hair_style == "Bald" || H.hair_style == "Balding Hair" || H.hair_style == "Skinhead") - to_chat(user, "There is not enough hair left to shave!") + to_chat(user, span_warning("There is not enough hair left to shave!")) return if(H == user) //shaving yourself user.visible_message("[user] starts to shave [user.p_their()] head with [src].", \ - "You start to shave your head with [src]...") + span_notice("You start to shave your head with [src]...")) if(do_after(user, 5, target = H)) user.visible_message("[user] shaves [user.p_their()] head with [src].", \ - "You finish shaving with [src].") + span_notice("You finish shaving with [src].")) shave(H, location) else var/turf/H_loc = H.loc - user.visible_message("[user] tries to shave [H]'s head with [src]!", \ - "You start shaving [H]'s head...") + user.visible_message(span_warning("[user] tries to shave [H]'s head with [src]!"), \ + span_notice("You start shaving [H]'s head...")) if(do_after(user, 50, target = H)) if(H_loc == H.loc) - user.visible_message("[user] shaves [H]'s head bald with [src]!", \ - "You shave [H]'s head bald.") + user.visible_message(span_warning("[user] shaves [H]'s head bald with [src]!"), \ + span_notice("You shave [H]'s head bald.")) shave(H, location) else ..() diff --git a/code/game/objects/items/courtroom.dm b/code/game/objects/items/courtroom.dm index c0e81ed3d581..47e7798ce56f 100644 --- a/code/game/objects/items/courtroom.dm +++ b/code/game/objects/items/courtroom.dm @@ -14,7 +14,7 @@ resistance_flags = FLAMMABLE /obj/item/gavelhammer/suicide_act(mob/user) - user.visible_message("[user] has sentenced [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] has sentenced [user.p_them()]self to death with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(loc, 'sound/items/gavel.ogg', 50, 1, -1) return (BRUTELOSS) @@ -31,7 +31,7 @@ /obj/item/gavelblock/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/gavelhammer)) playsound(loc, 'sound/items/gavel.ogg', 100, 1) - user.visible_message("[user] strikes [src] with [I].") + user.visible_message(span_warning("[user] strikes [src] with [I].")) user.changeNext_move(CLICK_CD_MELEE) else return ..() \ No newline at end of file diff --git a/code/game/objects/items/crab17.dm b/code/game/objects/items/crab17.dm index 538dfb84cf38..6bd112351cb3 100644 --- a/code/game/objects/items/crab17.dm +++ b/code/game/objects/items/crab17.dm @@ -9,10 +9,10 @@ /obj/item/suspiciousphone/attack_self(mob/user) if(!ishuman(user)) - to_chat(user, "This device is too advanced for you!") + to_chat(user, span_warning("This device is too advanced for you!")) return if(dumped) - to_chat(user, "You already activated Protocol CRAB-17.") + to_chat(user, span_warning("You already activated Protocol CRAB-17.")) return FALSE if(alert(user, "Are you sure you want to crash this market with no survivors?", "Protocol CRAB-17", "Yes", "No") == "Yes") if(dumped || QDELETED(src)) //Prevents fuckers from cheesing alert @@ -41,7 +41,7 @@ /obj/structure/checkoutmachine/examine(mob/living/user) . = ..() - . += "It's integrated integrity meter reads: HEALTH: [obj_integrity]." + . += span_info("It's integrated integrity meter reads: HEALTH: [obj_integrity].") /obj/structure/checkoutmachine/proc/check_if_finished() for(var/i in accounts_to_rob) @@ -57,15 +57,15 @@ if(istype(W, /obj/item/card/id)) var/obj/item/card/id/card = W if(!card.registered_account) - to_chat(user, "This card does not have a registered account!") + to_chat(user, span_warning("This card does not have a registered account!")) return if(!card.registered_account.being_dumped) - to_chat(user, "It appears that your funds are safe from draining!") + to_chat(user, span_warning("It appears that your funds are safe from draining!")) return if(do_after(user, 40, target = src)) if(!card.registered_account.being_dumped) return - to_chat(user, "You quickly cash out your funds to a more secure banking location. Funds are safu.") + to_chat(user, span_warning("You quickly cash out your funds to a more secure banking location. Funds are safu.")) card.registered_account.being_dumped = FALSE card.registered_account.withdrawDelay = 0 if(check_if_finished()) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index 2ca4954584d3..a2e5d96d1a39 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -73,7 +73,7 @@ return istype(surface, /turf/open/floor) /obj/item/toy/crayon/suicide_act(mob/user) - user.visible_message("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is jamming [src] up [user.p_their()] nose and into [user.p_their()] brain. It looks like [user.p_theyre()] trying to commit suicide!")) return (BRUTELOSS|OXYLOSS) /obj/item/toy/crayon/Initialize() @@ -129,12 +129,12 @@ if(charges == -1) . = FALSE else if(!charges_left) - to_chat(user, "There is no more of [src] left!") + to_chat(user, span_warning("There is no more of [src] left!")) if(self_contained) qdel(src) . = TRUE else if(charges_left < amount && requires_full) - to_chat(user, "There is not enough of [src] left!") + to_chat(user, span_warning("There is not enough of [src] left!")) . = TRUE /obj/item/toy/crayon/ui_state(mob/user) @@ -150,7 +150,7 @@ if(user.canUseTopic(src, BE_CLOSE, ismonkey(user))) if(has_cap) is_capped = !is_capped - to_chat(user, "The cap on [src] is now [is_capped ? "on" : "off"].") + to_chat(user, span_notice("The cap on [src] is now [is_capped ? "on" : "off"].")) update_icon() /obj/item/toy/crayon/proc/staticDrawables() @@ -338,10 +338,10 @@ clicky = clamp(text2num(click_params["icon-y"]) - 16, -(world.icon_size/2), world.icon_size/2) if(!instant) - to_chat(user, "You start drawing a [temp] on the [target.name]...") // yogs -- removed a weird tab that had no reason to be here + to_chat(user, span_notice("You start drawing a [temp] on the [target.name]...")) // yogs -- removed a weird tab that had no reason to be here if(pre_noise) - audible_message("You hear spraying.") + audible_message(span_notice("You hear spraying.")) playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) var/wait_time = 50 @@ -382,20 +382,20 @@ affected_turfs += right affected_turfs += target else - to_chat(user, "There isn't enough space to paint!") + to_chat(user, span_warning("There isn't enough space to paint!")) return if(!instant) - to_chat(user, "You finish drawing \the [temp].") + to_chat(user, span_notice("You finish drawing \the [temp].")) else - to_chat(user, "You spray a [temp] on \the [target.name]") + to_chat(user, span_notice("You spray a [temp] on \the [target.name]")) if(length(text_buffer) > 1) text_buffer = copytext(text_buffer, length(text_buffer[1]) + 1) SStgui.update_uis(src) if(post_noise) - audible_message("You hear spraying.") + audible_message(span_notice("You hear spraying.")) playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) // yogs start -- using changes moved to the end of the proc, so it won't use charges if the spraying fails for any reason. var/charges_used = use_charges(user, cost) @@ -575,11 +575,11 @@ /obj/item/toy/crayon/spraycan/suicide_act(mob/user) var/mob/living/carbon/human/H = user if(is_capped || !actually_paints) - user.visible_message("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!") + user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, but nothing happens!")) user.say("MEDIOCRE!!", forced="spraycan suicide") return SHAME else - user.visible_message("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!") + user.visible_message(span_suicide("[user] shakes up [src] with a rattle and lifts it to [user.p_their()] mouth, spraying paint across [user.p_their()] teeth!")) user.say("WITNESS ME!!", forced="spraycan suicide") if(pre_noise || post_noise) playsound(src, 'sound/effects/spray.ogg', 5, TRUE, 5) @@ -613,14 +613,14 @@ . += "It has [charges_left] use\s left." else . += "It is empty." - . += "Alt-click [src] to [ is_capped ? "take the cap off" : "put the cap on"]." + . += span_notice("Alt-click [src] to [ is_capped ? "take the cap off" : "put the cap on"].") /obj/item/toy/crayon/spraycan/afterattack(atom/target, mob/user, proximity, params) if(!proximity) return if(is_capped) - to_chat(user, "Take the cap off first!") + to_chat(user, span_warning("Take the cap off first!")) return if(check_empty(user)) @@ -631,8 +631,8 @@ playsound(user.loc, 'sound/effects/spray.ogg', 25, 1, 5) var/mob/living/carbon/C = target - user.visible_message("[user] sprays [src] into the face of [target]!") - to_chat(target, "[user] sprays [src] into your face!") + user.visible_message(span_danger("[user] sprays [src] into the face of [target]!")) + to_chat(target, span_userdanger("[user] sprays [src] into your face!")) if(C.client) C.blur_eyes(3) @@ -667,7 +667,7 @@ if(pre_noise || post_noise) playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5) - user.visible_message("[user] coats [target] with spray paint!", "You coat [target] with spray paint.") + user.visible_message("[user] coats [target] with spray paint!", span_notice("You coat [target] with spray paint.")) return . = ..() @@ -690,7 +690,7 @@ chem_splash(loc, 5, list(reagents)) //lubecan makes big lube no explosion honk else if(istype(src, /obj/item/toy/crayon/spraycan/borg)) - to_chat(user, "ERR ERR. ASIMOV SPRAYCAN FIRMWARE DOES NOT ALLOW THIS.") + to_chat(user, span_warning("ERR ERR. ASIMOV SPRAYCAN FIRMWARE DOES NOT ALLOW THIS.")) return // are you fucking nuts else @@ -707,7 +707,7 @@ /obj/item/toy/crayon/spraycan/borg/afterattack(atom/target,mob/user,proximity, params) var/diff = ..() if(!iscyborg(user)) - to_chat(user, "How did you get this?") + to_chat(user, span_notice("How did you get this?")) qdel(src) return FALSE diff --git a/code/game/objects/items/credit_holochip.dm b/code/game/objects/items/credit_holochip.dm index 0223904b4fc3..a7236ddce321 100644 --- a/code/game/objects/items/credit_holochip.dm +++ b/code/game/objects/items/credit_holochip.dm @@ -15,8 +15,8 @@ /obj/item/holochip/examine(mob/user) . = ..() - . += {"It's loaded with [credits] credit[( credits > 1 ) ? "s" : ""]\n - Alt-Click to split."} + . += {"[span_notice("It's loaded with [credits] credit[( credits > 1 ) ? "s" : ""]")]\n + [span_notice("Alt-Click to split.")]"} /obj/item/holochip/get_item_credit_value() return credits @@ -77,7 +77,7 @@ if(istype(I, /obj/item/holochip)) var/obj/item/holochip/H = I credits += H.credits - to_chat(user, "You insert the credits into [src].") + to_chat(user, span_notice("You insert the credits into [src].")) update_icon() qdel(H) @@ -95,7 +95,7 @@ H.forceMove(user.drop_location()) add_fingerprint(user) H.add_fingerprint(user) - to_chat(user, "You extract [split_amount] credits into a new holochip.") + to_chat(user, span_notice("You extract [split_amount] credits into a new holochip.")) /obj/item/holochip/emp_act(severity) . = ..() @@ -103,5 +103,5 @@ return var/wipe_chance = 60 / severity if(prob(wipe_chance)) - visible_message("[src] fizzles and disappears!") + visible_message(span_warning("[src] fizzles and disappears!")) qdel(src) //rip cash diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm index ea15beb656bb..4faf35a7fcec 100644 --- a/code/game/objects/items/defib.dm +++ b/code/game/objects/items/defib.dm @@ -97,13 +97,13 @@ if(user.get_item_by_slot(SLOT_BACK) == src) ui_action_click() else - to_chat(user, "Put the defibrillator on your back first!") + to_chat(user, span_warning("Put the defibrillator on your back first!")) else if(slot_flags == ITEM_SLOT_BELT) if(user.get_item_by_slot(SLOT_BELT) == src) ui_action_click() else - to_chat(user, "Strap the defibrillator's belt on first!") + to_chat(user, span_warning("Strap the defibrillator's belt on first!")) return else if(istype(loc, /obj/machinery/defibrillator_mount)) ui_action_click() //checks for this are handled in defibrillator.mount.dm @@ -124,15 +124,15 @@ else if(istype(W, /obj/item/stock_parts/cell)) var/obj/item/stock_parts/cell/C = W if(cell) - to_chat(user, "[src] already has a cell.") + to_chat(user, span_notice("[src] already has a cell.")) else if(C.maxcharge < paddles.revivecost) - to_chat(user, "[src] requires a higher capacity cell.") + to_chat(user, span_notice("[src] requires a higher capacity cell.")) return if(!user.transferItemToLoc(W, src)) return cell = W - to_chat(user, "You install a cell in [src].") + to_chat(user, span_notice("You install a cell in [src].")) update_icon() else if(W.tool_behaviour == TOOL_SCREWDRIVER) @@ -140,7 +140,7 @@ cell.update_icon() cell.forceMove(get_turf(src)) cell = null - to_chat(user, "You remove the cell from [src].") + to_chat(user, span_notice("You remove the cell from [src].")) update_icon() else return ..() @@ -148,10 +148,10 @@ /obj/item/defibrillator/emag_act(mob/user) if(safety) safety = FALSE - to_chat(user, "You silently disable [src]'s safety protocols with the cryptographic sequencer.") + to_chat(user, span_warning("You silently disable [src]'s safety protocols with the cryptographic sequencer.")) else safety = TRUE - to_chat(user, "You silently enable [src]'s safety protocols with the cryptographic sequencer.") + to_chat(user, span_notice("You silently enable [src]'s safety protocols with the cryptographic sequencer.")) /obj/item/defibrillator/emp_act(severity) . = ..() @@ -164,10 +164,10 @@ if(!safety) safety = TRUE - visible_message("[src] beeps: Safety protocols enabled!") + visible_message(span_notice("[src] beeps: Safety protocols enabled!")) playsound(src, 'sound/machines/defib_saftyOn.ogg', 50, 0) else - visible_message("[src] buzzes: Surge detected!") + visible_message(span_notice("[src] buzzes: Surge detected!")) playsound(src, 'sound/machines/buzz-sigh.ogg', 50, 0) update_icon() @@ -181,7 +181,7 @@ //Detach the paddles into the user's hands if(!usr.put_in_hands(paddles)) on = FALSE - to_chat(user, "You need a free hand to hold the paddles!") + to_chat(user, span_warning("You need a free hand to hold the paddles!")) update_icon() return else @@ -237,10 +237,10 @@ spawn(50) if(cell) if(cell.charge >= paddles.revivecost) - user.visible_message("[src] beeps: Unit ready.") + user.visible_message(span_notice("[src] beeps: Unit ready.")) playsound(src, 'sound/machines/defib_ready.ogg', 50, 0) else - user.visible_message("[src] beeps: Charge depleted.") + user.visible_message(span_notice("[src] beeps: Charge depleted.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) paddles.cooldown = FALSE paddles.update_icon() @@ -335,10 +335,10 @@ if(!in_range(src,defib)) var/mob/living/L = loc if(istype(L)) - to_chat(L, "[defib]'s paddles overextend and come out of your hands!") + to_chat(L, span_warning("[defib]'s paddles overextend and come out of your hands!")) L.temporarilyRemoveItemFromInventory(src,TRUE) else - visible_message("[src] snap back into [defib].") + visible_message(span_notice("[src] snap back into [defib].")) snap_back() /obj/item/twohanded/shockpaddles/proc/recharge(var/time) @@ -348,7 +348,7 @@ update_icon() sleep(time) var/turf/T = get_turf(src) - T.audible_message("[src] beeps: Unit is recharged.") + T.audible_message(span_notice("[src] beeps: Unit is recharged.")) playsound(src, 'sound/machines/defib_ready.ogg', 50, 0) cooldown = FALSE update_icon() @@ -371,7 +371,7 @@ C.update_inv_hands() /obj/item/twohanded/shockpaddles/suicide_act(mob/user) - user.visible_message("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_danger("[user] is putting the live paddles on [user.p_their()] chest! It looks like [user.p_theyre()] trying to commit suicide!")) if(req_defib) defib.deductcharge(revivecost) playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1) @@ -386,7 +386,7 @@ var/obj/item/twohanded/offhand/O = user.get_inactive_held_item() if(istype(O)) O.unwield() - to_chat(user, "The paddles snap back into the main unit.") + to_chat(user, span_notice("The paddles snap back into the main unit.")) snap_back() return unwield(user) @@ -411,20 +411,20 @@ if(busy) return if(req_defib && !defib.powered) - user.visible_message("[defib] beeps: Unit is unpowered.") + user.visible_message(span_notice("[defib] beeps: Unit is unpowered.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) return if(!wielded) if(iscyborg(user)) - to_chat(user, "You must activate the paddles in your active module before you can use them on someone!") + to_chat(user, span_warning("You must activate the paddles in your active module before you can use them on someone!")) else - to_chat(user, "You need to wield the paddles in both hands before you can use them on someone!") + to_chat(user, span_warning("You need to wield the paddles in both hands before you can use them on someone!")) return if(cooldown) if(req_defib) - to_chat(user, "[defib] is recharging!") + to_chat(user, span_warning("[defib] is recharging!")) else - to_chat(user, "[src] are recharging!") + to_chat(user, span_warning("[src] are recharging!")) return if(user.a_intent == INTENT_DISARM) @@ -433,15 +433,15 @@ if(!iscarbon(M)) if(req_defib) - to_chat(user, "The instructions on [defib] don't mention how to revive that...") + to_chat(user, span_warning("The instructions on [defib] don't mention how to revive that...")) else - to_chat(user, "You aren't sure how to revive that...") + to_chat(user, span_warning("You aren't sure how to revive that...")) return var/mob/living/carbon/H = M if(user.zone_selected != BODY_ZONE_CHEST) - to_chat(user, "You need to target your patient's chest with [src]!") + to_chat(user, span_warning("You need to target your patient's chest with [src]!")) return if(user.a_intent == INTENT_HARM) @@ -459,7 +459,7 @@ if(isliving(H.pulledby)) //CLEAR! var/mob/living/M = H.pulledby if(M.electrocute_act(30, src)) - M.visible_message("[M] is electrocuted by [M.p_their()] contact with [H]!") + M.visible_message(span_danger("[M] is electrocuted by [M.p_their()] contact with [H]!")) M.emote("scream") /obj/item/twohanded/shockpaddles/proc/do_disarm(mob/living/M, mob/living/user) @@ -468,8 +468,8 @@ if(!req_defib && !combat) return busy = TRUE - M.visible_message("[user] has touched [M] with [src]!", \ - "[user] has touched [M] with [src]!") + M.visible_message(span_danger("[user] has touched [M] with [src]!"), \ + span_userdanger("[user] has touched [M] with [src]!")) M.adjustStaminaLoss(50) M.Paralyze(100) M.updatehealth() //forces health update before next life tick //isn't this done by adjustStaminaLoss anyway? @@ -491,39 +491,39 @@ return if(!req_defib && !combat) return - user.visible_message("[user] begins to place [src] on [H]'s chest.", - "You overcharge the paddles and begin to place them onto [H]'s chest...") + user.visible_message(span_warning("[user] begins to place [src] on [H]'s chest."), + span_warning("You overcharge the paddles and begin to place them onto [H]'s chest...")) busy = TRUE update_icon() if(do_after(user, 30, target = H)) - user.visible_message("[user] places [src] on [H]'s chest.", - "You place [src] on [H]'s chest and begin to charge them.") + user.visible_message(span_notice("[user] places [src] on [H]'s chest."), + span_warning("You place [src] on [H]'s chest and begin to charge them.")) var/turf/T = get_turf(defib) playsound(src, 'sound/machines/defib_charge.ogg', 50, 0) if(req_defib) - T.audible_message("\The [defib] lets out an urgent beep and lets out a steadily rising hum...") + T.audible_message(span_warning("\The [defib] lets out an urgent beep and lets out a steadily rising hum...")) else - user.audible_message("[src] let out an urgent beep.") + user.audible_message(span_warning("[src] let out an urgent beep.")) if(do_after(user, 30, target = H)) //Takes longer due to overcharging if(!H) busy = FALSE update_icon() return if(H && H.stat == DEAD) - to_chat(user, "[H] is dead.") + to_chat(user, span_warning("[H] is dead.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) busy = FALSE update_icon() return - user.visible_message("[user] shocks [H] with \the [src]!", "You shock [H] with \the [src]!") + user.visible_message(span_boldannounce("[user] shocks [H] with \the [src]!"), span_warning("You shock [H] with \the [src]!")) playsound(src, 'sound/machines/defib_zap.ogg', 100, 1, -1) playsound(src, 'sound/weapons/egloves.ogg', 100, 1, -1) H.emote("scream") shock_touching(45, H) if(H.can_heartattack() && !H.undergoing_cardiac_arrest()) if(!H.stat) - H.visible_message("[H] thrashes wildly, clutching at [H.p_their()] chest!", - "You feel a horrible agony in your chest!") + H.visible_message(span_warning("[H] thrashes wildly, clutching at [H.p_their()] chest!"), + span_userdanger("You feel a horrible agony in your chest!")) H.set_heartattack(TRUE) H.apply_damage(50, BURN, BODY_ZONE_CHEST) log_combat(user, H, "overloaded the heart of", defib) @@ -542,11 +542,11 @@ update_icon() /obj/item/twohanded/shockpaddles/proc/do_help(mob/living/carbon/H, mob/living/user) - user.visible_message("[user] begins to place [src] on [H]'s chest.", "You begin to place [src] on [H]'s chest...") + user.visible_message(span_warning("[user] begins to place [src] on [H]'s chest."), span_warning("You begin to place [src] on [H]'s chest...")) busy = TRUE update_icon() if(do_after(user, 30, target = H)) //beginning to place the paddles on patient's chest to allow some time for people to move away to stop the process - user.visible_message("[user] places [src] on [H]'s chest.", "You place [src] on [H]'s chest.") + user.visible_message(span_notice("[user] places [src] on [H]'s chest."), span_warning("You place [src] on [H]'s chest.")) playsound(src, 'sound/machines/defib_charge.ogg', 75, 0) var/total_burn = 0 var/total_brute = 0 @@ -559,13 +559,13 @@ for(var/obj/item/carried_item in H.contents) if(istype(carried_item, /obj/item/clothing/suit/space)) if((!combat && !req_defib) || (req_defib && !defib.combat)) - user.audible_message("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's chest is obscured. Operation aborted.") + user.audible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's chest is obscured. Operation aborted.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) busy = FALSE update_icon() return if(H.stat == DEAD) - H.visible_message("[H]'s body convulses a bit.") + H.visible_message(span_warning("[H]'s body convulses a bit.")) playsound(src, "bodyfall", 50, 1) playsound(src, 'sound/machines/defib_zap.ogg', 75, 1, -1) total_brute = H.getBruteLoss() @@ -574,32 +574,32 @@ var/failed if (H.suiciding) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Recovery of patient impossible. Further attempts futile.") else if (H.hellbound) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul unrecoverable. Further attempts futile." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's soul unrecoverable. Further attempts futile.") else if (tplus > tlimit) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Body has decayed for too long. Further attempts futile.") else if (!heart) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's heart is missing. A replacement may allow for successful resuscitation." + failed = span_boldnotice("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's heart is missing. A replacement may allow for successful resuscitation.") else if (heart.organ_flags & ORGAN_FAILING) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's heart too damaged. A coronary bypass or replacement may allow for successful resuscitation." + failed = span_boldnotice("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's heart too damaged. A coronary bypass or replacement may allow for successful resuscitation.") else if(total_burn >= MAX_REVIVE_FIRE_DAMAGE || total_brute >= MAX_REVIVE_BRUTE_DAMAGE) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Surgical repair may allow for successful resuscitation." + failed = span_boldnotice("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Severe tissue damage makes recovery of patient impossible via defibrillator. Surgical repair may allow for successful resuscitation.") else if(HAS_TRAIT(H, TRAIT_HUSK)) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Restucitation failed - Lack of important fluids has rendered the patient body unsurvivable. Application of experimental DNA recovery surgery or an upgraded cloner recommended." + failed = span_boldnotice("[req_defib ? "[defib]" : "[src]"] buzzes: Restucitation failed - Lack of important fluids has rendered the patient body unsurvivable. Application of experimental DNA recovery surgery or an upgraded cloner recommended.") else if(H.get_ghost()) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful." + failed = span_boldnotice("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No activity in patient's brain. Further attempts may be successful.") else var/obj/item/organ/brain/BR = H.getorgan(/obj/item/organ/brain) if(BR) if(BR.organ_flags & ORGAN_FAILING) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain tissue is damaged making recovery of patient impossible via defibrillator. Brain repair may result in successful defibrillation." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain tissue is damaged making recovery of patient impossible via defibrillator. Brain repair may result in successful defibrillation.") if(BR.brain_death) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain damaged beyond point of no return. Brain repair may result in successful defibrillation." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain damaged beyond point of no return. Brain repair may result in successful defibrillation.") if(BR.suicided || BR.brainmob?.suiciding) - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No intelligence pattern can be detected in patient's brain. Further attempts futile." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - No intelligence pattern can be detected in patient's brain. Further attempts futile.") else - failed = "[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain is missing. Further attempts futile." + failed = span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed - Patient's brain is missing. Further attempts futile.") if(failed) user.visible_message(failed) @@ -616,7 +616,7 @@ H.adjustFireLoss((mobhealth - HALFWAYCRITDEATH) * (total_burn / overall_damage), 0, required_status = BODYPART_ANY) H.adjustBruteLoss((mobhealth - HALFWAYCRITDEATH) * (total_brute / overall_damage), 0, required_status = BODYPART_ANY) H.updatehealth() // Previous "adjust" procs don't update health, so we do it manually. - user.visible_message("[req_defib ? "[defib]" : "[src]"] pings: Resuscitation successful.") + user.visible_message(span_notice("[req_defib ? "[defib]" : "[src]"] pings: Resuscitation successful.")) SSachievements.unlock_achievement(/datum/achievement/defib, user.client) playsound(src, 'sound/machines/defib_success.ogg', 50, 0) H.set_heartattack(FALSE) @@ -634,18 +634,18 @@ else recharge(60) else if (!H.getorgan(/obj/item/organ/heart)) - user.visible_message("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's heart is missing. Operation aborted.") + user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient's heart is missing. Operation aborted.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) else if(H.undergoing_cardiac_arrest()) playsound(src, 'sound/machines/defib_zap.ogg', 50, 1, -1) if(!(heart.organ_flags & ORGAN_FAILING)) H.set_heartattack(FALSE) - user.visible_message("[req_defib ? "[defib]" : "[src]"] pings: Patient's heart is now beating again.") + user.visible_message(span_notice("[req_defib ? "[defib]" : "[src]"] pings: Patient's heart is now beating again.")) else - user.visible_message("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed, heart damage detected.") + user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Resuscitation failed, heart damage detected.")) else - user.visible_message("[req_defib ? "[defib]" : "[src]"] buzzes: Patient is not in a valid state. Operation aborted.") + user.visible_message(span_warning("[req_defib ? "[defib]" : "[src]"] buzzes: Patient is not in a valid state. Operation aborted.")) playsound(src, 'sound/machines/defib_failed.ogg', 50, 0) busy = FALSE update_icon() diff --git a/code/game/objects/items/dehy_carp.dm b/code/game/objects/items/dehy_carp.dm index 1283b94af5fe..7e0107cd8d2e 100644 --- a/code/game/objects/items/dehy_carp.dm +++ b/code/game/objects/items/dehy_carp.dm @@ -13,7 +13,7 @@ /obj/item/toy/plush/carpplushie/dehy_carp/attack_self(mob/user) src.add_fingerprint(user) //Anyone can add their fingerprints to it with this if(!owned) - to_chat(user, "You pet [src]. You swear it looks up at you.") + to_chat(user, span_notice("You pet [src]. You swear it looks up at you.")) owner = user owned = 1 else @@ -24,7 +24,7 @@ /obj/item/toy/plush/carpplushie/dehy_carp/proc/Swell() desc = "It's growing!" - visible_message("[src] swells up!") + visible_message(span_notice("[src] swells up!")) //Animation icon = 'icons/mob/carp.dmi' @@ -43,14 +43,14 @@ factions -= F M.faction = factions if (!owner || owner.faction != M.faction) - visible_message("You have a bad feeling about this.") //welcome to the hostile carp enjoy your die + visible_message(span_warning("You have a bad feeling about this.")) //welcome to the hostile carp enjoy your die else - visible_message("The newly grown [M.name] looks up at you with friendly eyes.") + visible_message(span_notice("The newly grown [M.name] looks up at you with friendly eyes.")) qdel(src) /obj/item/toy/plush/carpplushie/dehy_carp/suicide_act(mob/user) var/mob/living/carbon/human/H = user - user.visible_message("[user] starts eating [src]. It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] starts eating [src]. It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/eatfood.ogg', 50, TRUE) if(istype(H)) H.Paralyze(30) diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm index 092ce07725d8..4068cbc0473e 100644 --- a/code/game/objects/items/devices/PDA/PDA.dm +++ b/code/game/objects/items/devices/PDA/PDA.dm @@ -96,7 +96,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/deathMessage = msg_input(user) if (!deathMessage) deathMessage = "i ded" - user.visible_message("[user] is sending a message to the Grim Reaper! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is sending a message to the Grim Reaper! It looks like [user.p_theyre()] trying to commit suicide!")) tnote += "→ To The Grim Reaper:
[deathMessage]
"//records a message in their PDA as being sent to the grim reaper return BRUTELOSS @@ -106,10 +106,10 @@ GLOBAL_LIST_EMPTY(PDAs) return if(id) - . += "Alt-click to remove the id." + . += span_notice("Alt-click to remove the id.") if(inserted_item && (!isturf(loc))) - . += "Ctrl-click to remove [inserted_item]." + . += span_notice("Ctrl-click to remove [inserted_item].") /obj/item/pda/Initialize() . = ..() @@ -188,12 +188,12 @@ GLOBAL_LIST_EMPTY(PDAs) return ..() /obj/item/pda/attack_self_tk(mob/user) - to_chat(user, "The PDA's capacitive touch screen doesn't seem to respond!") + to_chat(user, span_warning("The PDA's capacitive touch screen doesn't seem to respond!")) return /obj/item/pda/interact(mob/user) if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") + to_chat(user, span_warning("You don't have the dexterity to do this!")) return ..() @@ -486,7 +486,7 @@ GLOBAL_LIST_EMPTY(PDAs) if("Eject")//Ejects the cart, only done from hub. if (!isnull(cartridge)) U.put_in_hands(cartridge) - to_chat(U, "You remove [cartridge] from [src].") + to_chat(U, span_notice("You remove [cartridge] from [src].")) scanmode = PDA_SCANNER_NONE cartridge.host_pda = null cartridge = null @@ -551,7 +551,7 @@ GLOBAL_LIST_EMPTY(PDAs) var/alert_s = input(U,"Alert severity level","Ping Drones",null) as null|anything in list("Low","Medium","High","Critical") var/area/A = get_area(U) if(A && alert_s && !QDELETED(U)) - var/msg = "NON-DRONE PING: [U.name]: [alert_s] priority alert in [A.name]!" + var/msg = span_boldnotice("NON-DRONE PING: [U.name]: [alert_s] priority alert in [A.name]!") _alert_drones(msg, TRUE, U) to_chat(U, msg) if("Assistant Pager") @@ -622,14 +622,14 @@ GLOBAL_LIST_EMPTY(PDAs) pai.attack_self(U) if("2") // Eject pAI device usr.put_in_hands(pai) - to_chat(usr, "You remove the pAI from the [name].") + to_chat(usr, span_notice("You remove the pAI from the [name].")) //Redd's Shitty Paperwork Printing Functions======= if("print") //check if it's a head cartridge or a sec cartridge var/turf/user_turf = get_turf(usr) if (cartridge.access & CART_STATUS_DISPLAY) - to_chat(usr, "The PDA whirrs as a paper materializes!") + to_chat(usr, span_warning("The PDA whirrs as a paper materializes!")) playsound(src,"sound/items/polaroid1.ogg",30,1) //figure out which one we're trying to print switch(href_list["paper"]) @@ -656,7 +656,7 @@ GLOBAL_LIST_EMPTY(PDAs) if (PDA_PRINTING_JOB_REASSIGNMENT_CERTIFICATE) usr.put_in_hands(new /obj/item/paper/paperwork/jobchangecert(user_turf)) else if (cartridge.access & CART_SECURITY) - to_chat(usr, "The PDA whirrs as a paper materializes!") + to_chat(usr, span_warning("The PDA whirrs as a paper materializes!")) playsound(src,"sound/items/polaroid1.ogg",30,1) switch(href_list["paper"]) if (PDA_PRINTING_INCIDENT_REPORT) @@ -699,7 +699,7 @@ GLOBAL_LIST_EMPTY(PDAs) if (id) usr.put_in_hands(id) - to_chat(usr, "You remove the ID from the [name].") + to_chat(usr, span_notice("You remove the ID from the [name].")) id = null update_icon() if(ishuman(loc)) @@ -752,20 +752,20 @@ GLOBAL_LIST_EMPTY(PDAs) // If it didn't reach, note that fact if (!signal.data["done"]) - to_chat(user, "ERROR: Server isn't responding.") + to_chat(user, span_notice("ERROR: Server isn't responding.")) return var/target_text = signal.format_target() // Log it in our logs tnote += signal // Show it to ghosts - var/ghost_message = "[owner] PDA Message --> [target_text]: [signal.format_message()]" + var/ghost_message = "[span_name("[owner] ")]PDA Message --> [span_name("[target_text]")]: [span_message("[signal.format_message()]")]" for(var/mob/M in GLOB.player_list) if(isobserver(M) && M.client && (M.client.prefs.chat_toggles & CHAT_GHOSTPDA)) to_chat(M, "[FOLLOW_LINK(M, user)] [ghost_message]") // Log in the talk log user.log_talk(message, LOG_PDA, tag="PDA: [initial(name)] to [target_text]") - to_chat(user, "Message sent to [target_text]: \"[message]\"") + to_chat(user, span_info("Message sent to [target_text]: \"[message]\"")) // Reset the photo picture = null last_text = world.time @@ -825,13 +825,13 @@ GLOBAL_LIST_EMPTY(PDAs) /obj/item/pda/proc/send_to_all(mob/living/U) if (last_everyone && world.time < last_everyone + PDA_SPAM_DELAY) - to_chat(U,"Send To All function is still on cooldown.") + to_chat(U,span_warning("Send To All function is still on cooldown.")) return send_message(U,get_viewable_pdas(), TRUE) /obj/item/pda/proc/ping_assistants(mob/living/U) if (last_everyone && world.time < last_everyone + PDA_SPAM_DELAY) - to_chat(U,"Function is still on cooldown.") + to_chat(U,span_warning("Function is still on cooldown.")) return var/area/A = get_area(U) @@ -879,7 +879,7 @@ GLOBAL_LIST_EMPTY(PDAs) if(id) remove_id() else - to_chat(usr, "This PDA does not have an ID in it!") + to_chat(usr, span_warning("This PDA does not have an ID in it!")) /obj/item/pda/verb/verb_remove_pen() set category = "Object" @@ -906,11 +906,11 @@ GLOBAL_LIST_EMPTY(PDAs) if(inserted_item) usr.put_in_hands(inserted_item) - to_chat(usr, "You remove [inserted_item] from [src].") + to_chat(usr, span_notice("You remove [inserted_item] from [src].")) inserted_item = null update_icon() else - to_chat(usr, "This PDA does not have a pen in it!") + to_chat(usr, span_warning("This PDA does not have a pen in it!")) //trying to insert or remove an id /obj/item/pda/proc/id_check(mob/user, obj/item/card/id/I) @@ -944,25 +944,25 @@ GLOBAL_LIST_EMPTY(PDAs) return cartridge = C cartridge.host_pda = src - to_chat(user, "You insert [cartridge] into [src].") + to_chat(user, span_notice("You insert [cartridge] into [src].")) update_icon() else if(istype(C, /obj/item/card/id)) var/obj/item/card/id/idcard = C if(!idcard.registered_name) - to_chat(user, "\The [src] rejects the ID!") + to_chat(user, span_warning("\The [src] rejects the ID!")) return if(!owner) owner = idcard.registered_name ownjob = idcard.assignment update_label() - to_chat(user, "Card scanned.") + to_chat(user, span_notice("Card scanned.")) else //Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand. if(((src in user.contents) || (isturf(loc) && in_range(src, user))) && (C in user.contents)) if(!id_check(user, idcard)) return - to_chat(user, "You put the ID into \the [src]'s slot.") + to_chat(user, span_notice("You put the ID into \the [src]'s slot.")) updateSelfDialog()//Update self dialog on success. return //Return in case of failed check or when successful. updateSelfDialog()//For the non-input related code. @@ -970,22 +970,22 @@ GLOBAL_LIST_EMPTY(PDAs) if(!user.transferItemToLoc(C, src)) return pai = C - to_chat(user, "You slot \the [C] into [src].") + to_chat(user, span_notice("You slot \the [C] into [src].")) update_icon() updateUsrDialog() else if(is_type_in_list(C, contained_item)) //Checks if there is a pen if(inserted_item) - to_chat(user, "There is already \a [inserted_item] in \the [src]!") + to_chat(user, span_warning("There is already \a [inserted_item] in \the [src]!")) else if(!user.transferItemToLoc(C, src)) return - to_chat(user, "You slide \the [C] into \the [src].") + to_chat(user, span_notice("You slide \the [C] into \the [src].")) inserted_item = C update_icon() else if(istype(C, /obj/item/photo)) var/obj/item/photo/P = C picture = P.picture - to_chat(user, "You scan \the [C].") + to_chat(user, span_notice("You scan \the [C].")) else return ..() @@ -994,18 +994,18 @@ GLOBAL_LIST_EMPTY(PDAs) switch(scanmode) if(PDA_SCANNER_MEDICAL) - C.visible_message("[user] has analyzed [C]'s vitals!") + C.visible_message(span_alert("[user] has analyzed [C]'s vitals!")) healthscan(user, C, 1) add_fingerprint(user) if(PDA_SCANNER_HALOGEN) - C.visible_message("[user] has analyzed [C]'s radiation levels!") + C.visible_message(span_warning("[user] has analyzed [C]'s radiation levels!")) - user.show_message("Analyzing Results for [C]:") + user.show_message(span_notice("Analyzing Results for [C]:")) if(C.radiation) user.show_message("\green Radiation Level: \black [C.radiation]") else - user.show_message("No radiation detected.") + user.show_message(span_notice("No radiation detected.")) /obj/item/pda/afterattack(atom/A as mob|obj|turf|area, mob/user, proximity) . = ..() @@ -1016,13 +1016,13 @@ GLOBAL_LIST_EMPTY(PDAs) if(!isnull(A.reagents)) if(A.reagents.reagent_list.len > 0) var/reagents_length = A.reagents.reagent_list.len - to_chat(user, "[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.") + to_chat(user, span_notice("[reagents_length] chemical agent[reagents_length > 1 ? "s" : ""] found.")) for (var/re in A.reagents.reagent_list) - to_chat(user, "\t [re]") + to_chat(user, span_notice("\t [re]")) else - to_chat(user, "No active chemical agents found in [A].") + to_chat(user, span_notice("No active chemical agents found in [A].")) else - to_chat(user, "No significant chemical agents found in [A].") + to_chat(user, span_notice("No significant chemical agents found in [A].")) if(PDA_SCANNER_GAS) A.analyzer_act(user, src) @@ -1030,7 +1030,7 @@ GLOBAL_LIST_EMPTY(PDAs) if (!scanmode && istype(A, /obj/item/paper) && owner) var/obj/item/paper/PP = A if (!PP.info) - to_chat(user, "Unable to scan! Paper is blank.") + to_chat(user, span_warning("Unable to scan! Paper is blank.")) return notehtml = PP.info note = replacetext(notehtml, "
", "\[br\]") @@ -1039,7 +1039,7 @@ GLOBAL_LIST_EMPTY(PDAs) note = replacetext(note, "", "\[/list\]") note = html_encode(note) notescanned = TRUE - to_chat(user, "Paper scanned. Saved to PDA's notekeeper." ) + to_chat(user, span_notice("Paper scanned. Saved to PDA's notekeeper.") ) /obj/item/pda/proc/explode() //This needs tuning. @@ -1047,9 +1047,9 @@ GLOBAL_LIST_EMPTY(PDAs) if (ismob(loc)) var/mob/M = loc - M.show_message("Your [src] explodes!", MSG_VISUAL, "You hear a loud *pop*!", MSG_AUDIBLE) + M.show_message(span_userdanger("Your [src] explodes!"), MSG_VISUAL, span_warning("You hear a loud *pop*!"), MSG_AUDIBLE) else - visible_message("[src] explodes!", "You hear a loud *pop*!") + visible_message(span_danger("[src] explodes!"), span_warning("You hear a loud *pop*!")) if(T) T.hotspot_expose(700,125) @@ -1116,7 +1116,7 @@ GLOBAL_LIST_EMPTY(PDAs) return //won't work if dead if(!isnull(aiPDA)) aiPDA.toff = !aiPDA.toff - to_chat(usr, "PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!") + to_chat(usr, span_notice("PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!")) else to_chat(usr, "You do not have a PDA. You should make an issue report about this.") @@ -1128,7 +1128,7 @@ GLOBAL_LIST_EMPTY(PDAs) if(!isnull(aiPDA)) //0 aiPDA.silent = !aiPDA.silent - to_chat(usr, "PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!") + to_chat(usr, span_notice("PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!")) else to_chat(usr, "You do not have a PDA. You should make an issue report about this.") @@ -1157,7 +1157,7 @@ GLOBAL_LIST_EMPTY(PDAs) return //won't work if dead if(!isnull(aiPDA)) aiPDA.toff = !aiPDA.toff - to_chat(usr, "PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!") + to_chat(usr, span_notice("PDA sender/receiver toggled [(aiPDA.toff ? "Off" : "On")]!")) else to_chat(usr, "You do not have a PDA. You should make an issue report about this.") @@ -1169,7 +1169,7 @@ GLOBAL_LIST_EMPTY(PDAs) if(!isnull(aiPDA)) //0 aiPDA.silent = !aiPDA.silent - to_chat(usr, "PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!") + to_chat(usr, span_notice("PDA ringer toggled [(aiPDA.silent ? "Off" : "On")]!")) else to_chat(usr, "You do not have a PDA. You should make an issue report about this.") diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 1ae1b48e64a1..72d70f3f7525 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -273,7 +273,7 @@ Code: if(!powercount) - menu += "No connection
" + menu += span_danger("No connection
") else menu += "" @@ -287,7 +287,7 @@ Code: if (433) menu = "

[PDAIMG(power)] Power Monitor


" if(!powmonitor || !powmonitor.get_powernet()) - menu += "No connection
" + menu += span_danger("No connection
") else var/list/L = list() var/datum/powernet/connected_powernet = powmonitor.get_powernet() diff --git a/code/game/objects/items/devices/PDA/virus_cart.dm b/code/game/objects/items/devices/PDA/virus_cart.dm index e85f6f4ce43d..6b7dde147197 100644 --- a/code/game/objects/items/devices/PDA/virus_cart.dm +++ b/code/game/objects/items/devices/PDA/virus_cart.dm @@ -25,11 +25,11 @@ /obj/item/cartridge/virus/clown/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) - to_chat(U, "Out of charges.") + to_chat(U, span_notice("Out of charges.")) return if(!isnull(target) && !target.toff) charges-- - to_chat(U, "Virus Sent!") + to_chat(U, span_notice("Virus Sent!")) target.honkamt = (rand(15,20)) else to_chat(U, "PDA not found.") @@ -41,11 +41,11 @@ /obj/item/cartridge/virus/mime/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) - to_chat(U, "Out of charges.") + to_chat(U, span_notice("Out of charges.")) return if(!isnull(target) && !target.toff) charges-- - to_chat(U, "Virus Sent!") + to_chat(U, span_notice("Virus Sent!")) target.silent = TRUE target.ttone = "silence" else @@ -60,7 +60,7 @@ /obj/item/cartridge/virus/syndicate/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) - to_chat(U, "Out of charges.") + to_chat(U, span_notice("Out of charges.")) return if(!isnull(target) && !target.toff) charges-- @@ -72,10 +72,10 @@ else difficulty += 2 if(SEND_SIGNAL(target, COMSIG_PDA_CHECK_DETONATE) & COMPONENT_PDA_NO_DETONATE || prob(difficulty * 15)) - U.show_message("An error flashes on your [src].", MSG_VISUAL) + U.show_message(span_danger("An error flashes on your [src]."), MSG_VISUAL) else log_bomber(U, "triggered a PDA explosion on", target, "[!is_special_character(U) ? "(TRIGGED BY NON-ANTAG)" : ""]") - U.show_message("Success!", MSG_VISUAL) + U.show_message(span_notice("Success!"), MSG_VISUAL) target.explode() else to_chat(U, "PDA not found.") @@ -87,12 +87,12 @@ /obj/item/cartridge/virus/frame/send_virus(obj/item/pda/target, mob/living/U) if(charges <= 0) - to_chat(U, "Out of charges.") + to_chat(U, span_notice("Out of charges.")) return if(!isnull(target) && !target.toff) charges-- var/lock_code = "[rand(100,999)] [pick(GLOB.phonetic_alphabet)]" - to_chat(U, "Virus Sent! The unlock code to the target is: [lock_code]") + to_chat(U, span_notice("Virus Sent! The unlock code to the target is: [lock_code]")) var/datum/component/uplink/hidden_uplink = target.GetComponent(/datum/component/uplink) if(!hidden_uplink) hidden_uplink = target.AddComponent(/datum/component/uplink) diff --git a/code/game/objects/items/devices/aicard.dm b/code/game/objects/items/devices/aicard.dm index 2ad8822a45c0..8914c613c5aa 100644 --- a/code/game/objects/items/devices/aicard.dm +++ b/code/game/objects/items/devices/aicard.dm @@ -23,7 +23,7 @@ icon_state = "aispook" /obj/item/aicard/suicide_act(mob/living/user) - user.visible_message("[user] is trying to upload [user.p_them()]self into [src]! That's not going to work out well!") + user.visible_message(span_suicide("[user] is trying to upload [user.p_them()]self into [src]! That's not going to work out well!")) return BRUTELOSS /obj/item/aicard/afterattack(atom/target, mob/user, proximity) diff --git a/code/game/objects/items/devices/anomaly_neutralizer.dm b/code/game/objects/items/devices/anomaly_neutralizer.dm index ca018a041fdd..8ddaa47bbbf6 100644 --- a/code/game/objects/items/devices/anomaly_neutralizer.dm +++ b/code/game/objects/items/devices/anomaly_neutralizer.dm @@ -16,6 +16,6 @@ return if(istype(target, /obj/effect/anomaly)) var/obj/effect/anomaly/A = target - to_chat(user, "The circuitry of [src] fries from the strain of neutralizing [A]!") + to_chat(user, span_notice("The circuitry of [src] fries from the strain of neutralizing [A]!")) A.anomalyNeutralize() qdel(src) diff --git a/code/game/objects/items/devices/beacon.dm b/code/game/objects/items/devices/beacon.dm index e868ec07b668..dc3a976085d1 100644 --- a/code/game/objects/items/devices/beacon.dm +++ b/code/game/objects/items/devices/beacon.dm @@ -28,7 +28,7 @@ else icon_state = "beacon-off" GLOB.teleportbeacons.Remove(src) - to_chat(user, "You [enabled ? "enable" : "disable"] the beacon.") + to_chat(user, span_notice("You [enabled ? "enable" : "disable"] the beacon.")) return /obj/item/beacon/attackby(obj/item/W, mob/user) diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm index 03be0689c7bd..e4cb9ff9a795 100644 --- a/code/game/objects/items/devices/camera_bug.dm +++ b/code/game/objects/items/devices/camera_bug.dm @@ -66,7 +66,7 @@ var/turf/T_user = get_turf(user.loc) var/turf/T_current = get_turf(current) if(T_user.z != T_current.z || !current.can_use()) - to_chat(user, "[src] has lost the signal.") + to_chat(user, span_danger("[src] has lost the signal.")) current = null user.unset_machine() return 0 @@ -243,7 +243,7 @@ if(!same_z_level(C)) return if(!C.can_use()) - to_chat(usr, "Something's wrong with that camera! You can't get a feed.") + to_chat(usr, span_warning("Something's wrong with that camera! You can't get a feed.")) return current = C spawn(6) @@ -300,7 +300,7 @@ var/turf/T_cam = get_turf(C) var/turf/T_bug = get_turf(loc) if(!T_bug || T_cam.z != T_bug.z) - to_chat(usr, "You can't get a signal!") + to_chat(usr, span_warning("You can't get a signal!")) return FALSE return TRUE diff --git a/code/game/objects/items/devices/chameleonproj.dm b/code/game/objects/items/devices/chameleonproj.dm index ed492728c56c..27bcd546c195 100644 --- a/code/game/objects/items/devices/chameleonproj.dm +++ b/code/game/objects/items/devices/chameleonproj.dm @@ -33,7 +33,7 @@ if (isturf(user.loc) || istype(user.loc, /obj/structure) || active_dummy) toggle(user) else - to_chat(user, "You can't use [src] while inside something!") + to_chat(user, span_warning("You can't use [src] while inside something!")) /obj/item/chameleon/afterattack(atom/target, mob/user , proximity) . = ..() @@ -57,7 +57,7 @@ if(!(istype(target, /obj/effect/decal))) //be a footprint return playsound(get_turf(src), 'sound/weapons/flash.ogg', 100, TRUE, -6) - to_chat(user, "Scanned [target].") + to_chat(user, span_notice("Scanned [target].")) var/obj/temp = new/obj() temp.appearance = target.appearance temp.layer = initial(target.layer) // scanning things in your inventory @@ -77,20 +77,20 @@ playsound(get_turf(src), 'sound/effects/pop.ogg', 100, TRUE, -6) qdel(active_dummy) active_dummy = null - to_chat(user, "You deactivate \the [src].") + to_chat(user, span_notice("You deactivate \the [src].")) new /obj/effect/temp_visual/emp/pulse(get_turf(src)) else playsound(get_turf(src), 'sound/effects/pop.ogg', 100, TRUE, -6) var/obj/effect/dummy/chameleon/C = new/obj/effect/dummy/chameleon(user.drop_location()) C.activate(user, saved_appearance, src) - to_chat(user, "You activate \the [src].") + to_chat(user, span_notice("You activate \the [src].")) new /obj/effect/temp_visual/emp/pulse(get_turf(src)) user.cancel_camera() /obj/item/chameleon/proc/disrupt(delete_dummy = 1) if(active_dummy) for(var/mob/M in active_dummy) - to_chat(M, "Your chameleon projector deactivates.") + to_chat(M, span_danger("Your chameleon projector deactivates.")) var/datum/effect_system/spark_spread/spark_system = new /datum/effect_system/spark_spread spark_system.set_up(5, 0, src) spark_system.attach(src) diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index 6788b0158b6f..4c46beb7fa92 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -17,7 +17,7 @@ /obj/item/desynchronizer/attack_self(mob/living/user) if(world.time < next_use) - to_chat(user, "[src] is still recharging.") + to_chat(user, span_warning("[src] is still recharging.")) return if(!sync_holder) desync(user) @@ -27,9 +27,9 @@ /obj/item/desynchronizer/examine(mob/user) . = ..() if(world.time < next_use) - . += "Time left to recharge: [DisplayTimeText(next_use - world.time)]" - . += "Alt-click to customize the duration. Current duration: [DisplayTimeText(duration)]." - . += "Can be used again to interrupt the effect early. The recharge time is the same as the time spent in desync." + . += span_warning("Time left to recharge: [DisplayTimeText(next_use - world.time)]") + . += span_notice("Alt-click to customize the duration. Current duration: [DisplayTimeText(duration)].") + . += span_notice("Can be used again to interrupt the effect early. The recharge time is the same as the time spent in desync.") /obj/item/desynchronizer/AltClick(mob/living/user) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) @@ -39,14 +39,14 @@ new_duration = new_duration SECONDS new_duration = clamp(new_duration, 50, max_duration) duration = new_duration - to_chat(user, "You set the duration to [DisplayTimeText(duration)].") + to_chat(user, span_notice("You set the duration to [DisplayTimeText(duration)].")) /obj/item/desynchronizer/proc/desync(mob/living/user) if(sync_holder) return sync_holder = new(drop_location()) new /obj/effect/temp_visual/desynchronizer(drop_location()) - to_chat(user, "You activate [src], desynchronizing yourself from the present. You can still see your surroundings, but you feel eerily dissociated from reality.") + to_chat(user, span_notice("You activate [src], desynchronizing yourself from the present. You can still see your surroundings, but you feel eerily dissociated from reality.")) user.forceMove(sync_holder) SEND_SIGNAL(user, COMSIG_MOVABLE_SECLUDED_LOCATION) for(var/thing in user) diff --git a/code/game/objects/items/devices/doorCharge.dm b/code/game/objects/items/devices/doorCharge.dm index 6a06508046d0..8e6b1d82cef1 100644 --- a/code/game/objects/items/devices/doorCharge.dm +++ b/code/game/objects/items/devices/doorCharge.dm @@ -17,7 +17,7 @@ /obj/item/doorCharge/ex_act(severity, target) switch(severity) if(EXPLODE_DEVASTATE) - visible_message("[src] detonates!") + visible_message(span_warning("[src] detonates!")) explosion(src.loc,0,2,1,flame_range = 4) qdel(src) if(EXPLODE_HEAVY) diff --git a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm index e87ea386c278..5441519b07d3 100644 --- a/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm +++ b/code/game/objects/items/devices/electroadaptive_pseudocircuit.dm @@ -26,16 +26,16 @@ if(QDELETED(R) || !istype(R)) return if(!R.cell) - to_chat(R, "You need a power cell installed for that.") + to_chat(R, span_warning("You need a power cell installed for that.")) return if(!R.cell.use(circuit_cost)) - to_chat(R, "You don't have the energy for that (you need [DisplayEnergy(circuit_cost)].)") + to_chat(R, span_warning("You don't have the energy for that (you need [DisplayEnergy(circuit_cost)].)")) return if(recharging) - to_chat(R, "[src] needs some time to recharge first.") + to_chat(R, span_warning("[src] needs some time to recharge first.")) return if(!circuits) - to_chat(R, "You need more material. Use [src] on existing simple circuits to break them down.") + to_chat(R, span_warning("You need more material. Use [src] on existing simple circuits to break them down.")) return playsound(R, 'sound/items/rped.ogg', 50, TRUE) recharging = TRUE @@ -54,8 +54,8 @@ return circuits++ maptext = "[circuits]" - user.visible_message("User breaks down [target] with [src].", \ - "You recycle [target] into [src]. It now has material for [circuits] circuits.") + user.visible_message(span_notice("User breaks down [target] with [src]."), \ + span_notice("You recycle [target] into [src]. It now has material for [circuits] circuits.")) playsound(user, 'sound/items/deconstruct.ogg', 50, TRUE) qdel(target) diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index bd77bd88c498..e5510a231372 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -44,9 +44,9 @@ /obj/item/flashlight/suicide_act(mob/living/carbon/human/user) if (user.eye_blind) - user.visible_message("[user] is putting [src] close to [user.p_their()] eyes and turning it on... but [user.p_theyre()] blind!") + user.visible_message(span_suicide("[user] is putting [src] close to [user.p_their()] eyes and turning it on... but [user.p_theyre()] blind!")) return SHAME - user.visible_message("[user] is putting [src] close to [user.p_their()] eyes and turning it on! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is putting [src] close to [user.p_their()] eyes and turning it on! It looks like [user.p_theyre()] trying to commit suicide!")) return (FIRELOSS) /obj/item/flashlight/attack(mob/living/carbon/M, mob/living/carbon/human/user) @@ -57,47 +57,47 @@ return ..() //just hit them in the head if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") + to_chat(user, span_warning("You don't have the dexterity to do this!")) return if(!M.get_bodypart(BODY_ZONE_HEAD)) - to_chat(user, "[M] doesn't have a head!") + to_chat(user, span_warning("[M] doesn't have a head!")) return if(flashlight_power < 1) - to_chat(user, "\The [src] isn't bright enough to see anything! ") + to_chat(user, "[span_warning("\The [src] isn't bright enough to see anything!")] ") return switch(user.zone_selected) if(BODY_ZONE_PRECISE_EYES) if((M.head && M.head.flags_cover & HEADCOVERSEYES) || (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSEYES) || (M.glasses && M.glasses.flags_cover & GLASSESCOVERSEYES)) - to_chat(user, "You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSEYES) ? "helmet" : (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSEYES) ? "mask": "glasses"] first.") + to_chat(user, span_notice("You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSEYES) ? "helmet" : (M.wear_mask && M.wear_mask.flags_cover & MASKCOVERSEYES) ? "mask": "glasses"] first.")) return var/obj/item/organ/eyes/E = M.getorganslot(ORGAN_SLOT_EYES) if(!E) - to_chat(user, "[M] doesn't have any eyes!") + to_chat(user, span_danger("[M] doesn't have any eyes!")) return if(M == user) //they're using it on themselves if(M.flash_act(visual = 1)) - M.visible_message("[M] directs [src] to [M.p_their()] eyes.", "You wave the light in front of your eyes! Trippy!") + M.visible_message("[M] directs [src] to [M.p_their()] eyes.", span_notice("You wave the light in front of your eyes! Trippy!")) else - M.visible_message("[M] directs [src] to [M.p_their()] eyes.", "You wave the light in front of your eyes.") + M.visible_message("[M] directs [src] to [M.p_their()] eyes.", span_notice("You wave the light in front of your eyes.")) else - user.visible_message("[user] directs [src] to [M]'s eyes.", \ - "You direct [src] to [M]'s eyes.") + user.visible_message(span_warning("[user] directs [src] to [M]'s eyes."), \ + span_danger("You direct [src] to [M]'s eyes.")) if(M.stat == DEAD || (HAS_TRAIT(M, TRAIT_BLIND)) || !M.flash_act(visual = 1)) //mob is dead or fully blind - to_chat(user, "[M]'s pupils don't react to the light!") + to_chat(user, span_warning("[M]'s pupils don't react to the light!")) else if(M.dna && M.dna.check_mutation(XRAY)) //mob has X-ray vision - to_chat(user, "[M]'s pupils give an eerie glow!") + to_chat(user, span_danger("[M]'s pupils give an eerie glow!")) else //they're okay! - to_chat(user, "[M]'s pupils narrow.") + to_chat(user, span_notice("[M]'s pupils narrow.")) if(BODY_ZONE_PRECISE_MOUTH) if(M.is_mouth_covered()) - to_chat(user, "You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSMOUTH) ? "helmet" : "mask"] first.") + to_chat(user, span_notice("You're going to need to remove that [(M.head && M.head.flags_cover & HEADCOVERSMOUTH) ? "helmet" : "mask"] first.")) return var/their = M.p_their() @@ -138,26 +138,26 @@ can_use_mirror = mirror.pixel_x < 0 M.visible_message("[M] directs [src] to [their] mouth.", \ - "You point [src] into your mouth.") + span_notice("You point [src] into your mouth.")) if(!can_use_mirror) - to_chat(user, "You can't see anything without a mirror.") + to_chat(user, span_notice("You can't see anything without a mirror.")) return if(organ_count) - to_chat(user, "Inside your mouth [organ_count > 1 ? "are" : "is"] [organ_list].") + to_chat(user, span_notice("Inside your mouth [organ_count > 1 ? "are" : "is"] [organ_list].")) else - to_chat(user, "There's nothing inside your mouth.") + to_chat(user, span_notice("There's nothing inside your mouth.")) if(pill_count) - to_chat(user, "You have [pill_count] implanted pill[pill_count > 1 ? "s" : ""].") + to_chat(user, span_notice("You have [pill_count] implanted pill[pill_count > 1 ? "s" : ""].")) else - user.visible_message("[user] directs [src] to [M]'s mouth.",\ - "You direct [src] to [M]'s mouth.") + user.visible_message(span_notice("[user] directs [src] to [M]'s mouth."),\ + span_notice("You direct [src] to [M]'s mouth.")) if(organ_count) - to_chat(user, "Inside [their] mouth [organ_count > 1 ? "are" : "is"] [organ_list].") + to_chat(user, span_notice("Inside [their] mouth [organ_count > 1 ? "are" : "is"] [organ_list].")) else - to_chat(user, "[M] doesn't have any organs in [their] mouth.") + to_chat(user, span_notice("[M] doesn't have any organs in [their] mouth.")) if(pill_count) - to_chat(user, "[M] has [pill_count] pill[pill_count > 1 ? "s" : ""] implanted in [their] teeth.") + to_chat(user, span_notice("[M] has [pill_count] pill[pill_count > 1 ? "s" : ""] implanted in [their] teeth.")) else return ..() @@ -175,14 +175,26 @@ . = ..() if(!proximity_flag) if(holo_cooldown > world.time) - to_chat(user, "[src] is not ready yet!") + to_chat(user, span_warning("[src] is not ready yet!")) return var/T = get_turf(target) if(locate(/mob/living) in T) new /obj/effect/temp_visual/medical_holosign(T,user) //produce a holographic glow - holo_cooldown = world.time + 100 + holo_cooldown = world.time + 10 SECONDS return +// see: [/datum/wound/burn/proc/uv()] +/obj/item/flashlight/pen/paramedic + name = "paramedic penlight" + desc = "A high-powered UV penlight intended to help stave off infection in the field on serious burned patients. Probably really bad to look into." + icon_state = "penlight_surgical" + /// Our current UV cooldown + var/uv_cooldown = 0 + /// How long between UV fryings + var/uv_cooldown_length = 30 SECONDS + /// How much sanitization to apply to the burn wound + var/uv_power = 1 + /obj/effect/temp_visual/medical_holosign name = "medical holosign" desc = "A small holographic glow that indicates a medic is coming to treat a patient." @@ -193,7 +205,7 @@ . = ..() playsound(loc, 'sound/machines/ping.ogg', 50, 0) //make some noise! if(creator) - visible_message("[creator] created a medical hologram, indicating that [creator.p_theyre(FALSE, FALSE)] coming to help!") + visible_message(span_danger("[creator] created a medical hologram, indicating that [creator.p_theyre(FALSE, FALSE)] coming to help!")) /obj/item/flashlight/seclite @@ -313,16 +325,16 @@ // Usual checks if(!fuel) - to_chat(user, "[src] is out of fuel!") + to_chat(user, span_warning("[src] is out of fuel!")) return if(on) - to_chat(user, "[src] is already on.") + to_chat(user, span_notice("[src] is already on.")) return . = ..() // All good, turn it on. if(.) - user.visible_message("[user] lights \the [src].", "You light \the [src]!") + user.visible_message(span_notice("[user] lights \the [src]."), span_notice("You light \the [src]!")) playsound(loc, ignition_sound, 50, 1) //make some noise! force = on_damage name = "lit [initial(src.name)]" @@ -453,14 +465,14 @@ if(ismob(A)) var/mob/M = A log_combat(user, M, "attacked", "EMP-light") - M.visible_message("[user] blinks \the [src] at \the [A].", \ - "[user] blinks \the [src] at you.") + M.visible_message(span_danger("[user] blinks \the [src] at \the [A]."), \ + span_userdanger("[user] blinks \the [src] at you.")) else - A.visible_message("[user] blinks \the [src] at \the [A].") + A.visible_message(span_danger("[user] blinks \the [src] at \the [A].")) to_chat(user, "\The [src] now has [emp_cur_charges] charge\s.
") A.emp_act(EMP_HEAVY) else - to_chat(user, "\The [src] needs time to recharge!") + to_chat(user, span_warning("\The [src] needs time to recharge!")) return /obj/item/flashlight/emp/debug //for testing emp_act() @@ -521,26 +533,26 @@ /obj/item/flashlight/glowstick/attack_self(mob/user) if(!fuel) - to_chat(user, "[src] is spent.") + to_chat(user, span_notice("[src] is spent.")) return if(on) - to_chat(user, "[src] is already lit.") + to_chat(user, span_notice("[src] is already lit.")) return . = ..() if(.) - user.visible_message("[user] cracks and shakes [src].", "You crack and shake [src], turning it on!") + user.visible_message(span_notice("[user] cracks and shakes [src]."), span_notice("You crack and shake [src], turning it on!")) START_PROCESSING(SSobj, src) /obj/item/flashlight/glowstick/suicide_act(mob/living/carbon/human/user) if(!fuel) - user.visible_message("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but it's empty!") + user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but it's empty!")) return SHAME var/obj/item/organ/eyes/eyes = user.getorganslot(ORGAN_SLOT_EYES) if(!eyes) - user.visible_message("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but [user.p_they()] don't have any!") + user.visible_message(span_suicide("[user] is trying to squirt [src]'s fluids into [user.p_their()] eyes... but [user.p_they()] don't have any!")) return SHAME - user.visible_message("[user] is squirting [src]'s fluids into [user.p_their()] eyes! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is squirting [src]'s fluids into [user.p_their()] eyes! It looks like [user.p_theyre()] trying to commit suicide!")) fuel = 0 return (FIRELOSS) diff --git a/code/game/objects/items/devices/forcefieldprojector.dm b/code/game/objects/items/devices/forcefieldprojector.dm index 3be4b93f8e67..eb5488596a49 100644 --- a/code/game/objects/items/devices/forcefieldprojector.dm +++ b/code/game/objects/items/devices/forcefieldprojector.dm @@ -24,39 +24,39 @@ if(istype(target, /obj/structure/projected_forcefield)) var/obj/structure/projected_forcefield/F = target if(F.generator == src) - to_chat(user, "You deactivate [F].") + to_chat(user, span_notice("You deactivate [F].")) qdel(F) return if(do_after(user, creation_time, target = target)) var/turf/T = get_turf(target) var/obj/structure/projected_forcefield/found_field = locate() in T if(found_field) - to_chat(user, "There is already a forcefield in that location!") + to_chat(user, span_warning("There is already a forcefield in that location!")) return if(T.density) return if(get_dist(T,src) > field_distance_limit) return if(LAZYLEN(current_fields) >= max_fields) - to_chat(user, "[src] cannot sustain any more forcefields!") + to_chat(user, span_notice("[src] cannot sustain any more forcefields!")) return playsound(src,'sound/weapons/resonator_fire.ogg',50,1) - user.visible_message("[user] projects a forcefield!","You project a forcefield.") + user.visible_message(span_warning("[user] projects a forcefield!"),span_notice("You project a forcefield.")) var/obj/structure/projected_forcefield/F = new(T, src) current_fields += F user.changeNext_move(CLICK_CD_MELEE) /obj/item/forcefield_projector/attack_self(mob/user) if(LAZYLEN(current_fields)) - to_chat(user, "You deactivate [src], disabling all active forcefields.") + to_chat(user, span_notice("You deactivate [src], disabling all active forcefields.")) for(var/obj/structure/projected_forcefield/F in current_fields) qdel(F) /obj/item/forcefield_projector/examine(mob/user) . = ..() - . += "It is currently sustaining [LAZYLEN(current_fields)]/[max_fields] fields, and it's [round((shield_integrity/max_shield_integrity)*100)]% charged." + . += span_notice("It is currently sustaining [LAZYLEN(current_fields)]/[max_fields] fields, and it's [round((shield_integrity/max_shield_integrity)*100)]% charged.") /obj/item/forcefield_projector/Initialize(mapload) . = ..() @@ -95,7 +95,7 @@ generator = origin /obj/structure/projected_forcefield/Destroy() - visible_message("[src] flickers and disappears!") + visible_message(span_warning("[src] flickers and disappears!")) playsound(src,'sound/weapons/resonator_blast.ogg',25,1) generator.current_fields -= src generator = null diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index c4fb758b1c79..636b453e67ba 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -66,25 +66,25 @@ . = ..() if(!scanning) return - . += "Alt-click it to clear stored radiation levels." + . += span_info("Alt-click it to clear stored radiation levels.") if(obj_flags & EMAGGED) - . += "The display seems to be incomprehensible." + . += span_warning("The display seems to be incomprehensible.") return switch(radiation_count) if(-INFINITY to RAD_LEVEL_NORMAL) - . += "Ambient radiation level count reports that all is well." + . += span_notice("Ambient radiation level count reports that all is well.") if(RAD_LEVEL_NORMAL + 1 to RAD_LEVEL_MODERATE) - . += "Ambient radiation levels slightly above average." + . += span_disarm("Ambient radiation levels slightly above average.") if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) - . += "Ambient radiation levels above average." + . += span_warning("Ambient radiation levels above average.") if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) - . += "Ambient radiation levels highly above average." + . += span_danger("Ambient radiation levels highly above average.") if(RAD_LEVEL_VERY_HIGH + 1 to RAD_LEVEL_CRITICAL) - . += "Ambient radiation levels nearing critical level." + . += span_suicide("Ambient radiation levels nearing critical level.") if(RAD_LEVEL_CRITICAL + 1 to INFINITY) - . += "Ambient radiation levels above critical level!" + . += span_boldannounce("Ambient radiation levels above critical level!") - . += "The last radiation amount detected was [last_tick_amount]" + . += span_notice("The last radiation amount detected was [last_tick_amount]") /obj/item/geiger_counter/update_icon() if(!scanning) @@ -129,16 +129,16 @@ /obj/item/geiger_counter/attack_self(mob/user) scanning = !scanning update_icon() - to_chat(user, "[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].") + to_chat(user, span_notice("[icon2html(src, user)] You switch [scanning ? "on" : "off"] [src].")) /obj/item/geiger_counter/afterattack(atom/target, mob/user) . = ..() if(user.a_intent == INTENT_HELP) if(!(obj_flags & EMAGGED)) - user.visible_message("[user] scans [target] with [src].", "You scan [target]'s radiation levels with [src]...") + user.visible_message(span_notice("[user] scans [target] with [src]."), span_notice("You scan [target]'s radiation levels with [src]...")) addtimer(CALLBACK(src, .proc/scan, target, user), 20, TIMER_UNIQUE) // Let's not have spamming GetAllContents else - user.visible_message("[user] scans [target] with [src].", "You project [src]'s stored radiation into [target]!") + user.visible_message(span_notice("[user] scans [target] with [src]."), span_danger("You project [src]'s stored radiation into [target]!")) target.rad_act(radiation_count) radiation_count = 0 return TRUE @@ -149,24 +149,24 @@ if(isliving(A)) var/mob/living/M = A if(!M.radiation) - to_chat(user, "[icon2html(src, user)] Radiation levels within normal boundaries.") + to_chat(user, span_notice("[icon2html(src, user)] Radiation levels within normal boundaries.")) else - to_chat(user, "[icon2html(src, user)] Subject is irradiated. Radiation levels: [M.radiation].") + to_chat(user, span_boldannounce("[icon2html(src, user)] Subject is irradiated. Radiation levels: [M.radiation].")) if(rad_strength) - to_chat(user, "[icon2html(src, user)] Target contains radioactive contamination. Radioactive strength: [rad_strength]") + to_chat(user, span_boldannounce("[icon2html(src, user)] Target contains radioactive contamination. Radioactive strength: [rad_strength]")) else - to_chat(user, "[icon2html(src, user)] Target is free of radioactive contamination.") + to_chat(user, span_notice("[icon2html(src, user)] Target is free of radioactive contamination.")) /obj/item/geiger_counter/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER && (obj_flags & EMAGGED)) if(scanning) - to_chat(user, "Turn off [src] before you perform this action!") + to_chat(user, span_warning("Turn off [src] before you perform this action!")) return 0 - user.visible_message("[user] unscrews [src]'s maintenance panel and begins fiddling with its innards...", "You begin resetting [src]...") + user.visible_message(span_notice("[user] unscrews [src]'s maintenance panel and begins fiddling with its innards..."), span_notice("You begin resetting [src]...")) if(!I.use_tool(src, user, 40, volume=50)) return 0 - user.visible_message("[user] refastens [src]'s maintenance panel!", "You reset [src] to its factory settings!") + user.visible_message(span_notice("[user] refastens [src]'s maintenance panel!"), span_notice("You reset [src] to its factory settings!")) obj_flags &= ~EMAGGED radiation_count = 0 update_icon() @@ -178,19 +178,19 @@ if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) return ..() if(!scanning) - to_chat(usr, "[src] must be on to reset its radiation level!") + to_chat(usr, span_warning("[src] must be on to reset its radiation level!")) return 0 radiation_count = 0 - to_chat(usr, "You flush [src]'s radiation counts, resetting it to normal.") + to_chat(usr, span_notice("You flush [src]'s radiation counts, resetting it to normal.")) update_icon() /obj/item/geiger_counter/emag_act(mob/user) if(obj_flags & EMAGGED) return if(scanning) - to_chat(user, "Turn off [src] before you perform this action!") + to_chat(user, span_warning("Turn off [src] before you perform this action!")) return 0 - to_chat(user, "You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.") + to_chat(user, span_warning("You override [src]'s radiation storing protocols. It will now generate small doses of radiation, and stored rads are now projected into creatures you scan.")) obj_flags |= EMAGGED diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm index f204f17bcf25..ebadc3c21dfc 100644 --- a/code/game/objects/items/devices/gps.dm +++ b/code/game/objects/items/devices/gps.dm @@ -15,7 +15,7 @@ GLOBAL_LIST_EMPTY(GPS_list) /obj/item/gps/examine(mob/user) . = ..() - . += "Alt-click to switch it [tracking ? "off":"on"]." + . += span_notice("Alt-click to switch it [tracking ? "off":"on"].") /obj/item/gps/Initialize() . = ..() diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm index 2f3b455d5fee..d7f7f4478cf2 100644 --- a/code/game/objects/items/devices/laserpointer.dm +++ b/code/game/objects/items/devices/laserpointer.dm @@ -44,13 +44,13 @@ if(!user.transferItemToLoc(W, src)) return diode = W - to_chat(user, "You install a [diode.name] in [src].") + to_chat(user, span_notice("You install a [diode.name] in [src].")) else - to_chat(user, "[src] already has a diode installed.") + to_chat(user, span_notice("[src] already has a diode installed.")) else if(W.tool_behaviour == TOOL_SCREWDRIVER) if(diode) - to_chat(user, "You remove the [diode.name] from \the [src].") + to_chat(user, span_notice("You remove the [diode.name] from \the [src].")) diode.forceMove(drop_location()) diode = null else @@ -72,25 +72,25 @@ if( !(user in (viewers(7,target))) ) return if (!diode) - to_chat(user, "You point [src] at [target], but nothing happens!") + to_chat(user, span_notice("You point [src] at [target], but nothing happens!")) return if (!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") + to_chat(user, span_warning("You don't have the dexterity to do this!")) return if(HAS_TRAIT(user, TRAIT_NOGUNS)) - to_chat(user, "Your fingers can't press the button!") + to_chat(user, span_warning("Your fingers can't press the button!")) return if(ishuman(user)) var/mob/living/carbon/human/H = user if(H.dna.check_mutation(HULK) || H.dna.check_mutation(ACTIVE_HULK)) - to_chat(user, "Your fingers can't press the button!") + to_chat(user, span_warning("Your fingers can't press the button!")) return add_fingerprint(user) //nothing happens if the battery is drained if(recharge_locked) - to_chat(user, "You point [src] at [target], but it's still charging.") + to_chat(user, span_notice("You point [src] at [target], but it's still charging.")) return var/outmsg @@ -110,9 +110,9 @@ //chance to actually hit the eyes depends on internal component if(prob(effectchance * diode.rating) && C.flash_act(severity)) - outmsg = "You blind [C] by shining [src] in [C.p_their()] eyes." + outmsg = span_notice("You blind [C] by shining [src] in [C.p_their()] eyes.") else - outmsg = "You fail to blind [C] by shining [src] at [C.p_their()] eyes!" + outmsg = span_warning("You fail to blind [C] by shining [src] at [C.p_their()] eyes!") //robots else if(iscyborg(target)) @@ -126,20 +126,20 @@ R.break_all_cyborg_slots(TRUE) addtimer(CALLBACK(R, /mob/living/silicon/robot/.proc/clear_fullscreen, "laserpointer"), 7 SECONDS) addtimer(CALLBACK(R, /mob/living/silicon/robot/.proc/repair_all_cyborg_slots), 7 SECONDS) - to_chat(R, "Your sensors were overloaded by a laser!") - outmsg = "You overload [R] by shining [src] at [R.p_their()] sensors." + to_chat(R, span_danger("Your sensors were overloaded by a laser!")) + outmsg = span_notice("You overload [R] by shining [src] at [R.p_their()] sensors.") else - outmsg = "You fail to overload [R] by shining [src] at [R.p_their()] sensors!" + outmsg = span_warning("You fail to overload [R] by shining [src] at [R.p_their()] sensors!") //cameras else if(istype(target, /obj/machinery/camera)) var/obj/machinery/camera/C = target if(prob(effectchance * diode.rating)) C.emp_act(EMP_HEAVY) - outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!" + outmsg = span_notice("You hit the lens of [C] with [src], temporarily disabling the camera!") log_combat(user, C, "EMPed", src) else - outmsg = "You miss the lens of [C] with [src]!" + outmsg = span_warning("You miss the lens of [C] with [src]!") //catpeople for(var/mob/living/carbon/human/H in view(1,targloc)) @@ -148,22 +148,22 @@ if(user.mobility_flags & MOBILITY_STAND) H.setDir(get_dir(H,targloc)) // kitty always looks at the light if(prob(effectchance)) - H.visible_message("[H] makes a grab for the light!","LIGHT!") + H.visible_message(span_warning("[H] makes a grab for the light!"),span_userdanger("LIGHT!")) H.Move(targloc) log_combat(user, H, "moved with a laser pointer",src) else - H.visible_message("[H] looks briefly distracted by the light."," You're briefly tempted by the shiny light... ") + H.visible_message(span_notice("[H] looks briefly distracted by the light.")," You're briefly tempted by the shiny light... ") else - H.visible_message("[H] stares at the light"," You stare at the light... ") + H.visible_message(span_notice("[H] stares at the light")," You stare at the light... ") //cats! for(var/mob/living/simple_animal/pet/cat/C in view(1,targloc)) if(prob(50)) - C.visible_message("[C] pounces on the light!","LIGHT!") + C.visible_message(span_notice("[C] pounces on the light!"),span_warning("LIGHT!")) C.Move(targloc) C.set_resting(TRUE, FALSE) else - C.visible_message("[C] looks uninterested in your games.","You spot [user] shining [src] at you. How insulting!") + C.visible_message(span_notice("[C] looks uninterested in your games."),span_warning("You spot [user] shining [src] at you. How insulting!")) //laser pointer image icon_state = "pointer_[pointer_icon_state]" @@ -181,7 +181,7 @@ if(outmsg) to_chat(user, outmsg) else - to_chat(user, "You point [src] at [target].") + to_chat(user, span_info("You point [src] at [target].")) energy -= 1 if(energy <= max_energy) @@ -189,7 +189,7 @@ recharging = 1 START_PROCESSING(SSobj, src) if(energy <= 0) - to_chat(user, "[src]'s battery is overused, it needs time to recharge!") + to_chat(user, span_warning("[src]'s battery is overused, it needs time to recharge!")) recharge_locked = TRUE flick_overlay_view(I, targloc, 10) diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm index 2474dd79474e..873b1d3673c6 100644 --- a/code/game/objects/items/devices/lightreplacer.dm +++ b/code/game/objects/items/devices/lightreplacer.dm @@ -75,23 +75,23 @@ if(istype(W, /obj/item/stack/sheet/glass)) var/obj/item/stack/sheet/glass/G = W if(uses >= max_uses) - to_chat(user, "[src.name] is full.") + to_chat(user, span_warning("[src.name] is full.")) return else if(G.use(decrement)) AddUses(increment) - to_chat(user, "You insert a piece of glass into \the [src.name]. You have [uses] light\s remaining.") + to_chat(user, span_notice("You insert a piece of glass into \the [src.name]. You have [uses] light\s remaining.")) return else - to_chat(user, "You need one sheet of glass to replace lights!") + to_chat(user, span_warning("You need one sheet of glass to replace lights!")) if(istype(W, /obj/item/shard)) if(uses >= max_uses) - to_chat(user, "\The [src] is full.") + to_chat(user, span_warning("\The [src] is full.")) return if(!user.temporarilyRemoveItemFromInventory(W)) return AddUses(round(increment*0.75)) - to_chat(user, "You insert a shard of glass into \the [src]. You have [uses] light\s remaining.") + to_chat(user, span_notice("You insert a shard of glass into \the [src]. You have [uses] light\s remaining.")) qdel(W) return @@ -106,7 +106,7 @@ else if(!user.temporarilyRemoveItemFromInventory(W)) return - to_chat(user, "You insert [L] into \the [src].") + to_chat(user, span_notice("You insert [L] into \the [src].")) AddShards(1, user) qdel(L) return @@ -133,14 +133,14 @@ qdel(L) if(!found_lightbulbs) - to_chat(user, "\The [S] contains no bulbs.") + to_chat(user, span_warning("\The [S] contains no bulbs.")) return if(!replaced_something && src.uses == max_uses) - to_chat(user, "\The [src] is full!") + to_chat(user, span_warning("\The [src] is full!")) return - to_chat(user, "You fill \the [src] with lights from \the [S]. " + status_string() + "") + to_chat(user, span_notice("You fill \the [src] with lights from \the [S]. " + status_string() + "")) /obj/item/lightreplacer/emag_act() if(obj_flags & EMAGGED) @@ -174,7 +174,7 @@ AddUses(new_bulbs) bulb_shards = bulb_shards % shards_required if(new_bulbs != 0) - to_chat(user, "\The [src] has fabricated a new bulb from the broken glass it has stored. It now has [uses] uses.") + to_chat(user, span_notice("\The [src] has fabricated a new bulb from the broken glass it has stored. It now has [uses] uses.")) playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) return new_bulbs @@ -190,7 +190,7 @@ if(CanUse(U)) if(!Use(U)) return - to_chat(U, "You replace \the [target.fitting] with \the [src].") + to_chat(U, span_notice("You replace \the [target.fitting] with \the [src].")) if(target.status != LIGHT_EMPTY) AddShards(1, U) @@ -215,7 +215,7 @@ to_chat(U, "\The [src]'s refill light blinks red.") return else - to_chat(U, "There is a working [target.fitting] already inserted!") + to_chat(U, span_warning("There is a working [target.fitting] already inserted!")) return /obj/item/lightreplacer/proc/Emag() diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm index df36ab40c06a..0b87113e2d23 100644 --- a/code/game/objects/items/devices/megaphone.dm +++ b/code/game/objects/items/devices/megaphone.dm @@ -14,10 +14,10 @@ /obj/item/megaphone/examine(mob/user) . = ..() if(last_used > world.time) - . += "\The [src] is recharging!" + . += span_warning("\The [src] is recharging!") /obj/item/megaphone/suicide_act(mob/living/carbon/user) - user.visible_message("[user] is uttering [user.p_their()] last words into \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is uttering [user.p_their()] last words into \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) last_used = 0//so they dont have to worry about recharging user.say("AAAAAAAAAAAARGHHHHH", forced="megaphone suicide")//he must have died while coding this return OXYLOSS @@ -59,7 +59,7 @@ /obj/item/megaphone/proc/handle_speech(mob/living/carbon/user, list/speech_args) if (user.get_active_held_item() == src) if(!spamcheck()) - to_chat(user, "\The [src] needs to recharge!") + to_chat(user, span_warning("\The [src] needs to recharge!")) else playsound(loc, 'sound/items/megaphone.ogg', 100, 0, 1) speech_args[SPEECH_SPANS] |= voicespan @@ -67,7 +67,7 @@ /obj/item/megaphone/emag_act(mob/user) if(obj_flags & EMAGGED) return - to_chat(user, "You overload \the [src]'s voice synthesizer.") + to_chat(user, span_warning("You overload \the [src]'s voice synthesizer.")) obj_flags |= EMAGGED voicespan = list(SPAN_REALLYBIG, "userdanger") diff --git a/code/game/objects/items/devices/multitool.dm b/code/game/objects/items/devices/multitool.dm index 06835bcf864f..c2e2d8c7d07a 100644 --- a/code/game/objects/items/devices/multitool.dm +++ b/code/game/objects/items/devices/multitool.dm @@ -32,10 +32,10 @@ /obj/item/multitool/examine(mob/user) . = ..() - . += "Its buffer [buffer ? "contains [buffer]." : "is empty."]" + . += span_notice("Its buffer [buffer ? "contains [buffer]." : "is empty."]") /obj/item/multitool/suicide_act(mob/living/carbon/user) - user.visible_message("[user] puts the [src] to [user.p_their()] chest. It looks like [user.p_theyre()] trying to pulse [user.p_their()] heart off!") + user.visible_message(span_suicide("[user] puts the [src] to [user.p_their()] chest. It looks like [user.p_theyre()] trying to pulse [user.p_their()] heart off!")) return OXYLOSS//theres a reason it wasnt recommended by doctors @@ -92,7 +92,7 @@ /obj/item/multitool/ai_detect/proc/toggle_hud(mob/user) hud_on = !hud_on if(user) - to_chat(user, "You toggle the ai detection HUD on [src] [hud_on ? "on" : "off"].") + to_chat(user, span_notice("You toggle the ai detection HUD on [src] [hud_on ? "on" : "off"].")) if(hud_on) show_hud(user) else diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm index ee10570d944d..bfab27ddc96e 100644 --- a/code/game/objects/items/devices/paicard.dm +++ b/code/game/objects/items/devices/paicard.dm @@ -11,7 +11,7 @@ resistance_flags = FIRE_PROOF | ACID_PROOF | INDESTRUCTIBLE /obj/item/paicard/suicide_act(mob/living/user) - user.visible_message("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!") + user.visible_message(span_suicide("[user] is staring sadly at [src]! [user.p_they()] can't keep living without real human intimacy!")) return OXYLOSS /obj/item/paicard/Initialize() @@ -81,21 +81,21 @@ if(pai.master_dna) return if(!iscarbon(usr)) - to_chat(usr, "You don't have any DNA, or your DNA is incompatible with this device!") + to_chat(usr, span_warning("You don't have any DNA, or your DNA is incompatible with this device!")) else var/mob/living/carbon/M = usr pai.master = M.real_name pai.master_dna = M.dna.unique_enzymes - to_chat(pai, "You have been bound to a new master.") + to_chat(pai, span_notice("You have been bound to a new master.")) pai.emittersemicd = FALSE if(href_list["wipe"]) var/confirm = input("Are you CERTAIN you wish to delete the current personality? This action cannot be undone.", "Personality Wipe") in list("Yes", "No") if(confirm == "Yes") if(pai) - to_chat(pai, "You feel yourself slipping away from reality.") - to_chat(pai, "Byte by byte you lose your sense of self.") - to_chat(pai, "Your mental faculties leave you.") - to_chat(pai, "oblivion... ") + to_chat(pai, span_warning("You feel yourself slipping away from reality.")) + to_chat(pai, span_danger("Byte by byte you lose your sense of self.")) + to_chat(pai, span_userdanger("Your mental faculties leave you.")) + to_chat(pai, span_rose("oblivion... ")) qdel(pai) if(href_list["toggle_transmit"] || href_list["toggle_receive"]) var/transmitting = href_list["toggle_transmit"] //it can't be both so if we know it's not transmitting it must be receiving. @@ -106,21 +106,21 @@ pai.can_receive = !pai.can_receive pai.radio.wires.cut(transmit_holder)//wires.cut toggles cut and uncut states transmit_holder = (transmitting ? pai.can_transmit : pai.can_receive) //recycling can be fun! - to_chat(usr,"You [transmit_holder ? "enable" : "disable"] your pAI's [transmitting ? "outgoing" : "incoming"] radio transmissions!") - to_chat(pai,"Your owner has [transmit_holder ? "enabled" : "disabled"] your [transmitting ? "outgoing" : "incoming"] radio transmissions!") + to_chat(usr,span_warning("You [transmit_holder ? "enable" : "disable"] your pAI's [transmitting ? "outgoing" : "incoming"] radio transmissions!")) + to_chat(pai,span_warning("Your owner has [transmit_holder ? "enabled" : "disabled"] your [transmitting ? "outgoing" : "incoming"] radio transmissions!")) if(href_list["setlaws"]) var/newlaws = stripped_multiline_input("Enter any additional directives you would like your pAI personality to follow. Note that these directives will not override the personality's allegiance to its imprinted master. Conflicting directives will be ignored.", "pAI Directive Configuration", pai.laws.supplied[1], MAX_MESSAGE_LEN) if(newlaws && pai) pai.add_supplied_law(0,newlaws) if(href_list["toggle_holo"]) if(pai.canholo) - to_chat(pai, "Your owner has disabled your holomatrix projectors!") + to_chat(pai, span_userdanger("Your owner has disabled your holomatrix projectors!")) pai.canholo = FALSE - to_chat(usr, "You disable your pAI's holomatrix!") + to_chat(usr, span_warning("You disable your pAI's holomatrix!")) else - to_chat(pai, "Your owner has enabled your holomatrix projectors!") + to_chat(pai, span_boldnotice("Your owner has enabled your holomatrix projectors!")) pai.canholo = TRUE - to_chat(usr, "You enable your pAI's holomatrix!") + to_chat(usr, span_notice("You enable your pAI's holomatrix!")) attack_self(usr) @@ -163,7 +163,7 @@ src.add_overlay("pai-sunglasses") /obj/item/paicard/proc/alertUpdate() - audible_message("[src] flashes a message across its screen, \"Additional personalities available for download.\"", "[src] vibrates with an alert.") + audible_message(span_info("[src] flashes a message across its screen, \"Additional personalities available for download.\""), span_notice("[src] vibrates with an alert.")) /obj/item/paicard/emp_act(severity) . = ..() diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm index 2317e529abc6..4930ce752433 100644 --- a/code/game/objects/items/devices/pipe_painter.dm +++ b/code/game/objects/items/devices/pipe_painter.dm @@ -20,11 +20,11 @@ var/obj/machinery/atmospherics/pipe/P = A if(P.paint(GLOB.pipe_paint_colors[paint_color])) playsound(src, 'sound/machines/click.ogg', 50, 1) - user.visible_message("[user] paints \the [P] [paint_color].","You paint \the [P] [paint_color].") + user.visible_message(span_notice("[user] paints \the [P] [paint_color]."),span_notice("You paint \the [P] [paint_color].")) /obj/item/pipe_painter/attack_self(mob/user) paint_color = input("Which colour do you want to use?","Pipe painter") in GLOB.pipe_paint_colors /obj/item/pipe_painter/examine(mob/user) . = ..() - . += "It is set to [paint_color]." + . += span_notice("It is set to [paint_color].") diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm index 177ac21971cf..449e9e660fa2 100644 --- a/code/game/objects/items/devices/powersink.dm +++ b/code/game/objects/items/devices/powersink.dm @@ -66,21 +66,21 @@ if(isturf(T) && !T.intact) attached = locate() in T if(!attached) - to_chat(user, "This device must be placed over an exposed, powered cable node!") + to_chat(user, span_warning("This device must be placed over an exposed, powered cable node!")) else set_mode(CLAMPED_OFF) user.visible_message( \ "[user] attaches \the [src] to the cable.", \ - "You attach \the [src] to the cable.", - "You hear some wires being connected to something.") + span_notice("You attach \the [src] to the cable."), + span_italics("You hear some wires being connected to something.")) else - to_chat(user, "This device must be placed over an exposed, powered cable node!") + to_chat(user, span_warning("This device must be placed over an exposed, powered cable node!")) else set_mode(DISCONNECTED) user.visible_message( \ "[user] detaches \the [src] from the cable.", \ - "You detach \the [src] from the cable.", - "You hear some wires being disconnected from something.") + span_notice("You detach \the [src] from the cable."), + span_italics("You hear some wires being disconnected from something.")) else return ..() @@ -101,8 +101,8 @@ if(CLAMPED_OFF) user.visible_message( \ "[user] activates \the [src]!", \ - "You activate \the [src].", - "You hear a click.") + span_notice("You activate \the [src]."), + span_italics("You hear a click.")) message_admins("Power sink activated by [ADMIN_LOOKUPFLW(user)] at [ADMIN_VERBOSEJMP(src)]") log_game("Power sink activated by [key_name(user)] at [AREACOORD(src)]") set_mode(OPERATING) @@ -110,8 +110,8 @@ if(OPERATING) user.visible_message( \ "[user] deactivates \the [src]!", \ - "You deactivate \the [src].", - "You hear a click.") + span_notice("You deactivate \the [src]."), + span_italics("You hear a click.")) set_mode(CLAMPED_OFF) /obj/item/powersink/process() diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm index c2852e893c08..dc4d38532c9c 100644 --- a/code/game/objects/items/devices/pressureplates.dm +++ b/code/game/objects/items/devices/pressureplates.dm @@ -42,7 +42,7 @@ return if(trigger_mob && isliving(AM)) var/mob/living/L = AM - to_chat(L, "You feel something click beneath you!") + to_chat(L, span_warning("You feel something click beneath you!")) else if(!trigger_item) return can_trigger = FALSE @@ -56,12 +56,12 @@ /obj/item/pressure_plate/attackby(obj/item/I, mob/living/L) if(istype(I, /obj/item/assembly/signaler) && !istype(sigdev) && removable_signaller && L.transferItemToLoc(I, src)) sigdev = I - to_chat(L, "You attach [I] to [src]!") + to_chat(L, span_notice("You attach [I] to [src]!")) return ..() /obj/item/pressure_plate/attack_self(mob/living/L) if(removable_signaller && istype(sigdev)) - to_chat(L, "You remove [sigdev] from [src]") + to_chat(L, span_notice("You remove [sigdev] from [src]")) if(!L.put_in_hands(sigdev)) sigdev.forceMove(get_turf(src)) sigdev = null @@ -69,13 +69,13 @@ /obj/item/pressure_plate/CtrlClick(mob/user) if(protected) - to_chat(user, "You can't quite seem to turn this pressure plate off...") + to_chat(user, span_warning("You can't quite seem to turn this pressure plate off...")) return active = !active if (active == TRUE) - to_chat(user, "You turn [src] on.") + to_chat(user, span_notice("You turn [src] on.")) else - to_chat(user, "You turn [src] off.") + to_chat(user, span_notice("You turn [src] off.")) /obj/item/pressure_plate/hide(yes) if(yes) diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm index fc9ccddaf9e1..913274ea02d7 100644 --- a/code/game/objects/items/devices/quantum_keycard.dm +++ b/code/game/objects/items/devices/quantum_keycard.dm @@ -13,16 +13,16 @@ . = ..() if(qpad) . += "It's currently linked to a quantum pad." - . += "Alt-click to unlink the keycard." + . += span_notice("Alt-click to unlink the keycard.") else - . += "Insert [src] into an active quantum pad to link it." + . += span_notice("Insert [src] into an active quantum pad to link it.") /obj/item/quantum_keycard/AltClick(mob/living/user) if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) return - to_chat(user, "You start pressing [src]'s unlink button...") + to_chat(user, span_notice("You start pressing [src]'s unlink button...")) if(do_after(user, 40, target = src)) - to_chat(user, "The keycard beeps twice and disconnects the quantum link.") + to_chat(user, span_notice("The keycard beeps twice and disconnects the quantum link.")) qpad = null /obj/item/quantum_keycard/update_icon() diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm index ff7113715174..308ceb163139 100644 --- a/code/game/objects/items/devices/radio/electropack.dm +++ b/code/game/objects/items/devices/radio/electropack.dm @@ -24,7 +24,7 @@ return ..() /obj/item/electropack/suicide_act(mob/user) - user.visible_message("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] hooks [user.p_them()]self to the electropack and spams the trigger! It looks like [user.p_theyre()] trying to commit suicide!")) return (FIRELOSS) //ATTACK HAND IGNORING PARENT RETURN VALUE @@ -32,7 +32,7 @@ if(iscarbon(user)) var/mob/living/carbon/C = user if(src == C.back) - to_chat(user, "You need help taking this off!") + to_chat(user, span_warning("You need help taking this off!")) return return ..() @@ -42,7 +42,7 @@ A.icon = 'icons/obj/assemblies.dmi' if(!user.transferItemToLoc(W, A)) - to_chat(user, "[W] is stuck to your hand, you cannot attach it to [src]!") + to_chat(user, span_warning("[W] is stuck to your hand, you cannot attach it to [src]!")) return W.master = A A.part1 = W @@ -70,7 +70,7 @@ var/mob/living/L = loc step(L, pick(GLOB.cardinals)) - to_chat(L, "You feel a sharp shock!") + to_chat(L, span_danger("You feel a sharp shock!")) var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread s.set_up(3, 1, L) s.start() diff --git a/code/game/objects/items/devices/radio/encryptionkey.dm b/code/game/objects/items/devices/radio/encryptionkey.dm index c80d929f0746..8b7768c921d8 100644 --- a/code/game/objects/items/devices/radio/encryptionkey.dm +++ b/code/game/objects/items/devices/radio/encryptionkey.dm @@ -21,7 +21,7 @@ for(var/i in channels) examine_text_list += "[GLOB.channel_tokens[i]] - [lowertext(i)]" - . += "It can access the following channels; [jointext(examine_text_list, ", ")]." + . += span_notice("It can access the following channels; [jointext(examine_text_list, ", ")].") /obj/item/encryptionkey/syndicate name = "syndicate encryption key" diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 755c28039fc7..60bebec1bc1d 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -28,7 +28,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( dog_fashion = null /obj/item/radio/headset/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!") + user.visible_message(span_suicide("[user] begins putting \the [src]'s antenna up [user.p_their()] nose! It looks like [user.p_theyre()] trying to give [user.p_them()]self cancer!")) return TOXLOSS /obj/item/radio/headset/examine(mob/user) @@ -45,12 +45,12 @@ GLOBAL_LIST_INIT(channel_tokens, list( avail_chans += "use [MODE_TOKEN_DEPARTMENT] or [GLOB.channel_tokens[channels[i]]] for [lowertext(channels[i])]" else avail_chans += "use [GLOB.channel_tokens[channels[i]]] for [lowertext(channels[i])]" - . += "A small screen on the headset displays the following available frequencies:\n[english_list(avail_chans)]." + . += span_notice("A small screen on the headset displays the following available frequencies:\n[english_list(avail_chans)].") if(command) - . += "Alt-click to toggle the high-volume mode." + . += span_info("Alt-click to toggle the high-volume mode.") else - . += "A small screen on the headset flashes, it's too small to read without holding or wearing the headset." + . += span_notice("A small screen on the headset flashes, it's too small to read without holding or wearing the headset.") /obj/item/radio/headset/Initialize() . = ..() @@ -296,14 +296,14 @@ GLOBAL_LIST_INIT(channel_tokens, list( keyslot2 = null recalculateChannels() - to_chat(user, "You pop out the encryption keys in the headset.") + to_chat(user, span_notice("You pop out the encryption keys in the headset.")) else - to_chat(user, "This headset doesn't have any unique encryption keys! How useless...") + to_chat(user, span_warning("This headset doesn't have any unique encryption keys! How useless...")) else if(istype(W, /obj/item/encryptionkey)) if(keyslot && keyslot2) - to_chat(user, "The headset can't hold another key!") + to_chat(user, span_warning("The headset can't hold another key!")) return if(!keyslot) @@ -344,4 +344,4 @@ GLOBAL_LIST_INIT(channel_tokens, list( return if (command) use_command = !use_command - to_chat(user, "You toggle high-volume mode [use_command ? "on" : "off"].") + to_chat(user, span_notice("You toggle high-volume mode [use_command ? "on" : "off"].")) diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm index 8232354b9203..03175a6e4dec 100644 --- a/code/game/objects/items/devices/radio/intercom.dm +++ b/code/game/objects/items/devices/radio/intercom.dm @@ -23,7 +23,7 @@ /obj/item/radio/intercom/ratvar/attackby(obj/item/I, mob/living/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) - to_chat(user, "[src] is fastened to the wall with [is_servant_of_ratvar(user) ? "replicant alloy" : "some material you've never seen"], and can't be removed.") + to_chat(user, span_danger("[src] is fastened to the wall with [is_servant_of_ratvar(user) ? "replicant alloy" : "some material you've never seen"], and can't be removed.")) return //no unfastening! . = ..() @@ -51,31 +51,31 @@ /obj/item/radio/intercom/examine(mob/user) . = ..() if(!unfastened) - . += "It's screwed and secured to the wall." + . += span_notice("It's screwed and secured to the wall.") else - . += "It's unscrewed from the wall, and can be detached." + . += span_notice("It's unscrewed from the wall, and can be detached.") /obj/item/radio/intercom/attackby(obj/item/I, mob/living/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) if(unfastened) - user.visible_message("[user] starts tightening [src]'s screws...", "You start screwing in [src]...") + user.visible_message(span_notice("[user] starts tightening [src]'s screws..."), span_notice("You start screwing in [src]...")) if(I.use_tool(src, user, 30, volume=50)) - user.visible_message("[user] tightens [src]'s screws!", "You tighten [src]'s screws.") + user.visible_message(span_notice("[user] tightens [src]'s screws!"), span_notice("You tighten [src]'s screws.")) unfastened = FALSE else - user.visible_message("[user] starts loosening [src]'s screws...", "You start unscrewing [src]...") + user.visible_message(span_notice("[user] starts loosening [src]'s screws..."), span_notice("You start unscrewing [src]...")) if(I.use_tool(src, user, 40, volume=50)) - user.visible_message("[user] loosens [src]'s screws!", "You unscrew [src], loosening it from the wall.") + user.visible_message(span_notice("[user] loosens [src]'s screws!"), span_notice("You unscrew [src], loosening it from the wall.")) unfastened = TRUE return else if(I.tool_behaviour == TOOL_WRENCH) if(!unfastened) - to_chat(user, "You need to unscrew [src] from the wall first!") + to_chat(user, span_warning("You need to unscrew [src] from the wall first!")) return - user.visible_message("[user] starts unsecuring [src]...", "You start unsecuring [src]...") + user.visible_message(span_notice("[user] starts unsecuring [src]..."), span_notice("You start unsecuring [src]...")) I.play_tool_sound(src) if(I.use_tool(src, user, 80)) - user.visible_message("[user] unsecures [src]!", "You detach [src] from the wall.") + user.visible_message(span_notice("[user] unsecures [src]!"), span_notice("You detach [src] from the wall.")) playsound(src, 'sound/items/deconstruct.ogg', 50, 1) new/obj/item/wallframe/intercom(get_turf(src)) qdel(src) diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm index 1245106a308c..b479a75aafc7 100644 --- a/code/game/objects/items/devices/radio/radio.dm +++ b/code/game/objects/items/devices/radio/radio.dm @@ -322,20 +322,20 @@ /obj/item/radio/examine(mob/user) . = ..() if (frequency && in_range(src, user)) - . += "It is set to broadcast over the [frequency/10] frequency." + . += span_notice("It is set to broadcast over the [frequency/10] frequency.") if (unscrewed) - . += "It can be attached and modified." + . += span_notice("It can be attached and modified.") else - . += "It cannot be modified or attached." + . += span_notice("It cannot be modified or attached.") /obj/item/radio/attackby(obj/item/W, mob/user, params) add_fingerprint(user) if(W.tool_behaviour == TOOL_SCREWDRIVER) unscrewed = !unscrewed if(unscrewed) - to_chat(user, "The radio can now be attached and modified!") + to_chat(user, span_notice("The radio can now be attached and modified!")) else - to_chat(user, "The radio can no longer be modified or attached!") + to_chat(user, span_notice("The radio can no longer be modified or attached!")) else return ..() @@ -346,7 +346,7 @@ emped++ //There's been an EMP; better count it var/curremp = emped //Remember which EMP this was if (listening && ismob(loc)) // if the radio is turned on and on someone's person they notice - to_chat(loc, "\The [src] overloads.") + to_chat(loc, span_warning("\The [src] overloads.")) broadcasting = FALSE listening = FALSE for (var/ch_name in channels) @@ -404,14 +404,14 @@ keyslot = null recalculateChannels() - to_chat(user, "You pop out the encryption key in the radio.") + to_chat(user, span_notice("You pop out the encryption key in the radio.")) else - to_chat(user, "This radio doesn't have any encryption keys!") + to_chat(user, span_warning("This radio doesn't have any encryption keys!")) else if(istype(W, /obj/item/encryptionkey/)) if(keyslot) - to_chat(user, "The radio can't hold another key!") + to_chat(user, span_warning("The radio can't hold another key!")) return if(!keyslot) diff --git a/code/game/objects/items/devices/reverse_bear_trap.dm b/code/game/objects/items/devices/reverse_bear_trap.dm index 2facfddfb55a..ee358beba832 100644 --- a/code/game/objects/items/devices/reverse_bear_trap.dm +++ b/code/game/objects/items/devices/reverse_bear_trap.dm @@ -42,7 +42,7 @@ playsound(src, 'sound/machines/microwave/microwave-end.ogg', 100, FALSE) soundloop.stop() soundloop2.stop() - to_chat(loc, "*ding*") + to_chat(loc, span_userdanger("*ding*")) addtimer(CALLBACK(src, .proc/snap), 2) /obj/item/reverse_bear_trap/attack_hand(mob/user) @@ -63,17 +63,17 @@ fear_string = "shakily" if(50 to 60) fear_string = "" - C.visible_message("[C] fiddles with and pulls at [src]...", \ - "You [fear_string] try to pull at [src]...", "You hear clicking and ticking.") + C.visible_message(span_danger("[C] fiddles with and pulls at [src]..."), \ + span_danger("You [fear_string] try to pull at [src]..."), "You hear clicking and ticking.") if(!do_after(user, 20, target = src)) struggling = FALSE return if(!prob(escape_chance)) - to_chat(user, "It doesn't budge!") + to_chat(user, span_warning("It doesn't budge!")) escape_chance++ else - user.visible_message("The lock on [user]'s [name] pops open!", \ - "You force open the padlock!", "You hear a single, pronounced click!") + user.visible_message(span_warning("The lock on [user]'s [name] pops open!"), \ + span_userdanger("You force open the padlock!"), "You hear a single, pronounced click!") REMOVE_TRAIT(src, TRAIT_NODROP, REVERSE_BEAR_TRAP_TRAIT) struggling = FALSE else @@ -83,16 +83,16 @@ /obj/item/reverse_bear_trap/attack(mob/living/target, mob/living/user) if(target.get_item_by_slot(SLOT_HEAD)) - to_chat(user, "Remove [target.p_their()] headgear first!") + to_chat(user, span_warning("Remove [target.p_their()] headgear first!")) return - target.visible_message("[user] starts forcing [src] onto [target]'s head!", \ - "[target] starts forcing [src] onto your head!", "You hear clanking.") - to_chat(user, "You start forcing [src] onto [target]'s head...") + target.visible_message(span_warning("[user] starts forcing [src] onto [target]'s head!"), \ + span_userdanger("[target] starts forcing [src] onto your head!"), "You hear clanking.") + to_chat(user, span_danger("You start forcing [src] onto [target]'s head...")) if(!do_after(user, 30, target = target) || target.get_item_by_slot(SLOT_HEAD)) return - target.visible_message("[user] forces and locks [src] onto [target]'s head!", \ - "[target] locks [src] onto your head!", "You hear a click, and then a timer ticking down.") - to_chat(user, "You force [src] onto [target]'s head and click the padlock shut.") + target.visible_message(span_warning("[user] forces and locks [src] onto [target]'s head!"), \ + span_userdanger("[target] locks [src] onto your head!"), "You hear a click, and then a timer ticking down.") + to_chat(user, span_danger("You force [src] onto [target]'s head and click the padlock shut.")) user.dropItemToGround(src) target.equip_to_slot_if_possible(src, SLOT_HEAD) arm() @@ -102,11 +102,11 @@ reset() var/mob/living/carbon/human/H = loc if(!istype(H) || H.get_item_by_slot(SLOT_HEAD) != src) - visible_message("[src]'s jaws snap open with an ear-piercing crack!") + visible_message(span_warning("[src]'s jaws snap open with an ear-piercing crack!")) playsound(src, 'sound/effects/snap.ogg', 75, TRUE) else var/mob/living/carbon/human/jill = loc - jill.visible_message("[src] goes off in [jill]'s mouth, ripping [jill.p_their()] head apart!", "[src] goes off!") + jill.visible_message(span_boldwarning("[src] goes off in [jill]'s mouth, ripping [jill.p_their()] head apart!"), span_userdanger("[src] goes off!")) jill.emote("scream") playsound(src, 'sound/effects/snap.ogg', 75, TRUE, frequency = 0.5) playsound(src, 'sound/effects/splat.ogg', 50, TRUE, frequency = 0.5) diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm index 1c19a96cd32b..d6966e82b57e 100644 --- a/code/game/objects/items/devices/scanners.dm +++ b/code/game/objects/items/devices/scanners.dm @@ -8,8 +8,13 @@ GAS ANALYZER SLIME SCANNER NANITE SCANNER GENE SCANNER - */ + +// Describes the three modes of scanning available for health analyzers +#define SCANMODE_HEALTH 0 +#define SCANMODE_CHEMICAL 1 +#define SCANMODE_WOUND 2 + /obj/item/t_scanner name = "\improper T-ray scanner" desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." @@ -25,7 +30,7 @@ GENE SCANNER materials = list(/datum/material/iron=150) /obj/item/t_scanner/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] begins to emit terahertz-rays into [user.p_their()] brain with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return TOXLOSS /obj/item/t_scanner/proc/toggle_on() @@ -91,36 +96,41 @@ GENE SCANNER var/advanced = FALSE /obj/item/healthanalyzer/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!") + user.visible_message(span_suicide("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")) return BRUTELOSS /obj/item/healthanalyzer/attack_self(mob/user) - if(!scanmode) - to_chat(user, "You switch the health analyzer to scan chemical contents.") - scanmode = 1 - else - to_chat(user, "You switch the health analyzer to check physical health.") - scanmode = 0 + scanmode = (scanmode + 1) % 3 + switch(scanmode) + if(SCANMODE_HEALTH) + to_chat(user, span_notice("You switch the health analyzer to check physical health.")) + if(SCANMODE_CHEMICAL) + to_chat(user, span_notice("You switch the health analyzer to scan chemical contents.")) + if(SCANMODE_WOUND) + to_chat(user, span_notice("You switch the health analyzer to report extra info on wounds.")) /obj/item/healthanalyzer/attack(mob/living/M, mob/living/carbon/human/user) flick("[icon_state]-scan", src) //makes it so that it plays the scan animation upon scanning, including clumsy scanning // Clumsiness/brain damage check if ((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50)) - to_chat(user, "You stupidly try to analyze the floor's vitals!") - user.visible_message("[user] has analyzed the floor's vitals!") - to_chat(user, "Analyzing results for The floor:\n\tOverall status: Healthy") - to_chat(user, "Key: Suffocation/Toxin/Burn/Brute") - to_chat(user, "\tDamage specifics: 0-0-0-0") - to_chat(user, "Body temperature: ???") + to_chat(user, span_notice("You stupidly try to analyze the floor's vitals!")) + user.visible_message(span_warning("[user] has analyzed the floor's vitals!")) + to_chat(user, span_info("Analyzing results for The floor:\n\tOverall status: Healthy")) + to_chat(user, span_info("Key: Suffocation/Toxin/Burn/Brute")) + to_chat(user, span_info("\tDamage specifics: 0-0-0-0")) + to_chat(user, span_info("Body temperature: ???")) return - user.visible_message("[user] has analyzed [M]'s vitals.") + user.visible_message(span_notice("[user] has analyzed [M]'s vitals.")) - if(scanmode == 0) - healthscan(user, M, advanced) - else if(scanmode == 1) - chemscan(user, M) + switch(scanmode) + if(SCANMODE_HEALTH) + healthscan(user, M, advanced) + if(SCANMODE_CHEMICAL) + chemscan(user, M) + else + woundscan(user, M, src) add_fingerprint(user) @@ -134,38 +144,38 @@ GENE SCANNER var/tox_loss = M.getToxLoss() var/fire_loss = M.getFireLoss() var/brute_loss = M.getBruteLoss() - var/mob_status = (M.stat == DEAD ? "Deceased" : "[round(M.health/M.maxHealth,0.01)*100] % healthy") + var/mob_status = (M.stat == DEAD ? span_alert("Deceased") : "[round(M.health/M.maxHealth,0.01)*100] % healthy") if(HAS_TRAIT(M, TRAIT_FAKEDEATH) && !advanced) - mob_status = "Deceased" + mob_status = span_alert("Deceased") oxy_loss = max(rand(1, 40), oxy_loss, (300 - (tox_loss + fire_loss + brute_loss))) // Random oxygen loss if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.undergoing_cardiac_arrest() && H.stat != DEAD) - to_chat(user, "Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!") + to_chat(user, span_danger("Subject suffering from heart attack: Apply defibrillation or other electric shock immediately!")) - to_chat(user, "Analyzing results for [M]:\n\tOverall status: [mob_status]") + to_chat(user, span_info("Analyzing results for [M]:\n\tOverall status: [mob_status]")) // Damage descriptions if(brute_loss > 10) - to_chat(user, "\t[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.") + to_chat(user, "\t[span_alert("[brute_loss > 50 ? "Severe" : "Minor"] tissue damage detected.")]") if(fire_loss > 10) - to_chat(user, "\t[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.") + to_chat(user, "\t[span_alert("[fire_loss > 50 ? "Severe" : "Minor"] burn damage detected.")]") if(oxy_loss > 10) - to_chat(user, "\t[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.") + to_chat(user, "\t[span_alert("[oxy_loss > 50 ? "Severe" : "Minor"] oxygen deprivation detected.")]") if(tox_loss > 10) - to_chat(user, "\t[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.") + to_chat(user, "\t[span_alert("[tox_loss > 50 ? "Severe" : "Minor"] amount of toxin damage detected.")]") if(M.getStaminaLoss()) - to_chat(user, "\tSubject appears to be suffering from fatigue.") + to_chat(user, "\t[span_alert("Subject appears to be suffering from fatigue.")]") if(advanced) - to_chat(user, "\tFatigue Level: [M.getStaminaLoss()]%.") + to_chat(user, "\t[span_info("Fatigue Level: [M.getStaminaLoss()]%.")]") if (M.getCloneLoss()) - to_chat(user, "\tSubject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.") + to_chat(user, "\t[span_alert("Subject appears to have [M.getCloneLoss() > 30 ? "Severe" : "Minor"] cellular damage.")]") if(advanced) - to_chat(user, "\tCellular Damage Level: [M.getCloneLoss()].") + to_chat(user, "\t[span_info("Cellular Damage Level: [M.getCloneLoss()].")]") if (!M.getorgan(/obj/item/organ/brain)) - to_chat(user, "\tSubject lacks a brain.") + to_chat(user, "\t[span_alert("Subject lacks a brain.")]") if(iscarbon(M)) var/mob/living/carbon/C = M if(LAZYLEN(C.get_traumas())) @@ -177,25 +187,27 @@ GENE SCANNER trauma_desc += "severe " if(TRAUMA_RESILIENCE_LOBOTOMY) trauma_desc += "deep-rooted " + if(TRAUMA_RESILIENCE_WOUND) + trauma_desc += "fracture-derived " if(TRAUMA_RESILIENCE_MAGIC, TRAUMA_RESILIENCE_ABSOLUTE) trauma_desc += "permanent " trauma_desc += B.scan_desc trauma_text += trauma_desc - to_chat(user, "\tCerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].") + to_chat(user, "\t[span_alert("Cerebral traumas detected: subject appears to be suffering from [english_list(trauma_text)].")]") if(C.roundstart_quirks.len) - to_chat(user, "\tSubject has the following physiological traits: [C.get_trait_string()].") + to_chat(user, "\t[span_info("Subject has the following physiological traits: [C.get_trait_string()].")]") if(C.has_quirk(/datum/quirk/allergic)) - to_chat(user, "\tSubject is allergic to the chemical [C.allergies].") + to_chat(user, "\t[span_info("Subject is allergic to the chemical [C.allergies].")]") if(advanced) - to_chat(user, "\tBrain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%.") + to_chat(user, "\t[span_info("Brain Activity Level: [(200 - M.getOrganLoss(ORGAN_SLOT_BRAIN))/2]%.")]") if (M.radiation) - to_chat(user, "\tSubject is irradiated.") + to_chat(user, "\t[span_alert("Subject is irradiated.")]") if(advanced) - to_chat(user, "\tRadiation Level: [M.radiation]%.") + to_chat(user, "\t[span_info("Radiation Level: [M.radiation]%.")]") if(advanced && M.hallucinating()) - to_chat(user, "\tSubject is hallucinating.") + to_chat(user, "\t[span_info("Subject is hallucinating.")]") //Eyes and ears if(advanced) @@ -207,44 +219,44 @@ GENE SCANNER var/healthy = TRUE if(HAS_TRAIT_FROM(C, TRAIT_DEAF, GENETIC_MUTATION)) healthy = FALSE - to_chat(user, "\tSubject is genetically deaf.") + to_chat(user, "\t[span_alert("Subject is genetically deaf.")]") else if(HAS_TRAIT(C, TRAIT_DEAF)) healthy = FALSE - to_chat(user, "\tSubject is deaf.") + to_chat(user, "\t[span_alert("Subject is deaf.")]") else if(ears.damage) - to_chat(user, "\tSubject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.") + to_chat(user, "\t[span_alert("Subject has [ears.damage > ears.maxHealth ? "permanent ": "temporary "]hearing damage.")]") healthy = FALSE if(ears.deaf) - to_chat(user, "\tSubject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf.") + to_chat(user, "\t[span_alert("Subject is [ears.damage > ears.maxHealth ? "permanently ": "temporarily "] deaf.")]") healthy = FALSE if(healthy) - to_chat(user, "\tHealthy.") + to_chat(user, "\t[span_info("Healthy.")]") else - to_chat(user, "\tSubject does not have ears.") + to_chat(user, "\t[span_alert("Subject does not have ears.")]") var/obj/item/organ/eyes/eyes = C.getorganslot(ORGAN_SLOT_EYES) to_chat(user, "\t==EYE STATUS==") if(istype(eyes)) var/healthy = TRUE if(HAS_TRAIT(C, TRAIT_BLIND)) - to_chat(user, "\tSubject is blind.") + to_chat(user, "\t[span_alert("Subject is blind.")]") healthy = FALSE if(HAS_TRAIT(C, TRAIT_NEARSIGHT)) - to_chat(user, "\tSubject is nearsighted.") + to_chat(user, "\t[span_alert("Subject is nearsighted.")]") healthy = FALSE if(eyes.damage > 30) - to_chat(user, "\tSubject has severe eye damage.") + to_chat(user, "\t[span_alert("Subject has severe eye damage.")]") healthy = FALSE else if(eyes.damage > 20) - to_chat(user, "\tSubject has significant eye damage.") + to_chat(user, "\t[span_alert("Subject has significant eye damage.")]") healthy = FALSE else if(eyes.damage) - to_chat(user, "\tSubject has minor eye damage.") + to_chat(user, "\t[span_alert("Subject has minor eye damage.")]") healthy = FALSE if(healthy) - to_chat(user, "\tHealthy.") + to_chat(user, "\t[span_info("Healthy.")]") else - to_chat(user, "\tSubject does not have eyes.") + to_chat(user, "\t[span_alert("Subject does not have eyes.")]") // Body part damage report @@ -252,7 +264,7 @@ GENE SCANNER var/mob/living/carbon/C = M var/list/damaged = C.get_damaged_bodyparts(1,1) if(length(damaged)>0 || oxy_loss>0 || tox_loss>0 || fire_loss>0) - to_chat(user, "\tDamage: Brute-Burn-Toxin-Suffocation\n\t\tSpecifics: [brute_loss]-[fire_loss]-[tox_loss]-[oxy_loss]") + to_chat(user, span_info("\tDamage: Brute-Burn-Toxin-Suffocation\n\t\tSpecifics: [brute_loss]-[fire_loss]-[tox_loss]-[oxy_loss]")) for(var/obj/item/bodypart/org in damaged) to_chat(user, "\t\t[capitalize(org.name)]: [(org.brute_dam > 0) ? "[org.brute_dam]" : "0"]-[(org.burn_dam > 0) ? "[org.burn_dam]" : "0"]") @@ -307,19 +319,19 @@ GENE SCANNER if(report_organs) //we either finish the list, or set it to be empty if no organs were reported in that category if(!max_damage) - max_damage = "\tNon-Functional Organs: " + max_damage = "\t[span_alert("Non-Functional Organs: ")]" else max_damage += "" if(!major_damage) - major_damage = "\tSeverely Damaged Organs: " + major_damage = "\t[span_info("Severely Damaged Organs: ")]" else major_damage += "" if(!minor_damage) - minor_damage = "\tMildly Damaged Organs: " + minor_damage = "\t[span_info("Mildly Damaged Organs: ")]" else minor_damage += "
" if(!no_damage) - no_damage = "\tHealthy Organs: " + no_damage = "\t[span_info("Healthy Organs: ")]" else no_damage += "" to_chat(user, no_damage) @@ -328,7 +340,7 @@ GENE SCANNER to_chat(user, max_damage) //Genetic damage if(advanced && H.has_dna()) - to_chat(user, "\tGenetic Stability: [H.dna.stability]%.") + to_chat(user, "\t[span_info("Genetic Stability: [H.dna.stability]%.")]") // Species and body temperature if(ishuman(M)) @@ -358,20 +370,33 @@ GENE SCANNER else if (S.mutantstomach != initial(S.mutantstomach)) mutant = TRUE - to_chat(user, "Species: [S.name][mutant ? "-derived mutant" : ""]") - to_chat(user, "Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)") + to_chat(user, span_info("Species: [S.name][mutant ? "-derived mutant" : ""]")) + to_chat(user, span_info("Body temperature: [round(M.bodytemperature-T0C,0.1)] °C ([round(M.bodytemperature*1.8-459.67,0.1)] °F)")) // Time of death if(M.tod && (M.stat == DEAD || ((HAS_TRAIT(M, TRAIT_FAKEDEATH)) && !advanced))) - to_chat(user, "Time of Death: [M.tod]") + to_chat(user, "[span_info("Time of Death:")] [M.tod]") var/tdelta = round(world.time - M.timeofdeath) if(tdelta < (DEFIB_TIME_LIMIT * 10)) - to_chat(user, "Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!") + to_chat(user, span_danger("Subject died [DisplayTimeText(tdelta)] ago, defibrillation may be possible!")) + + // Wounds + if(iscarbon(M)) + var/mob/living/carbon/C = M + var/list/wounded_parts = C.get_wounded_bodyparts() + for(var/i in wounded_parts) + var/obj/item/bodypart/wounded_part = i + var/render_list = "Warning: Physical trauma[LAZYLEN(wounded_part.wounds) > 1? "s" : ""] detected in [wounded_part.name]" + for(var/k in wounded_part.wounds) + var/datum/wound/W = k + render_list += "
Type: [W.name]\nSeverity: [W.severity_text()]\nRecommended Treatment: [W.treat_text]
\n" // less lines than in woundscan() so we don't overload people trying to get basic med info + render_list += "
" + to_chat(render_list) for(var/thing in M.diseases) var/datum/disease/D = thing if(!(D.visibility_flags & HIDDEN_SCANNER)) - to_chat(user, "Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text].") //Yogs - Added a "." + to_chat(user, span_alert("Warning: [D.form] detected\nName: [D.name].\nType: [D.spread_text].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure_text].")) //Yogs - Added a "." // Blood Level if(M.has_dna()) @@ -380,8 +405,8 @@ GENE SCANNER if(blood_id) if(ishuman(C)) var/mob/living/carbon/human/H = C - if(H.bleed_rate) - to_chat(user, "Subject is bleeding!") + if(H.is_bleeding()) + to_chat(user, span_danger("Subject is bleeding!")) var/blood_percent = round((C.blood_volume / BLOOD_VOLUME_NORMAL(C))*100) var/blood_type = C.dna.blood_type if(blood_id != /datum/reagent/blood)//special blood substance @@ -391,36 +416,36 @@ GENE SCANNER else blood_type = blood_id if(C.blood_volume <= BLOOD_VOLUME_SAFE(C) && C.blood_volume > BLOOD_VOLUME_OKAY(C)) - to_chat(user, "LOW blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]") + to_chat(user, "[span_danger("LOW blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]") else if(C.blood_volume <= BLOOD_VOLUME_OKAY(C)) - to_chat(user, "CRITICAL blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]") + to_chat(user, "[span_danger("CRITICAL blood level [blood_percent] %, [C.blood_volume] cl,")] [span_info("type: [blood_type]")]") else - to_chat(user, "Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]") + to_chat(user, span_info("Blood level [blood_percent] %, [C.blood_volume] cl, type: [blood_type]")) var/cyberimp_detect for(var/obj/item/organ/cyberimp/CI in C.internal_organs) if(CI.status == ORGAN_ROBOTIC && !CI.syndicate_implant) cyberimp_detect += "[C.name] is modified with a [CI.name].
" if(cyberimp_detect) - to_chat(user, "Detected cybernetic modifications:") - to_chat(user, "[cyberimp_detect]") + to_chat(user, span_notice("Detected cybernetic modifications:")) + to_chat(user, span_notice("[cyberimp_detect]")) SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, FALSE) /proc/chemscan(mob/living/user, mob/living/M) if(istype(M)) if(M.reagents) if(M.reagents.reagent_list.len) - to_chat(user, "Subject contains the following reagents:") + to_chat(user, span_notice("Subject contains the following reagents:")) for(var/datum/reagent/R in M.reagents.reagent_list) - to_chat(user, "[round(R.volume, 0.001)] units of [R.name][R.overdosed == 1 ? " - OVERDOSING" : "."]") + to_chat(user, "[span_notice("[round(R.volume, 0.001)] units of [R.name]")][R.overdosed == 1 ? "- [span_boldannounce("OVERDOSING")]" : "."]") else - to_chat(user, "Subject contains no reagents.") + to_chat(user, span_notice("Subject contains no reagents.")) if(M.reagents.addiction_list.len) - to_chat(user, "Subject is addicted to the following reagents:") + to_chat(user, span_boldannounce("Subject is addicted to the following reagents:")) for(var/datum/reagent/R in M.reagents.addiction_list) - to_chat(user, "[R.name]") + to_chat(user, span_danger("[R.name]")) else - to_chat(user, "Subject is not addicted to any reagents.") + to_chat(user, span_notice("Subject is not addicted to any reagents.")) /obj/item/healthanalyzer/advanced name = "advanced health analyzer" @@ -434,19 +459,83 @@ GENE SCANNER if(!proximity) return if(istype(O, /obj/item/disk/surgery)) - to_chat(user, "You load the surgery protocol from [O] into [src].") + to_chat(user, span_notice("You load the surgery protocol from [O] into [src].")) var/obj/item/disk/surgery/D = O if(do_after(user, 10, target = O)) advanced_surgeries |= D.surgeries return TRUE if(istype(O, /obj/machinery/computer/operating)) - to_chat(user, "You copy surgery protocols from [O] into [src].") + to_chat(user, span_notice("You copy surgery protocols from [O] into [src].")) var/obj/machinery/computer/operating/OC = O if(do_after(user, 10, target = O)) advanced_surgeries |= OC.advanced_surgeries return TRUE return +/// Displays wounds with extended information on their status vs medscanners +/proc/woundscan(mob/user, mob/living/carbon/patient, obj/item/healthanalyzer/wound/scanner) + if(!istype(patient)) + return + + var/render_list = "" + for(var/i in patient.get_wounded_bodyparts()) + var/obj/item/bodypart/wounded_part = i + render_list += "Warning: Physical trauma[LAZYLEN(wounded_part.wounds) > 1? "s" : ""] detected in [wounded_part.name]" + for(var/k in wounded_part.wounds) + var/datum/wound/W = k + render_list += "
[W.get_scanner_description()]
\n" + render_list += "
" + + if(render_list == "") + if(istype(scanner)) + // Only emit the cheerful scanner message if this scan came from a scanner + playsound(scanner, 'sound/machines/ping.ogg', 50, FALSE) + to_chat(user, span_notice("\The [scanner] makes a happy ping and briefly displays a smiley face with several exclamation points! It's really excited to report that [patient] has no wounds!")) + else + to_chat(user, "No wounds detected in subject.") + else + to_chat(user, jointext(render_list, "")) + +/obj/item/healthanalyzer/wound + name = "first aid analyzer" + icon_state = "adv_spectrometer" + desc = "A prototype MeLo-Tech medical scanner used to diagnose injuries and recommend treatment for serious wounds, but offers no further insight into the patient's health. You hope the final version is less annoying to read!" + var/next_encouragement + var/greedy + +/obj/item/healthanalyzer/wound/attack_self(mob/user) + if(next_encouragement < world.time) + playsound(src, 'sound/machines/ping.ogg', 50, FALSE) + var/list/encouragements = list("briefly displays a happy face, gazing emptily at you", "briefly displays a spinning cartoon heart", "displays an encouraging message about eating healthy and exercising", \ + "reminds you that everyone is doing their best", "displays a message wishing you well", "displays a sincere thank-you for your interest in first-aid", "formally absolves you of all your sins") + to_chat(user, span_notice("\The [src] makes a happy ping and [pick(encouragements)]!")) + next_encouragement = world.time + 10 SECONDS + greedy = FALSE + else if(!greedy) + to_chat(user, span_warning("\The [src] displays an eerily high-definition frowny face, chastizing you for asking it for too much encouragement.")) + greedy = TRUE + else + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + if(isliving(user)) + var/mob/living/L = user + if(L.getBruteLoss() >= 10) + to_chat(L, span_warning("\The [src] makes a disappointed buzz, chastizing you for asking it for too much encouragement.")) + return + to_chat(L, span_warning("\The [src] makes a disappointed buzz and pricks your finger for being greedy. Ow!")) + L.adjustBruteLoss(4) + L.dropItemToGround(src) + +/obj/item/healthanalyzer/wound/attack(mob/living/carbon/patient, mob/living/carbon/human/user) + add_fingerprint(user) + user.visible_message(span_notice("[user] scans [patient] for serious injuries."), span_notice("You scan [patient] for serious injuries.")) + + if(!istype(patient)) + playsound(src, 'sound/machines/buzz-sigh.ogg', 30, TRUE) + to_chat(user, span_notice("\The [src] makes a sad buzz and briefly displays a frowny face, indicating it can't scan [patient].")) + return + + woundscan(user, patient, src) + /obj/item/analyzer desc = "A hand-held environmental scanner which reports current gas levels. Alt-Click to use the built in barometer function." name = "analyzer" @@ -472,10 +561,10 @@ GENE SCANNER /obj/item/analyzer/examine(mob/user) . = ..() - . += "Alt-click [src] to activate the barometer function." + . += span_notice("Alt-click [src] to activate the barometer function.") /obj/item/analyzer/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!") + user.visible_message(span_suicide("[user] begins to analyze [user.p_them()]self with [src]! The display shows that [user.p_theyre()] dead!")) return BRUTELOSS /obj/item/analyzer/attack_self(mob/user) @@ -497,11 +586,11 @@ GENE SCANNER var/pressure = environment.return_pressure() var/total_moles = environment.total_moles() - to_chat(user, "Results:") + to_chat(user, span_info("Results:")) if(abs(pressure - ONE_ATMOSPHERE) < 10) - to_chat(user, "Pressure: [round(pressure, 0.01)] kPa") + to_chat(user, span_info("Pressure: [round(pressure, 0.01)] kPa")) else - to_chat(user, "Pressure: [round(pressure, 0.01)] kPa") + to_chat(user, span_alert("Pressure: [round(pressure, 0.01)] kPa")) if(total_moles) var/o2_concentration = environment.get_moles(/datum/gas/oxygen)/total_moles var/n2_concentration = environment.get_moles(/datum/gas/nitrogen)/total_moles @@ -509,31 +598,31 @@ GENE SCANNER var/plasma_concentration = environment.get_moles(/datum/gas/plasma)/total_moles if(abs(n2_concentration - N2STANDARD) < 20) - to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)") + to_chat(user, span_info("Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)")) else - to_chat(user, "Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)") + to_chat(user, span_alert("Nitrogen: [round(n2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/nitrogen), 0.01)] mol)")) if(abs(o2_concentration - O2STANDARD) < 2) - to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)") + to_chat(user, span_info("Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)")) else - to_chat(user, "Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)") + to_chat(user, span_alert("Oxygen: [round(o2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/oxygen), 0.01)] mol)")) if(co2_concentration > 0.01) - to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)") + to_chat(user, span_alert("CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)")) else - to_chat(user, "CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)") + to_chat(user, span_info("CO2: [round(co2_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/carbon_dioxide), 0.01)] mol)")) if(plasma_concentration > 0.005) - to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)") + to_chat(user, span_alert("Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)")) else - to_chat(user, "Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)") + to_chat(user, span_info("Plasma: [round(plasma_concentration*100, 0.01)] % ([round(environment.get_moles(/datum/gas/plasma), 0.01)] mol)")) for(var/id in environment.get_gases()) if(id in GLOB.hardcoded_gases) continue var/gas_concentration = environment.get_moles(id)/total_moles - to_chat(user, "[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(environment.get_moles(id), 0.01)] mol)") - to_chat(user, "Temperature: [round(environment.return_temperature()-T0C, 0.01)] °C ([round(environment.return_temperature(), 0.01)] K)") + to_chat(user, span_alert("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(environment.get_moles(id), 0.01)] mol)")) + to_chat(user, span_info("Temperature: [round(environment.return_temperature()-T0C, 0.01)] °C ([round(environment.return_temperature(), 0.01)] K)")) /obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens ..() @@ -541,7 +630,7 @@ GENE SCANNER if(user.canUseTopic(src, BE_CLOSE)) if(cooldown) - to_chat(user, "[src]'s barometer function is preparing itself.") + to_chat(user, span_warning("[src]'s barometer function is preparing itself.")) return var/turf/T = get_turf(user) @@ -553,7 +642,7 @@ GENE SCANNER var/datum/weather/ongoing_weather = null if(!user_area.outdoors) - to_chat(user, "[src]'s barometer function won't work indoors!") + to_chat(user, span_warning("[src]'s barometer function won't work indoors!")) return for(var/V in SSweather.processing) @@ -564,26 +653,26 @@ GENE SCANNER if(ongoing_weather) if((ongoing_weather.stage == MAIN_STAGE) || (ongoing_weather.stage == WIND_DOWN_STAGE)) - to_chat(user, "[src]'s barometer function can't trace anything while the storm is [ongoing_weather.stage == MAIN_STAGE ? "already here!" : "winding down."]") + to_chat(user, span_warning("[src]'s barometer function can't trace anything while the storm is [ongoing_weather.stage == MAIN_STAGE ? "already here!" : "winding down."]")) return - to_chat(user, "The next [ongoing_weather] will hit in [butchertime(ongoing_weather.next_hit_time - world.time)].") + to_chat(user, span_notice("The next [ongoing_weather] will hit in [butchertime(ongoing_weather.next_hit_time - world.time)].")) if(ongoing_weather.aesthetic) - to_chat(user, "[src]'s barometer function says that the next storm will breeze on by.") + to_chat(user, span_warning("[src]'s barometer function says that the next storm will breeze on by.")) else var/next_hit = SSweather.next_hit_by_zlevel["[T.z]"] var/fixed = next_hit ? next_hit - world.time : -1 if(fixed < 0) - to_chat(user, "[src]'s barometer function was unable to trace any weather patterns.") + to_chat(user, span_warning("[src]'s barometer function was unable to trace any weather patterns.")) else - to_chat(user, "[src]'s barometer function says a storm will land in approximately [butchertime(fixed)].") + to_chat(user, span_warning("[src]'s barometer function says a storm will land in approximately [butchertime(fixed)].")) cooldown = TRUE addtimer(CALLBACK(src,/obj/item/analyzer/proc/ping), cooldown_time) /obj/item/analyzer/proc/ping() if(isliving(loc)) var/mob/living/L = loc - to_chat(L, "[src]'s barometer function is ready!") + to_chat(L, span_notice("[src]'s barometer function is ready!")) playsound(src, 'sound/machines/click.ogg', 100) cooldown = FALSE @@ -600,13 +689,13 @@ GENE SCANNER /proc/atmosanalyzer_scan(mixture, mob/living/user, atom/target = src) var/icon = target - user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(user))] [target].", "You use the analyzer on [icon2html(icon, user)] [target].") - to_chat(user, "Results of analysis of [icon2html(icon, user)] [target].") + user.visible_message("[user] has used the analyzer on [icon2html(icon, viewers(user))] [target].", span_notice("You use the analyzer on [icon2html(icon, user)] [target].")) + to_chat(user, span_boldnotice("Results of analysis of [icon2html(icon, user)] [target].")) var/list/airs = islist(mixture) ? mixture : list(mixture) for(var/g in airs) if(airs.len > 1) //not a unary gas mixture - to_chat(user, "Node [airs.Find(g)]") + to_chat(user, span_boldnotice("Node [airs.Find(g)]")) var/datum/gas_mixture/air_contents = g var/total_moles = air_contents.total_moles() @@ -616,25 +705,25 @@ GENE SCANNER var/cached_scan_results = air_contents.analyzer_results if(total_moles > 0) - to_chat(user, "Moles: [round(total_moles, 0.01)] mol") - to_chat(user, "Volume: [volume] L") - to_chat(user, "Pressure: [round(pressure,0.01)] kPa") + to_chat(user, span_notice("Moles: [round(total_moles, 0.01)] mol")) + to_chat(user, span_notice("Volume: [volume] L")) + to_chat(user, span_notice("Pressure: [round(pressure,0.01)] kPa")) for(var/id in air_contents.get_gases()) var/gas_concentration = air_contents.get_moles(id)/total_moles - to_chat(user, "[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(air_contents.get_moles(id), 0.01)] mol)") - to_chat(user, "Temperature: [round(temperature - T0C,0.01)] °C ([round(temperature, 0.01)] K)") + to_chat(user, span_notice("[GLOB.meta_gas_info[id][META_GAS_NAME]]: [round(gas_concentration*100, 0.01)] % ([round(air_contents.get_moles(id), 0.01)] mol)")) + to_chat(user, span_notice("Temperature: [round(temperature - T0C,0.01)] °C ([round(temperature, 0.01)] K)")) else if(airs.len > 1) - to_chat(user, "This node is empty!") + to_chat(user, span_notice("This node is empty!")) else - to_chat(user, "[target] is empty!") + to_chat(user, span_notice("[target] is empty!")) if(cached_scan_results && cached_scan_results["fusion"]) //notify the user if a fusion reaction was detected var/instability = round(cached_scan_results["fusion"], 0.01) - to_chat(user, "Large amounts of free neutrons detected in the air indicate that a fusion reaction took place.") - to_chat(user, "Instability of the last fusion reaction: [instability].") + to_chat(user, span_boldnotice("Large amounts of free neutrons detected in the air indicate that a fusion reaction took place.")) + to_chat(user, span_notice("Instability of the last fusion reaction: [instability].")) return //slime scanner @@ -658,7 +747,7 @@ GENE SCANNER if(user.stat || user.eye_blind) return if (!isslime(M)) - to_chat(user, "This device can only scan slimes!") + to_chat(user, span_warning("This device can only scan slimes!")) return var/mob/living/simple_animal/slime/T = M slime_scan(T, user) @@ -666,12 +755,12 @@ GENE SCANNER /proc/slime_scan(mob/living/simple_animal/slime/T, mob/living/user) to_chat(user, "========================") to_chat(user, "Slime scan results:") - to_chat(user, "[T.colour] [T.is_adult ? "adult" : "baby"] slime") + to_chat(user, span_notice("[T.colour] [T.is_adult ? "adult" : "baby"] slime")) to_chat(user, "Nutrition: [T.nutrition]/[T.get_max_nutrition()]") if (T.nutrition < T.get_starve_nutrition()) - to_chat(user, "Warning: slime is starving!") + to_chat(user, span_warning("Warning: slime is starving!")) else if (T.nutrition < T.get_hunger_nutrition()) - to_chat(user, "Warning: slime is hungry") + to_chat(user, span_warning("Warning: slime is hungry")) to_chat(user, "Electric charge strength: [T.powerlevel]") to_chat(user, "Health: [round(T.health/T.maxHealth,0.01)*100]%") if (T.slime_mutation[4] == T.colour) @@ -691,7 +780,7 @@ GENE SCANNER to_chat(user, "Multiple cores detected") to_chat(user, "Growth progress: [T.amount_grown]/[SLIME_EVOLUTION_THRESHOLD]") if(T.effectmod) - to_chat(user, "Core mutation in progress: [T.effectmod]") + to_chat(user, span_notice("Core mutation in progress: [T.effectmod]")) to_chat(user, "Progress in core mutation: [T.applied] / [SLIME_EXTRACT_CROSSING_REQUIRED]") to_chat(user, "========================") @@ -714,13 +803,13 @@ GENE SCANNER materials = list(/datum/material/iron=200) /obj/item/nanite_scanner/attack(mob/living/M, mob/living/carbon/human/user) - user.visible_message("[user] has analyzed [M]'s nanites.") + user.visible_message(span_notice("[user] has analyzed [M]'s nanites.")) add_fingerprint(user) var/response = SEND_SIGNAL(M, COMSIG_NANITE_SCAN, user, TRUE) if(!response) - to_chat(user, "No nanites detected in the subject.") + to_chat(user, span_info("No nanites detected in the subject.")) /obj/item/sequence_scanner name = "genetic sequence scanner" @@ -746,11 +835,11 @@ GENE SCANNER /obj/item/sequence_scanner/attack(mob/living/M, mob/living/carbon/human/user) add_fingerprint(user) if (!HAS_TRAIT(M, TRAIT_GENELESS) && !HAS_TRAIT(M, TRAIT_BADDNA)) //no scanning if its a husk or DNA-less Species - user.visible_message("[user] has analyzed [M]'s genetic sequence.") + user.visible_message(span_notice("[user] has analyzed [M]'s genetic sequence.")) gene_scan(M, user) else - user.visible_message("[user] failed to analyse [M]'s genetic sequence.", "[M] has no readable genetic sequence!") + user.visible_message(span_notice("[user] failed to analyse [M]'s genetic sequence."), span_warning("[M] has no readable genetic sequence!")) /obj/item/sequence_scanner/attack_self(mob/user) display_sequence(user) @@ -766,19 +855,19 @@ GENE SCANNER if(istype(O, /obj/machinery/computer/scan_consolenew)) var/obj/machinery/computer/scan_consolenew/C = O if(C.stored_research) - to_chat(user, "[name] database updated.") + to_chat(user, span_notice("[name] database updated.")) discovered = C.stored_research.discovered_mutations else - to_chat(user,"No database to update from.") + to_chat(user,span_warning("No database to update from.")) /obj/item/sequence_scanner/proc/gene_scan(mob/living/carbon/C, mob/living/user) if(!iscarbon(C) || !C.has_dna()) return buffer = C.dna.mutation_index - to_chat(user, "Subject [C.name]'s DNA sequence has been saved to buffer.") + to_chat(user, span_notice("Subject [C.name]'s DNA sequence has been saved to buffer.")) if(LAZYLEN(buffer)) for(var/A in buffer) - to_chat(user, "[get_display_name(A)]") + to_chat(user, span_notice("[get_display_name(A)]")) /obj/item/sequence_scanner/proc/display_sequence(mob/living/user) @@ -803,7 +892,7 @@ GENE SCANNER display += "-" display += copytext_char(sequence, 1 + i*DNA_MUTATION_BLOCKS, DNA_MUTATION_BLOCKS*(1+i) + 1) - to_chat(user, "[display]
") + to_chat(user, "[span_boldnotice("[display]")]
") ready = FALSE icon_state = "[icon_state]_recharging" @@ -821,3 +910,7 @@ GENE SCANNER return "[HM.name] ([HM.alias])" else return HM.alias + +#undef SCANMODE_HEALTH +#undef SCANMODE_CHEMICAL +#undef SCANMODE_WOUND diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm index e5b8790fc8bd..992e7ca181c8 100644 --- a/code/game/objects/items/devices/taperecorder.dm +++ b/code/game/objects/items/devices/taperecorder.dm @@ -61,13 +61,13 @@ if(!user.transferItemToLoc(I,src)) return mytape = I - to_chat(user, "You insert [I] into [src].") + to_chat(user, span_notice("You insert [I] into [src].")) update_icon() /obj/item/taperecorder/proc/eject(mob/user) if(mytape) - to_chat(user, "You remove [mytape] from [src].") + to_chat(user, span_notice("You remove [mytape] from [src].")) stop() user.put_in_hands(mytape) mytape = null @@ -134,7 +134,7 @@ return if(mytape.used_capacity < mytape.max_capacity) - to_chat(usr, "Recording started.") + to_chat(usr, span_notice("Recording started.")) recording = 1 update_icon() mytape.timestamp += mytape.used_capacity @@ -148,7 +148,7 @@ recording = 0 update_icon() else - to_chat(usr, "The tape is full.") + to_chat(usr, span_notice("The tape is full.")) /obj/item/taperecorder/verb/stop() @@ -162,7 +162,7 @@ recording = 0 mytape.timestamp += mytape.used_capacity mytape.storedinfo += "\[[time2text(mytape.used_capacity * 10,"mm:ss")]\] Recording stopped." - to_chat(usr, "Recording stopped.") + to_chat(usr, span_notice("Recording stopped.")) return else if(playing) playing = 0 @@ -186,7 +186,7 @@ playing = 1 update_icon() - to_chat(usr, "Playing started.") + to_chat(usr, span_notice("Playing started.")) var/used = mytape.used_capacity //to stop runtimes when you eject the tape var/max = mytape.max_capacity for(var/i = 1, used < max, sleep(10 * playsleepseconds)) @@ -215,10 +215,10 @@ /obj/item/taperecorder/attack_self(mob/user) if(!mytape) - to_chat(user, "The [src] does not have a tape inside.") + to_chat(user, span_notice("The [src] does not have a tape inside.")) return if(mytape.ruined) - to_chat(user, "The tape inside the [src] appears to be broken.") + to_chat(user, span_notice("The tape inside the [src] appears to be broken.")) return update_available_icons() @@ -251,12 +251,12 @@ if(!mytape) return if(!canprint) - to_chat(usr, "The recorder can't print that fast!") + to_chat(usr, span_notice("The recorder can't print that fast!")) return if(recording || playing) return - to_chat(usr, "Transcript printed.") + to_chat(usr, span_notice("Transcript printed.")) var/obj/item/paper/P = new /obj/item/paper(get_turf(src)) var/t1 = "Transcript:

" for(var/i = 1, mytape.storedinfo.len >= i, i++) @@ -298,7 +298,7 @@ /obj/item/tape/attack_self(mob/user) if(!ruined) - to_chat(user, "You pull out all the tape!") + to_chat(user, span_notice("You pull out all the tape!")) ruin() @@ -317,9 +317,9 @@ /obj/item/tape/attackby(obj/item/I, mob/user, params) if(ruined && I.tool_behaviour == TOOL_SCREWDRIVER || istype(I, /obj/item/pen)) - to_chat(user, "You start winding the tape back in...") + to_chat(user, span_notice("You start winding the tape back in...")) if(I.use_tool(src, user, 120)) - to_chat(user, "You wound the tape back in.") + to_chat(user, span_notice("You wound the tape back in.")) fix() //Random colour tapes diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm index edbf02f7d87d..c418565954dc 100644 --- a/code/game/objects/items/devices/traitordevices.dm +++ b/code/game/objects/items/devices/traitordevices.dm @@ -36,7 +36,7 @@ effective or pretty fucking useless. /obj/item/batterer/attack_self(mob/living/carbon/user, flag = 0, emp = 0) if(!user) return if(times_used >= max_uses) - to_chat(user, "The mind batterer has been burnt out!") + to_chat(user, span_danger("The mind batterer has been burnt out!")) return log_combat(user, null, "knocked down people in the area", src) @@ -45,13 +45,13 @@ effective or pretty fucking useless. if(prob(50)) M.Paralyze(rand(200,400)) - to_chat(M, "You feel a tremendous, paralyzing wave flood your mind.") + to_chat(M, span_userdanger("You feel a tremendous, paralyzing wave flood your mind.")) else - to_chat(M, "You feel a sudden, electric jolt travel through your head.") + to_chat(M, span_userdanger("You feel a sudden, electric jolt travel through your head.")) playsound(src.loc, 'sound/misc/interference.ogg', 50, 1) - to_chat(user, "You trigger [src].") + to_chat(user, span_notice("You trigger [src].")) times_used += 1 if(times_used >= max_uses) icon_state = "battererburnt" @@ -87,14 +87,14 @@ effective or pretty fucking useless. used = TRUE icon_state = "health1" handle_cooldown(cooldown) // splits off to handle the cooldown while handling wavelength - to_chat(user, "Successfully irradiated [M].") + to_chat(user, span_warning("Successfully irradiated [M].")) spawn((wavelength+(intensity*4))*5) if(M) if(intensity >= 5) M.apply_effect(round(intensity/0.075), EFFECT_UNCONSCIOUS) M.rad_act(intensity*10) else - to_chat(user, "The radioactive microlaser is still recharging.") + to_chat(user, span_warning("The radioactive microlaser is still recharging.")) /obj/item/healthanalyzer/rad_laser/proc/handle_cooldown(cooldown) spawn(cooldown) @@ -226,14 +226,14 @@ effective or pretty fucking useless. /obj/item/shadowcloak/proc/Activate(mob/living/carbon/human/user) if(!user) return - to_chat(user, "You activate [src].") + to_chat(user, span_notice("You activate [src].")) src.user = user START_PROCESSING(SSobj, src) old_alpha = user.alpha on = TRUE /obj/item/shadowcloak/proc/Deactivate() - to_chat(user, "You deactivate [src].") + to_chat(user, span_notice("You deactivate [src].")) STOP_PROCESSING(SSobj, src) if(user) user.alpha = old_alpha @@ -268,7 +268,7 @@ effective or pretty fucking useless. var/range = 12 /obj/item/jammer/attack_self(mob/user) - to_chat(user,"You [active ? "deactivate" : "activate"] [src].") + to_chat(user,span_notice("You [active ? "deactivate" : "activate"] [src].")) active = !active if(active) GLOB.active_jammers |= src diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm index 69d7f914198c..3c43eb22354c 100644 --- a/code/game/objects/items/devices/transfer_valve.dm +++ b/code/game/objects/items/devices/transfer_valve.dm @@ -20,34 +20,34 @@ /obj/item/transfer_valve/attackby(obj/item/item, mob/user, params) if(istype(item, /obj/item/tank)) if(tank_one && tank_two) - to_chat(user, "There are already two tanks attached, remove one first!") + to_chat(user, span_warning("There are already two tanks attached, remove one first!")) return if(!tank_one) if(!user.transferItemToLoc(item, src)) return tank_one = item - to_chat(user, "You attach the tank to the transfer valve.") + to_chat(user, span_notice("You attach the tank to the transfer valve.")) else if(!tank_two) if(!user.transferItemToLoc(item, src)) return tank_two = item - to_chat(user, "You attach the tank to the transfer valve.") + to_chat(user, span_notice("You attach the tank to the transfer valve.")) update_icon() //TODO: Have this take an assemblyholder else if(isassembly(item)) var/obj/item/assembly/A = item if(A.secured) - to_chat(user, "The device is secured.") + to_chat(user, span_notice("The device is secured.")) return if(attached_device) - to_chat(user, "There is already a device attached to the valve, remove it first!") + to_chat(user, span_warning("There is already a device attached to the valve, remove it first!")) return if(!user.transferItemToLoc(item, src)) return attached_device = A - to_chat(user, "You attach the [item] to the valve controls and secure it.") + to_chat(user, span_notice("You attach the [item] to the valve controls and secure it.")) A.holder = src A.toggle_secure() //this calls update_icon(), which calls update_icon() on the holder (i.e. the bomb). log_bomber(user, "attached a [item.name] to a ttv -", src, null, FALSE) diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index ca3702f8731e..578de78cfbde 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -31,7 +31,7 @@ new /obj/item/dice/d100(src) /obj/item/storage/pill_bottle/dice/suicide_act(mob/user) - user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")) return (OXYLOSS) /obj/item/dice //depreciated d6, use /obj/item/dice/d6 if you actually want a d6 @@ -55,7 +55,7 @@ update_icon() /obj/item/dice/suicide_act(mob/user) - user.visible_message("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is gambling with death! It looks like [user.p_theyre()] trying to commit suicide!")) return (OXYLOSS) /obj/item/dice/d1 @@ -191,14 +191,14 @@ if(!has_gravity()) if(user) user.visible_message("[user] has thrown [src].", \ - "You throw [src].") + span_notice("You throw [src].")) return if(user != null) //Dice was rolled in someone's hand user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \ - "You throw [src]. It lands on [result]. [comment]", \ - "You hear [src] rolling, it sounds like a [fake_result].") + span_notice("You throw [src]. It lands on [result]. [comment]"), \ + span_italics("You hear [src] rolling, it sounds like a [fake_result].")) else if(!src.throwing) //Dice was thrown and is coming to rest - visible_message("[src] rolls to a stop, landing on [result]. [comment]") + visible_message(span_notice("[src] rolls to a stop, landing on [result]. [comment]")) /obj/item/dice/update_icon() cut_overlays() diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index 2bcb1d9a78c3..26ee439b456a 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -27,7 +27,7 @@ M.dna.remove_mutation(HM) for(var/HM in add_mutations) if(HM == RACEMUT) - message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") + message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] [span_danger("(MONKEY)")]") log_msg += " (MONKEY)" if(M.dna.mutation_in_sequence(HM)) M.dna.activate_mutation(HM) @@ -48,10 +48,10 @@ /obj/item/dnainjector/attack(mob/target, mob/user) if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to do this!") + to_chat(user, span_warning("You don't have the dexterity to do this!")) return if(used) - to_chat(user, "This injector is used up!") + to_chat(user, span_warning("This injector is used up!")) return if(ishuman(target)) var/mob/living/carbon/human/humantarget = target @@ -60,20 +60,20 @@ log_combat(user, target, "attempted to inject", src) if(target != user) - target.visible_message("[user] is trying to inject [target] with [src]!", \ - "[user] is trying to inject you with [src]!") + target.visible_message(span_danger("[user] is trying to inject [target] with [src]!"), \ + span_userdanger("[user] is trying to inject you with [src]!")) if(!do_mob(user, target) || used) return target.visible_message("[user] injects [target] with the syringe with [src]!", \ - "[user] injects you with the syringe with [src]!") + span_userdanger("[user] injects you with the syringe with [src]!")) else - to_chat(user, "You inject yourself with [src].") + to_chat(user, span_notice("You inject yourself with [src].")) log_combat(user, target, "injected", src) if(!inject(target, user)) //Now we actually do the heavy lifting. - to_chat(user, "It appears that [target] does not have compatible DNA.") + to_chat(user, span_notice("It appears that [target] does not have compatible DNA.")) used = 1 icon_state = "dnainjector0" @@ -465,7 +465,7 @@ /obj/item/dnainjector/timed/inject(mob/living/carbon/M, mob/user) if(M.stat == DEAD) //prevents dead people from having their DNA changed - to_chat(user, "You can't modify [M]'s DNA while [M.p_theyre()] dead.") + to_chat(user, span_notice("You can't modify [M]'s DNA while [M.p_theyre()] dead.")) return FALSE if(M.has_dna() && !(HAS_TRAIT(M, TRAIT_BADDNA))) @@ -483,7 +483,7 @@ if(M.dna.get_mutation(mutation)) continue //Skip permanent mutations we already have. if(mutation == RACEMUT && ishuman(M)) - message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] (MONKEY)") + message_admins("[ADMIN_LOOKUPFLW(user)] injected [key_name_admin(M)] with the [name] [span_danger("(MONKEY)")]") log_msg += " (MONKEY)" M = M.dna.add_mutation(mutation, MUT_OTHER, endtime) else diff --git a/code/game/objects/items/documents.dm b/code/game/objects/items/documents.dm index fd915d77f28c..ccf94f34b4b7 100644 --- a/code/game/objects/items/documents.dm +++ b/code/game/objects/items/documents.dm @@ -48,11 +48,11 @@ /obj/item/documents/photocopy/attackby(obj/item/O, mob/user, params) if(istype(O, /obj/item/toy/crayon/red) || istype(O, /obj/item/toy/crayon/blue)) if (forgedseal) - to_chat(user, "You have already forged a seal on [src]!") + to_chat(user, span_warning("You have already forged a seal on [src]!")) else var/obj/item/toy/crayon/C = O name = "[C.item_color] secret documents" icon_state = "docs_[C.item_color]" forgedseal = C.item_color - to_chat(user, "You forge the official seal with a [C.item_color] crayon. No one will notice... right?") + to_chat(user, span_notice("You forge the official seal with a [C.item_color] crayon. No one will notice... right?")) update_icon() \ No newline at end of file diff --git a/code/game/objects/items/eightball.dm b/code/game/objects/items/eightball.dm index 86f46b8c562d..529bb29840a2 100644 --- a/code/game/objects/items/eightball.dm +++ b/code/game/objects/items/eightball.dm @@ -51,10 +51,10 @@ return if(on_cooldown) - to_chat(user, "[src] was shaken recently, it needs time to settle.") + to_chat(user, span_warning("[src] was shaken recently, it needs time to settle.")) return - user.visible_message("[user] starts shaking [src].", "You start shaking [src].", "You hear shaking and sloshing.") + user.visible_message(span_notice("[user] starts shaking [src]."), span_notice("You start shaking [src]."), span_italics("You hear shaking and sloshing.")) shaking = TRUE @@ -148,7 +148,7 @@ //ATTACK GHOST IGNORING PARENT RETURN VALUE /obj/item/toy/eightball/haunted/attack_ghost(mob/user) if(!shaking) - to_chat(user, "[src] is not currently being shaken.") + to_chat(user, span_warning("[src] is not currently being shaken.")) return interact(user) return ..() diff --git a/code/game/objects/items/etherealdiscoball.dm b/code/game/objects/items/etherealdiscoball.dm index 685e83b8940e..9cae908bd330 100644 --- a/code/game/objects/items/etherealdiscoball.dm +++ b/code/game/objects/items/etherealdiscoball.dm @@ -6,7 +6,7 @@ /obj/item/etherealballdeployer/attack_self(mob/living/carbon/user) .=..() - to_chat(user, "You deploy the Ethereal Disco Ball.") + to_chat(user, span_notice("You deploy the Ethereal Disco Ball.")) new /obj/structure/etherealball(user.loc) qdel(src) @@ -31,18 +31,18 @@ . = ..() if(TurnedOn) TurnOff() - to_chat(user, "You turn the disco ball off!") + to_chat(user, span_notice("You turn the disco ball off!")) else TurnOn() - to_chat(user, "You turn the disco ball on!") + to_chat(user, span_notice("You turn the disco ball on!")) /obj/structure/etherealball/AltClick(mob/living/carbon/human/user) . = ..() if(anchored) - to_chat(user, "You unlock the disco ball.") + to_chat(user, span_notice("You unlock the disco ball.")) anchored = FALSE else - to_chat(user, "You lock the disco ball.") + to_chat(user, span_notice("You lock the disco ball.")) anchored = TRUE /obj/structure/etherealball/proc/TurnOn() diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index d14124de5960..d1dd194f72d8 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -62,14 +62,14 @@ /obj/item/extinguisher/suicide_act(mob/living/carbon/user) if (!safety && (reagents.total_volume >= 1)) - user.visible_message("[user] puts the nozzle to [user.p_their()] mouth. It looks like [user.p_theyre()] trying to extinguish the spark of life!") + user.visible_message(span_suicide("[user] puts the nozzle to [user.p_their()] mouth. It looks like [user.p_theyre()] trying to extinguish the spark of life!")) afterattack(user,user) return OXYLOSS else if (safety && (reagents.total_volume >= 1)) - user.visible_message("[user] puts the nozzle to [user.p_their()] mouth... The safety's still on!") + user.visible_message(span_warning("[user] puts the nozzle to [user.p_their()] mouth... The safety's still on!")) return SHAME else - user.visible_message("[user] puts the nozzle to [user.p_their()] mouth... [src] is empty!") + user.visible_message(span_warning("[user] puts the nozzle to [user.p_their()] mouth... [src] is empty!")) return SHAME /obj/item/extinguisher/attack_self(mob/user) @@ -96,25 +96,25 @@ . += "The safety is [safety ? "on" : "off"]." if(reagents.total_volume) - . += "Alt-click to empty it." + . += span_notice("Alt-click to empty it.") /obj/item/extinguisher/proc/AttemptRefill(atom/target, mob/user) if(istype(target, tanktype) && target.Adjacent(user)) var/safety_save = safety safety = TRUE if(reagents.total_volume == reagents.maximum_volume) - to_chat(user, "\The [src] is already full!") + to_chat(user, span_warning("\The [src] is already full!")) safety = safety_save return 1 var/obj/structure/reagent_dispensers/W = target //will it work? var/transferred = W.reagents.trans_to(src, max_water, transfered_by = user) if(transferred > 0) - to_chat(user, "\The [src] has been refilled by [transferred] units.") + to_chat(user, span_notice("\The [src] has been refilled by [transferred] units.")) playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6) for(var/datum/reagent/water/R in reagents.reagent_list) R.cooling_temperature = cooling_power else - to_chat(user, "\The [W] is empty!") + to_chat(user, span_warning("\The [W] is empty!")) safety = safety_save return 1 else @@ -134,7 +134,7 @@ if (src.reagents.total_volume < 1) - to_chat(usr, "\The [src] is empty!") + to_chat(usr, span_warning("\The [src] is empty!")) return if (world.time < src.last_use + 12) @@ -233,12 +233,12 @@ var/turf/open/theturf = T theturf.MakeSlippery(TURF_WET_WATER, min_wet_time = 10 SECONDS, wet_time_to_add = 5 SECONDS) - user.visible_message("[user] empties out \the [src] onto the floor using the release valve.", "You quietly empty out \the [src] using its release valve.") + user.visible_message("[user] empties out \the [src] onto the floor using the release valve.", span_info("You quietly empty out \the [src] using its release valve.")) //firebot assembly /obj/item/extinguisher/attackby(obj/O, mob/user, params) if(istype(O, /obj/item/bodypart/l_arm/robot) || istype(O, /obj/item/bodypart/r_arm/robot)) - to_chat(user, "You add [O] to [src].") + to_chat(user, span_notice("You add [O] to [src].")) qdel(O) qdel(src) user.put_in_hands(new /obj/item/bot_assembly/firebot) diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index 2e55c4538c25..62d9edb8fe81 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -97,7 +97,7 @@ else if(W.tool_behaviour == TOOL_SCREWDRIVER && igniter && !lit) status = !status - to_chat(user, "[igniter] is now [status ? "secured" : "unsecured"]!") + to_chat(user, span_notice("[igniter] is now [status ? "secured" : "unsecured"]!")) update_icon() return @@ -118,7 +118,7 @@ if(user.transferItemToLoc(W,src)) ptank.forceMove(get_turf(src)) ptank = W - to_chat(user, "You swap the plasma tank in [src]!") + to_chat(user, span_notice("You swap the plasma tank in [src]!")) return if(!user.transferItemToLoc(W, src)) return @@ -141,22 +141,22 @@ if(ptank && isliving(user) && user.canUseTopic(src, BE_CLOSE, ismonkey(user))) user.put_in_hands(ptank) ptank = null - to_chat(user, "You remove the plasma tank from [src]!") + to_chat(user, span_notice("You remove the plasma tank from [src]!")) update_icon() /obj/item/flamethrower/examine(mob/user) . = ..() if(ptank) - . += "\The [src] has \a [ptank] attached. Alt-click to remove it." + . += span_notice("\The [src] has \a [ptank] attached. Alt-click to remove it.") /obj/item/flamethrower/proc/toggle_igniter(mob/user) if(!ptank) - to_chat(user, "Attach a plasma tank first!") + to_chat(user, span_notice("Attach a plasma tank first!")) return if(!status) - to_chat(user, "Secure the igniter first!") + to_chat(user, span_notice("Secure the igniter first!")) return - to_chat(user, "You [lit ? "extinguish" : "ignite"] [src]!") + to_chat(user, span_notice("You [lit ? "extinguish" : "ignite"] [src]!")) lit = !lit if(lit) START_PROCESSING(SSobj, src) @@ -235,7 +235,7 @@ /obj/item/flamethrower/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) var/obj/item/projectile/P = hitby if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15)) - owner.visible_message("\The [attack_text] hits the fueltank on [owner]'s [name], rupturing it! What a shot!") + owner.visible_message(span_danger("\The [attack_text] hits the fueltank on [owner]'s [name], rupturing it! What a shot!")) var/target_turf = get_turf(owner) igniter.ignite_turf(src,target_turf, release_amount = 100) qdel(ptank) diff --git a/code/game/objects/items/gift.dm b/code/game/objects/items/gift.dm index 037d8a06c184..23cb8a18d225 100644 --- a/code/game/objects/items/gift.dm +++ b/code/game/objects/items/gift.dm @@ -29,23 +29,23 @@ GLOBAL_LIST_EMPTY(possible_gifts) contains_type = get_gift_type() /obj/item/a_gift/suicide_act(mob/user) - user.visible_message("[user] peeks inside [src] and cries [user.p_them()]self to death! It looks like [user.p_they()] [user.p_were()] on the naughty list...") + user.visible_message(span_suicide("[user] peeks inside [src] and cries [user.p_them()]self to death! It looks like [user.p_they()] [user.p_were()] on the naughty list...")) return (BRUTELOSS) /obj/item/a_gift/examine(mob/M) . = ..() if((M.mind && HAS_TRAIT(M.mind, TRAIT_PRESENT_VISION)) || isobserver(M)) - . += "It contains \a [initial(contains_type.name)]." + . += span_notice("It contains \a [initial(contains_type.name)].") /obj/item/a_gift/attack_self(mob/M) if(M.mind && HAS_TRAIT(M.mind, TRAIT_CANNOT_OPEN_PRESENTS)) - to_chat(M, "You're supposed to be spreading gifts, not opening them yourself!") + to_chat(M, span_warning("You're supposed to be spreading gifts, not opening them yourself!")) return qdel(src) var/obj/item/I = new contains_type(get_turf(M)) - M.visible_message("[M] unwraps \the [src], finding \a [I] inside!") + M.visible_message(span_notice("[M] unwraps \the [src], finding \a [I] inside!")) I.investigate_log("([I.type]) was found in a present by [key_name(M)].", INVESTIGATE_PRESENTS) M.put_in_hands(I) I.add_fingerprint(M) diff --git a/code/game/objects/items/granters.dm b/code/game/objects/items/granters.dm index fe16b718118c..dcd6af1f7b8d 100644 --- a/code/game/objects/items/granters.dm +++ b/code/game/objects/items/granters.dm @@ -14,9 +14,9 @@ playsound(user, pick('sound/effects/pageturn1.ogg','sound/effects/pageturn2.ogg','sound/effects/pageturn3.ogg'), 30, 1) if(do_after(user,50, user)) if(remarks.len) - to_chat(user, "[pick(remarks)]") + to_chat(user, span_notice("[pick(remarks)]")) else - to_chat(user, "You keep reading...") + to_chat(user, span_notice("You keep reading...")) return TRUE return FALSE @@ -26,13 +26,13 @@ return FALSE /obj/item/book/granter/proc/on_reading_start(mob/user) - to_chat(user, "You start reading [name]...") + to_chat(user, span_notice("You start reading [name]...")) /obj/item/book/granter/proc/on_reading_stopped(mob/user) - to_chat(user, "You stop reading...") + to_chat(user, span_notice("You stop reading...")) /obj/item/book/granter/proc/on_reading_finished(mob/user) - to_chat(user, "You finish reading [name]!") + to_chat(user, span_notice("You finish reading [name]!")) /obj/item/book/granter/proc/onlearned(mob/user) used = TRUE @@ -40,7 +40,7 @@ /obj/item/book/granter/attack_self(mob/user) if(reading) - to_chat(user, "You're already reading this!") + to_chat(user, span_warning("You're already reading this!")) return FALSE if(!user.can_read(src)) return FALSE @@ -72,15 +72,15 @@ return TRUE for(var/datum/action/A in user.actions) if(A.type == granted_action) - to_chat(user, "You already know all about [actionname].") + to_chat(user, span_notice("You already know all about [actionname].")) return TRUE return FALSE /obj/item/book/granter/action/on_reading_start(mob/user) - to_chat(user, "You start reading about [actionname]...") + to_chat(user, span_notice("You start reading about [actionname]...")) /obj/item/book/granter/action/on_reading_finished(mob/user) - to_chat(user, "You feel like you've got a good handle on [actionname]!") + to_chat(user, span_notice("You feel like you've got a good handle on [actionname]!")) var/datum/action/G = new granted_action G.Grant(user) onlearned(user) @@ -101,13 +101,13 @@ check_flags = NONE /datum/action/innate/origami/Activate() - to_chat(owner, "You will now fold origami planes.") + to_chat(owner, span_notice("You will now fold origami planes.")) button_icon_state = "origami_on" active = TRUE UpdateButtonIcon() /datum/action/innate/origami/Deactivate() - to_chat(owner, "You will no longer fold origami planes.") + to_chat(owner, span_notice("You will no longer fold origami planes.")) button_icon_state = "origami_off" active = FALSE UpdateButtonIcon() @@ -125,29 +125,29 @@ if(knownspell.type == spell) if(user.mind) if(iswizard(user)) - to_chat(user,"You're already far more versed in this spell than this flimsy how-to book can provide.") + to_chat(user,span_notice("You're already far more versed in this spell than this flimsy how-to book can provide.")) else - to_chat(user,"You've already read this one.") + to_chat(user,span_notice("You've already read this one.")) return TRUE return FALSE /obj/item/book/granter/spell/on_reading_start(mob/user) - to_chat(user, "You start reading about casting [spellname]...") + to_chat(user, span_notice("You start reading about casting [spellname]...")) /obj/item/book/granter/spell/on_reading_finished(mob/user) - to_chat(user, "You feel like you've experienced enough to cast [spellname]!") + to_chat(user, span_notice("You feel like you've experienced enough to cast [spellname]!")) var/obj/effect/proc_holder/spell/S = new spell user.mind.AddSpell(S) user.log_message("learned the spell [spellname] ([S])", LOG_ATTACK, color="orange") onlearned(user) /obj/item/book/granter/spell/recoil(mob/user) - user.visible_message("[src] glows in a black light!") + user.visible_message(span_warning("[src] glows in a black light!")) /obj/item/book/granter/spell/onlearned(mob/user) ..() if(oneuse) - user.visible_message("[src] glows dark for a second!") + user.visible_message(span_caution("[src] glows dark for a second!")) /obj/item/book/granter/spell/fireball spell = /obj/effect/proc_holder/spell/aimed/fireball @@ -180,7 +180,7 @@ /obj/item/book/granter/spell/smoke/recoil(mob/user) ..() - to_chat(user,"Your stomach rumbles...") + to_chat(user,span_caution("Your stomach rumbles...")) if(user.nutrition) user.set_nutrition(200) if(user.nutrition <= 0) @@ -195,7 +195,7 @@ /obj/item/book/granter/spell/blind/recoil(mob/user) ..() - to_chat(user,"You go blind!") + to_chat(user,span_warning("You go blind!")) user.blind_eyes(10) /obj/item/book/granter/spell/mindswap @@ -218,17 +218,17 @@ stored_swap = null if(!stored_swap) stored_swap = user - to_chat(user,"For a moment you feel like you don't even know who you are anymore.") + to_chat(user,span_warning("For a moment you feel like you don't even know who you are anymore.")) return if(stored_swap == user) - to_chat(user,"You stare at the book some more, but there doesn't seem to be anything else to learn...") + to_chat(user,span_notice("You stare at the book some more, but there doesn't seem to be anything else to learn...")) return var/obj/effect/proc_holder/spell/targeted/mind_transfer/swapper = new if(swapper.cast(list(stored_swap), user, TRUE, TRUE)) - to_chat(user,"You're suddenly somewhere else... and someone else?!") - to_chat(stored_swap,"Suddenly you're staring at [src] again... where are you, who are you?!") + to_chat(user,span_warning("You're suddenly somewhere else... and someone else?!")) + to_chat(stored_swap,span_warning("Suddenly you're staring at [src] again... where are you, who are you?!")) else - user.visible_message("[src] fizzles slightly as it stops glowing!") //if the mind_transfer failed to transfer mobs, likely due to the target being catatonic. + user.visible_message(span_warning("[src] fizzles slightly as it stops glowing!")) //if the mind_transfer failed to transfer mobs, likely due to the target being catatonic. stored_swap = null @@ -241,7 +241,7 @@ /obj/item/book/granter/spell/forcewall/recoil(mob/living/user) ..() - to_chat(user,"You suddenly feel very solid!") + to_chat(user,span_warning("You suddenly feel very solid!")) user.Stun(40, ignore_canstun = TRUE) user.petrify(30) @@ -254,7 +254,7 @@ /obj/item/book/granter/spell/knock/recoil(mob/living/user) ..() - to_chat(user,"You're knocked down!") + to_chat(user,span_warning("You're knocked down!")) user.Paralyze(40) /obj/item/book/granter/spell/barnyard @@ -273,7 +273,7 @@ user.equip_to_slot_if_possible(magichead, SLOT_WEAR_MASK, TRUE, TRUE) qdel(src) else - to_chat(user,"I say thee neigh") //It still lives here + to_chat(user,span_notice("I say thee neigh")) //It still lives here /obj/item/book/granter/spell/charge spell = /obj/effect/proc_holder/spell/targeted/charge @@ -284,7 +284,7 @@ /obj/item/book/granter/spell/charge/recoil(mob/user) ..() - to_chat(user,"[src] suddenly feels very warm!") + to_chat(user,span_warning("[src] suddenly feels very warm!")) empulse(src, 1, 1) /obj/item/book/granter/spell/summonitem @@ -296,7 +296,7 @@ /obj/item/book/granter/spell/summonitem/recoil(mob/user) ..() - to_chat(user,"[src] suddenly vanishes!") + to_chat(user,span_warning("[src] suddenly vanishes!")) qdel(src) /obj/item/book/granter/spell/random @@ -322,12 +322,12 @@ return TRUE var/datum/martial_art/MA = martial if(user.mind.has_martialart(initial(MA.id))) - to_chat(user,"You already know [martialname]!") + to_chat(user,span_warning("You already know [martialname]!")) return TRUE return FALSE /obj/item/book/granter/martial/on_reading_start(mob/user) - to_chat(user, "You start reading about [martialname]...") + to_chat(user, span_notice("You start reading about [martialname]...")) /obj/item/book/granter/martial/on_reading_finished(mob/user) to_chat(user, "[greet]") @@ -341,17 +341,17 @@ name = "old manual" martialname = "close quarters combat" desc = "A small, black manual. There are drawn instructions of tactical hand-to-hand combat." - greet = "You've mastered the basics of CQC." + greet = span_boldannounce("You've mastered the basics of CQC.") icon_state = "cqcmanual" remarks = list("Kick... Slam...", "Lock... Kick...", "Strike their abdomen, neck and back for critical damage...", "Slam... Lock...", "I could probably combine this with some other martial arts!", "Words that kill...", "The last and final moment is yours...") /obj/item/book/granter/martial/cqc/onlearned(mob/living/carbon/user) ..() if(oneuse == TRUE) - to_chat(user, "[src] beeps ominously...") + to_chat(user, span_warning("[src] beeps ominously...")) /obj/item/book/granter/martial/cqc/recoil(mob/living/carbon/user) - to_chat(user, "[src] explodes!") + to_chat(user, span_warning("[src] explodes!")) playsound(src,'sound/effects/explosion1.ogg',40,1) user.flash_act(1, 1) user.adjustBruteLoss(6) @@ -390,7 +390,7 @@ /obj/item/book/granter/martial/flyingfang/already_known(mob/user) if(!islizard(user)) - to_chat(user, "You can't tell if this is some poorly written fanfiction or an actual guide to something.") + to_chat(user, span_warning("You can't tell if this is some poorly written fanfiction or an actual guide to something.")) return TRUE return ..() @@ -434,7 +434,7 @@ for(var/crafting_recipe_type in crafting_recipe_types) var/datum/crafting_recipe/R = crafting_recipe_type user.mind.teach_crafting_recipe(crafting_recipe_type) - to_chat(user,"You learned how to make [initial(R.name)].") + to_chat(user,span_notice("You learned how to make [initial(R.name)].")) /obj/item/book/granter/crafting_recipe/weapons name = "makeshift weapons 101" diff --git a/code/game/objects/items/grenades/atmos_grenades.dm b/code/game/objects/items/grenades/atmos_grenades.dm index ce4ee164fb97..5c626d8397d1 100644 --- a/code/game/objects/items/grenades/atmos_grenades.dm +++ b/code/game/objects/items/grenades/atmos_grenades.dm @@ -12,7 +12,7 @@ if(user) add_fingerprint(user) if(msg) - to_chat(user, "You crush the [src]! [capitalize(DisplayTimeText(det_time))]!") + to_chat(user, span_warning("You crush the [src]! [capitalize(DisplayTimeText(det_time))]!")) active = TRUE icon_state = initial(icon_state) + "_active" playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', volume, TRUE) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index 200c02fa6cdb..c07dbebc0e50 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -31,20 +31,20 @@ . = ..() if(user.can_see_reagents()) if(beakers.len) - . += "You scan the grenade and detect the following reagents:" + . += span_notice("You scan the grenade and detect the following reagents:") for(var/obj/item/reagent_containers/glass/G in beakers) for(var/datum/reagent/R in G.reagents.reagent_list) - . += "[R.volume] units of [R.name] in the [G.name]." + . += span_notice("[R.volume] units of [R.name] in the [G.name].") if(beakers.len == 1) - . += "You detect no second beaker in the grenade." + . += span_notice("You detect no second beaker in the grenade.") else - . += "You scan the grenade, but detect nothing." + . += span_notice("You scan the grenade, but detect nothing.") else if(stage != GRENADE_READY && beakers.len) if(beakers.len == 2 && beakers[1].name == beakers[2].name) - . += "You see two [beakers[1].name]s inside the grenade." + . += span_notice("You see two [beakers[1].name]s inside the grenade.") else for(var/obj/item/reagent_containers/glass/G in beakers) - . += "You see a [G.name] inside the grenade." + . += span_notice("You see a [G.name] inside the grenade.") /obj/item/grenade/chem_grenade/attack_self(mob/user) if(stage == GRENADE_READY && !active) @@ -59,51 +59,51 @@ if(stage == GRENADE_WIRED) if(beakers.len) stage_change(GRENADE_READY) - to_chat(user, "You lock the [initial(name)] assembly.") + to_chat(user, span_notice("You lock the [initial(name)] assembly.")) I.play_tool_sound(src, 25) else - to_chat(user, "You need to add at least one beaker before locking the [initial(name)] assembly!") + to_chat(user, span_warning("You need to add at least one beaker before locking the [initial(name)] assembly!")) else if(stage == GRENADE_READY) det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50 if(landminemode) landminemode.time = det_time * 0.1 //overwrites the proxy sensor activation timer - to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") + to_chat(user, span_notice("You modify the time delay. It's set for [DisplayTimeText(det_time)].")) else - to_chat(user, "You need to add a wire!") + to_chat(user, span_warning("You need to add a wire!")) return else if(stage == GRENADE_WIRED && is_type_in_list(I, allowed_containers)) . = TRUE //no afterattack if(is_type_in_list(I, banned_containers)) - to_chat(user, "[src] is too small to fit [I]!") // this one hits home huh anon? + to_chat(user, span_warning("[src] is too small to fit [I]!")) // this one hits home huh anon? return if(beakers.len == 2) - to_chat(user, "[src] can not hold more containers!") + to_chat(user, span_warning("[src] can not hold more containers!")) return else if(I.reagents.total_volume) if(!user.transferItemToLoc(I, src)) return - to_chat(user, "You add [I] to the [initial(name)] assembly.") + to_chat(user, span_notice("You add [I] to the [initial(name)] assembly.")) beakers += I var/reagent_list = pretty_string_from_reagent_list(I.reagents) user.log_message("inserted [I] ([reagent_list]) into [src]",LOG_GAME) else - to_chat(user, "[I] is empty!") + to_chat(user, span_warning("[I] is empty!")) else if(stage == GRENADE_EMPTY && istype(I, /obj/item/stack/cable_coil)) var/obj/item/stack/cable_coil/C = I if (C.use(1)) det_time = 50 // In case the cable_coil was removed and readded. stage_change(GRENADE_WIRED) - to_chat(user, "You rig the [initial(name)] assembly.") + to_chat(user, span_notice("You rig the [initial(name)] assembly.")) else - to_chat(user, "You need one length of coil to wire the assembly!") + to_chat(user, span_warning("You need one length of coil to wire the assembly!")) return else if(stage == GRENADE_READY && I.tool_behaviour == TOOL_WIRECUTTER && !active) stage_change(GRENADE_WIRED) - to_chat(user, "You unlock the [initial(name)] assembly.") + to_chat(user, span_notice("You unlock the [initial(name)] assembly.")) else if(stage == GRENADE_WIRED && I.tool_behaviour == TOOL_WRENCH) if(beakers.len) @@ -114,12 +114,12 @@ var/reagent_list = pretty_string_from_reagent_list(O.reagents) user.log_message("removed [O] ([reagent_list]) from [src]", LOG_GAME) beakers = list() - to_chat(user, "You open the [initial(name)] assembly and remove the payload.") + to_chat(user, span_notice("You open the [initial(name)] assembly and remove the payload.")) wires.detach_assembly(wires.get_wire(1)) return new /obj/item/stack/cable_coil(get_turf(src),1) stage_change(GRENADE_EMPTY) - to_chat(user, "You remove the activation mechanism from the [initial(name)] assembly.") + to_chat(user, span_notice("You remove the activation mechanism from the [initial(name)] assembly.")) else return ..() @@ -163,9 +163,9 @@ add_fingerprint(user) if(msg) if(landminemode) - to_chat(user, "You prime [src], activating its proximity sensor.") + to_chat(user, span_warning("You prime [src], activating its proximity sensor.")) else - to_chat(user, "You prime [src]! [DisplayTimeText(det_time)]!") + to_chat(user, span_warning("You prime [src]! [DisplayTimeText(det_time)]!")) playsound(src, 'sound/weapons/armbomb.ogg', volume, 1) icon_state = initial(icon_state) + "_active" if(landminemode) @@ -241,7 +241,7 @@ if(istype(I, /obj/item/slime_extract) && stage == GRENADE_WIRED) if(!user.transferItemToLoc(I, src)) return - to_chat(user, "You add [I] to the [initial(name)] assembly.") + to_chat(user, span_notice("You add [I] to the [initial(name)] assembly.")) beakers += I else return ..() @@ -274,9 +274,9 @@ if (newspread != null && user.canUseTopic(src, BE_CLOSE)) newspread = round(newspread) unit_spread = clamp(newspread, 5, 100) - to_chat(user, "You set the time release to [unit_spread] units per detonation.") + to_chat(user, span_notice("You set the time release to [unit_spread] units per detonation.")) if (newspread != unit_spread) - to_chat(user, "The new value is out of bounds. Minimum spread is 5 units, maximum is 100 units.") + to_chat(user, span_notice("The new value is out of bounds. Minimum spread is 5 units, maximum is 100 units.")) ..() /obj/item/grenade/chem_grenade/adv_release/prime() diff --git a/code/game/objects/items/grenades/flashbang.dm b/code/game/objects/items/grenades/flashbang.dm index 083cf48f556a..8aeca3f85f46 100644 --- a/code/game/objects/items/grenades/flashbang.dm +++ b/code/game/objects/items/grenades/flashbang.dm @@ -21,7 +21,7 @@ /obj/item/grenade/flashbang/proc/bang(turf/T , mob/living/M) if(M.stat == DEAD) //They're dead! return - M.show_message("BANG", MSG_AUDIBLE) + M.show_message(span_userdanger("BANG"), MSG_AUDIBLE) var/distance = max(0,get_dist(get_turf(src),T)) if(!distance || loc == M || loc == M.loc) //Stop allahu akbarring rooms with this. M.Paralyze(200) diff --git a/code/game/objects/items/grenades/ghettobomb.dm b/code/game/objects/items/grenades/ghettobomb.dm index 1725d84dccf0..702e8663899f 100644 --- a/code/game/objects/items/grenades/ghettobomb.dm +++ b/code/game/objects/items/grenades/ghettobomb.dm @@ -46,7 +46,7 @@ /obj/item/grenade/iedcasing/attack_self(mob/user) // if(!active) if(clown_check(user)) - to_chat(user, "You light the [name]!") + to_chat(user, span_warning("You light the [name]!")) cut_overlay("improvised_grenade_filled") preprime(user, null, FALSE) diff --git a/code/game/objects/items/grenades/grenade.dm b/code/game/objects/items/grenades/grenade.dm index 4fbbddb8388d..aaf5d2ce2a3e 100644 --- a/code/game/objects/items/grenades/grenade.dm +++ b/code/game/objects/items/grenades/grenade.dm @@ -19,7 +19,7 @@ var/clumsy_check = GRENADE_CLUMSY_FUMBLE /obj/item/grenade/suicide_act(mob/living/carbon/user) - user.visible_message("[user] primes [src], then eats it! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] primes [src], then eats it! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(src, 'sound/items/eatfood.ogg', 50, 1) preprime(user, det_time) user.transferItemToLoc(src, user, TRUE)//>eat a grenade set to 5 seconds >rush captain @@ -36,11 +36,11 @@ var/clumsy = HAS_TRAIT(user, TRAIT_CLUMSY) if(clumsy && (clumsy_check == GRENADE_CLUMSY_FUMBLE)) if(prob(50)) - to_chat(user, "Huh? How does this thing work?") + to_chat(user, span_warning("Huh? How does this thing work?")) preprime(user, 5, FALSE) return FALSE else if(!clumsy && (clumsy_check == GRENADE_NONCLUMSY_FUMBLE)) - to_chat(user, "You pull the pin on [src]. Attached to it is a pink ribbon that says, \"HONK\"") + to_chat(user, span_warning("You pull the pin on [src]. Attached to it is a pink ribbon that says, \"[span_clown("HONK")]\"")) preprime(user, 5, FALSE) return FALSE return TRUE @@ -72,7 +72,7 @@ var/mob/living/carbon/C = user C.throw_mode_on() if(msg) - to_chat(user, "You prime [src]! [capitalize(DisplayTimeText(det_time))]!") + to_chat(user, span_warning("You prime [src]! [capitalize(DisplayTimeText(det_time))]!")) playsound(src, 'sound/weapons/armbomb.ogg', volume, 1) active = TRUE icon_state = initial(icon_state) + "_active" @@ -91,13 +91,13 @@ var/newtime = text2num(stripped_input(user, "Please enter a new detonation time", name)) if (newtime != null && user.canUseTopic(src, BE_CLOSE)) change_det_time(newtime) - to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") + to_chat(user, span_notice("You modify the time delay. It's set for [DisplayTimeText(det_time)].")) if (round(newtime * 10) != det_time) - to_chat(user, "The new value is out of bounds. The lowest possible time is 3 seconds and highest is 5 seconds. Instant detonations are also possible.") + to_chat(user, span_warning("The new value is out of bounds. The lowest possible time is 3 seconds and highest is 5 seconds. Instant detonations are also possible.")) return else if(W.tool_behaviour == TOOL_SCREWDRIVER) change_det_time() - to_chat(user, "You modify the time delay. It's set for [DisplayTimeText(det_time)].") + to_chat(user, span_notice("You modify the time delay. It's set for [DisplayTimeText(det_time)].")) else return ..() @@ -124,7 +124,7 @@ /obj/item/grenade/hit_reaction(mob/living/carbon/human/owner, atom/movable/hitby, attack_text = "the attack", final_block_chance = 0, damage = 0, attack_type = MELEE_ATTACK) var/obj/item/projectile/P = hitby if(damage && attack_type == PROJECTILE_ATTACK && P.damage_type != STAMINA && prob(15)) - owner.visible_message("[attack_text] hits [owner]'s [src], setting it off! What a shot!") + owner.visible_message(span_danger("[attack_text] hits [owner]'s [src], setting it off! What a shot!")) prime() return TRUE //It hit the grenade, not them diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index f48214c71641..846cbae78b00 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -42,7 +42,7 @@ nadeassembly = A A.master = src assemblyattacher = user.ckey - to_chat(user, "You add [A] to the [name].") + to_chat(user, span_notice("You add [A] to the [name].")) playsound(src, 'sound/weapons/tap.ogg', 20, 1) update_icon() return @@ -113,7 +113,7 @@ if(fuckup_safety != "Yes") return - to_chat(user, "You start planting [src]. The timer is set to [det_time]...") + to_chat(user, span_notice("You start planting [src]. The timer is set to [det_time]...")) if(do_after(user, 30, target = AM)) if(!user.temporarilyRemoveItemFromInventory(src)) @@ -135,7 +135,7 @@ target.add_overlay(plastic_overlay, TRUE) if(!nadeassembly) - to_chat(user, "You plant the bomb. Timer counting down from [det_time].") + to_chat(user, span_notice("You plant the bomb. Timer counting down from [det_time].")) addtimer(CALLBACK(src, .proc/prime), det_time*10) else qdel(src) //How? @@ -161,7 +161,7 @@ /obj/item/grenade/plastic/suicide_act(mob/user) message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [src] at [ADMIN_VERBOSEJMP(user)]") log_game("[key_name(user)] suicided with [src] at [AREACOORD(user)]") - user.visible_message("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") + user.visible_message(span_suicide("[user] activates [src] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!")) shout_syndicate_crap(user) explosion(user,0,2,0) //Cheap explosion imitation because putting prime() here causes runtimes user.gib(1, 1) @@ -195,7 +195,7 @@ return ..() /obj/item/grenade/plastic/c4/suicide_act(mob/user) - user.visible_message("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!") + user.visible_message(span_suicide("[user] activates the [src.name] and holds it above [user.p_their()] head! It looks like [user.p_theyre()] going out with a bang!")) shout_syndicate_crap(user) target = user message_admins("[ADMIN_LOOKUPFLW(user)] suicided with [name] at [ADMIN_VERBOSEJMP(src)]") @@ -207,7 +207,7 @@ /obj/item/grenade/plastic/c4/attackby(obj/item/I, mob/user, params) if(I.tool_behaviour == TOOL_SCREWDRIVER) open_panel = !open_panel - to_chat(user, "You [open_panel ? "open" : "close"] the wire panel.") + to_chat(user, span_notice("You [open_panel ? "open" : "close"] the wire panel.")) else if(is_wire_tool(I)) wires.interact(user) else diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 440087f02681..d523b5133e5b 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -2,7 +2,7 @@ breakouttime = 600 /obj/item/restraints/suicide_act(mob/living/carbon/user) - user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return(OXYLOSS) /obj/item/restraints/Destroy() @@ -45,7 +45,7 @@ return if(iscarbon(user) && (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))) - to_chat(user, "Uh... how do those things work?!") + to_chat(user, span_warning("Uh... how do those things work?!")) apply_cuffs(user,user) return @@ -57,8 +57,8 @@ if(!C.handcuffed) if(C.get_num_arms(FALSE) >= 2 || C.get_arm_ignore()) - C.visible_message("[user] is trying to put [src.name] on [C]!", \ - "[user] is trying to put [src.name] on [C]!") + C.visible_message(span_danger("[user] is trying to put [src.name] on [C]!"), \ + span_userdanger("[user] is trying to put [src.name] on [C]!")) playsound(loc, cuffsound, 30, 1, -2) if(do_mob(user, C, 30) && (C.get_num_arms(FALSE) >= 2 || C.get_arm_ignore())) @@ -66,15 +66,15 @@ apply_cuffs(C, user, TRUE) else apply_cuffs(C, user) - to_chat(user, "You handcuff [C].") + to_chat(user, span_notice("You handcuff [C].")) SSblackbox.record_feedback("tally", "handcuffs", 1, type) log_combat(user, C, "handcuffed") else - to_chat(user, "You fail to handcuff [C]!") + to_chat(user, span_warning("You fail to handcuff [C]!")) log_combat(user, C, "attempted to handcuff") else - to_chat(user, "[C] doesn't have two hands...") + to_chat(user, span_warning("[C] doesn't have two hands...")) /obj/item/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user, var/dispense = 0) if(target.handcuffed) @@ -180,24 +180,24 @@ var/obj/item/wirerod/W = new /obj/item/wirerod remove_item_from_storage(user) user.put_in_hands(W) - to_chat(user, "You wrap [src] around the top of [I].") + to_chat(user, span_notice("You wrap [src] around the top of [I].")) qdel(src) else - to_chat(user, "You need one rod to make a wired rod!") + to_chat(user, span_warning("You need one rod to make a wired rod!")) return else if(istype(I, /obj/item/stack/sheet/metal)) var/obj/item/stack/sheet/metal/M = I if(M.get_amount() < 6) - to_chat(user, "You need at least six metal sheets to make good enough weights!") + to_chat(user, span_warning("You need at least six metal sheets to make good enough weights!")) return - to_chat(user, "You begin to apply [I] to [src]...") + to_chat(user, span_notice("You begin to apply [I] to [src]...")) if(do_after(user, 35, target = src)) if(M.get_amount() < 6 || !M) return var/obj/item/restraints/legcuffs/bola/S = new /obj/item/restraints/legcuffs/bola M.use(6) user.put_in_hands(S) - to_chat(user, "You make some weights out of [I] and tie them to [src].") + to_chat(user, span_notice("You make some weights out of [I] and tie them to [src].")) remove_item_from_storage(user) qdel(src) else @@ -255,7 +255,7 @@ icon_state = "[initial(icon_state)][armed]" /obj/item/restraints/legcuffs/beartrap/suicide_act(mob/user) - user.visible_message("[user] is sticking [user.p_their()] head in the [src.name]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] is sticking [user.p_their()] head in the [src.name]! It looks like [user.p_theyre()] trying to commit suicide!")) playsound(loc, 'sound/weapons/bladeslice.ogg', 50, 1, -1) return (BRUTELOSS) @@ -264,7 +264,7 @@ if(ishuman(user) && !user.stat && !user.restrained()) armed = !armed update_icon() - to_chat(user, "[src] is now [armed ? "armed" : "disarmed"]") + to_chat(user, span_notice("[src] is now [armed ? "armed" : "disarmed"]")) /obj/item/restraints/legcuffs/beartrap/proc/close_trap() armed = FALSE @@ -280,7 +280,7 @@ var/obj/vehicle/ridden_vehicle = L.buckled if(!ridden_vehicle.are_legs_exposed) //close the trap without injuring/trapping the rider if their legs are inside the vehicle at all times. close_trap() - ridden_vehicle.visible_message("[ridden_vehicle] triggers \the [src].") + ridden_vehicle.visible_message(span_danger("[ridden_vehicle] triggers \the [src].")) return ..() if(L.movement_type & (FLYING|FLOATING)) //don't close the trap if they're flying/floating over it. @@ -302,8 +302,8 @@ snap = FALSE if(snap) close_trap() - L.visible_message("[L] triggers \the [src].", \ - "You trigger \the [src]!") + L.visible_message(span_danger("[L] triggers \the [src]."), \ + span_userdanger("You trigger \the [src]!")) L.apply_damage(trap_damage, BRUTE, def_zone) ..() @@ -349,12 +349,12 @@ return//abort var/mob/living/carbon/C = hit_atom if(!C.legcuffed && C.get_num_legs(FALSE) >= 2) - visible_message("\The [src] ensnares [C]!") + visible_message(span_danger("\The [src] ensnares [C]!")) C.legcuffed = src forceMove(C) C.update_inv_legcuffed() SSblackbox.record_feedback("tally", "handcuffs", 1, type) - to_chat(C, "\The [src] ensnares you!") + to_chat(C, span_userdanger("\The [src] ensnares you!")) C.Immobilize(immobilize) playsound(src, 'sound/effects/snap.ogg', 50, TRUE) diff --git a/code/game/objects/items/his_grace.dm b/code/game/objects/items/his_grace.dm index 0e1ed5b24413..40b3aa34cce0 100644 --- a/code/game/objects/items/his_grace.dm +++ b/code/game/objects/items/his_grace.dm @@ -55,24 +55,24 @@ if(awakened) switch(bloodthirst) if(HIS_GRACE_SATIATED to HIS_GRACE_PECKISH) - . += "[src] isn't very hungry. Not yet." + . += "[span_his_grace("[src] isn't very hungry. Not yet.")]" if(HIS_GRACE_PECKISH to HIS_GRACE_HUNGRY) - . += "[src] would like a snack." + . += "[span_his_grace("[src] would like a snack.")]" if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED) - . += "[src] is quite hungry now." + . += "[span_his_grace("[src] is quite hungry now.")]" if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING) - . += "[src] is openly salivating at the sight of you. Be careful." + . += "[span_his_grace("[src] is openly salivating at the sight of you. Be careful.")]" if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER) . += "You walk a fine line. [src] is very close to devouring you." if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP) . += "[src] is shaking violently and staring directly at you." else - . += "[src] is latched closed." + . += "[span_his_grace("[src] is latched closed.")]" /obj/item/his_grace/relaymove(mob/living/user) //Allows changelings, etc. to climb out of Him after they revive, provided He isn't active if(!awakened) user.forceMove(get_turf(src)) - user.visible_message("[user] scrambles out of [src]!", "You climb out of [src]!") + user.visible_message(span_warning("[user] scrambles out of [src]!"), span_notice("You climb out of [src]!")) /obj/item/his_grace/process() if(!bloodthirst) @@ -86,7 +86,7 @@ if(istype(master) && (src in master.held_items)) switch(bloodthirst) if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP) - master.visible_message("[src] turns on [master]!", "[src] turns on you!") + master.visible_message(span_boldwarning("[src] turns on [master]!"), "[src] turns on you!") do_attack_animation(master, null, src) master.emote("scream") master.remove_status_effect(STATUS_EFFECT_HISGRACE) @@ -112,7 +112,7 @@ step_to(src, L) if(Adjacent(L)) if(!L.stat) - L.visible_message("[src] lunges at [L]!", "[src] lunges at you!") + L.visible_message(span_warning("[src] lunges at [L]!"), "[src] lunges at you!") do_attack_animation(L, null, src) playsound(L, 'sound/weapons/smash.ogg', 50, 1) playsound(L, 'sound/misc/desceration-01.ogg', 50, 1) @@ -125,7 +125,7 @@ if(awakened) return awakened = TRUE - user.visible_message("[src] begins to rattle. He thirsts.", "You flick [src]'s latch up. You hope this is a good idea.") + user.visible_message(span_boldwarning("[src] begins to rattle. He thirsts."), "[span_his_grace("You flick [src]'s latch up. You hope this is a good idea.")]") name = "His Grace" desc = "A bloodthirsty artifact created by a profane rite." gender = MALE @@ -159,7 +159,7 @@ if(!awakened || ascended) return var/turf/T = get_turf(src) - T.visible_message("[src] slowly stops rattling and falls still, His latch snapping shut.") + T.visible_message(span_boldwarning("[src] slowly stops rattling and falls still, His latch snapping shut.")) playsound(loc, 'sound/weapons/batonextend.ogg', 100, 1) name = initial(name) desc = initial(desc) @@ -175,7 +175,7 @@ if(!meal) return var/victims = 0 - meal.visible_message("[src] swings open and devours [meal]!", "[src] consumes you!") + meal.visible_message(span_warning("[src] swings open and devours [meal]!"), "[src] consumes you!") meal.adjustBruteLoss(200) playsound(meal, 'sound/misc/desceration-02.ogg', 75, 1) playsound(src, 'sound/items/eatfood.ogg', 100, 1) @@ -207,36 +207,36 @@ switch(bloodthirst) if(HIS_GRACE_CONSUME_OWNER to HIS_GRACE_FALL_ASLEEP) if(HIS_GRACE_CONSUME_OWNER > prev_bloodthirst) - master.visible_message("[src] enters a frenzy!") + master.visible_message(span_userdanger("[src] enters a frenzy!")) if(HIS_GRACE_STARVING to HIS_GRACE_CONSUME_OWNER) ADD_TRAIT(src, TRAIT_NODROP, HIS_GRACE_TRAIT) if(HIS_GRACE_STARVING > prev_bloodthirst) - master.visible_message("[src] is starving!", "[src]'s bloodlust overcomes you. [src] must be fed, or you will become His meal.\ + master.visible_message(span_boldwarning("[src] is starving!"), "[src]'s bloodlust overcomes you. [src] must be fed, or you will become His meal.\ [force_bonus < 15 ? " And still, His power grows.":""]") force_bonus = max(force_bonus, 15) if(HIS_GRACE_FAMISHED to HIS_GRACE_STARVING) ADD_TRAIT(src, TRAIT_NODROP, HIS_GRACE_TRAIT) if(HIS_GRACE_FAMISHED > prev_bloodthirst) - master.visible_message("[src] is very hungry!", "Spines sink into your hand. [src] must feed immediately.\ + master.visible_message(span_warning("[src] is very hungry!"), "Spines sink into your hand. [src] must feed immediately.\ [force_bonus < 10 ? " His power grows.":""]") force_bonus = max(force_bonus, 10) if(prev_bloodthirst >= HIS_GRACE_STARVING) - master.visible_message("[src] is now only very hungry!", "Your bloodlust recedes.") + master.visible_message(span_warning("[src] is now only very hungry!"), "Your bloodlust recedes.") if(HIS_GRACE_HUNGRY to HIS_GRACE_FAMISHED) if(HIS_GRACE_HUNGRY > prev_bloodthirst) - master.visible_message("[src] is getting hungry.", "You feel [src]'s hunger within you.\ + master.visible_message(span_warning("[src] is getting hungry."), "You feel [src]'s hunger within you.\ [force_bonus < 5 ? " His power grows.":""]") force_bonus = max(force_bonus, 5) if(prev_bloodthirst >= HIS_GRACE_FAMISHED) - master.visible_message("[src] is now only somewhat hungry.", "[src]'s hunger recedes a little...") + master.visible_message(span_warning("[src] is now only somewhat hungry."), "[span_his_grace("[src]'s hunger recedes a little...")]") if(HIS_GRACE_PECKISH to HIS_GRACE_HUNGRY) if(HIS_GRACE_PECKISH > prev_bloodthirst) - master.visible_message("[src] is feeling snackish.", "[src] begins to hunger.") + master.visible_message(span_warning("[src] is feeling snackish."), "[span_his_grace("[src] begins to hunger.")]") if(prev_bloodthirst >= HIS_GRACE_HUNGRY) - master.visible_message("[src] is now only a little peckish.", "[src]'s hunger recedes somewhat...") + master.visible_message(span_warning("[src] is now only a little peckish."), "[src]'s hunger recedes somewhat...") if(HIS_GRACE_SATIATED to HIS_GRACE_PECKISH) if(prev_bloodthirst >= HIS_GRACE_PECKISH) - master.visible_message("[src] is satiated.", "[src]'s hunger recedes...") + master.visible_message(span_warning("[src] is satiated."), "[src]'s hunger recedes...") force = initial(force) + force_bonus /obj/item/his_grace/proc/ascend() diff --git a/code/game/objects/items/holosign_creator.dm b/code/game/objects/items/holosign_creator.dm index 502625a21096..3bf575c83ce9 100644 --- a/code/game/objects/items/holosign_creator.dm +++ b/code/game/objects/items/holosign_creator.dm @@ -26,12 +26,12 @@ var/turf/T = get_turf(target) var/obj/structure/holosign/H = locate(holosign_type) in T if(H) - to_chat(user, "You use [src] to deactivate [H].") + to_chat(user, span_notice("You use [src] to deactivate [H].")) qdel(H) else if(!is_blocked_turf(T, TRUE)) //can't put holograms on a tile that has dense stuff if(holocreator_busy) - to_chat(user, "[src] is busy creating a hologram.") + to_chat(user, span_notice("[src] is busy creating a hologram.")) return if(signs.len < max_signs) playsound(src.loc, 'sound/machines/click.ogg', 20, 1) @@ -46,9 +46,9 @@ if(is_blocked_turf(T, TRUE)) //don't try to sneak dense stuff on our tile during the wait. return H = new holosign_type(get_turf(target), src) - to_chat(user, "You create \a [H] with [src].") + to_chat(user, span_notice("You create \a [H] with [src].")) else - to_chat(user, "[src] is projecting at max capacity!") + to_chat(user, span_notice("[src] is projecting at max capacity!")) /obj/item/holosign_creator/attack(mob/living/carbon/human/M, mob/user) return @@ -57,7 +57,7 @@ if(signs.len) for(var/H in signs) qdel(H) - to_chat(user, "You clear all active holograms.") + to_chat(user, span_notice("You clear all active holograms.")) /obj/item/holosign_creator/janibarrier name = "custodial holobarrier projector" @@ -111,7 +111,7 @@ var/mob/living/silicon/robot/R = user if(shock) - to_chat(user, "You clear all active holograms, and reset your projector to normal.") + to_chat(user, span_notice("You clear all active holograms, and reset your projector to normal.")) holosign_type = /obj/structure/holosign/barrier/cyborg creation_time = 5 if(signs.len) @@ -120,7 +120,7 @@ shock = 0 return else if(R.emagged&&!shock) - to_chat(user, "You clear all active holograms, and overload your energy projector!") + to_chat(user, span_warning("You clear all active holograms, and overload your energy projector!")) holosign_type = /obj/structure/holosign/barrier/cyborg/hacked creation_time = 30 if(signs.len) @@ -132,11 +132,11 @@ if(signs.len) for(var/H in signs) qdel(H) - to_chat(user, "You clear all active holograms.") + to_chat(user, span_notice("You clear all active holograms.")) if(signs.len) for(var/H in signs) qdel(H) - to_chat(user, "You clear all active holograms.") + to_chat(user, span_notice("You clear all active holograms.")) /obj/item/holosign_creator/multi name = "multiple holosign projector" //Fork from this to make multiple barriers @@ -146,10 +146,10 @@ if(signs.len) for(var/H in signs) qdel(H) - to_chat(user, "You clear all active holograms.") + to_chat(user, span_notice("You clear all active holograms.")) else holosign_type = next_list_item(holosign_type, holodesigns) - to_chat(user, "You switch to [holosign_type]") + to_chat(user, span_notice("You switch to [holosign_type]")) /obj/item/holosign_creator/multi/CE name = "CE holofan projector" diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm index ef1b0f0ca377..c77b7704ec70 100644 --- a/code/game/objects/items/holy_weapons.dm +++ b/code/game/objects/items/holy_weapons.dm @@ -105,7 +105,7 @@ SSblackbox.record_feedback("tally", "chaplain_armor", 1, "[choice]") GLOB.holy_armor_type = choice else - to_chat(M, "A selection has already been made. Self-Destructing...") + to_chat(M, span_warning("A selection has already been made. Self-Destructing...")) return @@ -246,6 +246,7 @@ slot_flags = ITEM_SLOT_BELT w_class = WEIGHT_CLASS_SMALL obj_flags = UNIQUE_RENAME + wound_bonus = -10 var/reskinned = FALSE var/chaplain_spawnable = TRUE @@ -254,7 +255,7 @@ AddComponent(/datum/component/anti_magic, TRUE, TRUE, FALSE, null, null, FALSE) /obj/item/nullrod/suicide_act(mob/user) - user.visible_message("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!") + user.visible_message(span_suicide("[user] is killing [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to get closer to god!")) return (BRUTELOSS|FIRELOSS) /obj/item/nullrod/attack_self(mob/user) @@ -326,7 +327,7 @@ ADD_TRAIT(src, TRAIT_NODROP, HAND_REPLACEMENT_TRAIT) /obj/item/nullrod/godhand/ignition_effect(atom/A, mob/user) - . = "[user] grasps [A] with [user.p_their()] flaming hand, igniting it in a burst of holy flame. Holy hot damn, that is badass. " + . = span_notice("[user] grasps [A] with [user.p_their()] flaming hand, igniting it in a burst of holy flame. Holy hot damn, that is badass. ") /obj/item/nullrod/staff icon_state = "godstaff-red" @@ -362,7 +363,7 @@ w_class = WEIGHT_CLASS_HUGE slot_flags = ITEM_SLOT_BACK|ITEM_SLOT_BELT block_chance = 30 - sharpness = IS_SHARP + sharpness = SHARP_EDGED hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -492,7 +493,7 @@ w_class = WEIGHT_CLASS_BULKY armour_penetration = 35 slot_flags = ITEM_SLOT_BACK - sharpness = IS_SHARP + sharpness = SHARP_EDGED attack_verb = list("chopped", "sliced", "cut", "reaped") /obj/item/nullrod/scythe/Initialize() @@ -551,7 +552,7 @@ if(possessed) return if(!(GLOB.ghost_role_flags & GHOSTROLE_STATION_SENTIENCE)) - to_chat(user, "Anomalous otherworldly energies block you from awakening the blade!") + to_chat(user, span_notice("Anomalous otherworldly energies block you from awakening the blade!")) return to_chat(user, "You attempt to wake the spirit of the blade...") @@ -616,7 +617,7 @@ righthand_file = 'icons/mob/inhands/weapons/chainsaw_righthand.dmi' w_class = WEIGHT_CLASS_HUGE item_flags = ABSTRACT - sharpness = IS_SHARP + sharpness = SHARP_EDGED attack_verb = list("sawed", "torn", "cut", "chopped", "diced") hitsound = 'sound/weapons/chainsawhit.ogg' @@ -632,7 +633,7 @@ name = "clown dagger" desc = "Used for absolutely hilarious sacrifices." hitsound = 'sound/items/bikehorn.ogg' - sharpness = IS_SHARP + sharpness = SHARP_EDGED attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") /obj/item/nullrod/pride_hammer @@ -653,8 +654,8 @@ if(prob(30) && ishuman(A)) var/mob/living/carbon/human/H = A user.reagents.trans_to(H, user.reagents.total_volume, 1, 1, 0, transfered_by = user) - to_chat(user, "Your pride reflects on [H].") - to_chat(H, "You feel insecure, taking on [user]'s burden.") + to_chat(user, span_notice("Your pride reflects on [H].")) + to_chat(H, span_userdanger("You feel insecure, taking on [user]'s burden.")) /obj/item/nullrod/whip name = "holy whip" @@ -678,7 +679,7 @@ throw_speed = 4 throw_range = 7 throwforce = 30 - sharpness = IS_SHARP + sharpness = SHARP_EDGED attack_verb = list("enlightened", "redpilled") /obj/item/nullrod/armblade @@ -692,7 +693,9 @@ slot_flags = null item_flags = ABSTRACT w_class = WEIGHT_CLASS_HUGE - sharpness = IS_SHARP + sharpness = SHARP_EDGED + wound_bonus = -20 + bare_wound_bonus = 25 /obj/item/nullrod/armblade/Initialize() . = ..() @@ -724,8 +727,6 @@ user.faction |= "carp" used_blessing = TRUE - - /obj/item/nullrod/claymore/bostaff //May as well make it a "claymore" and inherit the blocking name = "monk's staff" desc = "A long, tall staff made of polished wood. Traditionally used in ancient old-Earth martial arts, it is now used to harass the clown." @@ -733,7 +734,7 @@ force = 15 block_chance = 40 slot_flags = ITEM_SLOT_BACK - sharpness = IS_BLUNT + sharpness = SHARP_NONE hitsound = "swing_hit" attack_verb = list("smashed", "slammed", "whacked", "thwacked") icon = 'icons/obj/items_and_weapons.dmi' @@ -750,7 +751,7 @@ name = "arrhythmic knife" w_class = WEIGHT_CLASS_HUGE desc = "They say fear is the true mind killer, but stabbing them in the head works too. Honour compels you to not sheathe it once drawn." - sharpness = IS_SHARP + sharpness = SHARP_EDGED slot_flags = null hitsound = 'sound/weapons/bladeslice.ogg' attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") @@ -778,7 +779,7 @@ desc = "Holding this makes you look absolutely devilish." attack_verb = list("poked", "impaled", "pierced", "jabbed") hitsound = 'sound/weapons/bladeslice.ogg' - sharpness = IS_SHARP + sharpness = SHARP_POINTY /obj/item/nullrod/egyptian name = "egyptian staff" diff --git a/code/game/objects/items/hot_potato.dm b/code/game/objects/items/hot_potato.dm index 34e1f3b4261a..0ccad3acdaef 100644 --- a/code/game/objects/items/hot_potato.dm +++ b/code/game/objects/items/hot_potato.dm @@ -50,7 +50,7 @@ /obj/item/hot_potato/proc/detonate() var/atom/location = loc - location.visible_message("[src] [detonate_explosion? "explodes" : "activates"]!", "[src] activates! You've ran out of time!") + location.visible_message(span_userdanger("[src] [detonate_explosion? "explodes" : "activates"]!"), span_userdanger("[src] activates! You've ran out of time!")) if(detonate_explosion) explosion(src, detonate_dev_range, detonate_heavy_range, detonate_light_range, detonate_flash_range, flame_range = detonate_fire_range) deactivate() @@ -62,8 +62,8 @@ /obj/item/hot_potato/attack_self(mob/user) if(activate(timer, user)) - user.visible_message("[user] squeezes [src], which promptly starts to flash red-hot colors!", "You squeeze [src], activating its countdown and attachment mechanism!", - "You hear a mechanical click and a loud beeping!") + user.visible_message(span_boldwarning("[user] squeezes [src], which promptly starts to flash red-hot colors!"), span_boldwarning("You squeeze [src], activating its countdown and attachment mechanism!"), + span_boldwarning("You hear a mechanical click and a loud beeping!")) return return ..() @@ -83,14 +83,14 @@ /obj/item/hot_potato/examine(mob/user) . = ..() if(active) - . += "[src] is flashing red-hot! You should probably get rid of it!" + . += span_warning("[src] is flashing red-hot! You should probably get rid of it!") if(show_timer) - . += "[src]'s timer looks to be at [DisplayTimeText(activation_time - world.time)]!" + . += span_warning("[src]'s timer looks to be at [DisplayTimeText(activation_time - world.time)]!") /obj/item/hot_potato/equipped(mob/user) . = ..() if(active) - to_chat(user, "You have a really bad feeling about [src]!") + to_chat(user, span_userdanger("You have a really bad feeling about [src]!")) /obj/item/hot_potato/afterattack(atom/target, mob/user, adjacent, params) . = ..() @@ -102,9 +102,9 @@ if(!istype(victim) || user != loc || victim == user) return FALSE if(!victim.client) - to_chat(user, "[src] refuses to attach to a non-sapient creature!") + to_chat(user, span_boldwarning("[src] refuses to attach to a non-sapient creature!")) if(victim.stat != CONSCIOUS || !victim.get_num_legs()) - to_chat(user, "[src] refuses to attach to someone incapable of using it!") + to_chat(user, span_boldwarning("[src] refuses to attach to someone incapable of using it!")) user.temporarilyRemoveItemFromInventory(src, TRUE) . = FALSE if(!victim.put_in_hands(src)) @@ -120,11 +120,11 @@ . = TRUE if(.) log_combat(user, victim, "forced a hot potato with explosive variables ([detonate_explosion]-[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_flash_range]/[detonate_fire_range]) onto") - user.visible_message("[user] forces [src] onto [victim]!", "You force [src] onto [victim]!", "You hear a mechanical click and a beep.") + user.visible_message(span_userdanger("[user] forces [src] onto [victim]!"), span_userdanger("You force [src] onto [victim]!"), span_boldwarning("You hear a mechanical click and a beep.")) colorize(null) else log_combat(user, victim, "tried to force a hot potato with explosive variables ([detonate_explosion]-[detonate_dev_range]/[detonate_heavy_range]/[detonate_light_range]/[detonate_flash_range]/[detonate_fire_range]) onto") - user.visible_message("[user] tried to force [src] onto [victim], but it could not attach!", "You try to force [src] onto [victim], but it is unable to attach!", "You hear a mechanical click and two buzzes.") + user.visible_message(span_boldwarning("[user] tried to force [src] onto [victim], but it could not attach!"), span_boldwarning("You try to force [src] onto [victim], but it is unable to attach!"), span_boldwarning("You hear a mechanical click and two buzzes.")) user.put_in_hands(src) /obj/item/hot_potato/dropped(mob/user) diff --git a/code/game/objects/items/hourglass.dm b/code/game/objects/items/hourglass.dm index 2c5c69eb170b..175867874693 100644 --- a/code/game/objects/items/hourglass.dm +++ b/code/game/objects/items/hourglass.dm @@ -22,11 +22,11 @@ /obj/item/hourglass/proc/toggle(mob/user) if(!timing_id) - to_chat(user,"You flip the [src]") + to_chat(user,span_notice("You flip the [src]")) start() flick("hourglass_flip",src) else - to_chat(user,"You stop the [src].") //Sand magically flows back because that's more convinient to use. + to_chat(user,span_notice("You stop the [src].")) //Sand magically flows back because that's more convinient to use. stop() /obj/item/hourglass/update_icon() @@ -57,7 +57,7 @@ update_icon() /obj/item/hourglass/proc/finish() - visible_message("[src] stops.") + visible_message(span_notice("[src] stops.")) stop() /obj/item/hourglass/Destroy() diff --git a/code/game/objects/items/implants/implant_abductor.dm b/code/game/objects/items/implants/implant_abductor.dm index 2a12868e3a69..cc65f2eb4738 100644 --- a/code/game/objects/items/implants/implant_abductor.dm +++ b/code/game/objects/items/implants/implant_abductor.dm @@ -14,7 +14,7 @@ cooldown = 0 START_PROCESSING(SSobj, src) else - to_chat(imp_in, "You must wait [30 - cooldown] seconds to use [src] again!") + to_chat(imp_in, span_warning("You must wait [30 - cooldown] seconds to use [src] again!")) /obj/item/implant/abductor/process() if(cooldown < initial(cooldown)) diff --git a/code/game/objects/items/implants/implant_chem.dm b/code/game/objects/items/implants/implant_chem.dm index d569c2799c58..23fe57355661 100644 --- a/code/game/objects/items/implants/implant_chem.dm +++ b/code/game/objects/items/implants/implant_chem.dm @@ -44,9 +44,9 @@ injectamount = cause reagents.reaction(R, INJECT) reagents.trans_to(R, injectamount) - to_chat(R, "You hear a faint beep.") + to_chat(R, span_italics("You hear a faint beep.")) if(!reagents.total_volume) - to_chat(R, "You hear a faint click from your chest.") + to_chat(R, span_italics("You hear a faint click from your chest.")) qdel(src) diff --git a/code/game/objects/items/implants/implant_explosive.dm b/code/game/objects/items/implants/implant_explosive.dm index 97912e4d1e72..a6a8b5ec0f5f 100644 --- a/code/game/objects/items/implants/implant_explosive.dm +++ b/code/game/objects/items/implants/implant_explosive.dm @@ -38,7 +38,7 @@ heavy = round(heavy) medium = round(medium) weak = round(weak) - to_chat(imp_in, "You activate your [name].") + to_chat(imp_in, span_notice("You activate your [name].")) active = TRUE . = ..() var/turf/boomturf = get_turf(imp_in) @@ -66,11 +66,11 @@ return ..() /obj/item/implant/explosive/proc/timed_explosion() - imp_in.visible_message("[imp_in] starts beeping ominously!") + imp_in.visible_message(span_warning("[imp_in] starts beeping ominously!")) playsound(loc, 'sound/items/timer.ogg', 30, 0) sleep(delay*0.25) if(imp_in && !imp_in.stat) - imp_in.visible_message("[imp_in] doubles over in pain!") + imp_in.visible_message(span_warning("[imp_in] doubles over in pain!")) imp_in.Paralyze(140) playsound(loc, 'sound/items/timer.ogg', 30, 0) sleep(delay*0.25) diff --git a/code/game/objects/items/implants/implant_greytide.dm b/code/game/objects/items/implants/implant_greytide.dm index 45754f05b492..08082e90d399 100644 --- a/code/game/objects/items/implants/implant_greytide.dm +++ b/code/game/objects/items/implants/implant_greytide.dm @@ -17,26 +17,26 @@ /obj/item/implant/greytide/implant(mob/source, mob/user) if(!source.mind) - to_chat(user.mind, "[source] doesn't posses the mental capabilities to be a greytider.") //"doesn't posses the mental capabilities to be a greytider" + to_chat(user.mind, span_notice("[source] doesn't posses the mental capabilities to be a greytider.")) //"doesn't posses the mental capabilities to be a greytider" return FALSE var/mob/living/carbon/target = source var/mob/living/carbon/holder = user if(target == holder) - to_chat(holder, "You can't implant yourself!") + to_chat(holder, span_notice("You can't implant yourself!")) return FALSE var/obj/item/implant/greytide/imp = locate(src.type) in source if(imp) - to_chat(holder, "[target] is already a slave!") + to_chat(holder, span_warning("[target] is already a slave!")) return FALSE if(HAS_TRAIT(target, TRAIT_MINDSHIELD)) - to_chat(holder, "[target] seems to resist the implant!") + to_chat(holder, span_warning("[target] seems to resist the implant!")) return FALSE - to_chat(target, "You feel a strong urge to break everything. You feel a strong loyalty to [holder.real_name] and your assistant brothers. You want to break into everything, but harming others isnt something you will do.") + to_chat(target, span_userdanger("You feel a strong urge to break everything. You feel a strong loyalty to [holder.real_name] and your assistant brothers. You want to break into everything, but harming others isnt something you will do.")) var/datum/antagonist/greytide/GT = new target.mind.add_antag_datum(GT) @@ -57,9 +57,9 @@ return if(source.mind && source.mind.has_antag_datum(/datum/antagonist/greytide)) source.mind.remove_antag_datum(/datum/antagonist/greytide) - to_chat(source,"You feel your free will come back to you! You no longer wish to break everything!") + to_chat(source,span_userdanger("You feel your free will come back to you! You no longer wish to break everything!")) if(!source.mind.has_antag_datum(/datum/antagonist)) - to_chat(source,"You are no longer an antagonist.") + to_chat(source,span_notice("You are no longer an antagonist.")) REMOVE_TRAIT(source, TRAIT_PACIFISM, "Greytide Implant") /obj/item/implanter/greytide diff --git a/code/game/objects/items/implants/implant_mindshield.dm b/code/game/objects/items/implants/implant_mindshield.dm index 6e072e4fb7c1..9c5be737e439 100644 --- a/code/game/objects/items/implants/implant_mindshield.dm +++ b/code/game/objects/items/implants/implant_mindshield.dm @@ -36,7 +36,7 @@ if(target.mind.has_antag_datum(/datum/antagonist/rev/head) || target.mind.has_antag_datum(/datum/antagonist/hivemind) || target.mind.unconvertable) if(!silent) - target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") + target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!")) removed(target, 1) qdel(src) return FALSE @@ -51,8 +51,8 @@ target.apply_status_effect(STATUS_EFFECT_HIVE_TRACKER, C, TRACKER_DEFAULT_TIME) if(C.mind) //If you were using mind control, too bad C.apply_status_effect(STATUS_EFFECT_HIVE_RADAR) - to_chat(C, "We detect a surge of psionic energy from a far away vessel before they disappear from the hive. Whatever happened, there's a good chance they're after us now.") - to_chat(target, "You hear supernatural wailing echo throughout your mind as you are finally set free. Deep down, you can feel the lingering presence of those who enslaved you... as can they!") + to_chat(C, span_assimilator("We detect a surge of psionic energy from a far away vessel before they disappear from the hive. Whatever happened, there's a good chance they're after us now.")) + to_chat(target, span_assimilator("You hear supernatural wailing echo throughout your mind as you are finally set free. Deep down, you can feel the lingering presence of those who enslaved you... as can they!")) target.apply_status_effect(STATUS_EFFECT_HIVE_RADAR) remove_hivemember(target) @@ -65,7 +65,7 @@ rev.remove_revolutionary(FALSE, user) if(target.mind.has_antag_datum(/datum/antagonist/gang/boss) || is_shadow_or_thrall(target)) if(!silent) - target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") + target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!")) removed(target, 1) qdel(src) return FALSE @@ -75,9 +75,9 @@ target.mind.remove_antag_datum(/datum/antagonist/veil) if(!silent) if(target.mind in SSticker.mode.cult) - to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") + to_chat(target, span_warning("You feel something interfering with your mental conditioning, but you resist it!")) else - to_chat(target, "You feel a sense of peace and security. You are now protected from brainwashing.") + to_chat(target, span_notice("You feel a sense of peace and security. You are now protected from brainwashing.")) ADD_TRAIT(target, TRAIT_MINDSHIELD, "implant") target.sec_hud_set_implants() return TRUE @@ -90,7 +90,7 @@ REMOVE_TRAIT(L, TRAIT_MINDSHIELD, "implant") L.sec_hud_set_implants() if(target.stat != DEAD && !silent) - to_chat(target, "Your mind suddenly feels terribly vulnerable. You are no longer safe from brainwashing.") + to_chat(target, span_boldnotice("Your mind suddenly feels terribly vulnerable. You are no longer safe from brainwashing.")) return 1 return 0 diff --git a/code/game/objects/items/implants/implant_mindshieldtot.dm b/code/game/objects/items/implants/implant_mindshieldtot.dm index a342e8a7ec17..29773a0c4edb 100644 --- a/code/game/objects/items/implants/implant_mindshieldtot.dm +++ b/code/game/objects/items/implants/implant_mindshieldtot.dm @@ -36,7 +36,7 @@ if(target.mind.has_antag_datum(/datum/antagonist/rev/head) || target.mind.has_antag_datum(/datum/antagonist/hivemind) || target.mind.unconvertable) if(!silent) - target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") + target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!")) removed(target, 1) qdel(src) return FALSE @@ -51,8 +51,8 @@ target.apply_status_effect(STATUS_EFFECT_HIVE_TRACKER, C, TRACKER_DEFAULT_TIME) if(C.mind) //If you were using mind control, too bad C.apply_status_effect(STATUS_EFFECT_HIVE_RADAR) - to_chat(C, "We detect a surge of psionic energy from a far away vessel before they disappear from the hive. Whatever happened, there's a good chance they're after us now.") - to_chat(target, "You hear supernatural wailing echo throughout your mind as you are finally set free. Deep down, you can feel the lingering presence of those who enslaved you... as can they!") + to_chat(C, span_assimilator("We detect a surge of psionic energy from a far away vessel before they disappear from the hive. Whatever happened, there's a good chance they're after us now.")) + to_chat(target, span_assimilator("You hear supernatural wailing echo throughout your mind as you are finally set free. Deep down, you can feel the lingering presence of those who enslaved you... as can they!")) target.apply_status_effect(STATUS_EFFECT_HIVE_RADAR) remove_hivemember(target) @@ -65,7 +65,7 @@ rev.remove_revolutionary(FALSE, user) if(target.mind.has_antag_datum(/datum/antagonist/gang/boss)) if(!silent) - target.visible_message("[target] seems to resist the implant!", "You feel something interfering with your mental conditioning, but you resist it!") + target.visible_message(span_warning("[target] seems to resist the implant!"), span_warning("You feel something interfering with your mental conditioning, but you resist it!")) return FALSE if(target.mind.has_antag_datum(/datum/antagonist/gang)) target.mind.remove_antag_datum(/datum/antagonist/gang) @@ -73,9 +73,9 @@ target.mind.remove_antag_datum(/datum/antagonist/veil) if(!silent) if(target.mind in SSticker.mode.cult) - to_chat(target, "You feel something interfering with your mental conditioning, but you resist it!") + to_chat(target, span_warning("You feel something interfering with your mental conditioning, but you resist it!")) else - to_chat(target, "You feel a sense of peace and security. You are now protected from brainwashing.") + to_chat(target, span_notice("You feel a sense of peace and security. You are now protected from brainwashing.")) ADD_TRAIT(target, TRAIT_MINDSHIELD, "implant") target.sec_hud_set_implants() return TRUE @@ -88,7 +88,7 @@ REMOVE_TRAIT(L, TRAIT_MINDSHIELD, "implant") L.sec_hud_set_implants() if(target.stat != DEAD && !silent) - to_chat(target, "Your mind suddenly feels terribly vulnerable. You are no longer safe from brainwashing.") + to_chat(target, span_boldnotice("Your mind suddenly feels terribly vulnerable. You are no longer safe from brainwashing.")) return 1 return 0 diff --git a/code/game/objects/items/implants/implant_misc.dm b/code/game/objects/items/implants/implant_misc.dm index 520d492ca1f7..fef83a1532c8 100644 --- a/code/game/objects/items/implants/implant_misc.dm +++ b/code/game/objects/items/implants/implant_misc.dm @@ -33,7 +33,7 @@ /obj/item/implant/adrenalin/activate() . = ..() uses-- - to_chat(imp_in, "You feel a sudden surge of energy!") + to_chat(imp_in, span_notice("You feel a sudden surge of energy!")) imp_in.SetStun(0) imp_in.SetKnockdown(0) imp_in.SetUnconscious(0) diff --git a/code/game/objects/items/implants/implant_spell.dm b/code/game/objects/items/implants/implant_spell.dm index e925a17b2936..916eaa3cedec 100644 --- a/code/game/objects/items/implants/implant_spell.dm +++ b/code/game/objects/items/implants/implant_spell.dm @@ -30,7 +30,7 @@ if (.) target.RemoveSpell(spell) if(target.stat != DEAD && !silent) - to_chat(target, "The knowledge of how to cast [spell] slips out from your mind.") + to_chat(target, span_boldnotice("The knowledge of how to cast [spell] slips out from your mind.")) /obj/item/implanter/spell name = "implanter (spell)" diff --git a/code/game/objects/items/implants/implant_storage.dm b/code/game/objects/items/implants/implant_storage.dm index d36ac43f0016..84c23f875f30 100644 --- a/code/game/objects/items/implants/implant_storage.dm +++ b/code/game/objects/items/implants/implant_storage.dm @@ -16,7 +16,7 @@ for (var/obj/item/I in lostimplant.contents()) I.add_mob_blood(implantee) lostimplant.do_quick_empty() - implantee.visible_message("A bluespace pocket opens around [src] as it exits [implantee], spewing out its contents and rupturing the surrounding tissue!") + implantee.visible_message(span_warning("A bluespace pocket opens around [src] as it exits [implantee], spewing out its contents and rupturing the surrounding tissue!")) implantee.apply_damage(20, BRUTE, BODY_ZONE_CHEST) qdel(lostimplant) return ..() diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index 4d4802e01866..42314cf6e234 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -26,7 +26,7 @@ /obj/item/implantcase/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pen)) if(!user.is_literate()) - to_chat(user, "You scribble illegibly on the side of [src]!") + to_chat(user, span_notice("You scribble illegibly on the side of [src]!")) return var/t = stripped_input(user, "What would you like the label to be?", name, null) if(user.get_active_held_item() != W) diff --git a/code/game/objects/items/implants/implantchair.dm b/code/game/objects/items/implants/implantchair.dm index 40428a706f14..177c8fd40955 100644 --- a/code/game/objects/items/implants/implantchair.dm +++ b/code/game/objects/items/implants/implantchair.dm @@ -91,12 +91,12 @@ if(istype(I, /obj/item/implant)) var/obj/item/implant/P = I if(P.implant(M)) - visible_message("[M] has been implanted by [src].") + visible_message(span_warning("[M] has been implanted by [src].")) return TRUE else if(istype(I, /obj/item/organ)) var/obj/item/organ/P = I P.Insert(M, FALSE, FALSE) - visible_message("[M] has been implanted by [src].") + visible_message(span_warning("[M] has been implanted by [src].")) return TRUE /obj/machinery/implantchair/update_icon() @@ -125,20 +125,20 @@ /obj/machinery/implantchair/container_resist(mob/living/user) user.changeNext_move(CLICK_CD_BREAKOUT) user.last_special = world.time + CLICK_CD_BREAKOUT - user.visible_message("You see [user] kicking against the door of [src]!", \ - "You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)", \ - "You hear a metallic creaking from [src].") + user.visible_message(span_notice("You see [user] kicking against the door of [src]!"), \ + span_notice("You lean on the back of [src] and start pushing the door open... (this will take about [DisplayTimeText(breakout_time)].)"), \ + span_italics("You hear a metallic creaking from [src].")) if(do_after(user,(breakout_time), target = src)) if(!user || user.stat != CONSCIOUS || user.loc != src || state_open) return - user.visible_message("[user] successfully broke out of [src]!", \ - "You successfully break out of [src]!") + user.visible_message(span_warning("[user] successfully broke out of [src]!"), \ + span_notice("You successfully break out of [src]!")) open_machine() /obj/machinery/implantchair/relaymove(mob/user) if(message_cooldown <= world.time) message_cooldown = world.time + 50 - to_chat(user, "[src]'s door won't budge!") + to_chat(user, span_warning("[src]'s door won't budge!")) /obj/machinery/implantchair/MouseDrop_T(mob/target, mob/user) if(user.stat || !Adjacent(user) || !user.Adjacent(target) || !isliving(target) || !user.IsAdvancedToolUser()) diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 7f3b06d79ea9..43ede2ef2d59 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -26,25 +26,25 @@ return if(user && imp) if(M != user) - M.visible_message("[user] is attempting to implant [M].") + M.visible_message(span_warning("[user] is attempting to implant [M].")) var/turf/T = get_turf(M) if(T && (M == user || do_mob(user, M, 50))) if(src && imp) if(imp.implant(M, user)) if (M == user) - to_chat(user, "You implant yourself.") + to_chat(user, span_notice("You implant yourself.")) else - M.visible_message("[user] has implanted [M].", "[user] implants you.") + M.visible_message("[user] has implanted [M].", span_notice("[user] implants you.")) imp = null update_icon() else - to_chat(user, "[src] fails to implant [M].") + to_chat(user, span_warning("[src] fails to implant [M].")) /obj/item/implanter/attackby(obj/item/W, mob/user, params) if(istype(W, /obj/item/pen)) if(!user.is_literate()) - to_chat(user, "You prod at [src] with [W]!") + to_chat(user, span_notice("You prod at [src] with [W]!")) return var/t = stripped_input(user, "What would you like the label to be?", name, null) if(user.get_active_held_item() != W) diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm index a7346f76919e..3287837d68b0 100644 --- a/code/game/objects/items/implants/implantpad.dm +++ b/code/game/objects/items/implants/implantpad.dm @@ -19,10 +19,10 @@ if(Adjacent(user)) . += "It [case ? "contains \a [case]" : "is currently empty"]." if(case) - . += "Alt-click to remove [case]." + . += span_info("Alt-click to remove [case].") else if(case) - . += "There seems to be something inside it, but you can't quite tell what from here..." + . += span_warning("There seems to be something inside it, but you can't quite tell what from here...") /obj/item/implantpad/handle_atom_del(atom/A) if(A == case) @@ -36,7 +36,7 @@ if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) return if(!case) - to_chat(user, "There's no implant to remove from [src].") + to_chat(user, span_warning("There's no implant to remove from [src].")) return user.put_in_hands(case) diff --git a/code/game/objects/items/inducer.dm b/code/game/objects/items/inducer.dm index 3917d8377657..0235ca45f9a9 100644 --- a/code/game/objects/items/inducer.dm +++ b/code/game/objects/items/inducer.dm @@ -47,15 +47,15 @@ /obj/item/inducer/proc/cantbeused(mob/user) if(!user.IsAdvancedToolUser()) - to_chat(user, "You don't have the dexterity to use [src]!") + to_chat(user, span_warning("You don't have the dexterity to use [src]!")) return TRUE if(!cell) - to_chat(user, "[src] doesn't have a power cell installed!") + to_chat(user, span_warning("[src] doesn't have a power cell installed!")) return TRUE if(!cell.charge) - to_chat(user, "[src]'s battery is dead!") + to_chat(user, span_warning("[src]'s battery is dead!")) return TRUE return FALSE @@ -64,12 +64,12 @@ if(W.tool_behaviour == TOOL_SCREWDRIVER) W.play_tool_sound(src) if(!opened) - to_chat(user, "You unscrew the battery compartment.") + to_chat(user, span_notice("You unscrew the battery compartment.")) opened = TRUE update_icon() return else - to_chat(user, "You close the battery compartment.") + to_chat(user, span_notice("You close the battery compartment.")) opened = FALSE update_icon() return @@ -78,12 +78,12 @@ if(!cell) if(!user.transferItemToLoc(W, src)) return - to_chat(user, "You insert [W] into [src].") + to_chat(user, span_notice("You insert [W] into [src].")) cell = W update_icon() return else - to_chat(user, "[src] already has \a [cell] installed!") + to_chat(user, span_notice("[src] already has \a [cell] installed!")) return if(cantbeused(user)) @@ -112,10 +112,10 @@ if(C) var/done_any = FALSE if(C.charge >= C.maxcharge) - to_chat(user, "[A] is fully charged!") + to_chat(user, span_notice("[A] is fully charged!")) recharging = FALSE return TRUE - user.visible_message("[user] starts recharging [A] with [src].","You start recharging [A] with [src].") + user.visible_message("[user] starts recharging [A] with [src].",span_notice("You start recharging [A] with [src].")) while(C.charge < C.maxcharge) if(do_after(user, 10, target = user) && cell.charge) done_any = TRUE @@ -126,7 +126,7 @@ else break if(done_any) // Only show a message if we succeeded at least once - user.visible_message("[user] recharged [A]!","You recharged [A]!") + user.visible_message("[user] recharged [A]!",span_notice("You recharged [A]!")) recharging = FALSE return TRUE recharging = FALSE @@ -146,7 +146,7 @@ /obj/item/inducer/attack_self(mob/user) if(opened && cell) - user.visible_message("[user] removes [cell] from [src]!","You remove [cell].") + user.visible_message("[user] removes [cell] from [src]!",span_notice("You remove [cell].")) cell.update_icon() user.put_in_hands(cell) cell = null @@ -156,11 +156,11 @@ /obj/item/inducer/examine(mob/living/M) . = ..() if(cell) - . += "Its display shows: [DisplayEnergy(cell.charge)]." + . += span_notice("Its display shows: [DisplayEnergy(cell.charge)].") else - . += "Its display is dark." + . += span_notice("Its display is dark.") if(opened) - . += "Its battery compartment is open." + . += span_notice("Its battery compartment is open.") /obj/item/inducer/update_icon() cut_overlays() diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm index f94f6de03fe1..70a007373f59 100644 --- a/code/game/objects/items/kitchen.dm +++ b/code/game/objects/items/kitchen.dm @@ -20,7 +20,7 @@ name = "fork" desc = "Pointy." icon_state = "fork" - force = 5 + force = 4 w_class = WEIGHT_CLASS_TINY throwforce = 0 throw_speed = 3 @@ -30,11 +30,12 @@ attack_verb = list("attacked", "stabbed", "poked") hitsound = 'sound/weapons/bladeslice.ogg' armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30) + sharpness = SHARP_POINTY var/datum/reagent/forkload //used to eat omelette var/loaded_food = "nothing" /// The name of the thing on the fork /obj/item/kitchen/fork/suicide_act(mob/living/carbon/user) - user.visible_message("[user] stabs \the [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to take a bite out of [user.p_them()]self!") + user.visible_message(span_suicide("[user] stabs \the [src] into [user.p_their()] chest! It looks like [user.p_theyre()] trying to take a bite out of [user.p_them()]self!")) playsound(src, 'sound/items/eatfood.ogg', 50, 1) return BRUTELOSS @@ -46,14 +47,14 @@ if(forkload) if(M == user) - M.visible_message("[user] eats a delicious forkful of [loaded_food]!") + M.visible_message(span_notice("[user] eats a delicious forkful of [loaded_food]!")) M.reagents.add_reagent(forkload.type, 1) else - M.visible_message("[user] is trying to feed [M] a delicious forkful of [loaded_food]!") //yogs start + M.visible_message(span_notice("[user] is trying to feed [M] a delicious forkful of [loaded_food]!")) //yogs start if(!do_mob(user, M)) return log_combat(user, M, "fed [loaded_food]", forkload.type) //yogs end - M.visible_message("[user] feeds [M] a delicious forkful of [loaded_food]!") + M.visible_message(span_notice("[user] feeds [M] a delicious forkful of [loaded_food]!")) M.reagents.add_reagent(forkload.type, 1) icon_state = "fork" forkload = null @@ -63,7 +64,7 @@ return eyestab(M,user) icon_state = "forkloaded_pie" user.visible_message("[user] scoops up the pie with [user.p_their()] fork!", \ - "You scoop up the pie with your fork.") + span_notice("You scoop up the pie with your fork.")) var/datum/reagent/R = new /datum/reagent/consumable/banana forkload = R @@ -92,10 +93,12 @@ throw_range = 6 materials = list(/datum/material/iron=12000) attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut") - sharpness = IS_SHARP_ACCURATE + sharpness = SHARP_EDGED armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50) var/bayonet = TRUE //Can this be attached to a gun? custom_price = 30 + wound_bonus = 5 + bare_wound_bonus = 15 /obj/item/kitchen/knife/Initialize() . = ..() @@ -110,9 +113,9 @@ return ..() /obj/item/kitchen/knife/suicide_act(mob/user) - user.visible_message(pick("[user] is slitting [user.p_their()] wrists with the [name]! It looks like [user.p_theyre()] trying to commit suicide.", \ - "[user] is slitting [user.p_their()] throat with the [name]! It looks like [user.p_theyre()] trying to commit suicide.", \ - "[user] is slitting [user.p_their()] stomach open with the [name]! It looks like [user.p_theyre()] trying to commit seppuku.")) + user.visible_message(pick(span_suicide("[user] is slitting [user.p_their()] wrists with the [name]! It looks like [user.p_theyre()] trying to commit suicide."), \ + span_suicide("[user] is slitting [user.p_their()] throat with the [name]! It looks like [user.p_theyre()] trying to commit suicide."), \ + span_suicide("[user] is slitting [user.p_their()] stomach open with the [name]! It looks like [user.p_theyre()] trying to commit seppuku."))) return BRUTELOSS /obj/item/kitchen/knife/ritual @@ -158,6 +161,7 @@ w_class = WEIGHT_CLASS_NORMAL custom_price = 60 bayonet = TRUE + wound_bonus = 15 /obj/item/kitchen/knife/combat name = "combat knife" @@ -168,6 +172,7 @@ throwforce = 20 attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut") bayonet = TRUE + wound_bonus = 10 /obj/item/kitchen/knife/combat/survival name = "survival knife" @@ -211,9 +216,9 @@ armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/kitchen/knife/carrotshiv/suicide_act(mob/living/carbon/user) - user.visible_message("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] forcefully drives \the [src] into [user.p_their()] eye! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS - + // Shank - Makeshift weapon that can embed on throw /obj/item/kitchen/knife/shank name = "Shank" @@ -244,6 +249,6 @@ custom_price = 20 /obj/item/kitchen/rollingpin/suicide_act(mob/living/carbon/user) - user.visible_message("[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + user.visible_message(span_suicide("[user] begins flattening [user.p_their()] head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!")) return BRUTELOSS /* Trays moved to /obj/item/storage/bag */ diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm index 08d3532f0023..8a367caf05c0 100644 --- a/code/game/objects/items/latexballoon.dm +++ b/code/game/objects/items/latexballoon.dm @@ -17,7 +17,7 @@ icon_state = "latexballon_blow" item_state = "latexballon" user.update_inv_hands() - to_chat(user, "You blow up [src] with [tank].") + to_chat(user, span_notice("You blow up [src] with [tank].")) air_contents = tank.remove_air_volume(3) /obj/item/latexballon/proc/burst() @@ -54,5 +54,5 @@ var/obj/item/tank/T = W blow(T, user) return - if (W.is_sharp() || W.is_hot() || is_pointed(W)) + if (W.is_sharp() || W.is_hot()) burst() diff --git a/code/game/objects/items/manuals.dm b/code/game/objects/items/manuals.dm index f77f8511a05f..8e30b5c557c4 100644 --- a/code/game/objects/items/manuals.dm +++ b/code/game/objects/items/manuals.dm @@ -211,15 +211,15 @@ var/wikiurl = CONFIG_GET(string/wikiurl) if(wikiurl) dat = {" -