diff --git a/.travis.yml b/.travis.yml
index cf5ae30ab5a..052a53f7ccc 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -13,6 +13,10 @@ env:
before_install:
- sudo apt-get update -qq
- sudo apt-get install libc6:i386 libgcc1:i386 libstdc++6:i386 -qq
+ - sudo apt-get install python -qq
+ - sudo apt-get install python-pip -qq
+ - sudo pip install PyYaml -q
+ - sudo pip install beautifulsoup4 -q
install:
- curl "http://www.byond.com/download/build/${BYOND_MAJOR}/${BYOND_MAJOR}.${BYOND_MINOR}_byond_linux.zip" -o byond.zip
@@ -23,3 +27,4 @@ install:
script:
- bash dm.sh -M${DM_MAPFILE} tgstation.dme
+ - python tools/ss13_genchangelog.py html/changelog.html html/changelogs
diff --git a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
index 0aeb1b016c3..888b8d56a83 100644
--- a/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
+++ b/_maps/map_files/MetaStation/MetaStation.v41A.II.dmm
@@ -3620,7 +3620,7 @@
"brF" = (/obj/structure/extinguisher_cabinet{pixel_x = -27; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel{dir = 8; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
"brG" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"brH" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plasteel{dir = 4; icon_state = "cautioncorner"},/area/hallway/primary/starboard)
-"brI" = (/obj/item/device/violin,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
+"brI" = (/obj/item/device/instrument/violin,/obj/structure/table/wood,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"brJ" = (/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/break_room)
"brK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/engine/break_room)
"brL" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plasteel{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/engine/break_room)
@@ -4401,7 +4401,7 @@
"bGG" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/visible{dir = 8},/turf/simulated/floor/plasteel,/area/atmos)
"bGH" = (/obj/structure/sign/directions/engineering{desc = "A direction sign, pointing out which way the bridge is."; dir = 1; icon_state = "direction_bridge"; name = "bridge"; pixel_y = -8; tag = "icon-direction_bridge (NORTH)"},/turf/simulated/wall/r_wall,/area/crew_quarters/captain{name = "\improper Captain's Quarters"})
"bGI" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/fancy/carpet,/area/crew_quarters/theatre)
-"bGJ" = (/obj/structure/table/wood,/obj/item/weapon/lipstick,/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/theatre)
+"bGJ" = (/obj/structure/table/wood,/obj/item/weapon/lipstick{pixel_y = 5},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/obj/machinery/camera{c_tag = "Theatre - Stage"; dir = 8; network = list("SS13")},/obj/machinery/light/small{dir = 4},/obj/item/device/instrument/guitar,/turf/simulated/floor/wood,/area/crew_quarters/theatre)
"bGK" = (/obj/machinery/atmospherics/unary/portables_connector/visible{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plasteel{dir = 8; icon_state = "escape"},/area/hallway/primary/starboard)
"bGL" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/floor/plasteel,/area/hallway/primary/starboard)
"bGM" = (/obj/machinery/atmospherics/pipe/manifold/yellow/visible{tag = "icon-manifold-y (EAST)"; dir = 4},/turf/simulated/floor/plasteel,/area/atmos)
diff --git a/_maps/map_files/MetaStation/z2.dmm b/_maps/map_files/MetaStation/z2.dmm
index ed87bda5846..f5fd004225f 100644
--- a/_maps/map_files/MetaStation/z2.dmm
+++ b/_maps/map_files/MetaStation/z2.dmm
@@ -882,36 +882,63 @@
"qX" = (/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/holding)
"qY" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding)
"qZ" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding)
-"ra" = (/turf/unsimulated/wall/vault,/area/abductor_ship)
-"rb" = (/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rc" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rd" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"re" = (/obj/structure/table,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rf" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rg" = (/obj/structure/table,/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rh" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"ri" = (/obj/structure/optable,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rj" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rk" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rl" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rm" = (/obj/structure/table,/obj/item/weapon/cautery,/obj/item/weapon/surgical_drapes,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rn" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"ro" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rp" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rq" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rr" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rs" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rt" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"ru" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rv" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rw" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rx" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"ry" = (/obj/structure/rack,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rz" = (/obj/machinery/computer/security{name = "Human Observation Console"; network = list("SS13","Abductor")},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rA" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rB" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rC" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"rD" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
+"ra" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship)
+"rb" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship)
+"rc" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship)
+"rd" = (/turf/unsimulated/wall/abductor{icon_state = "alien22"},/area/abductor_ship)
+"re" = (/turf/unsimulated/wall/abductor{icon_state = "alien24"},/area/abductor_ship)
+"rf" = (/turf/unsimulated/wall/abductor{icon_state = "alien16"},/area/abductor_ship)
+"rg" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rh" = (/turf/unsimulated/wall/abductor{icon_state = "alien17"},/area/abductor_ship)
+"ri" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rj" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rk" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship)
+"rl" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship)
+"rm" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rn" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ro" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rp" = (/turf/unsimulated/wall/abductor{icon_state = "alien14"},/area/abductor_ship)
+"rq" = (/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rr" = (/obj/machinery/computer/camera_advanced/abductor{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rs" = (/turf/unsimulated/wall/abductor{icon_state = "alien15"},/area/abductor_ship)
+"rt" = (/obj/structure/closet/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ru" = (/obj/machinery/computer/camera_advanced/abductor{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rv" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship)
+"rw" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rx" = (/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ry" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rz" = (/obj/structure/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rA" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship)
+"rB" = (/obj/item/weapon/storage/box/handcuffs,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rC" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rD" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rE" = (/turf/unsimulated/wall/abductor{icon_state = "alien10"},/area/abductor_ship)
+"rF" = (/obj/item/weapon/surgical_drapes,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/obj/structure/table/abductor,/obj/item/weapon/cautery/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rG" = (/turf/unsimulated/wall/abductor{icon_state = "alien11"},/area/abductor_ship)
+"rH" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship)
+"rI" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rJ" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship)
+"rK" = (/obj/structure/stool/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rL" = (/obj/structure/table/abductor,/obj/item/weapon/surgicaldrill/alien,/obj/item/weapon/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rM" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship)
+"rN" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship)
+"rO" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship)
+"rP" = (/turf/unsimulated/wall/abductor,/area/abductor_ship)
+"rQ" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship)
+"rR" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship)
+"rS" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship)
+"rT" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rU" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rV" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rW" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rX" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rY" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rZ" = (/obj/machinery/computer/camera_advanced/abductor{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"sa" = (/obj/machinery/computer/camera_advanced/abductor{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"sb" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"sc" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"sd" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"se" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababadaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeag
@@ -1127,24 +1154,24 @@ abababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarararararnrcruraraabrararvrdrwrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarxryrarbrbrbrbreraabrarerbrbrbrbrarxryraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbrbrarjrfrzrhrgraabrargrkrzrlrjrarbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbrbrbrbrbrbrbrmraabrarmrbrbrbrbrbrbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarararararbrirbraraabrararbrirbrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrbrardrcreabababrbrardrcreababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrfrhrgrjrirlrkabrfrhrmrornrlrkabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrprrrqrqrqrtrsabrprurqrqrqrtrsabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrvrxrwrzryrBrAabrvrxrCrzrDrBrAabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrErFrqrqrqrtrGabrErFrqrqrqrtrGabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrHrJrIrLrKrNrMabrHrJrIrLrKrNrMabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrPrOrRrQrSabababrPrOrRrQrSababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrbrardrcreabababrbrardrcreababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrfrhrTrVrUrlrkabrfrhrWrYrXrlrkabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrprZrqrqrqrtrsabrpsarqrqrqrtrsabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrvrxsbrzscrBrAabrvrxsdrzserBrAabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrErFrqrqrqrtrGabrErFrqrqrqrtrGabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrHrJrIrLrKrNrMabrHrJrIrLrKrNrMabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrPrOrRrQrSabababrPrOrRrQrSababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararArorBraraabrararCrprDraraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarerbrbrbrbraabrarerbrbrbrbraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrargrqrzrrrjraabrargrsrzrtrjraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarmrbrbrbrbraabrarmrbrbrbrbraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararbrirbraraabrararbrirbraraabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarararbraabababrarararbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarxrbrbraabababrarxrbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababraryrbrbraabababraryrbrbraababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrararararaabababrararararaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
diff --git a/_maps/map_files/TgStation/tgstation.2.1.3.dmm b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
index fc743dcec33..d18f6746f97 100644
--- a/_maps/map_files/TgStation/tgstation.2.1.3.dmm
+++ b/_maps/map_files/TgStation/tgstation.2.1.3.dmm
@@ -1099,7 +1099,7 @@
"avg" = (/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (EAST)"; dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"avh" = (/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"avi" = (/obj/structure/stool{pixel_y = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/landmark/start{name = "Assistant"},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
-"avj" = (/obj/structure/table/wood,/obj/item/clothing/mask/balaclava,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
+"avj" = (/obj/structure/table/wood,/obj/item/device/instrument/guitar,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"avk" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden{tag = "icon-manifold-b-f (NORTH)"; dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plasteel,/area/security/prison)
"avl" = (/obj/structure/table/wood,/obj/item/weapon/coin/silver,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"avm" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
@@ -1167,9 +1167,9 @@
"aww" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"awx" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"awy" = (/obj/structure/stool{pixel_y = 8},/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
-"awz" = (/obj/structure/table/wood,/obj/item/device/violin,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
+"awz" = (/obj/structure/table/wood,/obj/item/device/instrument/violin,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"awA" = (/obj/structure/table/wood,/obj/item/device/paicard,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
-"awB" = (/obj/structure/table/wood,/obj/item/toy/cards/deck,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
+"awB" = (/obj/structure/table/wood,/obj/item/toy/cards/deck{pixel_x = 2},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/item/clothing/mask/balaclava{pixel_x = -8; pixel_y = 8},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"awC" = (/obj/machinery/camera{c_tag = "Arrivals Bay 1 North"; dir = 1},/turf/simulated/floor/plasteel{icon_state = "warning"},/area/hallway/secondary/entry)
"awD" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9},/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
"awE" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plasteel,/area/crew_quarters/sleep)
diff --git a/_maps/map_files/generic/z2.dmm b/_maps/map_files/generic/z2.dmm
index 83e61cd5c85..c95ba677a27 100644
--- a/_maps/map_files/generic/z2.dmm
+++ b/_maps/map_files/generic/z2.dmm
@@ -834,36 +834,36 @@
"qb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/holding)
"qc" = (/obj/effect/landmark{name = "Holding Facility"},/turf/unsimulated/floor{icon_state = "engine"},/area/centcom/holding)
"qd" = (/obj/docking_port/stationary/transit{dheight = 0; dir = 2; dwidth = 11; height = 22; id = "whiteship_transit"; width = 35},/turf/space/transit/horizontal,/area/space)
-"qe" = (/turf/unsimulated/wall/vault,/area/abductor_ship)
-"qf" = (/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qg" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qh" = (/obj/structure/stool/bed/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qi" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qj" = (/obj/structure/table,/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qk" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"ql" = (/obj/structure/optable,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qm" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qn" = (/obj/structure/rack,/obj/item/weapon/circular_saw,/obj/item/weapon/surgicaldrill,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qo" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qp" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qq" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qr" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qs" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qt" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qu" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qv" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qw" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qx" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qy" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qz" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qA" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qB" = (/obj/structure/rack,/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qC" = (/obj/structure/closet/acloset,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
+"qe" = (/turf/unsimulated/wall/abductor{icon_state = "alien21"},/area/abductor_ship)
+"qf" = (/turf/unsimulated/wall/abductor{icon_state = "alien20"},/area/abductor_ship)
+"qg" = (/turf/unsimulated/wall/abductor{icon_state = "alien23"},/area/abductor_ship)
+"qh" = (/turf/unsimulated/wall/abductor{icon_state = "alien22"},/area/abductor_ship)
+"qi" = (/turf/unsimulated/wall/abductor{icon_state = "alien24"},/area/abductor_ship)
+"qj" = (/turf/unsimulated/wall/abductor{icon_state = "alien16"},/area/abductor_ship)
+"qk" = (/obj/machinery/abductor/experiment{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ql" = (/turf/unsimulated/wall/abductor{icon_state = "alien17"},/area/abductor_ship)
+"qm" = (/obj/machinery/abductor/pad{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qn" = (/obj/effect/landmark/abductor/console,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qo" = (/turf/unsimulated/wall/abductor{icon_state = "alien19"},/area/abductor_ship)
+"qp" = (/turf/unsimulated/wall/abductor{icon_state = "alien18"},/area/abductor_ship)
+"qq" = (/obj/machinery/abductor/experiment{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qr" = (/obj/machinery/abductor/pad{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qs" = (/obj/effect/landmark/abductor/console{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qt" = (/turf/unsimulated/wall/abductor{icon_state = "alien14"},/area/abductor_ship)
+"qu" = (/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qv" = (/obj/machinery/computer/camera_advanced/abductor{team = 1},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qw" = (/turf/unsimulated/wall/abductor{icon_state = "alien15"},/area/abductor_ship)
+"qx" = (/obj/structure/closet/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qy" = (/obj/machinery/computer/camera_advanced/abductor{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qz" = (/turf/unsimulated/wall/abductor{icon_state = "alien12"},/area/abductor_ship)
+"qA" = (/obj/effect/landmark/abductor/scientist,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qB" = (/obj/item/weapon/retractor/alien,/obj/item/weapon/hemostat/alien,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qC" = (/obj/effect/landmark/abductor/agent,/turf/unsimulated/floor/abductor,/area/abductor_ship)
"qD" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "neutral"; dir = 8},/area/tdome/tdomeobserve)
-"qE" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qF" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qG" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"qH" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
+"qE" = (/obj/structure/optable/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qF" = (/turf/unsimulated/wall/abductor{icon_state = "alien13"},/area/abductor_ship)
+"qG" = (/obj/item/weapon/storage/box/handcuffs,/obj/structure/table/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"qH" = (/obj/effect/landmark/abductor/scientist{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
"qI" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve)
"qJ" = (/obj/machinery/door/airlock/centcom{name = "Crate Storage"; req_access_txt = "106"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/suppy)
"qK" = (/obj/structure/stool,/turf/unsimulated/floor{icon_state = "neutral"; dir = 4},/area/tdome/tdomeobserve)
@@ -881,8 +881,34 @@
"qW" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve)
"qX" = (/obj/structure/table,/obj/item/weapon/storage/box/drinkingglasses,/turf/unsimulated/floor{dir = 8; icon_state = "red"},/area/tdome/tdomeobserve)
"qY" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/tdome/tdomeobserve)
-"qZ" = (/obj/machinery/computer/camera_advanced{name = "Human Observation Console"; networks = list("SS13","Abductor")},/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
-"ra" = (/obj/structure/table,/obj/item/weapon/cautery,/obj/item/weapon/surgical_drapes,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/turf/unsimulated/floor/bluegrid,/area/abductor_ship)
+"qZ" = (/obj/effect/landmark/abductor/agent{team = 4},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ra" = (/turf/unsimulated/wall/abductor{icon_state = "alien10"},/area/abductor_ship)
+"rb" = (/obj/item/weapon/surgical_drapes,/obj/item/weapon/paper/abductor,/obj/item/weapon/scalpel/alien,/obj/structure/table/abductor,/obj/item/weapon/cautery/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rc" = (/turf/unsimulated/wall/abductor{icon_state = "alien11"},/area/abductor_ship)
+"rd" = (/turf/unsimulated/wall/abductor{icon_state = "alien6"},/area/abductor_ship)
+"re" = (/obj/machinery/abductor/gland_dispenser,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rf" = (/turf/unsimulated/wall/abductor{icon_state = "alien7"},/area/abductor_ship)
+"rg" = (/obj/structure/stool/bed/abductor,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rh" = (/obj/structure/table/abductor,/obj/item/weapon/surgicaldrill/alien,/obj/item/weapon/circular_saw/alien,/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ri" = (/turf/unsimulated/wall/abductor{icon_state = "alien9"},/area/abductor_ship)
+"rj" = (/turf/unsimulated/wall/abductor{icon_state = "alien8"},/area/abductor_ship)
+"rk" = (/turf/unsimulated/wall/abductor{icon_state = "alien2"},/area/abductor_ship)
+"rl" = (/turf/unsimulated/wall/abductor,/area/abductor_ship)
+"rm" = (/turf/unsimulated/wall/abductor{icon_state = "alien4"},/area/abductor_ship)
+"rn" = (/turf/unsimulated/wall/abductor{icon_state = "alien3"},/area/abductor_ship)
+"ro" = (/turf/unsimulated/wall/abductor{icon_state = "alien5"},/area/abductor_ship)
+"rp" = (/obj/machinery/abductor/experiment{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rq" = (/obj/machinery/abductor/pad{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rr" = (/obj/effect/landmark/abductor/console{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rs" = (/obj/machinery/abductor/experiment{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rt" = (/obj/machinery/abductor/pad{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ru" = (/obj/effect/landmark/abductor/console{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rv" = (/obj/machinery/computer/camera_advanced/abductor{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rw" = (/obj/machinery/computer/camera_advanced/abductor{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rx" = (/obj/effect/landmark/abductor/scientist{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"ry" = (/obj/effect/landmark/abductor/agent{team = 2},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rz" = (/obj/effect/landmark/abductor/scientist{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
+"rA" = (/obj/effect/landmark/abductor/agent{team = 3},/turf/unsimulated/floor/abductor,/area/abductor_ship)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababadaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeafaeaeaeaeaeag
@@ -1107,21 +1133,21 @@ abababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqoqgqyqeqeabqeqeqzqvqAqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqZqfqfqfqCqeabqeqZqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqjqiqlqkqBqeabqeqjqwqlqxqBqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeraqfqfqfqCqeabqeraqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqmqnqhqeqeabqeqeqmqnqhqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqfqeqhqgqiabababqfqeqhqgqiababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqjqlqkqnqmqpqoabqjqlqqqsqrqpqoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqtqvquququqxqwabqtqyquququqxqwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqzqBqAqEqCqGqFabqzqBqHqEqZqGqFabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbquququqxrcabrarbquququqxrcabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrdrfrerhrgrjriabrdrfrerhrgrjriabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrlrkrnrmroabababrlrkrnrmroababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqEqpqFqeqeabqeqeqGqqqHqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqZqfqfqfqCqeabqeqZqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqjqrqlqsqBqeabqeqjqtqlquqBqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeraqfqfqfqCqeabqeraqfqfqfqCqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqmqnqhqeqeabqeqeqmqnqhqeqeabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
-abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqeqeqeqeqeabababqeqeqeqeqeababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqfqeqhqgqiabababqfqeqhqgqiababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqjqlrprrrqqpqoabqjqlrsrurtqpqoabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqtrvquququqxqwabqtrwquququqxqwabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababqzqBrxqEryqGqFabqzqBrzqErAqGqFabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrarbquququqxrcabrarbquququqxrcabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrdrfrerhrgrjriabrdrfrerhrgrjriabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
+abababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababrlrkrnrmroabababrlrkrnrmroababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
ababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababab
diff --git a/code/ATMOSPHERICS/atmospherics.dm b/code/ATMOSPHERICS/atmospherics.dm
index 9569becc9fc..3c707b3da2e 100644
--- a/code/ATMOSPHERICS/atmospherics.dm
+++ b/code/ATMOSPHERICS/atmospherics.dm
@@ -21,9 +21,19 @@ Pipelines + Other Objects -> Pipe network
var/pipe_color
var/obj/item/pipe/stored
+ var/welded = 0 //Used on pumps and scrubbers
+
var/global/list/iconsetids = list()
var/global/list/pipeimages = list()
+
+/obj/machinery/atmospherics/Destroy()
+ for(var/mob/living/L in src)
+ L.remove_ventcrawl()
+ L.forceMove(get_turf(src))
+ ..()
+
+
/obj/machinery/atmospherics/New()
..()
@@ -78,21 +88,21 @@ Pipelines + Other Objects -> Pipe network
if(can_unwrench && istype(W, /obj/item/weapon/wrench))
var/turf/T = src.loc
if (level==1 && isturf(T) && T.intact)
- user << "You must remove the plating first."
+ user << "You must remove the plating first!"
return 1
var/datum/gas_mixture/int_air = return_air()
var/datum/gas_mixture/env_air = loc.return_air()
add_fingerprint(user)
if ((int_air.return_pressure()-env_air.return_pressure()) > 2*ONE_ATMOSPHERE)
- user << "You cannot unwrench this [src], it is too exerted due to internal pressure."
+ user << "You cannot unwrench this [src], it is too exerted due to internal pressure!"
return 1
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user << "You begin to unfasten \the [src]..."
if (do_after(user, 40) && !gc_destroyed)
user.visible_message( \
"[user] unfastens \the [src].", \
- "You have unfastened \the [src].", \
- "You hear ratchet.")
+ "You unfasten \the [src].", \
+ "You hear ratchet.")
investigate_log("was REMOVED by [key_name(usr)]", "atmos")
Deconstruct()
else
@@ -150,4 +160,50 @@ Pipelines + Other Objects -> Pipe network
/obj/machinery/atmospherics/singularity_pull(S, current_size)
if(current_size >= STAGE_FIVE)
- Deconstruct()
\ No newline at end of file
+ Deconstruct()
+
+
+//Find a connecting /obj/machinery/atmospherics in specified direction
+/obj/machinery/atmospherics/proc/findConnecting(var/direction)
+ for(var/obj/machinery/atmospherics/target in get_step(src, direction))
+ if(target.initialize_directions & get_dir(target,src))
+ return target
+
+
+#define VENT_SOUND_DELAY 30
+
+/obj/machinery/atmospherics/relaymove(var/mob/living/user, var/direction)
+ if(!(direction & initialize_directions)) //cant go this way.
+ return
+
+ var/obj/machinery/atmospherics/target_move = findConnecting(direction)
+ if(target_move)
+ if(is_type_in_list(target_move, ventcrawl_machinery) && target_move.can_crawl_through())
+ user.remove_ventcrawl()
+ user.forceMove(target_move.loc) //handle entering and so on.
+ user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.")
+ else if(target_move.can_crawl_through())
+ user.loc = target_move
+ user.client.eye = target_move //Byond only updates the eye every tick, This smooths out the movement
+ if(world.time - user.last_played_vent > VENT_SOUND_DELAY)
+ user.last_played_vent = world.time
+ playsound(src, 'sound/machines/ventcrawl.ogg', 50, 1, -3)
+ else
+ if((direction & initialize_directions) || is_type_in_list(src, ventcrawl_machinery) && can_crawl_through()) //if we move in a way the pipe can connect, but doesn't - or we're in a vent
+ user.remove_ventcrawl()
+ user.forceMove(src.loc)
+ user.visible_message("You hear something squeezing through the ducts...","You climb out the ventilation system.")
+ user.canmove = 0
+ spawn(1)
+ user.canmove = 1
+
+
+/obj/machinery/atmospherics/AltClick(var/mob/living/L)
+ if(is_type_in_list(src, ventcrawl_machinery))
+ L.handle_ventcrawl(src)
+ return
+ ..()
+
+
+/obj/machinery/atmospherics/proc/can_crawl_through()
+ return 1
diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index 0719c32f502..24771a56241 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -171,6 +171,6 @@ Passive gate is similar to the regular pump except:
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if (on)
- user << "You cannot unwrench this [src], turn it off first."
+ user << "You cannot unwrench this [src], turn it off first!"
return 1
return ..()
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index 09a5e421de6..d9547e0a1c3 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -176,7 +176,7 @@ Thus, the two variables affect pump operation are set in New():
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if (!(stat & NOPOWER) && on)
- user << "You cannot unwrench this [src], turn it off first."
+ user << "You cannot unwrench this [src], turn it off first!"
return 1
return ..()
diff --git a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
index de0ca2a8ab7..380e1c16bfe 100644
--- a/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/volume_pump.dm
@@ -175,6 +175,6 @@ Thus, the two variables affect pump operation are set in New():
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if (!(stat & NOPOWER) && on)
- user << "You cannot unwrench this [src], turn it off first."
+ user << "You cannot unwrench this [src], turn it off first!"
return 1
return ..()
diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm
index 84c9f0c7714..4f9a62ea92d 100644
--- a/code/ATMOSPHERICS/components/portables_connector.dm
+++ b/code/ATMOSPHERICS/components/portables_connector.dm
@@ -37,7 +37,7 @@
/obj/machinery/atmospherics/unary/portables_connector/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
if(connected_device)
- user << "You cannot unwrench this [src], dettach [connected_device] first."
+ user << "You cannot unwrench this [src], dettach [connected_device] first!"
return 1
return ..()
diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index aa7fc41240a..17076ed8694 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -23,8 +23,6 @@
//2: Do not pass internal_pressure_bound
//3: Do not pass either
- var/welded = 0
-
var/frequency = 1439
var/datum/radio_frequency/radio_connection
@@ -267,22 +265,22 @@
/obj/machinery/atmospherics/unary/vent_pump/attackby(obj/item/W, mob/user, params)
if (istype(W, /obj/item/weapon/wrench)&& !(stat & NOPOWER) && on)
- user << "You cannot unwrench this [src], turn it off first."
+ user << "You cannot unwrench this [src], turn it off first!"
return 1
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0,user))
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
- user << "Now welding the vent."
+ user << "You begin welding the vent..."
if(do_after(user, 20))
if(!src || !WT.isOn()) return
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
if(!welded)
- user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.")
+ user.visible_message("[user] welds the vent shut.", "You weld the vent shut.", "You hear welding.")
welded = 1
update_icon()
else
- user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.")
+ user.visible_message("[user] unwelds the vent.", "You unweld the vent.", "You hear welding.")
welded = 0
update_icon()
return 1
@@ -307,68 +305,6 @@
initial_loc.air_vent_names -= id_tag
..()
-/*
- Alt-click to ventcrawl
-*/
-/obj/machinery/atmospherics/unary/vent_pump/AltClick(var/mob/living/L)
- if(!L.ventcrawler || !isliving(L) || !Adjacent(L))
- return
- if(L.stat)
- L << "You must be conscious to do this!"
- return
- if(L.lying)
- L << "You can't vent crawl while you're stunned!"
- return
- if(welded)
- L << "That vent is welded shut."
- return
- var/list/vents = list()
- for(var/obj/machinery/atmospherics/unary/vent_pump/temp_vent in parent.other_atmosmch)
- if(temp_vent.welded)
- continue
- if(temp_vent in loc)
- continue
- var/turf/T = get_turf(temp_vent)
-
- if(!T || T.z != loc.z)
- continue
-
- var/i = 1
- var/index = "[T.loc.name]\[[i]\]"
- while(index in vents)
- i++
- index = "[T.loc.name]\[[i]\]"
- vents[index] = temp_vent
- if(!vents.len)
- L << "There are no available vents to travel to, they could be welded. "
- return
-
- var/obj/selection = input(L,"Select a destination.", "Duct System") as null|anything in sortList(vents)
- if(!selection)
- return
-
- if(!Adjacent(L) || L.stat || L.lying || !L.ventcrawler || welded)
- return
- if(iscarbon(L) && L.ventcrawler < 2) // lesser ventcrawlers can't bring items
- for(var/obj/item/carried_item in L.contents)
- if(!istype(carried_item, /obj/item/weapon/implant))//If it's not an implant
- L << "You can't be carrying items or have items equipped when vent crawling!"
- return
-
- var/obj/machinery/atmospherics/unary/vent_pump/target_vent = vents[selection]
- if(!target_vent)
- return
-
- L.visible_message("[L] scrambles into the ventilation ducts!", \
- "You scramble into the ventilation ducts.")
-
- target_vent.audible_message("You hear something squeezing through the ventilation ducts.")
-
- if(target_vent.welded) //the vent can be welded while they scrolled through the list.
- target_vent = src
- L << "The vent you were heading to appears to be welded."
- L.loc = target_vent.loc
- var/area/new_area = get_area(L.loc)
- if(new_area)
- new_area.Entered(L)
+/obj/machinery/atmospherics/unary/vent_pump/can_crawl_through()
+ return !welded
diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
index cb7859c1268..f9ccca6c829 100644
--- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
@@ -27,6 +27,7 @@
var/radio_filter_out
var/radio_filter_in
+
/obj/machinery/atmospherics/unary/vent_scrubber/New()
..()
initial_loc = get_area(loc)
@@ -50,6 +51,10 @@
if(showpipe)
overlays += getpipeimage('icons/obj/atmospherics/unary_devices.dmi', "scrub_cap", initialize_directions)
+ if(welded)
+ icon_state = "scrub_welded"
+ return
+
if(!node || !on || stat & (NOPOWER|BROKEN))
icon_state = "scrub_off"
return
@@ -107,7 +112,7 @@
if (!node)
on = 0
//broadcast_status()
- if(!on)
+ if(!on || welded)
return 0
@@ -238,15 +243,38 @@
update_icon_nopipes()
/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob, params)
+ if(istype(W, /obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/WT = W
+ if(WT.remove_fuel(0,user))
+ playsound(loc, 'sound/items/Welder.ogg', 40, 1)
+ user << "Now welding the scrubber."
+ if(do_after(user, 20))
+ if(!src || !WT.isOn())
+ return
+ playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
+ if(!welded)
+ user.visible_message("[user] welds the scrubber shut.","You weld the scrubber shut.", "You hear welding.")
+ welded = 1
+ update_icon()
+ else
+ user.visible_message("[user] unwelds the scrubber.", "You unweld the scrubber.", "You hear welding.")
+ welded = 0
+ update_icon()
+ return 1
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if (!(stat & NOPOWER) && on)
- user << "You cannot unwrench this [src], turn it off first."
+ user << "You cannot unwrench this [src], turn it off first!"
return 1
return ..()
+
/obj/machinery/atmospherics/unary/vent_scrubber/Destroy()
if(initial_loc)
initial_loc.air_scrub_info -= id_tag
initial_loc.air_scrub_names -= id_tag
..()
+
+
+/obj/machinery/atmospherics/unary/vent_scrubber/can_crawl_through()
+ return !welded
diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index 4598cd77308..8675d6cca0e 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -68,6 +68,7 @@
#define NOGUNS 512
#define NOBLOOD 1024
#define NOFIRE 2048
+#define VIRUSIMMUNE 4096
/*
These defines are used specifically with the atom/movable/languages bitmask.
diff --git a/code/__HELPERS/names.dm b/code/__HELPERS/names.dm
index 50f981a3b04..fecd159e8d9 100644
--- a/code/__HELPERS/names.dm
+++ b/code/__HELPERS/names.dm
@@ -131,11 +131,11 @@ var/syndicate_name = null
syndicate_name = name
return name
+var/gang_name_pool = list("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel")
var/gang_A_name = null
var/gang_B_name = null
/proc/gang_name(var/gang)
if(!gang_A_name || !gang_B_name)
- var/gang_name_pool = list("Clandestine", "Prima", "Blue", "Zero-G", "Max", "Blasto", "Waffle", "North", "Omni", "Newton", "Cyber", "Donk", "Gene", "Gib", "Tunnel")
gang_A_name = pick(gang_name_pool)
gang_name_pool -= gang_A_name
gang_B_name = pick(gang_name_pool)
diff --git a/code/__HELPERS/unsorted.dm b/code/__HELPERS/unsorted.dm
index 51f52265cde..d866f3186fe 100644
--- a/code/__HELPERS/unsorted.dm
+++ b/code/__HELPERS/unsorted.dm
@@ -810,7 +810,7 @@ Turf and target are seperate in case you want to teleport some distance from a t
if(needhand)
//This might seem like an odd check, but you can still need a hand even when it's empty
//i.e the hand is used to insert some item/tool into the construction
- if(!holdingnull)
+ if(!holdingnull)
if(!holding)
return 0
if(user.get_active_hand() != holding)
@@ -1332,7 +1332,7 @@ var/list/WALLITEMS = list(
/obj/proc/atmosanalyzer_scan(var/datum/gas_mixture/air_contents, mob/user, var/obj/target = src)
var/obj/icon = target
- user.visible_message("[user] has used the analyzer on \icon[icon] [target].")
+ user.visible_message("[user] has used the analyzer on \icon[icon] [target].", "You use the analyzer on \icon[icon] [target].")
var/pressure = air_contents.return_pressure()
var/total_moles = air_contents.total_moles()
diff --git a/code/_onclick/item_attack.dm b/code/_onclick/item_attack.dm
index b2f0fd6fcdf..68b4f2f104d 100644
--- a/code/_onclick/item_attack.dm
+++ b/code/_onclick/item_attack.dm
@@ -11,6 +11,8 @@
user.do_attack_animation(src)
if(W && !(W.flags&NOBLUDGEON))
visible_message("[user] has hit [src] with [W].")
+ user << "You hit [src] with [W]."
+ src << "[user] has hit you with [W]!"
/mob/living/attackby(obj/item/I, mob/user, params)
user.changeNext_move(CLICK_CD_MELEE)
@@ -42,12 +44,12 @@
/mob/living/simple_animal/attacked_by(var/obj/item/I, var/mob/living/user)
if(!I.force)
user.visible_message("[user] gently taps [src] with [I].",\
- "This weapon is ineffective, it does no damage.")
+ "This weapon is ineffective, it does no damage!")
else if(I.force >= force_threshold && I.damtype != STAMINA)
..()
else
- visible_message("[I] bounces harmlessly off of [src].",\
- "[I] bounces harmlessly off of [src].")
+ visible_message("[I] bounces harmlessly off of [src].",\
+ "[I] bounces harmlessly off of [src]!")
diff --git a/code/datums/diseases/_MobProcs.dm b/code/datums/diseases/_MobProcs.dm
index 48abda03c83..952c22982ef 100644
--- a/code/datums/diseases/_MobProcs.dm
+++ b/code/datums/diseases/_MobProcs.dm
@@ -128,3 +128,9 @@
if(!CanContractDisease(D))
return 0
AddDisease(D)
+
+
+/mob/living/carbon/human/CanContractDisease(var/datum/disease/D)
+ if(dna && VIRUSIMMUNE in dna.species.specflags)
+ return 0
+ return ..()
\ No newline at end of file
diff --git a/code/datums/diseases/advance/symptoms/deafness.dm b/code/datums/diseases/advance/symptoms/deafness.dm
index 1edf47c6366..c615d644b51 100644
--- a/code/datums/diseases/advance/symptoms/deafness.dm
+++ b/code/datums/diseases/advance/symptoms/deafness.dm
@@ -31,10 +31,10 @@ Bonus
var/mob/living/M = A.affected_mob
switch(A.stage)
if(3, 4)
- M << "[pick("You hear a ringing in your ear.", "Your ears pop.")]"
+ M << "[pick("You hear a ringing in your ear.", "Your ears pop.")]"
if(5)
if(!(M.ear_deaf))
- M << "Your ears pop and begin ringing loudly!"
+ M << "Your ears pop and begin ringing loudly!"
M.setEarDamage(-1,INFINITY) //Shall be enough
spawn(200)
if(M)
diff --git a/code/datums/diseases/anxiety.dm b/code/datums/diseases/anxiety.dm
index 3de7edf76cc..315a01aa5d3 100644
--- a/code/datums/diseases/anxiety.dm
+++ b/code/datums/diseases/anxiety.dm
@@ -16,7 +16,7 @@
switch(stage)
if(2) //also changes say, see say.dm
if(prob(5))
- affected_mob << "Your feel anxious."
+ affected_mob << "You feel anxious."
if(3)
if(prob(10))
affected_mob << "Your stomach flutters."
diff --git a/code/datums/mind.dm b/code/datums/mind.dm
index 415623e5e65..97d113d445f 100644
--- a/code/datums/mind.dm
+++ b/code/datums/mind.dm
@@ -295,10 +295,6 @@
else
text += "."
- if (objectives.len==0)
- text += "
Objectives are empty! Set to kill all rival gang leaders."
-
-
else if (src in ticker.mode.B_bosses)
text += "loyal|none|(A) gangster boss|(B) gangster BOSS"
text += "
Equipment: give"
@@ -306,13 +302,10 @@
var/list/L = current.get_contents()
var/obj/item/device/gangtool/gangtool = locate() in L
if (gangtool)
- text += "
take."
+ text += "|take."
else
text += "."
- if (objectives.len==0)
- text += "
Objectives are empty! Set to kill all rival gang leaders."
-
else if (src in ticker.mode.A_gang)
text += "loyal|none|(A) GANGSTER boss|(B) gangster boss"
else if (src in ticker.mode.B_gang)
@@ -835,6 +828,8 @@
current << "You are a [gang_name("A")] Gang Boss!"
message_admins("[key_name_admin(usr)] has added [current] to the [gang_name("A")] Gang (A) leadership.")
log_admin("[key_name(usr)] has added [current] to the [gang_name("A")] Gang (A) leadership.")
+ ticker.mode.forge_gang_objectives(src)
+ ticker.mode.greet_gang(src,0)
if("bgang")
if(src in ticker.mode.B_gang)
@@ -854,11 +849,8 @@
current << "You are a [gang_name("B")] Gang Boss!"
message_admins("[key_name_admin(usr)] has added [current] to the [gang_name("B")] Gang (B) leadership.")
log_admin("[key_name(usr)] has added [current] to the [gang_name("B")] Gang (B) leadership.")
-
- if("autoobjective")
ticker.mode.forge_gang_objectives(src)
ticker.mode.greet_gang(src,0)
- usr << "You can't break your vow of silence that fast!"
+ still_recharging_msg = "You can't break your vow of silence that fast!"
else
- still_recharging_msg = "You'll have to wait before you can give your vow of silence again."
+ still_recharging_msg = "You'll have to wait before you can give your vow of silence again!"
..()
/obj/effect/proc_holder/spell/targeted/mime/speak/cast(list/targets)
diff --git a/code/datums/spells/mind_transfer.dm b/code/datums/spells/mind_transfer.dm
index 710d98ba015..9a6605ff3ca 100644
--- a/code/datums/spells/mind_transfer.dm
+++ b/code/datums/spells/mind_transfer.dm
@@ -22,29 +22,29 @@ Also, you never added distance checking after target is selected. I've went ahea
*/
/obj/effect/proc_holder/spell/targeted/mind_transfer/cast(list/targets,mob/user = usr, distanceoverride)
if(!targets.len)
- user << "No mind found."
+ user << "No mind found!"
return
if(targets.len > 1)
- user << "Too many minds! You're not a hive damnit!"//Whaa...aat?
+ user << "Too many minds! You're not a hive damnit!"//Whaa...aat?
return
var/mob/living/target = targets[1]
if(!(target in oview(range)) && !distanceoverride)//If they are not in overview after selection. Do note that !() is necessary for in to work because ! takes precedence over it.
- user << "They are too far away!"
+ user << "They are too far away!"
return
if(target.stat == DEAD)
- user << "You don't particularly want to be dead."
+ user << "You don't particularly want to be dead!"
return
if(!target.key || !target.mind)
- user << "They appear to be catatonic. Not even magic can affect their vacant mind."
+ user << "They appear to be catatonic! Not even magic can affect their vacant mind."
return
if(target.mind.special_role in protected_roles)
- user << "Their mind is resisting your spell."
+ user << "Their mind is resisting your spell!"
return
var/mob/living/victim = target//The target of the spell whos body will be transferred to.
diff --git a/code/datums/wires/airlock.dm b/code/datums/wires/airlock.dm
index 6309fa53df2..a25186734b5 100644
--- a/code/datums/wires/airlock.dm
+++ b/code/datums/wires/airlock.dm
@@ -137,11 +137,11 @@ var/const/AIRLOCK_WIRE_LIGHT = 2048
//raises them if they are down (only if power's on)
if(!A.locked)
A.locked = 1
- A.audible_message("You hear a click from the bottom of the door.", null, 1)
+ A.audible_message("You hear a click from the bottom of the door.", null, 1)
else
if(A.hasPower()) //only can raise bolts if power's on
A.locked = 0
- A.audible_message("You hear a click from the bottom of the door.", null, 1)
+ A.audible_message("You hear a click from the bottom of the door.", null, 1)
A.update_icon()
if(AIRLOCK_WIRE_BACKUP_POWER1 || AIRLOCK_WIRE_BACKUP_POWER2)
diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm
index 6081eaa8e28..ba6f252724a 100644
--- a/code/datums/wires/wires.dm
+++ b/code/datums/wires/wires.dm
@@ -113,14 +113,14 @@ var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown",
var/colour = href_list["cut"]
CutWireColour(colour)
else
- L << "You need wirecutters!"
+ L << "You need wirecutters!"
else if(href_list["pulse"])
if(istype(I, /obj/item/device/multitool))
var/colour = href_list["pulse"]
PulseColour(colour)
else
- L << "You need a multitool!"
+ L << "You need a multitool!"
else if(href_list["attach"])
var/colour = href_list["attach"]
@@ -138,7 +138,7 @@ var/list/wireColours = list("red", "blue", "green", "black", "orange", "brown",
L.drop_item()
Attach(colour, A)
else
- L << "You need a attachable assembly!"
+ L << "You need a attachable assembly!"
diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm
index da4a45d31b9..2ab48980639 100644
--- a/code/game/area/Space Station 13 areas.dm
+++ b/code/game/area/Space Station 13 areas.dm
@@ -125,6 +125,7 @@ proc/process_ghost_teleport_locs()
luminosity = 1
lighting_use_dynamic = 1
has_gravity = 1
+ valid_territory = 0
/area/start
@@ -658,6 +659,7 @@ proc/process_ghost_teleport_locs()
requires_power = 0
luminosity = 1
lighting_use_dynamic = 0
+ valid_territory = 0
auxport
name = "\improper Fore Port Solar Array"
@@ -966,6 +968,7 @@ proc/process_ghost_teleport_locs()
icon_state = "toxmisc"
/area/toxins/test_area
+ valid_territory = 0
name = "\improper Toxins Test Area"
icon_state = "toxtest"
diff --git a/code/game/dna.dm b/code/game/dna.dm
index 43f11afb6e7..58f5ac12a95 100644
--- a/code/game/dna.dm
+++ b/code/game/dna.dm
@@ -403,15 +403,15 @@
return
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
- user << "You lean on the back of [src] and start pushing the door open. (this will take about [breakout_time] minutes.)"
- user.visible_message("You hear a metallic creaking from [src]!")
+ user << "You lean on the back of [src] and start pushing the door open... (this will take about [breakout_time] minutes.)"
+ user.visible_message("You hear a metallic creaking from [src]!")
if(do_after(user,(breakout_time*60*10))) //minutes * 60seconds * 10deciseconds
if(!user || user.stat != CONSCIOUS || user.loc != src || state_open || !locked)
return
locked = 0
- visible_message("[user] successfully broke out of [src]!")
+ visible_message("[user] successfully broke out of [src]!")
user << "You successfully break out of [src]!"
open_machine()
diff --git a/code/game/gamemodes/abduction/abduction.dm b/code/game/gamemodes/abduction/abduction.dm
index cd605c9e280..f3a73b5a032 100644
--- a/code/game/gamemodes/abduction/abduction.dm
+++ b/code/game/gamemodes/abduction/abduction.dm
@@ -35,7 +35,7 @@
return 1
-/datum/game_mode/abduction/proc/make_abductor_team(var/team_number)
+/datum/game_mode/abduction/proc/make_abductor_team(var/team_number,var/preset_agent=null,var/preset_scientist=null)
//Team Name
team_names[team_number] = "Mothership [pick(possible_changeling_IDs)]" //TODO Ensure unique and actual alieny names
//Team Objective
@@ -43,26 +43,40 @@
team_objective.team = team_number
team_objectives[team_number] = team_objective
//Team Members
- if(antag_candidates.len >=2)
- var/datum/mind/scientist = pick(antag_candidates)
+
+ if(!preset_agent || !preset_scientist)
+ if(antag_candidates.len <=2)
+ return 0
+
+ var/datum/mind/scientist
+ var/datum/mind/agent
+
+ if(!preset_scientist)
+ scientist = pick(antag_candidates)
antag_candidates -= scientist
- var/datum/mind/agent = pick(antag_candidates)
+ else
+ scientist = preset_scientist
+
+ if(!preset_agent)
+ agent = pick(antag_candidates)
antag_candidates -= agent
+ else
+ agent = preset_agent
- scientist.assigned_role = "MODE"
- scientist.special_role = "Abductor"
- log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.")
- agent.assigned_role = "MODE"
- agent.special_role = "Abductor"
- log_game("[agent.key] (ckey) has been selected as an abductor team [team_number] agent.")
+ scientist.assigned_role = "MODE"
+ scientist.special_role = "Abductor"
+ log_game("[scientist.key] (ckey) has been selected as an abductor team [team_number] scientist.")
- abductors += agent
- abductors += scientist
- scientists[team_number] = scientist
- agents[team_number] = agent
- return 1
- return 0
+ agent.assigned_role = "MODE"
+ agent.special_role = "Abductor"
+ log_game("[agent.key] (ckey) has been selected as an abductor team [team_number] agent.")
+
+ abductors |= agent
+ abductors |= scientist
+ scientists[team_number] = scientist
+ agents[team_number] = agent
+ return 1
/datum/game_mode/abduction/post_setup()
//Spawn Team
@@ -218,6 +232,7 @@
agent.equip_to_slot_or_del(new /obj/item/weapon/abductor_baton(agent), slot_in_backpack)
agent.equip_to_slot_or_del(new /obj/item/weapon/gun/energy/decloner/alien(agent), slot_belt)
agent.equip_to_slot_or_del(new /obj/item/device/abductor/silencer(agent), slot_in_backpack)
+ agent.equip_to_slot_or_del(new /obj/item/clothing/head/helmet/abductor(agent), slot_head)
/datum/game_mode/abduction/proc/equip_scientist(var/mob/living/carbon/human/scientist,var/team_number)
@@ -236,19 +251,11 @@
/datum/game_mode/abduction/check_finished()
- var/all_dead = 1
for(var/team_number=1,team_number<=teams,team_number++)
- var/datum/mind/smind = scientists[team_number]
- if(smind.current)
- var/mob/living/M = smind.current
- if(M.stat != DEAD)
- all_dead = 0
var/obj/machinery/abductor/console/con = get_team_console(team_number)
var/datum/objective/objective = team_objectives[team_number]
if (con.experiment.points > objective.target_amount)
return 1
- if(all_dead)
- return 1
return ..()
/datum/game_mode/abduction/declare_completion()
diff --git a/code/game/gamemodes/abduction/abduction_gear.dm b/code/game/gamemodes/abduction/abduction_gear.dm
index 689d8555d04..0b8b72cb227 100644
--- a/code/game/gamemodes/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/abduction/abduction_gear.dm
@@ -133,7 +133,7 @@
/obj/item/device/abductor/proc/AbductorCheck(var/user)
if(IsAbductor(user))
return 1
- user << "You can't figure how this works."
+ user << "You can't figure how this works!"
return 0
/obj/item/device/abductor/proc/ScientistCheck(var/user)
@@ -155,7 +155,7 @@
if(!AbductorCheck(user))
return
if(!ScientistCheck(user))
- user << "You're not trained to use this"
+ user << "You're not trained to use this!"
return
if(mode == GIZMO_SCAN)
mode = GIZMO_MARK
@@ -200,7 +200,7 @@
/obj/item/device/abductor/gizmo/proc/mark(var/atom/target, var/mob/living/user)
if(marked == target)
- user << "This specimen is already marked."
+ user << "This specimen is already marked!"
return
if(istype(target,/mob/living/carbon/human))
if(IsAbductor(target))
@@ -211,12 +211,12 @@
/obj/item/device/abductor/gizmo/proc/prepare(var/atom/target, var/mob/living/user)
if(get_dist(target,user)>1)
- user << "You need to be next to the specimen to prepare it for transport."
+ user << "You need to be next to the specimen to prepare it for transport!"
return
- user << "You start preparing the specimen for transport "
+ user << "You start preparing the specimen for transport..."
if(do_after(user, 100))
marked = target
- user << "You finish preparing the specimen for transport "
+ user << "You finish preparing the specimen for transport."
/obj/item/device/abductor/silencer
@@ -479,20 +479,58 @@ Congratulations! You are now trained for xenobiology research!"}
user <<"The baton is in restrain mode."
-obj/item/weapon/scalpel/alien
+/obj/item/weapon/scalpel/alien
name = "alien scalpel"
icon = 'icons/obj/abductor.dmi'
-obj/item/weapon/hemostat/alien
+/obj/item/weapon/hemostat/alien
name = "alien hemostat"
icon = 'icons/obj/abductor.dmi'
-obj/item/weapon/retractor/alien
+/obj/item/weapon/retractor/alien
name = "alien retractor"
icon = 'icons/obj/abductor.dmi'
+/obj/item/weapon/circular_saw/alien
+ name = "alien saw"
+ icon = 'icons/obj/abductor.dmi'
+
+/obj/item/weapon/surgicaldrill/alien
+ name = "alien drill"
+ icon = 'icons/obj/abductor.dmi'
+
+/obj/item/weapon/cautery/alien
+ name = "alien cautery"
+ icon = 'icons/obj/abductor.dmi'
+
/obj/item/clothing/head/helmet/abductor
name = "Agent Headgear"
desc = "Abducting with style. Spiky style."
icon_state = "alienhelmet"
item_state = "alienhelmet"
+ blockTracking = 1
+
+// Operating Table / Beds / Lockers
+
+/obj/structure/optable/abductor
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "bed"
+ can_buckle = 1
+ buckle_lying = 1
+
+/obj/structure/stool/bed/abductor
+ name = "resting contraption"
+ desc = "This looks similar to contraptions from earth. Could aliens be stealing our technology?"
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "bed"
+
+/obj/structure/table/abductor
+ name = "alien table"
+ desc = "Advanced flat surface technology at work!"
+ icon_state = "alientable"
+
+/obj/structure/closet/abductor
+ name = "alien locker"
+ desc = "Contains secrets of the universe"
+ icon_state = "abductor"
+ icon_door = "abductor"
\ No newline at end of file
diff --git a/code/game/gamemodes/abduction/abduction_machinery.dm b/code/game/gamemodes/abduction/abduction_machinery.dm
deleted file mode 100644
index 05a99e9eb34..00000000000
--- a/code/game/gamemodes/abduction/abduction_machinery.dm
+++ /dev/null
@@ -1,500 +0,0 @@
-/obj/machinery/abductor
- var/team = 0
-
-/obj/machinery/abductor/console
- name = "Abductor console"
- desc = "Ship command center."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "console"
- density = 1
- anchored = 1.0
- var/obj/item/device/abductor/gizmo/gizmo
- var/obj/item/clothing/suit/armor/abductor/vest/vest
- var/obj/machinery/abductor/experiment/experiment
- var/obj/machinery/abductor/pad/pad
- var/list/datum/icon_snapshot/disguises = list()
-
-/obj/machinery/abductor/console/attack_hand(var/mob/user as mob)
- if(..())
- return
- if(!IsAbductor(user))
- return
- user.set_machine(src)
- var/dat = ""
- dat += " Abductsoft 3000
"
-
- if(experiment != null)
- var/points = experiment.points
- dat += "Collected Samples : [points]
"
- else
- dat += "NO EXPERIMENT MACHINE DETECTED
"
-
- if(pad!=null)
- dat += "Activate Teleporter
"
- dat += "Set Teleporter
"
- if(gizmo!=null && gizmo.marked!=null)
- dat += "Retrieve Mark
"
- else
- dat += "Retrieve Mark
"
- else
- dat += "NO TELEPAD DETECTED"
-
- if(vest!=null)
- dat += " Agent Vest Mode
"
- var/mode = vest.mode
- if(mode == VEST_STEALTH)
- dat += "Combat"
- dat += "Stealth"
- else
- dat += "Combat"
- dat += "Stealth"
-
- dat+="
"
- dat += "Select Agent Vest Disguise
"
- else
- dat += "NO AGENT VEST DETECTED"
- var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500)
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.open()
- return
-
-/obj/machinery/abductor/console/Topic(href, href_list)
- if(..())
- return
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
- if(href_list["teleporter_set"])
- TeleporterSet()
- else if(href_list["teleporter_send"])
- TeleporterSend()
- else if(href_list["teleporter_retrieve"])
- TeleporterRetrieve()
- else if(href_list["flip_vest"])
- FlipVest()
- else if(href_list["select_disguise"])
- SelectDisguise()
- src.updateUsrDialog()
-
-/obj/machinery/abductor/console/proc/TeleporterSet()
- var/A = null
- A = input("Select area to teleport to", "Teleport", A) in teleportlocs
- if(pad!=null)
- pad.teleport_target = teleportlocs[A]
- return
-
-/obj/machinery/abductor/console/proc/TeleporterRetrieve()
- if(gizmo!=null && pad!=null && gizmo.marked)
- pad.Retrieve(gizmo.marked)
- return
-
-/obj/machinery/abductor/console/proc/TeleporterSend()
- if(pad!=null)
- pad.Send()
- return
-
-/obj/machinery/abductor/console/proc/FlipVest()
- if(vest!=null)
- vest.flip_mode()
- return
-
-/obj/machinery/abductor/console/proc/SelectDisguise()
- var/list/entries = list()
- var/tempname
- var/datum/icon_snapshot/temp
- for(var/i = 1; i <= disguises.len; i++)
- temp = disguises[i]
- tempname = temp.name
- entries["[tempname]"] = disguises[i]
- var/entry_name = input( "Choose Disguise", "Disguise") in entries
- var/datum/icon_snapshot/chosen = entries[entry_name]
- if(chosen)
- vest.SetDisguise(chosen)
- return
-
-/obj/machinery/abductor/console/proc/Initialize()
-
- for(var/obj/machinery/abductor/pad/p in machines)
- if(p.team == team)
- pad = p
- break
-
- for(var/obj/machinery/abductor/experiment/e in machines)
- if(e.team == team)
- experiment = e
- e.console = src
-
-/obj/machinery/abductor/console/proc/AddSnapshot(var/mob/living/carbon/human/target)
- var/datum/icon_snapshot/entry = new
- entry.name = target.name
- entry.icon = target.icon
- entry.icon_state = target.icon_state
- entry.overlays = target.get_overlays_copy(list(L_HAND_LAYER,R_HAND_LAYER))
- for(var/i=1,i<=disguises.len,i++)
- var/datum/icon_snapshot/temp = disguises[i]
- if(temp.name == entry.name)
- disguises[i] = entry
- return
- disguises.Add(entry)
- return
-
-/obj/machinery/abductor/pad
- name = "Alien Telepad"
- desc = "Use this to transport to and from human habitat"
- icon = 'icons/obj/abductor.dmi'
- icon_state = "alien-pad-idle"
- anchored = 1
- var/area/teleport_target
-
-/obj/machinery/abductor/proc/IsAbductor(var/mob/living/carbon/human/H)
- if(!H.dna)
- return 0
- return H.dna.species.id == "abductor"
-
-/obj/machinery/abductor/proc/IsAgent(var/mob/living/carbon/human/H)
- if(H.dna.species.id == "abductor")
- var/datum/species/abductor/S = H.dna.species
- return S.agent
- return 0
-
-/obj/machinery/abductor/proc/IsScientist(var/mob/living/carbon/human/H)
- if(H.dna.species.id == "abductor")
- var/datum/species/abductor/S = H.dna.species
- return S.scientist
- return 0
-
-/obj/machinery/abductor/proc/TeleportToArea(var/mob/living/target,var/area/thearea)
- var/list/L = list()
- for(var/turf/T in get_area_turfs(thearea.type))
- if(!T.density)
- var/clear = 1
- for(var/obj/O in T)
- if(O.density)
- clear = 0
- break
- if(clear)
- L+=T
- if(!L.len)
- return
-
- if(target && target.buckled)
- target.buckled.unbuckle_mob()
-
- var/list/tempL = L
- var/attempt = null
- var/success = 0
- while(tempL.len)
- attempt = pick(tempL)
- target.Move(attempt)
- if(get_turf(target) == attempt)
- success = 1
- break
- else
- tempL.Remove(attempt)
- if(!success)
- target.loc = pick(L)
-
-/obj/machinery/abductor/pad/proc/Warp(var/mob/living/target)
- target.Move(src.loc)
-
-/obj/machinery/abductor/pad/proc/Send()
- flick("alien-pad", src)
- for(var/mob/living/target in src.loc)
- TeleportToArea(target,teleport_target)
- spawn(0)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
-
-/obj/machinery/abductor/pad/proc/Retrieve(var/mob/living/carbon/human/target)
- flick("alien-pad", src)
- spawn(0)
- anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
- Warp(target)
-
-/obj/machinery/abductor/experiment
- name = "Experimental machinery"
- desc = "A human-sized coffin sporting wide array of automatic surgery tools"
- icon = 'icons/obj/abductor.dmi'
- icon_state = "experiment-open"
- density = 0
- anchored = 1
- state_open = 1
- var/points = 0
- var/list/history = new
- var/flash = " - || - "
- var/obj/machinery/abductor/console/console
-
-/obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user)
- if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target))
- return
- if(IsAbductor(target))
- return
- close_machine(target)
-
-/obj/machinery/abductor/experiment/allow_drop()
- return 0
-
-/obj/machinery/abductor/experiment/attack_hand(mob/user)
- if(..())
- return
-
- experimentUI(user)
-
-/obj/machinery/abductor/experiment/open_machine()
- if(!state_open && !panel_open)
- ..()
-
-/obj/machinery/abductor/experiment/close_machine(mob/target)
- for(var/mob/living/carbon/C in loc)
- if(IsAbductor(C))
- return
- if(state_open && !panel_open)
- ..(target)
-
-/obj/machinery/abductor/experiment/proc/dissection_icon(var/mob/living/carbon/human/H)
- var/icon/photo = null
- var/g = (H.gender == FEMALE) ? "f" : "m"
- if(!config.mutant_races || H.dna.species.use_skintones)
- photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.skin_tone]_[g]_s")
- else
- photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.dna.species.id]_[g]_s")
- photo.Blend("#[H.dna.mutant_color]", ICON_MULTIPLY)
-
- var/icon/eyes_s
- if(EYECOLOR in H.dna.species.specflags)
- eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s")
- eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY)
-
- var/datum/sprite_accessory/S
- S = hair_styles_list[H.hair_style]
- if(S && (HAIR in H.dna.species.specflags))
- var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s")
- hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY)
- eyes_s.Blend(hair_s, ICON_OVERLAY)
-
- S = facial_hair_styles_list[H.facial_hair_style]
- if(S && (FACEHAIR in H.dna.species.specflags))
- var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s")
- facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY)
- eyes_s.Blend(facial_s, ICON_OVERLAY)
-
- if(eyes_s)
- photo.Blend(eyes_s, ICON_OVERLAY)
-
- var/icon/splat = icon("icon" = 'icons/mob/dam_human.dmi',"icon_state" = "chest30")
- photo.Blend(splat,ICON_OVERLAY)
-
- return photo
-
-/obj/machinery/abductor/experiment/proc/experimentUI(mob/user)
- var/dat
- dat += " Experiment
"
- if(occupant)
- var/obj/item/weapon/photo/P = new
- P.photocreate(null, icon(dissection_icon(occupant), dir = SOUTH))
- user << browse_rsc(P.img, "dissection_img")
- dat += ""
- dat += " " //Avert your eyes
- dat += " | "
- dat += "Probe "
- dat += "Dissect "
- dat += "Analyze "
- dat += " |
"
- else
- dat += " Experiment "
-
- if(!occupant)
- dat += "Machine Unoccupied
"
- else
- dat += "Subject Status :
"
- dat += "[occupant.name] => "
- switch(occupant.stat)
- if(0)
- dat += "Conscious"
- if(1)
- dat += "Unconscious"
- else
- dat += "DEAD"
- dat += "
"
- dat += "[flash]"
- dat += "
"
- dat += "Scan"
- dat += "Close" : "open=1'>Open"]"
- var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300)
- popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
- popup.set_content(dat)
- popup.open()
-
-/obj/machinery/abductor/experiment/Topic(href, href_list)
- if(..() || usr == occupant)
- return
- usr.set_machine(src)
- if(href_list["refresh"])
- updateUsrDialog()
- return
- if(href_list["open"])
- open_machine()
- return
- if(href_list["close"])
- close_machine()
- return
- if(occupant && occupant.stat != DEAD)
- if(href_list["experiment"])
- flash = Experiment(occupant,href_list["experiment"])
- updateUsrDialog()
- add_fingerprint(usr)
-
-/obj/machinery/abductor/experiment/proc/Experiment(var/mob/occupant,var/type)
- var/mob/living/carbon/human/H = occupant
- var/point_reward = 0
- if(H in history)
- return "Specimen already in the database"
- if(H.stat == DEAD)
- say("Specimen deceased - please provide fresh sample.")
- return "Specimen Deceased"
- var/obj/item/gland/GlandTest = locate() in H
- if(!GlandTest)
- say("Experimental dissection not detected!")
- return "No glands detected!"
- if(H.mind != null || H.ckey != null)
- history += H
- say("Processing Specimen...")
- sleep(5)
- switch(text2num(type))
- if(1)
- H << "You feel violated."
- if(2)
- H << "You feel being sliced and put back together."
- if(3)
- H << "You feel under intense scrutiny."
- sleep(5)
- H << "Your mind snaps!"
- var/objtype = pick(typesof(/datum/objective/abductee/) - /datum/objective/abductee/)
- var/datum/objective/abductee/O = new objtype()
- H.mind.objectives += O
- var/obj_count = 1
- H << "Your current objectives:"
- for(var/datum/objective/objective in H.mind.objectives)
- H << "Objective #[obj_count]: [objective.explanation_text]"
- obj_count++
-
- for(var/obj/item/gland/G in H)
- G.Start()
- point_reward++
- if(point_reward > 0)
- open_machine()
- SendBack(H)
- playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
- points += point_reward
- return "Experiment Successfull! [point_reward] new data-points collected."
- else
- playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
- return "Experiment Failed! No replacement organ detected."
- else
- say("Brain Activity Nonexistant - Disposing Sample...")
- open_machine()
- SendBack(H)
- return "Specimen Braindead - Disposed"
- return "ERROR"
-
-
-/obj/machinery/abductor/experiment/proc/SendBack(var/mob/living/carbon/human/H)
- H.Sleeping(8)
- var/area/A
- if(console && console.pad && console.pad.teleport_target)
- A = console.pad.teleport_target
- else
- A = teleportlocs[pick(teleportlocs)]
- TeleportToArea(H,A)
-
-/obj/machinery/abductor/experiment/update_icon()
- if(state_open)
- icon_state = "experiment-open"
- else
- icon_state = "experiment"
-
-/obj/machinery/abductor/experiment/say_quote(text)
- return "beeps, \"[text]\""
-
-
-/obj/machinery/abductor/gland_dispenser
- name = "Replacement Organ Storage"
- desc = "A tank filled with replacement organs"
- icon = 'icons/obj/abductor.dmi'
- icon_state = "dispenser"
- density = 1
- anchored = 1
- var/list/gland_types
- var/list/gland_colors
- var/list/amounts
-
-/obj/machinery/abductor/gland_dispenser/proc/random_color()
- //TODO : replace with presets or spectrum
- return rgb(rand(0,255),rand(0,255),rand(0,255))
-
-/obj/machinery/abductor/gland_dispenser/New()
- gland_types = typesof(/obj/item/gland) - /obj/item/gland
- gland_types = shuffle(gland_types)
- gland_colors = new/list(gland_types.len)
- amounts = new/list(gland_types.len)
- for(var/i=1,i<=gland_types.len,i++)
- gland_colors[i] = random_color()
- amounts[i] = rand(1,5)
-
-/obj/machinery/abductor/gland_dispenser/attack_hand(var/mob/user as mob)
- if(..())
- return
- if(!IsAbductor(user))
- return
- user.set_machine(src)
- var/box_css = {"
- "}
- var/dat = ""
- var/item_count = 0
- for(var/i=1,i<=gland_colors.len,i++)
- item_count++
- var/g_color = gland_colors[i]
- var/amount = amounts[i]
- dat += "[amount]"
- if(item_count == 3) // Three boxes per line
- dat +=""
- item_count = 0
- var/datum/browser/popup = new(user, "glands", "Gland Dispenser", 200, 200)
- popup.add_head_content(box_css)
- popup.set_content(dat)
- popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
- popup.open()
- return
-
-/obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params)
- if(istype(W, /obj/item/gland))
- user.drop_item()
- W.loc = src
- for(var/i=1,i<=gland_colors.len,i++)
- if(gland_types[i] == W.type)
- amounts[i]++
-
-/obj/machinery/abductor/gland_dispenser/Topic(href, href_list)
- if(..())
- return
- if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))) || (istype(usr, /mob/living/silicon)))
- usr.set_machine(src)
- if(href_list["dispense"])
- Dispense(text2num(href_list["dispense"]))
- src.updateUsrDialog()
-
-/obj/machinery/abductor/gland_dispenser/proc/Dispense(var/count)
- if(amounts[count]>0)
- amounts[count]--
- var/T = gland_types[count]
- new T(get_turf(src))
\ No newline at end of file
diff --git a/code/game/gamemodes/abduction/abduction_surgery.dm b/code/game/gamemodes/abduction/abduction_surgery.dm
index 62308897062..a618e1d2544 100644
--- a/code/game/gamemodes/abduction/abduction_surgery.dm
+++ b/code/game/gamemodes/abduction/abduction_surgery.dm
@@ -5,6 +5,7 @@
location = "chest"
user_species_restricted = 1
user_species_ids = list("abductor")
+ ignore_clothes = 1
/datum/surgery_step/extract_organ
accept_hand = 1
@@ -17,16 +18,16 @@
if(I.type in organ_types)
IC = I
break
- user.visible_message("[user] starts to remove [target]'s organs.")
+ user.visible_message("[user] starts to remove [target]'s organs.", "You start to remove [target]'s organs...")
/datum/surgery_step/extract_organ/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(IC)
- user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!")
+ user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!", "You pull [IC] out of [target]'s [target_zone].")
user.put_in_hands(IC)
target.internal_organs -= IC
return 1
else
- user.visible_message("[user] doesn't find anything in [target]'s [target_zone].")
+ user << "You don't find anything in [target]'s [target_zone]!"
return 0
/datum/surgery_step/gland_insert
@@ -34,10 +35,10 @@
time = 32
/datum/surgery_step/gland_insert/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] starts to insert [tool] into [target].")
+ user.visible_message("[user] starts to insert [tool] into [target].", "You start to insert [tool] into [target]...")
/datum/surgery_step/gland_insert/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] inserts [tool] into [target].")
+ user.visible_message("[user] inserts [tool] into [target].", "You insert [tool] into [target].")
user.drop_item()
var/obj/item/gland/gland = tool
gland.Inject(target)
diff --git a/code/game/gamemodes/abduction/gland.dm b/code/game/gamemodes/abduction/gland.dm
index 4a0110ac30b..b20e7c98b85 100644
--- a/code/game/gamemodes/abduction/gland.dm
+++ b/code/game/gamemodes/abduction/gland.dm
@@ -3,10 +3,9 @@
desc = "Eww"
icon = 'icons/obj/abductor.dmi'
icon_state = "gland"
- var/cooldown_low = 30
- var/cooldown_high = 30
- var/cooldown_current = 0
- var/cooldown = 0
+ var/cooldown_low = 300
+ var/cooldown_high = 300
+ var/next_activation = 0
var/uses // -1 For inifinite
var/active = 0
var/mob/living/carbon/human/host
@@ -19,6 +18,7 @@
/obj/item/gland/proc/Start()
active = 1
+ next_activation = world.time + rand(cooldown_low,cooldown_high)
SSobj.processing |= src
/obj/item/gland/proc/Inject(var/mob/living/carbon/human/target)
@@ -30,16 +30,14 @@
if(!active)
SSobj.processing.Remove(src)
return
- cooldown++
- if(cooldown >= cooldown_current)
+ if(next_activation <= world.time)
//This gives a chance to transplant the gland active into someone else if you're fast
if(!HostCheck())
active = 0
return
activate()
uses--
- cooldown = 0
- cooldown_current = rand(cooldown_low,cooldown_high)
+ next_activation = world.time + rand(cooldown_low,cooldown_high)
if(uses == 0)
active = 0
@@ -47,8 +45,8 @@
return
/obj/item/gland/heals
- cooldown_low = 20
- cooldown_high = 40
+ cooldown_low = 200
+ cooldown_high = 400
uses = -1
icon_state = "health"
@@ -59,8 +57,8 @@ obj/item/gland/heals/activate()
host.adjustFireLoss(-20)
/obj/item/gland/slime
- cooldown_low = 60
- cooldown_high = 120
+ cooldown_low = 600
+ cooldown_high = 1200
uses = -1
icon_state = "slime"
@@ -82,8 +80,8 @@ obj/item/gland/slime/activate()
Slime.Leader = host
/obj/item/gland/mindshock
- cooldown_low = 30
- cooldown_high = 30
+ cooldown_low = 300
+ cooldown_high = 300
uses = -1
icon_state = "mindshock"
@@ -98,9 +96,9 @@ obj/item/gland/slime/activate()
H.confused += 20
/obj/item/gland/pop
- cooldown_low = 120
- cooldown_high = 180
- uses = 5
+ cooldown_low = 900
+ cooldown_high = 1800
+ uses = 6
icon_state = "species"
/obj/item/gland/pop/activate()
@@ -111,8 +109,8 @@ obj/item/gland/slime/activate()
return
/obj/item/gland/ventcrawling
- cooldown_low = 180
- cooldown_high = 240
+ cooldown_low = 1800
+ cooldown_high = 2400
uses = 1
icon_state = "vent"
@@ -124,8 +122,8 @@ obj/item/gland/slime/activate()
/obj/item/gland/viral
- cooldown_low = 180
- cooldown_high = 240
+ cooldown_low = 1800
+ cooldown_high = 2400
uses = 1
icon_state = "viral"
@@ -140,18 +138,17 @@ obj/item/gland/slime/activate()
/obj/item/gland/emp //TODO : Replace with something more interesting
- cooldown_low = 90
- cooldown_high = 160
- uses = 5
+ cooldown_low = 900
+ cooldown_high = 1600
+ uses = 10
icon_state = "emp"
/obj/item/gland/emp/activate()
empulse(get_turf(host), 2, 5, 1)
-
/obj/item/gland/spiderman
- cooldown_low = 90
- cooldown_high = 160
+ cooldown_low = 450
+ cooldown_high = 900
uses = 10
icon_state = "spider"
@@ -161,12 +158,98 @@ obj/item/gland/slime/activate()
new /obj/effect/spider/spiderling(host.loc)
/obj/item/gland/egg
- cooldown_low = 60
- cooldown_high = 90
+ cooldown_low = 300
+ cooldown_high = 600
uses = -1
icon_state = "egg"
/obj/item/gland/egg/activate()
var/obj/item/weapon/reagent_containers/food/snacks/egg/egg = new(host.loc)
egg.reagents.add_reagent("sacid",20)
- egg.desc += " It smells bad."
\ No newline at end of file
+ egg.desc += " It smells bad."
+
+/obj/item/gland/bloody
+ cooldown_low = 200
+ cooldown_high = 400
+ uses = -1
+
+/obj/item/gland/bloody/activate()
+ host.adjustBruteLoss(15)
+
+ host.visible_message("[host] skin erupts with blood!",\
+ "Your skin erupts with blood! It hurts!")
+
+ for(var/turf/T in oview(3,host)) //Make this respect walls and such
+ T.add_blood_floor(host)
+ for(var/mob/living/carbon/human/H in oview(3,host)) //Blood decals for simple animals would be neat. aka Carp with blood on it.
+ if(H.wear_suit)
+ H.wear_suit.add_blood(host)
+ H.update_inv_wear_suit(0)
+ else if(H.w_uniform)
+ H.w_uniform.add_blood(host)
+ H.update_inv_w_uniform(0)
+
+/obj/item/gland/bodysnatch
+ cooldown_low = 600
+ cooldown_high = 600
+ uses = 1
+
+/obj/item/gland/bodysnatch/activate()
+ //spawn cocoon with clone greytide snpc inside
+ var/obj/effect/cocoon/abductor/C = new (get_turf(host))
+ C.Copy(host)
+ C.Start()
+ host.gib()
+ return
+
+/obj/effect/cocoon/abductor
+ name = "Slimy cocoon"
+ desc = "You can see something moving inside"
+ icon = 'icons/effects/effects.dmi'
+ icon_state = "cocoon_large3"
+ color = rgb(10,120,10)
+ density = 1
+ var/hatch_time = 0
+
+/obj/effect/cocoon/abductor/proc/Copy(var/mob/living/carbon/human/H)
+ var/mob/living/carbon/human/interactive/greytide/clone = new(src)
+ hardset_dna(clone,H.dna.uni_identity,H.dna.struc_enzymes,H.real_name, H.dna.blood_type, H.dna.species.type, H.dna.mutant_color)
+
+ //There's no define for this / get all items ?
+ var/list/slots = list(slot_back,slot_w_uniform,slot_wear_suit,\
+ slot_wear_mask,slot_head,slot_shoes,slot_gloves,slot_ears,\
+ slot_glasses,slot_belt,slot_s_store,slot_l_store,slot_r_store,slot_wear_id)
+
+ for(var/slot in slots)
+ var/obj/item/I = H.get_item_by_slot(slot)
+ if(I)
+ clone.equip_to_slot_if_possible(I,slot)
+
+/obj/effect/cocoon/abductor/proc/Start()
+ hatch_time = world.time + 600
+ SSobj.processing |= src
+
+/obj/effect/cocoon/abductor/process()
+ if(world.time > hatch_time)
+ SSobj.processing.Remove(src)
+ for(var/mob/M in contents)
+ src.visible_message("[src] hatches!")
+ M.loc = src.loc
+ qdel(src)
+
+/obj/item/gland/plasma
+ cooldown_low = 1200
+ cooldown_high = 2400
+ uses = 1
+
+/obj/item/gland/plasma/activate()
+ host << "You feel bloated."
+ sleep(150)
+ host << "Your stomach feels about to explode!"
+ sleep(50)
+ host.visible_message("[host] explodes in a cloud of plasma!")
+ var/turf/simulated/T = get_turf(host)
+ if(istype(T))
+ T.atmos_spawn_air(SPAWN_TOXINS|SPAWN_20C,300)
+ host.gib()
+ return
\ No newline at end of file
diff --git a/code/game/gamemodes/abduction/machinery/camera.dm b/code/game/gamemodes/abduction/machinery/camera.dm
new file mode 100644
index 00000000000..52773d60e1a
--- /dev/null
+++ b/code/game/gamemodes/abduction/machinery/camera.dm
@@ -0,0 +1,142 @@
+/obj/machinery/computer/camera_advanced/abductor
+ name = "Human Observation Console"
+ var/team = 0
+ networks = list("SS13","Abductor")
+ off_action = new/datum/action/camera_off/abductor //specific datum
+ var/datum/action/teleport_in/tele_in_action = new
+ var/datum/action/teleport_out/tele_out_action = new
+ var/datum/action/teleport_self/tele_self_action = new
+ var/datum/action/vest_mode_swap/vest_mode_action = new
+ var/datum/action/vest_disguise_swap/vest_disguise_action = new
+ var/obj/machinery/abductor/console/console
+
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "camera"
+
+/obj/machinery/computer/camera_advanced/abductor/CreateEye()
+ ..()
+ eyeobj.visible_icon = 1
+ eyeobj.icon = 'icons/obj/abductor.dmi'
+ eyeobj.icon_state = "camera_target"
+
+/obj/machinery/computer/camera_advanced/abductor/GrantActions(var/mob/living/carbon/user)
+ off_action.target = user
+ off_action.Grant(user)
+
+ jump_action.target = user
+ jump_action.Grant(user)
+ //TODO : add null checks
+ tele_in_action.target = console.pad
+ tele_in_action.Grant(user)
+
+ tele_out_action.target = console
+ tele_out_action.Grant(user)
+
+ tele_self_action.target = console.pad
+ tele_self_action.Grant(user)
+
+ vest_mode_action.target = console
+ vest_mode_action.Grant(user)
+
+ vest_disguise_action.target = console
+ vest_disguise_action.Grant(user)
+
+/obj/machinery/computer/camera_advanced/abductor/proc/IsAbductor(var/mob/living/carbon/human/H)
+ return H.dna.species.id == "abductor"
+
+/obj/machinery/computer/camera_advanced/abductor/proc/IsScientist(var/mob/living/carbon/human/H)
+ var/datum/species/abductor/S = H.dna.species
+ return S.scientist
+
+/obj/machinery/computer/camera_advanced/abductor/attack_hand(var/mob/user as mob)
+ if(!iscarbon(user) || !IsAbductor(user))
+ return
+ return ..()
+
+/datum/action/camera_off/abductor/Activate()
+ if(!target || !iscarbon(target))
+ return
+ var/mob/living/carbon/C = target
+ var/mob/camera/aiEye/remote/remote_eye = C.remote_control
+ var/obj/machinery/computer/camera_advanced/abductor/origin = remote_eye.origin
+ C.remote_view = 0
+ origin.current_user = null
+ origin.jump_action.Remove(C)
+ origin.tele_in_action.Remove(C)
+ origin.tele_out_action.Remove(C)
+ origin.tele_self_action.Remove(C)
+ origin.vest_mode_action.Remove(C)
+ origin.vest_disguise_action.Remove(C)
+ if(C.client)
+ C.client.perspective = MOB_PERSPECTIVE
+ C.client.eye = src
+ C.client.images -= remote_eye.user_image
+ C.remote_control = null
+ C.unset_machine()
+ src.Remove(C)
+
+
+/datum/action/teleport_in
+ name = "Send To"
+ action_type = AB_INNATE
+ button_icon_state = "beam_down"
+
+/datum/action/teleport_in/Activate()
+ if(!target || !iscarbon(owner))
+ return
+ var/mob/living/carbon/human/C = owner
+ var/mob/camera/aiEye/remote/remote_eye = C.remote_control
+ var/obj/machinery/abductor/pad/P = target
+
+ if(cameranet.checkTurfVis(remote_eye.loc))
+ P.PadToLoc(remote_eye.loc)
+
+/datum/action/teleport_out
+ name = "Retrieve"
+ action_type = AB_INNATE
+ button_icon_state = "beam_up"
+
+/datum/action/teleport_out/Activate()
+ if(!target || !iscarbon(owner))
+ return
+ var/obj/machinery/abductor/console/console = target
+
+ console.TeleporterRetrieve()
+
+/datum/action/teleport_self
+ name = "Send Self"
+ action_type = AB_INNATE
+ button_icon_state = "beam_down"
+
+/datum/action/teleport_self/Activate()
+ if(!target || !iscarbon(owner))
+ return
+ var/mob/living/carbon/human/C = owner
+ var/mob/camera/aiEye/remote/remote_eye = C.remote_control
+ var/obj/machinery/abductor/pad/P = target
+
+ if(cameranet.checkTurfVis(remote_eye.loc))
+ P.MobToLoc(remote_eye.loc,C)
+
+/datum/action/vest_mode_swap
+ name = "Switch Vest Mode"
+ action_type = AB_INNATE
+ button_icon_state = "vest_mode"
+
+/datum/action/vest_mode_swap/Activate()
+ if(!target || !iscarbon(owner))
+ return
+ var/obj/machinery/abductor/console/console = target
+ console.FlipVest()
+
+
+/datum/action/vest_disguise_swap
+ name = "Switch Vest Disguise"
+ action_type = AB_INNATE
+ button_icon_state = "vest_disguise"
+
+/datum/action/vest_disguise_swap/Activate()
+ if(!target || !iscarbon(owner))
+ return
+ var/obj/machinery/abductor/console/console = target
+ console.SelectDisguise(remote=1)
diff --git a/code/game/gamemodes/abduction/machinery/console.dm b/code/game/gamemodes/abduction/machinery/console.dm
new file mode 100644
index 00000000000..bfaeefa3e2c
--- /dev/null
+++ b/code/game/gamemodes/abduction/machinery/console.dm
@@ -0,0 +1,184 @@
+//Common
+
+/obj/machinery/abductor
+ var/team = 0
+
+/obj/machinery/abductor/proc/IsAbductor(var/mob/living/carbon/human/H)
+ if(!H.dna)
+ return 0
+ return H.dna.species.id == "abductor"
+
+/obj/machinery/abductor/proc/IsAgent(var/mob/living/carbon/human/H)
+ if(H.dna.species.id == "abductor")
+ var/datum/species/abductor/S = H.dna.species
+ return S.agent
+ return 0
+
+/obj/machinery/abductor/proc/IsScientist(var/mob/living/carbon/human/H)
+ if(H.dna.species.id == "abductor")
+ var/datum/species/abductor/S = H.dna.species
+ return S.scientist
+ return 0
+
+//Console
+
+/obj/machinery/abductor/console
+ name = "Abductor console"
+ desc = "Ship command center."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "console"
+ density = 1
+ anchored = 1.0
+ var/obj/item/device/abductor/gizmo/gizmo
+ var/obj/item/clothing/suit/armor/abductor/vest/vest
+ var/obj/machinery/abductor/experiment/experiment
+ var/obj/machinery/abductor/pad/pad
+ var/obj/machinery/computer/camera_advanced/abductor/camera
+ var/list/datum/icon_snapshot/disguises = list()
+
+/obj/machinery/abductor/console/attack_hand(var/mob/user as mob)
+ if(..())
+ return
+ if(!IsAbductor(user))
+ user << "You start mashing alien buttons at random!"
+ if(do_after(user,100))
+ TeleporterSend()
+ return
+ user.set_machine(src)
+ var/dat = ""
+ dat += " Abductsoft 3000
"
+
+ if(experiment != null)
+ var/points = experiment.points
+ dat += "Collected Samples : [points]
"
+ else
+ dat += "NO EXPERIMENT MACHINE DETECTED
"
+
+ if(pad!=null)
+ dat += "Emergency Teleporter System."
+ dat += "Consider using primary observation console first."
+ dat += "Activate Teleporter
"
+ dat += "Set Teleporter
"
+ if(gizmo!=null && gizmo.marked!=null)
+ dat += "Retrieve Mark
"
+ else
+ dat += "Retrieve Mark
"
+ else
+ dat += "NO TELEPAD DETECTED"
+
+ if(vest!=null)
+ dat += " Agent Vest Mode
"
+ var/mode = vest.mode
+ if(mode == VEST_STEALTH)
+ dat += "Combat"
+ dat += "Stealth"
+ else
+ dat += "Combat"
+ dat += "Stealth"
+
+ dat+="
"
+ dat += "Select Agent Vest Disguise
"
+ else
+ dat += "NO AGENT VEST DETECTED"
+ var/datum/browser/popup = new(user, "computer", "Abductor Console", 400, 500)
+ popup.set_content(dat)
+ popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
+ popup.open()
+ return
+
+/obj/machinery/abductor/console/Topic(href, href_list)
+ if(..())
+ return
+
+ usr.set_machine(src)
+ if(href_list["teleporter_set"])
+ TeleporterSet()
+ else if(href_list["teleporter_send"])
+ TeleporterSend()
+ else if(href_list["teleporter_retrieve"])
+ TeleporterRetrieve()
+ else if(href_list["flip_vest"])
+ FlipVest()
+ else if(href_list["select_disguise"])
+ SelectDisguise()
+ src.updateUsrDialog()
+
+/obj/machinery/abductor/console/proc/TeleporterSet()
+ var/A = null
+ A = input("Select area to teleport to", "Teleport", A) in teleportlocs
+ if(pad!=null && in_range(usr,src))
+ pad.teleport_target = teleportlocs[A]
+ return
+
+/obj/machinery/abductor/console/proc/TeleporterRetrieve()
+ if(gizmo!=null && pad!=null && gizmo.marked)
+ pad.Retrieve(gizmo.marked)
+ return
+
+/obj/machinery/abductor/console/proc/TeleporterSend()
+ if(pad!=null)
+ pad.Send()
+ return
+
+/obj/machinery/abductor/console/proc/FlipVest()
+ if(vest!=null)
+ vest.flip_mode()
+ return
+
+/obj/machinery/abductor/console/proc/SelectDisguise(var/remote=0)
+ var/list/entries = list()
+ var/tempname
+ var/datum/icon_snapshot/temp
+ for(var/i = 1; i <= disguises.len; i++)
+ temp = disguises[i]
+ tempname = temp.name
+ entries["[tempname]"] = disguises[i]
+ var/entry_name = input( "Choose Disguise", "Disguise") in entries
+ var/datum/icon_snapshot/chosen = entries[entry_name]
+ if(chosen && (remote || in_range(usr,src)))
+ vest.SetDisguise(chosen)
+ return
+
+/obj/machinery/abductor/console/proc/Initialize()
+
+ for(var/obj/machinery/abductor/pad/p in machines)
+ if(p.team == team)
+ pad = p
+ break
+
+ for(var/obj/machinery/abductor/experiment/e in machines)
+ if(e.team == team)
+ experiment = e
+ e.console = src
+
+ for(var/obj/machinery/computer/camera_advanced/abductor/c in machines)
+ if(c.team == team)
+ camera = c
+ c.console = src
+
+/obj/machinery/abductor/console/proc/AddSnapshot(var/mob/living/carbon/human/target)
+ var/datum/icon_snapshot/entry = new
+ entry.name = target.name
+ entry.icon = target.icon
+ entry.icon_state = target.icon_state
+ entry.overlays = target.get_overlays_copy(list(L_HAND_LAYER,R_HAND_LAYER))
+ for(var/i=1,i<=disguises.len,i++)
+ var/datum/icon_snapshot/temp = disguises[i]
+ if(temp.name == entry.name)
+ disguises[i] = entry
+ return
+ disguises.Add(entry)
+ return
+
+/obj/machinery/abductor/console/attackby(O as obj, user as mob, params)
+ if(istype(O, /obj/item/device/abductor/gizmo))
+ var/obj/item/device/abductor/gizmo/G = O
+ user << "You link the tool to the console."
+ gizmo = G
+ G.console = src
+ else if(istype(O, /obj/item/clothing/suit/armor/abductor/vest))
+ var/obj/item/clothing/suit/armor/abductor/vest/V = O
+ user << "You link the vest to the console."
+ vest = V
+ else
+ ..()
\ No newline at end of file
diff --git a/code/game/gamemodes/abduction/machinery/dispenser.dm b/code/game/gamemodes/abduction/machinery/dispenser.dm
new file mode 100644
index 00000000000..d346e0366a5
--- /dev/null
+++ b/code/game/gamemodes/abduction/machinery/dispenser.dm
@@ -0,0 +1,82 @@
+/obj/machinery/abductor/gland_dispenser
+ name = "Replacement Organ Storage"
+ desc = "A tank filled with replacement organs"
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "dispenser"
+ density = 1
+ anchored = 1
+ var/list/gland_types
+ var/list/gland_colors
+ var/list/amounts
+
+/obj/machinery/abductor/gland_dispenser/proc/random_color()
+ //TODO : replace with presets or spectrum
+ return rgb(rand(0,255),rand(0,255),rand(0,255))
+
+/obj/machinery/abductor/gland_dispenser/New()
+ gland_types = typesof(/obj/item/gland) - /obj/item/gland
+ gland_types = shuffle(gland_types)
+ gland_colors = new/list(gland_types.len)
+ amounts = new/list(gland_types.len)
+ for(var/i=1,i<=gland_types.len,i++)
+ gland_colors[i] = random_color()
+ amounts[i] = rand(1,5)
+
+/obj/machinery/abductor/gland_dispenser/attack_hand(var/mob/user as mob)
+ if(..())
+ return
+ if(!IsAbductor(user))
+ return
+ user.set_machine(src)
+ var/box_css = {"
+ "}
+ var/dat = ""
+ var/item_count = 0
+ for(var/i=1,i<=gland_colors.len,i++)
+ item_count++
+ var/g_color = gland_colors[i]
+ var/amount = amounts[i]
+ dat += "[amount]"
+ if(item_count == 3) // Three boxes per line
+ dat +=""
+ item_count = 0
+ var/datum/browser/popup = new(user, "glands", "Gland Dispenser", 200, 200)
+ popup.add_head_content(box_css)
+ popup.set_content(dat)
+ popup.set_title_image(user.browse_rsc_icon(src.icon, src.icon_state))
+ popup.open()
+ return
+
+/obj/machinery/abductor/gland_dispenser/attackby(obj/item/weapon/W, mob/user, params)
+ if(istype(W, /obj/item/gland))
+ user.drop_item()
+ W.loc = src
+ for(var/i=1,i<=gland_colors.len,i++)
+ if(gland_types[i] == W.type)
+ amounts[i]++
+
+/obj/machinery/abductor/gland_dispenser/Topic(href, href_list)
+ if(..())
+ return
+ usr.set_machine(src)
+
+ if(href_list["dispense"])
+ Dispense(text2num(href_list["dispense"]))
+ src.updateUsrDialog()
+
+/obj/machinery/abductor/gland_dispenser/proc/Dispense(var/count)
+ if(amounts[count]>0)
+ amounts[count]--
+ var/T = gland_types[count]
+ new T(get_turf(src))
\ No newline at end of file
diff --git a/code/game/gamemodes/abduction/machinery/experiment.dm b/code/game/gamemodes/abduction/machinery/experiment.dm
new file mode 100644
index 00000000000..371011323df
--- /dev/null
+++ b/code/game/gamemodes/abduction/machinery/experiment.dm
@@ -0,0 +1,204 @@
+/obj/machinery/abductor/experiment
+ name = "Experimental machinery"
+ desc = "A human-sized coffin sporting wide array of automatic surgery tools"
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "experiment-open"
+ density = 0
+ anchored = 1
+ state_open = 1
+ var/points = 0
+ var/list/history = new
+ var/flash = " - || - "
+ var/obj/machinery/abductor/console/console
+
+/obj/machinery/abductor/experiment/MouseDrop_T(mob/target, mob/user)
+ if(user.stat || user.lying || !Adjacent(user) || !target.Adjacent(user) || !ishuman(target))
+ return
+ if(IsAbductor(target))
+ return
+ close_machine(target)
+
+/obj/machinery/abductor/experiment/allow_drop()
+ return 0
+
+/obj/machinery/abductor/experiment/attack_hand(mob/user)
+ if(..())
+ return
+
+ experimentUI(user)
+
+/obj/machinery/abductor/experiment/open_machine()
+ if(!state_open && !panel_open)
+ ..()
+
+/obj/machinery/abductor/experiment/close_machine(mob/target)
+ for(var/mob/living/carbon/C in loc)
+ if(IsAbductor(C))
+ return
+ if(state_open && !panel_open)
+ ..(target)
+
+/obj/machinery/abductor/experiment/proc/dissection_icon(var/mob/living/carbon/human/H)
+ var/icon/photo = null
+ var/g = (H.gender == FEMALE) ? "f" : "m"
+ if(!config.mutant_races || H.dna.species.use_skintones)
+ photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.skin_tone]_[g]_s")
+ else
+ photo = icon("icon" = 'icons/mob/human.dmi', "icon_state" = "[H.dna.species.id]_[g]_s")
+ photo.Blend("#[H.dna.mutant_color]", ICON_MULTIPLY)
+
+ var/icon/eyes_s
+ if(EYECOLOR in H.dna.species.specflags)
+ eyes_s = icon("icon" = 'icons/mob/human_face.dmi', "icon_state" = "[H.dna.species.eyes]_s")
+ eyes_s.Blend("#[H.eye_color]", ICON_MULTIPLY)
+
+ var/datum/sprite_accessory/S
+ S = hair_styles_list[H.hair_style]
+ if(S && (HAIR in H.dna.species.specflags))
+ var/icon/hair_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s")
+ hair_s.Blend("#[H.hair_color]", ICON_MULTIPLY)
+ eyes_s.Blend(hair_s, ICON_OVERLAY)
+
+ S = facial_hair_styles_list[H.facial_hair_style]
+ if(S && (FACEHAIR in H.dna.species.specflags))
+ var/icon/facial_s = icon("icon" = S.icon, "icon_state" = "[S.icon_state]_s")
+ facial_s.Blend("#[H.facial_hair_color]", ICON_MULTIPLY)
+ eyes_s.Blend(facial_s, ICON_OVERLAY)
+
+ if(eyes_s)
+ photo.Blend(eyes_s, ICON_OVERLAY)
+
+ var/icon/splat = icon("icon" = 'icons/mob/dam_human.dmi',"icon_state" = "chest30")
+ photo.Blend(splat,ICON_OVERLAY)
+
+ return photo
+
+/obj/machinery/abductor/experiment/proc/experimentUI(mob/user)
+ var/dat
+ dat += " Experiment
"
+ if(occupant)
+ var/obj/item/weapon/photo/P = new
+ P.photocreate(null, icon(dissection_icon(occupant), dir = SOUTH))
+ user << browse_rsc(P.img, "dissection_img")
+ dat += ""
+ dat += " " //Avert your eyes
+ dat += " | "
+ dat += "Probe "
+ dat += "Dissect "
+ dat += "Analyze "
+ dat += " |
"
+ else
+ dat += " Experiment "
+
+ if(!occupant)
+ dat += "Machine Unoccupied
"
+ else
+ dat += "Subject Status :
"
+ dat += "[occupant.name] => "
+ switch(occupant.stat)
+ if(0)
+ dat += "Conscious"
+ if(1)
+ dat += "Unconscious"
+ else
+ dat += "DEAD"
+ dat += "
"
+ dat += "[flash]"
+ dat += "
"
+ dat += "Scan"
+ dat += "Close" : "open=1'>Open"]"
+ var/datum/browser/popup = new(user, "experiment", "Probing Console", 300, 300)
+ popup.set_title_image(user.browse_rsc_icon(icon, icon_state))
+ popup.set_content(dat)
+ popup.open()
+
+/obj/machinery/abductor/experiment/Topic(href, href_list)
+ if(..() || usr == occupant)
+ return
+ usr.set_machine(src)
+ if(href_list["refresh"])
+ updateUsrDialog()
+ return
+ if(href_list["open"])
+ open_machine()
+ return
+ if(href_list["close"])
+ close_machine()
+ return
+ if(occupant && occupant.stat != DEAD)
+ if(href_list["experiment"])
+ flash = Experiment(occupant,href_list["experiment"])
+ updateUsrDialog()
+ add_fingerprint(usr)
+
+/obj/machinery/abductor/experiment/proc/Experiment(var/mob/occupant,var/type)
+ var/mob/living/carbon/human/H = occupant
+ var/point_reward = 0
+ if(H in history)
+ return "Specimen already in the database"
+ if(H.stat == DEAD)
+ say("Specimen deceased - please provide fresh sample.")
+ return "Specimen Deceased"
+ var/obj/item/gland/GlandTest = locate() in H
+ if(!GlandTest)
+ say("Experimental dissection not detected!")
+ return "No glands detected!"
+ if(H.mind != null || H.ckey != null)
+ history += H
+ say("Processing Specimen...")
+ sleep(5)
+ switch(text2num(type))
+ if(1)
+ H << "You feel violated."
+ if(2)
+ H << "You feel being sliced and put back together."
+ if(3)
+ H << "You feel under intense scrutiny."
+ sleep(5)
+ H << "Your mind snaps!"
+ var/objtype = pick(typesof(/datum/objective/abductee/) - /datum/objective/abductee/)
+ var/datum/objective/abductee/O = new objtype()
+ H.mind.objectives += O
+ var/obj_count = 1
+ H << "Your current objectives:"
+ for(var/datum/objective/objective in H.mind.objectives)
+ H << "Objective #[obj_count]: [objective.explanation_text]"
+ obj_count++
+
+ for(var/obj/item/gland/G in H)
+ G.Start()
+ point_reward++
+ if(point_reward > 0)
+ open_machine()
+ SendBack(H)
+ playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
+ points += point_reward
+ return "Experiment Successfull! [point_reward] new data-points collected."
+ else
+ playsound(src.loc, 'sound/machines/buzz-sigh.ogg', 50, 1)
+ return "Experiment Failed! No replacement organ detected."
+ else
+ say("Brain Activity Nonexistant - Disposing Sample...")
+ open_machine()
+ SendBack(H)
+ return "Specimen Braindead - Disposed"
+ return "ERROR"
+
+
+/obj/machinery/abductor/experiment/proc/SendBack(var/mob/living/carbon/human/H)
+ H.Sleeping(8)
+ var/area/A
+ if(console && console.pad && console.pad.teleport_target)
+ A = console.pad.teleport_target
+ else
+ A = teleportlocs[pick(teleportlocs)]
+ TeleportToArea(H,A)
+
+/obj/machinery/abductor/experiment/update_icon()
+ if(state_open)
+ icon_state = "experiment-open"
+ else
+ icon_state = "experiment"
+
+/obj/machinery/abductor/experiment/say_quote(text)
+ return "beeps, \"[text]\""
\ No newline at end of file
diff --git a/code/game/gamemodes/abduction/machinery/pad.dm b/code/game/gamemodes/abduction/machinery/pad.dm
new file mode 100644
index 00000000000..081f746a085
--- /dev/null
+++ b/code/game/gamemodes/abduction/machinery/pad.dm
@@ -0,0 +1,86 @@
+/obj/machinery/abductor/pad
+ name = "Alien Telepad"
+ desc = "Use this to transport to and from human habitat"
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "alien-pad-idle"
+ anchored = 1
+ var/area/teleport_target
+
+/obj/machinery/abductor/proc/TeleportToArea(var/mob/living/target,var/area/thearea)
+ var/list/L = list()
+ for(var/turf/T in get_area_turfs(thearea.type))
+ if(!T.density)
+ var/clear = 1
+ for(var/obj/O in T)
+ if(O.density)
+ clear = 0
+ break
+ if(clear)
+ L+=T
+ if(!L.len)
+ return
+
+ if(target && target.buckled)
+ target.buckled.unbuckle_mob()
+
+ var/list/tempL = L
+ var/attempt = null
+ var/success = 0
+ while(tempL.len)
+ attempt = pick(tempL)
+ target.Move(attempt)
+ if(get_turf(target) == attempt)
+ success = 1
+ break
+ else
+ tempL.Remove(attempt)
+ if(!success)
+ target.loc = pick(L)
+
+/obj/machinery/abductor/pad/proc/Warp(var/mob/living/target)
+ target.Move(src.loc)
+
+/obj/machinery/abductor/pad/proc/Send()
+ if(teleport_target == null)
+ teleport_target = teleportlocs[pick(teleportlocs)]
+ flick("alien-pad", src)
+ for(var/mob/living/target in src.loc)
+ TeleportToArea(target,teleport_target)
+ spawn(0)
+ anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+
+/obj/machinery/abductor/pad/proc/Retrieve(var/mob/living/carbon/human/target)
+ flick("alien-pad", src)
+ spawn(0)
+ anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+ Warp(target)
+
+/obj/machinery/abductor/pad/proc/MobToLoc(var/place,var/mob/living/target)
+ var/obj/effect/teleport_abductor/F = new(place)
+ var/datum/effect/effect/system/spark_spread/S = new
+ S.set_up(10,0,place)
+ S.start()
+ sleep(80)
+ qdel(F)
+ flick("alien-pad", src)
+ target.forceMove(place)
+ anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+
+/obj/machinery/abductor/pad/proc/PadToLoc(var/place)
+ var/obj/effect/teleport_abductor/F = new(place)
+ var/datum/effect/effect/system/spark_spread/S = new
+ S.set_up(10,0,place)
+ S.start()
+ sleep(80)
+ qdel(F)
+ flick("alien-pad", src)
+ for(var/mob/living/target in src.loc)
+ target.forceMove(place)
+ spawn(0)
+ anim(target.loc,target,'icons/mob/mob.dmi',,"uncloak",,target.dir)
+
+
+/obj/effect/teleport_abductor
+ name = "Huh"
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "teleport"
diff --git a/code/game/gamemodes/blob/blob.dm b/code/game/gamemodes/blob/blob.dm
index 207805d235b..ded9ed324f2 100644
--- a/code/game/gamemodes/blob/blob.dm
+++ b/code/game/gamemodes/blob/blob.dm
@@ -15,6 +15,7 @@ var/list/blob_nodes = list()
required_enemies = 1
recommended_enemies = 1
+ round_ends_with_antag_death = 1
restricted_jobs = list("Cyborg", "AI")
var/declared = 0
diff --git a/code/game/gamemodes/blob/blob_finish.dm b/code/game/gamemodes/blob/blob_finish.dm
index aec57627778..c0987cabce1 100644
--- a/code/game/gamemodes/blob/blob_finish.dm
+++ b/code/game/gamemodes/blob/blob_finish.dm
@@ -1,8 +1,4 @@
/datum/game_mode/blob/check_finished()
- if(replacementmode && round_converted == 2)
- return replacementmode.check_finished()
- if(round_converted)
- return ..()
if(infected_crew.len > burst)//Some blobs have yet to burst
return 0
if(blobwincount <= blobs.len)//Blob took over
@@ -14,11 +10,6 @@
SSshuttle.emergency.mode = SHUTTLE_DOCKED
SSshuttle.emergency.timer = world.time
priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
-
- if(config.midround_antag["blob"])
- round_converted = convert_roundtype()
- if(!round_converted)
- return 1
return ..()
return 1
if(station_was_nuked)//Nuke went off
diff --git a/code/game/gamemodes/blob/powers.dm b/code/game/gamemodes/blob/powers.dm
index 43c17da6211..e9d0eb6217c 100644
--- a/code/game/gamemodes/blob/powers.dm
+++ b/code/game/gamemodes/blob/powers.dm
@@ -2,7 +2,7 @@
/mob/camera/blob/proc/can_buy(var/cost = 15)
if(blob_points < cost)
- src << "You cannot afford this."
+ src << "You cannot afford this!"
return 0
add_points(-cost)
return 1
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index 17e34ff67e9..c8d581d08e9 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -88,9 +88,8 @@ var/list/possible_changeling_IDs = list("Alpha","Beta","Gamma","Delta","Epsilon"
if(character.client.prefs.be_special & BE_CHANGELING)
if(!jobban_isbanned(character.client, "changeling") && !jobban_isbanned(character.client, "Syndicate"))
if(age_check(character.client))
- if(!(character.job in ticker.mode.restricted_jobs))
+ if(!(character.job in restricted_jobs))
character.mind.make_Changling()
- ..()
/datum/game_mode/proc/forge_changeling_objectives(var/datum/mind/changeling)
//OBJECTIVES - random traitor objectives. Unique objectives "steal brain" and "identity theft".
diff --git a/code/game/gamemodes/changeling/powers/absorb.dm b/code/game/gamemodes/changeling/powers/absorb.dm
index 081db162a22..913b6dd295d 100644
--- a/code/game/gamemodes/changeling/powers/absorb.dm
+++ b/code/game/gamemodes/changeling/powers/absorb.dm
@@ -17,10 +17,10 @@
var/obj/item/weapon/grab/G = user.get_active_hand()
if(!istype(G))
- user << "We must be grabbing a creature in our active hand to absorb them."
+ user << "We must be grabbing a creature in our active hand to absorb them!"
return
if(G.state <= GRAB_NECK)
- user << "We must have a tighter grip to absorb this creature."
+ user << "We must have a tighter grip to absorb this creature!"
return
var/mob/living/carbon/target = G.affecting
@@ -38,12 +38,10 @@
if(1)
user << "This creature is compatible. We must hold still..."
if(2)
- user << "We extend a proboscis."
- user.visible_message("[user] extends a proboscis!")
+ user.visible_message("[user] extends a proboscis!", "We extend a proboscis.")
if(3)
- user << "We stab [target] with the proboscis."
- user.visible_message("[user] stabs [target] with the proboscis!")
- target << "You feel a sharp stabbing pain!"
+ user.visible_message("[user] stabs [target] with the proboscis!", "We stab [target] with the proboscis.")
+ target << "You feel a sharp stabbing pain!"
target.take_overall_damage(40)
feedback_add_details("changeling_powers","A[stage]")
@@ -52,9 +50,8 @@
changeling.isabsorbing = 0
return
- user << "We have absorbed [target]!"
- user.visible_message("[user] sucks the fluids from [target]!")
- target << "You have been absorbed by the changeling!"
+ user.visible_message("[user] sucks the fluids from [target]!", "We have absorbed [target].")
+ target << "You are absorbed by the changeling!"
if(!changeling.has_dna(target.dna))
changeling.absorb_dna(target, user)
diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index eb77d14ef3d..c96fc387697 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -23,19 +23,19 @@
/obj/effect/proc_holder/changeling/weapon/try_to_sting(var/mob/user, var/mob/target)
if(istype(user.l_hand, weapon_type)) //Not the nicest way to do it, but eh
qdel(user.l_hand)
- user.visible_message("With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "With a sickening crunch, [user] reforms his [weapon_name_simple] into an arm!", "We assimilate the [weapon_name_simple] back into our body.", "The [user.get_active_hand()] is stuck to your hand, you cannot grow a [weapon_name_simple] over it!"
return
var/obj/item/W = new weapon_type(user)
user.put_in_hands(W)
@@ -64,7 +64,7 @@
var/mob/living/carbon/human/H = user
if(istype(H.wear_suit, suit_type) || istype(H.head, helmet_type))
- H.visible_message("[H] casts off their [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!")
+ H.visible_message("[H] casts off their [suit_name_simple]!", "We cast off our [suit_name_simple][genetic_damage > 0 ? ", temporarily weakening our genomes." : "."]", "You hear the organic matter ripping and tearing!")
qdel(H.wear_suit)
qdel(H.head)
H.update_inv_wear_suit()
@@ -133,10 +133,10 @@
/obj/item/weapon/melee/arm_blade/New()
..()
if(ismob(loc))
- loc.visible_message("A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!")
+ loc.visible_message("A grotesque blade forms around [loc.name]\'s arm!", "Our arm twists and mutates, transforming it into a deadly blade.", "You hear organic matter ripping and tearing!")
/obj/item/weapon/melee/arm_blade/dropped(mob/user)
- user.visible_message("With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate the blade back into our body.", "With a sickening crunch, [user] reforms his blade into an arm!", "We assimilate the blade back into our body.", "The airlock's motors resist our efforts to force it."
+ user << "The airlock's motors resist our efforts to force it!"
return
else if(A.locked)
- user << "The airlock's bolts prevent it from being forced."
+ user << "The airlock's bolts prevent it from being forced!"
return
else
//user.say("Heeeeeeeeeerrre's Johnny!")
- user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.")
+ user.visible_message("[user] forces the door to open with \his [src]!", "We force the door to open.", "You hear a metal screeching sound.")
A.open(1)
@@ -207,7 +207,7 @@
/obj/item/weapon/melee/shield/New()
..()
if(ismob(loc))
- loc.visible_message("The end of [loc.name]\'s hand inflates rapidly, forming a huge shield-like mass!", "We inflate our hand into a strong shield.", "You hear organic matter ripping and tearing!")
+ loc.visible_message("The end of [loc.name]\'s hand inflates rapidly, forming a huge shield-like mass!", "We inflate our hand into a strong shield.", "You hear organic matter ripping and tearing!")
/obj/item/clothing/head/helmet/space/changeling/dropped()
qdel(src)
@@ -216,7 +216,7 @@
if(remaining_uses < 1)
if(ishuman(loc))
var/mob/living/carbon/human/H = loc
- H.visible_message("With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "With a sickening crunch, [H] reforms his shield into an arm!", "We assimilate our shield into our body", "[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!")
+ loc.visible_message("[loc.name]\'s flesh rapidly inflates, forming a bloated mass around their body!", "We inflate our flesh, creating a spaceproof suit!", "You hear organic matter ripping and tearing!")
SSobj.processing += src
/obj/item/clothing/suit/space/changeling/dropped()
@@ -312,7 +312,7 @@
/obj/item/clothing/suit/armor/changeling/New()
..()
if(ismob(loc))
- loc.visible_message("[loc.name]\'s flesh turns black, quickly transforming into a hard, chitinous mass!", "We harden our flesh, creating a suit of armor!", "You hear organic matter ripping and tearing!")
+ loc.visible_message("[loc.name]\'s flesh turns black, quickly transforming into a hard, chitinous mass!", "We harden our flesh, creating a suit of armor!", "You hear organic matter ripping and tearing!")
/obj/item/clothing/suit/armor/changeling/dropped()
qdel(src)
diff --git a/code/game/gamemodes/changeling/traitor_chan.dm b/code/game/gamemodes/changeling/traitor_chan.dm
index 292cbe9d52a..25960b275f3 100644
--- a/code/game/gamemodes/changeling/traitor_chan.dm
+++ b/code/game/gamemodes/changeling/traitor_chan.dm
@@ -73,6 +73,6 @@
if(character.client.prefs.be_special & BE_CHANGELING)
if(!jobban_isbanned(character.client, "changeling") && !jobban_isbanned(character.client, "Syndicate"))
if(age_check(character.client))
- if(!(character.job in ticker.mode.restricted_jobs))
+ if(!(character.job in restricted_jobs))
character.mind.make_Changling()
..()
diff --git a/code/game/gamemodes/cult/ritual.dm b/code/game/gamemodes/cult/ritual.dm
index 32ae9b5a7e0..ac159322699 100644
--- a/code/game/gamemodes/cult/ritual.dm
+++ b/code/game/gamemodes/cult/ritual.dm
@@ -42,7 +42,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
return
if(ishuman(usr) || ismonkey(usr)) //Damage only applies to humans and monkeys, to allow constructs to communicate
- usr.visible_message("[usr.name] starts clawing at his arms like a mad man!")
+ usr.visible_message("[usr.name] starts clawing at his arms like a mad man!", "You start clawing at his arms like a mad man!")
apply_damage(25,BRUTE, "l_arm")
apply_damage(25,BRUTE, "r_arm")
sleep(50)
@@ -55,7 +55,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
apply_damage(15,BRUTE, "r_arm")
if(usr.incapacitated())
return
- usr.visible_message("[usr.name] paints strange symbols with their own blood")
+ usr.visible_message("[usr.name] paints strange symbols with their own blood.", "You paint strange symbols with your own blood.")
sleep(20)
usr.say("O bidai nabora se[pick("'","`")]sma!")
@@ -164,9 +164,9 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
/obj/effect/rune/attack_hand(mob/living/user as mob) // OH GOD this is horrible
if(!iscultist(user))
- user << "You can't mouth the arcane scratchings without fumbling over them."
+ user << "You can't mouth the arcane scratchings without fumbling over them!"
return
- var/message = "You are unable to speak the words of the rune."
+ var/message = "You are unable to speak the words of the rune!"
if(!user.can_speak(message) && (user.mind && !user.mind.miming))
user << message
return
@@ -236,7 +236,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
cultist.say(gibberish)
else
cultist.whisper(gibberish)
- visible_message("The markings pulse with a small burst of light, then fall dark.", 3, "You hear a faint fizzle.", 2)
+ visible_message("The markings pulse with a small burst of light, then fall dark.", 3, "You hear a faint fizzle.", 2)
return
/obj/effect/rune/proc/check_icon()
@@ -637,8 +637,8 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
return
for (var/mob/V in viewers(src))
- V.show_message("[user] slices open a finger and begins to chant and paint symbols on the floor.", 3, "You hear chanting.", 2)
- user << "You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world."
+ V.show_message("[user] slices open a finger and begins to chant and paint symbols on the floor.", 3, "You hear chanting.", 2)
+ user << "You slice open one of your fingers and begin drawing a rune on the floor whilst chanting the ritual that binds your life essence with the dark arcane energies flowing through the surrounding world."
user.take_overall_damage((rand(9)+1)/10) // 0.1 to 1.0 damage
if(do_after(user, 50))
if(usr.get_active_hand() != src)
@@ -670,7 +670,7 @@ var/engwords = list("travel", "blood", "join", "hell", "destroy", "technology",
// if(M == user)
for(var/entry in words)
words[entry] = T.words[entry]
- user << "You copy the translation notes from your tome."
+ user << "You copy the translation notes from your tome."
/obj/item/weapon/tome/examine(mob/user)
diff --git a/code/game/gamemodes/cult/runes.dm b/code/game/gamemodes/cult/runes.dm
index babeb58ab51..340aa519ba5 100644
--- a/code/game/gamemodes/cult/runes.dm
+++ b/code/game/gamemodes/cult/runes.dm
@@ -26,8 +26,8 @@ var/list/sacrificed = list()
else
user.whisper("Sas[pick("'","`")]so c'arta forbici!")
user.visible_message("[user] disappears in a flash of red light!", \
- "You feel as your body gets dragged through the dimension of Nar-Sie!", \
- "You hear a sickening crunch and sloshing of viscera.")
+ "You feel as your body gets dragged through the dimension of Nar-Sie!", \
+ "You hear a sickening crunch and sloshing of viscera.")
user.loc = allrunesloc[rand(1,index)]
return
if(istype(src,/obj/effect/rune))
@@ -53,7 +53,7 @@ var/list/sacrificed = list()
IP = R
runecount++
if(runecount >= 2)
- user << "You feel pain, as the rune disappears in reality shift caused by too much wear of space-time fabric"
+ user << "You feel pain, as the rune disappears in reality shift caused by too much wear of space-time fabric"
if (istype(user, /mob/living))
user.take_overall_damage(5, 0)
qdel(src)
@@ -85,7 +85,7 @@ var/list/sacrificed = list()
usr.whisper("N[pick("'","`")]ath reth sh'yro eth d'raggathnor!")
usr.visible_message("Rune disappears with a flash of red light, and in its place now a book lies.", \
"You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a book.", \
- "You hear a pop and smell ozone.")
+ "You hear a pop and smell ozone.")
if(istype(src,/obj/effect/rune))
new /obj/item/weapon/tome(src.loc)
else
@@ -110,8 +110,8 @@ var/list/sacrificed = list()
C.say("Mah[pick("'","`")]weyh pleggh at e'ntrath!")
if(cultsinrange.len >= 3)
M.visible_message("[M] writhes in pain as the markings below him glow a bloody red.", \
- "AAAAAAHHHH!", \
- "You hear an anguished scream.")
+ "AAAAAAHHHH!", \
+ "You hear an anguished scream.")
if(is_convertable_to_cult(M.mind))
ticker.mode.add_cultist(M.mind)
M.mind.special_role = "Cultist"
@@ -221,14 +221,14 @@ var/list/sacrificed = list()
usr.say ("Yu[pick("'","`")]gular faras desdae. Havas mithum javara. Umathar uf'kal thenar!")
usr.visible_message("Blood flows from the rune into [usr]!", \
"The blood starts flowing from the rune and into your frail mortal body. You feel... empowered.", \
- "You hear a liquid flowing.")
+ "You hear a liquid flowing.")
var/mob/living/user = usr
if(user.bhunger)
user.bhunger = max(user.bhunger-2*drain,0)
if(drain>=50)
user.visible_message("[user]'s eyes give off eerie red glow!", \
"...but it wasn't nearly enough. You crave, crave for more. The hunger consumes you from within.", \
- "You hear a heartbeat.")
+ "You hear a heartbeat.")
user.bhunger += drain
src = user
spawn()
@@ -341,10 +341,10 @@ var/list/sacrificed = list()
usr.say("Pasnar val'keriam usinar. Savrae ines amutan. Yam'toth remium il'tarat!")
corpse_to_raise.visible_message("[corpse_to_raise]'s eyes glow with a faint red as he stands up, slowly starting to breathe again.", \
"Life... I'm alive again...", \
- "You hear a faint, slightly familiar whisper.")
+ "You hear a faint, slightly familiar whisper.")
body_to_sacrifice.visible_message("[body_to_sacrifice] is torn apart, a black smoke swiftly dissipating from his remains!", \
"You feel as your blood boils, tearing you apart.", \
- "You hear a thousand voices, all crying in pain.")
+ "You hear a thousand voices, all crying in pain.")
body_to_sacrifice.gib()
// if(ticker.mode.name == "cult")
@@ -396,7 +396,7 @@ var/list/sacrificed = list()
usr.say("Fwe[pick("'","`")]sh mah erl nyag r'ya!")
usr.visible_message("[usr]'s eyes glow blue as \he freezes in place, absolutely motionless.", \
"The shadow that is your spirit separates itself from your body. You are now in the realm beyond. While this is a great sight, being here strains your mind and body. Hurry...", \
- "You hear only complete silence for a moment.")
+ "You hear only complete silence for a moment.")
usr.ghostize(1)
L.ajourn = 1
while(L)
@@ -431,7 +431,7 @@ var/list/sacrificed = list()
var/mob/living/carbon/human/dummy/D = new(this_rune.loc)
usr.visible_message("A shape forms in the center of the rune. A shape of... a man.", \
"A shape forms in the center of the rune. A shape of... a man.", \
- "You hear liquid flowing.")
+ "You hear liquid flowing.")
D.real_name = "[pick(first_names_male)] [pick(last_names)]"
D.status_flags = CANSTUN|CANWEAKEN|CANPARALYSE|CANPUSH
@@ -453,7 +453,7 @@ var/list/sacrificed = list()
if(D)
D.visible_message("[D] slowly dissipates into dust and bones.", \
"You feel pain, as bonds formed between your soul and this homunculus break.", \
- "You hear faint rustle.")
+ "You hear faint rustle.")
D.dust()
return
@@ -552,7 +552,7 @@ var/list/sacrificed = list()
runedec+=10
user.visible_message("[user] keels over dead, his blood glowing blue as it escapes his body and dissipates into thin air.", \
"In the last moment of your humble life, you feel an immense pain as fabric of reality mends... with your blood.", \
- "You hear faint rustle.")
+ "You hear faint rustle.")
for(,user.stat==2)
sleep(600)
if (!user)
@@ -877,7 +877,7 @@ var/list/sacrificed = list()
C.take_overall_damage(25, 0)
user.visible_message("Rune disappears with a flash of red light, and in its place now a body lies.", \
"You are blinded by the flash of red light! After you're able to see again, you see that now instead of the rune there's a body.", \
- "You hear a pop and smell ozone.")
+ "You hear a pop and smell ozone.")
qdel(src)
return fizzle(user)
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 2e3654f7b6a..5a98fc04f0a 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -19,6 +19,7 @@
var/probability = 1
var/station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm
var/explosion_in_progress = 0 //sit back and relax
+ var/round_ends_with_antag_death = 0 //flags the "one verse the station" antags as such
var/list/datum/mind/modePlayer = new
var/list/datum/mind/antag_candidates = list() // List of possible starting antags goes here
var/list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist
@@ -29,6 +30,7 @@
var/pre_setup_before_jobs = 0
var/antag_flag = null //preferences flag such as BE_WIZARD that need to be turned on for players to be antag
var/datum/mind/sacrifice_target = null
+ var/mob/living/living_antag_player = null
var/list/datum/game_mode/replacementmode = null
var/round_converted = 0 //0: round not converted, 1: round going to convert, 2: round converted
var/reroll_friendly //During mode conversion only these are in the running
@@ -97,16 +99,16 @@
///convert_roundtype()
///Allows rounds to basically be "rerolled" should the initial premise fall through
/datum/game_mode/proc/convert_roundtype()
- var/living_crew = 0
+ var/list/living_crew = list()
for(var/mob/Player in mob_list)
if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player))
- living_crew++
- if(living_crew / joined_player_list.len <= config.midround_antag_life_check) //If a lot of the player base died, we start fresh
+ living_crew += Player
+ if(living_crew.len / joined_player_list.len <= config.midround_antag_life_check) //If a lot of the player base died, we start fresh
message_admins("Convert_roundtype failed due to too many dead people. Limit is [config.midround_antag_life_check * 100]% living crew")
return null
- var/list/datum/game_mode/runnable_modes = config.get_runnable_midround_modes(living_crew)
+ var/list/datum/game_mode/runnable_modes = config.get_runnable_midround_modes(living_crew.len)
var/list/datum/game_mode/usable_modes = list()
for(var/datum/game_mode/G in runnable_modes)
if(G.reroll_friendly)
@@ -167,12 +169,72 @@
/datum/game_mode/proc/check_finished() //to be called by ticker
+ if(replacementmode && round_converted == 2)
+ return replacementmode.check_finished()
if(SSshuttle.emergency.mode >= SHUTTLE_ENDGAME || station_was_nuked)
return 1
+ if(!round_converted && (!config.continuous[config_tag] || (config.continuous[config_tag] && config.midround_antag[config_tag]))) //Non-continuous or continous with replacement antags
+ if(living_antag_player && living_antag_player.mind && living_antag_player.stat != DEAD && !isnewplayer(living_antag_player) &&!isbrain(living_antag_player))
+ return 0 //A resource saver: once we find someone who has to die for all antags to be dead, we can just keep checking them, cycling over everyone only when we lose our mark.
+
+ for(var/mob/living/Player in living_mob_list)
+ if(Player.mind && Player.stat != DEAD && !isnewplayer(Player) &&!isbrain(Player))
+ if(Player.mind.special_role) //Someone's still antaging!
+ living_antag_player = Player
+ return 0
+
+ if(!config.continuous[config_tag])
+ return 1
+
+ else
+ round_converted = convert_roundtype()
+ if(!round_converted)
+ if(round_ends_with_antag_death)
+ return 1
+ else
+ config.midround_antag[config_tag] = 0
+ return 0
+
return 0
/datum/game_mode/proc/declare_completion()
+ var/clients = 0
+ var/surviving_humans = 0
+ var/surviving_total = 0
+ var/ghosts = 0
+ var/escaped_humans = 0
+ var/escaped_total = 0
+
+ for(var/mob/M in player_list)
+ if(M.client)
+ clients++
+ if(ishuman(M))
+ if(!M.stat)
+ surviving_humans++
+ if(M.z == 2)
+ escaped_humans++
+ if(!M.stat)
+ surviving_total++
+ if(M.z == 2)
+ escaped_total++
+
+
+ if(isobserver(M))
+ ghosts++
+
+ if(clients > 0)
+ feedback_set("round_end_clients",clients)
+ if(ghosts > 0)
+ feedback_set("round_end_ghosts",ghosts)
+ if(surviving_humans > 0)
+ feedback_set("survived_human",surviving_humans)
+ if(surviving_total > 0)
+ feedback_set("survived_total",surviving_total)
+ if(escaped_humans > 0)
+ feedback_set("escaped_human",escaped_humans)
+ if(escaped_total > 0)
+ feedback_set("escaped_total",escaped_total)
send2irc("Server", "Round just ended.")
return 0
diff --git a/code/game/gamemodes/gang/gang.dm b/code/game/gamemodes/gang/gang.dm
index 1432c50efd7..4b5fed604e8 100644
--- a/code/game/gamemodes/gang/gang.dm
+++ b/code/game/gamemodes/gang/gang.dm
@@ -11,6 +11,10 @@
var/datum/gang_points/gang_points
var/list/A_territory = list()
var/list/B_territory = list()
+ var/list/A_territory_new = list()
+ var/list/A_territory_lost = list()
+ var/list/B_territory_new = list()
+ var/list/B_territory_lost = list()
/datum/game_mode/gang
name = "gang war"
@@ -21,15 +25,15 @@
required_enemies = 2
recommended_enemies = 2
enemy_minimum_age = 14
-
var/finished = 0
- var/checkwin_counter = 0
+ var/goal_scalar = 0.6 //Goal = Total territories x goal_scalar
+
///////////////////////////
//Announces the game type//
///////////////////////////
/datum/game_mode/gang/announce()
world << "The current game mode is - Gang War!"
- world << "A violent turf war has erupted on the station!
Gangsters - Take over the station by claiming more than half of the station!
Crew - The gangs will try to keep you on the station. Successfully evacuate the station to win!"
+ world << "A violent turf war has erupted on the station!
Gangsters - Take over the station by claiming more than [round(100*goal_scalar,1)]% of the station!
Crew - The gangs will try to keep you on the station. Successfully evacuate the station to win!"
///////////////////////////////////////////////////////////////////////////////
@@ -74,15 +78,6 @@
modePlayer += B_bosses
..()
-
-/datum/game_mode/gang/process()
- checkwin_counter++
- if(checkwin_counter >= 5)
- if(!finished)
- ticker.mode.check_win()
- checkwin_counter = 0
- return 0
-
/datum/game_mode/gang/proc/assign_bosses()
var/datum/mind/boss = pick(antag_candidates)
A_bosses += boss
@@ -99,7 +94,7 @@
/datum/game_mode/proc/forge_gang_objectives(var/datum/mind/boss_mind)
var/datum/objective/rival_obj = new
rival_obj.owner = boss_mind
- rival_obj.explanation_text = "Claim more than half the station before the [(boss_mind in A_bosses) ? gang_name("B") : gang_name("A")] Gang does."
+ rival_obj.explanation_text = "Claim more than 60% the station before the [(boss_mind in A_bosses) ? gang_name("B") : gang_name("A")] Gang does."
boss_mind.objectives += rival_obj
@@ -167,9 +162,9 @@
//Checks if the either gang have won or not//
/////////////////////////////////////////////
/datum/game_mode/gang/check_win()
- if(A_territory.len > (start_state.num_territories / 2))
+ if(A_territory.len > (start_state.num_territories * goal_scalar))
finished = "A" //Gang A wins
- else if(B_territory.len > (start_state.num_territories / 2))
+ else if(B_territory.len > (start_state.num_territories * goal_scalar))
finished = "B" //Gang B wins
///////////////////////////////
@@ -186,7 +181,7 @@
/datum/game_mode/proc/add_gangster(datum/mind/gangster_mind, var/gang, var/check = 1)
if(check && isloyal(gangster_mind.current)) //Check to see if the potential gangster is implanted
return 0
- if((gangster_mind in A_bosses) || (gangster_mind in A_gang) || (gangster_mind in B_bosses) || (gangster_mind in B_gang))
+ if(gangster_mind in (A_bosses | A_gang | B_bosses | B_gang))
return 0
if(gang == "A")
A_gang += gangster_mind
@@ -305,7 +300,7 @@
if(A_bosses.len || A_gang.len)
if(winner)
- world << "
The [gang_name("A")] Gang was [winner=="A" ? "victorious" : "defeated"] with [round((ticker.mode.A_territory.len/start_state.num_territories)*100, 0.1)]% control of the station!"
+ world << "
The [gang_name("A")] Gang was [winner=="A" ? "victorious" : "defeated"] with [round((ticker.mode.A_territory.len/start_state.num_territories)*100, 1)]% control of the station!"
world << "
The [gang_name("A")] Gang Bosses were:"
gang_membership_report(A_bosses)
world << "
The [gang_name("A")] Gangsters were:"
@@ -314,7 +309,7 @@
if(B_bosses.len || B_gang.len)
if(winner)
- world << "
The [gang_name("B")] Gang was [winner=="B" ? "victorious" : "defeated"] with [round((ticker.mode.B_territory.len/start_state.num_territories)*100, 0.1)]% control of the station!"
+ world << "
The [gang_name("B")] Gang was [winner=="B" ? "victorious" : "defeated"] with [round((ticker.mode.B_territory.len/start_state.num_territories)*100, 1)]% control of the station!"
world << "
The [gang_name("B")] Gang Bosses were:"
gang_membership_report(B_bosses)
world << "
The [gang_name("B")] Gangsters were:"
@@ -341,9 +336,9 @@
world << text
-//////////////////////////////////
-//Handles gang points and income//
-//////////////////////////////////
+//////////////////////////////////////////////////////////
+//Handles influence, territories, and the victory checks//
+//////////////////////////////////////////////////////////
/datum/gang_points
var/A = 30
@@ -356,24 +351,94 @@
income()
/datum/gang_points/proc/income()
- var/A_new = min(100,(A + 10 + ticker.mode.A_territory.len))
+ var/A_added_names = ""
+ var/B_added_names = ""
+ var/A_lost_names = ""
+ var/B_lost_names = ""
+
+ //Process lost territories
+ for(var/area in ticker.mode.A_territory_lost)
+ if(A_lost_names == "")
+ A_lost_names += ":
"
+ else
+ A_lost_names += ", "
+ A_lost_names += "[ticker.mode.A_territory_lost[area]], "
+ ticker.mode.A_territory -= area
+
+ for(var/area in ticker.mode.B_territory_lost)
+ if(B_lost_names == "")
+ B_lost_names += ":
"
+ else
+ B_lost_names += ", "
+ B_lost_names += "[ticker.mode.B_territory_lost[area]], "
+ ticker.mode.B_territory -= area
+
+ //Calculate and report influence growth
+ ticker.mode.message_gangtools(ticker.mode.A_tools,"[gang_name("A")] Gang Status Report:")
+ var/A_new = min(100,A + 15 + min(ticker.mode.A_territory.len, 15) + round(max(ticker.mode.A_territory.len - 15, 0) * 0.5,1))
var/A_message = ""
if(A_new != A)
- A_message += "Your gang has gained [A_new - A] Influence from their presence on station."
+ A_message += "Your gang has gained [A_new - A] Influence for holding on to [ticker.mode.A_territory.len] territories."
if(A_new == 100)
A_message += "Maximum influence reached."
A = A_new
- ticker.mode.message_gangtools(ticker.mode.A_tools,A_message)
+ ticker.mode.message_gangtools(ticker.mode.A_tools,A_message,0)
- var/B_new = min(100,(B + 10 + ticker.mode.B_territory.len))
+ ticker.mode.message_gangtools(ticker.mode.B_tools,"[gang_name("B")] Gang Status Report:")
+ var/B_new = min(100,B + 15 + min(ticker.mode.B_territory.len, 15) + round(max(ticker.mode.B_territory.len - 15, 0) * 0.5,1))
var/B_message = ""
if(B_new != B)
- B_message += "Your gang has collected [B_new - B] Influence from their presence on station. "
+ B_message += "Your gang has gained [B_new - B] Influence for holding on to [ticker.mode.B_territory.len] territories."
if(B_new == 100)
B_message += "Maximum influence reached."
B = B_new
- ticker.mode.message_gangtools(ticker.mode.B_tools,B_message)
+ ticker.mode.message_gangtools(ticker.mode.B_tools,B_message,0)
+
+ //Remove territories they already own from the buffer, so if they got tagged over, they can still earn income if they tag it back before the next status report
+ ticker.mode.A_territory_new -= ticker.mode.A_territory
+ ticker.mode.B_territory_new -= ticker.mode.B_territory
+
+ //Process new territories
+ for(var/area in ticker.mode.A_territory_new)
+ if(A_added_names == "")
+ A_added_names += ":
"
+ else
+ A_added_names += ", "
+ A_added_names += "[ticker.mode.A_territory_new[area]]"
+ ticker.mode.A_territory += area
+
+ for(var/area in ticker.mode.B_territory_new)
+ if(B_added_names == "")
+ B_added_names += ":
"
+ else
+ B_added_names += ", "
+ B_added_names += "[ticker.mode.B_territory_new[area]]"
+ ticker.mode.B_territory += area
+
+ //Report territory changes
+ ticker.mode.message_gangtools(ticker.mode.A_tools,"[ticker.mode.A_territory_new.len] new territories[A_added_names]",0)
+ ticker.mode.message_gangtools(ticker.mode.B_tools,"[ticker.mode.B_territory_new.len] new territories[B_added_names]",0,)
+ ticker.mode.message_gangtools(ticker.mode.A_tools,"[ticker.mode.A_territory_lost.len] territories lost[A_lost_names]",0,1)
+ ticker.mode.message_gangtools(ticker.mode.B_tools,"[ticker.mode.B_territory_lost.len] territories lost[B_lost_names]",0,1)
+
+ //Clear the lists
+ ticker.mode.A_territory_new = list()
+ ticker.mode.B_territory_new = list()
+ ticker.mode.A_territory_lost = list()
+ ticker.mode.B_territory_lost = list()
+
+ var/A_control = round((ticker.mode.A_territory.len/start_state.num_territories)*100, 1)
+ var/B_control = round((ticker.mode.B_territory.len/start_state.num_territories)*100, 1)
+ ticker.mode.message_gangtools((ticker.mode.A_tools),"Your gang now has [A_control]% control of the station.",0)
+ ticker.mode.message_gangtools((ticker.mode.A_tools),"The [gang_name("B")] Gang has [B_control]% control of the station.",0,1)
+ ticker.mode.message_gangtools((ticker.mode.B_tools),"Your gang now has [B_control]% control of the station.",0)
+ ticker.mode.message_gangtools((ticker.mode.B_tools),"The [gang_name("A")] Gang has [A_control]% control of the station.",0,1)
+
+ //Victory check
+ ticker.mode.check_win()
+
+ //Restart the counter
start()
@@ -381,13 +446,13 @@
//Sends a message to the boss via his gangtool//
////////////////////////////////////////////////
-/datum/game_mode/proc/message_gangtools(var/list/gangtools,var/message,var/beeps=1)
+/datum/game_mode/proc/message_gangtools(var/list/gangtools,var/message,var/beep=1,var/warning)
if(!gangtools.len || !message)
return
for(var/obj/item/device/gangtool/tool in gangtools)
var/mob/living/mob = get(tool.loc,/mob/living)
if(mob && mob.mind)
if(((tool.gang == "A") && ((mob.mind in A_gang) || (mob.mind in A_bosses))) || ((tool.gang == "B") && ((mob.mind in B_gang) || (mob.mind in B_bosses))))
- mob << "\icon[tool] [message]"
- if(beeps)
+ mob << "\icon[tool] [message]"
+ if(beep)
playsound(mob.loc, 'sound/machines/twobeep.ogg', 50, 1)
\ No newline at end of file
diff --git a/code/game/gamemodes/intercept_report.dm b/code/game/gamemodes/intercept_report.dm
index 81ed244f086..e392f101ae7 100644
--- a/code/game/gamemodes/intercept_report.dm
+++ b/code/game/gamemodes/intercept_report.dm
@@ -228,9 +228,9 @@
*/
/datum/intercept_text/proc/build_gang(datum/mind/correct_person)
- src.text += "
Syndicate forces may be supplying opposing criminal organizations within your sector in an attempt at destabilizing our operations."
- src.text += "Ensure law and order is maintained on the station and be on the lookout for violent confrontations between station factions."
- src.text += "Central Command retains an interest in any criminal leaders captured by station security. The execution or exile of these persons are ill-advised."
+ src.text += "
We have recieved reports of a sudden increase of criminal activity in close proximity to our operations within your sector."
+ src.text += "Ensure law and order is maintained on the station and be on the lookout for unusually territorial behavior from the crew."
+ src.text += "In the event of a full-scale takeover attempt, sensitive research items are to be secured and the station evacuated ASAP."
src.text += "
"
/datum/intercept_text/proc/build_wizard(datum/mind/correct_person)
diff --git a/code/game/gamemodes/malfunction/Malf_Modules.dm b/code/game/gamemodes/malfunction/Malf_Modules.dm
index 5e5aa1bf462..b5576eab127 100644
--- a/code/game/gamemodes/malfunction/Malf_Modules.dm
+++ b/code/game/gamemodes/malfunction/Malf_Modules.dm
@@ -227,7 +227,7 @@
for(var/datum/AI_Module/small/overload_machine/overload in current_modules)
if(overload.uses > 0)
overload.uses --
- audible_message("You hear a loud electrical buzzing sound!")
+ audible_message("You hear a loud electrical buzzing sound!")
src << "Overloading machine circuitry..."
spawn(50)
if(M)
@@ -257,7 +257,7 @@
for(var/datum/AI_Module/small/override_machine/override in current_modules)
if(override.uses > 0)
override.uses --
- audible_message("You hear a loud electrical buzzing sound!")
+ audible_message("You hear a loud electrical buzzing sound!")
src << "Reprogramming machine behaviour..."
spawn(50)
if(M && !M.gc_destroyed)
@@ -426,11 +426,11 @@
if(upgraded)
UC.uses --
C.visible_message("\icon[C] *beep*")
- src << "Camera successully upgraded!"
+ src << "You successully upgrade the camera."
else
- src << "This camera is already upgraded!"
+ src << "This camera is already upgraded!"
else
- src << "Out of uses."
+ src << "Out of uses!"
/datum/module_picker
var/temp = null
diff --git a/code/game/gamemodes/malfunction/malfunction.dm b/code/game/gamemodes/malfunction/malfunction.dm
index 7271875daee..1531ac36613 100644
--- a/code/game/gamemodes/malfunction/malfunction.dm
+++ b/code/game/gamemodes/malfunction/malfunction.dm
@@ -10,7 +10,7 @@
recommended_enemies = 1
pre_setup_before_jobs = 1
enemy_minimum_age = 30 //Same as AI minimum age
-
+ round_ends_with_antag_death = 1
var/AI_win_timeleft = 5400 //started at 5400, in case I change this for testing round end.
var/malf_mode_declared = 0
@@ -170,10 +170,6 @@
/datum/game_mode/malfunction/check_finished()
- if(replacementmode && round_converted == 2)
- return replacementmode.check_finished()
- if(round_converted == 1) //No reason to waste resources
- return ..() //Check for evacuation/nuke
if (station_captured && !to_nuke_or_not_to_nuke)
return 1
if (is_malf_ai_dead() || !check_ai_loc())
@@ -186,10 +182,6 @@
malf_mode_declared = 0
if(get_security_level() == "delta")
set_security_level("red")
- if(config.midround_antag["malfunction"])
- round_converted = convert_roundtype()
- if(!round_converted)
- return 1
return ..()
else
return 1
diff --git a/code/game/gamemodes/nuclear/pinpointer.dm b/code/game/gamemodes/nuclear/pinpointer.dm
index d61191f9334..74e88d79bad 100644
--- a/code/game/gamemodes/nuclear/pinpointer.dm
+++ b/code/game/gamemodes/nuclear/pinpointer.dm
@@ -122,7 +122,7 @@
location = locate(locationx,locationy,Z.z)
- usr << "You set the pinpointer to locate [locationx],[locationy]"
+ usr << "You set the pinpointer to locate [locationx],[locationy]"
return attack_self()
@@ -140,9 +140,9 @@
return
target=locate(possible_items[targetitem])
if(!target)
- usr << "Failed to locate [targetitem]!"
+ usr << "Failed to locate [targetitem]!"
return
- usr << "You set the pinpointer to locate [targetitem]"
+ usr << "You set the pinpointer to locate [targetitem]."
if("DNA")
var/DNAstring = input("Input DNA string to search for." , "Please Enter String." , "")
if(!DNAstring)
diff --git a/code/game/gamemodes/revolution/revolution.dm b/code/game/gamemodes/revolution/revolution.dm
index 553df633bf8..025c55c3532 100644
--- a/code/game/gamemodes/revolution/revolution.dm
+++ b/code/game/gamemodes/revolution/revolution.dm
@@ -187,14 +187,19 @@
///////////////////////////////
/datum/game_mode/revolution/proc/latejoin_headrev()
if(revolutionaries) //Head Revs are not in this list
- var/datum/mind/stalin = pick(revolutionaries)
- revolutionaries -= stalin
- head_revolutionaries += stalin
- log_game("[stalin.key] (ckey) has been promoted to a head rev")
- equip_revolutionary(stalin.current)
- forge_revolutionary_objectives(stalin)
- greet_revolutionary(stalin)
- ++max_headrevs
+ var/list/promotable_revs = list()
+ for(var/datum/mind/khrushchev in revolutionaries)
+ if(khrushchev.current && khrushchev.current.client && khrushchev.current.stat != DEAD)
+ if(khrushchev.current.client.prefs.be_special & BE_REV)
+ promotable_revs += khrushchev
+ if(promotable_revs)
+ var/datum/mind/stalin = pick(promotable_revs)
+ revolutionaries -= stalin
+ head_revolutionaries += stalin
+ log_game("[stalin.key] (ckey) has been promoted to a head rev")
+ equip_revolutionary(stalin.current)
+ forge_revolutionary_objectives(stalin)
+ greet_revolutionary(stalin)
//////////////////////////////////////
//Checks if the revs have won or not//
@@ -213,11 +218,15 @@
if(config.continuous["revolution"])
if(finished != 0)
SSshuttle.emergencyNoEscape = 0
+ if(SSshuttle.emergency.mode == SHUTTLE_STRANDED)
+ SSshuttle.emergency.mode = SHUTTLE_DOCKED
+ SSshuttle.emergency.timer = world.time
+ priority_announce("Hostile enviroment resolved. You have 3 minutes to board the Emergency Shuttle.", null, 'sound/AI/shuttledock.ogg', "Priority")
return ..()
if(finished != 0)
return 1
else
- return 0
+ return ..()
///////////////////////////////////////////////////
//Deals with converting players to the revolution//
diff --git a/code/game/gamemodes/shadowling/shadowling.dm b/code/game/gamemodes/shadowling/shadowling.dm
index 372ee45ff10..902a17c4a14 100644
--- a/code/game/gamemodes/shadowling/shadowling.dm
+++ b/code/game/gamemodes/shadowling/shadowling.dm
@@ -157,28 +157,6 @@ Made by Xhuis
new_thrall_mind.spell_list += new /obj/effect/proc_holder/spell/targeted/shadowling_hivemind
return 1
-
-
-/*
- GAME FINISH CHECKS
-*/
-
-
-/datum/game_mode/shadowling/check_finished()
- var/shadows_alive = 0 //and then shadowling was kill
- for(var/datum/mind/shadow in shadows) //but what if shadowling was not kill?
- if(!istype(shadow.current,/mob/living/carbon/human) && !istype(shadow.current,/mob/living/simple_animal/ascendant_shadowling))
- continue
- if(shadow.current.stat == DEAD)
- continue
- shadows_alive++
- if(shadows_alive)
- return ..()
- else
- shadowling_dead = 1 //but shadowling was kill :(
- return 1
-
-
/datum/game_mode/shadowling/proc/check_shadow_victory()
var/success = 0 //Did they win?
if(shadow_objectives.Find("enthrall"))
diff --git a/code/game/gamemodes/traitor/traitor.dm b/code/game/gamemodes/traitor/traitor.dm
index af52f87a109..37e40099e0b 100644
--- a/code/game/gamemodes/traitor/traitor.dm
+++ b/code/game/gamemodes/traitor/traitor.dm
@@ -81,9 +81,8 @@
if(character.client.prefs.be_special & BE_TRAITOR)
if(!jobban_isbanned(character.client, "traitor") && !jobban_isbanned(character.client, "Syndicate"))
if(age_check(character.client))
- if(!(character.job in ticker.mode.restricted_jobs))
+ if(!(character.job in restricted_jobs))
add_latejoin_traitor(character.mind)
- ..()
/datum/game_mode/traitor/proc/add_latejoin_traitor(var/datum/mind/character)
character.make_Traitor()
diff --git a/code/game/gamemodes/wizard/raginmages.dm b/code/game/gamemodes/wizard/raginmages.dm
index d0d350d86d7..6f19d7cdd0d 100644
--- a/code/game/gamemodes/wizard/raginmages.dm
+++ b/code/game/gamemodes/wizard/raginmages.dm
@@ -60,7 +60,7 @@
else
if(mages_made >= max_mages)
finished = 1
- return 1
+ return ..()
else
make_more_mages()
return ..()
diff --git a/code/game/gamemodes/wizard/spellbook.dm b/code/game/gamemodes/wizard/spellbook.dm
index 138a77305c1..3d30ba9e242 100644
--- a/code/game/gamemodes/wizard/spellbook.dm
+++ b/code/game/gamemodes/wizard/spellbook.dm
@@ -18,9 +18,9 @@
if(istype(O, /obj/item/weapon/antag_spawner/contract))
var/obj/item/weapon/antag_spawner/contract/contract = O
if(contract.used)
- user << "The contract has been used, you can't get your points back now."
+ user << "The contract has been used, you can't get your points back now!"
else
- user << "You feed the contract back into the spellbook, refunding your points."
+ user << "You feed the contract back into the spellbook, refunding your points."
src.max_uses++
src.uses++
qdel(O)
@@ -30,11 +30,11 @@
/obj/item/weapon/spellbook/attack_self(mob/user as mob)
if(!owner)
- user << "You bind the spellbook to yourself."
+ user << "You bind the spellbook to yourself."
owner = user
return
if(user != owner)
- user << "The [name] does not recognize you as it's owner and refuses to open."
+ user << "The [name] does not recognize you as it's owner and refuses to open!"
return
user.set_machine(src)
var/dat
diff --git a/code/game/gamemodes/wizard/wizard.dm b/code/game/gamemodes/wizard/wizard.dm
index ddce2321c47..1d2d5d5a98f 100644
--- a/code/game/gamemodes/wizard/wizard.dm
+++ b/code/game/gamemodes/wizard/wizard.dm
@@ -10,6 +10,7 @@
recommended_enemies = 1
pre_setup_before_jobs = 1
enemy_minimum_age = 14
+ round_ends_with_antag_death = 1
var/use_huds = 0
var/finished = 0
@@ -171,37 +172,16 @@
/datum/game_mode/wizard/check_finished()
- if(replacementmode && round_converted == 2)
- return replacementmode.check_finished()
-
- if(round_converted == 1 || !wizards) //No reason to waste resources
- return ..() //Check for evacuation/nuke
-
for(var/datum/mind/wizard in wizards)
if(!wizard.current)
continue
if(wizard.current.stat != DEAD)
return ..()
- for(var/datum/mind/traitor in traitors)
- if(!traitor.current)
- continue
- if(traitor.current.stat != DEAD)
- return ..()
-
- if(!config.continuous["wizard"])
- return 1
-
if(SSevent.wizardmode) //If summon events was active, turn it off
SSevent.toggleWizardmode()
SSevent.resetFrequency()
- if(config.midround_antag["wizard"])
- round_converted = convert_roundtype()
- if(!round_converted)
- finished = 1
- return 1
-
return ..()
/datum/game_mode/wizard/declare_completion()
diff --git a/code/game/machinery/PDApainter.dm b/code/game/machinery/PDApainter.dm
index bb9d5db7eee..c563482d147 100644
--- a/code/game/machinery/PDApainter.dm
+++ b/code/game/machinery/PDApainter.dm
@@ -43,7 +43,7 @@
/obj/machinery/pdapainter/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, /obj/item/device/pda))
if(storedpda)
- user << "There is already a PDA inside."
+ user << "There is already a PDA inside!"
return
else
var/obj/item/device/pda/P = usr.get_active_hand()
diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm
index 386c11d09c9..82d9841d328 100644
--- a/code/game/machinery/ai_slipper.dm
+++ b/code/game/machinery/ai_slipper.dm
@@ -36,7 +36,7 @@
else // trying to unlock the interface
if (src.allowed(usr))
locked = !locked
- user << "You [ locked ? "lock" : "unlock"] the device."
+ user << "You [ locked ? "lock" : "unlock"] the device."
if (locked)
if (user.machine==src)
user.unset_machine()
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index ce624c2abc7..0b11e742401 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -804,7 +804,7 @@ table tr:first-child th:first-child { border: none;}
if(2)
if(istype(W, /obj/item/weapon/wirecutters) && panel_open && (wires.wires_status == 27 || wires.wires_status == 31)) //this checks for all wires to be cut, except the syphon wire which is optional.
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
- user << "You cut the final wires."
+ user << "You cut the final wires."
var/obj/item/stack/cable_coil/cable = new /obj/item/stack/cable_coil( src.loc )
cable.amount = 5
buildstage = 1
@@ -814,7 +814,7 @@ table tr:first-child th:first-child { border: none;}
if(istype(W, /obj/item/weapon/screwdriver)) // Opening that Air Alarm up.
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
panel_open = !panel_open
- user << "The wires have been [panel_open ? "exposed" : "unexposed"]"
+ user << "The wires have been [panel_open ? "exposed" : "unexposed"]."
update_icon()
return
@@ -822,19 +822,19 @@ table tr:first-child th:first-child { border: none;}
return src.attack_hand(user)
else if (istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card
if(stat & (NOPOWER|BROKEN))
- user << "It does nothing"
+ user << "It does nothing!"
else
if(src.allowed(usr) && !wires.IsIndexCut(AALARM_WIRE_IDSCAN))
locked = !locked
- user << "You [ locked ? "lock" : "unlock"] the Air Alarm interface."
+ user << "You [ locked ? "lock" : "unlock"] the air alarm interface."
src.updateUsrDialog()
else
- user << "Access denied."
+ user << "Access denied."
return
if(1)
if(istype(W, /obj/item/weapon/crowbar))
- user.visible_message("[user.name] removes the electronics from [src.name].",\
- "You start prying out the circuit.")
+ user.visible_message("[user.name] removes the electronics from [src.name].",\
+ "You start prying out the circuit...")
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
if (do_after(user, 20))
if (buildstage == 1)
@@ -848,10 +848,10 @@ table tr:first-child th:first-child { border: none;}
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/cable = W
if(cable.get_amount() < 5)
- user << "You need five lengths of cable to wire the fire alarm."
+ user << "You need five lengths of cable to wire the fire alarm!"
return
- user.visible_message("[user.name] wires the air alarm.", \
- "You start wiring the air alarm.")
+ user.visible_message("[user.name] wires the air alarm.", \
+ "You start wiring the air alarm...")
if (do_after(user, 20))
if (cable.get_amount() >= 5 && buildstage == 1)
cable.use(5)
@@ -867,7 +867,7 @@ table tr:first-child th:first-child { border: none;}
return
if(0)
if(istype(W, /obj/item/weapon/airalarm_electronics))
- user << "You insert the circuit!"
+ user << "You insert the circuit."
buildstage = 1
update_icon()
user.drop_item()
@@ -875,7 +875,7 @@ table tr:first-child th:first-child { border: none;}
return
if(istype(W, /obj/item/weapon/wrench))
- user << "You detach \the [src] from the wall!"
+ user << "You detach \the [src] from the wall."
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
new /obj/item/alarm_frame( user.loc )
qdel(src)
@@ -896,7 +896,7 @@ table tr:first-child th:first-child { border: none;}
/obj/machinery/alarm/emag_act(mob/user as mob)
if(!emagged)
src.emagged = 1
- user.visible_message("Sparks fly out of the [src]!", "You emag the [src], disabling its safeties.")
+ user.visible_message("Sparks fly out of the [src]!", "You emag the [src], disabling its safeties.")
playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
return
@@ -945,10 +945,10 @@ Code shamelessly copied from apc_frame
var/turf/loc = get_turf(usr)
var/area/A = loc.loc
if (!istype(loc, /turf/simulated/floor))
- usr << "Air Alarm cannot be placed on this spot."
+ usr << "Air Alarm cannot be placed on this spot!"
return
if (A.requires_power == 0 || A.name == "Space")
- usr << "Air Alarm cannot be placed in this area."
+ usr << "Air Alarm cannot be placed in this area!"
return
if(gotwallitem(loc, ndir))
@@ -1025,7 +1025,7 @@ FIRE ALARM
/obj/machinery/firealarm/emag_act(mob/user as mob)
if(!emagged)
src.emagged = 1
- user.visible_message("Sparks fly out of the [src]!", "You emag the [src], disabling its thermal sensors.")
+ user.visible_message("Sparks fly out of the [src]!", "You emag the [src], disabling its thermal sensors.")
playsound(src.loc, 'sound/effects/sparks4.ogg', 50, 1)
return
@@ -1056,7 +1056,7 @@ FIRE ALARM
if (istype(W, /obj/item/weapon/screwdriver) && buildstage == 2)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
panel_open = !panel_open
- user << "The wires have been [panel_open ? "exposed" : "unexposed"]"
+ user << "The wires have been [panel_open ? "exposed" : "unexposed"]."
update_icon()
return
@@ -1066,9 +1066,9 @@ FIRE ALARM
if (istype(W, /obj/item/device/multitool))
src.detecting = !( src.detecting )
if (src.detecting)
- user.visible_message("[user] has reconnected [src]'s detecting unit!", "You have reconnected [src]'s detecting unit.")
+ user.visible_message("[user] has reconnected [src]'s detecting unit!", "You reconnect [src]'s detecting unit.")
else
- user.visible_message("[user] has disconnected [src]'s detecting unit!", "You have disconnected [src]'s detecting unit.")
+ user.visible_message("[user] has disconnected [src]'s detecting unit!", "You disconnect [src]'s detecting unit.")
else if (istype(W, /obj/item/weapon/wirecutters))
buildstage = 1
@@ -1076,7 +1076,7 @@ FIRE ALARM
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil()
coil.amount = 5
coil.loc = user.loc
- user << "You cut the wires from \the [src]"
+ user << "You cut the wires from \the [src]."
update_icon()
if(1)
if(istype(W, /obj/item/stack/cable_coil))
@@ -1088,32 +1088,32 @@ FIRE ALARM
coil.use(5)
buildstage = 2
- user << "You wire \the [src]!"
+ user << "You wire \the [src]."
update_icon()
else if(istype(W, /obj/item/weapon/crowbar))
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
- user.visible_message("[user.name] removes the electronics from [src.name].", \
- "You start prying out the circuit.")
+ user.visible_message("[user.name] removes the electronics from [src.name].", \
+ "You start prying out the circuit...")
if(do_after(user, 20))
if(buildstage == 1)
if(stat & BROKEN)
- user << "You remove the destroyed circuit!"
+ user << "You remove the destroyed circuit."
else
- user << "You pry out the circuit!"
+ user << "You pry out the circuit."
new /obj/item/weapon/firealarm_electronics(user.loc)
buildstage = 0
update_icon()
if(0)
if(istype(W, /obj/item/weapon/firealarm_electronics))
- user << "You insert the circuit!"
+ user << "You insert the circuit."
qdel(W)
buildstage = 1
update_icon()
else if(istype(W, /obj/item/weapon/wrench))
- user.visible_message("[user] removes the fire alarm assembly from the wall!", \
- "You remove the fire alarm assembly from the wall!")
+ user.visible_message("[user] removes the fire alarm assembly from the wall.", \
+ "You remove the fire alarm assembly from the wall.")
var/obj/item/firealarm_frame/frame = new /obj/item/firealarm_frame()
frame.loc = user.loc
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index 5450c05c626..3004a7a4389 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -245,7 +245,7 @@ update_flag
transfer_moles = pressure_delta*thejetpack.volume/(air_contents.temperature * R_IDEAL_GAS_EQUATION)//Actually transfer the gas
var/datum/gas_mixture/removed = air_contents.remove(transfer_moles)
thejetpack.merge(removed)
- user << "You pulse-pressurize your jetpack from the tank."
+ user << "You pulse-pressurize your jetpack from the tank."
return
..()
diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm
index 64f7f4c35b4..059464d70e9 100644
--- a/code/game/machinery/atmoalter/meter.dm
+++ b/code/game/machinery/atmoalter/meter.dm
@@ -92,8 +92,8 @@
if (do_after(user, 40))
user.visible_message( \
"[user] unfastens \the [src].", \
- "You have unfastened \the [src].", \
- "You hear ratchet.")
+ "You unfasten \the [src].", \
+ "You hear ratchet.")
new /obj/item/pipe_meter(src.loc)
qdel(src)
return
diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm
index f264701ea04..d3a59024b15 100644
--- a/code/game/machinery/atmoalter/scrubber.dm
+++ b/code/game/machinery/atmoalter/scrubber.dm
@@ -38,7 +38,7 @@
name = "[name] (ID [id])"
attack_hand(var/mob/user as mob)
- usr << "You can't directly interact with this machine. Use the area atmos computer."
+ usr << "You can't directly interact with this machine! Use the area atmos computer."
update_icon()
src.overlays = 0
@@ -51,7 +51,7 @@
attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
if(on)
- user << "Turn it off first!"
+ user << "Turn it off first!"
return
anchored = !anchored
@@ -67,7 +67,7 @@
attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
if(istype(W, /obj/item/weapon/wrench))
- user << "The bolts are too tight for you to unscrew!"
+ user << "The bolts are too tight for you to unscrew!"
return
..()
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 2b82a9e7b1f..88fa45990a7 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -143,14 +143,14 @@
stack.use(amount)
else
if(!user.unEquip(O))
- user << "/the [O] is stuck to your hand, you can't put it in \the [src]!"
+ user << "/the [O] is stuck to your hand, you can't put it in \the [src]!"
O.loc = src
icon_state = "autolathe"
busy = 1
use_power(max(1000, (m_amt+g_amt)*amount/10))
src.m_amount += m_amt * amount
src.g_amount += g_amt * amount
- user << "You insert [amount] sheet[amount>1 ? "s" : ""] to the autolathe."
+ user << "You insert [amount] sheet[amount>1 ? "s" : ""] to the autolathe."
if (O && O.loc == src)
qdel(O)
busy = 0
diff --git a/code/game/machinery/bots/bots.dm b/code/game/machinery/bots/bots.dm
index c0b32b5d4d8..9e33f0731db 100644
--- a/code/game/machinery/bots/bots.dm
+++ b/code/game/machinery/bots/bots.dm
@@ -128,7 +128,7 @@
if(locked) //First emag application unlocks the bot's interface. Apply a screwdriver to use the emag again.
locked = 0
emagged = 1
- user << "You bypass [src]'s controls."
+ user << "You bypass [src]'s controls."
if(!locked && open) //Bot panel is unlocked by ID or emag, and the panel is screwed open. Ready for emagging.
emagged = 2
remote_disabled = 1 //Manually emagging the bot locks out the AI built in panel.
@@ -136,15 +136,15 @@
bot_reset()
turn_on() //The bot automatically turns on when emagged, unless recently hit with EMP.
else //Bot is unlocked, but the maint panel has not been opened with a screwdriver yet.
- user << "You need to open maintenance panel first."
+ user << "You need to open maintenance panel first!"
/obj/machinery/bot/examine(mob/user)
..()
if (health < maxhealth)
if (health > maxhealth/3)
- user << "[src]'s parts look loose."
+ user << "[src]'s parts look loose."
else
- user << "[src]'s parts look very loose."
+ user << "[src]'s parts look very loose!"
else
user << "[src] is in pristine condition."
@@ -248,17 +248,17 @@
user.changeNext_move(CLICK_CD_MELEE)
if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
if(health >= maxhealth)
- user << "[src] does not need a repair."
+ user << "[src] does not need a repair!"
return
if(!open)
- user << "Unable to repair with the maintenance panel closed."
+ user << "Unable to repair with the maintenance panel closed!"
return
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
health = min(maxhealth, health+10)
- user.visible_message("[user] repairs [src]!","You repair [src]!")
+ user.visible_message("[user] repairs [src]!","You repair [src].")
else
- user << "The welder must be on for this task."
+ user << "The welder must be on for this task!"
else
if(W.force) //if force is non-zero
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index 0e210e2918a..c198b798974 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -267,7 +267,7 @@ Auto Patrol[]"},
var/area/location = get_area(src)
speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].", radio_frequency)
target.visible_message("[src] has stunned [target]!",\
- "[src] has stunned [target]!")
+ "[src] has stunned you!")
mode = BOT_PREP_ARREST
anchored = 1
@@ -297,7 +297,7 @@ Auto Patrol[]"},
mode = BOT_ARREST
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
target.visible_message("[src] is trying to put zipties on [target]!",\
- "[src] is trying to put zipties on [target]!")
+ "[src] is trying to put zipties on you!")
spawn(60)
if( !Adjacent(target) || !isturf(target.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
@@ -585,7 +585,7 @@ Auto Patrol[]"},
if(WT.remove_fuel(0,user))
build_step++
name = "shielded frame assembly"
- user << "You welded the vest to [src]."
+ user << "You weld the vest to [src]."
if(4)
switch(lasercolor)
if("b")
@@ -622,7 +622,7 @@ Auto Patrol[]"},
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/coil = W
if (coil.get_amount() < 1)
- user << "You need one length of cable to wire the ED-209."
+ user << "You need one length of cable to wire the ED-209!"
return
user << "You start to wire [src]..."
if (do_after(user, 40))
@@ -659,7 +659,7 @@ Auto Patrol[]"},
if(istype(W, /obj/item/weapon/screwdriver))
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
var/turf/T = get_turf(user)
- user << "Now attaching the gun to the frame..."
+ user << "You start attaching the gun to the frame..."
sleep(40)
if(get_turf(user) == T)
build_step++
diff --git a/code/game/machinery/bots/floorbot.dm b/code/game/machinery/bots/floorbot.dm
index 11885135158..fb262db136f 100644
--- a/code/game/machinery/bots/floorbot.dm
+++ b/code/game/machinery/bots/floorbot.dm
@@ -139,7 +139,7 @@
nagged = 0
updateicon()
else
- user << "You need at least one floor tile to put into [src]"
+ user << "You need at least one floor tile to put into [src]!"
else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(allowed(user) && !open && !emagged)
locked = !locked
@@ -466,7 +466,7 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target)
..()
return
if(contents.len >= 1)
- user << "They won't fit in, as there is already stuff inside."
+ user << "They won't fit in, as there is already stuff inside!"
return
if(T.use(10))
if(user.s_active)
@@ -477,7 +477,7 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target)
user.unEquip(src, 1)
qdel(src)
else
- user << "You need 10 floor tiles to start building a floorbot."
+ user << "You need 10 floor tiles to start building a floorbot!"
return
/obj/item/weapon/toolbox_tiles/attackby(var/obj/item/W, mob/user as mob, params)
@@ -487,7 +487,7 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target)
var/obj/item/weapon/toolbox_tiles_sensor/B = new /obj/item/weapon/toolbox_tiles_sensor()
B.created_name = created_name
user.put_in_hands(B)
- user << "You add the sensor to the toolbox and tiles!"
+ user << "You add the sensor to the toolbox and tiles."
user.unEquip(src, 1)
qdel(src)
@@ -507,7 +507,7 @@ obj/machinery/bot/floorbot/process_scan(var/scan_target)
var/turf/T = get_turf(user.loc)
var/obj/machinery/bot/floorbot/A = new /obj/machinery/bot/floorbot(T)
A.name = created_name
- user << "You add the robot arm to the odd looking toolbox assembly! Boop beep!"
+ user << "You add the robot arm to the odd looking toolbox assembly. Boop beep!"
user.unEquip(src, 1)
qdel(src)
else if (istype(W, /obj/item/weapon/pen))
diff --git a/code/game/machinery/bots/medbot.dm b/code/game/machinery/bots/medbot.dm
index 04be70bdf3c..3ac38374cc6 100644
--- a/code/game/machinery/bots/medbot.dm
+++ b/code/game/machinery/bots/medbot.dm
@@ -234,16 +234,16 @@
if(emagged)
user << "ERROR"
if(open)
- user << "Please close the access panel before locking it."
+ user << "Please close the access panel before locking it!"
else
user << "Access denied."
else if (istype(W, /obj/item/weapon/reagent_containers/glass))
if(locked)
- user << "You cannot insert a beaker because the panel is locked."
+ user << "You cannot insert a beaker because the panel is locked!"
return
if(!isnull(reagent_glass))
- user << "There is already a beaker loaded."
+ user << "There is already a beaker loaded!"
return
user.drop_item()
@@ -264,7 +264,7 @@
if(emagged == 2)
declare_crit = 0
if(user)
- user << "You short out [src]'s reagent synthesis circuits."
+ user << "You short out [src]'s reagent synthesis circuits."
spawn(0)
audible_message("[src] buzzes oddly!")
flick("medibot_spark", src)
@@ -482,7 +482,7 @@
return
else
C.visible_message("[src] is trying to inject [patient]!", \
- "[src] is trying to inject [patient]!")
+ "[src] is trying to inject you!")
spawn(30)
if ((get_dist(src, patient) <= 1) && (on))
@@ -492,8 +492,8 @@
reagent_glass.reagents.reaction(patient, INGEST)
else
patient.reagents.add_reagent(reagent_id,injection_amount)
- C.visible_message("[src] injects [patient] with the syringe!", \
- "[src] injects [patient] with the syringe!")
+ C.visible_message("[src] injects [patient] with its syringe!", \
+ "[src] injects you with its syringe!")
patient = null
mode = BOT_IDLE
@@ -553,7 +553,7 @@
//Making a medibot!
if(contents.len >= 1)
- user << "You need to empty [src] out first."
+ user << "You need to empty [src] out first!"
return
var/obj/item/weapon/firstaid_arm_assembly/A = new /obj/item/weapon/firstaid_arm_assembly
@@ -598,7 +598,7 @@
user.drop_item()
qdel(W)
build_step++
- user << "You complete the Medibot! Beep boop."
+ user << "You complete the Medibot. Beep boop!"
var/turf/T = get_turf(src)
var/obj/machinery/bot/medbot/S = new /obj/machinery/bot/medbot(T)
S.skin = skin
diff --git a/code/game/machinery/bots/mulebot.dm b/code/game/machinery/bots/mulebot.dm
index 5b5b65e1ea1..17e2305723b 100644
--- a/code/game/machinery/bots/mulebot.dm
+++ b/code/game/machinery/bots/mulebot.dm
@@ -98,7 +98,7 @@ obj/machinery/bot/mulebot/bot_reset()
updateDialog()
else if(istype(I,/obj/item/weapon/screwdriver))
if(locked)
- user << "The maintenance hatch cannot be opened or closed while the controls are locked."
+ user << "The maintenance hatch cannot be opened or closed while the controls are locked!"
return
open = !open
@@ -115,8 +115,8 @@ obj/machinery/bot/mulebot/bot_reset()
if (health < maxhealth)
health = min(maxhealth, health+25)
user.visible_message(
- "[user] repairs [src]!",
- "You repair [src]!"
+ "[user] repairs [src]!",
+ "You repair [src]."
)
else
user << " [src] does not need a repair!"
@@ -128,7 +128,7 @@ obj/machinery/bot/mulebot/bot_reset()
unload(0)
user.visible_message(" [user] knocks [load] off [src] with \the [I]!", " You knock [load] off [src] with \the [I]!")
else
- user << "You hit [src] with \the [I] but to no effect."
+ user << "You hit [src] with \the [I] but to no effect!"
else
..()
return
@@ -266,7 +266,7 @@ obj/machinery/bot/mulebot/bot_reset()
turn_off()
else if (cell && !open)
if (!turn_on())
- usr << "You can't switch on [src]."
+ usr << "You can't switch on [src]!"
return
else
return
@@ -281,7 +281,7 @@ obj/machinery/bot/mulebot/bot_reset()
cell.add_fingerprint(usr)
cell = null
- usr.visible_message("[usr] removes the power cell from [src].", "You remove the power cell from [src].")
+ usr.visible_message("[usr] removes the power cell from [src].", "You remove the power cell from [src].")
updateDialog()
if("cellinsert")
@@ -293,7 +293,7 @@ obj/machinery/bot/mulebot/bot_reset()
C.loc = src
C.add_fingerprint(usr)
- usr.visible_message("[usr] inserts a power cell into [src].", "You insert the power cell into [src].")
+ usr.visible_message("[usr] inserts a power cell into [src].", "You insert the power cell into [src].")
updateDialog()
@@ -399,7 +399,7 @@ obj/machinery/bot/mulebot/bot_reset()
// called to load a crate
/obj/machinery/bot/mulebot/proc/load(var/atom/movable/C)
if(wires.LoadCheck() && !istype(C,/obj/structure/closet/crate))
- visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
+ visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
return // if not emagged, only allow crates to be loaded
@@ -593,25 +593,25 @@ obj/machinery/bot/mulebot/bot_reset()
blockcount++
mode = BOT_BLOCKED
if(blockcount == 3)
- visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
+ visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
if(blockcount > 10) // attempt 10 times before recomputing
// find new path excluding blocked turf
- visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
+ visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
spawn(2)
calc_path(next)
if(path.len > 0)
- visible_message("[src] makes a delighted ping!", "You hear a ping.")
+ visible_message("[src] makes a delighted ping!", "You hear a ping.")
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
mode = BOT_BLOCKED
mode = BOT_WAIT_FOR_NAV
return
return
else
- visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
+ visible_message("[src] makes an annoyed buzzing sound.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-two.ogg', 50, 0)
//world << "Bad turf."
mode = BOT_NAV
@@ -631,11 +631,11 @@ obj/machinery/bot/mulebot/bot_reset()
if(path.len > 0)
blockcount = 0
mode = BOT_BLOCKED
- visible_message("[src] makes a delighted ping!", "You hear a ping.")
+ visible_message("[src] makes a delighted ping!", "You hear a ping.")
playsound(loc, 'sound/machines/ping.ogg', 50, 0)
else
- visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
+ visible_message("[src] makes a sighing buzz.", "You hear an electronic buzzing sound.")
playsound(loc, 'sound/machines/buzz-sigh.ogg', 50, 0)
mode = BOT_NO_ROUTE
@@ -682,7 +682,7 @@ obj/machinery/bot/mulebot/bot_reset()
/obj/machinery/bot/mulebot/proc/at_target()
if(!reached_target)
radio_frequency = SUPP_FREQ //Supply channel
- visible_message("[src] makes a chiming sound!", "You hear a chime.")
+ visible_message("[src] makes a chiming sound!", "You hear a chime.")
playsound(loc, 'sound/machines/chime.ogg', 50, 0)
reached_target = 1
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index fd2ac1c9d82..b8a0114fc33 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -230,7 +230,7 @@ Auto Patrol: []"},
var/area/location = get_area(src)
speak("[arrest_type ? "Detaining" : "Arresting"] level [threatlevel] scumbag [target] in [location].", radio_frequency)
target.visible_message("[src] has stunned [target]!",\
- "[src] has stunned [target]!")
+ "[src] has stunned you!")
mode = BOT_PREP_ARREST
anchored = 1
@@ -260,7 +260,7 @@ Auto Patrol: []"},
mode = BOT_ARREST
playsound(loc, 'sound/weapons/cablecuff.ogg', 30, 1, -2)
target.visible_message("[src] is trying to put zipties on [target]!",\
- "[src] is trying to put zipties on [target]!")
+ "[src] is trying to put zipties on you!")
spawn(60)
if( !Adjacent(target) || !isturf(target.loc) ) //if he's in a closet or not adjacent, we cancel cuffing.
return
@@ -395,10 +395,10 @@ Auto Patrol: []"},
return
if(!helmetCam) //I am so sorry for this. I could not think of a less terrible (and lazy) way.
- user << "[src] needs to have a camera attached first."
+ user << "[src] needs to have a camera attached first!"
return
if(F) //Has a flashlight. Player must remove it, else it will be lost forever.
- user << "The mounted flashlight is in the way, remove it first."
+ user << "The mounted flashlight is in the way, remove it first!"
return
if(S.secured)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index f93b7f48696..347bb920016 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -133,7 +133,7 @@
//user << "You start to [panel_open ? "close" : "open"] the camera's panel."
//if(toggle_panel(user)) // No delay because no one likes screwdrivers trying to be hip and have a duration cooldown
panel_open = !panel_open
- user.visible_message("[user] screws the camera's panel [panel_open ? "open" : "closed"]!",
+ user.visible_message("[user] screws the camera's panel [panel_open ? "open" : "closed"]!",
"You screw the camera's panel [panel_open ? "open" : "closed"].")
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
@@ -142,7 +142,7 @@
else if(istype(W, /obj/item/weapon/weldingtool) && wires.CanDeconstruct())
if(weld(W, user))
- user << "You unweld the camera leaving it as just a frame screwed to the wall."
+ user << "You unweld the camera leaving it as just a frame screwed to the wall."
if(!assembly)
assembly = new()
assembly.loc = src.loc
@@ -191,7 +191,7 @@
P = W
itemname = P.name
info = P.notehtml
- U << "You hold \the [itemname] up to the camera ..."
+ U << "You hold \the [itemname] up to the camera..."
U.changeNext_move(CLICK_CD_MELEE)
for(var/mob/O in player_list)
if(istype(O, /mob/living/silicon/ai))
@@ -321,7 +321,7 @@
if(!WT.remove_fuel(0, user))
return 0
- user << "You start to weld [src]."
+ user << "You start to weld [src]..."
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
busy = 1
if(do_after(user, 100))
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index 10d4c1716b6..e5544d1d410 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -30,7 +30,7 @@
// State 0
if(istype(W, /obj/item/weapon/wrench) && isturf(src.loc))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- user << "You wrench the assembly into place."
+ user << "You wrench the assembly into place."
anchored = 1
state = 1
update_icon()
@@ -41,14 +41,14 @@
// State 1
if(istype(W, /obj/item/weapon/weldingtool))
if(weld(W, user))
- user << "You weld the assembly securely into place."
+ user << "You weld the assembly securely into place."
anchored = 1
state = 2
return
else if(istype(W, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- user << "You unattach the assembly from its place."
+ user << "You unattach the assembly from its place."
anchored = 0
update_icon()
state = 0
@@ -62,14 +62,14 @@
user << "You add wires to the assembly."
state = 3
else
- user << "You need two lengths of cable to wire a camera."
+ user << "You need two lengths of cable to wire a camera!"
return
return
else if(istype(W, /obj/item/weapon/weldingtool))
if(weld(W, user))
- user << "You unweld the assembly from its place."
+ user << "You unweld the assembly from its place."
state = 1
anchored = 1
return
@@ -82,12 +82,12 @@
var/input = stripped_input(usr, "Which networks would you like to connect this camera to? Seperate networks with a comma. No Spaces!\nFor example: SS13,Security,Secret ", "Set Network", "SS13")
if(!input)
- usr << "No input found please hang up and try your call again."
+ usr << "No input found, please hang up and try your call again!"
return
var/list/tempnetwork = text2list(input, ",")
if(tempnetwork.len < 1)
- usr << "No network found please hang up and try your call again."
+ usr << "No network found, please hang up and try your call again!"
return
state = 4
@@ -115,13 +115,13 @@
new/obj/item/stack/cable_coil(get_turf(src), 2)
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
- user << "You cut the wires from the circuits."
+ user << "You cut the wires from the circuits."
state = 2
return
// Upgrades!
if(is_type_in_list(W, possible_upgrades) && !is_type_in_list(W, upgrades)) // Is a possible upgrade and isn't in the camera already.
- user << "You attach \the [W] into the assembly inner circuits."
+ user << "You attach \the [W] into the assembly inner circuits."
upgrades += W
user.drop_item()
W.loc = src
@@ -131,7 +131,7 @@
else if(istype(W, /obj/item/weapon/crowbar) && upgrades.len)
var/obj/U = locate(/obj) in upgrades
if(U)
- user << "You unattach an upgrade from the assembly."
+ user << "You unattach an upgrade from the assembly."
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
U.loc = get_turf(src)
upgrades -= U
@@ -156,7 +156,7 @@
if(!WT.remove_fuel(0, user))
return 0
- user << "You start to weld \the [src].."
+ user << "You start to weld \the [src]..."
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
busy = 1
if(do_after(user, 20))
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 59731eaa01b..e1b05f5c6c8 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -38,25 +38,25 @@
if(istype(W, /obj/item/weapon/stock_parts/cell) && anchored)
if(charging)
- user << "There is already a cell in the charger."
+ user << "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!
- user << "The [name] blinks red as you try to insert the cell!"
+ user << "The [name] blinks red as you try to insert the cell!"
return
user.drop_item()
W.loc = src
charging = W
- user.visible_message("[user] inserts a cell into the charger.", "You insert a cell into the charger.")
+ user.visible_message("[user] inserts a cell into the charger.", "You insert a cell into the charger.")
chargelevel = -1
updateicon()
else if(istype(W, /obj/item/weapon/wrench))
if(charging)
- user << "Remove the cell first!"
+ user << "Remove the cell first!"
return
anchored = !anchored
@@ -76,7 +76,7 @@
user.put_in_hands(charging)
charging.add_fingerprint(user)
- user.visible_message("[user] removes the cell from the charger.", "You remove the cell from the charger.")
+ user.visible_message("[user] removes the cell from the charger.", "You remove the cell from the charger.")
removecell()
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index ab45982bb34..87be0acbdf5 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -83,7 +83,7 @@
/obj/item/weapon/disk/data/attack_self(mob/user as mob)
read_only = !read_only
- user << "You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"]."
+ user << "You flip the write-protect tab to [src.read_only ? "protected" : "unprotected"]."
/obj/item/weapon/disk/data/examine(mob/user)
..()
@@ -270,7 +270,7 @@
/obj/machinery/clonepod/emag_act(user as mob)
if (isnull(src.occupant))
return
- user << "You force an emergency ejection."
+ user << "You force an emergency ejection."
src.locked = 0
src.go_out()
diff --git a/code/game/machinery/computer/HolodeckControl.dm b/code/game/machinery/computer/HolodeckControl.dm
index c96493032e7..6d127808ceb 100644
--- a/code/game/machinery/computer/HolodeckControl.dm
+++ b/code/game/machinery/computer/HolodeckControl.dm
@@ -308,7 +308,7 @@
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
var/obj/item/weapon/grab/G = W
if(G.state < GRAB_AGGRESSIVE)
- user << " You need a better grip to do that!"
+ user << " You need a better grip to do that!"
return
G.affecting.loc = src.loc
G.affecting.Weaken(5)
@@ -427,7 +427,7 @@
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
var/obj/item/weapon/grab/G = W
if(G.state < GRAB_AGGRESSIVE)
- user << "You need a better grip to do that!"
+ user << "You need a better grip to do that!"
return
G.affecting.loc = src.loc
G.affecting.Weaken(5)
@@ -474,7 +474,7 @@
return
/obj/machinery/readybutton/attack_paw(mob/user as mob)
- user << "You are too primitive to use this device"
+ user << "You are too primitive to use this device!"
return
/obj/machinery/readybutton/New()
@@ -486,7 +486,7 @@
/obj/machinery/readybutton/attack_hand(mob/user as mob)
if(user.stat || stat & (NOPOWER|BROKEN))
- user << "This device is not powered."
+ user << "This device is not powered!"
return
currentarea = get_area(src.loc)
@@ -494,7 +494,7 @@
qdel(src)
if(eventstarted)
- usr << "The event has already begun!"
+ usr << "The event has already begun!"
return
ready = !ready
diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm
index 696952e9b89..48be900d0a9 100644
--- a/code/game/machinery/computer/ai_core.dm
+++ b/code/game/machinery/computer/ai_core.dm
@@ -15,6 +15,7 @@
if(0)
if(istype(P, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
+ user << "You start wrenching the frame into place..."
if(do_after(user, 20))
user << "You wrench the frame into place."
anchored = 1
@@ -22,9 +23,10 @@
if(istype(P, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = P
if(!WT.isOn())
- user << "The welder must be on for this task."
+ user << "The welder must be on for this task!"
return
playsound(loc, 'sound/items/Welder.ogg', 50, 1)
+ user << "You start to deconstruct the frame..."
if(do_after(user, 20))
if(!src || !WT.remove_fuel(0, user)) return
user << "You deconstruct the frame."
@@ -33,6 +35,7 @@
if(1)
if(istype(P, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
+ user << "You start to unfasten the frame..."
if(do_after(user, 20))
user << "You unfasten the frame."
anchored = 0
@@ -66,6 +69,7 @@
var/obj/item/stack/cable_coil/C = P
if(C.get_amount() >= 5)
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ user << "You start to add cables to the frame..."
if(do_after(user, 20))
if (C.get_amount() >= 5 && state == 2)
C.use(5)
@@ -73,12 +77,12 @@
state = 3
icon_state = "3"
else
- user << "You need five lengths of cable to wire the AI core."
+ user << "You need five lengths of cable to wire the AI core!"
return
if(3)
if(istype(P, /obj/item/weapon/wirecutters))
if (brain)
- user << "Get that brain out of there first."
+ user << "Get that brain out of there first!"
else
playsound(loc, 'sound/items/Wirecutter.ogg', 50, 1)
user << "You remove the cables."
@@ -91,6 +95,7 @@
var/obj/item/stack/sheet/rglass/G = P
if(G.get_amount() >= 2)
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
+ user << "You start to put in the glass panel..."
if(do_after(user, 20))
if (G.get_amount() >= 2 && state == 3)
G.use(2)
@@ -98,7 +103,7 @@
state = 4
icon_state = "4"
else
- user << "You need two sheets of reinforced glass to insert them into AI core."
+ user << "You need two sheets of reinforced glass to insert them into AI core!"
return
if(istype(P, /obj/item/weapon/aiModule/core/full)) //Allows any full core boards to be applied to AI cores.
@@ -123,22 +128,22 @@
if(istype(P, /obj/item/device/mmi))
var/obj/item/device/mmi/M = P
if(!M.brainmob)
- user << "Sticking an empty MMI into the frame would sort of defeat the purpose."
+ user << "Sticking an empty MMI into the frame would sort of defeat the purpose!"
return
if(M.brainmob.stat == 2)
- user << "Sticking a dead brain into the frame would sort of defeat the purpose."
+ user << "Sticking a dead brain into the frame would sort of defeat the purpose!"
return
if((config) && (!config.allow_ai))
- user << "This MMI does not seem to fit."
+ user << "This MMI does not seem to fit!"
return
if(jobban_isbanned(M.brainmob, "AI"))
- user << "This MMI does not seem to fit."
+ user << "This MMI does not seem to fit!"
return
if(!M.brainmob.mind)
- user << "This MMI is mindless."
+ user << "This MMI is mindless!"
return
ticker.mode.remove_cultist(M.brainmob.mind, 1)
@@ -193,10 +198,12 @@
A.transfer_ai("INACTIVE","AICARD",src,user)
if(istype(A, /obj/item/weapon/wrench))
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
+ user.visible_message("[user] [anchored ? "fastens" : "unfastens"] [src].", \
+ "You start to [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor...")
switch(anchored)
if(0)
if(do_after(user, 20))
- user << "You wrench the core into place."
+ user << "You fasten the core into place."
anchored = 1
if(1)
if(do_after(user, 20))
diff --git a/code/game/machinery/computer/arcade.dm b/code/game/machinery/computer/arcade.dm
index 76d084ffba7..f99fea98baa 100644
--- a/code/game/machinery/computer/arcade.dm
+++ b/code/game/machinery/computer/arcade.dm
@@ -31,7 +31,8 @@
/obj/item/toy/foamblade = 2,
/obj/item/toy/redbutton = 2,
/obj/item/toy/owl = 2,
- /obj/item/toy/griffin = 2
+ /obj/item/toy/griffin = 2,
+ /obj/item/weapon/coin/antagtoken = 2,
)
/obj/machinery/computer/arcade/New()
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 0250b8575d7..c9a01b96900 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -303,31 +303,31 @@
if(0)
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- user << "You start wrenching the frame into place."
+ user << "You start wrenching the frame into place..."
if(do_after(user, 20))
- user << "You've wrenched the frame into place."
+ user << "You wrench the frame into place."
anchored = 1
state = 1
if(istype(P, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = P
if(!WT.remove_fuel(0, user))
if(!WT.isOn())
- user << "The welding tool must be on to complete this task."
+ user << "The welding tool must be on to complete this task!"
return
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
- user << "You start deconstructing the frame."
+ user << "You start deconstructing the frame..."
if(do_after(user, 20))
if(!src || !WT.isOn()) return
- user << "You've deconstructed the frame."
+ user << "You deconstruct the frame."
var/obj/item/stack/sheet/metal/M = new (loc, 5)
M.add_fingerprint(user)
qdel(src)
if(1)
if(istype(P, /obj/item/weapon/wrench))
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- user << "You start to unfasten the frame."
+ user << "You start to unfasten the frame..."
if(do_after(user, 20))
- user << "You've unfastened the frame."
+ user << "You unfasten the frame."
anchored = 0
state = 0
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
@@ -365,15 +365,15 @@
var/obj/item/stack/cable_coil/C = P
if(C.get_amount() >= 5)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You start adding cables to the frame."
+ user << "You start adding cables to the frame..."
if(do_after(user, 20))
if(C.get_amount() >= 5 && state == 2)
C.use(5)
- user << "You've added cables to the frame."
+ user << "You add cables to the frame."
state = 3
icon_state = "3"
else
- user << "You need five lengths of cable to wire the frame."
+ user << "You need five lengths of cable to wire the frame!"
if(3)
if(istype(P, /obj/item/weapon/wirecutters))
playsound(src.loc, 'sound/items/Wirecutter.ogg', 50, 1)
@@ -387,15 +387,15 @@
if(istype(P, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/glass/G = P
if(G.get_amount() < 2)
- user << "You need two glass sheets to continue construction."
+ user << "You need two glass sheets to continue construction!"
return
else
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You start to put in the glass panel."
+ user << "You start to put in the glass panel..."
if(do_after(user, 20))
if(G.get_amount() >= 2 && state == 3)
G.use(2)
- user << "You've put in the glass panel."
+ user << "You put in the glass panel."
state = 4
src.icon_state = "4"
if(4)
diff --git a/code/game/machinery/computer/camera_advanced.dm b/code/game/machinery/computer/camera_advanced.dm
index 8559097293f..169100a2ab8 100644
--- a/code/game/machinery/computer/camera_advanced.dm
+++ b/code/game/machinery/computer/camera_advanced.dm
@@ -3,15 +3,22 @@
desc = "Used to access the various cameras on the station."
icon_state = "cameras"
//circuit = /obj/item/weapon/circuitboard/security
- var/mob/camera/aiEye/remote/eyeobj = new()
+ var/mob/camera/aiEye/remote/eyeobj
var/mob/living/carbon/human/current_user = null
var/list/networks = list("SS13")
var/datum/action/camera_off/off_action = new
var/datum/action/camera_jump/jump_action = new
-/obj/machinery/computer/camera_advanced/New()
+/obj/machinery/computer/camera_advanced/proc/CreateEye()
+ eyeobj = new()
eyeobj.origin = src
+/obj/machinery/computer/camera_advanced/proc/GrantActions(var/mob/living/carbon/user)
+ off_action.target = user
+ off_action.Grant(user)
+ jump_action.target = user
+ jump_action.Grant(user)
+
/obj/machinery/computer/camera_advanced/check_eye(var/mob/user as mob)
if (get_dist(user, src) > 1 || user.eye_blind)
off_action.Activate()
@@ -24,11 +31,11 @@
if(!iscarbon(user))
return
var/mob/living/carbon/L = user
+
if(!current_user)
- off_action.target = user
- off_action.Grant(user)
- jump_action.target = user
- jump_action.Grant(user)
+ if(!eyeobj)
+ CreateEye()
+ GrantActions(user)
current_user = user
eyeobj.user = user
eyeobj.name = "Camere Eye ([user.name])"
@@ -43,6 +50,8 @@
eyeobj.setLoc(get_turf(C))
break
eyeobj.initialized = 1
+ else
+ eyeobj.setLoc(eyeobj.loc)
else
user << "The console is already in use!"
@@ -57,6 +66,11 @@
var/visible_icon = 0
var/image/user_image = null
+/mob/camera/aiEye/remote/GetViewerClient()
+ if(user)
+ return user.client
+ return null
+
/mob/camera/aiEye/remote/setLoc(var/T)
if(user)
if(!isturf(user.loc))
diff --git a/code/game/machinery/computer/card.dm b/code/game/machinery/computer/card.dm
index acc6cccc4db..180f3dc2fd5 100644
--- a/code/game/machinery/computer/card.dm
+++ b/code/game/machinery/computer/card.dm
@@ -354,7 +354,7 @@ var/time_last_changed_position = 0
if(region_access)
authenticated = 1
else if ((!( authenticated ) && (istype(usr, /mob/living/silicon))) && (!modify))
- 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."
+ 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."
if ("logout")
region_access = null
head_subordinates = null
diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm
index 240cdaa11b7..38489cb1497 100644
--- a/code/game/machinery/computer/cloning.dm
+++ b/code/game/machinery/computer/cloning.dm
@@ -79,7 +79,7 @@
user.drop_item()
W.loc = src
src.diskette = W
- user << "You insert [W]."
+ user << "You insert [W]."
src.updateUsrDialog()
return
else
diff --git a/code/game/machinery/computer/communications.dm b/code/game/machinery/computer/communications.dm
index 1c0138f4c66..c335d4ad6f6 100644
--- a/code/game/machinery/computer/communications.dm
+++ b/code/game/machinery/computer/communications.dm
@@ -103,11 +103,11 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
feedback_inc("alert_comms_blue",1)
tmp_alertlevel = 0
else:
- usr << "You are not authorized to do this."
+ usr << "You are not authorized to do this!"
tmp_alertlevel = 0
state = STATE_DEFAULT
else
- usr << "You need to swipe your ID."
+ usr << "You need to swipe your ID!"
if("announce")
if(src.authenticated==2 && !message_cooldown)
@@ -333,7 +333,7 @@ var/const/CALL_SHUTTLE_REASON_LENGTH = 12
src.emagged = 1
if(authenticated == 1)
authenticated = 2
- user << "You scramble the communication routing circuits!"
+ user << "You scramble the communication routing circuits."
/obj/machinery/computer/communications/attack_hand(var/mob/user as mob)
if(..())
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index a284f291fd0..18f8925050f 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -97,7 +97,7 @@
/obj/machinery/computer/attackby(I as obj, user as mob, params)
if(istype(I, /obj/item/weapon/screwdriver) && circuit)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- user << " You start to disconnect the monitor."
+ user << " You start to disconnect the monitor..."
if(do_after(user, 20))
var/obj/structure/computerframe/A = new /obj/structure/computerframe( src.loc )
A.circuit = circuit
@@ -127,12 +127,12 @@
if(prob(10))
user.visible_message("[user.name] smashes the [src.name] with its paws.",\
"You smash the [src.name] with your paws.",\
- "You hear a smashing sound.")
+ "You hear a smashing sound.")
set_broken()
return
user.visible_message("[user.name] smashes against the [src.name] with its paws.",\
"You smash against the [src.name] with your paws.",\
- "You hear a clicking sound.")
+ "You hear hear a clicking sound.")
/obj/machinery/computer/attack_alien(mob/living/user)
user.do_attack_animation(src)
@@ -140,9 +140,9 @@
if(prob(80))
user.visible_message("[user.name] smashes the [src.name] with its claws.",\
"You smash the [src.name] with your claws.",\
- "You hear a smashing sound.")
+ "You hear a smashing sound.")
set_broken()
return
user.visible_message("[user.name] smashes against the [src.name] with its claws.",\
"You smash against the [src.name] with your claws.",\
- "You hear a clicking sound.")
+ "You hear a clicking sound.")
diff --git a/code/game/machinery/computer/law.dm b/code/game/machinery/computer/law.dm
index c314be68b5e..0ab00973dd5 100644
--- a/code/game/machinery/computer/law.dm
+++ b/code/game/machinery/computer/law.dm
@@ -10,7 +10,7 @@
if(src.stat & (NOPOWER|BROKEN|MAINT))
return
if(!current)
- user << "You haven't selected anything to transmit laws to!"
+ user << "You haven't selected anything to transmit laws to!"
return
if(!can_upload_to(current))
user << "Upload failed! Check to make sure [current.name] is functioning properly."
@@ -43,7 +43,7 @@
src.current = select_active_ai(user)
if (!src.current)
- user << "No active AIs detected."
+ user << "No active AIs detected!"
else
user << "[src.current.name] selected for law changes."
@@ -68,7 +68,7 @@
src.current = select_active_free_borg(user)
if(!src.current)
- user << "No active unslaved cyborgs detected."
+ user << "No active unslaved cyborgs detected!"
else
user << "[src.current.name] selected for law changes."
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index bc686b127d9..8a52e787827 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -24,7 +24,7 @@
usr.drop_item()
O.loc = src
scan = O
- user << "You insert [O]."
+ user << "You insert [O]."
else
..()
diff --git a/code/game/machinery/computer/prisoner.dm b/code/game/machinery/computer/prisoner.dm
index d58f416f99c..c021d2e158a 100644
--- a/code/game/machinery/computer/prisoner.dm
+++ b/code/game/machinery/computer/prisoner.dm
@@ -132,7 +132,7 @@
var/obj/item/weapon/implant/I = locate(href_list["warn"])
if((I)&&(I.imp_in))
var/mob/living/carbon/R = I.imp_in
- R << "You hear a voice in your head saying: '[warning]'"
+ R << "You hear a voice in your head saying: '[warning]'"
log_say("[usr]/[usr.ckey] sent an implant message to [R]/[R.ckey]: '[warning]'")
src.add_fingerprint(usr)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index f4f5f3c9d00..3ac9f1abf03 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -28,7 +28,7 @@
usr.drop_item()
O.loc = src
scan = O
- user << "You insert [O]."
+ user << "You insert [O]."
else
..()
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index 781cc48cf99..c2a98ae7c84 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -55,7 +55,7 @@
/obj/machinery/constructable_frame/machine_frame/attackby(obj/item/P as obj, mob/user as mob, params)
if(P.crit_fail)
- user << "This part is faulty, you cannot add this to the machine!"
+ user << "This part is faulty, you cannot add this to the machine!"
return
switch(state)
if(1)
@@ -207,7 +207,7 @@
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CP = P
if (CP.get_amount() < 1)
- user << "You need more cable!"
+ user << "You need more cable!"
return
var/obj/item/stack/cable_coil/CC = new /obj/item/stack/cable_coil(src, 1, CP.item_color)
if(CP.use(1))
@@ -222,7 +222,7 @@
update_req_desc()
return 1
if(!success)
- user << "You cannot add that to the machine!"
+ user << "You cannot add that to the machine!"
return 0
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 6c57394b1ef..851bf6e643f 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -230,13 +230,13 @@
/obj/machinery/atmospherics/unary/cryo_cell/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(beaker)
- user << "A beaker is already loaded into [src]."
+ user << "A beaker is already loaded into [src]!"
return
beaker = I
user.drop_item()
I.loc = src
- user.visible_message("[user] places [I] in [src].", \
+ user.visible_message("[user] places [I] in [src].", \
"You place [I] in [src].")
if(!(on || occupant || state_open))
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 98c7cf1fff0..471818ca3c4 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -67,11 +67,11 @@ for reference:
user.changeNext_move(CLICK_CD_MELEE)
if (istype(W, /obj/item/stack/sheet/mineral/wood))
if (src.health < src.maxhealth)
- visible_message("[user] begins to repair \the [src]!")
+ visible_message("[user] begins to repair \the [src]!", "You begin to repair \the [src]...")
if(do_after(user,20))
src.health = src.maxhealth
W:use(1)
- visible_message("[user] repairs \the [src]!")
+ visible_message("[user] repairs \the [src]!", "You repair \the [src].")
return
else
return
@@ -84,7 +84,7 @@ for reference:
src.health -= W.force * 0.75
else
if (src.health <= 0)
- visible_message("The barricade is smashed apart!")
+ visible_message("The barricade is smashed apart!")
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
@@ -94,13 +94,13 @@ for reference:
/obj/structure/barricade/wooden/ex_act(severity, target)
switch(severity)
if(1.0)
- visible_message("The barricade is blown apart!")
+ visible_message("The barricade is blown apart!")
qdel(src)
return
if(2.0)
src.health -= 25
if (src.health <= 0)
- visible_message("The barricade is blown apart!")
+ visible_message("The barricade is blown apart!")
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
new /obj/item/stack/sheet/mineral/wood(get_turf(src))
@@ -110,7 +110,7 @@ for reference:
/obj/structure/barricade/wooden/blob_act()
src.health -= 25
if (src.health <= 0)
- visible_message("The blob eats through the barricade!")
+ visible_message("The blob eats through the barricade!")
qdel(src)
return
@@ -196,7 +196,7 @@ for reference:
if (src.emagged == 0)
src.emagged = 1
src.req_access = null
- user << "You break the ID authentication lock on \the [src]."
+ user << "You break the ID authentication lock on \the [src]."
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
@@ -204,7 +204,7 @@ for reference:
return
else if (src.emagged == 1)
src.emagged = 2
- user << "You short out the anchoring mechanism on \the [src]."
+ user << "You short out the anchoring mechanism on \the [src]."
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, src)
s.start()
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 003ac40d218..64117c66660 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -640,7 +640,7 @@ About the new airlock wires panel:
playsound(src.loc, 'sound/effects/bang.ogg', 25, 1)
if(!istype(H.head, /obj/item/clothing/head/helmet))
H.visible_message("[user] headbutts the airlock.", \
- "[user] headbutts the airlock!")
+ "You headbutt the airlock!")
var/obj/item/organ/limb/affecting = H.get_organ("head")
H.Stun(5)
H.Weaken(5)
@@ -889,9 +889,9 @@ About the new airlock wires panel:
if((istype(C, /obj/item/weapon/weldingtool) && !( src.operating ) && src.density))
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0,user))
- user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \
- "You begin [welded ? "unwelding":"welding"] the airlock...", \
- "You hear welding.")
+ user.visible_message("[user] is [welded ? "unwelding":"welding"] the airlock.", \
+ "You begin [welded ? "unwelding":"welding"] the airlock...", \
+ "You hear welding.")
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
if(do_after(user,40,5,1))
if(density && !operating)//Door must be closed to weld.
@@ -899,8 +899,8 @@ About the new airlock wires panel:
return
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
welded = !welded
- user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \
- "You've [welded ? "welded the airlock shut":"unwelded the airlock"].")
+ user.visible_message("[user.name] has [welded? "welded shut":"unwelded"] [src].", \
+ "You [welded ? "weld the airlock shut":"unweld the airlock"].")
update_icon()
return
else if(istype(C, /obj/item/weapon/screwdriver))
@@ -924,8 +924,8 @@ About the new airlock wires panel:
beingcrowbarred = 0
if( beingcrowbarred && (density && welded && !operating && src.p_open && (!hasPower()) && !src.locked) )
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] removes the electronics from the airlock assembly.", \
- "You start to remove electronics from the airlock assembly.")
+ user.visible_message("[user] removes the electronics from the airlock assembly.", \
+ "You start to remove electronics from the airlock assembly...")
if(do_after(user,40))
if(src.loc)
if(src.doortype)
@@ -935,7 +935,7 @@ About the new airlock wires panel:
user << "You discard the damaged electronics."
qdel(src)
return
- user << "You removed the airlock electronics!"
+ user << "You remove the airlock electronics."
var/obj/item/weapon/airlock_electronics/ae
if(!electronics)
@@ -953,9 +953,9 @@ About the new airlock wires panel:
qdel(src)
return
else if(hasPower())
- user << " The airlock's motors resist your efforts to force it."
+ user << " The airlock's motors resist your efforts to force it!"
else if(locked)
- user << " The airlock's bolts prevent it from being forced."
+ user << " The airlock's bolts prevent it from being forced!"
else if( !welded && !operating)
if(density)
if(beingcrowbarred == 0) //being fireaxe'd
@@ -963,7 +963,7 @@ About the new airlock wires panel:
if(F:wielded)
spawn(0) open(2)
else
- user << "You need to be wielding the Fire axe to do that."
+ user << "You need to be wielding the fire axe to do that!"
else
spawn(0) open(2)
else
@@ -972,7 +972,7 @@ About the new airlock wires panel:
if(F:wielded)
spawn(0) close(2)
else
- user << "You need to be wielding the Fire axe to do that."
+ user << "You need to be wielding the fire axe to do that!"
else
spawn(0) close(2)
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index 412048bb8a5..93331e30e07 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -213,8 +213,8 @@
return
user.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
- user.visible_message("[user] smashes against the [src.name].", \
- "[user] smashes against the [src.name].")
+ user.visible_message("[user] smashes against the [src.name]!", \
+ "You smash against the [src.name]!")
take_damage(damage)
/obj/machinery/door/window/attack_alien(mob/living/user as mob)
@@ -264,7 +264,7 @@
if(istype(I, /obj/item/weapon/screwdriver))
if(src.density || src.operating)
- user << "You need to open the door to access the maintenance panel."
+ user << "You need to open the door to access the maintenance panel!"
return
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
src.p_open = !( src.p_open )
@@ -274,8 +274,8 @@
if(istype(I, /obj/item/weapon/crowbar))
if(p_open && !src.density && !src.operating)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] removes the electronics from the [src.name].", \
- "You start to remove electronics from the [src.name].")
+ user.visible_message("[user] removes the electronics from the [src.name].", \
+ "You start to remove electronics from the [src.name]...")
if(do_after(user,40))
if(src.p_open && !src.density && !src.operating && src.loc)
var/obj/structure/windoor_assembly/WA = new /obj/structure/windoor_assembly(src.loc)
@@ -302,7 +302,7 @@
qdel(src)
return
- user << "You removed the airlock electronics!"
+ user << "You remove the airlock electronics."
var/obj/item/weapon/airlock_electronics/ae
if(!electronics)
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index f575ccd7778..fdea6d8469f 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -40,23 +40,23 @@
/obj/machinery/flasher/attackby(obj/item/weapon/W, mob/user, params)
if (istype(W, /obj/item/weapon/wirecutters))
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.", "You begin to disconnect [src]'s flashbulb...")
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
if(do_after(user, 30) && bulb)
- user.visible_message("[user] has disconnected [src]'s flashbulb!", "You disconnect [src]'s flashbulb!")
+ user.visible_message("[user] has disconnected [src]'s flashbulb!", "You disconnect [src]'s flashbulb.")
bulb.loc = src.loc
bulb = null
power_change()
else if (istype(W, /obj/item/device/flash/handheld))
if (!bulb)
- user.visible_message("[user] installs [W] into [src].", "You install [W] into [src].")
+ user.visible_message("[user] installs [W] into [src].", "You install [W] into [src].")
user.drop_item()
W.loc = src
bulb = W
power_change()
else
- user << "A flashbulb is already installed in [src]."
+ user << "A flashbulb is already installed in [src]!"
add_fingerprint(user)
//Let the AI trigger them directly.
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index aa9be627ab2..0354e94eac4 100644
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -76,10 +76,10 @@
add_fingerprint(user)
src.disable = !src.disable
if (src.disable)
- user.visible_message("[user] has disabled \the [src]!", "You disable the connection to \the [src].")
+ user.visible_message("[user] has disabled \the [src]!", "You disable the connection to \the [src].")
icon_state = "[base_state]-d"
if (!src.disable)
- user.visible_message("[user] has reconnected \the [src]!", "You fix the connection to \the [src].")
+ user.visible_message("[user] has reconnected \the [src]!", "You fix the connection to \the [src].")
if(src.powered())
icon_state = "[base_state]"
else
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index b56321f9588..2255f1c0017 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -53,35 +53,35 @@
return
if(attached)
- visible_message("[attached] is detached from \the [src]")
+ visible_message("[attached] is detached from \the [src].")
attached = null
update_icon()
return
if(!ishuman(target))
- usr << "The drip beeps: Warning, human patients only!"
+ usr << "The drip beeps: Warning, human patients only!"
return
if(Adjacent(target) && usr.Adjacent(target))
if(beaker)
- visible_message("[usr] attaches \the [src] to \the [target].")
+ usr.visible_message("[usr] attaches \the [src] to \the [target].", "You attach \the [src] to \the [target].")
attached = target
SSmachine.processing.Add(src)
update_icon()
else
- usr << "There's nothing attached to the IV drip!"
+ usr << "There's nothing attached to the IV drip!"
/obj/machinery/iv_drip/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if (istype(W, /obj/item/weapon/reagent_containers))
if(!isnull(beaker))
- user << "There is already a reagent container loaded!"
+ user << "There is already a reagent container loaded!"
return
user.drop_item()
W.loc = src
beaker = W
- user << "You attach \the [W] to \the [src]."
+ user << "You attach \the [W] to \the [src]."
update_icon()
return
else
@@ -163,7 +163,7 @@
set src in view(1)
if(!istype(usr, /mob/living))
- usr << "You can't do that."
+ usr << "You can't do that!"
return
if(usr.stat)
@@ -180,7 +180,7 @@
set src in view(1)
if(!istype(usr, /mob/living))
- usr << "You can't do that."
+ usr << "You can't do that!"
return
if(usr.stat)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index bfa9f68ef65..4949aa3024b 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -227,7 +227,7 @@ Class Procs:
if(be_close && in_range(M, src))
return 1
else
- src << "You don't have the dexterity to do this!"
+ src << "You don't have the dexterity to do this!"
return
/mob/living/carbon/human/canUseTopic(atom/movable/M, be_close = 0)
@@ -284,7 +284,7 @@ Class Procs:
if(user.lying || user.stat)
return 1
if(!user.IsAdvancedToolUser())
- usr << "You don't have the dexterity to do this!"
+ usr << "You don't have the dexterity to do this!"
return 1
/*
//distance checks are made by atom/proc/DblClick
@@ -297,7 +297,7 @@ Class Procs:
visible_message("[H] stares cluelessly at [src] and drools.")
return 1
else if(prob(H.getBrainLoss()))
- user << "You momentarily forget how to use [src]."
+ user << "You momentarily forget how to use [src]!"
return 1
src.add_fingerprint(user)
@@ -361,10 +361,10 @@ Class Procs:
/obj/machinery/proc/default_unfasten_wrench(mob/user, obj/item/weapon/wrench/W, time = 20)
if(istype(W))
- user << "Now [anchored ? "un" : ""]securing [name]."
+ user << "You begin [anchored ? "un" : ""]securing [name]..."
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, time))
- user << "You've [anchored ? "un" : ""]secured [name]."
+ user << "You [anchored ? "un" : ""]secure [name]."
anchored = !anchored
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
return 1
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 3851c577c72..7c2a44e115c 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -112,7 +112,7 @@
if(istype(I, /obj/item/weapon/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.", "You [open ? "open" : "close"] the beacon's cover.")
updateicon()
@@ -120,12 +120,12 @@
if(open)
if (src.allowed(user))
src.locked = !src.locked
- user << "Controls are now [src.locked ? "locked." : "unlocked."]"
+ user << "Controls are now [src.locked ? "locked" : "unlocked"]."
else
user << "Access denied."
updateDialog()
else
- user << "You must open the cover first!"
+ user << "You must open the cover first!"
return
/obj/machinery/navbeacon/attack_ai(var/mob/user)
@@ -143,7 +143,7 @@
return // prevent intraction when T-scanner revealed
if(!open && !ai) // can't alter controls if not open, unless you're an AI
- user << "The beacon's control cover is closed."
+ user << "The beacon's control cover is closed!"
return
diff --git a/code/game/machinery/newscaster.dm b/code/game/machinery/newscaster.dm
index a69a1526de8..d374dfb6480 100644
--- a/code/game/machinery/newscaster.dm
+++ b/code/game/machinery/newscaster.dm
@@ -103,13 +103,13 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
var/turf/loc = get_turf(usr)
var/area/A = loc.loc
if (!istype(loc, /turf/simulated/floor))
- usr << "Newscaster cannot be placed on this spot."
+ usr << "Newscaster cannot be placed on this spot!"
return
if (A.requires_power == 0 || A.name == "Space")
- usr << "Newscaster cannot be placed in this area."
+ usr << "Newscaster cannot be placed in this area!"
return
for(var/obj/machinery/newscaster/T in loc)
- usr << "There is another newscaster here."
+ usr << "There is another newscaster here!"
return
var/obj/machinery/newscaster/N = new(loc)
N.pixel_y -= (loc.y - on_wall.y) * 32
@@ -793,9 +793,10 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
/obj/machinery/newscaster/attackby(obj/item/I as obj, mob/living/user as mob, params)
if(istype(I, /obj/item/weapon/wrench))
- user << "Now [anchored ? "un" : ""]securing [name]"
+ user << "You start [anchored ? "un" : ""]securing [name]..."
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 60))
+ user << "You [anchored ? "un" : ""]secure [name]."
new /obj/item/newscaster_frame(loc)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
qdel(src)
@@ -823,12 +824,12 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
audible_message("[user.name] forcefully slams the [src.name] with the [I.name]!", null, 5 )
playsound(src.loc, 'sound/effects/Glasshit.ogg', 100, 1)
else
- user << "This does nothing."
+ user << "This does nothing!"
src.update_icon()
/obj/machinery/newscaster/attack_paw(mob/user as mob)
- user << "The newscaster controls are far too complicated for your tiny brain!"
+ user << "The newscaster controls are far too complicated for your tiny brain!"
return
/obj/machinery/newscaster/proc/AttachPhoto(mob/user as mob)
@@ -860,7 +861,7 @@ var/list/obj/machinery/newscaster/allCasters = list() //Global list that will co
else
targetcam = R.aicamera
else
- user << "You cannot interface with silicon photo uploading" //gtfo pAIs
+ user << "You cannot interface with silicon photo uploading!" //gtfo pAIs
if(targetcam.aipictures.len == 0)
usr << "No images saved"
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index 6e277a7ece8..a4db08cf85b 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -310,7 +310,7 @@ var/global/list/pipeID2State = list(
for(var/obj/machinery/atmospherics/M in src.loc)
if(M.initialize_directions & pipe_dir) // matches at least one direction on either type of pipe
- user << "There is already a pipe at that location."
+ user << "There is already a pipe at that location!"
return 1
// no conflicts found
@@ -405,8 +405,8 @@ var/global/list/pipeID2State = list(
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
user.visible_message( \
"[user] fastens \the [src].", \
- "You have fastened \the [src].", \
- "You hear ratchet.")
+ "You fasten \the [src].", \
+ "You hear ratchet.")
qdel(src) // remove the pipe item
@@ -431,9 +431,9 @@ var/global/list/pipeID2State = list(
if (!istype(W, /obj/item/weapon/wrench))
return ..()
if(!locate(/obj/machinery/atmospherics/pipe, src.loc))
- user << "You need to fasten it to a pipe."
+ user << "You need to fasten it to a pipe!"
return 1
new/obj/machinery/meter( src.loc )
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
- user << "You have fastened the meter to the pipe."
+ user << "You fasten the meter to the pipe."
qdel(src)
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 7c68419557b..ed9680d8988 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -86,8 +86,8 @@
add_fingerprint(user)
user.visible_message( \
"[user] fastens \the [src].", \
- "You have fastened \the [src]. Now it can dispense pipes.", \
- "You hear ratchet.")
+ "You fasten \the [src]. Now it can dispense pipes.", \
+ "You hear ratchet.")
anchored = 1
stat &= MAINT
if (usr.machine==src)
@@ -99,8 +99,8 @@
add_fingerprint(user)
user.visible_message( \
"[user] unfastens \the [src].", \
- "You have unfastened \the [src]. Now it can be pulled somewhere else.", \
- "You hear ratchet.")
+ "You unfasten \the [src]. Now it can be pulled somewhere else.", \
+ "You hear ratchet.")
anchored = 0
stat |= ~MAINT
power_change()
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 900edaf63ea..714d70e0907 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -253,7 +253,7 @@
if(istype(I, /obj/item/weapon/crowbar))
//If the turret is destroyed, you can remove it with a crowbar to
//try and salvage its components
- user << "You begin prying the metal coverings off."
+ user << "You begin prying the metal coverings off..."
sleep(20)
if(prob(70))
user << "You remove the turret and salvage some components."
@@ -680,7 +680,7 @@
build_step = 2
icon_state = "turret_frame2"
else
- user << "You need two sheets of metal to continue construction."
+ user << "You need two sheets of metal to continue construction!"
return
else if(istype(I, /obj/item/weapon/wrench))
@@ -703,14 +703,15 @@
if(!WT.isOn())
return
if(WT.get_fuel() < 5) //uses up 5 fuel.
- user << "You need more fuel to complete this task."
+ user << "You need more fuel to complete this task!"
return
playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/Welder2.ogg'), 50, 1)
+ user << "You start to remove the turret's interior metal armor..."
if(do_after(user, 20))
if(!src || !WT.remove_fuel(5, user)) return
build_step = 1
- user << "You remove the turret's interior metal armor."
+ user << "You remove the turret's interior metal armor."
new /obj/item/stack/sheet/metal( loc, 2)
return
@@ -722,7 +723,7 @@
return
var/obj/item/weapon/gun/energy/E = I //typecasts the item to an energy gun
if(!user.unEquip(I))
- user << "\the [I] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [I] is stuck to your hand, you cannot put it in \the [src]!"
return
installation = I.type //installation becomes I.type
gun_charge = E.power_supply.charge //the gun's charge is stored in gun_charge
@@ -741,9 +742,9 @@
if(isprox(I))
build_step = 5
if(!user.unEquip(I))
- user << "\the [I] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [I] is stuck to your hand, you cannot put it in \the [src]!"
return
- user << "You add the prox sensor to the turret."
+ user << "You add the proximity sensor to the turret."
qdel(I)
return
@@ -765,7 +766,7 @@
user << "You add some metal armor to the exterior frame."
build_step = 7
else
- user << "You need two sheets of metal to continue construction."
+ user << "You need two sheets of metal to continue construction!"
return
else if(istype(I, /obj/item/weapon/screwdriver))
@@ -779,9 +780,10 @@
var/obj/item/weapon/weldingtool/WT = I
if(!WT.isOn()) return
if(WT.get_fuel() < 5)
- user << "You need more fuel to complete this task."
+ user << "You need more fuel to complete this task!"
playsound(loc, pick('sound/items/Welder.ogg', 'sound/items/Welder2.ogg'), 50, 1)
+ user << "You begin to weld the turret's armor down..."
if(do_after(user, 30))
if(!src || !WT.remove_fuel(5, user))
return
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 1ba38ab9140..7c7d9efb9a4 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -436,11 +436,11 @@ var/list/obj/machinery/requests_console/allConsoles = list()
/obj/machinery/requests_console/attackby(var/obj/item/weapon/O as obj, var/mob/user as mob, params)
if (istype(O, /obj/item/weapon/crowbar))
if(open)
- user << "You close the maintenance panel."
+ user << "You close the maintenance panel."
open = 0
icon_state="req_comp0"
else
- user << "You open the maintenance panel."
+ user << "You open the maintenance panel."
open = 1
if(hackState == 0)
icon_state="req_comp_open"
@@ -449,15 +449,15 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if (istype(O, /obj/item/weapon/screwdriver))
if(open)
if(hackState == 0)
- user << "You modify the wiring."
+ user << "You modify the wiring."
hackState = 1
icon_state="req_comp_rewired"
else if(hackState == 1)
- user << "You reset the wiring."
+ user << "You reset the wiring."
hackState = 0
icon_state="req_comp_open"
else
- user << "You can't do much with that."
+ user << "You can't do much with that!"
update_icon()
var/obj/item/weapon/card/id/ID = O.GetID()
@@ -470,7 +470,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
announceAuth = 1
else
announceAuth = 0
- user << "You are not authorized to send announcements."
+ user << "You are not authorized to send announcements!"
updateUsrDialog()
if (istype(O, /obj/item/weapon/stamp))
if(screen == 9)
diff --git a/code/game/machinery/robot_fabricator.dm b/code/game/machinery/robot_fabricator.dm
index 85c818f2fd8..2e1c8275332 100644
--- a/code/game/machinery/robot_fabricator.dm
+++ b/code/game/machinery/robot_fabricator.dm
@@ -28,7 +28,7 @@
if (O:amount < 1)
qdel(O)
- user << "You insert [count] metal sheet\s into \the [src]."
+ user << "You insert [count] metal sheet\s into \the [src]."
src.overlays -= "fab-load-metal"
updateDialog()
else
diff --git a/code/game/machinery/shieldgen.dm b/code/game/machinery/shieldgen.dm
index 1b1e68bbf6e..9692acc5ca6 100644
--- a/code/game/machinery/shieldgen.dm
+++ b/code/game/machinery/shieldgen.dm
@@ -210,25 +210,25 @@
/obj/machinery/shieldgen/attack_hand(mob/user as mob)
if(locked)
- user << "The machine is locked, you are unable to use it."
+ user << "The machine is locked, you are unable to use it!"
return
if(is_open)
- user << "The panel must be closed before operating this machine."
+ user << "The panel must be closed before operating this machine!"
return
if (src.active)
- user.visible_message("\icon[src] [user] deactivated the shield generator.", \
- "\icon[src] You deactivate the shield generator.", \
- "You hear heavy droning fade out.")
+ user.visible_message("[src] [user] deactivated the shield generator.", \
+ "[src] You deactivate the shield generator.", \
+ "You hear heavy droning fade out.")
src.shields_down()
else
if(anchored)
- user.visible_message("\icon[src] [user] activated the shield generator.", \
- "\icon[src] You activate the shield generator.", \
- "You hear heavy droning.")
+ user.visible_message("[src] [user] activated the shield generator.", \
+ "[src] You activate the shield generator.", \
+ "You hear heavy droning.")
src.shields_up()
else
- user << "The device must first be secured to the floor."
+ user << "The device must first be secured to the floor!"
return
/obj/machinery/shieldgen/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
@@ -244,21 +244,21 @@
else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open)
var/obj/item/stack/cable_coil/coil = W
if (coil.get_amount() < 1)
- user << "You need one length of cable to repair [src]."
+ user << "You need one length of cable to repair [src]!"
return
- user << "You begin to replace the wires."
+ user << "You begin to replace the wires..."
if(do_after(user, 30))
if(coil.get_amount() < 1)
return
coil.use(1)
health = max_health
malfunction = 0
- user << "You repair \the [src]!"
+ user << "You repair \the [src]."
update_icon()
else if(istype(W, /obj/item/weapon/wrench))
if(locked)
- user << "The bolts are covered, unlocking this would retract the covers."
+ user << "The bolts are covered! Unlocking this would retract the covers."
return
if(!anchored && !isinspace())
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
@@ -276,7 +276,7 @@
else if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
if(src.allowed(user))
src.locked = !src.locked
- user << "The controls are now [src.locked ? "locked." : "unlocked."]"
+ user << "You [src.locked ? "lock" : "unlock"] the controls."
else
user << "Access denied."
@@ -348,13 +348,13 @@
/obj/machinery/shieldwallgen/attack_hand(mob/user as mob)
if(!anchored)
- user << "The shield generator needs to be firmly secured to the floor first."
+ user << "The shield generator needs to be firmly secured to the floor first!"
return 1
if(locked && !istype(user, /mob/living/silicon))
- user << "The controls are locked!"
+ user << "The controls are locked!"
return 1
if(power != 1)
- user << "The shield generator needs to be powered by wire underneath."
+ user << "The shield generator needs to be powered by wire underneath!"
return 1
if(src.active >= 1)
@@ -362,15 +362,15 @@
icon_state = "Shield_Gen"
user.visible_message("[user] turned the shield generator off.", \
- "You turn off the shield generator.", \
- "You hear heavy droning fade out.")
+ "You turn off the shield generator.", \
+ "You hear heavy droning fade out.")
src.cleanup()
else
src.active = 1
icon_state = "Shield_Gen +a"
user.visible_message("[user] turned the shield generator on.", \
- "You turn on the shield generator.", \
- "You hear heavy droning.")
+ "You turn on the shield generator.", \
+ "You hear heavy droning.")
src.add_fingerprint(user)
/obj/machinery/shieldwallgen/process()
@@ -396,7 +396,7 @@
if(src.active >= 1)
if(src.power == 0)
src.visible_message("The [src.name] shuts down due to lack of power!", \
- "You hear heavy droning fade out")
+ "You hear heavy droning fade out.")
icon_state = "Shield_Gen"
src.active = 0
src.cleanup(1)
@@ -452,7 +452,7 @@
/obj/machinery/shieldwallgen/attackby(obj/item/W, mob/user, params)
if(istype(W, /obj/item/weapon/wrench))
if(active)
- user << "Turn off the field generator first."
+ user << "Turn off the field generator first!"
return
else if(!anchored && !isinspace()) //Can't fasten this thing in space
@@ -470,7 +470,7 @@
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if (src.allowed(user))
src.locked = !src.locked
- user << "Controls are now [src.locked ? "locked." : "unlocked."]"
+ user << "You [src.locked ? "lock" : "unlock"] the controls."
else
user << "Access denied."
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index 223472818c6..da7f6a82c53 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -48,7 +48,7 @@
if(istype(I, /obj/item/weapon/stock_parts/cell))
if(open)
if(cell)
- user << "There is already a power cell inside."
+ user << "There is already a power cell inside!"
return
else
// insert cell
@@ -59,13 +59,13 @@
C.loc = src
C.add_fingerprint(usr)
- user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].")
+ user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].")
else
- user << "The hatch must be open to insert a power cell."
+ user << "The hatch must be open to insert a power cell!"
return
else if(istype(I, /obj/item/weapon/screwdriver))
open = !open
- user.visible_message("[user] [open ? "opens" : "closes"] the hatch on \the [src].", "You [open ? "open" : "close"] the hatch on \the [src].")
+ user.visible_message("[user] [open ? "opens" : "closes"] the hatch on \the [src].", "You [open ? "open" : "close"] the hatch on \the [src].")
update_icon()
if(!open && user.machine == src)
user << browse(null, "window=spaceheater")
@@ -103,7 +103,7 @@
else
on = !on
- user.visible_message("[user] switches [on ? "on" : "off"] \the [src].","You switch [on ? "on" : "off"] \the [src].")
+ user.visible_message("[user] switches [on ? "on" : "off"] \the [src].","You switch [on ? "on" : "off"] \the [src].")
update_icon()
return
@@ -127,7 +127,7 @@
usr.put_in_hands(cell)
cell.add_fingerprint(usr)
cell = null
- usr.visible_message("[usr] removes the power cell from \the [src].", "You remove the power cell from \the [src].")
+ usr.visible_message("[usr] removes the power cell from \the [src].", "You remove the power cell from \the [src].")
if("cellinstall")
@@ -139,7 +139,7 @@
C.loc = src
C.add_fingerprint(usr)
- usr.visible_message("[usr] inserts a power cell into \the [src].", "You insert the power cell into \the [src].")
+ usr.visible_message("[usr] inserts a power cell into \the [src].", "You insert the power cell into \the [src].")
updateDialog()
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index e1755317dce..cc5c8e96fb8 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -277,10 +277,10 @@
return*/
else //welp, the guy is protected, we can continue
if(src.issuperUV)
- user << "You slide the dial back towards \"185nm\"."
+ user << "You slide the dial back towards \"185nm\"."
src.issuperUV = 0
else
- user << "You crank the dial all the way up to \"15nm\"."
+ user << "You crank the dial all the way up to \"15nm\"."
src.issuperUV = 1
return
@@ -302,7 +302,7 @@
user << "You try to touch the controls but you get zapped. There must be a short circuit somewhere."
return*/
else
- user << "You push the button. The coloured LED next to it changes."
+ user << "You push the button. The coloured LED next to it changes."
src.safetieson = !src.safetieson
@@ -339,7 +339,7 @@
/obj/machinery/suit_storage_unit/proc/toggle_open(mob/user as mob)
if(src.islocked || src.isUV)
- user << "Unable to open unit."
+ user << "You're unable to open unit!"
return 0
if(src.OCCUPANT)
src.eject_occupant(user)
@@ -350,7 +350,7 @@
/obj/machinery/suit_storage_unit/proc/toggle_lock(mob/user as mob)
if(src.OCCUPANT && src.safetieson)
- user << "The Unit's safety protocols disallow locking when a biological form is detected inside its compartments."
+ user << "The Unit's safety protocols disallow locking when a biological form is detected inside its compartments."
return
if(src.isopen)
return
@@ -367,7 +367,7 @@
if(!src.HELMET && !src.MASK && !src.SUIT && !src.STORAGE && !src.OCCUPANT ) //shit's empty yo
user << "Unit storage bays empty. Nothing to disinfect -- Aborting."
return
- user << "You start the Unit's cauterisation cycle."
+ user << "You start the Unit's cauterisation cycle."
src.cycletime_left = 20
src.isUV = 1
if(src.OCCUPANT && !src.islocked)
@@ -447,7 +447,7 @@
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
var/breakout_time = 2
- user << "You start kicking against the doors to escape! (This will take about [breakout_time] minutes.)"
+ user << "You start kicking against the doors to escape... (This will take about [breakout_time] minutes.)"
visible_message("You see [user] kicking against the doors of \the [src]!")
if(do_after(user,(breakout_time*60*10)))
if(!user || user.stat != CONSCIOUS || user.loc != src || isopen || !islocked)
@@ -455,7 +455,7 @@
else
isopen = 1
islocked = 0
- visible_message("[user] successfully broke out of [src]!")
+ visible_message("[user] successfully broke out of [src]!")
else
return
@@ -475,18 +475,18 @@
if (user.stat != 0)
return
if (!src.isopen)
- user << "The unit's doors are shut."
+ user << "The unit's doors are shut!"
return
if (!src.ispowered || src.isbroken)
- user << "The unit is not operational."
+ user << "The unit is not operational!"
return
if ( (src.OCCUPANT) || (src.HELMET) || (src.SUIT) || (src.STORAGE))
- user << "It's too cluttered inside to fit in!"
+ user << "It's too cluttered inside to fit in!"
return
if(M == user)
visible_message("[user] starts squeezing into the suit storage unit!", 3)
else
- visible_message("[user] starts putting [M.name] into the Suit Storage Unit.", 3)
+ visible_message("[user] starts putting [M.name] into the Suit Storage Unit!", 3)
if(do_mob(user, M, 10))
user.stop_pulling()
if(M.client)
@@ -529,9 +529,9 @@
user << "The unit already contains a suit."
return
if(!user.drop_item())
- user << "\The [S] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ user << "\The [S] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
return
- user << "You load the [S.name] into the suit storage compartment."
+ user << "You load the [S.name] into the suit storage compartment."
S.loc = src
src.SUIT = S
src.update_icon()
@@ -542,12 +542,12 @@
return
var/obj/item/clothing/head/helmet/H = I
if(src.HELMET)
- user << "The unit already contains a helmet."
+ user << "The unit already contains a helmet!"
return
if(!user.drop_item())
- user << "\The [H] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ user << "\The [H] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
return
- user << "You load the [H.name] into the helmet storage compartment."
+ user << "You load the [H.name] into the helmet storage compartment."
H.loc = src
src.HELMET = H
src.update_icon()
@@ -558,12 +558,12 @@
return
var/obj/item/clothing/mask/M = I
if(src.MASK)
- user << "The unit already contains a mask."
+ user << "The unit already contains a mask!"
return
if(!user.drop_item())
- user << "\The [M] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ user << "\The [M] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
return
- user << "You load the [M.name] into the mask storage compartment."
+ user << "You load the [M.name] into the mask storage compartment."
M.loc = src
src.MASK = M
src.update_icon()
@@ -574,12 +574,12 @@
return
var/obj/item/ITEM = I
if(src.STORAGE)
- user << "The auxiliary storage compartment is full."
+ user << "The auxiliary storage compartment is full!"
return
if(!user.drop_item())
- user << "\The [ITEM] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
+ user << "\The [ITEM] is stuck to your hand, you cannot put it in the Suit Storage Unit!"
return
- user << "You load the [ITEM.name] into the auxiliary storage compartment."
+ user << "You load the [ITEM.name] into the auxiliary storage compartment."
ITEM.loc = src
src.STORAGE = ITEM
src.update_icon()
@@ -592,7 +592,7 @@
/obj/machinery/suit_storage_unit/attack_paw(mob/user as mob)
- user << "The console controls are far too complicated for your tiny brain!"
+ user << "The console controls are far too complicated for your tiny brain!"
return
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index 957f0665266..d8ed227bb51 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -150,14 +150,14 @@
if(anchored)
return active ? Deactivate(user) : Activate(user)
else
- user << "You need to screw the beacon to the floor first!"
+ user << "You need to screw the beacon to the floor first!"
return
/obj/machinery/power/singularity_beacon/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W,/obj/item/weapon/screwdriver))
if(active)
- user << "You need to deactivate the beacon first!"
+ user << "You need to deactivate the beacon first!"
return
if(anchored)
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index bff628e32d3..bea3f1e054d 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -52,16 +52,16 @@
if(istype(I, /obj/item/weapon/wrench))
if(!anchored)
if(!isturf(src.loc) || istype(src.loc, /turf/space))
- user << "The bomb must be placed on solid ground to attach it"
+ user << "The bomb must be placed on solid ground to attach it."
else
- user << "You firmly wrench the bomb to the floor"
+ user << "You firmly wrench the bomb to the floor."
playsound(loc, 'sound/items/ratchet.ogg', 50, 1)
anchored = 1
if(active)
- user << "The bolts lock in place"
+ user << "The bolts lock in place."
else
if(!active)
- user << "You wrench the bomb from the floor"
+ user << "You wrench the bomb from the floor."
playsound(loc, 'sound/items/ratchet.ogg', 50, 1)
anchored = 0
else
@@ -83,11 +83,11 @@
payload.loc = user.loc
payload = null
else
- user << "There isn't anything in here to remove!"
+ user << "There isn't anything in here to remove!"
else if (open_panel)
- user << "The wires conneting the shell to the explosives are holding it down!"
+ user << "The wires connecting the shell to the explosives are holding it down!"
else
- user << "The cover is screwed on, it won't pry off!"
+ user << "The cover is screwed on, it won't pry off!"
else if(istype(I, /obj/item/weapon/bombcore))
if(!payload)
payload = I
@@ -95,7 +95,7 @@
user.drop_item()
payload.loc = src
else
- user << "[payload] is already loaded into [src], you'll have to remove it first."
+ user << "[payload] is already loaded into [src]! You'll have to remove it first."
else
..()
@@ -114,7 +114,7 @@
settings(user)
return
else if(anchored)
- user << "The bomb is bolted to the floor!"
+ user << "The bomb is bolted to the floor!"
return
/obj/machinery/syndicatebomb/proc/settings(var/mob/user)
@@ -126,7 +126,7 @@
if(alert(user,"Would you like to start the countdown now?",,"Yes","No") == "Yes" && in_range(src, user) && isliving(user))
if(defused || active)
if(defused)
- src.loc.visible_message("\icon[src] Device error: User intervention required.")
+ src.loc.visible_message("\icon[src] Device error: User intervention required.")
return
else
src.loc.visible_message("\icon[src] [timer] seconds until detonation, please clear the area.")
diff --git a/code/game/machinery/telecomms/broadcasting.dm b/code/game/machinery/telecomms/broadcasting.dm
index b6ab78b9fc1..cc877492b58 100644
--- a/code/game/machinery/telecomms/broadcasting.dm
+++ b/code/game/machinery/telecomms/broadcasting.dm
@@ -104,7 +104,7 @@
// --- Centcom radio, yo. ---
- else if(data == 4)
+ else if(data == 5)
for(var/obj/item/device/radio/R in all_radios["[freq]"])
if(!R.centcom)
@@ -219,7 +219,7 @@
// --- Centcom radio, yo. ---
- else if(data == 4)
+ else if(data == 5)
for(var/obj/item/device/radio/R in all_radios["[RADIO_CHAT]"])
if(R.centcom)
diff --git a/code/game/machinery/teleporter.dm b/code/game/machinery/teleporter.dm
index e04ae94a755..0c31ede202a 100644
--- a/code/game/machinery/teleporter.dm
+++ b/code/game/machinery/teleporter.dm
@@ -34,7 +34,7 @@
var/obj/item/device/gps/L = I
if(L.locked_location && !(stat & (NOPOWER|BROKEN)))
if(!user.unEquip(L))
- user << "\the [I] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [I] is stuck to your hand, you cannot put it in \the [src]!"
return
L.loc = src
locked = L
@@ -117,10 +117,10 @@
target = get_turf(locked.locked_location)
if(href_list["calibrate"])
if(!target)
- usr << "Error: No target set to calibrate to."
+ usr << "Error: No target set to calibrate to."
return
if(power_station.teleporter_hub.calibrated || power_station.teleporter_hub.accurate >= 3)
- usr << "Hub is already calibrated."
+ usr << "Hub is already calibrated!"
return
src.visible_message("Processing hub calibration to target...")
@@ -131,7 +131,7 @@
power_station.teleporter_hub.calibrated = 1
src.visible_message("Calibration complete.")
else
- src.visible_message("Error: Unable to detect hub.")
+ src.visible_message("Error: Unable to detect hub.")
updateDialog()
updateDialog()
@@ -293,7 +293,7 @@
if (!com)
return
if (!com.target)
- visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.")
+ visible_message("Cannot authenticate locked on coordinates. Please reinstate coordinate matrix.")
return
if (istype(M, /atom/movable))
if(do_teleport(M, com.target))
@@ -301,7 +301,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")
- M << "You hear a buzzing in your ears."
+ M << "You hear a buzzing in your ears."
human.dna.species = new /datum/species/fly()
human.regenerate_icons()
human.apply_effect((rand(120 - accurate * 40, 180 - accurate * 60)), IRRADIATE, 0)
@@ -384,7 +384,7 @@
M.buffer = null
user << "You upload the data from the [W.name]'s buffer."
else
- user << "This station cant hold more information, try to use better parts."
+ user << "This station can't hold more information, try to use better parts."
if(default_deconstruction_screwdriver(user, "controller-o", "controller", W))
update_icon()
return
diff --git a/code/game/machinery/turrets.dm b/code/game/machinery/turrets.dm
index 0fb0bb0bd43..b1c356a0982 100644
--- a/code/game/machinery/turrets.dm
+++ b/code/game/machinery/turrets.dm
@@ -419,7 +419,7 @@
/obj/machinery/gun_turret/attack_alien(mob/living/user as mob)
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
- user.visible_message("[user] slashes at [src]", "You slash at [src]")
+ user.visible_message("[user] slashes at [src]!", "You slash at [src]!")
take_damage(15)
return
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index f7385507a95..405abb48ddc 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -246,7 +246,7 @@
if(istype(W, /obj/item/weapon/screwdriver) && anchored)
panel_open = !panel_open
- user << "You [panel_open ? "open" : "close"] the maintenance panel."
+ user << "You [panel_open ? "open" : "close"] the maintenance panel."
overlays.Cut()
if(panel_open)
overlays += image(icon, "[initial(icon_state)]-panel")
@@ -285,7 +285,7 @@
/obj/machinery/vending/emag_act(user as mob)
if(!emagged)
emagged = 1
- user << "You short out the product lock on [src]."
+ user << "You short out the product lock on [src]."
/obj/machinery/vending/attack_paw(mob/user)
return attack_hand(user)
@@ -431,7 +431,7 @@
return
else if(R in coin_records)
if(!coin)
- usr << "You need to insert a coin to get this item."
+ usr << "You need to insert a coin to get this item!"
vend_ready = 1
return
if(coin.string_attached)
@@ -440,11 +440,11 @@
usr << "You successfully pull [coin] out before [src] could swallow it."
coin = null
else
- usr << "You couldn't pull [coin] out because your hands are full."
+ usr << "You couldn't pull [coin] out because your hands are full!"
qdel(coin)
coin = null
else
- usr << "You weren't able to pull [coin] out fast enough, the machine ate it, string and all."
+ usr << "You weren't able to pull [coin] out fast enough, the machine ate it, string and all!"
qdel(coin)
coin = null
else
@@ -779,6 +779,7 @@
products = list(/obj/item/weapon/restraints/handcuffs = 8,/obj/item/weapon/restraints/handcuffs/cable/zipties = 10,/obj/item/weapon/grenade/flashbang = 4,/obj/item/device/flash/handheld = 5,
/obj/item/weapon/reagent_containers/food/snacks/donut = 12,/obj/item/weapon/storage/box/evidence = 6,/obj/item/device/flashlight/seclite = 4)
contraband = list(/obj/item/clothing/glasses/sunglasses = 2,/obj/item/weapon/storage/fancy/donut_box = 2)
+ premium = list(/obj/item/weapon/coin/antagtoken = 1)
/obj/machinery/vending/hydronutrients
name = "\improper NutriMax"
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 2079cf376e7..0288d3c3fba 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -248,7 +248,7 @@
user << "This item does not fit."
return
if(W.flags & NODROP) //if "can't drop" item
- user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!"
+ user << "\The [W] is stuck to your hand, you cannot put it in the washing machine!"
return
if(contents.len < 5)
@@ -257,9 +257,9 @@
W.loc = src
state = 3
else
- user << "You can't put the item in right now."
+ user << "You can't put the item in right now!"
else
- user << "The washing machine is full."
+ user << "The washing machine is full!"
else
..()
update_icon()
diff --git a/code/game/mecha/equipment/tools/medical_tools.dm b/code/game/mecha/equipment/tools/medical_tools.dm
index 486d47a003c..adef813adc0 100644
--- a/code/game/mecha/equipment/tools/medical_tools.dm
+++ b/code/game/mecha/equipment/tools/medical_tools.dm
@@ -42,24 +42,24 @@
if(!istype(target))
return
if(target.buckled)
- occupant_message("[target] will not fit into the sleeper because they are buckled to [target.buckled].")
+ occupant_message("[target] will not fit into the sleeper because they are buckled to [target.buckled]!")
return
if(occupant)
- occupant_message("The sleeper is already occupied")
+ occupant_message("The sleeper is already occupied!")
return
for(var/mob/living/simple_animal/slime/M in range(1,target))
if(M.Victim == target)
- occupant_message("[target] will not fit into the sleeper because they have a slime latched onto their head.")
+ occupant_message("[target] will not fit into the sleeper because they have a slime latched onto their head!")
return
- occupant_message("You start putting [target] into [src].")
- chassis.visible_message("[chassis] starts putting [target] into \the [src].")
+ occupant_message("You start putting [target] into [src]...")
+ chassis.visible_message("[chassis] starts putting [target] into \the [src].")
var/C = chassis.loc
var/T = target.loc
if(do_after_cooldown(target))
if(chassis.loc!=C || target.loc!=T)
return
if(occupant)
- occupant_message("The sleeper is already occupied!")
+ occupant_message("The sleeper is already occupied!")
return
target.forceMove(src)
occupant = target
@@ -72,7 +72,7 @@
set_ready_state(0)
pr_mech_sleeper.start()
occupant_message("[target] successfully loaded into [src]. Life support functions engaged.")
- chassis.visible_message("[chassis] loads [target] into [src].")
+ chassis.visible_message("[chassis] loads [target] into [src].")
log_message("[target] loaded. Life support functions engaged.")
return
@@ -95,7 +95,7 @@
/obj/item/mecha_parts/mecha_equipment/tool/sleeper/detach()
if(occupant)
- occupant_message("Unable to detach [src] - equipment occupied.")
+ occupant_message("Unable to detach [src] - equipment occupied!")
return
pr_mech_sleeper.stop()
return ..()
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 472fceaa045..fb3c28a3d27 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -47,12 +47,12 @@
occupant_message("[target] successfully loaded.")
log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
- occupant_message("You must hold still while handling objects.")
+ occupant_message("You must hold still while handling objects!")
O.anchored = initial(O.anchored)
else
- occupant_message("Not enough room in cargo compartment.")
+ occupant_message("Not enough room in cargo compartment!")
else
- occupant_message("[target] is firmly secured.")
+ occupant_message("[target] is firmly secured!")
else if(istype(target,/mob/living))
var/mob/living/M = target
@@ -65,7 +65,7 @@
M.updatehealth()
target.visible_message("[chassis] squeezes [target].", \
"[chassis] squeezes [target].",\
- "You hear something crack")
+ "You hear something crack.")
add_logs(chassis.occupant, M, "attacked", object="[name]", addition="(INTENT: [uppertext(chassis.occupant.a_intent)]) (DAMTYE: [uppertext(damtype)])")
else
step_away(M,chassis)
@@ -93,9 +93,9 @@
return
set_ready_state(0)
chassis.use_power(energy_drain)
- target.visible_message("[chassis] starts to drill [target]", \
- "[chassis] starts to drill [target]", \
- "You hear drilling.")
+ target.visible_message("[chassis] starts to drill [target].", \
+ "[chassis] starts to drill [target]...", \
+ "You hear drilling.")
var/T = chassis.loc
var/C = target.loc //why are these backwards? we may never know -Pete
if(do_after_cooldown(target))
@@ -1056,7 +1056,7 @@
var/result = load_fuel(target)
var/message
if(isnull(result))
- message = "[fuel] traces in target minimal. [target] cannot be used as fuel."
+ message = "[fuel] traces in target minimal! [target] cannot be used as fuel."
else if(!result)
message = "Unit is full."
else
@@ -1214,12 +1214,12 @@
chassis.occupant_message("[target] successfully loaded.")
chassis.log_message("Loaded [O]. Cargo compartment capacity: [cargo_holder.cargo_capacity - cargo_holder.cargo.len]")
else
- chassis.occupant_message("You must hold still while handling objects.")
+ chassis.occupant_message("You must hold still while handling objects!")
O.anchored = initial(O.anchored)
else
- chassis.occupant_message("Not enough room in cargo compartment.")
+ chassis.occupant_message("Not enough room in cargo compartment!")
else
- chassis.occupant_message("[target] is firmly secured.")
+ chassis.occupant_message("[target] is firmly secured!")
else if(istype(target,/mob/living))
var/mob/living/M = target
diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm
index 4b4f714f6dd..fc8d60e2263 100644
--- a/code/game/mecha/mech_fabricator.dm
+++ b/code/game/mecha/mech_fabricator.dm
@@ -500,7 +500,7 @@
default_deconstruction_crowbar(W)
return 1
else
- user << "You can't load \the [name] while it's opened."
+ user << "You can't load \the [name] while it's opened!"
return 1
if(istype(W, /obj/item/stack))
@@ -526,10 +526,10 @@
return ..()
if(being_built)
- user << "\The [src] is currently processing. Please wait until completion."
+ user << "\The [src] is currently processing! Please wait until completion."
return
if(res_max_amount - resources[material] < MINERAL_MATERIAL_AMOUNT) //overstuffing the fabricator
- user << "\The [src] [material2name(material)] storage is full."
+ user << "\The [src] [material2name(material)] storage is full!"
return
var/obj/item/stack/sheet/stack = W
var/sname = "[stack.name]"
@@ -539,12 +539,12 @@
var/transfer_amount = min(stack.amount, round((res_max_amount - resources[material])/MINERAL_MATERIAL_AMOUNT,1))
resources[material] += transfer_amount * MINERAL_MATERIAL_AMOUNT
stack.use(transfer_amount)
- user << "You insert [transfer_amount] [sname] sheet\s into \the [src]."
+ user << "You insert [transfer_amount] [sname] sheet\s into \the [src]."
sleep(10)
updateUsrDialog()
overlays -= "fab-load-[material2name(material)]" //No matter what the overlay shall still be deleted
else
- user << "\The [src] cannot hold any more [sname] sheet\s."
+ user << "\The [src] cannot hold any more [sname] sheet\s!"
return
/obj/machinery/mecha_part_fabricator/proc/material2name(var/ID)
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 2e9ddccfaaf..42d25b93a92 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -348,15 +348,15 @@ obj/mecha/proc/can_use(mob/user)
return
if(user != src.occupant) //While not "realistic", this piece is player friendly.
user.forceMove(get_turf(src))
- user << "You climb out from [src]"
+ user << "You climb out from [src]."
return 0
if(connected_port)
if(world.time - last_message > 20)
- src.occupant_message("Unable to move while connected to the air system port")
+ src.occupant_message("Unable to move while connected to the air system port!")
last_message = world.time
return 0
if(state)
- occupant_message("Maintenance protocols in effect")
+ occupant_message("Maintenance protocols in effect.")
return
return domove(direction)
@@ -677,9 +677,9 @@ obj/mecha/proc/can_use(mob/user)
if(E.can_attach(src))
user.drop_item()
E.attach(src)
- user.visible_message("[user] attaches [W] to [src]", "You attach [W] to [src]")
+ user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src].")
else
- user << "You were unable to attach [W] to [src]"
+ user << "You were unable to attach [W] to [src]!"
return
if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if(add_req_access || maint_access)
@@ -699,18 +699,18 @@ obj/mecha/proc/can_use(mob/user)
else if(istype(W, /obj/item/weapon/wrench))
if(state==1)
state = 2
- user << "You undo the securing bolts."
+ user << "You undo the securing bolts."
else if(state==2)
state = 1
- user << "You tighten the securing bolts."
+ user << "You tighten the securing bolts."
return
else if(istype(W, /obj/item/weapon/crowbar))
if(state==2)
state = 3
- user << "You open the hatch to the power unit"
+ user << "You open the hatch to the power unit."
else if(state==3)
state=2
- user << "You close the hatch to the power unit"
+ user << "You close the hatch to the power unit."
return
else if(istype(W, /obj/item/stack/cable_coil))
if(state == 3 && hasInternalDamage(MECHA_INT_SHORT_CIRCUIT))
@@ -719,35 +719,35 @@ obj/mecha/proc/can_use(mob/user)
clearInternalDamage(MECHA_INT_SHORT_CIRCUIT)
user << "You replace the fused wires."
else
- user << "You need two lengths of cable to fix this mecha."
+ user << "You need two lengths of cable to fix this mech!"
return
else if(istype(W, /obj/item/weapon/screwdriver))
if(hasInternalDamage(MECHA_INT_TEMP_CONTROL))
clearInternalDamage(MECHA_INT_TEMP_CONTROL)
- user << "You repair the damaged temperature controller."
+ user << "You repair the damaged temperature controller."
else if(state==3 && src.cell)
src.cell.forceMove(src.loc)
src.cell = null
state = 4
- user << "You unscrew and pry out the powercell."
+ user << "You unscrew and pry out the powercell."
src.log_message("Powercell removed")
else if(state==4 && src.cell)
state=3
- user << "You screw the cell in place"
+ user << "You screw the cell in place."
return
else if(istype(W, /obj/item/weapon/stock_parts/cell))
if(state==4)
if(!src.cell)
var/obj/item/weapon/stock_parts/cell/C = W
- user << "You install the powercell"
+ user << "You install the powercell."
user.drop_item()
C.forceMove(src)
C.use(C.charge * 0.8)
src.cell = C
src.log_message("Powercell installed")
else
- user << "There's already a powercell installed."
+ user << "There's already a powercell installed."
return
else if(istype(W, /obj/item/weapon/weldingtool) && user.a_intent != "harm")
@@ -762,18 +762,18 @@ obj/mecha/proc/can_use(mob/user)
user.visible_message("[user] repairs some damage to [src.name].")
src.health += min(10, initial(src.health)-src.health)
else
- user << "The welder must be on for this task."
+ user << "The welder must be on for this task!"
return 1
else
- user << "The [src.name] is at full integrity."
+ user << "The [src.name] is at full integrity!"
return 1
else if(istype(W, /obj/item/mecha_parts/mecha_tracking))
if(!user.unEquip(W))
- user << "\the [W] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [W] is stuck to your hand, you cannot put it in \the [src]!"
return
W.forceMove(src)
- user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src]")
+ user.visible_message("[user] attaches [W] to [src].", "You attach [W] to [src].")
return
else if(!(W.flags&NOBLUDGEON))
@@ -949,20 +949,20 @@ obj/mecha/proc/can_use(mob/user)
return
for(var/mob/living/simple_animal/slime/S in range(1,user))
if(S.Victim == user)
- user << "You're too busy getting your life sucked out of you."
+ user << "You're too busy getting your life sucked out of you!"
return
- visible_message("[user] starts to climb into [src.name]")
+ visible_message("[user] starts to climb into [src.name].")
if(enter_after(40,user))
if(src.health <= 0)
- user << "You cannot get in the [src.name], it has been destroyed."
+ user << "You cannot get in the [src.name], it has been destroyed!"
else if(!src.occupant)
moved_inside(user)
else if(src.occupant!=user)
- user << "[src.occupant] was faster. Try better next time, loser."
+ user << "[src.occupant] was faster! Try better next time, loser."
else
- user << "You stop entering the exosuit."
+ user << "You stop entering the exosuit!"
return
/obj/mecha/proc/moved_inside(var/mob/living/carbon/human/H as mob)
@@ -993,41 +993,41 @@ obj/mecha/proc/can_use(mob/user)
/obj/mecha/proc/mmi_move_inside(var/obj/item/device/mmi/mmi_as_oc as obj,mob/user as mob)
if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client)
- user << "Consciousness matrix not detected."
+ user << "Consciousness matrix not detected!"
return 0
else if(mmi_as_oc.brainmob.stat)
- user << "Beta-rhythm below acceptable level."
+ user << "Beta-rhythm below acceptable level!"
return 0
else if(occupant)
- user << "Occupant detected."
+ user << "Occupant detected!"
return 0
else if(dna && dna!=mmi_as_oc.brainmob.dna.unique_enzymes)
- user << "Stop it!"
+ user << "Stop it!"
return 0
//Added a message here since people assume their first click failed or something./N
// user << "Installing MMI, please stand by."
- visible_message("[user] starts to insert an MMI into [src.name]")
+ visible_message("[user] starts to insert an MMI into [src.name].")
if(enter_after(40,user))
if(!occupant)
return mmi_moved_inside(mmi_as_oc,user)
else
- user << "Occupant detected."
+ user << "Occupant detected!"
else
- user << "You stop inserting the MMI."
+ user << "You stop inserting the MMI."
return 0
/obj/mecha/proc/mmi_moved_inside(var/obj/item/device/mmi/mmi_as_oc as obj,mob/user as mob)
if(mmi_as_oc && user in range(1))
if(!mmi_as_oc.brainmob || !mmi_as_oc.brainmob.client)
- user << "Consciousness matrix not detected."
+ user << "Consciousness matrix not detected!"
return 0
else if(mmi_as_oc.brainmob.stat)
- user << "Beta-rhythm below acceptable level."
+ user << "Beta-rhythm below acceptable level!"
return 0
if(!user.unEquip(mmi_as_oc))
- user << "\the [mmi_as_oc] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [mmi_as_oc] is stuck to your hand, you cannot put it in \the [src]!"
return
var/mob/brainmob = mmi_as_oc.brainmob
brainmob.reset_view(src)
@@ -1527,7 +1527,7 @@ var/year_integer = text2num(year) // = 2013???
src.dna = null
if(href_list["repair_int_control_lost"])
if(usr != src.occupant) return
- src.occupant_message("Recalibrating coordination system.")
+ src.occupant_message("Recalibrating coordination system...")
src.log_message("Recalibration of coordination system started.")
var/T = src.loc
if(do_after(100))
@@ -1536,7 +1536,7 @@ var/year_integer = text2num(year) // = 2013???
src.occupant_message("Recalibration successful.")
src.log_message("Recalibration of coordination system finished with 0 errors.")
else
- src.occupant_message("Recalibration failed.")
+ src.occupant_message("Recalibration failed!")
src.log_message("Recalibration of coordination system failed with 1 error.",1)
//debug
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index e7b20468d4d..12977e75648 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -23,12 +23,12 @@
if(C.use(4))
playsound(holder, 'sound/items/Deconstruct.ogg', 50, 1)
else
- user << ("There's not enough cable to finish the task.")
+ user << ("There's not enough cable to finish the task!")
return 0
else if(istype(used_atom, /obj/item/stack))
var/obj/item/stack/S = used_atom
if(S.amount < 5)
- user << ("There's not enough material in this stack.")
+ user << ("There's not enough material in this stack!")
return 0
else
S.use(5)
@@ -55,12 +55,12 @@
if (C.use(4))
playsound(holder, 'sound/items/Deconstruct.ogg', 50, 1)
else
- user << ("There's not enough cable to finish the task.")
+ user << ("There's not enough cable to finish the task!")
return 0
else if(istype(used_atom, /obj/item/stack))
var/obj/item/stack/S = used_atom
if(S.amount < 5)
- user << ("There's not enough material in this stack.")
+ user << ("There's not enough material in this stack!")
return 0
else
S.use(5)
@@ -76,7 +76,7 @@
)
/datum/construction/mecha/ripley_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
+ user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
holder.overlays += used_atom.icon_state+"+o"
qdel(used_atom)
return 1
@@ -165,107 +165,107 @@
//TODO: better messages.
switch(index)
if(14)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "ripley1"
if(13)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "ripley2"
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "ripley0"
if(12)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "ripley3"
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "ripley1"
if(11)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "ripley4"
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "ripley2"
if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
holder.icon_state = "ripley5"
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "ripley3"
if(9)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "ripley6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/weapon/circuitboard/mecha/ripley/main(get_turf(holder))
holder.icon_state = "ripley4"
if(8)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
holder.icon_state = "ripley7"
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "ripley5"
if(7)
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.", "You secure the peripherals control module.")
holder.icon_state = "ripley8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/ripley/peripherals(get_turf(holder))
holder.icon_state = "ripley6"
if(6)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
holder.icon_state = "ripley9"
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.", "You unfasten the peripherals control module.")
holder.icon_state = "ripley7"
if(5)
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.", "You secure the internal armor layer.")
holder.icon_state = "ripley10"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
+ user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
holder.icon_state = "ripley8"
if(4)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
+ user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
holder.icon_state = "ripley11"
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.", "You unfasten the internal armor layer.")
holder.icon_state = "ripley9"
if(3)
if(diff==FORWARD)
- user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
+ user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
holder.icon_state = "ripley12"
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
+ user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
holder.icon_state = "ripley10"
if(2)
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.", "You secure the external reinforced armor layer.")
holder.icon_state = "ripley13"
else
- user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
+ user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
holder.icon_state = "ripley11"
if(1)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
+ user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
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.", "You unfasten the external armor layer.")
holder.icon_state = "ripley12"
return 1
@@ -286,7 +286,7 @@
)
/datum/construction/mecha/gygax_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
+ user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
holder.overlays += used_atom.icon_state+"+o"
qdel(used_atom)
return 1
@@ -398,155 +398,155 @@
//TODO: better messages.
switch(index)
if(20)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "gygax1"
if(19)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "gygax2"
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "gygax0"
if(18)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "gygax3"
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "gygax1"
if(17)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "gygax4"
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "gygax2"
if(16)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
holder.icon_state = "gygax5"
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "gygax3"
if(15)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "gygax6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/weapon/circuitboard/mecha/gygax/main(get_turf(holder))
holder.icon_state = "gygax4"
if(14)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
holder.icon_state = "gygax7"
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "gygax5"
if(13)
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.", "You secure the peripherals control module.")
holder.icon_state = "gygax8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/gygax/peripherals(get_turf(holder))
holder.icon_state = "gygax6"
if(12)
if(diff==FORWARD)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
+ user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
holder.icon_state = "gygax9"
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.", "You unfasten the peripherals control module.")
holder.icon_state = "gygax7"
if(11)
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.", "You secure the weapon control module.")
holder.icon_state = "gygax10"
else
- user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
+ user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/gygax/targeting(get_turf(holder))
holder.icon_state = "gygax8"
if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs advanced scanner module to the [holder].", "You install advanced scanner module to the [holder].")
+ user.visible_message("[user] installs advanced scanner module to the [holder].", "You install advanced scanner module to the [holder].")
qdel(used_atom)
holder.icon_state = "gygax11"
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.", "You unfasten the weapon control module.")
holder.icon_state = "gygax9"
if(9)
if(diff==FORWARD)
- user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
+ user.visible_message("[user] secures the advanced scanner module.", "You secure the advanced scanner module.")
holder.icon_state = "gygax12"
else
- user.visible_message("[user] removes the advanced scanner module from the [holder].", "You remove the advanced scanner module from the [holder].")
+ user.visible_message("[user] removes the advanced scanner module from the [holder].", "You remove the advanced scanner module from the [holder].")
new /obj/item/weapon/stock_parts/scanning_module/adv(get_turf(holder))
holder.icon_state = "gygax10"
if(8)
if(diff==FORWARD)
- user.visible_message("[user] installs advanced capacitor to the [holder].", "You install advanced capacitor to the [holder].")
+ user.visible_message("[user] installs advanced capacitor to the [holder].", "You install advanced capacitor to the [holder].")
qdel(used_atom)
holder.icon_state = "gygax13"
else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
holder.icon_state = "gygax11"
if(7)
if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
holder.icon_state = "gygax14"
else
- user.visible_message("[user] removes the advanced capacitor from the [holder].", "You remove the advanced capacitor from the [holder].")
+ user.visible_message("[user] removes the advanced capacitor from the [holder].", "You remove the advanced capacitor from the [holder].")
new /obj/item/weapon/stock_parts/capacitor/adv(get_turf(holder))
holder.icon_state = "gygax12"
if(6)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
holder.icon_state = "gygax15"
else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
holder.icon_state = "gygax13"
if(5)
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.", "You secure the internal armor layer.")
holder.icon_state = "gygax16"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
+ user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
holder.icon_state = "gygax14"
if(4)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
+ user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
holder.icon_state = "gygax17"
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.", "You unfasten the internal armor layer.")
holder.icon_state = "gygax15"
if(3)
if(diff==FORWARD)
- user.visible_message("[user] installs Gygax Armor Plates to the [holder].", "You install Gygax Armor Plates to the [holder].")
+ user.visible_message("[user] installs Gygax Armor Plates to the [holder].", "You install Gygax Armor Plates to the [holder].")
qdel(used_atom)
holder.icon_state = "gygax18"
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
+ user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
holder.icon_state = "gygax16"
if(2)
if(diff==FORWARD)
- user.visible_message("[user] secures Gygax Armor Plates.", "You secure Gygax Armor Plates.")
+ user.visible_message("[user] secures Gygax Armor Plates.", "You secure Gygax Armor Plates.")
holder.icon_state = "gygax19"
else
- user.visible_message("[user] pries Gygax Armor Plates from the [holder].", "You pry Gygax Armor Plates from the [holder].")
+ user.visible_message("[user] pries Gygax Armor Plates from the [holder].", "You pry Gygax Armor Plates from the [holder].")
new /obj/item/mecha_parts/part/gygax_armor(get_turf(holder))
holder.icon_state = "gygax17"
if(1)
if(diff==FORWARD)
- user.visible_message("[user] welds Gygax Armor Plates to the [holder].", "You weld Gygax Armor Plates to the [holder].")
+ user.visible_message("[user] welds Gygax Armor Plates to the [holder].", "You weld Gygax Armor Plates to the [holder].")
else
- user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.")
+ user.visible_message("[user] unfastens Gygax Armor Plates.", "You unfasten Gygax Armor Plates.")
holder.icon_state = "gygax18"
return 1
@@ -565,7 +565,7 @@
)
/datum/construction/mecha/firefighter_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
+ user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
holder.overlays += used_atom.icon_state+"+o"
qdel(used_atom)
return 1
@@ -658,117 +658,117 @@
//TODO: better messages.
switch(index)
if(15)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "fireripley1"
if(14)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "fireripley2"
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "fireripley0"
if(13)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "fireripley3"
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "fireripley1"
if(12)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "fireripley4"
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "fireripley2"
if(11)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
holder.icon_state = "fireripley5"
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "fireripley3"
if(10)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "fireripley6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/weapon/circuitboard/mecha/ripley/main(get_turf(holder))
holder.icon_state = "fireripley4"
if(9)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
holder.icon_state = "fireripley7"
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "fireripley5"
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.", "You secure the peripherals control module.")
holder.icon_state = "fireripley8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/ripley/peripherals(get_turf(holder))
holder.icon_state = "fireripley6"
if(7)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
holder.icon_state = "fireripley9"
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.", "You unfasten the peripherals control module.")
holder.icon_state = "fireripley7"
if(6)
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.", "You secure the internal armor layer.")
holder.icon_state = "fireripley10"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
+ user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
holder.icon_state = "fireripley8"
if(5)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
+ user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
holder.icon_state = "fireripley11"
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.", "You unfasten the internal armor layer.")
holder.icon_state = "fireripley9"
if(4)
if(diff==FORWARD)
- user.visible_message("[user] starts to install the external armor layer to the [holder].", "You start to install the external armor layer to the [holder].")
+ user.visible_message("[user] starts to install the external armor layer to the [holder].", "You install the external armor layer to the [holder].")
holder.icon_state = "fireripley12"
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
+ user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
holder.icon_state = "fireripley10"
if(3)
if(diff==FORWARD)
- user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
+ user.visible_message("[user] installs the external reinforced armor layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
holder.icon_state = "fireripley13"
else
- user.visible_message("[user] removes the external armor from the [holder].", "You remove the external armor from the [holder].")
+ user.visible_message("[user] removes the external armor from the [holder].", "You remove the external armor from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
holder.icon_state = "fireripley11"
if(2)
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.", "You secure the external reinforced armor layer.")
holder.icon_state = "fireripley14"
else
- user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
+ user.visible_message("[user] pries external armor layer from the [holder].", "You pry external armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
holder.icon_state = "fireripley12"
if(1)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
+ user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
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.", "You unfasten the external armor layer.")
holder.icon_state = "fireripley13"
return 1
@@ -792,7 +792,7 @@
return check_all_steps(used_atom,user)
/datum/construction/mecha/honker_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
+ user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
holder.overlays += used_atom.icon_state+"+o"
qdel(used_atom)
return 1
@@ -834,19 +834,19 @@
//TODO: better messages.
switch(step)
if(10)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central control module into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central control module into the [holder].")
qdel(used_atom)
if(8)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
if(6)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
+ user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
if(4)
- user.visible_message("[user] puts clown wig and mask on the [holder].", "You put clown wig and mask on the [holder].")
+ user.visible_message("[user] puts clown wig and mask on the [holder].", "You put clown wig and mask on the [holder].")
qdel(used_atom)
if(2)
- user.visible_message("[user] puts clown boots on the [holder].", "You put clown boots on the [holder].")
+ user.visible_message("[user] puts clown boots on the [holder].", "You put clown boots on the [holder].")
qdel(used_atom)
return 1
@@ -977,155 +977,155 @@
//TODO: better messages.
switch(index)
if(20)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "durand1"
if(19)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "durand2"
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "durand0"
if(18)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "durand3"
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "durand1"
if(17)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "durand4"
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "durand2"
if(16)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
holder.icon_state = "durand5"
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "durand3"
if(15)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "durand6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/weapon/circuitboard/mecha/durand/main(get_turf(holder))
holder.icon_state = "durand4"
if(14)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
holder.icon_state = "durand7"
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "durand5"
if(13)
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.", "You secure the peripherals control module.")
holder.icon_state = "durand8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/durand/peripherals(get_turf(holder))
holder.icon_state = "durand6"
if(12)
if(diff==FORWARD)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
+ user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
holder.icon_state = "durand9"
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.", "You unfasten the peripherals control module.")
holder.icon_state = "durand7"
if(11)
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.", "You secure the weapon control module.")
holder.icon_state = "durand10"
else
- user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
+ user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/durand/targeting(get_turf(holder))
holder.icon_state = "durand8"
if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].")
+ user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].")
qdel(used_atom)
holder.icon_state = "durand11"
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.", "You unfasten the weapon control module.")
holder.icon_state = "durand9"
if(9)
if(diff==FORWARD)
- user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.")
+ user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.")
holder.icon_state = "durand12"
else
- user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].")
+ user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].")
new /obj/item/weapon/stock_parts/scanning_module/phasic(get_turf(holder))
holder.icon_state = "durand10"
if(8)
if(diff==FORWARD)
- user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].")
+ user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].")
qdel(used_atom)
holder.icon_state = "durand13"
else
- user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.")
+ user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.")
holder.icon_state = "durand11"
if(7)
if(diff==FORWARD)
- user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.")
+ user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.")
holder.icon_state = "durand14"
else
- user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].")
+ user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].")
new /obj/item/weapon/stock_parts/capacitor/super(get_turf(holder))
holder.icon_state = "durand12"
if(6)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
holder.icon_state = "durand15"
else
- user.visible_message("[user] unfastens the super capacitor.", "You unfasten the super capacitor.")
+ user.visible_message("[user] unfastens the super capacitor.", "You unfasten the super capacitor.")
holder.icon_state = "durand13"
if(5)
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.", "You secure the internal armor layer.")
holder.icon_state = "durand16"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
+ user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
holder.icon_state = "durand14"
if(4)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
+ user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
holder.icon_state = "durand17"
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.", "You unfasten the internal armor layer.")
holder.icon_state = "durand15"
if(3)
if(diff==FORWARD)
- user.visible_message("[user] installs Durand Armor Plates to the [holder].", "You install Durand Armor Plates to the [holder].")
+ user.visible_message("[user] installs Durand Armor Plates to the [holder].", "You install Durand Armor Plates to the [holder].")
qdel(used_atom)
holder.icon_state = "durand18"
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
+ user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
holder.icon_state = "durand16"
if(2)
if(diff==FORWARD)
- user.visible_message("[user] secures Durand Armor Plates.", "You secure Durand Armor Plates.")
+ user.visible_message("[user] secures Durand Armor Plates.", "You secure Durand Armor Plates.")
holder.icon_state = "durand19"
else
- user.visible_message("[user] pries Durand Armor Plates from the [holder].", "You pry Durand Armor Plates from the [holder].")
+ user.visible_message("[user] pries Durand Armor Plates from the [holder].", "You pry Durand Armor Plates from the [holder].")
new /obj/item/mecha_parts/part/durand_armor(get_turf(holder))
holder.icon_state = "durand17"
if(1)
if(diff==FORWARD)
- user.visible_message("[user] welds Durand Armor Plates to the [holder].", "You weld Durand Armor Plates to the [holder].")
+ user.visible_message("[user] welds Durand Armor Plates to the [holder].", "You weld Durand Armor Plates to the [holder].")
else
- user.visible_message("[user] unfastens Durand Armor Plates.", "You unfasten Durand Armor Plates.")
+ user.visible_message("[user] unfastens Durand Armor Plates.", "You unfasten Durand Armor Plates.")
holder.icon_state = "durand18"
return 1
@@ -1147,7 +1147,7 @@
)
/datum/construction/mecha/phazon_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
+ user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
holder.overlays += used_atom.icon_state+"+o"
qdel(used_atom)
return 1
@@ -1276,182 +1276,182 @@
//TODO: better messages.
switch(index)
if(24)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "phazon1"
if(23)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "phazon2"
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "phazon0"
if(22)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "phazon3"
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "phazon1"
if(21)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "phazon4"
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "phazon2"
if(20)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
holder.icon_state = "phazon5"
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "phazon3"
if(19)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "phazon6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/weapon/circuitboard/mecha/phazon/main(get_turf(holder))
holder.icon_state = "phazon4"
if(18)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
holder.icon_state = "phazon7"
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "phazon5"
if(17)
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.", "You secure the peripherals control module.")
holder.icon_state = "phazon8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/phazon/peripherals(get_turf(holder))
holder.icon_state = "phazon6"
if(16)
if(diff==FORWARD)
- user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
+ user.visible_message("[user] installs the weapon control module into the [holder].", "You install the weapon control module into the [holder].")
qdel(used_atom)
holder.icon_state = "phazon9"
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.", "You unfasten the peripherals control module.")
holder.icon_state = "phazon7"
if(15)
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.", "You secure the weapon control module.")
holder.icon_state = "phazon10"
else
- user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
+ user.visible_message("[user] removes the weapon control module from the [holder].", "You remove the weapon control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/phazon/targeting(get_turf(holder))
holder.icon_state = "phazon8"
if(14)
if(diff==FORWARD)
- user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].")
+ user.visible_message("[user] installs phasic scanner module to the [holder].", "You install phasic scanner module to the [holder].")
qdel(used_atom)
holder.icon_state = "phazon11"
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.", "You unfasten the weapon control module.")
holder.icon_state = "phazon9"
if(13)
if(diff==FORWARD)
- user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.")
+ user.visible_message("[user] secures the phasic scanner module.", "You secure the phasic scanner module.")
holder.icon_state = "phazon12"
else
- user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].")
+ user.visible_message("[user] removes the phasic scanner module from the [holder].", "You remove the phasic scanner module from the [holder].")
new /obj/item/weapon/stock_parts/scanning_module/phasic(get_turf(holder))
holder.icon_state = "phazon10"
if(12)
if(diff==FORWARD)
- user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].")
+ user.visible_message("[user] installs super capacitor to the [holder].", "You install super capacitor to the [holder].")
qdel(used_atom)
holder.icon_state = "phazon13"
else
- user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.")
+ user.visible_message("[user] unfastens the phasic scanner module.", "You unfasten the phasic scanner module.")
holder.icon_state = "phazon11"
if(11)
if(diff==FORWARD)
- user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.")
+ user.visible_message("[user] secures the super capacitor.", "You secure the super capacitor.")
holder.icon_state = "phazon14"
else
- user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].")
+ user.visible_message("[user] removes the super capacitor from the [holder].", "You remove the super capacitor from the [holder].")
new /obj/item/weapon/stock_parts/capacitor/super(get_turf(holder))
holder.icon_state = "phazon12"
if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.")
+ user.visible_message("[user] installs the bluespace crystal.", "You install the bluespace crystal.")
qdel(used_atom)
holder.icon_state = "phazon15"
else
- user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the super capacitor from the [holder].")
+ user.visible_message("[user] unsecures the super capacitor from the [holder].", "You unsecure the super capacitor from the [holder].")
holder.icon_state = "phazon13"
if(9)
if(diff==FORWARD)
- user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.")
+ user.visible_message("[user] connects the bluespace crystal.", "You connect the bluespace crystal.")
holder.icon_state = "phazon16"
else
- user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
+ user.visible_message("[user] removes the bluespace crystal from the [holder].", "You remove the bluespace crystal from the [holder].")
new /obj/item/bluespace_crystal(get_turf(holder))
holder.icon_state = "phazon14"
if(8)
if(diff==FORWARD)
- user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.")
+ user.visible_message("[user] engages the bluespace crystal.", "You engage the bluespace crystal.")
holder.icon_state = "phazon17"
else
- user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].")
+ user.visible_message("[user] disconnects the bluespace crystal from the [holder].", "You disconnect the bluespace crystal from the [holder].")
holder.icon_state = "phazon15"
if(7)
if(diff==FORWARD)
- user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
+ user.visible_message("[user] installs the phase armor layer to the [holder].", "You install the phase armor layer to the [holder].")
holder.icon_state = "phazon18"
else
- user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.")
+ user.visible_message("[user] disengages the bluespace crystal.", "You disengage the bluespace crystal.")
holder.icon_state = "phazon16"
if(6)
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.", "You secure the phase armor layer.")
holder.icon_state = "phazon19"
else
- user.visible_message("[user] pries the phase armor layer from the [holder].", "You pry the phase armor layer from the [holder].")
+ user.visible_message("[user] pries the phase armor layer from the [holder].", "You pry the phase armor layer from the [holder].")
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
holder.icon_state = "phazon17"
if(5)
if(diff==FORWARD)
- user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].")
+ user.visible_message("[user] welds the phase armor layer to the [holder].", "You weld the phase armor layer to the [holder].")
holder.icon_state = "phazon20"
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.", "You unfasten the phase armor layer.")
holder.icon_state = "phazon18"
if(4)
if(diff==FORWARD)
- user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].")
+ user.visible_message("[user] installs Phazon Armor Plates to the [holder].", "You install Phazon Armor Plates to the [holder].")
qdel(used_atom)
holder.icon_state = "phazon21"
else
- user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].")
+ user.visible_message("[user] cuts phase armor layer from the [holder].", "You cut the phase armor layer from the [holder].")
holder.icon_state = "phazon19"
if(3)
if(diff==FORWARD)
- user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.")
+ user.visible_message("[user] secures Phazon Armor Plates.", "You secure Phazon Armor Plates.")
holder.icon_state = "phazon22"
else
- user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].")
+ user.visible_message("[user] pries Phazon Armor Plates from the [holder].", "You pry Phazon Armor Plates from the [holder].")
new /obj/item/mecha_parts/part/phazon_armor(get_turf(holder))
holder.icon_state = "phazon20"
if(2)
if(diff==FORWARD)
- user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].")
+ user.visible_message("[user] welds Phazon Armor Plates to the [holder].", "You weld Phazon Armor Plates to the [holder].")
else
- user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.")
+ user.visible_message("[user] unfastens Phazon Armor Plates.", "You unfasten Phazon Armor Plates.")
holder.icon_state = "phazon21"
if(1)
if(diff==FORWARD)
- user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "You slowly place the anomaly core into its socket and close its chamber.")
+ user.visible_message("[user] carefully inserts the anomaly core into \the [holder] and secures it.", "You slowly place the anomaly core into its socket and close its chamber.")
qdel(used_atom)
return 1
@@ -1472,7 +1472,7 @@
)
/datum/construction/mecha/odysseus_chassis/custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder]")
+ user.visible_message("[user] has connected [used_atom] to the [holder].", "You connect [used_atom] to the [holder].")
holder.overlays += used_atom.icon_state+"+o"
qdel(used_atom)
return 1
@@ -1560,109 +1560,109 @@
//TODO: better messages.
switch(index)
if(14)
- user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
+ user.visible_message("[user] connects the [holder] hydraulic systems", "You connect the [holder] hydraulic systems.")
holder.icon_state = "odysseus1"
if(13)
if(diff==FORWARD)
- user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
+ user.visible_message("[user] activates the [holder] hydraulic systems.", "You activate the [holder] hydraulic systems.")
holder.icon_state = "odysseus2"
else
- user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
+ user.visible_message("[user] disconnects the [holder] hydraulic systems", "You disconnect the [holder] hydraulic systems.")
holder.icon_state = "odysseus0"
if(12)
if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
+ user.visible_message("[user] adds the wiring to the [holder].", "You add the wiring to the [holder].")
holder.icon_state = "odysseus3"
else
- user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
+ user.visible_message("[user] deactivates the [holder] hydraulic systems.", "You deactivate the [holder] hydraulic systems.")
holder.icon_state = "odysseus1"
if(11)
if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
+ user.visible_message("[user] adjusts the wiring of the [holder].", "You adjust the wiring of the [holder].")
holder.icon_state = "odysseus4"
else
- user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
+ user.visible_message("[user] removes the wiring from the [holder].", "You remove the wiring from the [holder].")
var/obj/item/stack/cable_coil/coil = new /obj/item/stack/cable_coil(get_turf(holder))
coil.amount = 4
holder.icon_state = "odysseus2"
if(10)
if(diff==FORWARD)
- user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
+ user.visible_message("[user] installs the central control module into the [holder].", "You install the central computer mainboard into the [holder].")
qdel(used_atom)
holder.icon_state = "odysseus5"
else
- user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
+ user.visible_message("[user] disconnects the wiring of the [holder].", "You disconnect the wiring of the [holder].")
holder.icon_state = "odysseus3"
if(9)
if(diff==FORWARD)
- user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
+ user.visible_message("[user] secures the mainboard.", "You secure the mainboard.")
holder.icon_state = "odysseus6"
else
- user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
+ user.visible_message("[user] removes the central control module from the [holder].", "You remove the central computer mainboard from the [holder].")
new /obj/item/weapon/circuitboard/mecha/odysseus/main(get_turf(holder))
holder.icon_state = "odysseus4"
if(8)
if(diff==FORWARD)
- user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
+ user.visible_message("[user] installs the peripherals control module into the [holder].", "You install the peripherals control module into the [holder].")
qdel(used_atom)
holder.icon_state = "odysseus7"
else
- user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
+ user.visible_message("[user] unfastens the mainboard.", "You unfasten the mainboard.")
holder.icon_state = "odysseus5"
if(7)
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.", "You secure the peripherals control module.")
holder.icon_state = "odysseus8"
else
- user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
+ user.visible_message("[user] removes the peripherals control module from the [holder].", "You remove the peripherals control module from the [holder].")
new /obj/item/weapon/circuitboard/mecha/odysseus/peripherals(get_turf(holder))
holder.icon_state = "odysseus6"
if(6)
if(diff==FORWARD)
- user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
+ user.visible_message("[user] installs the internal armor layer to the [holder].", "You install the internal armor layer to the [holder].")
holder.icon_state = "odysseus9"
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.", "You unfasten the peripherals control module.")
holder.icon_state = "odysseus7"
if(5)
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.", "You secure the internal armor layer.")
holder.icon_state = "odysseus10"
else
- user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
+ user.visible_message("[user] pries internal armor layer from the [holder].", "You pry internal armor layer from the [holder].")
var/obj/item/stack/sheet/metal/MS = new /obj/item/stack/sheet/metal(get_turf(holder))
MS.amount = 5
holder.icon_state = "odysseus8"
if(4)
if(diff==FORWARD)
- user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
+ user.visible_message("[user] welds the internal armor layer to the [holder].", "You weld the internal armor layer to the [holder].")
holder.icon_state = "odysseus11"
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.", "You unfasten the internal armor layer.")
holder.icon_state = "odysseus9"
if(3)
if(diff==FORWARD)
- user.visible_message("[user] installs [used_atom] layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
+ user.visible_message("[user] installs [used_atom] layer to the [holder].", "You install the external reinforced armor layer to the [holder].")
holder.icon_state = "odysseus12"
else
- user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
+ user.visible_message("[user] cuts the internal armor layer from the [holder].", "You cut the internal armor layer from the [holder].")
holder.icon_state = "odysseus10"
if(2)
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.", "You secure the external reinforced armor layer.")
holder.icon_state = "odysseus13"
else
var/obj/item/stack/sheet/plasteel/MS = new /obj/item/stack/sheet/plasteel(get_turf(holder))
MS.amount = 5
- user.visible_message("[user] pries [MS] from the [holder].", "You pry [MS] from the [holder].")
+ user.visible_message("[user] pries [MS] from the [holder].", "You pry [MS] from the [holder].")
holder.icon_state = "odysseus11"
if(1)
if(diff==FORWARD)
- user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
+ user.visible_message("[user] welds the external armor layer to the [holder].", "You weld the external armor layer to the [holder].")
holder.icon_state = "odysseus14"
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.", "You unfasten the external armor layer.")
holder.icon_state = "odysseus12"
return 1
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index feeb4b6c56e..96504721e0c 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -18,34 +18,34 @@
/obj/structure/mecha_wreckage/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/weldingtool))
if(salvage_num <= 0)
- user << "You don't see anything that can be cut with [I]."
+ user << "You don't see anything that can be cut with [I]!"
return
var/obj/item/weapon/weldingtool/WT = I
if(welder_salvage && welder_salvage.len && WT.remove_fuel(0, user))
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].", "You cut [N] from [src].")
if(istype(N, /obj/item/mecha_parts/part))
welder_salvage -= type
salvage_num--
else
- user << "You failed to salvage anything valuable from [src]."
+ user << "You fail to salvage anything valuable from [src]!"
else
return
if(istype(I, /obj/item/weapon/wirecutters))
if(salvage_num <= 0)
- user << "You don't see anything that can be cut with [I]."
+ user << "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].", "You cut [N] from [src].")
salvage_num--
else
- user << "You failed to salvage anything valuable from [src]."
+ user << "You fail to salvage anything valuable from [src]!"
if(istype(I, /obj/item/weapon/crowbar))
if(crowbar_salvage && crowbar_salvage.len)
@@ -53,10 +53,10 @@
if(S)
S.loc = get_turf(user)
crowbar_salvage -= S
- user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].")
+ user.visible_message("[user] pries [S] from [src].", "You pry [S] from [src].")
return
else
- user << "You don't see anything that can be pried with [I]."
+ user << "You don't see anything that can be pried with [I]!"
else
..()
diff --git a/code/game/objects/buckling.dm b/code/game/objects/buckling.dm
index ffc4db6400c..be8d9fccbc3 100644
--- a/code/game/objects/buckling.dm
+++ b/code/game/objects/buckling.dm
@@ -74,14 +74,14 @@
if(buckle_mob(M))
if(M == user)
M.visible_message(\
- "[M.name] buckles themselves to [src].",\
+ "[M.name] buckles themselves to [src].",\
"You buckle yourself to [src].",\
- "You hear metal clanking.")
+ "You hear metal clanking.")
else
M.visible_message(\
- "[M.name] is buckled to [src] by [user.name]!",\
+ "[M.name] is buckled to [src] by [user.name]!",\
"You are buckled to [src] by [user.name]!",\
- "You heat metal clanking.")
+ "You heat metal clanking.")
/obj/proc/user_unbuckle_mob(mob/user)
var/mob/living/M = unbuckle_mob()
@@ -89,14 +89,14 @@
if(M)
if(M != user)
M.visible_message(\
- "[M.name] was unbuckled by [user.name]!",\
+ "[M.name] was unbuckled by [user.name].",\
"You were unbuckled from [src] by [user.name].",\
- "You hear metal clanking.")
+ "You hear metal clanking.")
else
M.visible_message(\
"[M.name] unbuckled themselves!",\
"You unbuckled yourself from [src].",\
- "You hear metal clanking.")
+ "You hear metal clanking.")
add_fingerprint(user)
return M
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index 00615da6e0e..2fbe83f9bf5 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -322,7 +322,7 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
if("Yes")
if( user.loc != temp_loc || ruined )
return
- visible_message("[user] rips [src] in a single, decisive motion!" )
+ visible_message("[user] rips [src] in a single, decisive motion!" )
playsound(src.loc, 'sound/items/poster_ripped.ogg', 100, 1)
ruined = 1
icon_state = "poster_ripped"
@@ -346,11 +346,11 @@ obj/structure/sign/poster/attackby(obj/item/I, mob/user, params)
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))
- user << "The wall is far too cluttered to place a poster!"
+ user << "The wall is far too cluttered to place a poster!"
return
stuff_on_wall++
if(stuff_on_wall == 3)
- user << "The wall is far too cluttered to place a poster!"
+ user << "The wall is far too cluttered to place a poster!"
return
user << "You start placing the poster on the wall..." //Looks like it's uncluttered enough. Place the poster.
diff --git a/code/game/objects/effects/decals/crayon.dm b/code/game/objects/effects/decals/crayon.dm
index 7c460171a90..8aca6f11748 100644
--- a/code/game/objects/effects/decals/crayon.dm
+++ b/code/game/objects/effects/decals/crayon.dm
@@ -18,6 +18,9 @@
name = e_name
desc = "A [name] drawn in crayon."
+ if(type == "poseur tag")
+ gang_name() //Generate gang names so they get removed from the pool
+ type = pick(gang_name_pool)
icon_state = type
var/matrix/M = matrix()
@@ -35,38 +38,30 @@
qdel(src)
var/area/territory = get_area(location)
- var/list/recipients = list()
var/color
if(type == "A")
gang = type
color = "#00b4ff"
icon_state = gang_name("A")
- recipients = ticker.mode.A_tools
- ticker.mode.A_territory |= territory.type
+ ticker.mode.A_territory_new |= list(territory.type = territory.name)
+ ticker.mode.A_territory_lost -= territory.type
else if(type == "B")
gang = type
color = "#ff3232"
icon_state = gang_name("B")
- recipients = ticker.mode.B_tools
- ticker.mode.B_territory |= territory.type
-
- if(recipients.len)
- ticker.mode.message_gangtools(recipients,"New territory claimed: [territory]",0)
+ ticker.mode.B_territory_new |= list(territory.type = territory.name)
+ ticker.mode.B_territory_lost -= territory.type
..(location, color, icon_state, e_name, rotation)
/obj/effect/decal/cleanable/crayon/gang/Destroy()
var/area/territory = get_area(src)
- var/list/recipients = list()
if(gang == "A")
- recipients += ticker.mode.A_tools
- ticker.mode.A_territory -= territory.type
+ ticker.mode.A_territory_new -= territory.type
+ ticker.mode.A_territory_lost |= list(territory.type = territory.name)
if(gang == "B")
- recipients += ticker.mode.B_tools
- ticker.mode.B_territory -= territory.type
- if(recipients.len)
- ticker.mode.message_gangtools(recipients,"Territory lost: [territory]",0)
-
+ ticker.mode.B_territory_new -= territory.type
+ ticker.mode.B_territory_lost |= list(territory.type = territory.name)
..()
\ No newline at end of file
diff --git a/code/game/objects/effects/effect_system/effects_foam.dm b/code/game/objects/effects/effect_system/effects_foam.dm
index 8bb92d6e51e..a116645b9d5 100644
--- a/code/game/objects/effects/effect_system/effects_foam.dm
+++ b/code/game/objects/effects/effect_system/effects_foam.dm
@@ -222,14 +222,14 @@
/obj/structure/foamedmetal/attack_hulk(mob/living/carbon/human/user)
..(user, 1)
if(prob(75 - metal*25))
- user.visible_message("[user] smashes through the foamed metal.", \
- "You smash through the metal foam wall.")
+ user.visible_message("[user] smashes through the foamed metal!", \
+ "You smash through the metal foam wall!")
qdel(src)
return 1
/obj/structure/foamedmetal/attack_hand(var/mob/user)
- user << "You hit the metal foam but bounce off it."
+ user << "You hit the metal foam but bounce off it!"
/obj/structure/foamedmetal/attackby(var/obj/item/I, var/mob/user, params)
@@ -242,11 +242,11 @@
return
if(prob(I.force*20 - metal*25))
- user.visible_message("[user] smashes through the foamed metal.", \
- "You smash through the foamed metal with \the [I].")
+ user.visible_message("[user] smashes through the foamed metal!", \
+ "You smash through the foamed metal with \the [I]!")
qdel(src)
else
- user << "You hit the metal foam to no effect."
+ user << "You hit the metal foam to no effect!"
/obj/structure/foamedmetal/CanPass(atom/movable/mover, turf/target, height=1.5)
diff --git a/code/game/objects/effects/effect_system/effects_other.dm b/code/game/objects/effects/effect_system/effects_other.dm
index 93219cb61b4..30f2be1dd2d 100644
--- a/code/game/objects/effects/effect_system/effects_other.dm
+++ b/code/game/objects/effects/effect_system/effects_other.dm
@@ -75,7 +75,7 @@
/datum/effect/effect/system/reagents_explosion/start()
if(explosion_message)
location.visible_message("The solution violently explodes!", \
- "You hear an explosion!")
+ "You hear an explosion!")
if (amount <= 2)
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(2, 1, location)
diff --git a/code/game/objects/effects/spiders.dm b/code/game/objects/effects/spiders.dm
index e820cc57eaf..b680e468d13 100644
--- a/code/game/objects/effects/spiders.dm
+++ b/code/game/objects/effects/spiders.dm
@@ -141,7 +141,7 @@
var/obj/machinery/atmospherics/unary/vent_pump/exit_vent = pick(vents)
if(prob(50))
visible_message("[src] scrambles into the ventillation ducts!", \
- "You hear something squeezing through the ventilation ducts.")
+ "You hear something scampering through the ventilation ducts.")
spawn(rand(20,60))
loc = exit_vent
@@ -154,7 +154,7 @@
return
if(prob(50))
- audible_message("You hear something squeezing through the ventilation ducts.")
+ audible_message("You hear something scampering through the ventilation ducts.")
sleep(travel_time)
if(!exit_vent || exit_vent.welded)
@@ -233,7 +233,7 @@
var/breakout_time = 2
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
- user << "You struggle against the tight bonds! (This will take about [breakout_time] minutes.)"
+ user << "You struggle against the tight bonds... (This will take about [breakout_time] minutes.)"
visible_message("You see something struggling and writhing in \the [src]!")
if(do_after(user,(breakout_time*60*10)))
if(!user || user.stat != CONSCIOUS || user.loc != src)
@@ -243,7 +243,7 @@
/obj/effect/spider/cocoon/Destroy()
- src.visible_message("\The [src] splits open.")
+ src.visible_message("\The [src] splits open.")
for(var/atom/movable/A in contents)
A.loc = src.loc
..()
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 045886e7065..f81bb41f659 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -193,7 +193,7 @@
if(!A.has_fine_manipulation || w_class >= 4)
if(src in A.contents) // To stop Aliens having items stuck in their pockets
A.unEquip(src)
- user << "Your claws aren't capable of such fine manipulation."
+ user << "Your claws aren't capable of such fine manipulation!"
return
attack_paw(A)
@@ -235,7 +235,7 @@
else if(success)
user << "You put some things [S.preposition] [S]."
else
- user << "You fail to pick anything up with [S]."
+ user << "You fail to pick anything up with [S]!"
else if(S.can_be_inserted(src))
S.handle_item_insertion(src)
@@ -302,7 +302,7 @@
usr << "\red You already have something in your hand."
*/
else
- usr << "This mob type can't use this verb."
+ usr << "This mob type can't use this verb!"
//This proc is executed when someone clicks the on-screen UI button. To make the UI button show, set the 'action_button_name'.
//The default action is attack_self().
@@ -325,7 +325,7 @@
(H.glasses && H.glasses.flags & GLASSESCOVERSEYES) \
))
// you can't stab someone in the eyes wearing a mask!
- user << "You're going to need to remove that mask/helmet/glasses first."
+ user << "You're going to need to remove that mask/helmet/glasses first!"
return
var/mob/living/carbon/monkey/Mo = M
@@ -333,11 +333,11 @@
(Mo.wear_mask && Mo.wear_mask.flags & MASKCOVERSEYES) \
))
// you can't stab someone in the eyes wearing a mask!
- user << "You're going to need to remove that mask/helmet/glasses first."
+ user << "You're going to need to remove that mask/helmet/glasses first!"
return
if(isalien(M))//Aliens don't have eyes./N slimes also don't have eyes!
- user << "You cannot locate any eyes on this creature!"
+ user << "You cannot locate any eyes on this creature!"
return
add_logs(user, M, "attacked", object="[src.name]", addition="(INTENT: [uppertext(user.a_intent)])")
@@ -403,6 +403,9 @@
/obj/item/acid_act(var/acidpwr, var/toxpwr, var/acid_volume)
. = 1
+ if(unacidable)
+ return
+
for(var/V in armor)
if(armor[V] > 0)
.-- //it survives the acid...
diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm
index af2552dded1..be9e287bb22 100644
--- a/code/game/objects/items/apc_frame.dm
+++ b/code/game/objects/items/apc_frame.dm
@@ -22,22 +22,22 @@
var/turf/loc = get_turf(usr)
var/area/A = loc.loc
if (!istype(loc, /turf/simulated/floor))
- usr << "APC cannot be placed on this spot."
+ usr << "APC cannot be placed on this spot!"
return
if (A.requires_power == 0 || istype(A, /area/space))
- usr << "APC cannot be placed in this area."
+ usr << "APC cannot be placed in this area!"
return
if (A.get_apc())
- usr << "This area already has APC."
+ usr << "This area already has APC!"
return //only one APC per area
for(var/obj/machinery/power/terminal/T in loc)
if (T.master)
- usr << "There is another network terminal here."
+ usr << "There is another network terminal here!"
return
else
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(loc)
C.amount = 10
- usr << "You cut the cables and disassemble the unused power terminal."
+ usr << "You cut the cables and disassemble the unused power terminal."
qdel(T)
new /obj/machinery/power/apc(loc, ndir, 1)
qdel(src)
diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm
index 1a120d0f33b..2013d180b59 100644
--- a/code/game/objects/items/crayons.dm
+++ b/code/game/objects/items/crayons.dm
@@ -88,6 +88,7 @@
/obj/item/toy/crayon/spraycan
icon_state = "spraycan_cap"
+ item_state = "spraycan"
desc = "A metallic container containing tasty paint."
var/capped = 1
instant = 1
@@ -132,9 +133,9 @@
if(iscarbon(target))
if(uses)
playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5)
- uses = max(0,uses-10)
var/mob/living/carbon/human/C = target
- user.visible_message(" [user] sprays [src] into the face of [target]!")
+ user.visible_message("[user] sprays [src] into the face of [target]!")
+ target << "[user] sprays [src] into your face!"
if(C.client)
C.eye_blurry = max(C.eye_blurry, 3)
C.eye_blind = max(C.eye_blind, 1)
@@ -144,6 +145,7 @@
C.lip_style = "spray_face"
C.lip_color = colour
C.update_body()
+ uses = max(0,uses-10)
..()
/obj/item/toy/crayon/spraycan/update_icon()
@@ -156,4 +158,5 @@
desc = "A suspicious-looking spraycan modified to use special paint used by gangsters to mark territory."
icon_state = "spraycan_gang_cap"
gang = 1
- instant = -1
\ No newline at end of file
+ uses = 15
+ instant = -1
diff --git a/code/game/objects/items/devices/PDA/PDA.dm b/code/game/objects/items/devices/PDA/PDA.dm
index e93ceeb89dc..4ef33585421 100644
--- a/code/game/objects/items/devices/PDA/PDA.dm
+++ b/code/game/objects/items/devices/PDA/PDA.dm
@@ -864,9 +864,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(id)
remove_id()
else
- usr << "This PDA does not have an ID in it."
+ usr << "This PDA does not have an ID in it!"
else
- usr << "You cannot do this while restrained."
+ usr << "You cannot do that while restrained!"
/obj/item/device/pda/verb/verb_remove_id()
set category = "Object"
@@ -880,9 +880,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
if(id)
remove_id()
else
- usr << "This PDA does not have an ID in it."
+ usr << "This PDA does not have an ID in it!"
else
- usr << "You cannot do this while restrained."
+ usr << "You cannot do that while restrained!"
/obj/item/device/pda/verb/verb_remove_pen()
@@ -904,9 +904,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
return
O.loc = get_turf(src)
else
- usr << "This PDA does not have a pen in it."
+ usr << "This PDA does not have a pen in it!"
else
- usr << "You cannot do this while restrained."
+ usr << "You cannot do that while restrained!"
/obj/item/device/pda/proc/id_check(mob/user as mob, choice as num)//To check for IDs; 1 for in-pda use, 2 for out of pda use.
if(choice == 1)
@@ -942,7 +942,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
else if(istype(C, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/idcard = C
if(!idcard.registered_name)
- user << "\The [src] rejects the ID."
+ user << "\The [src] rejects the ID!"
return
if(!owner)
owner = idcard.registered_name
@@ -967,7 +967,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
else if(istype(C, /obj/item/weapon/pen))
var/obj/item/weapon/pen/O = locate() in src
if(O)
- user << "There is already a pen in \the [src]."
+ user << "There is already a pen in \the [src]!"
else
user.drop_item()
C.loc = src
@@ -1030,7 +1030,7 @@ var/global/list/obj/item/device/pda/PDAs = list()
if (!scanmode && istype(A, /obj/item/weapon/paper) && owner)
if (!A:info)
- user << "Unable to scan. Paper is blank."
+ user << "Unable to scan! Paper is blank."
return
notehtml = A:info
note = replacetext(notehtml, "
", "\[br\]")
diff --git a/code/game/objects/items/devices/camera_bug.dm b/code/game/objects/items/devices/camera_bug.dm
index 6d5c687803b..64c7c3d270f 100644
--- a/code/game/objects/items/devices/camera_bug.dm
+++ b/code/game/objects/items/devices/camera_bug.dm
@@ -249,11 +249,11 @@
var/obj/machinery/camera/C = locate(href_list["view"])
if(istype(C))
if(!C.can_use())
- usr << "Something's wrong with that camera. You can't get a feed."
+ usr << "Something's wrong with that camera! You can't get a feed."
return
var/turf/T = get_turf(loc)
if(!T || C.z != T.z)
- usr << "You can't get a signal."
+ usr << "You can't get a signal!"
return
current = C
spawn(6)
@@ -311,7 +311,7 @@
/obj/item/device/camera_bug/attackby(var/obj/item/W as obj,var/mob/living/user as mob, params)
if(istype(W,/obj/item/weapon/screwdriver) && expansion)
expansion.loc = get_turf(loc)
- user << "You unscrew [expansion]."
+ user << "You unscrew [expansion]."
user.put_in_inactive_hand(expansion)
expansion = null
bugtype = VANILLA_BUG
@@ -352,7 +352,7 @@
user.drop_item()
W.loc = src
expansion = W
- user << "You add [W] to [src]."
+ user << "You add [W] to [src]."
get_cameras() // the tracking code will want to know the new camera list
if(bugtype in list(UNIVERSAL_BUG,NETWORK_BUG,ADMIN_BUG))
skip_bugcheck = 1
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 333bcb0c658..8901d2dd0ad 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -25,7 +25,7 @@
/obj/item/device/flash/proc/burn_out() //Made so you can override it if you want to have an invincible flash from R&D or something.
broken = 1
icon_state = "[initial(icon_state)]burnt"
- visible_message("The [src.name] burns out!")
+ visible_message("The [src.name] burns out!")
/obj/item/device/flash/proc/flash_recharge(var/mob/user)
@@ -66,12 +66,16 @@
M.confused += power
terrible_conversion_proc(M, user)
M.Stun(1)
- user.visible_message("[user] blinds [M] with the flash!")
+ visible_message("[user] blinds [M] with the flash!")
+ user << "You blind [M] with the flash!"
+ M << "[user] blinds you with the flash!"
if(M.weakeyes)
M.Stun(2)
- M.visible_message("[M] gasps and shields their eyes!")
+ M.visible_message("[M] gasps and shields their eyes!", "You gasp and shields your eyes!")
else
- user.visible_message("[user] fails to blind [M] with the flash!")
+ visible_message("[user] fails to blind [M] with the flash!")
+ user << "You fail to blind [M] with the flash!"
+ M << "[user] fails to blind you with the flash!"
else
if(M.flash_eyes())
M.confused += power
@@ -88,16 +92,16 @@
add_logs(user, M, "flashed", object="[src.name]")
flick("e_flash", M.flash)
M.Weaken(rand(5,10))
- user.visible_message("[user] overloads [M]'s sensors with the flash!")
+ user.visible_message("[user] overloads [M]'s sensors with the flash!", "You overload [M]'s sensors with the flash!")
return 1
- user.visible_message("[user] fails to blind [M] with the flash!")
+ user.visible_message("[user] fails to blind [M] with the flash!", "You fail to blind [M] with the flash!")
/obj/item/device/flash/attack_self(mob/living/carbon/user, flag = 0, emp = 0)
if(!try_use_flash(user))
return 0
- user.visible_message("[user]'s flash emits a blinding light!")
+ user.visible_message("[user]'s flash emits a blinding light!", "Your flash emits a blinding light!")
for(var/mob/living/carbon/M in oviewers(3, null))
flash_carbon(M, user, 3, 0)
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 14409f8c738..5e8555d13ad 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -38,7 +38,7 @@
/obj/item/device/flashlight/attack_self(mob/user)
if(!isturf(user.loc))
- user << "You cannot turn the light on while in this [user.loc]." //To prevent some lighting anomalities.
+ user << "You cannot turn the light on while in this [user.loc]!" //To prevent some lighting anomalities.
return 0
on = !on
update_brightness(user)
@@ -53,7 +53,7 @@
return ..() //just hit them in the head
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return
var/mob/living/carbon/human/H = M //mob has protective eyewear
@@ -64,21 +64,22 @@
if(M == user) //they're using it on themselves
if(!M.eye_blind)
flick("flash", M.flash)
- M.visible_message("[M] directs [src] to \his eyes.", \
+ M.visible_message("[M] directs [src] to \his eyes.", \
"You wave the light in front of your eyes! Trippy!")
else
- M.visible_message("[M] directs [src] to \his eyes.", \
+ M.visible_message("[M] directs [src] to \his eyes.", \
"You wave the light in front of your eyes.")
return
- user.visible_message("[user] directs [src] to [M]'s eyes.", \
- "You direct [src] to [M]'s eyes.")
+ user.visible_message("[user] directs [src] to [M]'s eyes.", \
+ "You direct [src] to [M]'s eyes.")
+ M << "[user] directs [src] to your eyes."
if(istype(M, /mob/living/carbon/human) || istype(M, /mob/living/carbon/monkey)) //robots and aliens are unaffected
if(M.stat == DEAD || M.disabilities & BLIND) //mob is dead or fully blind
- user << "[M] pupils does not react to the light!"
+ user << "[M] pupils don't react to the light!"
else if(M.dna.check_mutation(XRAY)) //mob has X-RAY vision
- user << "[M] pupils give an eerie glow!"
+ user << "[M] pupils give an eerie glow!"
else //they're okay!
if(!M.eye_blind)
flick("flash", M.flash) //flash the affected mob
@@ -111,7 +112,7 @@
/obj/item/device/flashlight/pen/afterattack(atom/target, mob/user, proximity_flag)
if(!proximity_flag)
if(holo_cooldown)
- user << "[src] is not ready yet."
+ user << "[src] is not ready yet!"
return
var/T = get_turf(target)
if(locate(/mob/living) in T)
@@ -237,7 +238,7 @@ obj/item/device/flashlight/lamp/bananalamp
// Usual checks
if(!fuel)
- user << "It's out of fuel."
+ user << "It's out of fuel!"
return
if(on)
return
diff --git a/code/game/objects/items/devices/instruments.dm b/code/game/objects/items/devices/instruments.dm
new file mode 100644
index 00000000000..6ecc1a86125
--- /dev/null
+++ b/code/game/objects/items/devices/instruments.dm
@@ -0,0 +1,57 @@
+//copy pasta of the space piano, don't hurt me -Pete
+/obj/item/device/instrument
+ name = "generic instrument"
+ var/datum/song/handheld/song
+ var/instrumentId = "generic"
+ var/instrumentExt = "ogg"
+
+/obj/item/device/instrument/New()
+ song = new(instrumentId, src)
+ song.instrumentExt = instrumentExt
+
+/obj/item/device/instrument/Destroy()
+ qdel(song)
+ song = null
+ ..()
+
+/obj/item/device/instrument/initialize()
+ song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded
+ ..()
+
+/obj/item/device/instrument/attack_self(mob/user as mob)
+ if(!user.IsAdvancedToolUser())
+ user << "You don't have the dexterity to do this!"
+ return 1
+ interact(user)
+
+/obj/item/device/instrument/interact(mob/user as mob)
+ if(!user)
+ return
+
+ if(!isliving(user) || user.stat || user.restrained() || user.lying)
+ return
+
+ user.set_machine(src)
+ song.interact(user)
+
+/obj/item/device/instrument/violin
+ name = "space violin"
+ desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\""
+ icon = 'icons/obj/musician.dmi'
+ icon_state = "violin"
+ item_state = "violin"
+ force = 10
+ hitsound = "swing_hit"
+ instrumentId = "violin"
+
+/obj/item/device/instrument/guitar
+ name = "guitar"
+ desc = "It's made of wood and has bronze strings."
+ icon = 'icons/obj/musician.dmi'
+ icon_state = "guitar"
+ item_state = "guitar"
+ force = 10
+ attack_verb = list("played metal on", "serenaded", "crashed", "smashed")
+ hitsound = "swing_hit"
+ instrumentId = "guitar"
+
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index d773852de9b..c66a93aa4ad 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -112,7 +112,7 @@
if(C.weakeyes)
C.Stun(1)
else
- outmsg = "You fail to blind [C] by shining [src] at their eyes."
+ outmsg = "You fail to blind [C] by shining [src] at their eyes!"
//robots and AI
else if(issilicon(target))
@@ -121,11 +121,11 @@
if(prob(effectchance * diode.rating))
flick("e_flash", S.flash)
S.Weaken(rand(5,10))
- S << "Your sensors were overloaded by a laser!"
+ S << "Your sensors were overloaded by a laser!"
outmsg = "You overload [S] by shining [src] at their sensors."
add_logs(user, S, "shone in the sensors", object="laser pointer")
else
- outmsg = "You fail to overload [S] by shining [src] at their sensors."
+ outmsg = "You fail to overload [S] by shining [src] at their sensors!"
//cameras
else if(istype(target, /obj/machinery/camera))
@@ -135,7 +135,7 @@
outmsg = "You hit the lens of [C] with [src], temporarily disabling the camera!"
add_logs(user, C, "EMPed", object="laser pointer")
else
- outmsg = "You missed the lens of [C] with [src]."
+ outmsg = "You miss the lens of [C] with [src]!"
//laser pointer image
icon_state = "pointer_[pointer_icon_state]"
@@ -158,7 +158,7 @@
recharging = 1
SSobj.processing |= src
if(energy <= 0)
- user << "You've overused the battery of [src], now it needs time to recharge!"
+ user << "The [src]'s battery is overused, it needs time to recharge!"
recharge_locked = 1
flick_overlay(I, showto, 10)
diff --git a/code/game/objects/items/devices/lightreplacer.dm b/code/game/objects/items/devices/lightreplacer.dm
index d4f37fa97e5..4580e823eba 100644
--- a/code/game/objects/items/devices/lightreplacer.dm
+++ b/code/game/objects/items/devices/lightreplacer.dm
@@ -82,19 +82,19 @@
user << "You insert a piece of glass into the [src.name]. You have [uses] lights remaining."
return
else
- user << "You need one sheet of glass to replace lights."
+ user << "You need one sheet of glass to replace lights!"
if(istype(W, /obj/item/weapon/light))
var/obj/item/weapon/light/L = W
if(L.status == 0) // LIGHT OKAY
if(uses < max_uses)
AddUses(1)
- user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining."
+ user << "You insert the [L.name] into the [src.name]. You have [uses] lights remaining."
user.drop_item()
qdel(L)
return
else
- user << "You need a working light."
+ user << "You need a working light!"
return
/obj/item/device/lightreplacer/emag_act()
@@ -170,7 +170,7 @@
U << failmsg
return
else
- U << "There is a working [target.fitting] already inserted."
+ U << "There is a working [target.fitting] already inserted!"
return
/obj/item/device/lightreplacer/proc/Emag()
diff --git a/code/game/objects/items/devices/megaphone.dm b/code/game/objects/items/devices/megaphone.dm
index 29c9fbfbba9..3b307fc00cf 100644
--- a/code/game/objects/items/devices/megaphone.dm
+++ b/code/game/objects/items/devices/megaphone.dm
@@ -32,7 +32,7 @@
message = capitalize(message)
if(!user.can_speak(message))
- user << "You find yourself unable to speak at all."
+ user << "You find yourself unable to speak at all!"
return
if ((src.loc == user && user.stat == 0))
diff --git a/code/game/objects/items/devices/paicard.dm b/code/game/objects/items/devices/paicard.dm
index 9d656406bbf..f827375582a 100644
--- a/code/game/objects/items/devices/paicard.dm
+++ b/code/game/objects/items/devices/paicard.dm
@@ -69,7 +69,7 @@
if(pai.master_dna)
return
if(!istype(usr, /mob/living/carbon))
- usr << "You don't have any DNA, or your DNA is incompatible with this device."
+ usr << "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
diff --git a/code/game/objects/items/devices/pizza_bomb.dm b/code/game/objects/items/devices/pizza_bomb.dm
index b7256885428..cbf2bb7d193 100644
--- a/code/game/objects/items/devices/pizza_bomb.dm
+++ b/code/game/objects/items/devices/pizza_bomb.dm
@@ -67,7 +67,7 @@
user.visible_message("[user] cuts the [chosen_wire] wire!", "You cut the [chosen_wire] wire!")
sleep(5)
if(chosen_wire == correct_wire)
- src.audible_message("\icon[src] \The [src] suddenly stops beeping and seems lifeless.")
+ src.audible_message("\icon[src] \The [src] suddenly stops beeping and seems lifeless.")
user << "You did it!"
icon_state = "pizzabox_bomb_[correct_wire]"
name = "pizza bomb"
@@ -81,13 +81,13 @@
return
if(istype(I, /obj/item/weapon/wirecutters) && disarmed)
if(!in_range(user, src))
- user << "You can't see the box well enough to cut the wires out."
+ user << "You can't see the box well enough to cut the wires out!"
return
- user.visible_message("[user] starts removing the payload and wires from \the [src].")
+ user.visible_message("[user] starts removing the payload and wires from \the [src].", "You start removing the payload and wires from \the [src]...")
if(do_after(user, 40))
playsound(src, 'sound/items/Wirecutter.ogg', 50, 1, 1)
user.unEquip(src)
- user.visible_message("[user] removes the insides of \the [src]!")
+ user.visible_message("[user] removes the insides of \the [src]!", "You remove the insides of \the [src].")
var/obj/item/stack/cable_coil/C = new /obj/item/stack/cable_coil(src.loc)
C.amount = 3
new /obj/item/weapon/bombcore/miniature(src.loc)
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index 746dfaea182..970e7550699 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -61,21 +61,21 @@
if(isturf(T) && !T.intact)
attached = locate() in T
if(!attached)
- user << "No exposed cable here to attach to."
+ user << "No exposed cable here to attach to!"
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.")
+ "You attach \the [src] to the cable.",
+ "You hear some wires being connected to something.")
else
- user << "Device must be placed over an exposed cable to attach to it."
+ user << "Device must be placed over an exposed cable to attach to it!"
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.")
+ "You detach \the [src] from the cable.",
+ "You hear some wires being disconnected from something.")
else
..()
@@ -93,8 +93,8 @@
if(CLAMPED_OFF)
user.visible_message( \
"[user] activates \the [src]!", \
- "You activate \the [src]!",
- "You hear a click.")
+ "You activate \the [src].",
+ "You hear a click.")
message_admins("Power sink activated by [key_name(user, user.client)](?) at ([x],[y],[z] - JMP)")
log_game("Power sink activated by [key_name(user)] at ([x],[y],[z])")
set_mode(OPERATING)
@@ -102,8 +102,8 @@
if(OPERATING)
user.visible_message( \
"[user] deactivates \the [src]!", \
- "You deactivate \the [src]!",
- "You hear a click.")
+ "You deactivate \the [src].",
+ "You hear a click.")
set_mode(CLAMPED_OFF)
/obj/item/device/powersink/process()
diff --git a/code/game/objects/items/devices/radio/electropack.dm b/code/game/objects/items/devices/radio/electropack.dm
index 06922665771..3af3ab07841 100644
--- a/code/game/objects/items/devices/radio/electropack.dm
+++ b/code/game/objects/items/devices/radio/electropack.dm
@@ -27,7 +27,7 @@
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.back)
- user << "You need help taking this off!"
+ user << "You need help taking this off!"
return
..()
@@ -38,7 +38,7 @@
A.icon = 'icons/obj/assemblies.dmi'
if(!user.unEquip(W))
- user << "\the [W] is stuck to your hand, you cannot attach it to \the [src]!"
+ user << "\the [W] is stuck to your hand, you cannot attach it to \the [src]!"
return
W.loc = A
W.master = A
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 86fce610ab3..92ad5697dc7 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -242,14 +242,14 @@
keyslot2 = null
recalculateChannels()
- user << "You pop out the encryption keys in the headset!"
+ user << "You pop out the encryption keys in the headset."
else
- user << "This headset doesn't have any unique encryption keys! How useless..."
+ user << "This headset doesn't have any unique encryption keys! How useless..."
if(istype(W, /obj/item/device/encryptionkey/))
if(keyslot && keyslot2)
- user << "The headset can't hold another key!"
+ user << "The headset can't hold another key!"
return
if(!keyslot)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index c7283a15f29..169baa3a259 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -372,7 +372,7 @@
signal.frequency = freqnum // Quick frequency set
Broadcast_Message(M, voicemask,
src, message, voice, jobname, real_name,
- 4, signal.data["compression"], list(position.z, 0), freq, spans,
+ 5, signal.data["compression"], list(position.z, 0), freq, spans,
verb_say, verb_ask, verb_exclaim, verb_yell)
return
@@ -621,14 +621,14 @@
keyslot = null
recalculateChannels()
- user << "You pop out the encryption key in the radio!"
+ user << "You pop out the encryption key in the radio."
else
- user << "This radio doesn't have any encryption keys!"
+ user << "This radio doesn't have any encryption keys!"
if(istype(W, /obj/item/device/encryptionkey/))
if(keyslot)
- user << "The radio can't hold another key!"
+ user << "The radio can't hold another key!"
return
if(!keyslot)
diff --git a/code/game/objects/items/devices/recaller.dm b/code/game/objects/items/devices/recaller.dm
index 226ae801ee0..ed4750d62fa 100644
--- a/code/game/objects/items/devices/recaller.dm
+++ b/code/game/objects/items/devices/recaller.dm
@@ -1,5 +1,4 @@
//gangtool device
-//Allows gang leaders to recall the shuttle
/obj/item/device/gangtool
name = "suspicious device"
desc = "A strange device of sorts. Hard to really make out what it actually does just by looking."
@@ -13,6 +12,7 @@
var/gang //Which gang uses this?
var/boss = 1 //If it has the power to promote gang members
var/recalling = 0
+ var/promotion_cost = 20
/obj/item/device/gangtool/New() //Initialize supply point income if it hasn't already been started
if(!ticker.mode.gang_points)
@@ -28,22 +28,29 @@
var/dat
if(!gang)
dat += "This device is not registered.
"
- dat += "Register Device
"
+ if(user.mind in (ticker.mode.A_bosses | ticker.mode.B_bosses))
+ dat += "Give this device to another member of your organization to use.
"
+ else
+ dat += "Register Device
"
else
var/gang_size = ((gang == "A")? (ticker.mode.A_gang.len + ticker.mode.A_bosses.len) : (ticker.mode.B_gang.len + ticker.mode.B_bosses.len))
var/gang_territory = ((gang == "A")? ticker.mode.A_territory.len : ticker.mode.B_territory.len)
var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B)
- dat += "Registered as [boss ? "Administrator." : "User."]
"
- dat += "Organization: [(gang == "A")?("[gang_name("A")] Gang"):("[gang_name("B")] Gang")]
"
+ dat += "Registration: [(gang == "A")? gang_name("A") : gang_name("B")] Gang [boss ? "Administrator" : "Member"]
"
dat += "Organization Size: [gang_size]
"
- dat += "Areas Controlled: [gang_territory] ([round((gang_territory/start_state.num_territories)*100, 0.1)]% of station)
"
+ dat += "Station Control: [round((gang_territory/start_state.num_territories)*100, 1)]%
"
dat += "Recall Emergency Shuttle
"
dat += "
"
dat += "Influence: [points]
"
dat += "Time until Influence grows: [(points >= 100) ? ("--:--") : (time2text(ticker.mode.gang_points.next_point_time - world.time, "mm:ss"))]
"
dat += "Purchase Items:
"
+ if(points >= 10)
+ dat += "(10 Influence) Territory Spraycan
"
+ else
+ dat += "(10 Influence) Territory Spraycan
"
+
if(points >= 25)
dat += "(25 Influence) 10mm Pistol
"
else
@@ -55,9 +62,9 @@
dat += "(10 Influence) 10mm Ammo
"
if(points >= 10)
- dat += "(10 Influence) Territory Spraycan
"
+ dat += "(10 Influence) Switchblade
"
else
- dat += "(10 Influence) Territory Spraycan
"
+ dat += "(10 Influence) Switchblade
"
if(points >= 50)
dat += "(50 Influence) Recruitment Pen
"
@@ -65,10 +72,12 @@
dat += "(50 Influence) Recruitment Pen
"
if(boss)
- if(points >= 40)
- dat += "(40 Influence) Unregistered Gangtool
"
+ if(promotion_cost > 100)
+ dat += "(Maximum Reached) Promote a Gangster
"
+ else if(points >= promotion_cost)
+ dat += "([promotion_cost] Influence) Promote a Gangster
"
else
- dat += "(40 Influence) Unregistered Gangtool
"
+ dat += "([promotion_cost] Influence) Promote a Gangster
"
dat += "
"
dat += "Refresh
"
@@ -87,6 +96,10 @@
var/points = ((gang == "A") ? ticker.mode.gang_points.A : ticker.mode.gang_points.B)
var/item_type
switch(href_list["purchase"])
+ if("spraycan")
+ if(points >= 10)
+ item_type = /obj/item/toy/crayon/spraycan/gang
+ points = 10
if("pistol")
if(points >= 25)
item_type = /obj/item/weapon/gun/projectile/automatic/pistol
@@ -95,18 +108,19 @@
if(points >= 10)
item_type = /obj/item/ammo_box/magazine/m10mm
points = 10
- if("spraycan")
+ if("switchblade")
if(points >= 10)
- item_type = /obj/item/toy/crayon/spraycan/gang
+ item_type = /obj/item/weapon/switchblade
points = 10
if("pen")
if(points >= 50)
item_type = /obj/item/weapon/pen/gang
points = 50
if("gangtool")
- if(points >= 40)
+ if(points >= promotion_cost)
item_type = /obj/item/device/gangtool/lt
- points = 40
+ points = promotion_cost
+ promotion_cost += 30
if(item_type)
if(gang == "A")
@@ -117,6 +131,7 @@
var/mob/living/carbon/human/H = usr
H.put_in_any_hand_if_possible(purchased)
ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "A [href_list["purchase"]] was purchased by [usr] for [points] Influence.")
+ log_game("A [href_list["purchase"]] was purchased by [key_name(usr)] for [points] Influence.")
else if(href_list["choice"])
switch(href_list["choice"])
@@ -129,7 +144,7 @@
/obj/item/device/gangtool/proc/register_device(var/mob/user)
var/promoted
- if((user.mind in ticker.mode.A_gang) || (user.mind in ticker.mode.A_bosses))
+ if(user.mind in (ticker.mode.A_gang | ticker.mode.A_bosses))
ticker.mode.A_tools += src
gang = "A"
if(!(user.mind in ticker.mode.A_bosses))
@@ -139,7 +154,7 @@
ticker.mode.update_gang_icons_added(user.mind, "A")
log_game("[key_name(user)] has been promoted to Lieutenant in the [gang_name("A")] Gang (A)")
promoted = 1
- else if((user.mind in ticker.mode.B_gang) || (user.mind in ticker.mode.B_bosses))
+ else if(user.mind in (ticker.mode.B_gang | ticker.mode.B_bosses))
ticker.mode.B_tools += src
gang = "B"
if(!(user.mind in ticker.mode.B_bosses))
@@ -152,8 +167,8 @@
if(promoted)
ticker.mode.message_gangtools(((gang=="A")? ticker.mode.A_tools : ticker.mode.B_tools), "[user] has been promoted to Lieutenant.")
user << "You have been promoted to Lieutenant!"
- user << "The Gangtool you registered will allow you to use your gang's influence to purchase items and prevent the station from evacuating before your gang can take over. Use it to recall the emergency shuttle from anywhere on the station."
- user << "You may also now use recruitment pens to grow your gang membership. Use them on unsuspecting crew members to recruit them."
+ user << "The Gangtool you registered will allow you to use your gang's influence to purchase items and prevent the station from evacuating before your gang can take over. Use it to recall the emergency shuttle from anywhere on the station."
+ user << "You may also now use recruitment pens to grow your gang membership. Use them on unsuspecting crew members to recruit them."
if(!gang)
usr << "ACCESS DENIED: Unauthorized user."
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 693271398e2..2a8ef3cae0b 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -282,9 +282,9 @@
/obj/item/device/tape/attackby(obj/item/I, mob/user, params)
if(ruined && istype(I, /obj/item/weapon/screwdriver))
- user << "You start winding the tape back in."
+ user << "You start winding the tape back in..."
if(do_after(user, 120))
- user << "You wound the tape back in!"
+ user << "You wound the tape back in."
fix()
diff --git a/code/game/objects/items/devices/transfer_valve.dm b/code/game/objects/items/devices/transfer_valve.dm
index 85c5c9ceb4a..8437cf7c12e 100644
--- a/code/game/objects/items/devices/transfer_valve.dm
+++ b/code/game/objects/items/devices/transfer_valve.dm
@@ -16,7 +16,7 @@
/obj/item/device/transfer_valve/attackby(obj/item/item, mob/user, params)
if(istype(item, /obj/item/weapon/tank))
if(tank_one && tank_two)
- user << "There are already two tanks attached, remove one first."
+ user << "There are already two tanks attached, remove one first!"
return
if(!tank_one)
@@ -42,7 +42,7 @@
user << "The device is secured."
return
if(attached_device)
- user << "There is already a device attached to the valve, remove it first."
+ user << "There is already a device attached to the valve, remove it first!"
return
user.remove_from_mob(item)
attached_device = A
diff --git a/code/game/objects/items/devices/uplinks.dm b/code/game/objects/items/devices/uplinks.dm
index d72e28e591e..3807998cbc9 100644
--- a/code/game/objects/items/devices/uplinks.dm
+++ b/code/game/objects/items/devices/uplinks.dm
@@ -180,7 +180,7 @@ var/list/world_uplinks = list()
qdel(S)
user << "Teleporter refunded."
else
- user << "This teleporter is already used."
+ user << "This teleporter is already used!"
// PRESET UPLINKS
// A collection of preset uplinks.
diff --git a/code/game/objects/items/devices/violin.dm b/code/game/objects/items/devices/violin.dm
deleted file mode 100644
index e8481778326..00000000000
--- a/code/game/objects/items/devices/violin.dm
+++ /dev/null
@@ -1,40 +0,0 @@
-//copy pasta of the space piano, don't hurt me -Pete
-
-/obj/item/device/violin
- name = "space violin"
- desc = "A wooden musical instrument with four strings and a bow. \"The devil went down to space, he was looking for an assistant to grief.\""
- icon = 'icons/obj/musician.dmi'
- icon_state = "violin"
- item_state = "violin"
- force = 10
- var/datum/song/handheld/song
- hitsound = "swing_hit"
-
-/obj/item/device/violin/New()
- song = new("violin", src)
- song.instrumentExt = "ogg"
-
-/obj/item/device/violin/Destroy()
- qdel(song)
- song = null
- ..()
-
-/obj/item/device/violin/initialize()
- song.tempo = song.sanitize_tempo(song.tempo) // tick_lag isn't set when the map is loaded
- ..()
-
-/obj/item/device/violin/attack_self(mob/user as mob)
- if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
- return 1
- interact(user)
-
-/obj/item/device/violin/interact(mob/user as mob)
- if(!user)
- return
-
- if(!isliving(user) || user.stat || user.restrained() || user.lying)
- return
-
- user.set_machine(src)
- song.interact(user)
diff --git a/code/game/objects/items/holotape.dm b/code/game/objects/items/holotape.dm
index c517faaa381..bd10a107cad 100644
--- a/code/game/objects/items/holotape.dm
+++ b/code/game/objects/items/holotape.dm
@@ -113,8 +113,7 @@
P.icon_state = "[P.icon_base]_[dir]"
cur = get_step_towards(cur,end)
- usr << "You finish project the legnth of [icon_base] holotape."
- user.visible_message("[user] finishes projecting the length of [icon_base] holotape.")
+ user.visible_message("[user] finishes projecting the length of [icon_base] holotape.", "You finish projecting the length of [icon_base] holotape.")
charging = 1
spawn(40)
@@ -138,7 +137,7 @@
if(!(W.dir == 5) || !(W.fulltile == 1))
return
- user << "You start projecting the [icon_base] holotape onto [target]."
+ user << "You start projecting the [icon_base] holotape onto [target]..."
if(!do_mob(user, target, 30))
return
@@ -177,8 +176,8 @@
user.changeNext_move(CLICK_CD_MELEE)
user.do_attack_animation(src)
playsound(loc, 'sound/weapons/Egloves.ogg', 80, 1)
- user.visible_message("[user] hits [src].", \
- "You hit [src]." )
+ user.visible_message("[user] hits [src].", \
+ "You hit [src]." )
health -= rand(1,2)
healthcheck()
diff --git a/code/game/objects/items/robot/robot_items.dm b/code/game/objects/items/robot/robot_items.dm
index 4a56ab7b1f8..7e38de5879d 100644
--- a/code/game/objects/items/robot/robot_items.dm
+++ b/code/game/objects/items/robot/robot_items.dm
@@ -21,7 +21,7 @@
for(var/mob/O in viewers(M, null))
if (O.client)
O.show_message("[user] has prodded [M] with an electrically-charged arm!", 1,
- " You hear someone fall", 2)
+ "You hear someone fall.", 2)
add_logs(user, M, "stunned", object="[src.name]", addition="(INTENT: [uppertext(user.a_intent)])")
/obj/item/borg/overdrive
diff --git a/code/game/objects/items/robot/robot_parts.dm b/code/game/objects/items/robot/robot_parts.dm
index 9641f540d89..2ea78ce58f9 100644
--- a/code/game/objects/items/robot/robot_parts.dm
+++ b/code/game/objects/items/robot/robot_parts.dm
@@ -92,13 +92,13 @@
if (M.use(1))
var/obj/item/weapon/ed209_assembly/B = new /obj/item/weapon/ed209_assembly
B.loc = get_turf(src)
- user << "You armed the robot frame."
+ user << "You arm the robot frame."
if (user.get_inactive_hand()==src)
user.unEquip(src)
user.put_in_inactive_hand(B)
qdel(src)
else
- user << "You need one sheet of metal to start building ED-209."
+ user << "You need one sheet of metal to start building ED-209!"
return
if(istype(W, /obj/item/robot_parts/l_leg))
if(src.l_leg) return
@@ -136,9 +136,9 @@
src.chest = W
src.updateicon()
else if(!W:wires)
- user << "You need to attach wires to it first!"
+ user << "You need to attach wires to it first!"
else
- user << "You need to attach a cell to it first!"
+ user << "You need to attach a cell to it first!"
if(istype(W, /obj/item/robot_parts/head))
if(src.head) return
@@ -148,22 +148,22 @@
src.head = W
src.updateicon()
else
- user << "You need to attach a flash to it first!"
+ user << "You need to attach a flash to it first!"
if (istype(W, /obj/item/device/multitool))
if(check_completion())
Interact(user)
else
- user << "The endoskeleton must be assembled before debugging can begin."
+ user << "The endoskeleton must be assembled before debugging can begin!"
if(istype(W, /obj/item/device/mmi))
var/obj/item/device/mmi/M = W
if(check_completion())
if(!istype(loc,/turf))
- user << "You can't put the MMI in, the frame has to be standing on the ground to be perfectly precise."
+ user << "You can't put the MMI in, the frame has to be standing on the ground to be perfectly precise!"
return
if(!M.brainmob)
- user << "Sticking an empty MMI into the frame would sort of defeat the purpose."
+ user << "Sticking an empty MMI into the frame would sort of defeat the purpose!"
return
if(!M.brainmob.key)
var/ghost_can_reenter = 0
@@ -173,19 +173,19 @@
ghost_can_reenter = 1
break
if(!ghost_can_reenter)
- user << "The mmi indicates that their mind is completely unresponsive; there's no point."
+ user << "The MMI indicates that their mind is completely unresponsive; there's no point!"
return
if(M.brainmob.stat == DEAD)
- user << "Sticking a dead brain into the frame would sort of defeat the purpose."
+ user << "Sticking a dead brain into the frame would sort of defeat the purpose!"
return
if((M.brainmob.mind in ticker.mode.head_revolutionaries) || (M.brainmob.mind in ticker.mode.A_bosses) || (M.brainmob.mind in ticker.mode.B_bosses))
- user << "The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the MMI."
+ user << "The frame's firmware lets out a shrill sound, and flashes 'Abnormal Memory Engram'. It refuses to accept the MMI!"
return
if(jobban_isbanned(M.brainmob, "Cyborg"))
- user << "This MMI does not seem to fit."
+ user << "This MMI does not seem to fit!"
return
var/mob/living/silicon/robot/O = new /mob/living/silicon/robot(get_turf(loc))
@@ -235,10 +235,10 @@
O << "Error: Servo motors unresponsive."
else
- user << "The MMI must go in after everything else!"
+ user << "The MMI must go in after everything else!"
if(istype(W,/obj/item/weapon/pen))
- user << "You need to use a multitool to name [src]."
+ user << "You need to use a multitool to name [src]!"
return
/obj/item/robot_parts/robot_suit/proc/Interact(mob/user)
@@ -260,7 +260,7 @@
var/mob/living/living_user = usr
var/obj/item/item_in_hand = living_user.get_active_hand()
if(!istype(item_in_hand, /obj/item/device/multitool))
- living_user << "You need a multitool!"
+ living_user << "You need a multitool!"
return
if(href_list["Name"])
@@ -294,23 +294,23 @@
..()
if(istype(W, /obj/item/weapon/stock_parts/cell))
if(src.cell)
- user << "You have already inserted a cell!"
+ user << "You have already inserted a cell!"
return
else
user.drop_item()
W.loc = src
src.cell = W
- user << "You insert the cell!"
+ user << "You insert the cell."
if(istype(W, /obj/item/stack/cable_coil))
if(src.wires)
- user << "You have already inserted wire."
+ user << "You have already inserted wire!"
return
var/obj/item/stack/cable_coil/coil = W
if (coil.use(1))
src.wires = 1.0
user << "You insert the wire."
else
- user << "You need one length of coil to wire it."
+ user << "You need one length of coil to wire it!"
return
/obj/item/robot_parts/head/attackby(obj/item/W as obj, mob/user as mob, params)
@@ -318,10 +318,10 @@
if(istype(W, /obj/item/device/flash/handheld))
var/obj/item/device/flash/handheld/F = W
if(src.flash1 && src.flash2)
- user << "You have already inserted the eyes!"
+ user << "You have already inserted the eyes!"
return
else if(F.broken)
- user << "You can't use a broken flash!"
+ user << "You can't use a broken flash!"
return
else
user.drop_item()
@@ -330,6 +330,6 @@
src.flash2 = F
else
src.flash1 = F
- user << "You insert the flash into the eye socket!"
+ user << "You insert the flash into the eye socket."
return
diff --git a/code/game/objects/items/robot/robot_upgrades.dm b/code/game/objects/items/robot/robot_upgrades.dm
index 01dc031a466..55c1be2ac5a 100644
--- a/code/game/objects/items/robot/robot_upgrades.dm
+++ b/code/game/objects/items/robot/robot_upgrades.dm
@@ -66,7 +66,7 @@
/obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R)
if(R.health < 0)
- usr << "You have to repair the cyborg before using this module!"
+ usr << "You have to repair the cyborg before using this module!"
return 0
if(!R.key)
diff --git a/code/game/objects/items/shooting_range.dm b/code/game/objects/items/shooting_range.dm
index ad9da7a8362..bffb0d948e7 100644
--- a/code/game/objects/items/shooting_range.dm
+++ b/code/game/objects/items/shooting_range.dm
@@ -37,7 +37,7 @@
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
overlays.Cut()
- usr << "You slice off [src]'s uneven chunks of aluminium and scorch marks."
+ usr << "You slice off [src]'s uneven chunks of aluminium and scorch marks."
return
@@ -59,10 +59,10 @@
if(ishuman(user))
if(!user.get_active_hand())
user.put_in_hands(src)
- user << "You take the target out of the stake."
+ user << "You take the target out of the stake."
else
src.loc = get_turf(user)
- user << "You take the target out of the stake."
+ user << "You take the target out of the stake."
stake.pinned_target = null
return
@@ -95,7 +95,7 @@
hp -= Proj.damage
if(hp <= 0)
- visible_message("[src] breaks into tiny pieces and collapses!")
+ visible_message("[src] breaks into tiny pieces and collapses!")
qdel(src)
// Create a temporary object to represent the damage
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index 0e90d30f526..47b6c6d4723 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -28,17 +28,17 @@
return 1
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 1
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(stop_bleeding)
if(H.bleedsuppress)
- user << "[H]'s bleeding is already bandaged."
+ user << "[H]'s bleeding is already bandaged!"
return
else if(!H.blood_max)
- user << "[H] isn't bleeding."
+ user << "[H] isn't bleeding!"
return
if(isliving(M))
diff --git a/code/game/objects/items/stacks/rods.dm b/code/game/objects/items/stacks/rods.dm
index eb2bd629f67..7a2a2a5146a 100644
--- a/code/game/objects/items/stacks/rods.dm
+++ b/code/game/objects/items/stacks/rods.dm
@@ -38,15 +38,15 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
var/obj/item/weapon/weldingtool/WT = W
if(get_amount() < 2)
- user << "You need at least two rods to do this."
+ user << "You need at least two rods to do this!"
return
if(WT.remove_fuel(0,user))
var/obj/item/stack/sheet/metal/new_item = new(usr.loc)
new_item.add_to_stacks(usr)
- user.visible_message("[user.name] shaped [src] into metal with the weldingtool.", \
- "You shaped [src] into metal with the weldingtool.", \
- "You hear welding.")
+ user.visible_message("[user.name] shaped [src] into metal with the welding tool.", \
+ "You shape [src] into metal with the welding tool.", \
+ "You hear welding.")
var/obj/item/stack/rods/R = src
src = null
var/replace = (user.get_inactive_hand()==R)
@@ -58,9 +58,9 @@ var/global/list/datum/stack_recipe/rod_recipes = list ( \
if(istype(W,/obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = W
if(amount != 1)
- user << "You must use a single rod."
+ user << "You must use a single rod!"
else if(S.w_class > 2)
- user << "The ingredient is too big for [src]."
+ user << "The ingredient is too big for [src]!"
else
var/obj/item/weapon/reagent_containers/food/snacks/customizable/A = new/obj/item/weapon/reagent_containers/food/snacks/customizable/kebab(get_turf(src))
A.initialize_custom_food(src, S, user)
diff --git a/code/game/objects/items/stacks/sheets/glass.dm b/code/game/objects/items/stacks/sheets/glass.dm
index 775be481826..dcea59701ea 100644
--- a/code/game/objects/items/stacks/sheets/glass.dm
+++ b/code/game/objects/items/stacks/sheets/glass.dm
@@ -30,7 +30,7 @@
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CC = W
if (get_amount() < 1 || CC.get_amount() < 5)
- user << "You need five lengths of coil and one sheet of glass to make wired glass!"
return
CC.use(5)
use(1)
@@ -51,7 +51,7 @@
if (!G && replace)
user.put_in_hands(RG)
else
- user << "You need one rod and one sheet of glass to make reinforced glass."
+ user << "You need one rod and one sheet of glass to make reinforced glass!"
return
else
return ..()
@@ -60,7 +60,7 @@
if(!user || !src) return 0
if(!istype(user.loc,/turf)) return 0
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 0
if(zero_amount()) return 0
var/title = "Sheet-Glass"
@@ -75,7 +75,7 @@
for (var/obj/structure/window/win in user.loc)
i++
if(i >= 4)
- user << "There are too many windows in this location."
+ user << "There are too many windows in this location."
return 1
directions-=win.dir
if(!(win.ini_dir in cardinal))
@@ -105,10 +105,10 @@
if(!src) return 1
if(src.loc != user) return 1
if(src.get_amount() < 2)
- user << "You need more glass to do that."
+ user << "You need more glass to do that!"
return 1
if(locate(/obj/structure/window) in user.loc)
- user << "There is a window in the way."
+ user << "There is a window in the way!"
return 1
var/obj/structure/window/W
W = new /obj/structure/window/fulltile( user.loc, 0 )
@@ -159,7 +159,7 @@
if(!user || !src) return 0
if(!istype(user.loc,/turf)) return 0
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 0
var/title = "Sheet Reinf. Glass"
title += " ([src.get_amount()] sheet\s left)"
@@ -203,10 +203,10 @@
if(!src) return 1
if(src.loc != user) return 1
if(src.get_amount() < 2)
- user << "You need more glass to do that."
+ user << "You need more glass to do that!"
return 1
if(locate(/obj/structure/window) in user.loc)
- user << "There is a window in the way."
+ user << "There is a window in the way!"
return 1
var/obj/structure/window/W
W = new /obj/structure/window/reinforced/fulltile(user.loc, 1)
@@ -221,16 +221,16 @@
for(var/obj/structure/windoor_assembly/WA in user.loc)
if(WA.dir == user.dir)
- user << "There is already a windoor assembly in that location."
+ user << "There is already a windoor assembly in that location!"
return 1
for(var/obj/machinery/door/window/W in user.loc)
if(W.dir == user.dir)
- user << "There is already a windoor in that location."
+ user << "There is already a windoor in that location!"
return 1
if(src.get_amount() < 5)
- user << "You need more glass to do that."
+ user << "You need more glass to do that!"
return 1
var/obj/structure/windoor_assembly/WD = new(user.loc)
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 4c4fa99a3e5..1795cb3a607 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -115,9 +115,9 @@ var/global/list/datum/stack_recipe/xeno_recipes = list ( \
istype(W, /obj/item/weapon/hatchet) )
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
- usr.visible_message("\the [usr] starts cutting hair off \the [src]", "You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh")
+ usr.visible_message("\the [usr] starts cutting hair off \the [src].", "You start cutting the hair off \the [src]...", "You hear the sound of a knife rubbing against flesh.")
if(do_after(user,50))
- usr << "You cut the hair from this [src.singular_name]"
+ usr << "You cut the hair from this [src.singular_name]."
//Try locating an exisitng stack on the tile and add to there if possible
for(var/obj/item/stack/sheet/hairlesshide/HS in usr.loc)
if(HS.amount < 50)
diff --git a/code/game/objects/items/stacks/sheets/light.dm b/code/game/objects/items/stacks/sheets/light.dm
index 200718edd3e..1992e75ab6c 100644
--- a/code/game/objects/items/stacks/sheets/light.dm
+++ b/code/game/objects/items/stacks/sheets/light.dm
@@ -32,5 +32,5 @@
user << "You make a light tile."
L.add_fingerprint(user)
else
- user << "You need one metal sheet to finish the light tile."
+ user << "You need one metal sheet to finish the light tile!"
return
diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm
index b941b9228d7..f758904770d 100644
--- a/code/game/objects/items/stacks/stack.dm
+++ b/code/game/objects/items/stacks/stack.dm
@@ -122,7 +122,7 @@
if(!building_checks(R, multiplier))
return
if (R.time)
- usr << "Building [R.title] ..."
+ usr.visible_message("[usr] starts building [R.title].", "You start building [R.title]...")
if (!do_after(usr, R.time))
return
if(!building_checks(R, multiplier))
@@ -160,15 +160,15 @@
/obj/item/stack/proc/building_checks(datum/stack_recipe/R, multiplier)
if (src.get_amount() < R.req_amount*multiplier)
if (R.req_amount*multiplier>1)
- usr << "You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!"
+ usr << "You haven't got enough [src] to build \the [R.req_amount*multiplier] [R.title]\s!"
else
- usr << "You haven't got enough [src] to build \the [R.title]!"
+ usr << "You haven't got enough [src] to build \the [R.title]!"
return 0
if (R.one_per_turf && (locate(R.result_type) in usr.loc))
- usr << "There is another [R.title] here!"
+ usr << "There is another [R.title] here!"
return 0
if (R.on_floor && !istype(usr.loc, /turf/simulated/floor))
- usr << "\The [R.title] must be constructed on the floor!"
+ usr << "\The [R.title] must be constructed on the floor!"
return 0
return 1
@@ -210,7 +210,7 @@
if (item.amount>=item.max_amount)
continue
oldsrc.attackby(item, usr)
- usr << "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s."
+ usr << "You add new [item.singular_name] to the stack. It now contains [item.amount] [item.singular_name]\s."
if(oldsrc.amount <= 0)
break
oldsrc.update_icon()
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index fd477f005ce..6d81c36bb2c 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -22,18 +22,18 @@
var/obj/item/weapon/weldingtool/WT = W
if(get_amount() < 4)
- user << "You need at least four tiles to do this."
+ user << "You need at least four tiles to do this!"
return
if(is_hot(WT) && !mineralType)
- user << "You can not reform this."
+ user << "You can not reform this!"
return
if(WT.remove_fuel(0,user))
if(mineralType == "plasma")
atmos_spawn_air(SPAWN_HEAT | SPAWN_TOXINS, 5)
- user.visible_message("[user.name] set the plasma tiles on fire!", \
+ user.visible_message("[user.name] sets the plasma tiles on fire!", \
"You set the plasma tiles on fire!")
qdel(src)
return
@@ -41,9 +41,9 @@
if (mineralType == "metal")
var/obj/item/stack/sheet/metal/new_item = new(user.loc)
new_item.add_to_stacks(user)
- user.visible_message("[user.name] shaped [src] into metal with the weldingtool.", \
+ user.visible_message("[user.name] shaped [src] into metal with the weldingtool.", \
"You shaped [src] into metal with the weldingtool.", \
- "You hear welding.")
+ "You hear welding.")
var/obj/item/stack/rods/R = src
src = null
var/replace = (user.get_inactive_hand()==R)
@@ -55,9 +55,9 @@
var/sheet_type = text2path("/obj/item/stack/sheet/mineral/[mineralType]")
var/obj/item/stack/sheet/mineral/new_item = new sheet_type(user.loc)
new_item.add_to_stacks(user)
- user.visible_message("[user.name] shaped [src] into a sheet with the weldingtool.", \
+ user.visible_message("[user.name] shaped [src] into a sheet with the weldingtool.", \
"You shaped [src] into a sheet with the weldingtool.", \
- "You hear welding.")
+ "You hear welding.")
var/obj/item/stack/rods/R = src
src = null
var/replace = (user.get_inactive_hand()==R)
diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm
index 68a4b1935dd..07fe7a7defc 100644
--- a/code/game/objects/items/toys.dm
+++ b/code/game/objects/items/toys.dm
@@ -54,10 +54,10 @@
if(istype(O, /obj/item/weapon/reagent_containers/glass))
if(O.reagents)
if(O.reagents.total_volume < 1)
- user << "The [O] is empty."
+ user << "The [O] is empty."
else if(O.reagents.total_volume >= 1)
if(O.reagents.has_reagent("facid", 1))
- user << "The acid chews through the balloon!"
+ user << "The acid chews through the balloon!"
O.reagents.reaction(user)
qdel(src)
else
@@ -69,7 +69,7 @@
/obj/item/toy/balloon/throw_impact(atom/hit_atom)
if(src.reagents.total_volume >= 1)
- src.visible_message("\The [src] bursts!","You hear a pop and a splash.")
+ src.visible_message("\The [src] bursts!","You hear a pop and a splash.")
src.reagents.reaction(get_turf(hit_atom))
for(var/atom/A in get_turf(hit_atom))
src.reagents.reaction(A)
@@ -135,17 +135,17 @@
if (istype(A, /obj/item/toy/ammo/gun))
if (src.bullets >= 7)
- user << "It's already fully loaded!"
+ user << "It's already fully loaded!"
return 1
if (A.amount_left <= 0)
- user << "There are no more caps!"
+ user << "There are no more caps!"
return 1
if (A.amount_left < (7 - src.bullets))
src.bullets += A.amount_left
- user << text("You reload [] cap\s!", A.amount_left)
+ user << text("You reload [] cap\s.", A.amount_left)
A.amount_left = 0
else
- user << text("You reload [] cap\s!", 7 - src.bullets)
+ user << text("You reload [] cap\s.", 7 - src.bullets)
A.amount_left -= 7 - src.bullets
src.bullets = 7
A.update_icon()
@@ -156,7 +156,7 @@
if (flag)
return
if (!(istype(usr, /mob/living/carbon/human) || ticker) && ticker.mode.name != "monkey")
- usr << "You don't have the dexterity to do this!"
+ usr << "You don't have the dexterity to do this!"
return
src.add_fingerprint(user)
if (src.bullets < 1)
@@ -167,7 +167,7 @@
src.bullets--
user.visible_message("[user] fires [src] at [target]!", \
"You fire [src] at [target]!", \
- " You hear a gunshot.")
+ " You hear a gunshot!")
/obj/item/toy/ammo/gun
name = "capgun ammo"
@@ -227,11 +227,11 @@
..()
if(istype(W, /obj/item/toy/sword))
if(W == src)
- user << "You try to attach the end of the plastic sword to... itself. You're not very smart, are you?"
+ user << "You try to attach the end of the plastic sword to... itself. You're not very smart, are you?"
if(ishuman(user))
user.adjustBrainLoss(10)
else if((W.flags & NODROP) || (flags & NODROP))
- user << "\the [flags & NODROP ? src : W] is stuck to your hand, you can't attach it to \the [flags & NODROP ? W : src]!"
+ user << "\the [flags & NODROP ? src : W] is stuck to your hand, you can't attach it to \the [flags & NODROP ? W : src]!"
else
user << "You attach the ends of the two plastic swords, making a single double-bladed toy! You're fake-cool."
var/obj/item/weapon/twohanded/dualsaber/toy/newSaber = new /obj/item/weapon/twohanded/dualsaber/toy(user.loc)
@@ -320,7 +320,7 @@
attack_verb = list("attacked", "coloured")
var/colour = "#FF0000" //RGB
var/drawtype = "rune"
- var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow")
+ var/list/graffiti = list("amyjon","face","matt","revolution","engie","guy","end","dwarf","uboa","body","cyka","arrow","poseur tag")
var/list/letters = list("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
var/list/oriented = list("arrow","body") // These turn to face the same way as the drawer
var/uses = 30 //0 for unlimited uses
@@ -399,6 +399,11 @@
/obj/item/toy/crayon/afterattack(atom/target, mob/user as mob, proximity)
if(!proximity) return
+ if(!uses)
+ user << "There is no more of [src.name] left!"
+ if(!instant)
+ qdel(src)
+ return
if(istype(target, /obj/effect/decal/cleanable))
target = target.loc
if(is_type_in_list(target,validSurfaces))
@@ -412,23 +417,34 @@
var/area/territory
var/gangID
if(gang)
- //Check area validity. Reject space, player-created areas, and non-station z-levels.
- territory = get_area(target)
- if (territory && (territory.z == ZLEVEL_STATION) && territory.valid_territory)
- //Determine gang affiliation
- if((user.mind in ticker.mode.A_bosses) || (user.mind in ticker.mode.A_gang))
- temp = "[gang_name("A")] gang tag"
- gangID = "A"
- else if((user.mind in ticker.mode.B_bosses) || (user.mind in ticker.mode.B_gang))
- temp = "[gang_name("B")] gang tag"
- gangID = "B"
+ //Determine gang affiliation
+ if(user.mind in (ticker.mode.A_bosses | ticker.mode.A_gang))
+ temp = "[gang_name("A")] gang tag"
+ gangID = "A"
+ else if(user.mind in (ticker.mode.B_bosses | ticker.mode.B_gang))
+ temp = "[gang_name("B")] gang tag"
+ gangID = "B"
- //Check if this area is already tagged by a gang
- if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag
- if(territory_claimed(territory, user))
+ //Check area validity. Reject space, player-created areas, and non-station z-levels.
+ if (gangID)
+ var/area/user_area = get_area(user.loc)
+ territory = get_area(target)
+ if(territory && (territory.z == ZLEVEL_STATION) && territory.valid_territory)
+ //Check if this area is already tagged by a gang
+ if(!(locate(/obj/effect/decal/cleanable/crayon/gang) in target)) //Ignore the check if the tile being sprayed has a gang tag
+ if(territory_claimed(territory, user))
+ return
+ //Prevent people spraying from outside of the territory (ie. Maint walls)
+ if(istype(user_area) && (user_area.type == territory.type))
+ if(locate(/obj/machinery/power/apc) in (user.loc.contents | target.contents))
+ user << "You cannot tag here."
+ return
+ else
+ user << "You cannot tag [territory] from the outside."
return
- else
- user << "This area is unsuitable for territory tagging."
+ else
+ user << "[territory] is unsuitable for tagging."
+ return
/////////////////////////////////////////
var/graf_rot
@@ -443,7 +459,7 @@
else
graf_rot = 0
- user << "You start [instant ? "spraying" : "drawing"] a [temp] on the [target.name]."
+ user << "You start [instant ? "spraying" : "drawing"] a [temp] on the [target.name]..."
if(instant)
playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5)
if((instant>0) || do_after(user, 50))
@@ -457,17 +473,18 @@
for(var/obj/effect/decal/cleanable/crayon/old_marking in target)
qdel(old_marking)
new /obj/effect/decal/cleanable/crayon/gang(target,gangID,temp,graf_rot)
+ user << "You tagged [territory] for your gang!"
else
new /obj/effect/decal/cleanable/crayon(target,colour,drawtype,temp,graf_rot)
- user << "You finish [instant ? "spraying" : "drawing"] [temp]."
+ user << "You finish [instant ? "spraying" : "drawing"] [temp]."
if(instant<0)
playsound(user.loc, 'sound/effects/spray.ogg', 5, 1, 5)
- if(uses)
- uses--
- if(!uses)
- user << "You used up your [src.name]!"
+ uses = max(0,uses-1)
+ if(!uses)
+ user << "There is no more of [src.name] left!"
+ if(!instant)
qdel(src)
return
@@ -475,19 +492,18 @@
if(edible && (M == user))
user << "You take a bite of the [src.name]. Delicious!"
user.nutrition += 5
- if(uses)
- uses -= 5
- if(uses <= 0)
- user << "There is no more of [src.name] left!"
- qdel(src)
+ uses = max(0,uses-5)
+ if(!uses)
+ user << "There is no more of [src.name] left!"
+ qdel(src)
else
..()
/obj/item/toy/crayon/proc/territory_claimed(var/area/territory,mob/user)
var/occupying_gang
- if(territory.type in ticker.mode.A_territory)
+ if(territory.type in (ticker.mode.A_territory | ticker.mode.A_territory_new))
occupying_gang = gang_name("A")
- if(territory.type in ticker.mode.B_territory)
+ if(territory.type in (ticker.mode.B_territory | ticker.mode.B_territory_new))
occupying_gang = gang_name("B")
if(occupying_gang)
user << "[territory] has already been tagged by the [occupying_gang] gang! You must get rid of or spray over the old tag first!"
@@ -511,7 +527,7 @@
s.set_up(3, 1, src)
s.start()
new /obj/effect/decal/cleanable/ash(src.loc)
- src.visible_message(" The [src.name] explodes!"," You hear a snap!")
+ src.visible_message(" The [src.name] explodes!","You hear a snap!")
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
@@ -525,7 +541,7 @@
s.set_up(2, 0, src)
s.start()
new /obj/effect/decal/cleanable/ash(src.loc)
- src.visible_message("The [src.name] explodes!","You hear a snap!")
+ src.visible_message("The [src.name] explodes!","You hear a snap!")
playsound(src, 'sound/effects/snap.ogg', 50, 1)
qdel(src)
@@ -744,7 +760,7 @@ obj/item/toy/cards/deck/attack_hand(mob/user as mob)
var/choice = null
if(cards.len == 0)
src.icon_state = "deck_[deckstyle]_empty"
- user << "There are no more cards to draw."
+ user << "There are no more cards to draw!"
return
var/obj/item/toy/cards/singlecard/H = new/obj/item/toy/cards/singlecard(user.loc)
choice = cards[1]
@@ -755,7 +771,7 @@ obj/item/toy/cards/deck/attack_hand(mob/user as mob)
src.cards -= choice
H.pickup(user)
user.put_in_active_hand(H)
- user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.")
+ user.visible_message("[user] draws a card from the deck.", "You draw a card from the deck.")
if(cards.len > 26)
src.icon_state = "deck_[deckstyle]_full"
else if(cards.len > 10)
@@ -767,7 +783,7 @@ obj/item/toy/cards/deck/attack_self(mob/user as mob)
if(cooldown < world.time - 50)
cards = shuffle(cards)
playsound(user, 'sound/items/cardshuffle.ogg', 50, 1)
- user.visible_message("[user] shuffles the deck.", "You shuffle the deck.")
+ user.visible_message("[user] shuffles the deck.", "You shuffle the deck.")
cooldown = world.time
obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/user, params)
@@ -775,13 +791,13 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/singlecard/C, mob/living/use
if(istype(C))
if(C.parentdeck == src)
if(!user.unEquip(C))
- user << "The card is stuck to your hand, you can't add it to the deck!"
+ user << "The card is stuck to your hand, you can't add it to the deck!"
return
src.cards += C.cardname
- user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.")
+ user.visible_message("[user] adds a card to the bottom of the deck.","You add the card to the bottom of the deck.")
qdel(C)
else
- user << "You can't mix cards from other decks."
+ user << "You can't mix cards from other decks!"
if(cards.len > 26)
src.icon_state = "deck_[deckstyle]_full"
else if(cards.len > 10)
@@ -795,13 +811,13 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user,
if(istype(C))
if(C.parentdeck == src)
if(!user.unEquip(C))
- user << "The hand of cards is stuck to your hand, you can't add it to the deck!"
+ user << "The hand of cards is stuck to your hand, you can't add it to the deck!"
return
src.cards += C.currenthand
- user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.")
+ user.visible_message("[user] puts their hand of cards in the deck.", "You put the hand of cards in the deck.")
qdel(C)
else
- user << "You can't mix cards from other decks."
+ user << "You can't mix cards from other decks!"
if(cards.len > 26)
src.icon_state = "deck_[deckstyle]_full"
else if(cards.len > 10)
@@ -826,7 +842,7 @@ obj/item/toy/cards/deck/attackby(obj/item/toy/cards/cardhand/C, mob/living/user,
M.put_in_r_hand(src)
usr << "You pick up the deck."
else
- usr << "You can't reach it from here."
+ usr << "You can't reach it from here!"
@@ -899,7 +915,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living
if(C.parentdeck == src.parentdeck)
src.currenthand += C.cardname
user.unEquip(C)
- user.visible_message("[user] adds a card to their hand.", "You add the [C.cardname] to your hand.")
+ user.visible_message("[user] adds a card to their hand.", "You add the [C.cardname] to your hand.")
interact(user)
if(currenthand.len > 4)
src.icon_state = "[deckstyle]_hand5"
@@ -909,7 +925,7 @@ obj/item/toy/cards/cardhand/attackby(obj/item/toy/cards/singlecard/C, mob/living
src.icon_state = "[deckstyle]_hand3"
qdel(C)
else
- user << "You can't mix cards from other decks."
+ user << "You can't mix cards from other decks!"
obj/item/toy/cards/cardhand/apply_card_vars(obj/item/toy/cards/newobj,obj/item/toy/cards/sourceobj)
..()
@@ -938,9 +954,9 @@ obj/item/toy/cards/singlecard/examine(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/cardUser = user
if(cardUser.get_item_by_slot(slot_l_hand) == src || cardUser.get_item_by_slot(slot_r_hand) == src)
- cardUser.visible_message("[cardUser] checks \his card.", "The card reads: [src.cardname]")
+ cardUser.visible_message("[cardUser] checks \his card.", "The card reads: [src.cardname]")
else
- cardUser << "You need to have the card in your hand to check it."
+ cardUser << "You need to have the card in your hand to check it!"
obj/item/toy/cards/singlecard/verb/Flip()
@@ -980,14 +996,14 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
qdel(C)
qdel(src)
else
- user << "You can't mix cards from other decks."
+ user << "You can't mix cards from other decks!"
if(istype(I, /obj/item/toy/cards/cardhand/))
var/obj/item/toy/cards/cardhand/H = I
if(H.parentdeck == parentdeck)
H.currenthand += cardname
user.unEquip(src)
- user.visible_message("[user] adds a card to \his hand.", "You add the [cardname] to your hand.")
+ user.visible_message("[user] adds a card to \his hand.", "You add the [cardname] to your hand.")
H.interact(user)
if(H.currenthand.len > 4)
H.icon_state = "[deckstyle]_hand5"
@@ -997,7 +1013,7 @@ obj/item/toy/cards/singlecard/attackby(obj/item/I, mob/living/user, params)
H.icon_state = "[deckstyle]_hand3"
qdel(src)
else
- user << "You can't mix cards from other decks."
+ user << "You can't mix cards from other decks!"
obj/item/toy/cards/singlecard/attack_self(mob/user)
@@ -1053,7 +1069,7 @@ obj/item/toy/cards/deck/syndicate
/obj/item/toy/nuke/attack_self(mob/user)
if (cooldown < world.time)
cooldown = world.time + 1800 //3 minutes
- user.visible_message("[user] presses a button on [src]", "You activate [src], it plays a loud noise!", "You hear the click of a button.")
+ user.visible_message("[user] presses a button on [src].", "You activate [src], it plays a loud noise!", "You hear the click of a button.")
spawn(5) //gia said so
icon_state = "nuketoy"
playsound(src, 'sound/machines/Alarm.ogg', 100, 0, surround = 0)
@@ -1071,7 +1087,7 @@ obj/item/toy/cards/deck/syndicate
/obj/item/toy/minimeteor
name = "\improper Mini-Meteor"
- desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor™"
+ desc = "Relive the excitement of a meteor shower! SweetMeat-eor. Co is not responsible for any injuries, headaches or hearing loss caused by Mini-Meteor?"
icon = 'icons/obj/toy.dmi'
icon_state = "minimeteor"
w_class = 2.0
@@ -1112,7 +1128,7 @@ obj/item/toy/cards/deck/syndicate
*/
/obj/item/toy/redbutton
name = "big red button"
- desc = "A big, plastic red button. Reads 'From HonkCo Pranks©' on the back."
+ desc = "A big, plastic red button. Reads 'From HonkCo Pranks?' on the back."
icon = 'icons/obj/assemblies.dmi'
icon_state = "bigred"
w_class = 2.0
@@ -1121,7 +1137,7 @@ obj/item/toy/cards/deck/syndicate
/obj/item/toy/redbutton/attack_self(mob/user)
if (cooldown < world.time)
cooldown = (world.time + 300) // Sets cooldown at 30 seconds
- user.visible_message("[user] presses the big red button.", "You press the button, it plays a loud noise!", "The button clicks loudly.")
+ user.visible_message("[user] presses the big red button.", "You press the button, it plays a loud noise!", "The button clicks loudly.")
playsound(src, 'sound/effects/explosionfar.ogg', 50, 0, surround = 0)
for(var/mob/M in range(10, src)) // Checks range
if(!M.stat && !istype(M, /mob/living/silicon/ai)) // Checks to make sure whoever's getting shaken is alive/not the AI
@@ -1129,4 +1145,4 @@ obj/item/toy/cards/deck/syndicate
shake_camera(M, 2, 1) // Shakes player camera 2 squares for 1 second.
else
- user << "Nothing happens."
\ No newline at end of file
+ user << "Nothing happens."
diff --git a/code/game/objects/items/weapons/AI_modules.dm b/code/game/objects/items/weapons/AI_modules.dm
index 57f667ac382..deef2e3e927 100644
--- a/code/game/objects/items/weapons/AI_modules.dm
+++ b/code/game/objects/items/weapons/AI_modules.dm
@@ -59,7 +59,7 @@ AI MODULES
//The proc that actually changes the silicon's laws.
/obj/item/weapon/aiModule/proc/transmitInstructions(var/mob/living/silicon/target, var/mob/sender)
- target << "[sender] has uploaded a change to the laws you must follow using a [name]. From now on, these are your laws: "
+ target << "[sender] has uploaded a change to the laws you must follow using a [name]. From now on, these are your laws: "
/******************** Modules ********************/
diff --git a/code/game/objects/items/weapons/RCD.dm b/code/game/objects/items/weapons/RCD.dm
index e76181e672a..b04cbfa5467 100644
--- a/code/game/objects/items/weapons/RCD.dm
+++ b/code/game/objects/items/weapons/RCD.dm
@@ -110,7 +110,7 @@ RCD
if(istype(W, /obj/item/weapon/rcd_ammo))
var/obj/item/weapon/rcd_ammo/R = W
if((matter + R.ammoamt) > max_matter)
- user << "The RCD cant hold any more matter-units."
+ user << "The RCD can't hold any more matter-units!"
return
user.drop_item()
qdel(W)
@@ -127,19 +127,19 @@ RCD
switch(mode)
if(1)
mode = 2
- user << "Changed mode to 'Airlock'"
+ user << "You change RCD's mode to 'Airlock'."
if(prob(20))
src.spark_system.start()
return
if(2)
mode = 3
- user << "Changed mode to 'Deconstruct'"
+ user << "You change RCD's mode to 'Deconstruct'."
if(prob(20))
src.spark_system.start()
return
if(3)
mode = 1
- user << "Changed mode to 'Floor & Walls'"
+ user << "You change RCD's mode to 'Floor & Walls'."
if(prob(20))
src.spark_system.start()
return
@@ -161,7 +161,7 @@ RCD
if(1)
if(istype(A, /turf/space))
if(useResource(1, user))
- user << "Building Floor..."
+ user << "You start building floor..."
activate()
A:ChangeTurf(/turf/simulated/floor/plating)
return 1
@@ -169,7 +169,7 @@ RCD
if(istype(A, /turf/simulated/floor))
if(checkResource(3, user))
- user << "Building Wall ..."
+ user << "You start building wall..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
if(!useResource(3, user)) return 0
@@ -188,7 +188,7 @@ RCD
break
if(door_check)
- user << "Building Airlock..."
+ user << "You start building airlock..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 50))
if(!useResource(10, user)) return 0
@@ -202,7 +202,7 @@ RCD
return 1
return 0
else
- user << "There is another door here!"
+ user << "There is another door here!"
return 0
return 0
@@ -211,7 +211,7 @@ RCD
if(istype(A, /turf/simulated/wall/r_wall) && !canRwall)
return 0
if(checkResource(5, user))
- user << "Deconstructing Wall..."
+ user << "You start deconstructing wall..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 40))
if(!useResource(5, user)) return 0
@@ -222,7 +222,7 @@ RCD
if(istype(A, /turf/simulated/floor))
if(checkResource(5, user))
- user << "Deconstructing Floor..."
+ user << "You start deconstructing floor..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 50))
if(!useResource(5, user)) return 0
@@ -233,7 +233,7 @@ RCD
if(istype(A, /obj/machinery/door/airlock))
if(checkResource(20, user))
- user << "Deconstructing Airlock..."
+ user << "You start deconstructing airlock..."
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 50))
if(!useResource(20, user)) return 0
diff --git a/code/game/objects/items/weapons/RPD.dm b/code/game/objects/items/weapons/RPD.dm
index 64185d5d5a0..360e473ab26 100644
--- a/code/game/objects/items/weapons/RPD.dm
+++ b/code/game/objects/items/weapons/RPD.dm
@@ -17,8 +17,12 @@ RPD
#define METER_MODE 1
#define DISPOSALS_MODE 2
+#define CATEGORY_ATMOS 0
+#define CATEGORY_DISPOSALS 1
+
/datum/pipe_info
var/id=-1
+ var/categoryId = CATEGORY_ATMOS
var/dir=SOUTH
var/dirtype=PIPE_BINARY
var/icon = 'icons/obj/pipe-item.dmi'
@@ -59,6 +63,7 @@ var/global/list/disposalpipeID2State=list(
)
/datum/pipe_info/disposal
+ categoryId = CATEGORY_DISPOSALS
icon = 'icons/obj/pipes/disposal.dmi'
icon_state = "meterX"
@@ -152,6 +157,7 @@ var/global/list/RPD_recipes=list(
"purple" = rgb(130,43,255)
)
var/paint_color="grey"
+ var/screen = CATEGORY_ATMOS //Starts on the atmos tab.
/obj/item/weapon/pipe_dispenser/New()
. = ..()
@@ -163,34 +169,57 @@ var/global/list/RPD_recipes=list(
show_menu(user)
/obj/item/weapon/pipe_dispenser/proc/render_dir_img(var/_dir,var/pic,var/title,var/flipped=0)
- var/selected=""
+ var/selected=" class=\"imglink\""
if(_dir == p_dir)
- selected=" class=\"selected\""
- return "
"
+ selected=" class=\"imglink selected\""
+ return "
"
/obj/item/weapon/pipe_dispenser/proc/show_menu(mob/user as mob)
if(!user || !src) return 0
var/dat = {"Type
Utilities:
-"}
+"}
+ if(p_class != EATING_MODE)
+ dat += "- Eat Pipes
"
+ else
+ dat += "- Eat Pipes
"
+ if(p_class != PAINT_MODE)
+ dat += "- Paint Pipes
"
+ else
+ dat += "- Paint Pipes
"
+ dat += "
"
+
+ dat += "Category:"
+ if(screen == CATEGORY_ATMOS)
+ dat += "Atmospherics Disposals
"
+ else if(screen == CATEGORY_DISPOSALS)
+ dat += "Atmospherics Disposals
"
+ dat += "
"
+
var/icon/preview=null
+ var/datbuild = ""
for(var/category in RPD_recipes)
- dat += "[category]:"
var/list/cat=RPD_recipes[category]
for(var/label in cat)
var/datum/pipe_info/I = cat[label]
var/found=0
if(I.id == p_type)
- if(p_class==ATMOS_MODE && I.type==/datum/pipe_info)
+ if((p_class == ATMOS_MODE || p_class == METER_MODE) && (I.type == /datum/pipe_info || I.type == /datum/pipe_info/meter))
found=1
- else if(p_class==DISPOSALS_MODE && I.type==/datum/pipe_info/disposal)
+ else if(p_class == DISPOSALS_MODE && I.type==/datum/pipe_info/disposal)
found=1
if(found)
preview=new /icon(I.icon,I.icon_state)
- dat += I.Render(src,label)
+ if(screen == I.categoryId)
+ if(I.id == p_type)
+ datbuild += "[label]"
+ else
+ datbuild += I.Render(src,label)
+
+ if(length(datbuild) > 0)
+ dat += "[category]:"
+ dat += datbuild
+ datbuild = ""
dat += "
"
var/color_css=""
@@ -217,7 +246,9 @@ var/global/list/RPD_recipes=list(
switch(p_conntype)
if(-1)
if(p_class==PAINT_MODE)
- dirsel = "Direction
[color_picker]"
+ dirsel = "Color
[color_picker]"
+ else
+ dirsel = ""
if(PIPE_BINARY) // Straight, N-S, W-E
if(preview)
@@ -359,47 +390,52 @@ var/global/list/RPD_recipes=list(
"}
- dat = {"
-
-
- [name]
-
-
-
-[dirsel][dat]
-
-
-"}
- user << browse(dat, "window=pipedispenser")
- onclose(user, "pipedispenser")
+ a.selected img,
+ a:hover {
+ background: #0066cc;
+ color: #ffffff;
+ }
+ [color_css]
+"}
+
+ dat = datsytle + dirsel + dat
+
+ var/datum/browser/popup = new(user, "pipedispenser", name, 300, 550)
+ popup.set_content(dat)
+ popup.open()
return
/obj/item/weapon/pipe_dispenser/Topic(href, href_list)
@@ -408,6 +444,10 @@ var/global/list/RPD_recipes=list(
return
usr.set_machine(src)
src.add_fingerprint(usr)
+ if(href_list["screen"])
+ screen = text2num(href_list["screen"])
+ show_menu(usr)
+
if(href_list["setdir"])
p_dir= text2num(href_list["setdir"])
p_flipped = text2num(href_list["flipped"])
@@ -423,14 +463,14 @@ var/global/list/RPD_recipes=list(
if(href_list["paintpipes"])
p_class = PAINT_MODE
- p_conntype=-1
- p_dir=1
+ p_conntype = -1
+ p_dir = 1
src.spark_system.start()
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
if(href_list["set_color"])
- paint_color=href_list["set_color"]
+ paint_color = href_list["set_color"]
src.spark_system.start()
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
@@ -446,8 +486,8 @@ var/global/list/RPD_recipes=list(
if(href_list["makemeter"])
p_class = METER_MODE
- p_conntype=-1
- p_dir=1
+ p_conntype = -1
+ p_dir = 1
src.spark_system.start()
playsound(get_turf(src), 'sound/effects/pop.ogg', 50, 0)
show_menu(usr)
@@ -467,17 +507,22 @@ var/global/list/RPD_recipes=list(
return 0
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 0
if(istype(A,/area/shuttle)||istype(A,/turf/space/transit))
return 0
-
+
+ //So that changing the menu settings doesn't affect the pipes already being built.
+ var/queued_p_type = p_type
+ var/queued_p_dir = p_dir
+ var/queued_p_flipped = p_flipped
+
switch(p_class)
if(PAINT_MODE) // Paint pipes
if(!istype(A,/obj/machinery/atmospherics/pipe))
// Avoid spewing errors about invalid mode -2 when clicking on stuff that aren't pipes.
- user << "\The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
+ user << "\The [src]'s error light flickers! Perhaps you need to only use it on pipes and pipe meters?"
return 0
var/obj/machinery/atmospherics/pipe/P = A
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
@@ -491,7 +536,7 @@ var/global/list/RPD_recipes=list(
if(EATING_MODE) // Eating pipes
// Must click on an actual pipe or meter.
if(istype(A,/obj/item/pipe) || istype(A,/obj/item/pipe_meter) || istype(A,/obj/structure/disposalconstruct))
- user << "Destroying Pipe..."
+ user << "You start destroying pipe..."
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 5))
activate()
@@ -500,18 +545,18 @@ var/global/list/RPD_recipes=list(
return 0
// Avoid spewing errors about invalid mode -1 when clicking on stuff that aren't pipes.
- user << "The [src]'s error light flickers. Perhaps you need to only use it on pipes and pipe meters?"
+ user << "The [src]'s error light flickers! Perhaps you need to only use it on pipes and pipe meters?"
return 0
if(ATMOS_MODE)
if(!(istype(A, /turf)))
- user << "The [src]'s error light flickers."
+ user << "The [src]'s error light flickers!"
return 0
- user << "Building Pipes ..."
+ user << "You start building pipes..."
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
activate()
- var/obj/item/pipe/P = new (A, pipe_type=p_type, dir=p_dir)
- P.flipped = p_flipped
+ var/obj/item/pipe/P = new (A, pipe_type=queued_p_type, dir=queued_p_dir)
+ P.flipped = queued_p_flipped
P.update()
P.add_fingerprint(usr)
return 1
@@ -519,9 +564,9 @@ var/global/list/RPD_recipes=list(
if(METER_MODE)
if(!(istype(A, /turf)))
- user << "The [src]'s error light flickers."
+ user << "The [src]'s error light flickers!"
return 0
- user << "Building Meter..."
+ user << "You start building meter..."
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
activate()
@@ -531,12 +576,12 @@ var/global/list/RPD_recipes=list(
if(DISPOSALS_MODE)
if(!(istype(A, /turf)))
- user << "The [src]'s error light flickers."
+ user << "The [src]'s error light flickers!"
return 0
- user << "Building Pipes..."
+ user << "You start building pipes..."
playsound(get_turf(src), 'sound/machines/click.ogg', 50, 1)
if(do_after(user, 20))
- var/obj/structure/disposalconstruct/C = new (A,p_type,p_dir)
+ var/obj/structure/disposalconstruct/C = new (A, queued_p_type ,queued_p_dir)
if(!C.can_place())
user << "There's not enough room to build that here!"
@@ -557,3 +602,16 @@ var/global/list/RPD_recipes=list(
/obj/item/weapon/pipe_dispenser/proc/activate()
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
+#undef PIPE_BINARY
+#undef PIPE_BENT
+#undef PIPE_TRINARY
+#undef PIPE_TRIN_M
+#undef PIPE_UNARY
+#undef PIPE_QUAD
+#undef PAINT_MODE
+#undef EATING_MODE
+#undef ATMOS_MODE
+#undef METER_MODE
+#undef DISPOSALS_MODE
+#undef CATEGORY_ATMOS
+#undef CATEGORY_DISPOSALS
diff --git a/code/game/objects/items/weapons/RSF.dm b/code/game/objects/items/weapons/RSF.dm
index 15f3079898e..8dcdac57823 100644
--- a/code/game/objects/items/weapons/RSF.dm
+++ b/code/game/objects/items/weapons/RSF.dm
@@ -23,7 +23,7 @@ RSF
..()
if (istype(W, /obj/item/weapon/rcd_ammo))
if ((matter + 10) > 30)
- user << "The RSF cant hold any more matter."
+ user << "The RSF can't hold any more matter."
return
qdel(W)
matter += 10
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index 60fc902e23e..00f3fbfd3b2 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -224,7 +224,7 @@ update_label("John Doe", "Clowny")
var/points = 0
/obj/item/weapon/card/id/prisoner/attack_self(mob/user as mob)
- usr << "You have accumulated [points] out of the [goal] points you need for freedom."
+ usr << "You have accumulated [points] out of the [goal] points you need for freedom."
/obj/item/weapon/card/id/prisoner/one
name = "Prisoner #13-001"
diff --git a/code/game/objects/items/weapons/cigs_lighters.dm b/code/game/objects/items/weapons/cigs_lighters.dm
index 075bab36a2a..230226e315b 100644
--- a/code/game/objects/items/weapons/cigs_lighters.dm
+++ b/code/game/objects/items/weapons/cigs_lighters.dm
@@ -373,7 +373,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O
if(!packeditem)
if(G.dry == 1)
- user << "You stuff [O] into [src]."
+ user << "You stuff [O] into [src]."
smoketime = 400
packeditem = 1
name = "[O.name]-packed [initial(name)]"
@@ -381,18 +381,18 @@ CIGARETTE PACKETS ARE IN FANCY.DM
O.reagents.trans_to(src, O.reagents.total_volume)
qdel(O)
else
- user << "It has to be dried first."
+ user << "It has to be dried first!"
else
- user << "It is already packed."
+ user << "It is already packed!"
else
- user << "You can't put that in the pipe."
+ user << "You can't put that in the pipe!"
..()
/obj/item/clothing/mask/cigarette/pipe/attack_self(mob/user as mob)
var/turf/location = get_turf(user)
if(lit)
- user.visible_message("[user] puts out [src].")
+ user.visible_message("[user] puts out [src].", "You put out [src].")
lit = 0
icon_state = icon_off
item_state = icon_off
@@ -479,16 +479,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
force = 5
damtype = "fire"
hitsound = 'sound/items/welder.ogg'
- attack_verb = list("burnt", "singed")
+ attack_verb = list("burnt", "signed")
if(istype(src, /obj/item/weapon/lighter/zippo) )
- user.visible_message("Without even breaking stride, [user] flips open and lights [src] in one smooth movement.")
+ 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 lights [src] in one smooth movement.")
else
if(prob(75))
- user.visible_message("After a few attempts, [user] manages to light [src].")
+ user.visible_message("After a few attempts, [user] manages to light [src].", "After a few attempts, you manage to light [src].")
else
- user << "You burn yourself while lighting the lighter."
user.adjustFireLoss(5)
- user.visible_message("After a few attempts, [user] manages to light [src], they however burn their finger in the process.")
+ user.visible_message("After a few attempts, [user] manages to light [src] - they however burn their finger in the process.", "You burn yourself while lighting the lighter!")
user.AddLuminosity(1)
SSobj.processing |= src
@@ -499,9 +498,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
force = 0
attack_verb = null //human_defense.dm takes care of it
if(istype(src, /obj/item/weapon/lighter/zippo) )
- user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.")
+ user.visible_message("You hear a quiet click, as [user] shuts off [src] without even looking at what they're doing. Wow.", "You quietly shut off [src] without even looking at what you're doing. Wow.")
else
- user.visible_message("[user] quietly shuts off [src].")
+ user.visible_message("[user] quietly shuts off [src].", "You quietly shut off [src].")
user.AddLuminosity(-1)
SSobj.processing.Remove(src)
@@ -572,6 +571,6 @@ CIGARETTE PACKETS ARE IN FANCY.DM
qdel(target)
qdel(src)
else
- user << "You need to dry this first."
+ user << "You need to dry this first!"
else
..()
diff --git a/code/game/objects/items/weapons/clown_items.dm b/code/game/objects/items/weapons/clown_items.dm
index 1f0a51cc022..f67f6013119 100644
--- a/code/game/objects/items/weapons/clown_items.dm
+++ b/code/game/objects/items/weapons/clown_items.dm
@@ -46,17 +46,17 @@
//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 << "You need to take that [target.name] off before cleaning it."
+ user << "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].")
+ user.visible_message("[user] begins to scrub \the [target.name] out with [src].", "You begin to scrub \the [target.name] out with [src]...")
if(do_after(user, src.cleanspeed))
user << "You scrub \the [target.name] out."
qdel(target)
else if(ishuman(target) && user.zone_sel && user.zone_sel.selecting == "mouth")
- user.visible_message("\the [user] washes \the [target]'s mouth out with [src.name]!") //washes mouth out with soap sounds better than 'the soap' here
+ 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
return
else
- user.visible_message("[user] begins to clean \the [target.name] with [src].")
+ user.visible_message("[user] begins to clean \the [target.name] with [src]...", "You begin to clean \the [target.name] with [src]...")
if(do_after(user, src.cleanspeed))
user << "You clean \the [target.name]."
var/obj/effect/decal/cleanable/C = locate() in target
diff --git a/code/game/objects/items/weapons/cosmetics.dm b/code/game/objects/items/weapons/cosmetics.dm
index 646a06d1d97..bd7c7c6f8bc 100644
--- a/code/game/objects/items/weapons/cosmetics.dm
+++ b/code/game/objects/items/weapons/cosmetics.dm
@@ -51,10 +51,10 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.is_mouth_covered())
- user << "Remove [ H == user ? "your" : "their" ] mask!"
+ user << "Remove [ H == user ? "your" : "their" ] mask!"
return
if(H.lip_style) //if they already have lipstick on
- user << "You need to wipe off the old lipstick first!"
+ user << "You need to wipe off the old lipstick first!"
return
if(H == user)
user.visible_message("[user] does their lips with \the [src].", \
@@ -64,15 +64,15 @@
H.update_body()
else
user.visible_message("[user] begins to do [H]'s lips with \the [src].", \
- "You begin to apply \the [src].")
+ "You begin to apply \the [src] on [H]'s lips...")
if(do_after(user, 20) && do_after(H, 20, 5, 0)) //user needs to keep their active hand, H does not.
- user.visible_message("[user] does [H]'s lips with \the [src].", \
- "You apply \the [src].")
+ user.visible_message("[user] does [H]'s lips with \the [src].", \
+ "You apply \the [src] on [H]'s lips.")
H.lip_style = "lipstick"
H.lip_color = colour
H.update_body()
else
- user << "Where are the lips on that?"
+ user << "Where are the lips on that?"
//you can wipe off lipstick with paper!
/obj/item/weapon/paper/attack(mob/M, mob/user)
@@ -88,9 +88,9 @@
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.")
+ "You begin to wipe off [H]'s lipstick...")
if(do_after(user, 10) && do_after(H, 10, 5, 0)) //user needs to keep their active hand, H does not.
- user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \
+ user.visible_message("[user] wipes [H]'s lipstick off with \the [src].", \
"You wipe off [H]'s lipstick.")
H.lip_style = null
H.update_body()
@@ -124,23 +124,23 @@
var/location = user.zone_sel.selecting
if(location == "mouth")
if(!get_location_accessible(H, location))
- user << "The mask is in the way."
+ user << "The mask is in the way!"
return
if(H.facial_hair_style == "Shaved")
- user << "Already clean-shaven."
+ user << "Already clean-shaven!"
return
if(H == user) //shaving yourself
- user.visible_message("[user] starts to shave their facial hair with [src].", \
- "You take a moment to shave your facial hair with [src].")
+ user.visible_message("[user] starts to shave their facial hair with [src].", \
+ "You take a moment to shave your facial hair with [src]...")
if(do_after(user, 50))
- user.visible_message("[user] shaves his facial hair clean with [src].", \
+ user.visible_message("[user] shaves his facial hair clean with [src].", \
"You finish shaving with [src]. Fast and clean!")
shave(H, location)
else
var/turf/H_loc = H.loc
user.visible_message("[user] tries to shave [H]'s facial hair with [src].", \
- "You start shaving [H]'s facial hair.")
+ "You start shaving [H]'s facial hair...")
if(do_after(user, 50))
if(H_loc == H.loc)
user.visible_message("[user] shaves off [H]'s facial hair with [src].", \
@@ -149,23 +149,23 @@
else if(location == "head")
if(!get_location_accessible(H, location))
- user << "The headgear is in the way."
+ user << "The headgear is in the way!"
return
if(H.hair_style == "Bald" || H.hair_style == "Balding Hair" || H.hair_style == "Skinhead")
- user << "There is not enough hair left to shave!"
+ user << "There is not enough hair left to shave!"
return
if(H == user) //shaving yourself
- user.visible_message("[user] starts to shave their head with [src].", \
- "You start to shave your head with [src].")
+ user.visible_message("[user] starts to shave their head with [src].", \
+ "You start to shave your head with [src]...")
if(do_after(user, 50))
- user.visible_message("[user] shaves his head with [src].", \
+ user.visible_message("[user] shaves his head with [src].", \
"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.")
+ "You start shaving [H]'s head...")
if(do_after(user, 50))
if(H_loc == H.loc)
user.visible_message("[user] shaves [H]'s head bald with [src]!", \
diff --git a/code/game/objects/items/weapons/defib.dm b/code/game/objects/items/weapons/defib.dm
index 6d1c95c9ff7..6cfb57894b3 100644
--- a/code/game/objects/items/weapons/defib.dm
+++ b/code/game/objects/items/weapons/defib.dm
@@ -333,13 +333,13 @@
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
return
if(!wielded)
- user << "You need to wield the paddles in both hands before you can use them on someone!"
+ user << "You need to wield the paddles in both hands before you can use them on someone!"
return
if(cooldown)
- user << "[defib] is recharging."
+ user << "[defib] is recharging!"
return
if(!ishuman(M))
- user << "The instructions on [defib] don't mention how to revive that..."
+ user << "The instructions on [defib] don't mention how to revive that..."
return
else
if(user.a_intent == "harm" && !defib.safety)
@@ -359,13 +359,16 @@
defib.cooldowncheck(user)
return
if(user.zone_sel && user.zone_sel.selecting == "chest")
- user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest.")
+ var/mob/dead/observer/ghost = H.get_ghost()
+ if(ghost)
+ ghost << "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)"
+ ghost << 'sound/effects/genetics.ogg'
+ user.visible_message("[user] begins to place [src] on [M.name]'s chest.", "You begin to place [src] on [M.name]'s chest...")
busy = 1
update_icon()
if(do_after(user, 30)) //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 [M.name]'s chest.", "You place [src] on [M.name]'s chest.")
playsound(get_turf(src), 'sound/machines/defib_charge.ogg', 50, 0)
- var/mob/dead/observer/ghost = H.get_ghost()
var/tplus = world.time - H.timeofdeath
var/tlimit = 6000 //past this much time the patient is unrecoverable (in deciseconds)
var/tloss = 3000 //brain damage starts setting in on the patient after some time left rotting
@@ -375,7 +378,7 @@
for(var/obj/item/carried_item in H.contents)
if(istype(carried_item, /obj/item/clothing/suit/space))
if(!defib.combat)
- user.visible_message("[defib] buzzes: Patient's chest is obscured. Operation aborted.")
+ user.visible_message("[defib] buzzes: Patient's chest is obscured. Operation aborted.")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
busy = 0
update_icon()
@@ -390,6 +393,7 @@
for(var/obj/item/organ/limb/O in H.organs)
total_brute += O.brute_dam
total_burn += O.burn_dam
+ ghost = H.get_ghost()
if(total_burn <= 180 && total_brute <= 180 && !H.suiciding && !ghost && tplus < tlimit && !(NOCLONE in H.mutations))
//If the body has been fixed so that they would not be in crit when defibbed, give them oxyloss to put them back into crit
if (H.health > halfwaycritdeath)
@@ -420,19 +424,16 @@
user.visible_message("[defib] buzzes: Resuscitation failed - Severe tissue damage detected.")
else
user.visible_message("[defib] buzzes: Resuscitation failed - No soul in patient body. Further attempts may be successful.")
- if(ghost)
- ghost << "Your heart is being defibrillated. Return to your body if you want to be revived! (Verbs -> Ghost -> Re-enter corpse)"
- ghost << sound('sound/effects/genetics.ogg')
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
defib.deductcharge(revivecost)
update_icon()
cooldown = 1
defib.cooldowncheck(user)
else
- user.visible_message("[defib] buzzes: Patient is not in a valid state. Operation aborted.")
+ user.visible_message("[defib] buzzes: Patient is not in a valid state. Operation aborted.")
playsound(get_turf(src), 'sound/machines/defib_failed.ogg', 50, 0)
busy = 0
update_icon()
else
- user << "You need to target your patient's chest with [src]."
+ user << "You need to target your patient's chest with [src]!"
return
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/dice.dm b/code/game/objects/items/weapons/dice.dm
index 81c98702773..0f6da959109 100644
--- a/code/game/objects/items/weapons/dice.dm
+++ b/code/game/objects/items/weapons/dice.dm
@@ -72,9 +72,9 @@
if(initial(icon_state) == "d00")
result = (result - 1)*10
if(user != null) //Dice was rolled in someone's hand
- user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
+ user.visible_message("[user] has thrown [src]. It lands on [result]. [comment]", \
"You throw [src]. It lands on [result]. [comment]", \
- "You hear [src] landing on [result]. [comment]")
+ "You hear [src] rolling.")
else if(src.throwing == 0) //Dice was thrown and is coming to rest
visible_message("[src] rolls to a stop, landing on [result]. [comment]")
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 0d5d6fb2695..49df5b897c7 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -46,7 +46,7 @@
/obj/item/weapon/dnainjector/attack(mob/target, mob/user)
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return
if(ishuman(target))
var/mob/living/carbon/human/humantarget = target
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index d1ad1fb981d..8f992ab49d1 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -66,7 +66,7 @@
if(loc == target)
return
- user << "Planting explosives..."
+ user << "You start planting the bomb..."
if(do_after(user, 50) && in_range(user, target))
user.drop_item()
@@ -75,7 +75,7 @@
if (ismob(target))
add_logs(user, target, "planted [name] on")
- user.visible_message("[user.name] finished planting an explosive on [target.name]!")
+ user.visible_message("[user.name] finished planting an explosive on [target.name].", "You finish planting an explosive on [target.name].")
message_admins("[key_name(user, user.client)](?) planted [src.name] on [key_name(target)](?) with [timer] second fuse",0,1)
log_game("[key_name(user)] planted [src.name] on [key_name(target)] with [timer] second fuse")
@@ -84,7 +84,7 @@
log_game("[key_name(user)] planted [src.name] on [target.name] at ([target.x],[target.y],[target.z]) with [timer] second fuse")
target.overlays += image_overlay
- user << "Bomb has been planted. Timer counting down from [timer]."
+ user << "You plant the bomb. Timer counting down from [timer]."
spawn(timer*10)
if(target && !target.gc_destroyed)
explode(get_turf(target))
diff --git a/code/game/objects/items/weapons/extinguisher.dm b/code/game/objects/items/weapons/extinguisher.dm
index f4dd08ea68f..607bdf5f378 100644
--- a/code/game/objects/items/weapons/extinguisher.dm
+++ b/code/game/objects/items/weapons/extinguisher.dm
@@ -51,18 +51,18 @@
var/safety_save = safety
safety = 1
if(reagents.total_volume == reagents.maximum_volume)
- user << "\The [src] is already full!"
+ user << "\The [src] is already full!"
safety = safety_save
return 1
var/obj/structure/reagent_dispensers/watertank/W = target
var/transferred = W.reagents.trans_to(src, max_water)
if(transferred > 0)
- user << "\The [src] has been refilled by [transferred] units"
+ user << "\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
- user << "\The [W] is empty!"
+ user << "\The [W] is empty!"
safety = safety_save
return 1
else
@@ -77,7 +77,7 @@
return
if (!safety)
if (src.reagents.total_volume < 1)
- usr << "\The [src] is empty."
+ usr << "\The [src] is empty!"
return
if (world.time < src.last_use + 20)
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index 5c0f7722a70..b36865df202 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -50,7 +50,8 @@
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
/obj/item/device/paicard,
- /obj/item/device/violin,
+ /obj/item/device/instrument/violin,
+ /obj/item/device/instrument/guitar,
/obj/item/weapon/storage/belt/utility/full,
/obj/item/clothing/tie/horrible,
/obj/item/clothing/suit/jacket/leather,
@@ -86,4 +87,4 @@
max_amount = 25
/obj/item/stack/wrapping_paper/attack_self(mob/user)
- user << "You need to use it on a package that has already been wrapped!"
+ user << "You need to use it on a package that has already been wrapped!"
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index ea27b6bdf82..84a7e5c8c6a 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -55,16 +55,16 @@
user << "You lock the [initial(name)] assembly."
playsound(loc, 'sound/items/Screwdriver.ogg', 25, -3)
else
- user << "You need to add at least one beaker before locking the [initial(name)] assembly."
+ user << "You need to add at least one beaker before locking the [initial(name)] assembly!"
else if(stage == READY && !nadeassembly)
det_time = det_time == 50 ? 30 : 50 //toggle between 30 and 50
user << "You modify the time delay. It's set for [det_time / 10] second\s."
else if(stage == EMPTY)
- user << "You need to add an activation mechanism."
+ user << "You need to add an activation mechanism!"
else if(stage == WIRED && is_type_in_list(I, allowed_containers))
if(beakers.len == 2)
- user << "[src] can not hold more containers."
+ user << "[src] can not hold more containers!"
return
else
if(I.reagents.total_volume)
@@ -73,7 +73,7 @@
I.loc = src
beakers += I
else
- user << "[I] is empty."
+ user << "[I] is empty!"
else if(stage == EMPTY && istype(I, /obj/item/device/assembly_holder))
var/obj/item/device/assembly_holder/A = I
@@ -87,7 +87,7 @@
assemblyattacher = user.ckey
stage_change(WIRED)
- user << "You add [A] to the [initial(name)] assembly!"
+ user << "You add [A] to the [initial(name)] assembly./span>"
else if(stage == EMPTY && istype(I, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = I
@@ -96,7 +96,7 @@
stage_change(WIRED)
user << "You rig the [initial(name)] assembly."
else
- user << "You need one length of coil to wire the assembly."
+ user << "You need one length of coil to wire the assembly!"
return
else if(stage == READY && istype(I, /obj/item/weapon/wirecutters))
diff --git a/code/game/objects/items/weapons/handcuffs.dm b/code/game/objects/items/weapons/handcuffs.dm
index e12f568c694..980a749b90d 100644
--- a/code/game/objects/items/weapons/handcuffs.dm
+++ b/code/game/objects/items/weapons/handcuffs.dm
@@ -43,7 +43,7 @@
add_logs(user, C, "handcuffed")
else
- user << "You fail to handcuff [C]."
+ user << "You fail to handcuff [C]!"
/obj/item/weapon/restraints/handcuffs/proc/apply_cuffs(mob/living/carbon/target, mob/user)
if(!target.handcuffed)
@@ -102,7 +102,7 @@
user << "You wrap the cable restraint around the top of the rod."
qdel(src)
else
- user << "You need one rod to make a wired rod."
+ user << "You need one rod to make a wired rod!"
return
/obj/item/weapon/restraints/handcuffs/cable/zipties/cyborg/attack(mob/living/carbon/C, mob/user)
@@ -118,7 +118,7 @@
user << "You handcuff [C]."
add_logs(user, C, "handcuffed")
else
- user << "You fail to handcuff [C]."
+ user << "You fail to handcuff [C]!"
/obj/item/weapon/restraints/handcuffs/cable/zipties
name = "zipties"
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 409ee2d7639..ede7ae576c6 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -147,9 +147,9 @@
else
injectamount = cause
reagents.trans_to(R, injectamount)
- R << "You hear a faint *beep*."
+ R << "You hear a faint beep."
if(!reagents.total_volume)
- R << "You hear a faint click from your chest."
+ R << "You hear a faint click from your chest."
qdel(src)
@@ -173,10 +173,10 @@
/obj/item/weapon/implant/loyalty/implanted(mob/target)
..()
- if((target.mind in ticker.mode.head_revolutionaries) || (target.mind in ticker.mode.A_bosses) || (target.mind in ticker.mode.B_bosses) || is_shadow_or_thrall(target))
+ if((target.mind in (ticker.mode.head_revolutionaries | ticker.mode.A_bosses | ticker.mode.B_bosses)) || is_shadow_or_thrall(target))
target.visible_message("[target] seems to resist the implant!", "You feel the corporate tendrils of Nanotrasen try to invade your mind!")
return 0
- if((target.mind in ticker.mode.revolutionaries) || (target.mind in ticker.mode.A_gang) || (target.mind in ticker.mode.B_gang))
+ if(target.mind in (ticker.mode.revolutionaries | ticker.mode.A_gang | ticker.mode.B_gang))
ticker.mode.remove_revolutionary(target.mind)
ticker.mode.remove_gangster(target.mind, exclude_bosses=0)
target << "You feel a surge of loyalty towards Nanotrasen."
diff --git a/code/game/objects/items/weapons/implants/implanter.dm b/code/game/objects/items/weapons/implants/implanter.dm
index e8ebdd6d7dc..b3023ea69ef 100644
--- a/code/game/objects/items/weapons/implants/implanter.dm
+++ b/code/game/objects/items/weapons/implants/implanter.dm
@@ -25,9 +25,9 @@
var/turf/T = get_turf(M)
if(T && (M == user || do_after(user, 50)))
if(user && M && (get_turf(M) == T) && src && imp)
- M.visible_message("[user] has implanted [M].")
+ M.visible_message("[user] has implanted [M].", "[user] implants you with the implant.")
add_logs(user, M, "implanted", object="[name]")
- user << "You implanted the implant into [M]."
+ user << "You implant the implant into [M]."
if(imp.implanted(M))
imp.loc = M
imp.imp_in = M
diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm
index 22ee1031980..5b719a3f190 100644
--- a/code/game/objects/items/weapons/mop.dm
+++ b/code/game/objects/items/weapons/mop.dm
@@ -36,7 +36,7 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A)
if(!proximity) return
if(reagents.total_volume < 1)
- user << "Your mop is dry!"
+ user << "Your mop is dry!"
return
var/turf/simulated/turf = A
@@ -45,11 +45,11 @@ obj/item/weapon/mop/proc/clean(turf/simulated/A)
A = null
if(istype(turf))
- user.visible_message("[user] begins to clean \the [turf] with [src].")
+ user.visible_message("[user] begins to clean \the [turf] with [src].", "You begin to clean \the [turf] with [src]...")
if(do_after(user, mopspeed))
clean(turf)
- user << "You have finished mopping!"
+ user << "You finish mopping./span>"
/obj/effect/attackby(obj/item/I, mob/user, params)
diff --git a/code/game/objects/items/weapons/paiwire.dm b/code/game/objects/items/weapons/paiwire.dm
index 83bc76517a6..b7f90a9ee0e 100644
--- a/code/game/objects/items/weapons/paiwire.dm
+++ b/code/game/objects/items/weapons/paiwire.dm
@@ -1,11 +1,11 @@
/obj/item/weapon/pai_cable/proc/plugin(obj/machinery/M as obj, mob/user as mob)
if(istype(M, /obj/machinery/door) || istype(M, /obj/machinery/camera))
- user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.")
+ user.visible_message("[user] inserts [src] into a data port on [M].", "You insert [src] into a data port on [M].", "You hear the satisfying click of a wire jack fastening into place.")
user.drop_item()
src.loc = M
src.machine = M
else
- user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src].")
+ user.visible_message("[user] dumbly fumbles to find a place on [M] to plug in [src].", "There aren't any ports on [M] that match the jack belonging to [src]!")
/obj/item/weapon/pai_cable/attack(obj/machinery/M as obj, mob/user as mob)
src.plugin(M, user)
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/singularityhammer.dm b/code/game/objects/items/weapons/singularityhammer.dm
index 0df64ef2e05..e2af15774b5 100644
--- a/code/game/objects/items/weapons/singularityhammer.dm
+++ b/code/game/objects/items/weapons/singularityhammer.dm
@@ -92,7 +92,7 @@
target.take_organ_damage(0,30)
target.visible_message("[target.name] was shocked by the [src.name]!", \
"You feel a powerful shock course through your body sending you flying!", \
- "You hear a heavy electrical crack.")
+ "You hear a heavy electrical crack!")
var/atom/throw_target = get_edge_target_turf(target, get_dir(src, get_step_away(target, src)))
target.throw_at(throw_target, 200, 4)
return
diff --git a/code/game/objects/items/weapons/storage/book.dm b/code/game/objects/items/weapons/storage/book.dm
index db8f612a8b7..3be61c6ae42 100644
--- a/code/game/objects/items/weapons/storage/book.dm
+++ b/code/game/objects/items/weapons/storage/book.dm
@@ -57,7 +57,7 @@
add_logs(user, M, "attacked", object="[src.name]")
if (!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return
if(!chaplain)
user << "The book sizzles in your hands."
@@ -75,7 +75,7 @@
if (M.stat !=2)
if(M.mind && (M.mind.assigned_role == "Chaplain"))
- user << "You can't heal yourself!"
+ user << "You can't heal yourself!"
return
/*if((M.mind in ticker.mode.cult) && (prob(20)))
M << "\red The power of [src.deity_name] clears your mind of heresy!"
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 0fc3ddbf3d3..936f6e72425 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -33,7 +33,7 @@
if(!foldable)
return
if(contents.len)
- user << "You can't fold this box with items still inside."
+ user << "You can't fold this box with items still inside!"
return
if(!ispath(foldable))
return
diff --git a/code/game/objects/items/weapons/storage/lockbox.dm b/code/game/objects/items/weapons/storage/lockbox.dm
index 9b7d8f19952..35ec6dfbb1b 100644
--- a/code/game/objects/items/weapons/storage/lockbox.dm
+++ b/code/game/objects/items/weapons/storage/lockbox.dm
@@ -48,11 +48,11 @@
desc += "It appears to be broken."
icon_state = src.icon_broken
for(var/mob/O in viewers(user, 3))
- O.show_message(text("\The [src] has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2)
+ O.show_message(text("\The [src] has been broken by [] with an electromagnetic card!", user), 1, text("You hear a faint electrical spark."), 2)
return
/obj/item/weapon/storage/lockbox/show_to(mob/user as mob)
if(locked)
- user << "It's locked!"
+ user << "It's locked!"
else
..()
return
diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm
index f218df6b7f7..b8c214924f6 100644
--- a/code/game/objects/items/weapons/storage/secure.dm
+++ b/code/game/objects/items/weapons/storage/secure.dm
@@ -70,7 +70,7 @@
src.overlays = null
overlays += image('icons/obj/storage.dmi', icon_locking)
locked = 0
- user << "You short out the lock on [src]."
+ user << "You short out the lock on [src]."
/obj/item/weapon/storage/secure/MouseDrop(over_object, src_location, over_location)
if (locked)
@@ -159,7 +159,7 @@
/obj/item/weapon/storage/secure/briefcase/attack_hand(mob/user as mob)
if ((src.loc == user) && (src.locked == 1))
- usr << "[src] is locked and cannot be opened!"
+ usr << "[src] is locked and cannot be opened!"
else if ((src.loc == user) && (!src.locked))
playsound(src.loc, "rustle", 50, 1, -5)
if (user.s_active)
diff --git a/code/game/objects/items/weapons/storage/storage.dm b/code/game/objects/items/weapons/storage/storage.dm
index 7eaf4c6304a..ac11ad700f2 100644
--- a/code/game/objects/items/weapons/storage/storage.dm
+++ b/code/game/objects/items/weapons/storage/storage.dm
@@ -213,7 +213,7 @@
return 0 //Means the item is already in the storage item
if(contents.len >= storage_slots)
if(!stop_messages)
- usr << "[src] is full, make some space."
+ usr << "[src] is full, make some space!"
return 0 //Storage item is full
if(can_hold.len)
@@ -224,18 +224,18 @@
break
if(!ok)
if(!stop_messages)
- usr << "[src] cannot hold [W]."
+ usr << "[src] cannot hold [W]!"
return 0
for(var/A in cant_hold) //Check for specific items which this container can't hold.
if(istype(W, A))
if(!stop_messages)
- usr << "[src] cannot hold [W]."
+ usr << "[src] cannot hold [W]!"
return 0
if(W.w_class > max_w_class)
if(!stop_messages)
- usr << "[W] is too big for [src]."
+ usr << "[W] is too big for [src]!"
return 0
var/sum_w_class = W.w_class
@@ -244,17 +244,17 @@
if(sum_w_class > max_combined_w_class)
if(!stop_messages)
- usr << "[src] is full, make some space."
+ usr << "[src] is full, make some space!"
return 0
if(W.w_class >= w_class && (istype(W, /obj/item/weapon/storage)))
if(!istype(src, /obj/item/weapon/storage/backpack/holding)) //bohs should be able to hold backpacks again. The override for putting a boh in a boh is in backpack.dm.
if(!stop_messages)
- usr << "[src] cannot hold [W] as it's a storage item of the same size."
+ usr << "[src] cannot hold [W] as it's a storage item of the same size!"
return 0 //To prevent the stacking of same sized storage items.
if(W.flags & NODROP) //SHOULD be handled in unEquip, but better safe than sorry.
- usr << "\the [W] is stuck to your hand, you can't put it in \the [src]"
+ usr << "\the [W] is stuck to your hand, you can't put it in \the [src]!"
return 0
return 1
@@ -325,7 +325,7 @@
..()
if(isrobot(user))
- user << "You're a robot. No."
+ user << "You're a robot. No."
return 0 //Robots can't interact with storage items.
if(!can_be_inserted(W, 0 , user))
diff --git a/code/game/objects/items/weapons/tanks/jetpack.dm b/code/game/objects/items/weapons/tanks/jetpack.dm
index 65a043fa5de..e83c50f5594 100644
--- a/code/game/objects/items/weapons/tanks/jetpack.dm
+++ b/code/game/objects/items/weapons/tanks/jetpack.dm
@@ -23,7 +23,7 @@
if(usr.stat || !usr.canmove || usr.restrained())
return
src.stabilization_on = !( src.stabilization_on )
- usr << "You toggle the stabilization [stabilization_on? "on":"off"]."
+ usr << "You toggle the stabilization [stabilization_on? "on":"off"]."
return
@@ -41,7 +41,7 @@
icon_state = initial(icon_state)
// item_state = initial(item_state)
ion_trail.stop()
- usr << "You toggle the jetpack [on? "on":"off"]."
+ usr << "You toggle the jetpack [on? "on":"off"]."
return
@@ -129,10 +129,10 @@
var/mob/living/carbon/human/H = loc.loc
if(!H.wear_suit)
- H << "You must be wearing the suit to use the inbuilt jetpack."
+ H << "You must be wearing the suit to use the inbuilt jetpack!"
return
if(!istype(H.s_store,/obj/item/weapon/tank/internals))
- H << "You must have a tank in your suit's storage to use the inbuilt jetpack."
+ H << "You must have a tank in your suit's storage to use the inbuilt jetpack!"
return
if(usr.stat || !usr.canmove || usr.restrained())
return
@@ -146,7 +146,7 @@
icon_state = "[icon_state]-on"
else
turn_off()
- H << "You toggle the inbuilt jetpack [on? "on":"off"]."
+ H << "You toggle the inbuilt jetpack [on? "on":"off"]."
/obj/item/weapon/tank/jetpack/suit/proc/turn_off()
on = 0
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 0f0467ea62e..63d46028ba5 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -135,7 +135,7 @@
if (location.internals)
location.internals.icon_state = "internal1"
else
- usr << "You need something to connect to \the [src]."
+ usr << "You need something to connect to \the [src]!"
src.add_fingerprint(usr)
/*
diff --git a/code/game/objects/items/weapons/tanks/watertank.dm b/code/game/objects/items/weapons/tanks/watertank.dm
index f9cd8dec7c2..d634d9a832c 100644
--- a/code/game/objects/items/weapons/tanks/watertank.dm
+++ b/code/game/objects/items/weapons/tanks/watertank.dm
@@ -26,7 +26,7 @@
set name = "Toggle Mister"
set category = "Object"
if (usr.get_item_by_slot(slot_back) != src)
- usr << "The watertank needs to be on your back to use."
+ usr << "The watertank needs to be on your back to use!"
return
if(usr.incapacitated())
return
@@ -40,7 +40,7 @@
//Detach the nozzle into the user's hands
if(!user.put_in_hands(noz))
on = 0
- user << "You need a free hand to hold the mister."
+ user << "You need a free hand to hold the mister!"
return
noz.loc = user
else
@@ -268,10 +268,10 @@
return //Safety check so you don't blast yourself trying to refill your tank
var/datum/reagents/R = reagents
if(R.total_volume < 100)
- user << "You need at least 100 units of water to use the nanofrost launcher!"
+ user << "You need at least 100 units of water to use the nanofrost launcher!"
return
if(nanofrost_cooldown)
- user << "Nanofrost launcher is still recharging"
+ user << "Nanofrost launcher is still recharging..."
return
nanofrost_cooldown = 1
R.remove_any(100)
@@ -297,7 +297,7 @@
if(src)
metal_synthesis_cooldown--
else
- user << "Metal foam mix is still being synthesized."
+ user << "Metal foam mix is still being synthesized..."
return
/obj/effect/nanofrost_container
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 86f9a77bd46..7603df34290 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -289,7 +289,7 @@
return 1
else
if(M)
- M << "You need more welding fuel to complete this task."
+ M << "You need more welding fuel to complete this task!"
return 0
@@ -316,7 +316,7 @@
//Toggles the welder off and on
/obj/item/weapon/weldingtool/proc/toggle(mob/user, message = 0)
if(!status)
- user << "[src] can't be turned on while unsecured."
+ user << "[src] can't be turned on while unsecured!"
return
welding = !welding
if(welding)
@@ -328,13 +328,13 @@
update_icon()
SSobj.processing |= src
else
- user << "You need more fuel."
+ user << "You need more fuel!"
welding = 0
else
if(!message)
user << "You switch [src] off."
else
- user << "[src] shuts off!"
+ user << "[src] shuts off!"
force = 3
damtype = "brute"
hitsound = "swing_hit"
@@ -342,7 +342,7 @@
/obj/item/weapon/weldingtool/proc/flamethrower_screwdriver(obj/item/I, mob/user)
if(welding)
- user << "Turn it off first."
+ user << "Turn it off first!"
return
status = !status
if(status)
@@ -363,7 +363,7 @@
user << "You add a rod to a welder, starting to build a flamethrower."
user.put_in_hands(F)
else
- user << "You need one rod to start building a flamethrower."
+ user << "You need one rod to start building a flamethrower!"
return
/obj/item/weapon/weldingtool/largetank
diff --git a/code/game/objects/items/weapons/twohanded.dm b/code/game/objects/items/weapons/twohanded.dm
index 32349ddb581..2735a07f8b7 100644
--- a/code/game/objects/items/weapons/twohanded.dm
+++ b/code/game/objects/items/weapons/twohanded.dm
@@ -47,7 +47,7 @@
user << "It's too heavy for you to wield fully."
return
if(user.get_inactive_hand())
- user << "You need your other hand to be empty"
+ user << "You need your other hand to be empty!"
return
wielded = 1
force = force_wielded
@@ -230,13 +230,13 @@ obj/item/weapon/twohanded/
/obj/item/weapon/twohanded/dualsaber/attack_hulk(mob/living/carbon/human/user) //In case thats just so happens that it is still activated on the groud, prevents hulk from picking it up
if(wielded)
- user << "You cant pick up such dangerous item with your meaty hands without losing fingers, better not to."
+ user << "You can't pick up such dangerous item with your meaty hands without losing fingers, better not to!"
return 1
/obj/item/weapon/twohanded/dualsaber/wield(mob/living/carbon/M) //Specific wield () hulk checks due to reflection chance for balance issues and switches hitsounds.
if(istype(M))
if(M.dna.check_mutation(HULK))
- M << "You lack the grace to wield this."
+ M << "You lack the grace to wield this!"
return
..()
hitsound = 'sound/weapons/blade1.ogg'
diff --git a/code/game/objects/items/weapons/weaponry.dm b/code/game/objects/items/weapons/weaponry.dm
index 57d102eb03f..e7f13f3a881 100644
--- a/code/game/objects/items/weapons/weaponry.dm
+++ b/code/game/objects/items/weapons/weaponry.dm
@@ -158,4 +158,40 @@ obj/item/weapon/wirerod/attackby(var/obj/item/I, mob/user as mob, params)
+/obj/item/weapon/switchblade
+ name = "switchblade"
+ icon_state = "switchblade"
+ desc = "A sharp, concealable, spring-loaded knife."
+ flags = CONDUCT
+ force = 20
+ w_class = 2
+ throwforce = 15
+ throw_speed = 3
+ throw_range = 6
+ m_amt = 12000
+ origin_tech = "materials=1"
+ hitsound = 'sound/weapons/Genhit.ogg'
+ attack_verb = list("stubbed", "poked")
+ var/extended
+/obj/item/weapon/switchblade/attack_self(mob/user)
+ extended = !extended
+ playsound(src.loc, 'sound/weapons/batonextend.ogg', 50, 1)
+ if(extended)
+ force = 20
+ w_class = 3
+ throwforce = 15
+ icon_state = "switchblade_ext"
+ attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ else
+ force = 1
+ w_class = 2
+ throwforce = 5
+ icon_state = "switchblade"
+ attack_verb = list("stubbed", "poked")
+ hitsound = 'sound/weapons/Genhit.ogg'
+
+/obj/item/weapon/switchblade/suicide_act(mob/user)
+ user.visible_message("[user] is slitting \his own throat with the [src.name]! It looks like \he's trying to commit suicide.")
+ return (BRUTELOSS)
\ No newline at end of file
diff --git a/code/game/objects/structures/barsigns.dm b/code/game/objects/structures/barsigns.dm
index 856559e6944..09d1b6414e6 100644
--- a/code/game/objects/structures/barsigns.dm
+++ b/code/game/objects/structures/barsigns.dm
@@ -66,11 +66,11 @@
return
if( istype(I, /obj/item/weapon/screwdriver))
if(!panel_open)
- user << "You open the maintenance panel."
+ user << "You open the maintenance panel."
set_sign(new /datum/barsign/hiddensigns/signoff)
panel_open = 1
else
- user << "You close the maintenance panel."
+ user << "You close the maintenance panel."
if(!broken && !emagged)
set_sign(pick(barsigns))
else if(emagged)
@@ -82,17 +82,17 @@
if(istype(I, /obj/item/stack/cable_coil) && panel_open)
var/obj/item/stack/cable_coil/C = I
if(emagged) //Emagged, not broken by EMP
- user << "Sign has been damaged beyond repair."
+ user << "Sign has been damaged beyond repair!"
return
else if(!broken)
- user << "This sign is functioning properly."
+ user << "This sign is functioning properly!"
return
if(C.use(2))
user << "You replace the burnt wiring."
broken = 0
else
- user << "You need at least two lengths of cable."
+ user << "You need at least two lengths of cable!"
@@ -105,7 +105,7 @@
/obj/structure/sign/barsign/emag_act(mob/user)
if(broken || emagged)
- user << "Nothing interesting happens."
+ user << "Nothing interesting happens!"
return
user << "You emag the barsign. Takeover in progress..."
sleep(100) //10 seconds
diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm
index a671823fdf2..8b11247a122 100644
--- a/code/game/objects/structures/bedsheet_bin.dm
+++ b/code/game/objects/structures/bedsheet_bin.dm
@@ -202,7 +202,7 @@ LINEN BINS
update_icon()
else if(amount && !hidden && I.w_class < 4) //make sure there's sheets to hide it among, make sure nothing else is hidden in there.
if(!user.drop_item())
- user << "\The [I] is stuck to your hand, you cannot hide it among the sheets!"
+ user << "\The [I] is stuck to your hand, you cannot hide it among the sheets!"
return
I.loc = src
hidden = I
diff --git a/code/game/objects/structures/crates_lockers/bins.dm b/code/game/objects/structures/crates_lockers/bins.dm
index 0d94473a439..edabca55fb7 100644
--- a/code/game/objects/structures/crates_lockers/bins.dm
+++ b/code/game/objects/structures/crates_lockers/bins.dm
@@ -47,16 +47,16 @@
. = ..(O, user, 0, 0, 0)
if(.)
if(O != user)
- user.visible_message("[user] tries to stuff [O] into [src].", \
+ user.visible_message("[user] tries to stuff [O] into [src].", \
"You try to stuff [O] into [src].", \
- "You hear clanging.")
+ "You hear clanging.")
if (!do_after(user, 40))
return
if(!..(O, user, 0, 0))
return
- user.visible_message("[user] stuffs [O] into[src].", \
+ user.visible_message("[user] stuffs [O] into[src].", \
"You stuff [O] into [src].", \
- "You hear a loud metal bang.")
+ "You hear a loud metal bang.")
insert(O, 1, !opened)
if(opened)
close()
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 4f20d4e44bf..9ccab97911d 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -211,7 +211,7 @@
return
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
new /obj/item/stack/sheet/metal(src.loc)
- visible_message("[user] has cut \the [src] apart with \the [WT].", "You hear welding.")
+ visible_message("[user] has cut \the [src] apart with \the [WT].", "You hear welding.")
qdel(src)
return
if(isrobot(user))
@@ -231,9 +231,9 @@
return
playsound(loc, 'sound/items/welder.ogg', 50, 1)
welded = !welded
- user << "You [welded ? "welded [src] shut":"unwelded [src]"]."
+ user << "You [welded ? "weld [src] shut":"unweld [src]"]."
update_icon()
- user.visible_message("[user.name] has [welded ? "welded [src] shut":"unwelded [src]"].")
+ user.visible_message("[user.name] has [welded ? "welded [src] shut":"unwelded [src]"].", "You [welded ? "weld [src] shut":"unweld [src]"].")
return
if(secure && broken)
user << "The locker appears to be broken."
@@ -337,8 +337,7 @@
welded = 0 //applies to all lockers lockers
locked = 0 //applies to critter crates and secure lockers only
broken = 1 //applies to secure lockers only
- visible_message("[user] successfully broke out of [src]!")
- user << "You successfully break out of [src]!"
+ user.visible_message("[user] successfully broke out of [src]!", "You successfully break out of [src]!")
if(istype( src.loc, /obj/structure/bigDelivery))
var/obj/structure/bigDelivery/D = src.loc
qdel(D)
@@ -397,4 +396,4 @@
O.show_message("The locker has been broken by [user] with an electromagnetic card!", 1, "You hear a faint electrical spark.", 2)
overlays += "sparking"
spawn(4) //overlays don't support flick so we have to cheat
- update_icon()
\ No newline at end of file
+ update_icon()
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index fd72c7e5da3..67292b52f2d 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -4,4 +4,4 @@
locked = 1
icon_state = "secure"
health = 200
- secure = 1
\ No newline at end of file
+ secure = 1
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index bde64f7861f..f3b11af3cbf 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -249,7 +249,7 @@
if(isrobot(user))
return
if(!user.drop_item()) //couldn't drop the item
- user << "\The [W] is stuck to your hand, you cannot put it in \the [src]!"
+ user << "\The [W] is stuck to your hand, you cannot put it in \the [src]!"
return
if(W)
W.loc = src.loc
@@ -257,14 +257,14 @@
return
else if(istype(W, /obj/item/stack/cable_coil))
if(rigged)
- user << "[src] is already rigged!"
+ user << "[src] is already rigged!"
return
var/obj/item/stack/cable_coil/C = W
if (C.use(5))
user << "You rig [src]."
rigged = 1
else
- user << "You need 5 lengths of cable to rig [src]."
+ user << "You need 5 lengths of cable to rig [src]!"
return
else if(istype(W, /obj/item/device/electropack))
if(rigged)
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index 28b15223ebd..54a1fe847c3 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -6,7 +6,7 @@
density = 1
/obj/structure/largecrate/attack_hand(mob/user as mob)
- user << "You need a crowbar to pry this open!"
+ user << "You need a crowbar to pry this open!"
return
/obj/structure/largecrate/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
@@ -15,9 +15,9 @@
var/turf/T = get_turf(src)
for(var/obj/O in contents)
O.loc = T
- user.visible_message("[user] pries \the [src] open.", \
+ user.visible_message("[user] pries \the [src] open.", \
"You pry open \the [src].", \
- "You hear splitting wood.")
+ "You hear splitting wood.")
qdel(src)
else
return attack_hand(user)
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 3cb0bdbff92..d37ebc83076 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -440,14 +440,14 @@ obj/structure/door_assembly/New()
else if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0,user))
- user.visible_message("[user] dissassembles the airlock assembly.", \
- "You start to dissassemble the airlock assembly.")
+ user.visible_message("[user] disassembles the airlock assembly.", \
+ "You start to disassemble the airlock assembly...")
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
if(do_after(user, 40))
if( !WT.isOn() )
return
- user << " You've disassembled the airlock assembly."
+ user << " You disassemble the airlock assembly."
new /obj/item/stack/sheet/metal(get_turf(src), 4)
if (mineral)
if (mineral == "glass")
@@ -469,14 +469,14 @@ obj/structure/door_assembly/New()
if(door_check)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user.visible_message("[user] secures the airlock assembly to the floor.", \
- "You start to secure the airlock assembly to the floor.", \
- "You hear wrenching")
+ user.visible_message("[user] secures the airlock assembly to the floor.", \
+ "You start to secure the airlock assembly to the floor...", \
+ "You hear wrenching.")
if(do_after(user, 40))
if( src.anchored )
return
- user << " You've secured the airlock assembly."
+ user << " You secure the airlock assembly."
src.name = "secured airlock assembly"
src.anchored = 1
else
@@ -484,47 +484,47 @@ obj/structure/door_assembly/New()
else if(istype(W, /obj/item/weapon/wrench) && anchored )
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user.visible_message("[user] unsecures the airlock assembly from the floor.", \
- "You start to unsecure the airlock assembly from the floor.", \
- "You hear wrenching")
+ user.visible_message("[user] unsecures the airlock assembly from the floor.", \
+ "You start to unsecure the airlock assembly from the floor...", \
+ "You hear wrenching.")
if(do_after(user, 40))
if( !src.anchored )
return
- user << " You've unsecured the airlock assembly."
+ user << " You unsecure the airlock assembly."
src.name = "airlock assembly"
src.anchored = 0
else if(istype(W, /obj/item/stack/cable_coil) && state == 0 && anchored )
var/obj/item/stack/cable_coil/C = W
if (C.get_amount() < 1)
- user << "You need one length of cable to wire the airlock assembly."
+ user << "You need one length of cable to wire the airlock assembly!"
return
- user.visible_message("[user] wires the airlock assembly.", \
- "You start to wire the airlock assembly.")
+ user.visible_message("[user] wires the airlock assembly.", \
+ "You start to wire the airlock assembly...")
if(do_after(user, 40))
if(C.get_amount() < 1 || state != 0) return
C.use(1)
src.state = 1
- user << "You've wired the airlock assembly."
+ user << "You wire the airlock assembly."
src.name = "wired airlock assembly"
else if(istype(W, /obj/item/weapon/wirecutters) && state == 1 )
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
- user.visible_message("[user] cuts the wires from the airlock assembly.", \
- "You start to cut the wires from the airlock assembly.")
+ user.visible_message("[user] cuts the wires from the airlock assembly.", \
+ "You start to cut the wires from the airlock assembly...")
if(do_after(user, 40))
if( src.state != 1 )
return
- user << " You've cut the wires from the airlock assembly."
+ user << " You cut the wires from the airlock assembly."
new/obj/item/stack/cable_coil(get_turf(user), 1)
src.state = 0
src.name = "secured airlock assembly"
else if(istype(W, /obj/item/weapon/airlock_electronics) && state == 1 )
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user.visible_message("[user] installs the electronics into the airlock assembly.", \
- "You start to install electronics into the airlock assembly.")
+ user.visible_message("[user] installs the electronics into the airlock assembly.", \
+ "You start to install electronics into the airlock assembly...")
if(do_after(user, 40))
@@ -533,7 +533,7 @@ obj/structure/door_assembly/New()
user.drop_item()
W.loc = src
- user << " You've installed the airlock electronics."
+ user << " You install the airlock electronics."
src.state = 2
src.name = "near finished airlock assembly"
src.electronics = W
@@ -541,13 +541,13 @@ obj/structure/door_assembly/New()
else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] removes the electronics from the airlock assembly.", \
- "You start to remove electronics from the airlock assembly.")
+ user.visible_message("[user] removes the electronics from the airlock assembly.", \
+ "You start to remove electronics from the airlock assembly...")
if(do_after(user, 40))
if( src.state != 2 )
return
- user << " You've removed the airlock electronics."
+ user << " You remove the airlock electronics."
src.state = 1
src.name = "wired airlock assembly"
var/obj/item/weapon/airlock_electronics/ae
@@ -563,11 +563,11 @@ obj/structure/door_assembly/New()
if(G.get_amount() >= 1)
if(G.type == /obj/item/stack/sheet/rglass)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] adds [G.name] to the airlock assembly.", \
- "You start to install [G.name] into the airlock assembly.")
+ user.visible_message("[user] adds [G.name] to the airlock assembly.", \
+ "You start to install [G.name] into the airlock assembly...")
if(do_after(user, 40))
if(G.get_amount() < 1 || mineral) return
- user << "You've installed reinforced glass windows into the airlock assembly."
+ user << "You install reinforced glass windows into the airlock assembly."
G.use(1)
mineral = "glass"
name = "near finished window airlock assembly"
@@ -587,11 +587,11 @@ obj/structure/door_assembly/New()
var/M = G.sheettype
if(G.get_amount() >= 2)
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] adds [G.name] to the airlock assembly.", \
- "You start to install [G.name] into the airlock assembly.")
+ user.visible_message("[user] adds [G.name] to the airlock assembly.", \
+ "You start to install [G.name] into the airlock assembly...")
if(do_after(user, 40))
if(G.get_amount() < 2 || mineral) return
- user << "You've installed [M] plating into the airlock assembly."
+ user << "You install [M] plating into the airlock assembly."
G.use(2)
mineral = "[M]"
name = "near finished [M] airlock assembly"
@@ -602,12 +602,12 @@ obj/structure/door_assembly/New()
else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 )
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user.visible_message("[user] finishes the airlock.", \
- "You start finishing the airlock.")
+ user.visible_message("[user] finishes the airlock.", \
+ "You start finishing the airlock...")
if(do_after(user, 40))
if(src.loc && state == 2)
- user << " You've finished the airlock."
+ user << " You finish the airlock."
var/obj/machinery/door/airlock/door
if(mineral == "glass")
door = new src.glass_type( src.loc )
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index 36b14829157..d3fc4a8b3da 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -49,10 +49,10 @@
s.start()
if(buckled_mob)
buckled_mob.burn_skin(85)
- buckled_mob << "You feel a deep shock course through your body!"
+ buckled_mob << "You feel a deep shock course through your body!"
sleep(1)
buckled_mob.burn_skin(85)
- visible_message("The electric chair went off!", "You hear a deep sharp shock!")
+ visible_message("The electric chair went off!", "You hear a deep sharp shock!")
A.power_light = light
A.updateicon()
diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm
index 45ca0a7748b..091dc25d6d0 100644
--- a/code/game/objects/structures/false_walls.dm
+++ b/code/game/objects/structures/false_walls.dm
@@ -97,7 +97,7 @@
/obj/structure/falsewall/attackby(obj/item/weapon/W, mob/user, params)
if(opening)
- user << "You must wait until the door has stopped moving."
+ user << "You must wait until the door has stopped moving!"
return
if(density)
@@ -109,7 +109,7 @@
if (!istype(T, /turf/simulated/floor))
user << "[src] bolts must be tightened on the floor!"
return
- user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
+ user.visible_message("[user] tightens some bolts on the wall.", "You tighten the bolts on the wall.")
ChangeToWall()
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
@@ -131,7 +131,7 @@
dismantle(user)
/obj/structure/falsewall/proc/dismantle(mob/user)
- user.visible_message("[user] dismantles the false wall.", "You dismantle the false wall.")
+ user.visible_message("[user] dismantles the false wall.", "You dismantle the false wall.")
new /obj/structure/girder/displaced(loc)
if(mineral == "metal")
if(istype(src, /obj/structure/falsewall/reinforced))
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index 43533768603..79fda3eda5c 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -40,8 +40,8 @@
user.do_attack_animation(src)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("[user] hits [src].", \
- "You hit [src].", \
- "You hear twisting metal.")
+ "You hit [src].", \
+ "You hear twisting metal.")
if(shock(user, 70))
return
@@ -55,8 +55,8 @@
user.changeNext_move(CLICK_CD_MELEE)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("[user] mangles [src].", \
- "You mangle [src].", \
- "You hear twisting metal.")
+ "You mangle [src].", \
+ "You hear twisting metal.")
if(!shock(user, 70))
health -= 5
@@ -70,8 +70,8 @@
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
user.visible_message("[user] smashes against [src].", \
- "You smash against [src].", \
- "You hear twisting metal.")
+ "You smash against [src].", \
+ "You hear twisting metal.")
health -= rand(1,2)
healthcheck()
@@ -83,8 +83,8 @@
M.do_attack_animation(src)
playsound(loc, 'sound/effects/grillehit.ogg', 80, 1)
M.visible_message("[M] smashes against [src].", \
- "You smash against [src].", \
- "You hear twisting metal.")
+ "You smash against [src].", \
+ "You hear twisting metal.")
health -= M.melee_damage_upper
healthcheck()
@@ -145,7 +145,7 @@
playsound(loc, 'sound/items/Screwdriver.ogg', 100, 1)
anchored = !anchored
user.visible_message("[user] [anchored ? "fastens" : "unfastens"] [src].", \
- "You have [anchored ? "fastened [src] to" : "unfastened [src] from"] the floor.")
+ "You [anchored ? "fasten [src] to" : "unfasten [src] from"] the floor.")
return
else if(istype(W, /obj/item/stack/rods) && destroyed)
var/obj/item/stack/rods/R = W
@@ -164,16 +164,16 @@
if (!destroyed)
var/obj/item/stack/ST = W
if (ST.get_amount() < 2)
- user << "You need at least two sheets of glass for that."
+ user << "You need at least two sheets of glass for that!"
return
var/dir_to_set = SOUTHWEST
if(!anchored)
- user << "[src] needs to be fastened to the floor first."
+ user << "[src] needs to be fastened to the floor first!"
return
for(var/obj/structure/window/WINDOW in loc)
- user << "There is already a window there."
+ user << "There is already a window there!"
return
- user << "You start placing the window."
+ user << "You start placing the window..."
if(do_after(user,20))
if(!src.loc || !anchored) //Grille destroyed or unanchored while waiting
return
diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm
index 3de876924ca..7a677e8fa42 100644
--- a/code/game/objects/structures/janicart.dm
+++ b/code/game/objects/structures/janicart.dm
@@ -37,7 +37,7 @@
/obj/structure/janitorialcart/attackby(obj/item/I, mob/user, params)
- var/fail_msg = "There is already one of those in [src]."
+ var/fail_msg = "There is already one of those in [src]!"
if(istype(I, /obj/item/weapon/mop))
var/obj/item/weapon/mop/m=I
@@ -74,11 +74,11 @@
signs++
update_icon()
else
- user << "[src] can't hold any more signs."
+ user << "[src] can't hold any more signs!"
else if(mybag)
mybag.attackby(I, user)
else if(istype(I, /obj/item/weapon/crowbar))
- user.visible_message("[user] begins to empty the contents of [src].")
+ user.visible_message("[user] begins to empty the contents of [src].", "You begin to empty the contents of [src]...")
if(do_after(user, 30))
usr << "You empty the contents of [src]'s bucket onto the floor."
reagents.reaction(src.loc)
diff --git a/code/game/objects/structures/kitchen_spike.dm b/code/game/objects/structures/kitchen_spike.dm
index 9df1aa4ef93..4cd8cae36e3 100644
--- a/code/game/objects/structures/kitchen_spike.dm
+++ b/code/game/objects/structures/kitchen_spike.dm
@@ -88,45 +88,45 @@
if(src.skin >= 1)
src.skin--
new /obj/item/stack/sheet/animalhide/monkey(src.loc)
- user << "You remove the hide from the monkey!"
+ user << "You remove the hide from the monkey."
else if(src.meat > 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey(src.loc )
- usr << "You remove some meat from the monkey."
+ usr << "You remove some meat from the monkey."
else if(src.meat == 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/monkey(src.loc)
- usr << "You remove the last piece of meat from the monkey!"
+ usr << "You remove the last piece of meat from the monkey."
src.icon_state = "spike"
src.occupied = 0
else if(src.meattype == MEATTYPE_ALIEN && src.skintype == SKINTYPE_ALIEN)
if(src.skin >= 1)
src.skin--
new /obj/item/stack/sheet/animalhide/xeno(src.loc)
- user << "You remove the hide from the alien!"
+ user << "You remove the hide from the alien."
else if(src.meat > 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/xeno(src.loc )
- usr << "You remove some meat from the alien."
+ usr << "You remove some meat from the alien."
else if(src.meat == 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/xeno(src.loc)
- usr << "You remove the last piece of meat from the alien!"
+ usr << "You remove the last piece of meat from the alien."
src.icon_state = "spike"
src.occupied = 0
else if(src.meattype == MEATTYPE_BEAR && src.skintype == SKINTYPE_BEAR)
if(src.skin >= 1)
src.skin--
new /obj/item/clothing/head/bearpelt(src.loc)
- user << "You remove the hide from the bear!"
+ user << "You remove the hide from the bear."
else if(src.meat > 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/bear(src.loc )
- usr << "You remove some meat from the bear."
+ usr << "You remove some meat from the bear."
else if(src.meat == 1)
src.meat--
new /obj/item/weapon/reagent_containers/food/snacks/meat/slab/bear(src.loc)
- usr << "You remove the last piece of meat from the bear!"
+ usr << "You remove the last piece of meat from the bear."
src.icon_state = "spike"
src.occupied = 0
diff --git a/code/game/objects/structures/ladders.dm b/code/game/objects/structures/ladders.dm
index dfcb2f58270..98e64467ee0 100644
--- a/code/game/objects/structures/ladders.dm
+++ b/code/game/objects/structures/ladders.dm
@@ -40,27 +40,27 @@
if(up && down)
switch( alert("Go up or down the ladder?", "Ladder", "Up", "Down", "Cancel") )
if("Up")
- user.visible_message("[user] climbs up \the [src]!", \
- "You climb up \the [src]!")
+ user.visible_message("[user] climbs up \the [src].", \
+ "You climb up \the [src].")
user.loc = get_turf(up)
up.add_fingerprint(user)
if("Down")
- user.visible_message("[user] climbs down \the [src]!", \
- "You climb down \the [src]!")
+ user.visible_message("[user] climbs down \the [src].", \
+ "You climb down \the [src].")
user.loc = get_turf(down)
down.add_fingerprint(user)
if("Cancel")
return
else if(up)
- user.visible_message("[user] climbs up \the [src]!", \
- "You climb up \the [src]!")
+ user.visible_message("[user] climbs up \the [src].", \
+ "You climb up \the [src].")
user.loc = get_turf(up)
up.add_fingerprint(user)
else if(down)
- user.visible_message("[user] climbs down \the [src]!", \
- "You climb down \the [src]!")
+ user.visible_message("[user] climbs down \the [src].", \
+ "You climb down \the [src].")
user.loc = get_turf(down)
down.add_fingerprint(user)
diff --git a/code/game/objects/structures/lamarr_cage.dm b/code/game/objects/structures/lamarr_cage.dm
index 3a191773127..7178f8c35ac 100644
--- a/code/game/objects/structures/lamarr_cage.dm
+++ b/code/game/objects/structures/lamarr_cage.dm
@@ -75,8 +75,8 @@
if (src.destroyed)
return
else
- user.visible_message("[user] kicks the lab cage.", \
- "You kick the lab cage.")
+ user.visible_message("[user] kicks the lab cage.", \
+ "You kick the lab cage.")
src.health -= 2
healthcheck()
return
diff --git a/code/game/objects/structures/mineral_doors.dm b/code/game/objects/structures/mineral_doors.dm
index 01dd4848f2b..49537016514 100644
--- a/code/game/objects/structures/mineral_doors.dm
+++ b/code/game/objects/structures/mineral_doors.dm
@@ -125,13 +125,13 @@
/obj/structure/mineral_door/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W,/obj/item/weapon/pickaxe))
var/obj/item/weapon/pickaxe/digTool = W
- user << "You start digging the [name]."
+ user << "You start digging the [name]..."
if(do_after(user,digTool.digspeed*hardness) && src)
- user << "You finished digging."
+ user << "You finish digging."
Dismantle()
else if(istype(W,/obj/item/weapon)) //not sure, can't not just weapons get passed to this proc?
hardness -= W.force/100
- user << "You hit the [name] with your [W.name]!"
+ user << "You hit the [name] with your [W.name]!"
CheckHardness()
else
attack_hand(user)
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 050f225a6b4..3776b5306e2 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -65,7 +65,7 @@
return
if(prob(I.force * 2))
- visible_message("[user] smashes [src] with [I]!")
+ visible_message("[user] smashes [src] with [I].")
shatter()
else
visible_message("[user] hits [src] with [I]!")
diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm
index 623cb4c6c5b..526e9e3f028 100644
--- a/code/game/objects/structures/morgue.dm
+++ b/code/game/objects/structures/morgue.dm
@@ -164,11 +164,11 @@ var/global/list/crematoriums = new/list()
return //don't let you cremate something twice or w/e
if(contents.len <= 1)
- audible_message("You hear a hollow crackle.")
+ audible_message("You hear a hollow crackle.")
return
else
- audible_message("You hear a roar as the crematorium activates.")
+ audible_message("You hear a roar as the crematorium activates.")
locked = 1
update_icon()
@@ -243,7 +243,7 @@ Crematorium Switch
connected.close()
add_fingerprint(user)
else
- user << "That's not connected to anything."
+ user << "That's not connected to anything!"
/obj/structure/tray/MouseDrop_T(atom/movable/O as mob|obj, mob/user as mob)
if(!istype(O, /atom/movable) || O.anchored || !Adjacent(user) || !user.Adjacent(O) || O.loc == user)
@@ -259,7 +259,7 @@ Crematorium Switch
return
O.loc = src.loc
if (user != O)
- visible_message("[user] stuffs [O] into [src]!")
+ visible_message("[user] stuffs [O] into [src].")
return
/*
diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm
index 2324c724ed4..9a2a5da2cee 100644
--- a/code/game/objects/structures/musician.dm
+++ b/code/game/objects/structures/musician.dm
@@ -330,7 +330,7 @@
/obj/structure/piano/attack_hand(mob/user as mob)
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 1
interact(user)
@@ -352,8 +352,8 @@
if (do_after(user, 20))
user.visible_message( \
"[user] tightens \the [src]'s casters.", \
- " You have tightened \the [src]'s casters. Now it can be played again.", \
- "You hear ratchet.")
+ " You tighten \the [src]'s casters. Now it can be played again.", \
+ "You hear ratchet.")
anchored = 1
else if(anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
@@ -361,8 +361,8 @@
if (do_after(user, 40))
user.visible_message( \
"[user] loosens \the [src]'s casters.", \
- " You have loosened \the [src]. Now it can be pulled somewhere else.", \
- "You hear ratchet.")
+ " You loosen \the [src]. Now it can be pulled somewhere else.", \
+ "You hear ratchet.")
anchored = 0
else
..()
diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm
index 392dc05693f..1676e9ae16c 100644
--- a/code/game/objects/structures/safe.dm
+++ b/code/game/objects/structures/safe.dm
@@ -42,11 +42,11 @@ FLOOR SAFES
/obj/structure/safe/proc/check_unlocked(mob/user as mob, canhear)
if(user && canhear)
if(tumbler_1_pos == tumbler_1_open)
- user << "You hear a [pick("tonk", "krunk", "plunk")] from [src]."
+ user << "You hear a [pick("tonk", "krunk", "plunk")] from [src]."
if(tumbler_2_pos == tumbler_2_open)
- user << "You hear a [pick("tink", "krink", "plink")] from [src]."
+ user << "You hear a [pick("tink", "krink", "plink")] from [src]."
if(tumbler_1_pos == tumbler_1_open && tumbler_2_pos == tumbler_2_open)
- if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!")
+ if(user) visible_message("[pick("Spring", "Sprang", "Sproing", "Clunk", "Krunk")]!")
return 1
return 0
@@ -101,7 +101,7 @@ FLOOR SAFES
updateUsrDialog()
return
else
- user << "You can't [open ? "close" : "open"] [src], the lock is engaged!"
+ user << "You can't [open ? "close" : "open"] [src], the lock is engaged!"
return
if(href_list["decrement"])
@@ -109,11 +109,11 @@ FLOOR SAFES
if(dial == tumbler_1_pos + 1 || dial == tumbler_1_pos - 71)
tumbler_1_pos = decrement(tumbler_1_pos)
if(canhear)
- user << "You hear a [pick("clack", "scrape", "clank")] from [src]."
+ user << "You hear a [pick("clack", "scrape", "clank")] from [src]."
if(tumbler_1_pos == tumbler_2_pos + 37 || tumbler_1_pos == tumbler_2_pos - 35)
tumbler_2_pos = decrement(tumbler_2_pos)
if(canhear)
- user << "You hear a [pick("click", "chink", "clink")] from [src]."
+ user << "You hear a [pick("click", "chink", "clink")] from [src]."
check_unlocked(user, canhear)
updateUsrDialog()
return
@@ -123,11 +123,11 @@ FLOOR SAFES
if(dial == tumbler_1_pos - 1 || dial == tumbler_1_pos + 71)
tumbler_1_pos = increment(tumbler_1_pos)
if(canhear)
- user << "You hear a [pick("clack", "scrape", "clank")] from [src]."
+ user << "You hear a [pick("clack", "scrape", "clank")] from [src]."
if(tumbler_1_pos == tumbler_2_pos - 37 || tumbler_1_pos == tumbler_2_pos + 35)
tumbler_2_pos = increment(tumbler_2_pos)
if(canhear)
- user << "You hear a [pick("click", "chink", "clink")] from [src]."
+ user << "You hear a [pick("click", "chink", "clink")] from [src]."
check_unlocked(user, canhear)
updateUsrDialog()
return
@@ -147,7 +147,7 @@ FLOOR SAFES
if(I.w_class + space <= maxspace)
space += I.w_class
if(!user.drop_item())
- user << "\The [I] is stuck to your hand, you cannot put it in the safe!"
+ user << "\The [I] is stuck to your hand, you cannot put it in the safe!"
return
I.loc = src
user << "You put [I] in [src]."
@@ -158,7 +158,7 @@ FLOOR SAFES
return
else
if(istype(I, /obj/item/clothing/tie/stethoscope))
- user << "Hold [I] in one of your hands while you manipulate the dial."
+ user << "Hold [I] in one of your hands while you manipulate the dial!"
return
diff --git a/code/game/objects/structures/statues.dm b/code/game/objects/structures/statues.dm
index 3efe4925963..86ec583212d 100644
--- a/code/game/objects/structures/statues.dm
+++ b/code/game/objects/structures/statues.dm
@@ -22,60 +22,60 @@
if(istype(W, /obj/item/weapon/wrench))
if(anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user.visible_message("[user] is loosening the [name]'s bolts...", \
+ user.visible_message("[user] is loosening the [name]'s bolts.", \
"You are loosening the [name]'s bolts...")
if(do_after(user,40))
if(!src.loc || !anchored)
return
- user.visible_message("[user] loosened the [name]'s bolts!", \
- "You loosened the [name]'s bolts!")
+ user.visible_message("[user] loosened the [name]'s bolts!", \
+ "You loosen the [name]'s bolts!")
anchored = 0
else
if (!istype(src.loc, /turf/simulated/floor))
- user.visible_message("A floor must be present to secure the [name]!")
+ user.visible_message("A floor must be present to secure the [name]!")
return
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user.visible_message("[user] is securing the [name]'s bolts...", \
+ user.visible_message("[user] is securing the [name]'s bolts...", \
"You are securing the [name]'s bolts...")
if(do_after(user, 40))
if(!src.loc || anchored)
return
- user.visible_message("[user] has secured the [name]'s bolts!", \
- "You have secured the [name]'s bolts!")
+ user.visible_message("[user] has secured the [name]'s bolts.", \
+ "You have secured the [name]'s bolts.")
anchored = 1
else if(istype(W, /obj/item/weapon/gun/energy/plasmacutter))
- user.visible_message("[user] is slicing apart the [name]...", \
+ user.visible_message("[user] is slicing apart the [name]...", \
"You are slicing apart the [name]...")
if(do_after(user,30))
if(!src.loc)
return
- user.visible_message("[user] slices apart the [name]!", \
- "You slice apart the [name]!")
+ user.visible_message("[user] slices apart the [name].", \
+ "You slice apart the [name].")
Dismantle(1)
else if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
if(!D.bcell.use(D.drillcost))
- user << "Your [D.name] doesn't have enough power to break through the [name]."
+ user << "Your [D.name] doesn't have enough power to break through the [name]!"
return
D.update_icon()
if(!src.loc)
return
- user.visible_message("[user] destroys the [name]!", \
- "You destroy the [name]!")
+ user.visible_message("[user] destroys the [name]!", \
+ "You destroy the [name].")
D.playDigSound()
qdel(src)
else if(istype(W, /obj/item/weapon/weldingtool) && !anchored)
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
- user.visible_message("[user] is slicing apart the [name]...", \
+ user.visible_message("[user] is slicing apart the [name].", \
"You are slicing apart the [name]...")
if(do_after(user, 40))
if(!src.loc)
return
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
- user.visible_message("[user] slices apart the [name]!", \
+ user.visible_message("[user] slices apart the [name].", \
"You slice apart the [name]!")
Dismantle(1)
@@ -87,7 +87,7 @@
/obj/structure/statue/attack_hand(mob/living/user as mob)
user.changeNext_move(CLICK_CD_MELEE)
add_fingerprint(user)
- user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
+ user.visible_message("[user] rubs some dust off from the [name]'s surface.", \
"You rub some dust off from the [name]'s surface.")
/obj/structure/statue/CanAtmosPass()
diff --git a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
index 91b89fb8637..4673fcfeb40 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/alien_nests.dm
@@ -12,14 +12,14 @@
var/mob/living/M = buckled_mob
if(M != user)
M.visible_message(\
- "[user.name] pulls [M.name] free from the sticky nest!",\
+ "[user.name] pulls [M.name] free from the sticky nest!",\
"[user.name] pulls you free from the gelatinous resin.",\
- "You hear squelching...")
+ "You hear squelching...")
else
M.visible_message(\
"[M.name] struggles to break free from the gelatinous resin!",\
- "You struggle to break free from the gelatinous resin. (Stay still for two minutes.)",\
- "You hear squelching...")
+ "You struggle to break free from the gelatinous resin... (Stay still for two minutes.)",\
+ "You hear squelching...")
if(!do_after(M, 1200))
if(M && M.buckled)
M << "You fail to unbuckle yourself!"
@@ -28,8 +28,8 @@
return
M.visible_message(\
"[M.name] breaks free from the gelatinous resin!",\
- "You break free from the gelatinous resin!",\
- "You hear squelching...")
+ "You break free from the gelatinous resin!",\
+ "You hear squelching...")
unbuckle_mob()
add_fingerprint(user)
@@ -47,9 +47,9 @@
if(buckle_mob(M))
M.visible_message(\
- "[user.name] secretes a thick vile goo, securing [M.name] into [src]!",\
- "[user.name] drenches you in a foul-smelling resin, trapping you in [src]!",\
- "You hear squelching...")
+ "[user.name] secretes a thick vile goo, securing [M.name] into [src]!",\
+ "[user.name] drenches you in a foul-smelling resin, trapping you in [src]!",\
+ "You hear squelching...")
/obj/structure/stool/bed/nest/post_buckle_mob(mob/living/M)
if(M == buckled_mob)
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 950e27b42eb..af9c059a8f7 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -92,7 +92,7 @@
return
if(buckled_mob)
return 0
- visible_message("[usr] collapses \the [src.name].")
+ usr.visible_message("[usr] collapses \the [src.name].", "You collapse \the [src.name].")
new/obj/item/roller(get_turf(src))
qdel(src)
return
@@ -114,7 +114,7 @@
if(loaded)
var/obj/structure/stool/bed/roller/R = loaded
R.loc = user.loc
- user.visible_message("[user] deploys [loaded].")
+ user.visible_message("[user] deploys [loaded].", "You deploy [loaded].")
loaded = null
else
user << "The dock is empty!"
@@ -124,7 +124,7 @@
if(!proximity)
return
if(loaded)
- user << "You already have a roller bed docked!"
+ user << "You already have a roller bed docked!"
return
var/obj/structure/stool/bed/roller/R = target
@@ -133,6 +133,6 @@
loaded = target
target.loc = src
- user.visible_message("[user] collects [loaded].")
+ user.visible_message("[user] collects [loaded].", "You collect [loaded].")
..()
diff --git a/code/game/objects/structures/table_frames.dm b/code/game/objects/structures/table_frames.dm
index ed6433552c7..4e44968971b 100644
--- a/code/game/objects/structures/table_frames.dm
+++ b/code/game/objects/structures/table_frames.dm
@@ -22,7 +22,7 @@
/obj/structure/table_frame/attackby(var/obj/item/I, mob/user, params)
if(istype(I, /obj/item/weapon/wrench))
- user << "Now disassembling [src]."
+ user << "You start disassembling [src]..."
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 30))
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
@@ -32,7 +32,7 @@
return
if(istype(I, /obj/item/stack/sheet/plasteel))
var/obj/item/stack/sheet/plasteel/P = I
- user << "Now adding [P] to [src]."
+ user << "You start adding [P] to [src]..."
if(do_after(user, 50))
new /obj/structure/table/reinforced(src.loc)
qdel(src)
@@ -40,7 +40,7 @@
return
if(istype(I, /obj/item/stack/sheet/metal))
var/obj/item/stack/sheet/metal/M = I
- user << "Now adding [M] to [src]."
+ user << "You start adding [M] to [src]..."
if(do_after(user, 20))
new /obj/structure/table(src.loc)
qdel(src)
@@ -48,7 +48,7 @@
return
if(istype(I, /obj/item/stack/sheet/glass))
var/obj/item/stack/sheet/glass/G = I
- user << "Now adding [G] to [src]."
+ user << "You start adding [G] to [src]..."
if(do_after(user, 20))
new /obj/structure/table/glass(src.loc)
qdel(src)
@@ -71,7 +71,7 @@
..()
if(istype(I, /obj/item/stack/sheet/mineral/wood))
var/obj/item/stack/sheet/mineral/wood/W = I
- user << "Now adding [W] to [src]."
+ user << "You start adding [W] to [src]..."
if(do_after(user, 20))
new /obj/structure/table/wood(src.loc)
qdel(src)
@@ -79,7 +79,7 @@
return
if(istype(I, /obj/item/stack/tile/carpet))
var/obj/item/stack/tile/carpet/C = I
- user << "Now adding [C] to [src]."
+ user << "You start adding [C] to [src]..."
if(do_after(user, 20))
new /obj/structure/table/wood/poker(src.loc)
qdel(src)
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 9b751df0eb3..d7d6b0ddc24 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -222,7 +222,7 @@
user.changeNext_move(CLICK_CD_MELEE)
if(tableclimber && tableclimber != user)
tableclimber.Weaken(2)
- tableclimber.visible_message("[tableclimber.name] has been knocked off the table", "You've been knocked off the table", "You see [tableclimber.name] get knocked off the table")
+ tableclimber.visible_message("[tableclimber.name] has been knocked off the table", "You're knocked off the table!", "You see [tableclimber.name] get knocked off the table")
/obj/structure/table/attack_tk() // no telehulk sorry
@@ -307,7 +307,7 @@
for(var/obj/item/C in oldContents)
C.loc = src.loc
- user.visible_message("[user] empties [I] on [src].")
+ user.visible_message("[user] empties [I] on [src].")
return
// If the tray IS empty, continue on (tray will be placed on the table like other items)
@@ -345,7 +345,7 @@
return
if(destroy_type == TBL_DISASSEMBLE)
- user << "Now disassembling [src]."
+ user << "You start disassembling [src]..."
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
if(do_after(user, 20))
new frame(src.loc)
@@ -355,7 +355,7 @@
return
if(destroy_type == TBL_DECONSTRUCT)
- user << "Now deconstructing [src]."
+ user << "You start deconstructing [src]..."
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 40))
for(var/i = 1, i <= framestackamount, i++)
@@ -374,7 +374,7 @@
/obj/structure/table/proc/climb_table(mob/user)
src.add_fingerprint(user)
user.visible_message("[user] starts climbing onto [src].", \
- "You start climbing onto [src].")
+ "You start climbing onto [src]...")
var/climb_time = 20
if(user.restrained()) //Table climbing takes twice as long when restrained.
climb_time *= 2
@@ -454,18 +454,18 @@
var/obj/item/weapon/weldingtool/WT = W
if(WT.remove_fuel(0, user))
if(src.status == 2)
- user << "Now weakening the reinforced table"
+ user << "You start weakening the reinforced table..."
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
if (do_after(user, 50))
if(!src || !WT.isOn()) return
- user << "Table weakened"
+ user << "You weaken the table."
src.status = 1
else
- user << "Now strengthening the reinforced table"
+ user << "You start strengthening the reinforced table..."
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
if (do_after(user, 50))
if(!src || !WT.isOn()) return
- user << "Table strengthened"
+ user << "You strengthen the table."
src.status = 2
return
..()
@@ -534,7 +534,7 @@
if(isrobot(user))
return
if(!user.drop_item())
- user << "\The [O] is stuck to your hand, you cannot put it in the rack!"
+ user << "\The [O] is stuck to your hand, you cannot put it in the rack!"
return
if (O.loc != src.loc)
step(O, get_dir(O, src))
@@ -549,7 +549,7 @@
if(isrobot(user))
return
if(!user.drop_item())
- user << "\The [W] is stuck to your hand, you cannot put it in the rack!"
+ user << "\The [W] is stuck to your hand, you cannot put it in the rack!"
return
W.Move(loc)
return 1
@@ -568,20 +568,20 @@
user.do_attack_animation(src)
playsound(loc, 'sound/items/dodgeball.ogg', 80, 1)
user.visible_message("[user] kicks [src].", \
- "You kick [src].")
+ "You kick [src].")
health -= rand(1,2)
healthcheck()
/obj/structure/rack/attack_alien(mob/living/user)
user.do_attack_animation(src)
- visible_message("[user] slices [src] apart!")
+ visible_message("[user] slices [src] apart.")
rack_destroy()
/obj/structure/rack/attack_animal(mob/living/simple_animal/user)
if(user.environment_smash)
user.do_attack_animation(src)
- visible_message("[user] smashes [src] apart!")
+ visible_message("[user] smashes [src] apart.")
rack_destroy()
/obj/structure/rack/attack_tk() // no telehulk sorry
return
@@ -615,7 +615,7 @@
return
/obj/item/weapon/rack_parts/attack_self(mob/user as mob)
- user << "Constructing rack..."
+ user << "You start constructing rack..."
if (do_after(user, 50))
var/obj/structure/rack/R = new /obj/structure/rack( user.loc )
R.add_fingerprint(user)
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index b14dbcdb764..da9c57601e3 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -36,7 +36,7 @@
/obj/structure/dispenser/attack_hand(mob/user as mob)
if(!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 1
user.set_machine(src)
var/dat = "[src]
"
diff --git a/code/game/objects/structures/target_stake.dm b/code/game/objects/structures/target_stake.dm
index 15405604004..e1d8952d518 100644
--- a/code/game/objects/structures/target_stake.dm
+++ b/code/game/objects/structures/target_stake.dm
@@ -30,7 +30,7 @@
W.loc = loc
W.layer = 3.1
pinned_target = W
- user << "You slide the target into the stake."
+ user << "You slide the target into the stake."
return
/obj/structure/target_stake/attack_hand(mob/user as mob)
@@ -44,9 +44,9 @@
if(ishuman(user))
if(!user.get_active_hand())
user.put_in_hands(pinned_target)
- user << "You take the target out of the stake."
+ user << "You take the target out of the stake."
else
pinned_target.loc = get_turf(user)
- user << "You take the target out of the stake."
+ user << "You take the target out of the stake."
pinned_target = null
diff --git a/code/game/objects/structures/transit_tubes/station.dm b/code/game/objects/structures/transit_tubes/station.dm
index 949f192ecc7..cbc1fbb529a 100644
--- a/code/game/objects/structures/transit_tubes/station.dm
+++ b/code/game/objects/structures/transit_tubes/station.dm
@@ -54,7 +54,7 @@
T.add_fingerprint(user)
T.loc = src.loc
T.dir = turn(src.dir, -90)
- user.visible_message("[user] inserts the [R].", "You insert the [R].")
+ user.visible_message("[user] inserts the [R].", "You insert the [R].")
qdel(R)
@@ -67,7 +67,7 @@
else if(icon_state == "open")
if(pod.contents.len && user.loc != pod)
- user.visible_message("[user] starts emptying [pod]'s contents onto the floor!")
+ user.visible_message("[user] starts emptying [pod]'s contents onto the floor.", "You start emptying [pod]'s contents onto the floor...")
if(do_after(user, 10)) //So it doesn't default to close_animation() on fail
if(pod.loc == loc)
for(var/atom/movable/AM in pod)
@@ -96,9 +96,9 @@
if(istype(W, /obj/item/weapon/crowbar))
for(var/obj/structure/transit_tube_pod/pod in loc)
if(pod.contents)
- user << "Empty the pod first."
+ user << "Empty the pod first!"
return
- user.visible_message("[user] removes the [pod].", "You remove the [pod].")
+ user.visible_message("[user] removes the [pod].", "You remove the [pod].")
var/obj/structure/c_transit_tube_pod/R = new/obj/structure/c_transit_tube_pod(src.loc)
pod.transfer_fingerprints_to(R)
R.add_fingerprint(user)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube.dm b/code/game/objects/structures/transit_tubes/transit_tube.dm
index bdee679770d..3db04c5088a 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube.dm
@@ -42,12 +42,12 @@ obj/structure/transit_tube/ex_act(severity, target)
if(istype(W, /obj/item/weapon/wrench))
if(copytext(icon_state, 1, 3) != "D-") //decorative diagonals cannot be unwrenched directly
for(var/obj/structure/transit_tube_pod/pod in src.loc)
- user << "Remove the pod first."
+ user << "Remove the pod first!"
return
- user.visible_message("[user] starts to deattach \the [src]!", "You start deattaching the [name]...")
+ user.visible_message("[user] starts to deattach \the [src].", "You start to deattach the [name]...")
playsound(src.loc, 'sound/items/Ratchet.ogg', 50, 1)
if(do_after(user, 35))
- user << "You deattach the [name]!"
+ user << "You deattach the [name]."
var/obj/structure/R = new tube_construction(src.loc)
R.icon_state = src.icon_state
src.transfer_fingerprints_to(R)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
index aa13ac145fc..cb47c7c4e15 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_construction.dm
@@ -83,7 +83,7 @@
src.add_fingerprint(user)
if(do_after(user, 40))
if(!src) return
- user << "You attach the [name]!"
+ user << "You attach the [name]."
var/obj/structure/transit_tube/R = src.buildtube()
src.transfer_fingerprints_to(R)
qdel(src)
diff --git a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
index 645a121e168..b686464321e 100644
--- a/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
+++ b/code/game/objects/structures/transit_tubes/transit_tube_pod.dm
@@ -31,7 +31,7 @@
for(var/obj/structure/transit_tube/station/T in loc)
return
if(src.contents.len)
- user.visible_message("[user] empties \the [src].", "You empty \the [src].")
+ user.visible_message("[user] empties \the [src].", "You empty \the [src].")
src.empty()
return
else
@@ -46,7 +46,7 @@
if(!moving)
user.changeNext_move(CLICK_CD_BREAKOUT)
user.last_special = world.time + CLICK_CD_BREAKOUT
- user << "You start trying to escape from the pod."
+ user << "You start trying to escape from the pod..."
if(do_after(user, 600))
user << "You manage to open the pod."
src.empty()
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 2971a867071..69e34eab25a 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -20,7 +20,7 @@
if(swirlie)
user.changeNext_move(CLICK_CD_MELEE)
playsound(src.loc, "swing_hit", 25, 1)
- swirlie.visible_message("[user] slams the toilet seat onto [swirlie]'s head!", "[user] slams the toilet seat onto [swirlie]'s head!", "You hear reverberating porcelain.")
+ swirlie.visible_message("[user] slams the toilet seat onto [swirlie]'s head!", "[user] slams the toilet seat onto [swirlie]'s head!", "You hear reverberating porcelain.")
swirlie.adjustBruteLoss(5)
return
@@ -48,10 +48,10 @@
/obj/structure/toilet/attackby(obj/item/I, mob/living/user, params)
if(istype(I, /obj/item/weapon/crowbar))
- user << "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]."
+ user << "You start to [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]..."
playsound(loc, 'sound/effects/stonedoor_openclose.ogg', 50, 1)
if(do_after(user, 30))
- user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", "You hear grinding porcelain.")
+ user.visible_message("[user] [cistern ? "replaces the lid on the cistern" : "lifts the lid off the cistern"]!", "You [cistern ? "replace the lid on the cistern" : "lift the lid off the cistern"]!", "You hear grinding porcelain.")
cistern = !cistern
update_icon()
return
@@ -65,14 +65,14 @@
var/mob/living/GM = G.affecting
if(G.state >= GRAB_AGGRESSIVE)
if(GM.loc != get_turf(src))
- user << "[GM] needs to be on [src]."
+ user << "[GM] needs to be on [src]!"
return
if(!swirlie)
if(open)
- GM.visible_message("[user] starts to give [GM] a swirlie!", "[user] starts to give [GM] a swirlie!")
+ GM.visible_message("[user] starts to give [GM] a swirlie!", "[user] starts to give [GM] a swirlie...")
swirlie = GM
if(do_after(user, 30, 5, 0))
- GM.visible_message("[user] gives [GM] a swirlie!", "[user] gives [GM] a swirlie!", "You hear a toilet flushing.")
+ GM.visible_message("[user] gives [GM] a swirlie!", "[user] gives [GM] a swirlie!", "You hear a toilet flushing.")
if(iscarbon(GM))
var/mob/living/carbon/C = GM
if(!C.internal)
@@ -85,17 +85,17 @@
GM.visible_message("[user] slams [GM.name] into [src]!", "[user] slams [GM.name] into [src]!")
GM.adjustBruteLoss(5)
else
- user << "You need a tighter grip."
+ user << "You need a tighter grip!"
if(cistern)
if(I.w_class > 3)
- user << "[I] does not fit."
+ user << "[I] does not fit!"
return
if(w_items + I.w_class > 5)
- user << "The cistern is full."
+ user << "The cistern is full!"
return
if(!user.drop_item())
- user << "\The [I] is stuck to your hand, you cannot put it in the cistern!"
+ user << "\The [I] is stuck to your hand, you cannot put it in the cistern!"
return
I.loc = src
w_items += I.w_class
@@ -127,7 +127,7 @@
user.visible_message("[user] slams [GM] into [src]!", "You slam [GM] into [src]!")
GM.adjustBruteLoss(8)
else
- user << "You need a tighter grip."
+ user << "You need a tighter grip!"
/obj/machinery/shower
@@ -171,7 +171,7 @@
if(I.type == /obj/item/device/analyzer)
user << "The water temperature seems to be [watertemp]."
if(istype(I, /obj/item/weapon/wrench))
- user << "You begin to adjust the temperature valve with \the [I]."
+ user << "You begin to adjust the temperature valve with \the [I]..."
if(do_after(user, 50))
switch(watertemp)
if("normal")
@@ -236,7 +236,7 @@
var/mob/living/L = O
L.ExtinguishMob()
L.fire_stacks = -20 //Douse ourselves with water to avoid fire more easily
- L << "You've been drenched in water!"
+ L << "You're drenched in water!"
if(iscarbon(O))
var/mob/living/carbon/M = O
if(M.r_hand)
@@ -363,7 +363,7 @@
user << "Someone's already washing here."
return
- user << "You start washing your hands."
+ user << "You start washing your hands..."
busy = 1
sleep(40)
@@ -372,12 +372,12 @@
if(!Adjacent(user)) return //Person has moved away from the sink
user.clean_blood()
- user.visible_message("[user] washes their hands in [src].")
+ user.visible_message("[user] washes their hands in [src].", "You wash your hands in [src].")
/obj/structure/sink/attackby(obj/item/O, mob/user, params)
if(busy)
- user << "Someone's already washing here."
+ user << "Someone's already washing here!"
return
if(istype(O, /obj/item/weapon/reagent_containers))
@@ -410,7 +410,7 @@
var/obj/item/I = O
if(!I || !istype(I,/obj/item)) return
- usr << "You start washing [I]."
+ usr << "You start washing [I]..."
busy = 1
sleep(40)
@@ -422,7 +422,7 @@
O.clean_blood()
user.visible_message( \
- "[user] washes [I] using [src].", \
+ "[user] washes [I] using [src].", \
"You wash [I] using [src].")
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 9ba3ec15458..1c173316ec3 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -76,12 +76,12 @@ obj/structure/windoor_assembly/Destroy()
if(istype(W, /obj/item/weapon/weldingtool) && !anchored )
var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0,user))
- user.visible_message("[user] dissassembles the windoor assembly.", "You start to dissassemble the windoor assembly.")
+ user.visible_message("[user] disassembles the windoor assembly.", "You start to disassemble the windoor assembly...")
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
if(do_after(user, 40))
if(!src || !WT.isOn()) return
- user << "You dissasembled the windoor assembly!"
+ user << "You disassemble the windoor assembly."
var/obj/item/stack/sheet/rglass/RG = new (get_turf(src), 5)
RG.add_fingerprint(user)
if(secure)
@@ -95,19 +95,19 @@ obj/structure/windoor_assembly/Destroy()
if(istype(W, /obj/item/weapon/wrench) && !anchored)
for(var/obj/machinery/door/window/WD in src.loc)
if(WD.dir == src.dir)
- user << "There is already a windoor in that location."
+ user << "There is already a windoor in that location!"
return
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor.")
+ user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor...")
if(do_after(user, 40))
if(!src || src.anchored)
return
for(var/obj/machinery/door/window/WD in src.loc)
if(WD.dir == src.dir)
- user << "There is already a windoor in that location."
+ user << "There is already a windoor in that location!"
return
- user << "You've secured the windoor assembly!"
+ user << "You secure the windoor assembly."
src.anchored = 1
if(src.secure)
src.name = "secure anchored windoor assembly"
@@ -117,12 +117,12 @@ obj/structure/windoor_assembly/Destroy()
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
else if(istype(W, /obj/item/weapon/wrench) && anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 100, 1)
- user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor.")
+ user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor...")
if(do_after(user, 40))
if(!src || !src.anchored)
return
- user << "You've unsecured the windoor assembly!"
+ user << "You unsecure the windoor assembly."
src.anchored = 0
if(src.secure)
src.name = "secure windoor assembly"
@@ -133,9 +133,9 @@ obj/structure/windoor_assembly/Destroy()
else if(istype(W, /obj/item/stack/sheet/plasteel) && !secure)
var/obj/item/stack/sheet/plasteel/P = W
if(P.amount < 2)
- user << "You need more plasteel to do this."
+ user << "You need more plasteel to do this!"
return
- user << "You start to reinforce the windoor with plasteel."
+ user << "You start to reinforce the windoor with plasteel..."
if(do_after(user,40))
if(!src || secure)
@@ -151,14 +151,14 @@ obj/structure/windoor_assembly/Destroy()
//Adding cable to the assembly. Step 5 complete.
else if(istype(W, /obj/item/stack/cable_coil) && anchored)
- user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly.")
+ user.visible_message("[user] wires the windoor assembly.", "You start to wire the windoor assembly...")
if(do_after(user, 40))
if(!src || !src.anchored || src.state != "01")
return
var/obj/item/stack/cable_coil/CC = W
CC.use(1)
- user << "You wire the windoor!"
+ user << "You wire the windoor."
src.state = "02"
if(src.secure)
src.name = "secure wired windoor assembly"
@@ -172,13 +172,13 @@ obj/structure/windoor_assembly/Destroy()
//Removing wire from the assembly. Step 5 undone.
if(istype(W, /obj/item/weapon/wirecutters))
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
- user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
+ user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly...")
if(do_after(user, 40))
if(!src || src.state != "02")
return
- user << "You cut the windoor wires!"
+ user << "You cut the windoor wires."
new/obj/item/stack/cable_coil(get_turf(user), 1)
src.state = "01"
if(src.secure)
@@ -189,7 +189,7 @@ obj/structure/windoor_assembly/Destroy()
//Adding airlock electronics for access. Step 6 complete.
else if(istype(W, /obj/item/weapon/airlock_electronics))
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly.")
+ user.visible_message("[user] installs the electronics into the airlock assembly.", "You start to install electronics into the airlock assembly...")
user.drop_item()
W.loc = src
@@ -197,7 +197,7 @@ obj/structure/windoor_assembly/Destroy()
if(!src || src.electronics)
W.loc = src.loc
return
- user << "You've installed the airlock electronics!"
+ user << "You install the airlock electronics."
src.name = "near finished windoor assembly"
src.electronics = W
else
@@ -209,12 +209,12 @@ obj/structure/windoor_assembly/Destroy()
return
playsound(src.loc, 'sound/items/Screwdriver.ogg', 100, 1)
- user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly.")
+ user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly...")
if(do_after(user, 40))
if(!src || !electronics)
return
- user << "You've removed the airlock electronics!"
+ user << "You remove the airlock electronics."
src.name = "wired windoor assembly"
var/obj/item/weapon/airlock_electronics/ae
ae = electronics
@@ -235,18 +235,18 @@ obj/structure/windoor_assembly/Destroy()
//Crowbar to complete the assembly, Step 7 complete.
else if(istype(W, /obj/item/weapon/crowbar))
if(!src.electronics)
- usr << "The assembly is missing electronics."
+ usr << "The assembly is missing electronics!"
return
usr << browse(null, "window=windoor_access")
playsound(src.loc, 'sound/items/Crowbar.ogg', 100, 1)
- user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame.")
+ user.visible_message("[user] pries the windoor into the frame.", "You start prying the windoor into the frame...")
if(do_after(user, 40))
if(src.loc && src.electronics)
density = 1 //Shouldn't matter but just incase
- user << "You finish the windoor!"
+ user << "You finish the windoor."
if(secure)
var/obj/machinery/door/window/brigdoor/windoor = new /obj/machinery/door/window/brigdoor(src.loc)
@@ -306,7 +306,7 @@ obj/structure/windoor_assembly/Destroy()
if(usr.stat || !usr.canmove || usr.restrained())
return
if (src.anchored)
- usr << "It is fastened to the floor; therefore, you can't rotate it!"
+ usr << "It is fastened to the floor; therefore, you can't rotate it!"
return 0
//if(src.state != "01")
//update_nearby_tiles(need_rebuild=1) //Compel updates before
@@ -329,11 +329,11 @@ obj/structure/windoor_assembly/Destroy()
return
if(src.facing == "l")
- usr << "The windoor will now slide to the right."
+ usr << "The windoor will now slide to the right."
src.facing = "r"
else
src.facing = "l"
- usr << "The windoor will now slide to the left."
+ usr << "The windoor will now slide to the left."
update_icon()
return
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index 0d0ccf7702e..f773adc6714 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -136,7 +136,7 @@
if(!can_be_reached(user))
return
user.changeNext_move(CLICK_CD_MELEE)
- user.visible_message("[user] knocks on [src].")
+ user.visible_message("[user] knocks on [src].")
add_fingerprint(user)
playsound(loc, 'sound/effects/Glassknock.ogg', 50, 1)
@@ -191,51 +191,51 @@
if(istype(I, /obj/item/weapon/screwdriver))
playsound(loc, 'sound/items/Screwdriver.ogg', 75, 1)
if(reinf && (state == 2 || state == 1))
- user << (state == 2 ? "You begin to unscrew the window from the frame." : "You begin to screw the window to the frame.")
+ user << (state == 2 ? "You begin to unscrew the window from the frame..." : "You begin to screw the window to the frame...")
else if(reinf && state == 0)
- user << (anchored ? "You begin to unscrew the frame from the floor." : "You begin to screw the frame to the floor.")
+ user << (anchored ? "You begin to unscrew the frame from the floor..." : "You begin to screw the frame to the floor...")
else if(!reinf)
- user << (anchored ? "You begin to unscrew the window from the floor." : "You begin to screw the window to the floor.")
+ user << (anchored ? "You begin to unscrew the window from the floor..." : "You begin to screw the window to the floor...")
if(do_after(user, 40))
if(reinf && (state == 1 || state == 2))
//If state was unfastened, fasten it, else do the reverse
state = (state == 1 ? 2 : 1)
- user << (state == 1 ? "You have unfastened the window from the frame." : "You have fastened the window to the frame.")
+ user << (state == 1 ? "You unfasten the window from the frame." : "You fasten the window to the frame.")
else if(reinf && state == 0)
anchored = !anchored
update_nearby_icons()
- user << (anchored ? "You have fastened the frame to the floor." : "You have unfastened the frame from the floor.")
+ user << (anchored ? "You fasten the frame to the floor." : "You unfasten the frame from the floor.")
else if(!reinf)
anchored = !anchored
update_nearby_icons()
- user << (anchored ? "You have fastened the window to the floor." : "You have unfastened the window.")
+ user << (anchored ? "You fasten the window to the floor." : "You unfasten the window.")
else if (istype(I, /obj/item/weapon/crowbar) && reinf && (state == 0 || state == 1))
- user << (state == 0 ? "You begin to lever the window into the frame." : "You begin to lever the window out of the frame.")
+ user << (state == 0 ? "You begin to lever the window into the frame..." : "You begin to lever the window out of the frame...")
playsound(loc, 'sound/items/Crowbar.ogg', 75, 1)
if(do_after(user, 40))
//If state was out of frame, put into frame, else do the reverse
state = (state == 0 ? 1 : 0)
- user << (state == 1 ? "You have pried the window into the frame." : "You have pried the window out of the frame.")
+ user << (state == 1 ? "You pry the window into the frame." : "You pry the window out of the frame.")
else if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = I
if(user.a_intent == "help") //so you can still break windows with welding tools
if(health < maxhealth)
if(WT.remove_fuel(0,user))
- user << "You begin repairing [src]."
+ user << "You begin repairing [src]..."
playsound(loc, 'sound/items/Welder.ogg', 40, 1)
if(do_after(user, 40))
health = maxhealth
playsound(loc, 'sound/items/Welder2.ogg', 50, 1)
else
- user << "[src] is already in good condition."
+ user << "[src] is already in good condition!"
update_nearby_icons()
else if(istype(I, /obj/item/weapon/wrench) && !anchored)
playsound(loc, 'sound/items/Ratchet.ogg', 75, 1)
- user << " You begin to disassemble [src]."
+ user << " You begin to disassemble [src]..."
if(do_after(user, 40))
if(disassembled)
return //Prevents multiple deconstruction attempts
@@ -311,7 +311,7 @@
return
if(anchored)
- usr << "It is fastened to the floor therefore you can't rotate it!"
+ usr << "It is fastened to the floor therefore you can't rotate it!"
return 0
dir = turn(dir, 90)
@@ -331,7 +331,7 @@
return
if(anchored)
- usr << "It is fastened to the floor therefore you can't rotate it!"
+ usr << "It is fastened to the floor therefore you can't rotate it!"
return 0
dir = turn(dir, 270)
diff --git a/code/game/turfs/simulated/floor/plating.dm b/code/game/turfs/simulated/floor/plating.dm
index b41e048e30c..d09fd62b222 100644
--- a/code/game/turfs/simulated/floor/plating.dm
+++ b/code/game/turfs/simulated/floor/plating.dm
@@ -30,20 +30,20 @@
return
if(istype(C, /obj/item/stack/rods))
if(broken || burnt)
- user << "Repair the plating first."
+ user << "Repair the plating first!"
return
var/obj/item/stack/rods/R = C
if (R.get_amount() < 2)
- user << "You need two rods to make a reinforced floor."
+ user << "You need two rods to make a reinforced floor!"
return
else
- user << "Reinforcing the floor..."
+ user << "You begin reinforcing the floor..."
if(do_after(user, 30))
if (R.get_amount() >= 2)
ChangeTurf(/turf/simulated/floor/engine)
playsound(src, 'sound/items/Deconstruct.ogg', 80, 1)
R.use(2)
- user << "You have reinforced the floor."
+ user << "You reinforce the floor."
return
else if(istype(C, /obj/item/stack/tile))
if(!broken && !burnt)
@@ -56,7 +56,7 @@
W.use(1)
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
else
- user << "This section is too damaged to support a tile. Use a welder to fix the damage."
+ user << "This section is too damaged to support a tile! Use a welder to fix the damage."
else if(istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/welder = C
if( welder.isOn() && (broken || burnt) )
@@ -95,7 +95,7 @@
if(!C || !user)
return
if(istype(C, /obj/item/weapon/wrench))
- user << "Removing rods..."
+ user << "You begin removing rods..."
playsound(src, 'sound/items/Ratchet.ogg', 80, 1)
if(do_after(user, 30))
new /obj/item/stack/rods(src, 2)
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index 06843b8b32d..62f5324dc59 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -181,7 +181,7 @@
if( istype(W, /obj/item/weapon/weldingtool) )
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
- user << "You begin slicing through the outer plating."
+ user << "You begin slicing through the outer plating..."
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, slicing_duration))
if( !istype(src, /turf/simulated/wall) || !user || !WT || !WT.isOn() || !T )
@@ -191,7 +191,7 @@
dismantle_wall()
return 1
else if( istype(W, /obj/item/weapon/gun/energy/plasmacutter) )
- user << "You begin slicing through the outer plating."
+ user << "You begin slicing through the outer plating..."
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, slicing_duration*0.6)) // plasma cutter is faster than welding tool
if( !istype(src, /turf/simulated/wall) || !user || !W || !T )
@@ -199,7 +199,7 @@
if( user.loc == T && user.get_active_hand() == W )
user << "You remove the outer plating."
dismantle_wall()
- visible_message("The wall was sliced apart by [user]!", "You hear metal being sliced apart.")
+ visible_message("The wall was sliced apart by [user]!", "You hear metal being sliced apart.")
return 1
return 0
@@ -208,7 +208,7 @@
if(istype(W, /obj/item/weapon/pickaxe/drill/jackhammer))
var/obj/item/weapon/pickaxe/drill/jackhammer/D = W
if(!D.bcell.use(400))
- user << "Your [D.name] doesn't have enough power to break through the [name]."
+ user << "Your [D.name] doesn't have enough power to break through the [name]!"
return
D.update_icon()
if( !istype(src, /turf/simulated/wall) || !user || !W || !T )
@@ -216,7 +216,7 @@
if( user.loc == T && user.get_active_hand() == W )
D.playDigSound()
dismantle_wall()
- visible_message("[user] smashes through the [name] with the [W.name]!", "You hear the grinding of metal.")
+ visible_message("[user] smashes through the [name] with the [W.name]!", "You hear the grinding of metal.")
return 1
return 0
diff --git a/code/game/turfs/simulated/walls_reinforced.dm b/code/game/turfs/simulated/walls_reinforced.dm
index cf7b6ffd6ec..be6281e25fe 100644
--- a/code/game/turfs/simulated/walls_reinforced.dm
+++ b/code/game/turfs/simulated/walls_reinforced.dm
@@ -34,22 +34,22 @@
if(!D.bcell.use(800))
user << "Your [D.name] doesn't have enough power to break through the [name]."
return 1
- user << "You begin to smash though the [name]."
+ user << "You begin to smash though the [name]..."
if(do_after(user, 50))
if( !istype(src, /turf/simulated/wall/r_wall) || !user || !W || !T )
return 1
if( user.loc == T && user.get_active_hand() == W )
D.update_icon()
D.playDigSound()
- visible_message("[user] smashes through the [name] with the [D.name]!", "You hear the grinding of metal.")
+ visible_message("[user] smashes through the [name] with the [D.name]!", "You hear the grinding of metal.")
dismantle_wall()
return 1
else if(istype(W, /obj/item/stack/sheet/metal) && d_state)
var/obj/item/stack/sheet/metal/MS = W
if (MS.get_amount() < 1)
- user << "You need one sheet of metal to repair the wall."
+ user << "You need one sheet of metal to repair the wall!"
return 1
- user << "You begin patching-up the wall with \a [MS]."
+ user << "You begin patching-up the wall with \a [MS]..."
if (do_after(user, max(20*d_state,100)))//time taken to repair is proportional to the damage! (max 10 seconds)
if(loc == null || MS.get_amount() < 1)
return 1
@@ -75,7 +75,7 @@
if(1)
if (istype(W, /obj/item/weapon/screwdriver))
- user << "You begin removing the support lines."
+ user << "You begin removing the support lines..."
playsound(src, 'sound/items/Screwdriver.ogg', 100, 1)
if(do_after(user, 40))
@@ -97,7 +97,7 @@
relativewall_neighbours() //call smoothwall stuff
user << "You replace the outer grille."
else
- user << "You need one rod to repair the wall."
+ user << "You need one rod to repair the wall!"
return 1
return 1
@@ -106,7 +106,7 @@
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
- user << "You begin slicing through the metal cover."
+ user << "You begin slicing through the metal cover..."
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, 60))
@@ -121,7 +121,7 @@
if( istype(W, /obj/item/weapon/gun/energy/plasmacutter) )
- user << "You begin slicing through the metal cover."
+ user << "You begin slicing through the metal cover..."
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, 60))
@@ -137,7 +137,7 @@
if(3)
if (istype(W, /obj/item/weapon/crowbar))
- user << "You struggle to pry off the cover."
+ user << "You struggle to pry off the cover..."
playsound(src, 'sound/items/Crowbar.ogg', 100, 1)
if(do_after(user, 100))
@@ -153,7 +153,7 @@
if(4)
if (istype(W, /obj/item/weapon/wrench))
- user << "You start loosening the anchoring bolts which secure the support rods to their frame."
+ user << "You start loosening the anchoring bolts which secure the support rods to their frame..."
playsound(src, 'sound/items/Ratchet.ogg', 100, 1)
if(do_after(user, 40))
@@ -171,7 +171,7 @@
var/obj/item/weapon/weldingtool/WT = W
if( WT.remove_fuel(0,user) )
- user << "You begin slicing through the support rods."
+ user << "You begin slicing through the support rods..."
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, 100))
@@ -187,7 +187,7 @@
if( istype(W, /obj/item/weapon/gun/energy/plasmacutter) )
- user << "You begin slicing through the support rods."
+ user << "You begin slicing through the support rods..."
playsound(src, 'sound/items/Welder.ogg', 100, 1)
if(do_after(user, 70))
@@ -204,7 +204,7 @@
if(6)
if( istype(W, /obj/item/weapon/crowbar) )
- user << "You struggle to pry off the outer sheath."
+ user << "You struggle to pry off the outer sheath..."
playsound(src, 'sound/items/Crowbar.ogg', 100, 1)
if(do_after(user, 100))
diff --git a/code/game/turfs/space/space.dm b/code/game/turfs/space/space.dm
index 38dcbe609c6..7b5c0627eac 100644
--- a/code/game/turfs/space/space.dm
+++ b/code/game/turfs/space/space.dm
@@ -38,16 +38,16 @@
var/obj/structure/lattice/L = locate(/obj/structure/lattice, src)
var/obj/structure/lattice/catwalk/W = locate(/obj/structure/lattice/catwalk, src)
if(W)
- user << "There is already a catwalk here."
+ user << "There is already a catwalk here!"
return
if(L)
if(R.use(1))
- user << "Constructing catwalk..."
+ user << "You begin constructing catwalk..."
playsound(src, 'sound/weapons/Genhit.ogg', 50, 1)
qdel(L)
ReplaceWithCatwalk()
else
- user << "You need two rods to build a catwalk."
+ user << "You need two rods to build a catwalk!"
return
if(R.use(1))
user << "Constructing support lattice..."
@@ -66,9 +66,9 @@
user << "You build a floor."
ChangeTurf(/turf/simulated/floor/plating)
else
- user << "You need one floor tile to build a floor."
+ user << "You need one floor tile to build a floor!"
else
- user << "The plating is going to need some support. Place metal rods first."
+ user << "The plating is going to need some support! Place metal rods first."
/turf/space/Entered(atom/movable/A)
..()
diff --git a/code/game/turfs/unsimulated/floor.dm b/code/game/turfs/unsimulated/floor.dm
index a3ba0d120b0..ca6b69118a5 100644
--- a/code/game/turfs/unsimulated/floor.dm
+++ b/code/game/turfs/unsimulated/floor.dm
@@ -24,4 +24,8 @@
/turf/unsimulated/floor/grass/New()
..()
- icon_state = "grass[rand(1,4)]"
+ icon_state = "grass[rand(1,4)]"
+
+/turf/unsimulated/floor/abductor
+ name = "alien floor"
+ icon_state = "alienpod1"
diff --git a/code/game/turfs/unsimulated/walls.dm b/code/game/turfs/unsimulated/walls.dm
index e22ce3dd5fb..27392e1e9d6 100644
--- a/code/game/turfs/unsimulated/walls.dm
+++ b/code/game/turfs/unsimulated/walls.dm
@@ -65,4 +65,7 @@ turf/unsimulated/wall/splashscreen
/turf/unsimulated/shuttle/floor
name = "floor"
- icon_state = "floor"
\ No newline at end of file
+ icon_state = "floor"
+
+/turf/unsimulated/wall/abductor
+ icon_state = "alien1"
\ No newline at end of file
diff --git a/code/game/verbs/suicide.dm b/code/game/verbs/suicide.dm
index ed21f09164a..c89f8d740f4 100644
--- a/code/game/verbs/suicide.dm
+++ b/code/game/verbs/suicide.dm
@@ -150,7 +150,7 @@
suiciding = 1
visible_message("[src] is thrashing wildly! It looks like \he's trying to commit suicide.", \
"[src] is thrashing wildly! It looks like \he's trying to commit suicide.", \
- "You hear thrashing")
+ "You hear thrashing.")
//put em at -175
adjustOxyLoss(max(200 - getFireLoss() - getBruteLoss() - getOxyLoss(), 0))
updatehealth()
@@ -176,7 +176,7 @@
else if(stat == DEAD)
src << "You're already dead!"
else if(stat == UNCONSCIOUS)
- src << "You need to be conscious to suicide"
+ src << "You need to be conscious to suicide!"
return
/mob/living/carbon/canSuicide()
diff --git a/code/modules/admin/player_panel.dm b/code/modules/admin/player_panel.dm
index 478231185de..03bad1dedf0 100644
--- a/code/modules/admin/player_panel.dm
+++ b/code/modules/admin/player_panel.dm
@@ -305,8 +305,6 @@
usr << browse(dat, "window=players;size=600x480")
/datum/admins/proc/check_antagonists()
- var/list/supported_continuous_modes = list("revolution", "gang", "wizard", "malfunction", "blob")
- var/list/supported_midround_antag_modes = list("wizard", "malfunction", "blob")
if (ticker && ticker.current_state >= GAME_STATE_PLAYING)
var/dat = "Round StatusRound Status
"
dat += "Current Game Mode: [ticker.mode.name]
"
@@ -324,11 +322,8 @@
else
dat += "ETA: [(timeleft / 60) % 60]:[add_zero(num2text(timeleft % 60), 2)]
"
dat += "Continuous Round Status
"
- if(!ticker.mode.config_tag in supported_continuous_modes)
- dat += "Continue if antagonists die"
- else
- dat += "[config.continuous[ticker.mode.config_tag] ? "Continue if antagonists die" : "End on antagonist death"]"
- if(config.continuous[ticker.mode.config_tag] && ticker.mode.config_tag in supported_midround_antag_modes)
+ dat += "[config.continuous[ticker.mode.config_tag] ? "Continue if antagonists die" : "End on antagonist death"]"
+ if(config.continuous[ticker.mode.config_tag])
dat += ", [config.midround_antag[ticker.mode.config_tag] ? "creating replacement antagonists" : "not creating new antagonists"]
"
else
dat += "
"
@@ -386,7 +381,7 @@
dat += ""
if(ticker.mode.A_bosses.len || ticker.mode.A_gang.len)
- dat += "
| [gang_name("A")] Gang: [round((ticker.mode.A_territory.len/start_state.num_territories)*100, 0.1)]% Station Control | |
"
+ dat += "
| [gang_name("A")] Gang: [(ticker.mode.gang_points ? "[ticker.mode.gang_points.A] Influence, " : "")][round((ticker.mode.A_territory.len/start_state.num_territories)*100, 0.1)]% Control | |
"
for(var/datum/mind/N in ticker.mode.A_bosses)
var/mob/M = N.current
if(!M)
@@ -402,7 +397,7 @@
dat += "
"
if(ticker.mode.B_bosses.len || ticker.mode.B_gang.len)
- dat += "
| [gang_name("B")] Gang: [round((ticker.mode.B_territory.len/start_state.num_territories)*100, 0.1)]% Station Control | |
"
+ dat += "
| [gang_name("B")] Gang: [(ticker.mode.gang_points ? "[ticker.mode.gang_points.B] Influence, " : "")][round((ticker.mode.B_territory.len/start_state.num_territories)*100, 0.1)]% Control | |
"
for(var/datum/mind/N in ticker.mode.B_bosses)
var/mob/M = N.current
if(!M)
diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm
index 17c8ee52030..2d35a309595 100644
--- a/code/modules/admin/topic.dm
+++ b/code/modules/admin/topic.dm
@@ -16,35 +16,35 @@
message_admins("[key_name_admin(usr)] created traitors.")
log_admin("[key_name(usr)] created traitors.")
else
- message_admins("[key_name_admin(usr)] tried to create traitors. Unfortunatly there were no candidates available.")
+ message_admins("[key_name_admin(usr)] tried to create traitors. Unfortunately, there were no candidates available.")
log_admin("[key_name(usr)] failed to create traitors.")
if("2")
if(src.makeChanglings())
message_admins("[key_name(usr)] created changelings.")
log_admin("[key_name(usr)] created changelings.")
else
- message_admins("[key_name_admin(usr)] tried to create changelings. Unfortunatly there were no candidates available.")
+ message_admins("[key_name_admin(usr)] tried to create changelings. Unfortunately, there were no candidates available.")
log_admin("[key_name(usr)] failed to create changelings.")
if("3")
if(!src.makeRevs())
message_admins("[key_name(usr)] started a revolution.")
log_admin("[key_name(usr)] started a revolution.")
else
- message_admins("[key_name_admin(usr)] tried to start a revolution. Unfortunatly there were no candidates available.")
+ message_admins("[key_name_admin(usr)] tried to start a revolution. Unfortunately, there were no candidates available.")
log_admin("[key_name(usr)] failed to start a revolution.")
if("4")
if(src.makeCult())
message_admins("[key_name(usr)] started a cult.")
log_admin("[key_name(usr)] started a cult.")
else
- message_admins("[key_name_admin(usr)] tried to start a cult. Unfortunatly there were no candidates available.")
+ message_admins("[key_name_admin(usr)] tried to start a cult. Unfortunately, there were no candidates available.")
log_admin("[key_name(usr)] failed to start a cult.")
if("5")
if(src.makeMalfAImode())
message_admins("[key_name(usr)] caused an AI to malfunction.")
log_admin("[key_name(usr)] caused an AI to malfunction.")
else
- message_admins("[key_name_admin(usr)] tried to cause an AI to malfunction. Unfortunatly there were no candidates available.")
+ message_admins("[key_name_admin(usr)] tried to cause an AI to malfunction. Unfortunately, there were no candidates available.")
log_admin("[key_name(usr)] failed to cause an AI to malfunction.")
if("6")
message_admins("[key_name(usr)] is creating a wizard...")
@@ -52,7 +52,7 @@
message_admins("[key_name(usr)] created a wizard.")
log_admin("[key_name(usr)] created a wizard.")
else
- message_admins("[key_name_admin(usr)] tried to create a wizard. Unfortunatly there were no candidates available.")
+ message_admins("[key_name_admin(usr)] tried to create a wizard. Unfortunately, there were no candidates available.")
log_admin("[key_name(usr)] failed to create a wizard.")
if("7")
message_admins("[key_name(usr)] is creating a nuke team...")
@@ -60,7 +60,7 @@
message_admins("[key_name(usr)] created a nuke team.")
log_admin("[key_name(usr)] created a nuke team.")
else
- message_admins("[key_name_admin(usr)] tried to create a nuke team. Unfortunatly there were not enough candidates available.")
+ message_admins("[key_name_admin(usr)] tried to create a nuke team. Unfortunately, there were not enough candidates available.")
log_admin("[key_name(usr)] failed to create a nuke team.")
if("8")
message_admins("[key_name(usr)] spawned a ninja.")
@@ -76,7 +76,7 @@
message_admins("[key_name(usr)] created a death squad.")
log_admin("[key_name(usr)] created a death squad.")
else
- message_admins("[key_name_admin(usr)] tried to create a death squad. Unfortunatly there were not enough candidates available.")
+ message_admins("[key_name_admin(usr)] tried to create a death squad. Unfortunately, there were not enough candidates available.")
log_admin("[key_name(usr)] failed to create a death squad.")
if("11")
var/strength = input("Set Blob Strength (1=Weak, 2=Strong, 3=Full)","Set Strength",1) as num
@@ -88,7 +88,7 @@
message_admins("[key_name(usr)] started a gang war.")
log_admin("[key_name(usr)] started a gang war.")
else
- message_admins("[key_name(usr)] tried to start a gang war. Unfortunatly there were not enough candidates available.")
+ message_admins("[key_name(usr)] tried to start a gang war. Unfortunately, there were not enough candidates available.")
log_admin("[key_name(usr)] failed to start a gang war.")
if("13")
message_admins("[key_name(usr)] is creating an emergency response team...")
@@ -96,7 +96,7 @@
message_admins("[key_name(usr)] created an emergency response team.")
log_admin("[key_name(usr)] created an emergency response team.")
else
- message_admins("[key_name_admin(usr)] tried to create an emergency response team. Unfortunatly there were not enough candidates available.")
+ message_admins("[key_name_admin(usr)] tried to create an emergency response team. Unfortunately, there were not enough candidates available.")
log_admin("[key_name(usr)] failed to create an emergency response team.")
if("14")
message_admins("[key_name(usr)] is creating an abductor team...")
@@ -106,6 +106,14 @@
else
message_admins("[key_name_admin(usr)] tried to create an abductor team. Unfortunatly there were not enough candidates available.")
log_admin("[key_name(usr)] failed to create an abductor team.")
+ if("15")
+ message_admins("[key_name(usr)] is creating a revenant...")
+ if(src.makeRevenant())
+ message_admins("[key_name(usr)] created a revenant.")
+ log_admin("[key_name(usr)] created a revenant.")
+ else
+ message_admins("[key_name_admin(usr)] tried to create a revenant. Unfortunately, there were no candidates available.")
+ log_admin("[key_name(usr)] failed to create a revenant.")
else if(href_list["forceevent"])
if(!check_rights(R_FUN)) return
diff --git a/code/modules/admin/verbs/bluespacearty.dm b/code/modules/admin/verbs/bluespacearty.dm
index c3c0c0d90b7..486c0003129 100644
--- a/code/modules/admin/verbs/bluespacearty.dm
+++ b/code/modules/admin/verbs/bluespacearty.dm
@@ -29,6 +29,6 @@
target.Weaken(20)
target.stuttering = 20
- target << "You've been hit by bluespace artillery!"
+ target << "You're hit by bluespace artillery!"
log_admin("[target.name] has been hit by Bluespace Artillery fired by [usr]")
message_admins("[target.name] has been hit by Bluespace Artillery fired by [usr]")
diff --git a/code/modules/admin/verbs/one_click_antag.dm b/code/modules/admin/verbs/one_click_antag.dm
index c78793ac84a..d4cd11aad0d 100644
--- a/code/modules/admin/verbs/one_click_antag.dm
+++ b/code/modules/admin/verbs/one_click_antag.dm
@@ -23,6 +23,7 @@ client/proc/one_click_antag()
Make Deathsquad (Requires Ghosts)
Make Emergency Response Team (Requires Ghosts)
Make Abductor Team (Requires Ghosts)
+ Make Revenant (Requires Ghost)
"}
/* These dont work just yet
Ninja, aliens and deathsquad I have not looked into yet
@@ -506,7 +507,11 @@ client/proc/one_click_antag()
teams_finished = round(ticker.mode.abductors.len / 2)
var/number = teams_finished + 1
- var/datum/game_mode/abduction/temp = new
+ var/datum/game_mode/abduction/temp
+ if(ticker.mode.config_tag == "abductor")
+ temp = ticker.mode
+ else
+ temp = new
var/agent_mind = pick(candidates)
candidates -= agent_mind
@@ -525,18 +530,33 @@ client/proc/one_click_antag()
temp.team_names.len = number
temp.scientists[number] = scientist_mind
temp.agents[number] = agent_mind
- temp.abductors = list(agent_mind,scientist_mind)
- temp.make_abductor_team(number)
+ temp.abductors |= list(agent_mind,scientist_mind)
+ temp.make_abductor_team(number,preset_scientist=scientist_mind,preset_agent=agent_mind)
temp.post_setup_team(number)
- ticker.mode.abductors += temp.abductors
if(ticker.mode.config_tag == "abductor")
var/datum/game_mode/abduction/A = ticker.mode
A.teams += 1
+ else
+ ticker.mode.abductors |= temp.abductors
return 1
else
return
+/datum/admins/proc/makeRevenant()
+ var/list/mob/dead/observer/candidates = getCandidates("Do you wish to be considered for becoming a revenant?", "revenant", null)
+ if(candidates.len >= 1)
+ var/spook_op = pick(candidates)
+ var/mob/dead/observer/O = spook_op
+ candidates -= spook_op
+ var/mob/living/simple_animal/revenant/revvie = new /mob/living/simple_animal/revenant(get_turf(O))
+ revvie.key = O.key
+ revvie.mind.assigned_role = "revenant"
+ revvie.mind.special_role = "Revenant"
+ return 1
+ else
+ return
+
/datum/admins/proc/getCandidates(var/Question, var/jobbanType, var/datum/game_mode/gametypeCheck)
var/list/mob/dead/observer/candidates = list()
var/time_passed = world.time
@@ -553,12 +573,19 @@ client/proc/one_click_antag()
if(jobban_isbanned(G, jobbanType) || jobban_isbanned(G, "Syndicate"))
continue
spawn(0)
+ G << 'sound/misc/notice2.ogg' //Alerting them to their consideration
switch(alert(G,Question,"Please answer in 30 seconds!","Yes","No"))
if("Yes")
+ G << 'sound/machines/ping.ogg'
+ G << "Choice registered: Yes."
if((world.time-time_passed)>300)//If more than 30 game seconds passed.
+ G << "Sorry, you were too late for the consideration!"
+ G << 'sound/machines/buzz-sigh.ogg'
return
candidates += G
if("No")
+ G << "Choice registered: No."
+ G << 'sound/machines/buzz-sigh.ogg'
return
else
return
diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm
index 7755e882965..b738becff50 100644
--- a/code/modules/admin/verbs/randomverbs.dm
+++ b/code/modules/admin/verbs/randomverbs.dm
@@ -33,7 +33,7 @@
if(usr)
if (usr.client)
if(usr.client.holder)
- M << "You hear [ticker.Bible_deity_name ? "the voice of " + ticker.Bible_deity_name : "a voice"] in your head... [msg]"
+ M << "You hear [ticker.Bible_deity_name ? "the voice of " + ticker.Bible_deity_name : "a voice"] in your head... [msg]"
log_admin("SubtlePM: [key_name(usr)] -> [key_name(M)] : [msg]")
message_admins(" SubtleMessage: [key_name_admin(usr)] -> [key_name_admin(M)] : [msg]")
diff --git a/code/modules/assembly/mousetrap.dm b/code/modules/assembly/mousetrap.dm
index 38bdb41d43b..94b5790af58 100644
--- a/code/modules/assembly/mousetrap.dm
+++ b/code/modules/assembly/mousetrap.dm
@@ -19,7 +19,7 @@
if(ishuman(usr))
var/mob/living/carbon/human/user = usr
if((user.getBrainLoss() >= 60) || user.disabilities & CLUMSY && prob(50))
- user << "Your hand slips, setting off the trigger."
+ user << "Your hand slips, setting off the trigger!"
pulse(0)
update_icon()
if(usr)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index b8391bd840a..c64c25d5302 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -113,12 +113,12 @@ BLIND // can't see anything
permeability_coefficient = initial(permeability_coefficient)
flags |= visor_flags
flags_inv |= visor_flags_inv
- user << "You push \the [src] back into place."
+ user << "You push \the [src] back into place."
src.mask_adjusted = 0
slot_flags = initial(slot_flags)
else
src.icon_state += "_up"
- user << "You push \the [src] out of the way."
+ user << "You push \the [src] out of the way."
gas_transfer_coefficient = null
permeability_coefficient = null
flags &= ~visor_flags
@@ -293,20 +293,20 @@ atom/proc/generate_female_clothing(index,t_color,icon,type)
var/list/modes = list("Off", "Binary vitals", "Exact vitals", "Tracking beacon")
var/switchMode = input("Select a sensor mode:", "Suit Sensor Mode", modes[sensor_mode + 1]) in modes
if(get_dist(usr, src) > 1)
- usr << "You have moved too far away."
+ usr << "You have moved too far away!"
return
sensor_mode = modes.Find(switchMode) - 1
if (src.loc == usr)
switch(sensor_mode)
if(0)
- usr << "You disable your suit's remote sensing equipment."
+ usr << "You disable your suit's remote sensing equipment."
if(1)
- usr << "Your suit will now only report whether you are alive or dead."
+ usr << "Your suit will now only report whether you are alive or dead."
if(2)
- usr << "Your suit will now only report your exact vital lifesigns."
+ usr << "Your suit will now only report your exact vital lifesigns."
if(3)
- usr << "Your suit will now report your exact vital lifesigns as well as your coordinate position."
+ usr << "Your suit will now report your exact vital lifesigns as well as your coordinate position."
if(istype(loc,/mob/living/carbon/human))
var/mob/living/carbon/human/H = loc
@@ -329,19 +329,19 @@ atom/proc/generate_female_clothing(index,t_color,icon,type)
if(!can_use(usr))
return
if(!can_adjust)
- usr << "You cannot wear this suit any differently."
+ usr << "You cannot wear this suit any differently!"
return
if(src.adjusted == 1)
src.fitted = initial(fitted)
src.item_color = initial(item_color)
src.item_color = src.suit_color //colored jumpsuits are shit and break without this
- usr << "You adjust the suit back to normal."
+ usr << "You adjust the suit back to normal."
src.adjusted = 0
else
if(src.fitted != FEMALE_UNIFORM_TOP)
src.fitted = NO_FEMALE_UNIFORM
src.item_color += "_d"
- usr << "You adjust the suit to wear it more casually."
+ usr << "You adjust the suit to wear it more casually."
src.adjusted = 1
usr.update_inv_w_uniform()
..()
@@ -388,7 +388,7 @@ atom/proc/generate_female_clothing(index,t_color,icon,type)
flags |= (visor_flags)
flags_inv |= (visor_flags_inv)
icon_state = initial(icon_state)
- usr << "You pull \the [src] down."
+ usr << "You pull \the [src] down."
flash_protect = initial(flash_protect)
tint = initial(tint)
else
@@ -396,7 +396,7 @@ atom/proc/generate_female_clothing(index,t_color,icon,type)
flags &= ~(visor_flags)
flags_inv &= ~(visor_flags_inv)
icon_state = "[initial(icon_state)]up"
- usr << "You push \the [src] up."
+ usr << "You push \the [src] up."
flash_protect = 0
tint = 0
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index e712565dc77..e1d1e53e8b8 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -12,7 +12,7 @@
attack_self(mob/user)
if(!isturf(user.loc))
- user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
+ user << "You cannot turn the light on while in this [user.loc]!" //To prevent some lighting anomalities.
return
on = !on
icon_state = "hardhat[on]_[item_color]"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 4fbd2b6b832..cc4c13cfa43 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -235,14 +235,14 @@ obj/item/clothing/head/helmet/bluetaghelm
helmetCam.c_tag = "Helmet-Mounted Camera (No User)([rand(1,999)])"
helmetCam.network = list("SS13")
update_icon()
- user.visible_message("[user] attaches [A] to [src]","You attach [A] to [src]")
+ user.visible_message("[user] attaches [A] to [src].","You attach [A] to [src].")
return
if(istype(A, /obj/item/weapon/crowbar))
if(!helmetCam)
..()
return
- user.visible_message("[user] removes [helmetCam] from [src]","You remove [helmetCam] from [src]")
+ user.visible_message("[user] removes [helmetCam] from [src].","You remove [helmetCam] from [src].")
helmetCam.assembly.loc = get_turf(src)
helmetCam.assembly = null
qdel(helmetCam)
@@ -263,7 +263,7 @@ obj/item/clothing/head/helmet/bluetaghelm
var/mob/living/carbon/human/user = usr
if(!isturf(user.loc))
- user << "You cannot turn the light on while in this [user.loc]."
+ user << "You cannot turn the light on while in this [user.loc]!"
F.on = !F.on
user << "You toggle the helmetlight [F.on ? "on":"off"]."
diff --git a/code/modules/clothing/head/misc_special.dm b/code/modules/clothing/head/misc_special.dm
index f5a8ac28885..6eee2eaf8a0 100644
--- a/code/modules/clothing/head/misc_special.dm
+++ b/code/modules/clothing/head/misc_special.dm
@@ -100,12 +100,12 @@
src.icon_state = "ushankaup"
src.item_state = "ushankaup"
earflaps = 0
- user << "You raise the ear flaps on the ushanka."
+ user << "You raise the ear flaps on the ushanka."
else
src.icon_state = "ushankadown"
src.item_state = "ushankadown"
earflaps = 1
- user << "You lower the ear flaps on the ushanka."
+ user << "You lower the ear flaps on the ushanka."
/*
* Pumpkin head
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index 02fc5c460f7..96c5f55cedd 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -27,10 +27,10 @@
src.flipped = !src.flipped
if(src.flipped)
icon_state = "[item_color]soft_flipped"
- user << "You flip the hat backwards."
+ user << "You flip the hat backwards."
else
icon_state = "[item_color]soft"
- user << "You flip the hat back in normal position."
+ user << "You flip the hat back in normal position."
usr.update_inv_head(0) //so our mob-overlays update
/obj/item/clothing/head/soft/examine(mob/user)
diff --git a/code/modules/clothing/masks/miscellaneous.dm b/code/modules/clothing/masks/miscellaneous.dm
index 4ce903e2bf8..dc9c31861c7 100644
--- a/code/modules/clothing/masks/miscellaneous.dm
+++ b/code/modules/clothing/masks/miscellaneous.dm
@@ -12,7 +12,7 @@
if(iscarbon(user))
var/mob/living/carbon/C = user
if(src == C.wear_mask)
- user << "You need help taking this off!"
+ user << "You need help taking this off!"
return
..()
diff --git a/code/modules/clothing/shoes/bananashoes.dm b/code/modules/clothing/shoes/bananashoes.dm
index ee256e42595..f1da928afff 100644
--- a/code/modules/clothing/shoes/bananashoes.dm
+++ b/code/modules/clothing/shoes/bananashoes.dm
@@ -21,7 +21,7 @@
if(bananium < 100)
on = !on
update_icon()
- usr << "You ran out of bananium!"
+ usr << "You ran out of bananium!"
else
..()
@@ -49,9 +49,9 @@
if(bananium > 0)
on = !on
update_icon()
- usr << "You [on ? "activate" : "deactivate"] the prototype shoes."
+ usr << "You [on ? "activate" : "deactivate"] the prototype shoes."
else
- usr << "You need bananium to turn the prototype shoes on."
+ usr << "You need bananium to turn the prototype shoes on!"
/obj/item/clothing/shoes/clown_shoes/banana_shoes/update_icon()
if(on)
diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm
index e463f77fb68..1074159da7f 100644
--- a/code/modules/clothing/shoes/colour.dm
+++ b/code/modules/clothing/shoes/colour.dm
@@ -106,6 +106,6 @@
if(ishuman(user))
var/mob/living/carbon/human/C = user
if(C.shoes == src && src.chained == 1)
- user << "You need help taking these off!"
+ user << "You need help taking these off!"
return
..()
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index d7d2414ff68..8d742f983db 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -28,7 +28,7 @@
src.slowdown = slowdown_active
magpulse = !magpulse
icon_state = "[magboot_state][magpulse]"
- user << "You [magpulse ? "enable" : "disable"] the mag-pulse traction system."
+ user << "You [magpulse ? "enable" : "disable"] the mag-pulse traction system."
user.update_inv_shoes(0) //so our mob-overlays update
user.update_gravity(user.mob_has_gravity())
diff --git a/code/modules/clothing/spacesuits/hardsuit.dm b/code/modules/clothing/spacesuits/hardsuit.dm
index 5e019d89409..f178515a89b 100644
--- a/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/code/modules/clothing/spacesuits/hardsuit.dm
@@ -14,7 +14,7 @@
/obj/item/clothing/head/helmet/space/hardsuit/attack_self(mob/user)
if(!isturf(user.loc))
- user << "You cannot turn the light on while in this [user.loc]" //To prevent some lighting anomalities.
+ user << "You cannot turn the light on while in this [user.loc]!" //To prevent some lighting anomalities.
return
on = !on
icon_state = "hardsuit[on]-[item_color]"
@@ -171,7 +171,7 @@
/obj/item/clothing/head/helmet/space/hardsuit/syndi/attack_self(mob/user) //Toggle Helmet
if(!isturf(user.loc))
- user << "You cannot toggle your helmet while in this [user.loc]" //To prevent some lighting anomalities.
+ user << "You cannot toggle your helmet while in this [user.loc]!" //To prevent some lighting anomalities.
return
on = !on
if(on || force)
diff --git a/code/modules/clothing/suits/toggles.dm b/code/modules/clothing/suits/toggles.dm
index b569f9b5fe6..470b6f6ebd4 100644
--- a/code/modules/clothing/suits/toggles.dm
+++ b/code/modules/clothing/suits/toggles.dm
@@ -38,10 +38,10 @@
if(ishuman(src.loc))
var/mob/living/carbon/human/H = src.loc
if(H.wear_suit != src)
- H << "You must be wearing [src] to put up the hood."
+ H << "You must be wearing [src] to put up the hood!"
return
if(H.head)
- H << "You're already wearing something on your head."
+ H << "You're already wearing something on your head!"
return
else
H.equip_to_slot_if_possible(hood,slot_head,0,0,1)
@@ -66,7 +66,7 @@
if(!can_use(usr))
return 0
- usr << "You toggle [src]'s [togglename]."
+ usr << "You toggle [src]'s [togglename]."
if(src.suittoggled)
src.icon_state = "[initial(icon_state)]"
src.suittoggled = 0
@@ -128,18 +128,18 @@
if(!suittoggled)
if(ishuman(src.loc))
if(H.wear_suit != src)
- H << "You must be wearing [src] to engage the helmet."
+ H << "You must be wearing [src] to engage the helmet!"
return
if(H.head)
- H << "You're already wearing something on your head."
+ H << "You're already wearing something on your head!"
return
else
- H << "You engage the helmet on the hardsuit."
+ H << "You engage the helmet on the hardsuit."
H.equip_to_slot_if_possible(helmet,slot_head,0,0,1)
suittoggled = 1
H.update_inv_wear_suit()
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
else
- H << "You disengage the helmet on the hardsuit."
+ H << "You disengage the helmet on the hardsuit."
playsound(src.loc, 'sound/mecha/mechmove03.ogg', 50, 1)
RemoveHelmet()
diff --git a/code/modules/clothing/under/ties.dm b/code/modules/clothing/under/ties.dm
index 6c4d586d740..1dda5f2ebd2 100644
--- a/code/modules/clothing/under/ties.dm
+++ b/code/modules/clothing/under/ties.dm
@@ -100,10 +100,10 @@
if(user == M)
user << "You attach [src] to [U]."
else
- user.visible_message("[user] pins \the [src] on [M]'s chest.", \
+ user.visible_message("[user] pins \the [src] on [M]'s chest.", \
"You pin \the [src] on [M]'s chest.")
- else user << "Medals can only be pinned on jumpsuits."
+ else user << "Medals can only be pinned on jumpsuits!"
else ..()
/obj/item/clothing/tie/medal/conduct
diff --git a/code/modules/crafting/guncrafting.dm b/code/modules/crafting/guncrafting.dm
index 45d4d340ecd..ae95ef86a03 100644
--- a/code/modules/crafting/guncrafting.dm
+++ b/code/modules/crafting/guncrafting.dm
@@ -20,7 +20,7 @@
/obj/item/weaponcrafting/reciever/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W,/obj/item/pipe))
- user << "You attach the shotgun barrel to the receiver. The pins seem loose."
+ user << "You attach the shotgun barrel to the receiver. The pins seem loose."
var/obj/item/weaponcrafting/ishotgunconstruction/I = new /obj/item/weaponcrafting/ishotgunconstruction
user.unEquip(src)
user.put_in_hands(I)
@@ -53,7 +53,7 @@
/obj/item/weaponcrafting/ishotgunconstruction2/attackby(obj/item/W as obj, mob/user as mob, params)
if(istype(W,/obj/item/weaponcrafting/stock))
- user << "You attach the stock to the receiver-barrel assembly."
+ user << "You attach the stock to the receiver-barrel assembly."
var/obj/item/weaponcrafting/ishotgunconstruction3/I = new /obj/item/weaponcrafting/ishotgunconstruction3
user.unEquip(src)
user.put_in_hands(I)
@@ -78,6 +78,6 @@
user << "You tie the wrapping paper around the stock and the barrel to secure it."
qdel(src)
else
- user << "You need at least five feet of wrapping paper to secure the stock."
+ user << "You need at least five feet of wrapping paper to secure the stock!"
return
diff --git a/code/modules/detectivework/evidence.dm b/code/modules/detectivework/evidence.dm
index d8f8b6aad65..b43f7077d9f 100644
--- a/code/modules/detectivework/evidence.dm
+++ b/code/modules/detectivework/evidence.dm
@@ -45,8 +45,8 @@
else
return
- user.visible_message("[user] puts [I] into [src].", "You put [I] inside [src].",\
- "You hear a rustle as someone puts something into a plastic bag.")
+ user.visible_message("[user] puts [I] into [src].", "You put [I] inside [src].",\
+ "You hear a rustle as someone puts something into a plastic bag.")
icon_state = "evidence"
@@ -68,8 +68,8 @@
/obj/item/weapon/evidencebag/attack_self(mob/user as mob)
if(contents.len)
var/obj/item/I = contents[1]
- user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\
- "You hear someone rustle around in a plastic bag, and remove something.")
+ user.visible_message("[user] takes [I] out of [src].", "You take [I] out of [src].",\
+ "You hear someone rustle around in a plastic bag, and remove something.")
overlays.Cut() //remove the overlays
user.put_in_hands(I)
w_class = 1
diff --git a/code/modules/detectivework/footprints_and_rag.dm b/code/modules/detectivework/footprints_and_rag.dm
index a2d323e81d8..2e09166ae6e 100644
--- a/code/modules/detectivework/footprints_and_rag.dm
+++ b/code/modules/detectivework/footprints_and_rag.dm
@@ -21,7 +21,7 @@
/obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(ismob(target) && target.reagents && reagents.total_volume)
- user.visible_message("[user] has smothered \the [target] with \the [src]!", "You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise")
+ user.visible_message("[user] has smothered \the [target] with \the [src]!", "You smother \the [target] with \the [src]!", "You hear some struggling and muffled cries of surprise.")
src.reagents.reaction(target, TOUCH)
src.reagents.clear_reagents()
return
@@ -31,8 +31,8 @@
/obj/item/weapon/reagent_containers/glass/rag/afterattack(atom/A as obj|turf|area, mob/user as mob,proximity)
if(!proximity) return
if(istype(A) && src in user)
- user.visible_message("[user] starts to wipe down [A] with [src]!")
+ user.visible_message("[user] starts to wipe down [A] with [src]!", "You start to wipe down [A] with [src]...You finish wiping off the [A].")
A.clean_blood()
return
diff --git a/code/modules/detectivework/scanner.dm b/code/modules/detectivework/scanner.dm
index affb72d1381..5fbe0263949 100644
--- a/code/modules/detectivework/scanner.dm
+++ b/code/modules/detectivework/scanner.dm
@@ -151,7 +151,7 @@
if(!found_something)
add_log("# No forensic traces found #", 0) // Don't display this to the holder user
if(holder)
- holder << "Unable to locate any fingerprints, materials, fibers, or blood on \the [target_name]!"
+ holder << "Unable to locate any fingerprints, materials, fibers, or blood on \the [target_name]!"
else
if(holder)
holder << "You finish scanning \the [target_name]."
diff --git a/code/modules/events/holiday/xmas.dm b/code/modules/events/holiday/xmas.dm
index 3f40addebdf..03f8ea5051a 100644
--- a/code/modules/events/holiday/xmas.dm
+++ b/code/modules/events/holiday/xmas.dm
@@ -47,7 +47,7 @@
/obj/item/weapon/toy/xmas_cracker/attack(mob/target, mob/user)
if( !cracked && istype(target,/mob/living/carbon/human) && (target.stat == CONSCIOUS) && !target.get_active_hand() )
- target.visible_message("[user] and [target] pop \an [src]! *pop*", "You pull \an [src] with [target]! *pop*", "You hear a *pop*.")
+ target.visible_message("[user] and [target] pop \an [src]! *pop*", "You pull \an [src] with [target]! *pop*", "You hear a pop.")
var/obj/item/weapon/paper/Joke = new /obj/item/weapon/paper(user.loc)
Joke.name = "[pick("awful","terrible","unfunny")] joke"
Joke.info = pick("What did one snowman say to the other?\n\n'Is it me or can you smell carrots?'",
diff --git a/code/modules/food&drinks/drinks/drinks.dm b/code/modules/food&drinks/drinks/drinks.dm
index 6888a4a9a04..6986e52d26a 100644
--- a/code/modules/food&drinks/drinks/drinks.dm
+++ b/code/modules/food&drinks/drinks/drinks.dm
@@ -224,7 +224,7 @@
/obj/item/weapon/reagent_containers/food/drinks/soda_cans/attack(mob/M, mob/user)
if(M == user && !src.reagents.total_volume && user.a_intent == "harm" && user.zone_sel.selecting == "head")
- user.visible_message("[user] crushes the can of [src] on \his forehead!", "You crush the can of [src] on your forehead!")
+ user.visible_message("[user] crushes the can of [src] on \his forehead!", "You crush the can of [src] on your forehead.")
playsound(user.loc,'sound/weapons/pierce.ogg', rand(10,50), 1)
var/obj/item/trash/can/crushed_can = new /obj/item/trash/can(user.loc)
crushed_can.icon_state = icon_state
diff --git a/code/modules/food&drinks/food/condiment.dm b/code/modules/food&drinks/food/condiment.dm
index 5f489ddaa49..bff39b0e262 100644
--- a/code/modules/food&drinks/food/condiment.dm
+++ b/code/modules/food&drinks/food/condiment.dm
@@ -69,11 +69,11 @@
if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
if(!target.reagents.total_volume)
- user << "[target] is empty."
+ user << "[target] is empty!"
return
if(reagents.total_volume >= reagents.maximum_volume)
- user << "[src] is full."
+ user << "[src] is full!"
return
var/trans = target.reagents.trans_to(src, target:amount_per_transfer_from_this)
@@ -82,10 +82,10 @@
//Something like a glass or a food item. Player probably wants to transfer TO it.
else if(target.is_open_container() || istype(target, /obj/item/weapon/reagent_containers/food/snacks))
if(!reagents.total_volume)
- user << "[src] is empty."
+ user << "[src] is empty!"
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
- user << "you can't add anymore to [target]."
+ user << "you can't add anymore to [target]!"
return
var/trans = src.reagents.trans_to(target, amount_per_transfer_from_this)
user << "You transfer [trans] units of the condiment to [target]."
diff --git a/code/modules/food&drinks/food/customizables.dm b/code/modules/food&drinks/food/customizables.dm
index 7cc0ec3c7f0..3f6b7aba90f 100644
--- a/code/modules/food&drinks/food/customizables.dm
+++ b/code/modules/food&drinks/food/customizables.dm
@@ -40,9 +40,9 @@
if(istype(I,/obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = I
if(I.w_class > 2)
- user << "The ingredient is too big for [src]."
+ user << "The ingredient is too big for [src]!"
else if((ingredients.len >= ingMax) || (reagents.total_volume >= volume))
- user << "You can't add more ingredients to [src]."
+ user << "You can't add more ingredients to [src]!"
else
user.drop_item()
if(S.trash)
@@ -309,9 +309,9 @@
if(istype(I,/obj/item/weapon/reagent_containers/food/snacks))
var/obj/item/weapon/reagent_containers/food/snacks/S = I
if(I.w_class > 2)
- user << "The ingredient is too big for [src]."
+ user << "The ingredient is too big for [src]!"
else if(contents.len >= 20)
- user << "You can't add more ingredients to [src]."
+ user << "You can't add more ingredients to [src]!"
else
if(reagents.has_reagent("water", 10)) //are we starting a soup or a salad?
var/obj/item/weapon/reagent_containers/food/snacks/customizable/A = new/obj/item/weapon/reagent_containers/food/snacks/customizable/soup(get_turf(src))
diff --git a/code/modules/food&drinks/food/snacks.dm b/code/modules/food&drinks/food/snacks.dm
index ebd60167175..f34b33fb441 100644
--- a/code/modules/food&drinks/food/snacks.dm
+++ b/code/modules/food&drinks/food/snacks.dm
@@ -65,7 +65,7 @@
return 0
if(wrapped)
- M << "You can't eat wrapped food!"
+ M << "You can't eat wrapped food!"
return 0
else if(fullness <= 50)
M << "You hungrily [eatverb] some of \the [src] and gobble it down!"
@@ -76,7 +76,7 @@
else if(fullness > 500 && fullness < 600)
M << "You unwillingly [eatverb] a bit of \the [src]."
else if(fullness > (600 * (1 + M.overeatduration / 2000))) // The more you eat - the more you can eat
- M << "You cannot force any more of \the [src] to go down your throat."
+ M << "You cannot force any more of \the [src] to go down your throat!"
return 0
else
if(!isbrain(M)) //If you're feeding it to someone else.
@@ -86,8 +86,8 @@
M.visible_message("[user] attempts to feed [M] [src].", \
"[user] attempts to feed [M] [src].")
else
- M.visible_message("[user] cannot force anymore of [src] down [M]'s throat!", \
- "[user] cannot force anymore of [src] down [M]'s throat!")
+ M.visible_message("[user] cannot force anymore of [src] down [M]'s throat!", \
+ "[user] cannot force anymore of [src] down [M]'s throat!")
return 0
if(!do_mob(user, M))
@@ -97,7 +97,7 @@
"[user] feeds [M] to eat [src].")
else
- user << "[M] doesn't seem to have a mouth!"
+ user << "[M] doesn't seem to have a mouth!"
return
if(reagents) //Handle ingestion of the reagent.
@@ -142,13 +142,13 @@
var/obj/item/weapon/reagent_containers/food/snacks/S = W
if(custom_food_type && ispath(custom_food_type))
if(S.w_class > 2)
- user << "[S] is too big for [src]."
+ user << "[S] is too big for [src]!"
return 0
if(!S.customfoodfilling)
- user << "[src] can't be filled with [S]."
+ user << "[src] can't be filled with [S]!"
return 0
if(contents.len >= 20)
- user << "You can't add more ingredients to [src]."
+ user << "You can't add more ingredients to [src]!"
return 0
var/obj/item/weapon/reagent_containers/food/snacks/customizable/C = new custom_food_type(get_turf(src))
C.initialize_custom_food(src, S, user)
@@ -175,18 +175,18 @@
!(locate(/obj/structure/optable) in src.loc) && \
!(locate(/obj/item/weapon/storage/bag/tray) in src.loc) \
)
- user << "You cannot slice [src] here! You need a table or at least a tray."
+ user << "You cannot slice [src] here! You need a table or at least a tray."
return 1
var/slices_lost = 0
if (accuracy > 1)
user.visible_message( \
- "[user] slices [src].", \
+ "[user] slices [src].", \
"You slice [src]." \
)
else
user.visible_message( \
- "[user] inaccurately slices [src] with [W]!", \
+ "[user] inaccurately slices [src] with [W]!", \
"You inaccurately slice [src] with your [W]!" \
)
slices_lost = rand(1,min(1,round(slices_num/2)))
diff --git a/code/modules/food&drinks/food/snacks/dough.dm b/code/modules/food&drinks/food/snacks/dough.dm
index 7773d08534c..866a3d6fa12 100644
--- a/code/modules/food&drinks/food/snacks/dough.dm
+++ b/code/modules/food&drinks/food/snacks/dough.dm
@@ -20,7 +20,7 @@
user << "You flatten [src]."
qdel(src)
else
- user << "You need to put [src] on a surface to roll it out!"
+ user << "You need to put [src] on a surface to roll it out!"
else
..()
@@ -82,7 +82,7 @@
user << "You flatten [src]."
qdel(src)
else
- user << "You need to put [src] on a surface to roll it out!"
+ user << "You need to put [src] on a surface to roll it out!"
else
..()
diff --git a/code/modules/food&drinks/food/snacks_egg.dm b/code/modules/food&drinks/food/snacks_egg.dm
index 23c80a6bf4b..608064ed01b 100644
--- a/code/modules/food&drinks/food/snacks_egg.dm
+++ b/code/modules/food&drinks/food/snacks_egg.dm
@@ -100,12 +100,12 @@
/obj/item/weapon/reagent_containers/food/snacks/omelette/attackby(obj/item/weapon/W, mob/user, params)
if(istype(W,/obj/item/weapon/kitchen/utensil/fork))
if(W.icon_state == "forkloaded")
- user << "You already have omelette on your fork."
+ user << "You already have omelette on your fork!"
return
W.icon_state = "forkloaded"
user.visible_message( \
- "[user] takes a piece of omelette with their fork!", \
- "You take a piece of omelette with your fork!" \
+ "[user] takes a piece of omelette with their fork!", \
+ "You take a piece of omelette with your fork." \
)
reagents.remove_reagent("nutriment", 1)
if(reagents.total_volume <= 0)
diff --git a/code/modules/food&drinks/kitchen machinery/gibber.dm b/code/modules/food&drinks/kitchen machinery/gibber.dm
index 36862c68452..064e0aeb379 100644
--- a/code/modules/food&drinks/kitchen machinery/gibber.dm
+++ b/code/modules/food&drinks/kitchen machinery/gibber.dm
@@ -124,10 +124,10 @@
if(src.operating)
return
if(!src.occupant)
- visible_message("You hear a loud metallic grinding sound.")
+ visible_message("You hear a loud metallic grinding sound.")
return
use_power(1000)
- visible_message("You hear a loud squelchy grinding sound.")
+ visible_message("You hear a loud squelchy grinding sound.")
src.operating = 1
update_icon()
var/sourcename = src.occupant.real_name
diff --git a/code/modules/food&drinks/kitchen machinery/icecream_vat.dm b/code/modules/food&drinks/kitchen machinery/icecream_vat.dm
index 1965f4cdde4..a42158fca57 100644
--- a/code/modules/food&drinks/kitchen machinery/icecream_vat.dm
+++ b/code/modules/food&drinks/kitchen machinery/icecream_vat.dm
@@ -126,7 +126,7 @@
else
src.visible_message("[user] whips up some [flavour] icecream.")
else
- user << "You don't have the ingredients to make this."
+ user << "You don't have the ingredients to make this!"
/obj/machinery/icecream_vat/Topic(href, href_list)
if(..())
diff --git a/code/modules/food&drinks/kitchen machinery/juicer.dm b/code/modules/food&drinks/kitchen machinery/juicer.dm
index 712dc0c970d..4894af742f3 100644
--- a/code/modules/food&drinks/kitchen machinery/juicer.dm
+++ b/code/modules/food&drinks/kitchen machinery/juicer.dm
@@ -44,7 +44,7 @@
return 1
else
if(!user.unEquip(O))
- user << "\the [O] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return 0
O.loc = src
beaker = O
@@ -56,7 +56,7 @@
user << "It looks as not containing any juice."
return 1
if(!user.unEquip(O))
- user << "\the [O] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return 0
O.loc = src
src.updateUsrDialog()
diff --git a/code/modules/food&drinks/kitchen machinery/microwave.dm b/code/modules/food&drinks/kitchen machinery/microwave.dm
index 48b0cff7ad5..4db5f5ea817 100644
--- a/code/modules/food&drinks/kitchen machinery/microwave.dm
+++ b/code/modules/food&drinks/kitchen machinery/microwave.dm
@@ -59,24 +59,24 @@
if(src.broken > 0)
if(src.broken == 2 && istype(O, /obj/item/weapon/wirecutters)) // If it's broken and they're using a screwdriver
user.visible_message( \
- "[user] starts to fix part of the microwave.", \
- "You start to fix part of the microwave." \
+ "[user] starts to fix part of the microwave.", \
+ "You start to fix part of the microwave..." \
)
if (do_after(user,20))
user.visible_message( \
- "[user] fixes part of the microwave.", \
- "You have fixed part of the microwave." \
+ "[user] fixes part of the microwave.", \
+ "You fix part of the microwave." \
)
src.broken = 1 // Fix it a bit
else if(src.broken == 1 && istype(O, /obj/item/weapon/weldingtool)) // If it's broken and they're doing the wrench
user.visible_message( \
- "[user] starts to fix part of the microwave.", \
- "You start to fix part of the microwave." \
+ "[user] starts to fix part of the microwave.", \
+ "You start to fix part of the microwave..." \
)
if (do_after(user,20))
user.visible_message( \
- "[user] fixes the microwave.", \
- "You have fixed the microwave." \
+ "[user] fixes the microwave.", \
+ "You fix the microwave." \
)
src.icon_state = "mw"
src.broken = 0 // Fix it!
@@ -84,7 +84,7 @@
src.flags = OPENCONTAINER
return 0 //to use some fuel
else
- user << "It's broken!"
+ user << "It's broken!"
return 1
else if(istype(O, /obj/item/weapon/reagent_containers/spray/))
var/obj/item/weapon/reagent_containers/spray/clean_spray = O
@@ -92,8 +92,8 @@
clean_spray.reagents.remove_reagent("cleaner",clean_spray.amount_per_transfer_from_this,1)
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
user.visible_message( \
- "[user] has cleaned the microwave.", \
- "You have cleaned the microwave." \
+ "[user] has cleaned the microwave.", \
+ "You clean the microwave." \
)
src.dirty = 0 // It's clean!
src.broken = 0 // just to be sure
@@ -102,19 +102,19 @@
src.updateUsrDialog()
return 1 // Disables the after-attack so we don't spray the floor/user.
else
- user << "You need more space cleaner!"
+ user << "You need more space cleaner!"
return 1
else if(istype(O, /obj/item/weapon/soap/)) // If they're trying to clean it then let them
var/obj/item/weapon/soap/P = O
user.visible_message( \
- "[user] starts to clean the microwave.", \
- "You start to clean the microwave." \
+ "[user] starts to clean the microwave.S", \
+ "You start to clean the microwave..." \
)
if (do_after(user, P.cleanspeed))
user.visible_message( \
- "[user] has cleaned the microwave.", \
- "You have cleaned the microwave." \
+ "[user] has cleaned the microwave.", \
+ "You clean the microwave." \
)
src.dirty = 0 // It's clean!
src.broken = 0 // just to be sure
@@ -122,7 +122,7 @@
src.flags = OPENCONTAINER
else if(src.dirty==100) // The microwave is all dirty so can't be used!
- user << "It's dirty!"
+ user << "It's dirty!"
return 1
else if(istype(O, /obj/item/weapon/storage/bag/tray))
@@ -130,7 +130,7 @@
var/loaded = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/S in T.contents)
if (contents.len>=max_n_of_items)
- user << "[src] is full, you cannot put more."
+ user << "[src] is full, you cannot put more!"
return 1
T.remove_from_storage(S, src)
loaded++
@@ -141,16 +141,16 @@
else if(istype(O,/obj/item/weapon/reagent_containers/food/snacks))
if (contents.len>=max_n_of_items)
- user << "[src] is full, you cannot put more."
+ user << "[src] is full, you cannot put more!"
return 1
else
// user.unEquip(O) //This just causes problems so far as I can tell. -Pete
if(!user.drop_item())
- user << "\the [O] is stuck to your hand, you cannot put it in \the [src]"
+ user << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return 0
O.loc = src
user.visible_message( \
- "[user] has added \the [O] to \the [src].", \
+ "[user] has added \the [O] to \the [src].", \
"You add \the [O] to \the [src].")
else
@@ -272,7 +272,7 @@
return 0
/obj/machinery/microwave/proc/start()
- visible_message("The microwave turns on.", "You hear a microwave.")
+ visible_message("The microwave turns on.", "You hear a microwave humming.")
operating = 1
icon_state = "mw1"
updateUsrDialog()
@@ -298,7 +298,7 @@
/obj/machinery/microwave/proc/muck_finish()
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
- visible_message("The microwave gets covered in muck!")
+ visible_message("The microwave gets covered in muck!")
dirty = 100 // Make it dirty so it can't be used util cleaned
icon_state = "mwbloody" // Make it look dirty too
operating = 0 // Turn it off again aferwards
@@ -313,7 +313,7 @@
s.set_up(2, 1, src)
s.start()
icon_state = "mwb" // Make it look all busted up and shit
- visible_message("The microwave breaks!") //Let them know they're stupid
+ visible_message("The microwave breaks!") //Let them know they're stupid
broken = 2 // Make it broken so it can't be used util fixed
flags = null //So you can't add condiments
operating = 0 // Turn it off again aferwards
diff --git a/code/modules/food&drinks/kitchen machinery/processor.dm b/code/modules/food&drinks/kitchen machinery/processor.dm
index 32753bfb10a..cd87e36e038 100644
--- a/code/modules/food&drinks/kitchen machinery/processor.dm
+++ b/code/modules/food&drinks/kitchen machinery/processor.dm
@@ -84,8 +84,8 @@
if (O.client) //grief-proof
O.loc = loc
O.visible_message("Suddenly [O] jumps out from the processor!", \
- "You jump out from the processor", \
- "You hear chimpering")
+ "You jump out from the processor!", \
+ "You hear chimpering.")
return
var/obj/item/weapon/reagent_containers/glass/bucket/bucket_of_blood = new(loc)
var/datum/reagent/blood/B = new()
@@ -121,10 +121,10 @@
/obj/machinery/processor/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(src.processing)
- user << "The processor is in the process of processing."
+ user << "The processor is in the process of processing!"
return 1
if(src.contents.len > 0) //TODO: several items at once? several different items?
- user << "Something is already in the processing chamber."
+ user << "Something is already in the processing chamber!"
return 1
if(default_unfasten_wrench(user, O))
return
@@ -137,7 +137,7 @@
var/datum/food_processor_process/P = select_recipe(what)
if (!P)
- user << "That probably won't blend."
+ user << "That probably won't blend!"
return 1
user.visible_message("[user] put [what] into [src].", \
"You put the [what] into [src].")
@@ -149,10 +149,10 @@
if (src.stat != 0) //NOPOWER etc
return
if(src.processing)
- user << "The processor is in the process of processing."
+ user << "The processor is in the process of processing!"
return 1
if(src.contents.len == 0)
- user << "The processor is empty."
+ user << "The processor is empty!"
return 1
for(var/O in src.contents)
var/datum/food_processor_process/P = select_recipe(O)
@@ -160,15 +160,15 @@
log_admin("DEBUG: [O] in processor havent suitable recipe. How do you put it in?") //-rastaf0
continue
src.processing = 1
- user.visible_message("[user] turns on \a [src].", \
- "You turn on \a [src].", \
- "You hear a food processor")
+ user.visible_message("[user] turns on \a [src].", \
+ "You turn on \a [src].", \
+ "You hear a food processor.")
playsound(src.loc, 'sound/machines/blender.ogg', 50, 1)
use_power(500)
sleep(P.time)
P.process_food(src.loc, O)
src.processing = 0
- src.visible_message("\the [src] finished processing.")
+ src.visible_message("\the [src] finishes processing.")
/obj/machinery/processor/verb/eject()
set category = "Object"
diff --git a/code/modules/food&drinks/kitchen machinery/smartfridge.dm b/code/modules/food&drinks/kitchen machinery/smartfridge.dm
index f9c5bdb002e..35c84a26620 100644
--- a/code/modules/food&drinks/kitchen machinery/smartfridge.dm
+++ b/code/modules/food&drinks/kitchen machinery/smartfridge.dm
@@ -42,12 +42,12 @@
return 0
if(contents.len >= max_n_of_items)
- user << "\The [src] is full."
+ user << "\The [src] is full!"
return 0
if(accept_check(O))
load(O)
- user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].")
+ user.visible_message("[user] has added \the [O] to \the [src].", "You add \the [O] to \the [src].")
updateUsrDialog()
return 1
@@ -62,7 +62,7 @@
load(G)
loaded++
else
- user << "\The [src] smartly refuses [O]."
+ user << "\The [src] smartly refuses [O]."
updateUsrDialog()
return 0
@@ -70,15 +70,15 @@
// this code follows storage items and trays only.
if(loaded)
if(contents.len >= max_n_of_items)
- user.visible_message("[user] loads \the [src] with \the [O].", \
+ user.visible_message("[user] loads \the [src] with \the [O].", \
"You fill \the [src] with \the [O].")
else
- user.visible_message("[user] loads \the [src] with \the [O].", \
+ user.visible_message("[user] loads \the [src] with \the [O].", \
"You load \the [src] with \the [O].")
if(O.contents.len > 0)
- user << "Some items are refused."
+ user << "Some items are refused."
else
- user << "There is nothing in [O] to put in [src]."
+ user << "There is nothing in [O] to put in [src]!"
return 0
updateUsrDialog()
@@ -95,7 +95,7 @@
if(istype(O.loc,/mob))
var/mob/M = O.loc
if(!M.unEquip(O))
- usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]"
+ usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return
else if(istype(O.loc,/obj/item/weapon/storage))
var/obj/item/weapon/storage/S = O.loc
diff --git a/code/modules/holiday/halloween.dm b/code/modules/holiday/halloween.dm
index 1f74c911de0..5f83a701ac6 100644
--- a/code/modules/holiday/halloween.dm
+++ b/code/modules/holiday/halloween.dm
@@ -279,11 +279,11 @@
/mob/living/simple_animal/hostile/retaliate/clown/insane/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O,/obj/item/weapon/nullrod))
if(prob(5))
- visible_message("[src] finally found the peace it deserves. You hear honks echoing off into the distance.")
+ visible_message("[src] finally found the peace it deserves. You hear honks echoing off into the distance.")
playsound(loc, 'sound/spookoween/insane_low_laugh.ogg', 300, 1)
qdel(src)
else
- visible_message("[src] seems to be resisting the effect!")
+ visible_message("[src] seems to be resisting the effect!")
else
..()
diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm
index 3c4002b026b..41d7dedaaa5 100644
--- a/code/modules/hydroponics/biogenerator.dm
+++ b/code/modules/hydroponics/biogenerator.dm
@@ -82,7 +82,7 @@
else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown))
- user << "You cannot put this in [src.name]"
+ user << "You cannot put this in [src.name]!"
else
var/i = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents)
diff --git a/code/modules/hydroponics/grown.dm b/code/modules/hydroponics/grown.dm
index 200846f6c52..75e14801e91 100644
--- a/code/modules/hydroponics/grown.dm
+++ b/code/modules/hydroponics/grown.dm
@@ -204,7 +204,7 @@
qdel(src)
return
else
- user << "You need five lengths of cable to make a potato battery."
+ user << "You need five lengths of cable to make a potato battery!"
return
@@ -806,7 +806,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/proc/squish(atom/target)
new splat(src.loc)
- src.visible_message("The [src.name] has been squashed.","You hear a smack.")
+ src.visible_message("The [src.name] has been squashed.","You hear a smack.")
for(var/atom/A in get_turf(target))
src.reagents.reaction(A)
@@ -834,7 +834,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/killer/attack_self(mob/user as mob)
if(awakening || istype(user.loc,/turf/space))
return
- user << "You begin to awaken the Killer Tomato."
+ user << "You begin to awaken the Killer Tomato..."
awakening = 1
spawn(30)
@@ -898,7 +898,7 @@ obj/item/weapon/reagent_containers/food/snacks/grown/shell/eggy/add_juice()
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace/attack_self(var/mob/user)
squish(user)
user.drop_item()
- src.visible_message("[user] squashes the [src.name].","You hear a smack.")
+ src.visible_message("[user] squashes the [src.name].","You hear a smack.")
qdel(src)
/obj/item/weapon/reagent_containers/food/snacks/grown/tomato/blue/bluespace/squish(atom/squishee)
diff --git a/code/modules/hydroponics/growninedible.dm b/code/modules/hydroponics/growninedible.dm
index f3993846124..0de365ecdfc 100644
--- a/code/modules/hydroponics/growninedible.dm
+++ b/code/modules/hydroponics/growninedible.dm
@@ -75,7 +75,7 @@
if(ST != plank && istype(ST, plank_type) && ST.amount < ST.max_amount)
ST.attackby(plank, user) //we try to transfer all old unfinished stacks to the new stack we created.
if(plank.amount > old_plank_amount)
- user << "You add the newly-formed [plank_name] to the stack. It now contains [plank.amount] [plank_name]."
+ user << "You add the newly-formed [plank_name] to the stack. It now contains [plank.amount] [plank_name]."
qdel(src)
if(is_type_in_list(W,accepted))
@@ -89,7 +89,7 @@
qdel(src)
return
else
- usr << " You must dry this first."
+ usr << " You must dry this first!"
/obj/item/weapon/grown/log/steel
seed = /obj/item/seeds/steelmycelium
@@ -152,7 +152,7 @@
if(endurance > 0)
endurance -= rand(1, (endurance / 3) + 1)
else
- usr << "All the petals have fallen off the [name] from violent whacking."
+ usr << "All the petals have fallen off the [name] from violent whacking!"
usr.unEquip(src)
qdel(src)
diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm
index d3a74ed88be..3ae3ad8741f 100644
--- a/code/modules/hydroponics/hydroponics.dm
+++ b/code/modules/hydroponics/hydroponics.dm
@@ -586,7 +586,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
if(istype(reagent_source, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/syr = reagent_source
if(syr.mode != 1)
- user << "You can't get any extract out of this plant." //That. Gives me an idea...
+ user << "You can't get any extract out of this plant." //That. Gives me an idea...
return
if(!reagent_source.reagents.total_volume)
@@ -650,7 +650,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
else if(istype(O, /obj/item/seeds/))
if(!planted)
user.unEquip(O)
- user << "You plant [O]."
+ user << "You plant [O]."
dead = 0
myseed = O
planted = 1
@@ -692,11 +692,11 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
else if(istype(O, /obj/item/weapon/minihoe))
if(weedlevel > 0)
- user.visible_message("[user] uproots the weeds.", "You remove the weeds from [src].")
+ user.visible_message("[user] uproots the weeds.", "You remove the weeds from [src].")
weedlevel = 0
update_icon()
else
- user << "This plot is completely devoid of weeds. It doesn't need uprooting."
+ user << "This plot is completely devoid of weeds! It doesn't need uprooting."
else if(istype(O, /obj/item/weapon/storage/bag/plants))
attack_hand(user)
@@ -708,28 +708,28 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
else if(istype(O, /obj/item/weapon/wrench) && unwrenchable)
if(anchored == 2)
- user << "Unscrew the hoses first!"
+ user << "Unscrew the hoses first!"
return
if(!anchored && !isinspace())
- user.visible_message("[user] begins to wrench [src] into place.", \
- "You begin to wrench [src] in place.")
+ user.visible_message("[user] begins to wrench [src] into place.", \
+ "You begin to wrench [src] in place...")
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
if (do_after(user, 20))
if(anchored)
return
anchored = 1
- user.visible_message("[user] wrenches [src] into place.", \
+ user.visible_message("[user] wrenches [src] into place.", \
"You wrench [src] in place.")
else if(anchored)
- user.visible_message("[user] begins to unwrench [src].", \
- "You begin to unwrench [src].")
+ user.visible_message("[user] begins to unwrench [src].", \
+ "You begin to unwrench [src]...")
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
if (do_after(user, 20))
if(!anchored)
return
anchored = 0
- user.visible_message("[user] unwrenches [src].", \
+ user.visible_message("[user] unwrenches [src].", \
"You unwrench [src].")
else if(istype(O, /obj/item/weapon/screwdriver) && unwrenchable) //THIS NEED TO BE DONE DIFFERENTLY, SOMEONE REFACTOR THE TRAY CODE ALREADY
@@ -737,12 +737,12 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
if(anchored == 2)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
anchored = 1
- user << "You unscrew \the [src]'s hoses."
+ user << "You unscrew \the [src]'s hoses."
else if(anchored == 1)
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
anchored = 2
- user << "You screw in \the [src]'s hoses."
+ user << "You screw in \the [src]'s hoses."
for(var/obj/machinery/hydroponics/h in range(1,src))
spawn()
@@ -758,7 +758,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
else if(dead)
planted = 0
dead = 0
- user << "You remove the dead plant from [src]."
+ user << "You remove the dead plant from [src]."
qdel(myseed)
update_icon()
else
@@ -824,7 +824,7 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
break
else //If the player has ghosted from his corpse before blood was drawn, his ckey is no longer attached to the mob, so we need to match up the cloned player through the mind key
for(var/mob/M in player_list)
- if(ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == 2 && !M.suiciding)
+ if(mind && M.mind && ckey(M.mind.key) == ckey(mind.key) && M.ckey && M.client && M.stat == 2 && !M.suiciding)
if(istype(M, /mob/dead/observer))
var/mob/dead/observer/O = M
if(!O.can_reenter_corpse)
@@ -870,11 +870,11 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
harvest = 0
lastproduce = age
if(istype(myseed,/obj/item/seeds/replicapod/))
- user << "You harvest from the [myseed.plantname]."
+ user << "You harvest from the [myseed.plantname]."
else if(myseed.getYield() <= 0)
- user << "You fail to harvest anything useful."
+ user << "You fail to harvest anything useful!"
else
- user << "You harvest [myseed.getYield()] items from the [myseed.plantname]."
+ user << "You harvest [myseed.getYield()] items from the [myseed.plantname]."
if(myseed.oneharvest)
qdel(myseed)
planted = 0
@@ -986,5 +986,5 @@ obj/machinery/hydroponics/attackby(var/obj/item/O as obj, var/mob/user as mob, p
/obj/machinery/hydroponics/soil/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
..()
if(istype(O, /obj/item/weapon/shovel))
- user << "You clear up [src]!"
+ user << "You clear up [src]!"
qdel(src)
diff --git a/code/modules/hydroponics/seed_extractor.dm b/code/modules/hydroponics/seed_extractor.dm
index 24c611329c0..d3b7b030ea4 100644
--- a/code/modules/hydroponics/seed_extractor.dm
+++ b/code/modules/hydroponics/seed_extractor.dm
@@ -71,7 +71,7 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob
return
if(!user.drop_item()) //couldn't drop the item
- user << "\The [O] is stuck to your hand, you cannot put it in the seed extractor!"
+ user << "\The [O] is stuck to your hand, you cannot put it in the seed extractor!"
return
if(O && O.loc)
@@ -86,7 +86,7 @@ obj/machinery/seed_extractor/attackby(var/obj/item/O as obj, var/mob/user as mob
updateUsrDialog()
return
else
- user << "You can't extract any seeds from \the [O.name]."
+ user << "You can't extract any seeds from \the [O.name]!"
datum/seed_pile
var/name = ""
@@ -171,7 +171,7 @@ obj/machinery/seed_extractor/proc/add(var/obj/item/seeds/O as obj)
if(istype(O.loc,/mob))
var/mob/M = O.loc
if(!M.unEquip(O))
- usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]"
+ usr << "\the [O] is stuck to your hand, you cannot put it in \the [src]!"
return
else if(istype(O.loc,/obj/item/weapon/storage))
var/obj/item/weapon/storage/S = O.loc
diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm
index 56c309a95fc..3d63316edaa 100644
--- a/code/modules/hydroponics/seeds.dm
+++ b/code/modules/hydroponics/seeds.dm
@@ -107,12 +107,12 @@
mutant_color = bloodSample.data["mutant_color"]
factions = bloodSample.data["factions"]
W.reagents.clear_reagents()
- user << "You inject the contents of the syringe into the seeds."
+ user << "You inject the contents of the syringe into the seeds."
contains_sample = 1
else
- user << "The seeds reject the sample!"
+ user << "The seeds reject the sample!"
else
- user << "The seeds already contain a genetic sample."
+ user << "The seeds already contain a genetic sample!"
..()
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 1e5aa530242..1b0fc3f450d 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -81,7 +81,7 @@
name = ("bookcase ([sanitize(newname)])")
else if(istype(I, /obj/item/weapon/crowbar))
if(contents.len)
- user << "You need to remove the books first."
+ user << "You need to remove the books first!"
else
playsound(loc, 'sound/items/Crowbar.ogg', 100, 1)
user << "You pry the shelf out."
@@ -191,7 +191,7 @@
if(is_blind(user))
return
if(unique)
- user << "These pages don't seem to take the ink well. Looks like you can't modify it."
+ user << "These pages don't seem to take the ink well! Looks like you can't modify it."
return
var/choice = input("What would you like to change?") in list("Title", "Contents", "Author", "Cancel")
switch(choice)
@@ -251,7 +251,7 @@
user << "[I]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'"
else if(istype(I, /obj/item/weapon/kitchenknife) || istype(I, /obj/item/weapon/wirecutters))
- user << "You begin to carve out [title]."
+ user << "You begin to carve out [title]..."
if(do_after(user, 30))
user << "You carve out the pages from [title]! You didn't want to read it anyway."
var/obj/item/weapon/storage/book/B = new
diff --git a/code/modules/mining/laborcamp/laborshuttle.dm b/code/modules/mining/laborcamp/laborshuttle.dm
index 5588b29e662..7f0992a502f 100644
--- a/code/modules/mining/laborcamp/laborshuttle.dm
+++ b/code/modules/mining/laborcamp/laborshuttle.dm
@@ -20,10 +20,10 @@
if(href_list["move"])
var/obj/docking_port/mobile/M = SSshuttle.getShuttle("laborcamp")
if(!M)
- usr << "Cannot locate shuttle."
+ usr << "Cannot locate shuttle!"
return 0
var/obj/docking_port/stationary/S = M.get_docked()
if(S && S.name == "laborcamp_away")
- usr << "Shuttle is already at the outpost."
+ usr << "Shuttle is already at the outpost!"
return 0
..()
\ No newline at end of file
diff --git a/code/modules/mining/mine_items.dm b/code/modules/mining/mine_items.dm
index 717d2ea6512..e420be8f389 100644
--- a/code/modules/mining/mine_items.dm
+++ b/code/modules/mining/mine_items.dm
@@ -140,7 +140,7 @@
playsound(src, 'sound/weapons/smg_empty_alarm.ogg',50,1)
warned = 1
if(!R.cell.use(drillcost))
- R << "You don't have enough charge to drill."
+ R << "You don't have enough charge to drill!"
return 0
return 1
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index cdde315c9c5..c8469966af4 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -238,7 +238,7 @@
name = "gibtonite deposit"
desc = "An active gibtonite reserve. Run!"
stage = 1
- visible_message("There was gibtonite inside! It's going to explode!")
+ visible_message("There was gibtonite inside! It's going to explode!")
var/turf/bombturf = get_turf(src)
var/area/A = get_area(bombturf)
@@ -406,7 +406,7 @@
/turf/simulated/mineral/attackby(var/obj/item/weapon/pickaxe/P as obj, mob/user as mob, params)
if (!user.IsAdvancedToolUser())
- usr << "You don't have the dexterity to do this!"
+ usr << "You don't have the dexterity to do this!"
return
if (istype(P, /obj/item/weapon/pickaxe))
@@ -421,13 +421,13 @@
if(!RD.use_robot_power(user))
return
else if(!D.bcell.use(D.drillcost))
- user << "Your [D.name] doesn't have enough charge."
+ user << "Your [D.name] doesn't have enough charge!"
return
if(last_act+P.digspeed > world.time)//prevents message spam
return
last_act = world.time
- user << "You start picking."
+ user << "You start picking..."
P.playDigSound()
if(do_after(user,P.digspeed))
@@ -544,15 +544,15 @@
return
if (dug)
- user << "This area has already been dug."
+ user << "This area has already been dug!"
return
- user << "You start digging."
+ user << "You start digging..."
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
sleep(20)
if ((user.loc == T && user.get_active_hand() == W))
- user << "You dug a hole."
+ user << "You dig a hole."
gets_dug()
return
@@ -563,15 +563,15 @@
return
if (dug)
- user << "This area has already been dug."
+ user << "This area has already been dug!"
return
- user << "You start digging."
+ user << "You start digging..."
playsound(src, 'sound/effects/shovel_dig.ogg', 50, 1) //FUCK YO RUSTLE I GOT'S THE DIGS SOUND HERE
sleep(P.digspeed)
if ((user.loc == T && user.get_active_hand() == W))
- user << "You dug a hole."
+ user << "You dig a hole."
gets_dug()
return
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index eeed29889c6..bf394e7ac21 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -68,7 +68,7 @@
if(istype(I, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/W = I
if(W.welding)
- user << "You can't hit a high enough temperature to smelt [src] properly."
+ user << "You can't hit a high enough temperature to smelt [src] properly!"
else
..()
@@ -123,7 +123,7 @@
/obj/item/weapon/twohanded/required/gibtonite/attackby(obj/item/I, mob/user, params)
if(!wires && istype(I, /obj/item/device/assembly/igniter))
- user.visible_message("[user] attaches [I] to [src]!")
+ user.visible_message("[user] attaches [I] to [src].", "You attach [I] to [src].")
wires = new(src)
attacher = key_name(user)
qdel(I)
@@ -141,7 +141,7 @@
if(primed)
if(istype(I, /obj/item/device/mining_scanner) || istype(I, /obj/item/device/t_scanner/adv_mining_scanner) || istype(I, /obj/item/device/multitool))
primed = 0
- user.visible_message("The chain reaction was stopped! ...The ore's quality went down.")
+ user.visible_message("The chain reaction was stopped! ...The ore's quality looks diminished.", "You stopped the chain reaction. ...The ore's quality looks diminished.")
icon_state = "Gibtonite ore"
quality = 1
return
@@ -185,7 +185,7 @@
else if(triggered_by == 2)
log_game("A signal has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z]). Igniter attacher: [attacher].")
else
- user.visible_message("[user] strikes \the [src], causing a chain reaction!")
+ user.visible_message("[user] strikes \the [src], causing a chain reaction!", "You strike \the [src], causing a chain reaction.")
log_game("[key_name(user)] has primed a [name] for detonation at [A.name]([bombturf.x],[bombturf.y],[bombturf.z])")
spawn(det_time)
if(primed)
@@ -280,12 +280,22 @@
sideslist = list("heads")
value = 20
+/obj/item/weapon/coin/antagtoken
+ name = "antag token"
+ icon_state = "coin_valid_valid"
+ cmineral = "valid"
+ desc = "A novelty coin that helps the heart know what hard evidence cannot prove."
+ sideslist = list("valid", "salad")
+ value = 20
+
+/obj/item/weapon/coin/antagtoken/New()
+ return
/obj/item/weapon/coin/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/CC = W
if(string_attached)
- user << "There already is a string attached to this coin."
+ user << "There already is a string attached to this coin!"
return
if (CC.use(1))
@@ -293,7 +303,7 @@
string_attached = 1
user << "You attach a string to the coin."
else
- user << "You need one length of cable to attach a string to the coin."
+ user << "You need one length of cable to attach a string to the coin!"
return
else if(istype(W,/obj/item/weapon/wirecutters))
@@ -317,6 +327,6 @@
icon_state = "coin_[cmineral]_[coinflip]"
playsound(user.loc, 'sound/items/coinflip.ogg', 50, 1)
if(do_after(user, 15))
- user.visible_message("[user] has flipped [src]. It lands on [coinflip].", \
+ user.visible_message("[user] has flipped [src]. It lands on [coinflip].", \
"You flip [src]. It lands on [coinflip].", \
- "You hear the clattering of loose change.")
\ No newline at end of file
+ "You hear the clattering of loose change.")
\ No newline at end of file
diff --git a/code/modules/mob/dead/observer/observer.dm b/code/modules/mob/dead/observer/observer.dm
index e569986704f..56bcf7503cb 100644
--- a/code/modules/mob/dead/observer/observer.dm
+++ b/code/modules/mob/dead/observer/observer.dm
@@ -203,7 +203,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
if(following && following == target)
return
following = target
- src << "Now following [target]"
+ src << "Now following [target]."
spawn(0)
var/turf/pos = get_turf(src)
while(loc == pos && target && following == target && client)
@@ -336,7 +336,7 @@ This is the proc mobs get to turn into a ghost. Forked from ghostize due to comp
/mob/dead/observer/pointed(atom/A as mob|obj|turf in view())
if(!..())
return 0
- usr.visible_message("[src] points to [A]")
+ usr.visible_message("[src] points to [A].")
return 1
/mob/dead/observer/verb/view_manfiest()
diff --git a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
index f5fa526654f..8b27de42f94 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/alien_powers.dm
@@ -129,9 +129,9 @@ Doesn't work on other aliens/AI.*/
M.adjustToxLoss(amount)
user.adjustToxLoss(-amount)
M << "[user] has transfered [amount] plasma to you."
- user << {"You have trasferred [amount] plasma to [M]"}
+ user << {"You trasfer [amount] plasma to [M]"}
else
- user << "You need to be closer."
+ user << "You need to be closer!"
return
/obj/effect/proc_holder/alien/acid
@@ -255,10 +255,9 @@ Doesn't work on other aliens/AI.*/
/obj/effect/proc_holder/alien/regurgitate/fire(var/mob/living/carbon/alien/user)
if(user.stomach_contents.len)
for(var/atom/movable/A in user.stomach_contents)
- if(A in user.stomach_contents)
- user.stomach_contents.Remove(A)
- A.loc = user.loc
- //Paralyse(10)
+ user.stomach_contents.Remove(A)
+ A.loc = user.loc
+ A.update_pipe_vision()
user.visible_message("[user] hurls out the contents of their stomach!")
return
diff --git a/code/modules/mob/living/carbon/alien/larva/powers.dm b/code/modules/mob/living/carbon/alien/larva/powers.dm
index cf2c73a96c6..469e4023946 100644
--- a/code/modules/mob/living/carbon/alien/larva/powers.dm
+++ b/code/modules/mob/living/carbon/alien/larva/powers.dm
@@ -16,7 +16,7 @@
else
user.layer = MOB_LAYER
user.visible_message("[user.] slowly peaks up from the ground...", \
- "You have stopped hiding.")
+ "You stop hiding.")
return 1
diff --git a/code/modules/mob/living/carbon/brain/MMI.dm b/code/modules/mob/living/carbon/brain/MMI.dm
index 49a3bc558d3..0b649aec99d 100644
--- a/code/modules/mob/living/carbon/brain/MMI.dm
+++ b/code/modules/mob/living/carbon/brain/MMI.dm
@@ -22,12 +22,12 @@
if(istype(O,/obj/item/organ/brain)) //Time to stick a brain in it --NEO
var/obj/item/organ/brain/newbrain = O
if(brain)
- user << "There's already a brain in the MMI!"
+ user << "There's already a brain in the MMI!"
return
if(!newbrain.brainmob)
- user << "You aren't sure where this brain came from, but you're pretty sure it's a useless brain."
+ user << "You aren't sure where this brain came from, but you're pretty sure it's a useless brain!"
return
- visible_message("[user] sticks \a [newbrain] into \the [src]")
+ visible_message("[user] sticks \a [newbrain] into \the [src].")
brainmob = newbrain.brainmob
newbrain.brainmob = null
@@ -67,9 +67,9 @@
/obj/item/device/mmi/attack_self(mob/user as mob)
if(!brain)
- user << "You upend the MMI, but there's nothing in it."
+ user << "You upend the MMI, but there's nothing in it!"
else if(locked)
- user << "You upend the MMI, but the brain is clamped into place."
+ user << "You upend the MMI, but the brain is clamped into place!"
else
user << "You upend the MMI, spilling the brain onto the floor."
@@ -123,7 +123,7 @@
set popup_menu = 0
if(brainmob.stat)
- brainmob << "Can't do that while incapacitated or dead."
+ brainmob << "Can't do that while incapacitated or dead!"
radio.listening = radio.listening==1 ? 0 : 1
brainmob << "Radio is [radio.listening==1 ? "now" : "no longer"] receiving broadcast."
diff --git a/code/modules/mob/living/carbon/brain/brain_item.dm b/code/modules/mob/living/carbon/brain/brain_item.dm
index 4bd461376ed..ed151132066 100644
--- a/code/modules/mob/living/carbon/brain/brain_item.dm
+++ b/code/modules/mob/living/carbon/brain/brain_item.dm
@@ -52,7 +52,7 @@
var/mob/living/carbon/human/H = M
if(istype(M, /mob/living/carbon/human) && ((H.head && H.head.flags & HEADCOVERSEYES) || (H.wear_mask && H.wear_mask.flags & MASKCOVERSEYES) || (H.glasses && H.glasses.flags & GLASSESCOVERSEYES)))
- user << "You're going to need to remove their head cover first."
+ user << "You're going to need to remove their head cover first!"
return
//since these people will be dead M != usr
@@ -63,15 +63,15 @@
if(O == (user || M))
continue
if(M == user)
- O << "[user] inserts [src] into \his head!"
+ O << "[user] inserts [src] into \his head!"
else
- O << "[M] has [src] inserted into \his head by [user]."
+ O << "[M] has [src] inserted into \his head by [user]."
if(M != user)
- M << "[user] inserts [src] into your head!"
- user << "You insert [src] into [M]'s head!"
+ M << "[user] inserts [src] into your head."
+ user << "You insert [src] into [M]'s head."
else
- user << "You insert [src] into your head!" //LOL
+ user << "You insert [src] into your head." //LOL
//this might actually be outdated since barring badminnery, a debrain'd body will have any client sucked out to the brain's internal mob. Leaving it anyway to be safe. --NEO
if(M.key)
diff --git a/code/modules/mob/living/carbon/brain/death.dm b/code/modules/mob/living/carbon/brain/death.dm
index 05cc69ba948..5490d786297 100644
--- a/code/modules/mob/living/carbon/brain/death.dm
+++ b/code/modules/mob/living/carbon/brain/death.dm
@@ -1,8 +1,8 @@
/mob/living/carbon/brain/death(gibbed)
if(stat == DEAD) return
if(!gibbed && container && istype(container, /obj/item/device/mmi))//If not gibbed but in a container.
- container.visible_message("[src]'s MMI flatlines!", \
- "You hear something flatline.")
+ container.visible_message("[src]'s MMI flatlines!", \
+ "You hear something flatline.")
if(istype(src,/obj/item/organ/brain/alien))
container.icon_state = "mmi_alien_dead"
else
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index e8ee8511136..bae07c42c8d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -38,9 +38,9 @@
/mob/living/carbon/relaymove(var/mob/user, direction)
if(user in src.stomach_contents)
if(prob(40))
- audible_message("You hear something rumbling inside [src]'s stomach...", \
- "You hear something rumbling.", 4,\
- "Something is rumbling inside your stomach!")
+ audible_message("You hear something rumbling inside [src]'s stomach...", \
+ "You hear something rumbling.", 4,\
+ "Something is rumbling inside your stomach!")
var/obj/item/I = user.get_active_hand()
if(I && I.force)
var/d = rand(round(I.force / 4), I.force)
@@ -84,7 +84,7 @@
src.visible_message(
"[src] was shocked by \the [source]!", \
"You feel a powerful shock coursing through your body!", \
- "You hear a heavy electrical crack." \
+ "You hear a heavy electrical crack." \
)
if(prob(25) && heart_attack)
heart_attack = 0
@@ -170,7 +170,7 @@
eye_stat += rand(2, 4)
else
- src << "Your eyes itch and burn severely!"
+ src << "Your eyes itch and burn severely!"
eye_stat += rand(12, 16)
if(eye_stat > 10)
@@ -406,7 +406,7 @@ var/const/GALOSHES_DONT_HELP = 8
changeNext_move(CLICK_CD_BREAKOUT)
last_special = world.time + CLICK_CD_BREAKOUT
visible_message("[src] attempts to unbuckle themself!", \
- "You attempt to unbuckle yourself. (This will take around one minute and you need to stay still.)")
+ "You attempt to unbuckle yourself... (This will take around one minute and you need to stay still.)")
if(do_after(src, 600, needhand = 0))
if(!buckled)
return
@@ -449,7 +449,7 @@ var/const/GALOSHES_DONT_HELP = 8
var/displaytime = breakouttime / 600
if(!cuff_break)
visible_message("[src] attempts to remove [I]!")
- src << "You attempt to remove [I]. (This will take around [displaytime] minutes and you need to stand still.)"
+ src << "You attempt to remove [I]... (This will take around [displaytime] minutes and you need to stand still.)"
if(do_after(src, breakouttime, 10, 0))
if(I.loc != src || buckled)
return
@@ -474,7 +474,7 @@ var/const/GALOSHES_DONT_HELP = 8
else
breakouttime = 50
visible_message("[src] is trying to break [I]!")
- src << "You attempt to break [I]. (This will take around 5 seconds and you need to stand still.)"
+ src << "You attempt to break [I]... (This will take around 5 seconds and you need to stand still.)"
if(do_after(src, breakouttime, needhand = 0))
if(!I.loc || buckled)
return
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index 676caeff4e7..c1a0e21b364 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -282,20 +282,20 @@
if(!I || !L || I.loc != src) //no item, no limb, or item is not in limb (the person atleast) anymore
return
var/time_taken = I.embedded_unsafe_removal_time*I.w_class
- usr.visible_message("[usr] attempts to remove [I] from their [L.getDisplayName()]!","You attempt to remove [I] from your [L.getDisplayName()], it will take [time_taken/10] seconds.")
+ usr.visible_message("[usr] attempts to remove [I] from their [L.getDisplayName()].","You attempt to remove [I] from your [L.getDisplayName()]... (It will take [time_taken/10] seconds.)")
if(do_after(usr, time_taken, needhand = 1))
L.embedded_objects -= I
L.take_damage(I.embedded_unsafe_removal_pain_multiplier*I.w_class)//It hurts to rip it out, get surgery you dingus.
I.loc = get_turf(src)
usr.put_in_hands(I)
usr.emote("scream")
- usr.visible_message("[usr] successfully rips [I] out of their [L.getDisplayName()]!","You successfully remove [I] from your [L.getDisplayName()]!")
+ usr.visible_message("[usr] successfully rips [I] out of their [L.getDisplayName()]!","You successfully remove [I] from your [L.getDisplayName()].")
return
if(href_list["item"])
var/slot = text2num(href_list["item"])
if(slot in check_obscured_slots())
- usr << "You can't reach that. Something is covering it."
+ usr << "You can't reach that! Something is covering it."
return
if(href_list["pockets"])
@@ -309,7 +309,7 @@
var/delay_denominator = 1
if(pocket_item && !(pocket_item.flags&ABSTRACT))
if(pocket_item.flags & NODROP)
- usr << "You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!"
+ usr << "You try to empty [src]'s [pocket_side] pocket, it seems to be stuck!"
usr << "You try to empty [src]'s [pocket_side] pocket."
else if(place_item && place_item.mob_can_equip(src, pocket_id, 1) && !(place_item.flags&ABSTRACT))
usr << "You try to place [place_item] into [src]'s [pocket_side] pocket."
@@ -678,7 +678,7 @@
if(health >= 0)
if(src == M)
visible_message( \
- "[src] examines \himself.", \
+ "[src] examines \himself.", \
"You check yourself for injuries.")
for(var/obj/item/organ/limb/org in organs)
@@ -734,16 +734,16 @@
src << "[C.name] is dead!"
return
if(is_mouth_covered())
- src << "Remove your mask!"
+ src << "Remove your mask first!"
return 0
if(C.is_mouth_covered())
- src << "Remove their mask!"
+ src << "Remove their mask first!"
return 0
if(C.cpr_time < world.time + 30)
add_logs(src, C, "CPRed")
visible_message("[src] is trying to perform CPR on [C.name]!", \
- "You try to perform CPR on [C.name]. Hold still!")
+ "You try to perform CPR on [C.name]... Hold still!")
if(!do_mob(src, C))
src << "You fail to perform CPR on [C]!"
return 0
@@ -753,8 +753,8 @@
var/suff = min(C.getOxyLoss(), 7)
C.adjustOxyLoss(-suff)
C.updatehealth()
- visible_message("[src] performs CPR on [C.name]!")
- C << "You feel a breath of fresh air enter your lungs. It feels good."
+ src.visible_message("[src] performs CPR on [C.name]!", "You perform CPR on [C.name].")
+ C << "You feel a breath of fresh air enter your lungs... It feels good..."
/mob/living/carbon/human/generateStaticOverlay()
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index fd919216a09..980ba2ce475 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -146,7 +146,7 @@ emp_act
else
return 0
- var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened a hit to your [hit_area].")
+ var/armor = run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened a hit to your [hit_area].")
if(armor >= 100) return 0
var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords)
@@ -220,7 +220,7 @@ emp_act
for(var/obj/item/organ/limb/L in src.organs)
if(L.status == ORGAN_ROBOTIC)
if(!informed)
- src << "You feel a sharp pain as your robotic limbs overload."
+ src << "You feel a sharp pain as your robotic limbs overload."
informed = 1
switch(severity)
if(1)
@@ -250,7 +250,7 @@ emp_act
update_inv_wear_mask()
update_inv_head()
else
- src << "Your [head_clothes.name] protects your head and face from the acid!"
+ src << "Your [head_clothes.name] protects your head and face from the acid!"
else
. = get_organ("head")
if(.)
@@ -270,7 +270,7 @@ emp_act
update_inv_w_uniform()
update_inv_wear_suit()
else
- src << "Your [chest_clothes.name] protects your body from the acid!"
+ src << "Your [chest_clothes.name] protects your body from the acid!"
else
. = get_organ("chest")
if(.)
@@ -300,7 +300,7 @@ emp_act
update_inv_w_uniform()
update_inv_wear_suit()
else
- src << "Your [arm_clothes.name] protects your arms and hands from the acid!"
+ src << "Your [arm_clothes.name] protects your arms and hands from the acid!"
else
. = get_organ("r_arm")
if(.)
@@ -325,7 +325,7 @@ emp_act
update_inv_w_uniform()
update_inv_wear_suit()
else
- src << "Your [leg_clothes.name] protects your legs and feet from the acid!"
+ src << "Your [leg_clothes.name] protects your legs and feet from the acid!"
else
. = get_organ("r_leg")
if(.)
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 2bec9a1583b..c7db2dc90c6 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -46,7 +46,7 @@
return 0
if(!w_uniform)
if(!disable_warning)
- src << "You need a jumpsuit before you can attach this [I.name]."
+ src << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if( !(I.slot_flags & SLOT_BELT) )
return
@@ -80,7 +80,7 @@
return 0
if(!w_uniform)
if(!disable_warning)
- src << "You need a jumpsuit before you can attach this [I.name]."
+ src << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if( !(I.slot_flags & SLOT_ID) )
return 0
@@ -92,7 +92,7 @@
return 0
if(!w_uniform)
if(!disable_warning)
- src << "You need a jumpsuit before you can attach this [I.name]."
+ src << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if(I.slot_flags & SLOT_DENYPOCKET)
return
@@ -105,7 +105,7 @@
return 0
if(!w_uniform)
if(!disable_warning)
- src << "You need a jumpsuit before you can attach this [I.name]."
+ src << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if(I.slot_flags & SLOT_DENYPOCKET)
return 0
@@ -119,15 +119,15 @@
return 0
if(!wear_suit)
if(!disable_warning)
- src << "You need a suit before you can attach this [I.name]."
+ src << "You need a suit before you can attach this [I.name]!"
return 0
if(!wear_suit.allowed)
if(!disable_warning)
- usr << "You somehow have a suit with no defined allowed items for suit storage, stop that." //should be src?
+ usr << "You somehow have a suit with no defined allowed items for suit storage, stop that!" //should be src?
return 0
if(I.w_class > 4)
if(!disable_warning)
- usr << "The [I.name] is too big to attach." //should be src?
+ usr << "The [I.name] is too big to attach!" //should be src?
return 0
if( istype(I, /obj/item/device/pda) || istype(I, /obj/item/weapon/pen) || is_type_in_list(I, wear_suit.allowed) ) //ugly and un-polymorphic.
return 1
@@ -163,7 +163,7 @@
var/obj/item/I = H.get_active_hand()
var/obj/item/weapon/storage/S = H.get_inactive_hand()
if(!I)
- H << "You are not holding anything to equip."
+ H << "You are not holding anything to equip!"
return
if(H.equip_to_appropriate_slot(I))
if(hand)
@@ -183,7 +183,7 @@
if(istype(S, /obj/item/weapon/storage) && S.can_be_inserted(I,1))
S.handle_item_insertion(I)
else
- H << "You are unable to equip that."
+ H << "You are unable to equip that!"
/mob/living/carbon/human/proc/equip_in_one_of_slots(obj/item/I, list/slots, qdel_on_fail = 1)
diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm
index 5be1ee2fb9d..090bc46f055 100644
--- a/code/modules/mob/living/carbon/human/species.dm
+++ b/code/modules/mob/living/carbon/human/species.dm
@@ -310,7 +310,7 @@
return 0
if(!H.w_uniform && !nojumpsuit)
if(!disable_warning)
- H << "You need a jumpsuit before you can attach this [I.name]."
+ H << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if( !(I.slot_flags & SLOT_BELT) )
return
@@ -344,7 +344,7 @@
return 0
if(!H.w_uniform && !nojumpsuit)
if(!disable_warning)
- H << "You need a jumpsuit before you can attach this [I.name]."
+ H << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if( !(I.slot_flags & SLOT_ID) )
return 0
@@ -356,7 +356,7 @@
return 0
if(!H.w_uniform && !nojumpsuit)
if(!disable_warning)
- H << "You need a jumpsuit before you can attach this [I.name]."
+ H << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if(I.slot_flags & SLOT_DENYPOCKET)
return
@@ -369,7 +369,7 @@
return 0
if(!H.w_uniform && !nojumpsuit)
if(!disable_warning)
- H << "You need a jumpsuit before you can attach this [I.name]."
+ H << "You need a jumpsuit before you can attach this [I.name]!"
return 0
if(I.slot_flags & SLOT_DENYPOCKET)
return 0
@@ -383,7 +383,7 @@
return 0
if(!H.wear_suit)
if(!disable_warning)
- H << "You need a suit before you can attach this [I.name]."
+ H << "You need a suit before you can attach this [I.name]!"
return 0
if(!H.wear_suit.allowed)
if(!disable_warning)
@@ -849,7 +849,7 @@
else
return 0
- var/armor = H.run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened a hit to your [hit_area].")
+ var/armor = H.run_armor_check(affecting, "melee", "Your armor has protected your [hit_area].", "Your armor has softened a hit to your [hit_area].")
if(armor >= 100) return 0
var/Iforce = I.force //to avoid runtimes on the forcesay checks at the bottom. Some items might delete themselves if you drop them. (stunning yourself, ninja swords)
diff --git a/code/modules/mob/living/carbon/human/species_types.dm b/code/modules/mob/living/carbon/human/species_types.dm
index b9ca12ef44a..f87374ee822 100644
--- a/code/modules/mob/living/carbon/human/species_types.dm
+++ b/code/modules/mob/living/carbon/human/species_types.dm
@@ -72,7 +72,7 @@
if(prob(15))
H.irradiate(rand(30,80))
H.Weaken(5)
- H.visible_message("[H] writhes in pain as \his vacuoles boil.", "[H] writhes in pain as \his vacuoles boil.", "You hear the crunching of leaves.")
+ H.visible_message("[H] writhes in pain as \his vacuoles boil.", "You writhe in pain as your vacuoles boil!", "You hear the crunching of leaves.")
if(prob(80))
randmutb(H)
domutcheck(H,null)
@@ -81,7 +81,7 @@
domutcheck(H,null)
else
H.adjustFireLoss(rand(5,15))
- H.show_message("The radiation beam singes you!")
+ H.show_message("The radiation beam singes you!")
if(/obj/item/projectile/energy/florayield)
H.nutrition = min(H.nutrition+30, NUTRITION_LEVEL_FULL)
return
@@ -232,7 +232,7 @@
// Animated beings of stone. They have increased defenses, and do not need to breathe. They're also slow as fuuuck.
name = "Golem"
id = "golem"
- specflags = list(NOBREATH,HEATRES,COLDRES,NOGUNS,NOBLOOD,RADIMMUNE)
+ specflags = list(NOBREATH,HEATRES,COLDRES,NOGUNS,NOBLOOD,RADIMMUNE,VIRUSIMMUNE)
speedmod = 3
armor = 55
punchmod = 5
@@ -281,7 +281,7 @@
say_mod = "rattles"
sexes = 0
meat = /obj/item/weapon/reagent_containers/food/snacks/meat/slab/human/mutant/skeleton
- specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE)
+ specflags = list(NOBREATH,HEATRES,COLDRES,NOBLOOD,RADIMMUNE,VIRUSIMMUNE)
/*
ZOMBIES
*/
@@ -325,7 +325,7 @@
say_mod = "gibbers"
sexes = 0
invis_sight = SEE_INVISIBLE_LEVEL_ONE
- specflags = list(NOBLOOD,NOBREATH)
+ specflags = list(NOBLOOD,NOBREATH,VIRUSIMMUNE)
var/scientist = 0 // vars to not pollute spieces list with castes
var/agent = 0
var/team = 1
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index 3cc7827073c..8c64cbf773e 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -694,7 +694,7 @@ Sorry Giacom. Please don't be mad :(
// Override if a certain type of mob should be behave differently when stripping items (can't, for example)
/mob/living/stripPanelUnequip(obj/item/what, mob/who, where)
if(what.flags & NODROP)
- src << "You can't remove \the [what.name], it appears to be stuck!"
+ src << "You can't remove \the [what.name], it appears to be stuck!"
return
who.visible_message("[src] tries to remove [who]'s [what.name].", \
"[src] tries to remove [who]'s [what.name].")
@@ -709,7 +709,7 @@ Sorry Giacom. Please don't be mad :(
/mob/living/stripPanelEquip(obj/item/what, mob/who, where)
what = src.get_active_hand()
if(what && (what.flags & NODROP))
- src << "You can't put \the [what.name] on [who], it's stuck to your hand!"
+ src << "You can't put \the [what.name] on [who], it's stuck to your hand!"
return
if(what && what.mob_can_equip(who, where, 1))
visible_message("[src] tries to put [what] on [who].")
diff --git a/code/modules/mob/living/living_defense.dm b/code/modules/mob/living/living_defense.dm
index d5ed917a2bd..6aa9bda4d25 100644
--- a/code/modules/mob/living/living_defense.dm
+++ b/code/modules/mob/living/living_defense.dm
@@ -168,7 +168,7 @@ proc/vol_by_throwforce_and_or_w_class(var/obj/item/I)
var/obj/item/weapon/grab/G = new /obj/item/weapon/grab(user, src)
if(buckled)
- user << "You cannot grab [src], \he is buckled in!"
+ user << "You cannot grab [src], \he is buckled in!"
if(!G) //the grab will delete itself in New if src is anchored
return 0
user.put_in_active_hand(G)
diff --git a/code/modules/mob/living/living_defines.dm b/code/modules/mob/living/living_defines.dm
index c75676e4115..59436c1028b 100644
--- a/code/modules/mob/living/living_defines.dm
+++ b/code/modules/mob/living/living_defines.dm
@@ -42,4 +42,7 @@
var/metabolism_efficiency = 1 //more or less efficiency to metabolize helpful/harmful reagents and regulate body temperature..
var/list/image/staticOverlays = list()
var/has_limbs = 0 //does the mob have distinct limbs?(arms,legs, chest,head)
- var/list/datum/action/actions = list()
\ No newline at end of file
+ var/list/datum/action/actions = list()
+
+ var/list/pipes_shown = list()
+ var/last_played_vent
\ No newline at end of file
diff --git a/code/modules/mob/living/login.dm b/code/modules/mob/living/login.dm
index eb582bbcfa1..0b46914c42b 100644
--- a/code/modules/mob/living/login.dm
+++ b/code/modules/mob/living/login.dm
@@ -10,7 +10,11 @@
if("sandbox")
CanBuild()
+ //Vents
if(ventcrawler)
src << "You can ventcrawl! Use alt+click on vents to quickly travel about the station."
+ //Should update regardless of if we can ventcrawl, since we can end up in pipes in other ways.
+ update_pipe_vision()
+
update_interface()
return .
diff --git a/code/modules/mob/living/silicon/ai/freelook/chunk.dm b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
index 9ebf44a97f3..48adee0e407 100644
--- a/code/modules/mob/living/silicon/ai/freelook/chunk.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/chunk.dm
@@ -22,17 +22,9 @@
// Add an AI eye to the chunk, then update if changed.
/datum/camerachunk/proc/add(mob/camera/aiEye/eye)
- if(istype(eye,/mob/camera/aiEye/remote))
- var/mob/camera/aiEye/remote/cameye = eye
- if(!cameye.user)
- return
- if(cameye.user.client)
- cameye.user.client.images += obscured
- else:
- if(!eye.ai)
- return
- if(eye.ai.client)
- eye.ai.client.images += obscured
+ var/client/client = eye.GetViewerClient()
+ if(client)
+ client.images += obscured
eye.visibleCameraChunks += src
visible++
seenby += eye
@@ -42,18 +34,9 @@
// Remove an AI eye from the chunk, then update if changed.
/datum/camerachunk/proc/remove(mob/camera/aiEye/eye)
- if(istype(eye,/mob/camera/aiEye/remote))
- var/mob/camera/aiEye/remote/cameye = eye
- if(!cameye.user)
- return
- if(cameye.user.client)
- cameye.user.client.images -= obscured
- else
- if(!eye.ai)
- return
- if(eye.ai.client)
- eye.ai.client.images -= obscured
-
+ var/client/client = eye.GetViewerClient()
+ if(client)
+ client.images -= obscured
eye.visibleCameraChunks -= src
seenby -= eye
if(visible > 0)
@@ -123,15 +106,9 @@
var/mob/camera/aiEye/m = eye
if(!m)
continue
- if(istype(m,/mob/camera/aiEye/remote))
- var/mob/camera/aiEye/remote/cam = eye
- if(cam.user)
- cam.user.client.images -= t.obscured
- else
- if(!m.ai)
- continue
- if(m.ai.client)
- m.ai.client.images -= t.obscured
+ var/client/client = m.GetViewerClient()
+ if(client)
+ client.images -= t.obscured
for(var/turf in visRemoved)
var/turf/t = turf
@@ -145,15 +122,9 @@
if(!m)
seenby -= m
continue
- if(istype(m,/mob/camera/aiEye/remote))
- var/mob/camera/aiEye/remote/cam = eye
- if(cam.user)
- cam.user.client.images += t.obscured
- else
- if(!m.ai)
- continue
- if(m.ai.client)
- m.ai.client.images += t.obscured
+ var/client/client = m.GetViewerClient()
+ if(client)
+ client.images += t.obscured
changed = 0
diff --git a/code/modules/mob/living/silicon/ai/freelook/eye.dm b/code/modules/mob/living/silicon/ai/freelook/eye.dm
index b5e313bb050..d24c734f219 100644
--- a/code/modules/mob/living/silicon/ai/freelook/eye.dm
+++ b/code/modules/mob/living/silicon/ai/freelook/eye.dm
@@ -31,6 +31,11 @@
/mob/camera/aiEye/Move()
return 0
+/mob/camera/aiEye/proc/GetViewerClient()
+ if(ai)
+ return ai.client
+ return null
+
// AI MOVEMENT
@@ -120,3 +125,6 @@
acceleration = !acceleration
usr << "Camera acceleration has been toggled [acceleration ? "on" : "off"]."
+
+
+
diff --git a/code/modules/mob/living/silicon/pai/life.dm b/code/modules/mob/living/silicon/pai/life.dm
index c0017863de6..bc665bd4ec5 100644
--- a/code/modules/mob/living/silicon/pai/life.dm
+++ b/code/modules/mob/living/silicon/pai/life.dm
@@ -4,7 +4,7 @@
if(src.cable)
if(get_dist(src, src.cable) > 1)
var/turf/T = get_turf(src.loc)
- T.visible_message("[src.cable] rapidly retracts back into its spool.", "You hear a click and the sound of wire spooling rapidly.")
+ T.visible_message("[src.cable] rapidly retracts back into its spool.", "You hear a click and the sound of wire spooling rapidly.")
qdel(src.cable)
cable = null
if(silence_time)
diff --git a/code/modules/mob/living/silicon/pai/pai.dm b/code/modules/mob/living/silicon/pai/pai.dm
index c2062b46546..a324cdbbfe7 100644
--- a/code/modules/mob/living/silicon/pai/pai.dm
+++ b/code/modules/mob/living/silicon/pai/pai.dm
@@ -108,7 +108,7 @@
// 33% chance of no additional effect
if(prob(20))
- visible_message("A shower of sparks spray from [src]'s inner workings.", 3, "You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2)
+ visible_message("A shower of sparks spray from [src]'s inner workings.", 3, "You hear and smell the ozone hiss of electrical sparks being expelled violently.", 2)
return src.death(0)
silence_time = world.timeofday + 120 * 10 // Silence for 2 minutes
diff --git a/code/modules/mob/living/silicon/pai/software.dm b/code/modules/mob/living/silicon/pai/software.dm
index c7e6135380f..4144a3a3ef2 100644
--- a/code/modules/mob/living/silicon/pai/software.dm
+++ b/code/modules/mob/living/silicon/pai/software.dm
@@ -264,7 +264,7 @@
var/turf/T = get_turf(src.loc)
src.cable = new /obj/item/weapon/pai_cable(T)
for (var/mob/M in viewers(T))
- M.show_message("A port on [src] opens to reveal [src.cable], which promptly falls to the floor.", 3, "You hear the soft click of something light and hard falling to the ground.", 2)
+ M.show_message("A port on [src] opens to reveal [src.cable], which promptly falls to the floor.", 3, "You hear the soft click of something light and hard falling to the ground.", 2)
//src.updateUsrDialog() We only need to account for the single mob this is intended for, and he will *always* be able to call this window
src.paiInterface() // So we'll just call the update directly rather than doing some default checks
return
diff --git a/code/modules/mob/living/silicon/robot/inventory.dm b/code/modules/mob/living/silicon/robot/inventory.dm
index 4934daa8060..fe91e38e37d 100644
--- a/code/modules/mob/living/silicon/robot/inventory.dm
+++ b/code/modules/mob/living/silicon/robot/inventory.dm
@@ -74,7 +74,7 @@
if(istype(module_state_3,/obj/item/borg/sight))
sight_mode |= module_state_3:sight_mode
else
- src << "You need to disable a module first!"
+ src << "You need to disable a module first!"
/mob/living/silicon/robot/proc/uneq_active()
uneq_module(module_active)
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 15b7d70d17c..df8ebcfd28d 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -400,19 +400,19 @@
user.changeNext_move(CLICK_CD_MELEE)
var/obj/item/weapon/weldingtool/WT = W
if (src == user)
- user << "You lack the reach to be able to repair yourself."
+ user << "You lack the reach to be able to repair yourself!"
return 1
if (src.health >= src.maxHealth)
- user << "[src] is already in good condition."
+ user << "[src] is already in good condition!"
return 1
if (WT.remove_fuel(0, user))
adjustBruteLoss(-30)
updatehealth()
add_fingerprint(user)
- visible_message("[user] has fixed some of the dents on [src].")
+ visible_message("[user] has fixed some of the dents on [src].")
return 0
else
- user << "The welder must be on for this task."
+ user << "The welder must be on for this task!"
return 1
else if(istype(W, /obj/item/stack/cable_coil) && wiresexposed)
@@ -420,33 +420,33 @@
if (coil.use(1))
adjustFireLoss(-30)
updatehealth()
- visible_message("[user] has fixed some of the burnt wires on [src].")
+ user.visible_message("[user] has fixed some of the burnt wires on [src].", "You fix some of the burnt wires on [src].")
else
- user << "You need one length of cable to repair [src]."
+ user << "You need one length of cable to repair [src]!"
else if (istype(W, /obj/item/weapon/crowbar)) // crowbar means open or close the cover
if(opened)
- user << "You close the cover."
+ user << "You close the cover."
opened = 0
update_icons()
else
if(locked)
- user << "The cover is locked and cannot be opened."
+ user << "The cover is locked and cannot be opened!"
else
- user << "You open the cover."
+ user << "You open the cover."
opened = 1
update_icons()
else if (istype(W, /obj/item/weapon/stock_parts/cell) && opened) // trying to put a cell inside
if(wiresexposed)
- user << "Close the cover first."
+ user << "Close the cover first!"
else if(cell)
- user << "There is a power cell already installed."
+ user << "There is a power cell already installed!"
else
user.drop_item()
W.loc = src
cell = W
- user << "You insert the power cell."
+ user << "You insert the power cell."
// chargecount = 0
update_icons()
@@ -454,7 +454,7 @@
if (wiresexposed)
wires.Interact(user)
else
- user << "You can't reach the wiring."
+ user << "You can't reach the wiring!"
else if(istype(W, /obj/item/weapon/screwdriver) && opened && !cell) // haxing
wiresexposed = !wiresexposed
@@ -465,7 +465,7 @@
if(radio)
radio.attackby(W,user)//Push it to the radio to let it handle everything
else
- user << "Unable to locate a radio."
+ user << "Unable to locate a radio!"
update_icons()
else if(istype(W, /obj/item/weapon/wrench) && opened && !cell) //Deconstruction. The flashes break from the fall, to prevent this from being a ghetto reset module.
@@ -475,20 +475,21 @@
return
else
playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
+ user << "You start to unfasten [src]'s securing bolts..."
if(do_after(user, 50) && !cell)
- user.visible_message("[user] deconstructs [src]!", "You unfasten the securing bolts, and [src] falls to pieces!")
+ user.visible_message("[user] deconstructs [src]!", "You unfasten the securing bolts, and [src] falls to pieces!")
deconstruct()
else if(istype(W, /obj/item/weapon/aiModule))
var/obj/item/weapon/aiModule/MOD = W
if(!opened)
- user << "You need access to the robot's insides to do that."
+ user << "You need access to the robot's insides to do that!"
return
if(wiresexposed)
- user << "You need to close the wire panel to do that."
+ user << "You need to close the wire panel to do that!"
return
if(!cell)
- user << "You need to install a power cell to do that."
+ user << "You need to install a power cell to do that!"
return
if(emagged || (connected_ai && lawupdate)) //Can't be sure which, metagamers
emote("buzz-[user.name]")
@@ -500,17 +501,17 @@
if(radio)//sanityyyyyy
radio.attackby(W,user)//GTFO, you have your own procs
else
- user << "Unable to locate a radio."
+ user << "Unable to locate a radio!"
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)//still allow them to open the cover
- user << "The interface seems slightly damaged"
+ user << "The interface seems slightly damaged."
if(opened)
- user << "You must close the cover to swipe an ID card."
+ user << "You must close the cover to swipe an ID card!"
else
if(allowed(usr))
locked = !locked
- user << "You [ locked ? "lock" : "unlock"] [src]'s cover."
+ user << "You [ locked ? "lock" : "unlock"] [src]'s cover."
update_icons()
else
user << "Access denied."
@@ -518,27 +519,27 @@
else if(istype(W, /obj/item/borg/upgrade/))
var/obj/item/borg/upgrade/U = W
if(!opened)
- usr << "You must access the borgs internals!"
+ usr << "You must access the borgs internals!"
else if(!src.module && U.require_module)
- usr << "The borg must choose a module before it can be upgraded!"
+ usr << "The borg must choose a module before it can be upgraded!"
else if(U.locked)
- usr << "The upgrade is locked and cannot be used yet!"
+ usr << "The upgrade is locked and cannot be used yet!"
else
if(U.action(src))
- usr << "You apply the upgrade to [src]!"
+ usr << "You apply the upgrade to [src]."
usr.drop_item()
U.loc = src
else
- usr << "Upgrade error!"
+ usr << "Upgrade error."
else if(istype(W, /obj/item/device/toner))
if(toner >= tonermax)
- usr << "The toner level of [src] is at it's highest level possible"
+ usr << "The toner level of [src] is at it's highest level possible!"
else
toner = 40
usr.drop_item()
qdel(W)
- usr << "You fill the toner level of [src] to it's max capacity"
+ usr << "You fill the toner level of [src] to its max capacity."
else
if(W.force && W.damtype != STAMINA) //only sparks if real damage is dealt.
@@ -550,19 +551,19 @@
if(!opened)//Cover is closed
if(locked)
if(prob(90))
- user << "You emag the cover lock."
+ user << "You emag the cover lock."
locked = 0
else
- user << "You fail to emag the cover lock."
+ user << "You fail to emag the cover lock!"
if(prob(25))
- src << "Hack attempt detected."
+ src << "Hack attempt detected."
else
- user << "The cover is already unlocked."
+ user << "The cover is already unlocked!"
return
if(opened)//Cover is open
if(emagged) return//Prevents the X has hit Y with Z message also you cant emag them twice
if(wiresexposed)
- user << "You must close the cover first"
+ user << "You must close the cover first!"
return
else
sleep(6)
@@ -571,7 +572,7 @@
SetLockdown(1) //Borgs were getting into trouble because they would attack the emagger before the new laws were shown
lawupdate = 0
connected_ai = null
- user << "You emag [src]'s interface."
+ user << "You emag [src]'s interface."
message_admins("[key_name_admin(user)] emagged cyborg [key_name_admin(src)]. Laws overridden.")
log_game("[key_name(user)] emagged cyborg [key_name(src)]. Laws overridden.")
clear_supplied_laws()
@@ -599,9 +600,9 @@
SetLockdown(0)
update_icons()
else
- user << "You fail to [ locked ? "unlock" : "lock"] [src]'s interface."
+ user << "You fail to [ locked ? "unlock" : "lock"] [src]'s interface!"
if(prob(25))
- src << "Hack attempt detected."
+ src << "ALERT: Hack attempt detected."
/mob/living/silicon/robot/verb/unlock_own_cover()
set category = "Robot Commands"
@@ -612,7 +613,7 @@
if("Yes")
locked = 0
update_icons()
- usr << "You unlock your cover."
+ usr << "You unlock your cover."
/mob/living/silicon/robot/attack_alien(mob/living/carbon/alien/humanoid/M as mob)
if (M.a_intent =="disarm")
@@ -666,7 +667,7 @@
cell.updateicon()
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
- user << "You remove \the [cell]."
+ user << "You remove \the [cell]."
cell = null
update_icons()
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index 374bfa98088..0dd8e573b71 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -212,7 +212,8 @@
modules += new /obj/item/weapon/reagent_containers/food/condiment/enzyme(src)
modules += new /obj/item/weapon/pen(src)
modules += new /obj/item/weapon/razor(src)
- modules += new /obj/item/device/violin(src)
+ modules += new /obj/item/device/instrument/violin(src)
+ modules += new /obj/item/device/instrument/guitar(src)
var/obj/item/weapon/rsf/M = new /obj/item/weapon/rsf(src)
M.matter = 30
diff --git a/code/modules/mob/living/silicon/silicon.dm b/code/modules/mob/living/silicon/silicon.dm
index 24bb007c3d2..82a7a0be1e9 100644
--- a/code/modules/mob/living/silicon/silicon.dm
+++ b/code/modules/mob/living/silicon/silicon.dm
@@ -389,7 +389,7 @@
/mob/living/silicon/attack_larva(mob/living/carbon/alien/larva/L)
if(L.a_intent == "help")
- visible_message("[L.name] rubs its head against [src].")
+ visible_message("[L.name] rubs its head against [src].")
return
/mob/living/silicon/attack_hulk(mob/living/carbon/human/user)
@@ -405,15 +405,15 @@
/mob/living/silicon/attack_hand(mob/living/carbon/human/M)
switch(M.a_intent)
if ("help")
- M.visible_message("[M] pets [src]!", \
- "You pet [src]!")
+ M.visible_message("[M] pets [src].", \
+ "You pet [src].")
if("grab")
grabbedby(M)
else
M.do_attack_animation(src)
playsound(src.loc, 'sound/effects/bang.ogg', 10, 1)
- visible_message("[M] punches [src], but doesn't leave a dent.", \
- "[M] punches [src], but doesn't leave a dent.!")
+ visible_message("[M] punches [src], but doesn't leave a dent.", \
+ "[M] punches [src], but doesn't leave a dent.")
return 0
/mob/living/silicon/adjustEarDamage()
diff --git a/code/modules/mob/living/simple_animal/friendly/corgi.dm b/code/modules/mob/living/simple_animal/friendly/corgi.dm
index 2df1cb53100..29fbf497b7d 100644
--- a/code/modules/mob/living/simple_animal/friendly/corgi.dm
+++ b/code/modules/mob/living/simple_animal/friendly/corgi.dm
@@ -109,18 +109,18 @@
//helmet and armor = 100% protection
if( istype(inventory_head,/obj/item/clothing/head/helmet) && istype(inventory_back,/obj/item/clothing/suit/armor) )
if( O.force )
- user << "[src] is wearing too much armor. You can't cause \him any damage."
+ user << "[src] is wearing too much armor! You can't cause \him any damage."
visible_message(" [user] hits [src] with [O], however [src] is too armored.")
else
- user << "[src] is wearing too much armor. You can't reach \his skin."
- visible_message("[user] gently taps [src] with [O].")
+ user << "[src] is wearing too much armor! You can't reach \his skin."
+ visible_message("[user] gently taps [src] with [O].")
if(health>0 && prob(15))
emote("me", 1, "looks at [user] with [pick("an amused","an annoyed","a confused","a resentful", "a happy", "an excited")] expression.")
return
if(istype(O, /obj/item/weapon/newspaper))
if(!stat)
- user.visible_message("[user] baps [name] on the nose with the rolled up [O]")
+ user.visible_message("[user] baps [name] on the nose with the rolled up [O].")
spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2))
dir = i
@@ -128,11 +128,11 @@
if (istype(O, /obj/item/weapon/razor))
if (shaved)
- user << "You can't shave this corgi, it's already been shaved."
+ user << "You can't shave this corgi, it's already been shaved!"
return
- user.visible_message("[user] starts to shave [src] using \the [O].")
+ user.visible_message("[user] starts to shave [src] using \the [O].", "You start to shave [src] using \the [O]...")
if(do_after(user, 50))
- user.visible_message("[user] shaves [src]'s hair using \the [O]. ")
+ user.visible_message("[user] shaves [src]'s hair using \the [O].")
playsound(loc, 'sound/items/Welder2.ogg', 20, 1)
shaved = 1
icon_living = "[initial(icon_living)]_shaved"
@@ -194,13 +194,13 @@
if("back")
if(inventory_back)
- usr << "It's already wearing something."
+ usr << "It's already wearing something!"
return
else
var/obj/item/item_to_add = usr.get_active_hand()
if(!item_to_add)
- usr.visible_message("[usr] pets [src]","You rest your hand on [src]'s back for a moment.")
+ usr.visible_message("[usr] pets [src].","You rest your hand on [src]'s back for a moment.")
return
if(istype(item_to_add,/obj/item/weapon/c4)) // last thing he ever wears, I guess
item_to_add.afterattack(src,usr,1)
@@ -219,9 +219,9 @@
)
if( ! ( item_to_add.type in allowed_types ) )
- usr << "You set [item_to_add] on [src]'s back, but \he shakes it off!"
+ usr << "You set [item_to_add] on [src]'s back, but \he shakes it off!"
if(!usr.drop_item())
- usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!"
+ usr << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s back!"
return
item_to_add.loc = loc
if(prob(25))
@@ -250,10 +250,10 @@
return
if(inventory_head)
- if(user) user << "You can't put more than one hat on [src]!"
+ if(user) user << "You can't put more than one hat on [src]!"
return
if(!item_to_add)
- user.visible_message("[user] pets [src]","You rest your hand on [src]'s head for a moment.")
+ user.visible_message("[user] pets [src].","You rest your hand on [src]'s head for a moment.")
return
@@ -392,23 +392,23 @@
if(valid)
if(user && !user.drop_item())
- user << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
+ user << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
return 0
if(health <= 0)
user << "There is merely a dull, lifeless look in [real_name]'s eyes as you put the [item_to_add] on \him."
else if(user)
user.visible_message("[user] puts [item_to_add] on [real_name]'s head. [src] looks at [user] and barks once.",
- "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags \his tail once and barks.",
- "You hear a friendly-sounding bark.")
+ "You put [item_to_add] on [real_name]'s head. [src] gives you a peculiar look, then wags \his tail once and barks.",
+ "You hear a friendly-sounding bark.")
item_to_add.loc = src
src.inventory_head = item_to_add
regenerate_icons()
else
if(user && !user.drop_item())
- user << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
+ user << "\The [item_to_add] is stuck to your hand, you cannot put it on [src]'s head!"
return 0
- user << "You set [item_to_add] on [src]'s head, but \he shakes it off!"
+ user << "You set [item_to_add] on [src]'s head, but \he shakes it off!"
item_to_add.loc = loc
if(prob(25))
step_rand(item_to_add)
@@ -535,7 +535,7 @@
//puppies cannot wear anything.
/mob/living/simple_animal/pet/corgi/puppy/Topic(href, href_list)
if(href_list["remove_inv"] || href_list["add_inv"])
- usr << "You can't fit this on [src]"
+ usr << "You can't fit this on [src]!"
return
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
index d5d8cf19f5c..61ffbe0eecf 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/interaction.dm
@@ -30,34 +30,34 @@
"can't tell if their ethernet detour is moving or not", "won't be able to reseed enough"+\
" kernels to function properly","can't start their neurotube console")
- D << "You can't seem to find the [pick(faux_gadgets)]. Without it, [src] [pick(faux_problems)]."
+ D << "You can't seem to find the [pick(faux_gadgets)]! Without it, [src] [pick(faux_problems)]."
return
- D.visible_message("[D] begins to reactivate [src].")
+ D.visible_message("[D] begins to reactivate [src].", "You begin to reactivate [src]...")
if(do_after(user,30,needhand = 1))
health = health_repair_max
stat = CONSCIOUS
icon_state = icon_living
dead_mob_list -= src
living_mob_list += src
- D.visible_message("[D] reactivates [src]!")
+ D.visible_message("[D] reactivates [src]!", "You reactivate [src].")
alert_drones(DRONE_NET_CONNECT)
if(G)
G << "DRONE NETWORK: You were reactivated by [D]!"
else
- D << "You need to remain still to reactivate [src]."
+ D << "You need to remain still to reactivate [src]!"
if("Cannibalize")
if(D.health < D.maxHealth)
- D.visible_message("[D] begins to cannibalize parts from [src].")
+ D.visible_message("[D] begins to cannibalize parts from [src].", "You begin to cannibalize parts from [src]...")
if(do_after(D, 60,5,0))
- D.visible_message("[D] repairs itself using [src]'s remains!")
+ D.visible_message("[D] repairs itself using [src]'s remains!", "You repair yourself using [src]'s remains.")
D.adjustBruteLoss(-src.maxHealth)
new /obj/effect/decal/cleanable/oil/streak(get_turf(src))
qdel(src)
else
- D << "You need to remain still to cannibalize [src]."
+ D << "You need to remain still to cannibalize [src]!"
else
- D << "You're already in perfect condition!"
+ D << "You're already in perfect condition!"
if("Nothing")
return
@@ -69,9 +69,9 @@
..()
return
if(user.get_active_hand())
- user << "Your hands are full."
+ user << "Your hands are full!"
return
- src << "[user] is trying to pick you up!"
+ src << "[user] is trying to pick you up!"
if(buckled)
user << "[src] is buckled to the [buckled.name] and cannot be picked up!"
return
@@ -92,15 +92,15 @@
/mob/living/simple_animal/drone/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/screwdriver) && stat != DEAD)
if(health < health_repair_max)
- user << "You start to tighten loose screws on [src]."
+ user << "You start to tighten loose screws on [src]..."
if(do_after(user,80))
var/repair = health_repair_max - health
adjustBruteLoss(-repair)
- visible_message("[user] tightens [src == user ? "their" : "[src]'s"] loose screws!")
+ visible_message("[user] tightens [src == user ? "their" : "[src]'s"] loose screws!", "You tighten [src == user ? "their" : "[src]'s"] loose screws.")
else
- user << "You need to remain still to tighten [src]'s screws."
+ user << "You need to remain still to tighten [src]'s screws!"
else
- user << "[src]'s screws can't get any tighter!"
+ user << "[src]'s screws can't get any tighter!"
else
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm
index cd5f65f9274..754f75632f2 100644
--- a/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm
+++ b/code/modules/mob/living/simple_animal/friendly/drone/verbs.dm
@@ -22,7 +22,7 @@
light_on = !light_on
- src << "Your light is now [light_on ? "on" : "off"]"
+ src << "Your light is now [light_on ? "on" : "off"]."
/mob/living/simple_animal/drone/verb/drone_ping()
set category = "Drone"
@@ -43,7 +43,7 @@
set category = "Drone"
if(!seeStatic)
- src << "You have no vision filter to change!"
+ src << "You have no vision filter to change!"
return
var/selectedStatic = input("Select a vision filter", "Vision Filter") as null|anything in staticChoices
diff --git a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
index ed50a96a326..22a7e584ac6 100644
--- a/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
+++ b/code/modules/mob/living/simple_animal/friendly/farm_animals.dm
@@ -74,13 +74,13 @@
/mob/living/simple_animal/hostile/retaliate/goat/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
- user.visible_message("[user] milks [src] using \the [O].")
+ user.visible_message("[user] milks [src] using \the [O].", "You milk [src] using \the [O].")
var/obj/item/weapon/reagent_containers/glass/G = O
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume)
- user << "[O] is full."
+ user << "[O] is full!"
if(!transfered)
- user << "The udder is dry. Wait a bit longer..."
+ user << "The udder is dry! Wait a bit longer..."
else
..()
//cow
@@ -115,7 +115,7 @@
/mob/living/simple_animal/cow/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(stat == CONSCIOUS && istype(O, /obj/item/weapon/reagent_containers/glass))
- user.visible_message("[user] milks [src] using \the [O].")
+ user.visible_message("[user] milks [src] using \the [O].", "You milk [src] using \the [O].")
var/obj/item/weapon/reagent_containers/glass/G = O
var/transfered = udder.trans_id_to(G, "milk", rand(5,10))
if(G.reagents.total_volume >= G.volume)
@@ -242,14 +242,14 @@ var/global/chicken_count = 0
/mob/living/simple_animal/chicken/attackby(var/obj/item/O as obj, var/mob/user as mob, params)
if(istype(O, food_type)) //feedin' dem chickens
if(!stat && eggsleft < 8)
- var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]"
+ var/feedmsg = "[user] feeds [O] to [name]! [pick(feedMessages)]"
user.visible_message(feedmsg)
user.drop_item()
qdel(O)
eggsleft += rand(1, 4)
//world << eggsleft
else
- user << "[name] doesn't seem hungry!"
+ user << "[name] doesn't seem hungry!"
else
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/pug.dm b/code/modules/mob/living/simple_animal/friendly/pug.dm
index c25834a4479..1086486142d 100644
--- a/code/modules/mob/living/simple_animal/friendly/pug.dm
+++ b/code/modules/mob/living/simple_animal/friendly/pug.dm
@@ -33,7 +33,7 @@
/mob/living/simple_animal/pet/pug/attackby(var/obj/item/O as obj, var/mob/user as mob, params) //Marker -Agouri
if(istype(O, /obj/item/weapon/newspaper))
if(!stat)
- user.visible_message("[user] baps [name] on the nose with the rolled up [O]")
+ user.visible_message("[user] baps [name] on the nose with the rolled up [O].")
spawn(0)
for(var/i in list(1,2,4,8,4,2,1,2))
dir = i
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index 8746c3b4070..750e20450f8 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -245,7 +245,7 @@
var/obj/effect/spider/eggcluster/E = locate() in get_turf(src)
if(E)
- src << "There is already a cluster of eggs here!"
+ src << "There is already a cluster of eggs here!"
else if(!fed)
src << "You are too hungry to do this!"
else if(busy != LAYING_EGGS)
diff --git a/code/modules/mob/living/simple_animal/hostile/headcrab.dm b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
index 5d8c69b1565..8df6b5460fc 100644
--- a/code/modules/mob/living/simple_animal/hostile/headcrab.dm
+++ b/code/modules/mob/living/simple_animal/hostile/headcrab.dm
@@ -28,7 +28,7 @@
else if(mind) // Let's make this a feature
egg.owner = mind
victim.internal_organs += egg
- visible_message("[src] lays an egg in a [victim]!")
+ visible_message("[src] lays an egg in a [victim].")
egg_lain = 1
/mob/living/simple_animal/hostile/headcrab/AttackingTarget()
@@ -39,7 +39,7 @@
var/mob/living/carbon/human/H = target
if(H.stat == DEAD)
Infect(target)
- src << "With your egg laid you feel your death rapidly approaching, time to die..."
+ src << "With your egg laid you feel your death rapidly approaching, time to die..."
spawn(100)
death()
return
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 74ac5e70c30..869100f6e94 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -37,7 +37,7 @@
/mob/living/simple_animal/hostile/mimic/death()
..(1)
- visible_message("[src] stops moving!")
+ visible_message("[src] stops moving!")
ghostize()
qdel(src)
diff --git a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
index c63bfa43646..de377488aeb 100644
--- a/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mining_mobs.dm
@@ -280,7 +280,7 @@
user << "[src] are useless on the dead."
return
if(H != user)
- H.visible_message("[user] forces [H] to eat [src]... they quickly regenerate all injuries!")
+ H.visible_message("[user] forces [H] to eat [src]... they quickly regenerate all injuries!")
else
user << "You chomp into [src], barely managing to hold it down, but feel amazingly refreshed in mere moments."
playsound(src.loc,'sound/items/eatfood.ogg', rand(10,50), 1)
@@ -461,7 +461,7 @@
user << "You strengthen [target], improving its resistance against melee attacks."
qdel(src)
else
- user << "You can't improve [C] any further."
+ user << "You can't improve [C] any further!"
return
if(istype(target, /obj/mecha/working/ripley))
var/obj/mecha/D = target
@@ -483,9 +483,9 @@
D.overlays += image("icon"="mecha.dmi", "icon_state"="ripley-g-full-open")
D.desc = "Autonomous Power Loader Unit. It's wearing a fearsome carapace entirely composed of goliath hide plates - the pilot must be an experienced monster hunter."
else
- user << "You can't add armour onto the mech while someone is inside!"
+ user << "You can't add armour onto the mech while someone is inside!"
else
- user << "You can't improve [D] any further."
+ user << "You can't improve [D] any further!"
return
/mob/living/simple_animal/hostile/asteroid/handle_temperature_damage()
diff --git a/code/modules/mob/living/simple_animal/hostile/mushroom.dm b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
index 6fd0f9ea59e..f75f91096a1 100644
--- a/code/modules/mob/living/simple_animal/hostile/mushroom.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mushroom.dm
@@ -71,10 +71,10 @@
if(istype(L, /mob/living/simple_animal/hostile/mushroom) && stat == DEAD)
var/mob/living/simple_animal/hostile/mushroom/M = L
if(faint_ticker < 2)
- M.visible_message("[M] chews a bit on [src].")
+ M.visible_message("[M] chews a bit on [src].")
faint_ticker++
return
- M.visible_message("[M] devours [src]!")
+ M.visible_message("[M] devours [src]!")
var/level_gain = (powerlevel - M.powerlevel)
if(level_gain >= -1 && !bruised && !M.ckey)//Player shrooms can't level up to become robust gods.
if(level_gain < 1)//So we still gain a level if two mushrooms were the same level
@@ -91,7 +91,7 @@
/mob/living/simple_animal/hostile/mushroom/death(gibbed)
if(!gibbed)
- visible_message("[src] fainted.")
+ visible_message("[src] fainted.")
..(gibbed)
UpdateMushroomCap()
@@ -103,7 +103,7 @@
overlays += cap_living
/mob/living/simple_animal/hostile/mushroom/proc/Recover()
- visible_message("[src] slowly begins to recover.")
+ visible_message("[src] slowly begins to recover.")
faint_ticker = 0
revive()
UpdateMushroomCap()
@@ -123,7 +123,7 @@
/mob/living/simple_animal/hostile/mushroom/proc/Bruise()
if(!bruised && !stat)
- src.visible_message("The [src.name] was bruised!")
+ src.visible_message("The [src.name] was bruised!")
bruised = 1
/mob/living/simple_animal/hostile/mushroom/attackby(obj/item/I as obj, mob/user as mob, params)
@@ -132,7 +132,7 @@
Recover()
qdel(I)
else
- user << "[src] won't eat it!"
+ user << "[src] won't eat it!"
return
if(I.force)
Bruise()
diff --git a/code/modules/mob/living/simple_animal/hostile/pirate.dm b/code/modules/mob/living/simple_animal/hostile/pirate.dm
index d6d265a3d79..fa9a2164d9b 100644
--- a/code/modules/mob/living/simple_animal/hostile/pirate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pirate.dm
@@ -44,7 +44,7 @@
/mob/living/simple_animal/hostile/pirate/death()
..(1)
- visible_message("[src] stops moving.")
+ visible_message("[src] stops moving.")
if(corpse)
new corpse (src.loc)
if(weapon1)
diff --git a/code/modules/mob/living/simple_animal/hostile/russian.dm b/code/modules/mob/living/simple_animal/hostile/russian.dm
index c9ef9685534..64796ad7e99 100644
--- a/code/modules/mob/living/simple_animal/hostile/russian.dm
+++ b/code/modules/mob/living/simple_animal/hostile/russian.dm
@@ -46,7 +46,7 @@
/mob/living/simple_animal/hostile/russian/death(gibbed)
..(1)
- visible_message("[src] stops moving.")
+ visible_message("[src] stops moving.")
if(corpse)
new corpse (src.loc)
if(weapon1)
diff --git a/code/modules/mob/living/simple_animal/hostile/syndicate.dm b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
index c12c04b8a0e..d01462502f6 100644
--- a/code/modules/mob/living/simple_animal/hostile/syndicate.dm
+++ b/code/modules/mob/living/simple_animal/hostile/syndicate.dm
@@ -63,8 +63,8 @@
visible_message("[src] blocks [O] with its shield!")
playsound(loc, O.hitsound, 25, 1, -1)
else
- usr << "This weapon is ineffective, it does no damage."
- visible_message("[user] gently taps [src] with [O].")
+ usr << "This weapon is ineffective, it does no damage!"
+ visible_message("[user] gently taps [src] with [O].")
/mob/living/simple_animal/hostile/syndicate/melee/bullet_act(var/obj/item/projectile/Proj)
diff --git a/code/modules/mob/living/simple_animal/parrot.dm b/code/modules/mob/living/simple_animal/parrot.dm
index 98393b7eafa..939a4a2e942 100644
--- a/code/modules/mob/living/simple_animal/parrot.dm
+++ b/code/modules/mob/living/simple_animal/parrot.dm
@@ -204,19 +204,19 @@
if(copytext(possible_phrase,1,3) in department_radio_keys)
possible_phrase = copytext(possible_phrase,3)
else
- usr << "There is nothing to remove from its [remove_from]."
+ usr << "There is nothing to remove from its [remove_from]!"
return
//Adding things to inventory
else if(href_list["add_inv"])
var/add_to = href_list["add_inv"]
if(!usr.get_active_hand())
- usr << "You have nothing in your hand to put on its [add_to]."
+ usr << "You have nothing in your hand to put on its [add_to]!"
return
switch(add_to)
if("ears")
if(ears)
- usr << "It's already wearing something."
+ usr << "It's already wearing something!"
return
else
var/obj/item/item_to_add = usr.get_active_hand()
@@ -224,7 +224,7 @@
return
if( !istype(item_to_add, /obj/item/device/radio/headset) )
- usr << "This object won't fit."
+ usr << "This object won't fit!"
return
var/obj/item/device/radio/headset/headset_to_add = item_to_add
@@ -232,7 +232,7 @@
usr.drop_item()
headset_to_add.loc = src
src.ears = headset_to_add
- usr << "You fit the headset onto [src]."
+ usr << "You fit the headset onto [src]."
clearlist(available_channels)
for(var/ch in headset_to_add.channels)
@@ -489,7 +489,7 @@
if(!parrot_perch || parrot_interest.loc != parrot_perch.loc)
held_item = parrot_interest
parrot_interest.loc = src
- visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.")
+ visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.")
parrot_interest = null
parrot_state = PARROT_SWOOP | PARROT_RETURN
@@ -663,7 +663,7 @@
return -1
if(held_item)
- src << "You are already holding [held_item]"
+ src << "You are already holding [held_item]!"
return 1
for(var/obj/item/I in view(1,src))
@@ -676,10 +676,10 @@
held_item = I
I.loc = src
- visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.")
+ visible_message("[src] grabs [held_item]!", "You grab [held_item]!", "You hear the sounds of wings flapping furiously.")
return held_item
- src << "There is nothing of interest to take."
+ src << "There is nothing of interest to take!"
return 0
/mob/living/simple_animal/parrot/proc/steal_from_mob()
@@ -691,7 +691,7 @@
return -1
if(held_item)
- src << "You are already holding [held_item]"
+ src << "You are already holding [held_item]!"
return 1
var/obj/item/stolen_item = null
@@ -707,10 +707,10 @@
C.unEquip(stolen_item)
held_item = stolen_item
stolen_item.loc = src
- visible_message("[src] grabs [held_item] out of [C]'s hand!", "You snag [held_item] out of [C]'s hand!", "You hear the sounds of wings flapping furiously.")
+ visible_message("[src] grabs [held_item] out of [C]'s hand!", "You snag [held_item] out of [C]'s hand!", "You hear the sounds of wings flapping furiously.")
return held_item
- src << "There is nothing of interest to take."
+ src << "There is nothing of interest to take!"
return 0
/mob/living/simple_animal/parrot/verb/drop_held_item_player()
@@ -779,7 +779,7 @@
src.loc = AM.loc
icon_state = "parrot_sit"
return
- src << "There is no perch nearby to sit on."
+ src << "There is no perch nearby to sit on!"
return
/mob/living/simple_animal/parrot/proc/toggle_mode()
diff --git a/code/modules/mob/living/simple_animal/revenant/revenant.dm b/code/modules/mob/living/simple_animal/revenant/revenant.dm
index 70b04705116..e14a9902ee9 100644
--- a/code/modules/mob/living/simple_animal/revenant/revenant.dm
+++ b/code/modules/mob/living/simple_animal/revenant/revenant.dm
@@ -31,7 +31,7 @@
var/essence_regen_cap = 25 //The regeneration cap of essence (go figure); regenerates every Life() tick up to this amount.
var/essence_regen = 1 //If the revenant regenerates essence or not; 1 for yes, 0 for no
var/essence_min = 1 //The minimum amount of essence a revenant can have; by default, it never drops below one
- var/strikes = 2 //How many times a revenant can die before dying for good
+ var/strikes = 3 //How many times a revenant can die before dying for good
var/revealed = 0 //If the revenant can take damage from normal sources.
var/inhibited = 0 //If the revenant's abilities are blocked by a chaplain's power.
@@ -61,6 +61,9 @@
/mob/living/simple_animal/revenant/Process_Spacemove(var/movement_dir = 0)
return 1 //Mainly to prevent the no-grav effect
+/mob/living/simple_animal/revenant/ex_act(severity, target)
+ return 1 //Immune to the effects of explosions.
+
/mob/living/simple_animal/revenant/ClickOn(var/atom/A, var/params) //Copypaste from ghost code - revenants can't interact with the world directly.
if(client.buildmode)
build_click(src, client.buildmode, params, A)
@@ -94,21 +97,39 @@
/mob/living/simple_animal/revenant/New()
..()
- notransform = 1
- spawn(50)
+ spawn(5)
if(src.mind)
- src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_harvest
- src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_transmit
- src.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/revenant_light
- src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_life_tap
- src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_seed_drain
- src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_mindspike
- src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_mindblast
- notransform = 0
- else
- qdel(src)
+ src << 'sound/effects/ghost.ogg'
+ src.store_memory("I am a revenant. My spectral form has been empowered. My only goal is to gather essence from the humans of [world.name].")
+ src << "
"
+ src << "You are a revenant!"
+ src << "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant."
+ src << "You are not dead, not alive, but somewhere in between. You are capable of very limited interaction with both worlds."
+ src << "You are invincible and invisible to everyone but other ghosts. Some abilities may change this."
+ src << "Your goal is to gather essence from humans. Your essence passively regenerates up to 25E over time. You can use the Harvest abilities to gather more from corpses."
+ src << "Be sure to read the wiki page at https://tgstation13.org/wiki/Revenant !"
+ src << "
"
+ if(!src.giveSpells())
+ message_admins("Revenant was created but has no mind. Trying again in five seconds.")
+ spawn(50)
+ if(!src.giveSpells())
+ message_admins("Revenant still has no mind. Deleting...")
+ qdel(src)
+
+/mob/living/simple_animal/revenant/proc/giveSpells()
+ if(src.mind)
+ src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_harvest
+ src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_transmit
+ src.mind.spell_list += new /obj/effect/proc_holder/spell/aoe_turf/revenant_light
+ src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_life_tap
+ src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_seed_drain
+ src.mind.spell_list += new /obj/effect/proc_holder/spell/targeted/revenant_mindspike
+ return 1
+ return 0
/mob/living/simple_animal/revenant/death()
+ if(!src.strikes)
+ return 0 //Impossible to die with strikes still active
..(1)
src.invisibility = 0
visible_message("[src] pulses with an eldritch purple light as its form unwinds into smoke.")
diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm
index ce77282a185..0abb8ac46ee 100644
--- a/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm
+++ b/code/modules/mob/living/simple_animal/revenant/revenant_abilities.dm
@@ -50,6 +50,13 @@
if(5 to INFINITY)
user << "Such a feast! [target] will yield much essence to you."
sleep(30)
+ if(!in_range(user, target))
+ user << "You are not close enough to siphon [target]'s soul. The link has been broken."
+ draining = 0
+ return
+ if(!target.stat)
+ user << "They are now powerful enough to fight off your draining."
+ target << "You feel something tugging across your body before subsiding."
user << "You begin siphoning essence from [target]'s soul. You can not move while this is happening."
if(target.stat != DEAD)
target << "You feel a horribly unpleasant draining sensation as your grip on life weakens..."
@@ -58,7 +65,7 @@
user.revealed = 1
user.invisibility = 0
target.visible_message("[target] suddenly rises slightly into the air, their skin turning an ashy gray.")
- target.Beam(user,icon_state="drain_life",icon='icons/effects/effects.dmi',time=50)
+ target.Beam(user,icon_state="drain_life",icon='icons/effects/effects.dmi',time=80)
target.death(0)
target.visible_message("[target] gently slumps back onto the ground.")
user.icon_state = "revenant_idle"
@@ -116,7 +123,7 @@
panel = "Revenant Abilities (Locked)"
charge_max = 300
clothes_req = 0
- range = 5
+ range = -1
var/locked = 1
/obj/effect/proc_holder/spell/aoe_turf/revenant_light/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
@@ -129,6 +136,7 @@
name = "Overload Light (25E)"
panel = "Revenant Abilities"
locked = 0
+ range = 5
charge_counter = charge_max
return
if(locked)
@@ -199,7 +207,7 @@
panel = "Revenant Abilities (Locked)"
charge_max = 1200
clothes_req = 0
- range = 1 //Adjacent
+ range = -1
include_user = 1
var/locked = 1
var/planted = 0
@@ -215,6 +223,7 @@
name = "Seed of Draining (20E)"
locked = 0
panel = "Revenant Abilities"
+ range = 1
include_user = 0
return
if(locked)
@@ -249,9 +258,9 @@
name = "Unlock: Mind Spike (5E)"
desc = "Drives a spike of dark energy into the target's mind. Cheap but effective and doesn't take long to cool down."
panel = "Revenant Abilities (Locked)"
- charge_max = 15
+ charge_max = 40
clothes_req = 0
- range = 3
+ range = -1
include_user = 1
var/locked = 1
@@ -266,6 +275,7 @@
name = "Mind Spike (5E)"
locked = 0
panel = "Revenant Abilities"
+ range = 3
include_user = 0
return
if(locked)
@@ -289,52 +299,6 @@
user.revealed = 0
user.invisibility = INVISIBILITY_OBSERVER
-
-//Mind Blast: A big-hitting damage ability.
-/obj/effect/proc_holder/spell/targeted/revenant_mindblast
- name = "Unlock: Mind Blast (25E)"
- desc = "Blasts the target's mind with dark energy, doing a hefty amount of damage."
- panel = "Revenant Abilities (Locked)"
- charge_max = 250
- clothes_req = 0
- range = 3
- include_user = 1
- var/locked = 1
-
-/obj/effect/proc_holder/spell/targeted/revenant_mindblast/cast(list/targets, var/mob/living/simple_animal/revenant/user = usr)
- if(user.inhibited)
- user << "Something is blocking the use of [src]!"
- charge_counter = charge_max
- return
- if(locked && essence_check(25, 1))
- user << "You have unlocked Mind Blast!"
- charge_counter = charge_max
- name = "Mind Blast (25E)"
- locked = 0
- panel = "Revenant Abilities"
- include_user = 0
- return
- if(locked)
- charge_counter = charge_max
- return
- if(!essence_check(25))
- charge_counter = charge_max
- return
- for(var/mob/living/carbon/human/M in targets)
- user << "You blast [M]'s mind with energy!"
- M << "You feel a sudden explosion of agony in your head!"
- M.apply_damage(40, BRUTE, "head")
- M.adjustBrainLoss(20)
- M.emote("scream")
- M.Weaken(4)
- //M << 'sound/effects/mind_blast.ogg'
- user.revealed = 1
- user.invisibility = 0
- spawn(30)
- user.revealed = 0
- user.invisibility = INVISIBILITY_OBSERVER
-
-
//Hypnotize: Makes the target fall asleep, make them vulnerable to draining.
/obj/effect/proc_holder/spell/targeted/revenant_hypnotize
name = "Unlock: Hypnotize (15E)"
@@ -342,7 +306,7 @@
panel = "Revenant Abilities (Locked)"
charge_max = 900
clothes_req = 0
- range = 3
+ range = -1
include_user = 1
var/locked = 1
@@ -356,6 +320,7 @@
charge_counter = charge_max
name = "Hypnotize (15E)"
locked = 0
+ range = 3
panel = "Revenant Abilities"
include_user = 0
return
@@ -370,4 +335,12 @@
M << "Tired... so tired..."
M.drowsyness += 7
spawn(70)
- M.sleeping += 12
+ M.sleeping += 30
+
+
+/* (WIP)
+Strangulate: Chokes the target with crushing force.
+/obj/effect/proc_holder/spell/targeted/revenant_strangulate
+ name = "Unlock: Strangulate (30E)"
+ desc = "Strangles a target with an asphyxiating hand, dealing decent oxygen damage to them."
+*/
diff --git a/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm b/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm
index a2e7553753c..fd897699a43 100644
--- a/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm
+++ b/code/modules/mob/living/simple_animal/revenant/revenant_spawn_event.dm
@@ -1,6 +1,7 @@
/datum/round_event_control/revenant
name = "Spawn Revenant"
typepath = /datum/round_event/revenant
+ weight = 15
max_occurrences = 3
earliest_start = 0 //Meant to mix things up early-game.
@@ -37,21 +38,11 @@
return find_revenant()
var/mob/living/simple_animal/revenant/revvie = new /mob/living/simple_animal/revenant/(pick(spawn_locs))
player_mind.transfer_to(revvie)
- player_mind.assigned_role = "MODE"
+ player_mind.assigned_role = "revenant"
player_mind.special_role = "Revenant"
ticker.mode.traitors |= player_mind
- revvie << 'sound/effects/ghost.ogg'
message_admins("[key_of_revenant] has been made into a Revenant by an event.")
log_game("[key_of_revenant] was spawned as a Revenant by an event.")
- player_mind.store_memory("I am a revenant. My spectral form has been empowered. My only goal is to gather essence from the humans of [world.name].")
- revvie << "
"
- revvie << "You are a revenant!"
- revvie << "Your formerly mundane spirit has been infused with alien energies and empowered into a revenant."
- revvie << "You are not dead, not alive, but somewhere in between. You are capable of very limited interaction with both worlds."
- revvie << "You are invincible and invisible to everyone but other ghosts. Some abilities may change this."
- revvie << "Your goal is to gather essence from humans. Your essence passively regenerates up to 25E over time. You can use the Harvest abilities to gather more from corpses."
- //revvie << "Be sure to read the wiki page at https://tgstation13.org/wiki/Revenant !" //Not added yet.
- revvie << "
"
return 1
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index 1864c0d1f84..0bdc709d15f 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -462,7 +462,7 @@
// Harvest an animal's delicious byproducts
/mob/living/simple_animal/proc/harvest(mob/living/user, sharpness = 1)
- user << "You begin to butcher [src]."
+ user << "You begin to butcher [src]..."
playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1)
if(do_mob(user, src, 80/sharpness))
visible_message("[user] butchers [src].")
@@ -490,4 +490,4 @@
canmove = 0
else
canmove = 1
- return canmove
+ return canmove
diff --git a/code/modules/mob/living/simple_animal/slime/powers.dm b/code/modules/mob/living/simple_animal/slime/powers.dm
index e8b647e5e8d..b6f4ed34b86 100644
--- a/code/modules/mob/living/simple_animal/slime/powers.dm
+++ b/code/modules/mob/living/simple_animal/slime/powers.dm
@@ -71,7 +71,7 @@
Victim.adjustToxLoss(rand(2,4))
if(prob(15) && Victim.client)
- Victim << "[pick("You can feel your body becoming weak!", \
+ Victim << "[pick("You can feel your body becoming weak!", \
"You feel like you're about to die!", \
"You feel every part of your body screaming in agony!", \
"A low, rolling pain passes through your body!", \
@@ -89,7 +89,7 @@
src << "[pick("This subject is incompatible", \
"This subject does not have a life energy", "This subject is empty", \
"I am not satisified", "I can not feed from this subject", \
- "I do not feel nourished", "This subject is not food")]..."
+ "I do not feel nourished", "This subject is not food")]!"
if(fed_succesfully)
add_nutrition(rand(15,30), lastnut)
diff --git a/code/modules/mob/living/simple_animal/slime/slime.dm b/code/modules/mob/living/simple_animal/slime/slime.dm
index cde4d29cadc..7dd50a1008d 100644
--- a/code/modules/mob/living/simple_animal/slime/slime.dm
+++ b/code/modules/mob/living/simple_animal/slime/slime.dm
@@ -284,7 +284,7 @@
++Friends[user]
else
Friends[user] = 1
- user << "You feed the slime the plasma. It chirps happily."
+ user << "You feed the slime the plasma. It chirps happily."
var/obj/item/stack/sheet/mineral/plasma/S = W
S.use(1)
return
diff --git a/code/modules/mob/living/ventcrawling.dm b/code/modules/mob/living/ventcrawling.dm
new file mode 100644
index 00000000000..78ccc103d0a
--- /dev/null
+++ b/code/modules/mob/living/ventcrawling.dm
@@ -0,0 +1,96 @@
+
+var/list/ventcrawl_machinery = list(/obj/machinery/atmospherics/unary/vent_pump, /obj/machinery/atmospherics/unary/vent_scrubber)
+
+//VENTCRAWLING
+
+/mob/living/proc/handle_ventcrawl(var/atom/A)
+ if(!ventcrawler || !Adjacent(A))
+ return
+ if(stat)
+ src << "You must be conscious to do this!"
+ return
+ if(lying)
+ src << "You can't vent crawl while you're stunned!"
+ return
+
+ var/obj/machinery/atmospherics/unary/vent_found
+
+
+ if(A)
+ vent_found = A
+ if(!istype(vent_found) || !vent_found.can_crawl_through())
+ vent_found = null
+
+ if(!vent_found)
+ for(var/obj/machinery/atmospherics/machine in range(1,src))
+ if(is_type_in_list(machine, ventcrawl_machinery))
+ vent_found = machine
+
+ if(!vent_found.can_crawl_through())
+ vent_found = null
+
+ if(vent_found)
+ break
+
+
+ if(vent_found)
+ if(vent_found.parent && (vent_found.parent.members.len || vent_found.parent.other_atmosmch))
+ visible_message("[src] begins climbing into the ventilation system..." ,"You begin climbing into the ventilation system...")
+
+ if(!do_after(src, 25))
+ return
+
+ if(!client)
+ return
+
+ if(iscarbon(src) && contents.len && ventcrawler < 2)//It must have atleast been 1 to get this far
+ for(var/obj/item/I in contents)
+ var/failed = 0
+ if(istype(I, /obj/item/weapon/implant))
+ continue
+ else
+ failed++
+
+ if(failed)
+ src << "You can't crawl around in the ventilation ducts with items!"
+ return
+
+ visible_message("[src] scrambles into the ventilation ducts!","You climb into the ventilation ducts.")
+ loc = vent_found
+ add_ventcrawl(vent_found)
+ else
+ src << "This ventilation duct is not connected to anything!"
+
+
+/mob/living/proc/add_ventcrawl(obj/machinery/atmospherics/unary/starting_machine)
+ if(!starting_machine)
+ return
+ var/list/totalMembers = starting_machine.parent.members + starting_machine.parent.other_atmosmch
+ for(var/atom/A in totalMembers)
+ var/image/new_image = image(A, A.loc, dir = A.dir)
+ pipes_shown += new_image
+ if(client)
+ client.images += new_image
+
+
+/mob/living/proc/remove_ventcrawl()
+ if(client)
+ for(var/image/current_image in pipes_shown)
+ client.images -= current_image
+ client.eye = src
+ pipes_shown.len = 0
+
+
+
+
+//OOP
+/atom/proc/update_pipe_vision()
+ return
+
+/mob/living/update_pipe_vision()
+ if(pipes_shown.len)
+ if(!istype(loc, /obj/machinery/atmospherics))
+ remove_ventcrawl()
+ else
+ if(istype(loc, /obj/machinery/atmospherics))
+ add_ventcrawl(loc)
diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm
index 5fc8a5c44f4..c5d468e9ae9 100644
--- a/code/modules/mob/mob.dm
+++ b/code/modules/mob/mob.dm
@@ -266,7 +266,7 @@ var/next_mob_id = 0
qdel(W)
else
if(!disable_warning)
- src << "You are unable to equip that." //Only print if qdel_on_fail is false
+ src << "You are unable to equip that!" //Only print if qdel_on_fail is false
return 0
equip_to_slot(W, slot, redraw_mob) //This proc should not ever fail.
return 1
diff --git a/code/modules/mob/mob_grab.dm b/code/modules/mob/mob_grab.dm
index c2a4fa9a1fe..233fcd4f485 100644
--- a/code/modules/mob/mob_grab.dm
+++ b/code/modules/mob/mob_grab.dm
@@ -115,6 +115,8 @@
affecting.Weaken(5) //Should keep you down unless you get help.
affecting.losebreath = min(affecting.losebreath + 2, 3)
+/obj/item/weapon/grab/attack_self(mob/user)
+ s_click(hud)
/obj/item/weapon/grab/proc/s_click(obj/screen/S)
if(!affecting)
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 8af2864c0b1..dd575cd6adf 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -480,10 +480,10 @@ proc/is_special_character(mob/M) // returns 1 for special characters and 2 for h
affecting.heal_damage(brute,burn,1)
H.update_damage_overlays(0)
H.updatehealth()
- user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.getDisplayName()]!")
+ user.visible_message("[user] has fixed some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.getDisplayName()].", "You fix some of the [dam ? "dents on" : "burnt wires in"] [H]'s [affecting.getDisplayName()].")
return
else
- user << "[H]'s [affecting.getDisplayName()] is already in good condition"
+ user << "[H]'s [affecting.getDisplayName()] is already in good condition!"
return
else
return
diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm
index 791082d872e..f2e81516823 100644
--- a/code/modules/mob/mob_movement.dm
+++ b/code/modules/mob/mob_movement.dm
@@ -143,7 +143,7 @@
for(var/mob/M in range(mob, 1))
if(M.pulling == mob)
if(!M.incapacitated() && mob.Adjacent(M))
- src << "You're restrained! You can't move!"
+ src << "You're restrained! You can't move!"
move_delay += 10
return 0
else
diff --git a/code/modules/mob/transform_procs.dm b/code/modules/mob/transform_procs.dm
index a261287a103..c9d1843bf78 100644
--- a/code/modules/mob/transform_procs.dm
+++ b/code/modules/mob/transform_procs.dm
@@ -78,6 +78,8 @@
if (tr_flags & TR_DEFAULTMSG)
O << "You are now a monkey."
+ O.update_pipe_vision()
+
for(var/A in loc.vars)
if(loc.vars[A] == src)
loc.vars[A] = O
@@ -191,6 +193,8 @@
if (tr_flags & TR_DEFAULTMSG)
O << "You are now a human."
+ O.update_pipe_vision()
+
updateappearance(O)
. = O
@@ -238,6 +242,8 @@
else
O.key = key
+ O.update_pipe_vision()
+
var/obj/loc_landmark
for(var/obj/effect/landmark/start/sloc in landmarks_list)
if (sloc.name != "AI")
@@ -322,6 +328,8 @@
else
O.key = key
+ O.update_pipe_vision()
+
O.loc = loc
O.job = "Cyborg"
O.notify_ai(1)
@@ -357,6 +365,7 @@
new_xeno.key = key
new_xeno << "You are now an alien."
+ new_xeno.update_pipe_vision()
. = new_xeno
qdel(src)
@@ -389,6 +398,7 @@
new_slime.key = key
new_slime << "You are now a slime. Skreee!"
+ new_slime.update_pipe_vision()
. = new_slime
qdel(src)
@@ -425,6 +435,7 @@
new_corgi.key = key
new_corgi << "You are now a Corgi. Yap Yap!"
+ new_corgi.update_pipe_vision()
. = new_corgi
qdel(src)
@@ -458,6 +469,7 @@
new_mob << "You suddenly feel more... animalistic."
+ new_mob.update_pipe_vision()
. = new_mob
qdel(src)
@@ -475,6 +487,7 @@
new_mob.key = key
new_mob.a_intent = "harm"
new_mob << "You feel more... animalistic"
+ new_mob.update_pipe_vision()
. = new_mob
qdel(src)
diff --git a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
index ed6c7236267..f664c87a8b9 100644
--- a/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/energy_net_nets.dm
@@ -27,7 +27,7 @@ It is possible to destroy the net by the occupant or someone else.
var/mob/living/carbon/M = affecting
M.anchored = 0
for(var/mob/O in viewers(src, 3))
- O.show_message("[M.name] was recovered from the energy net!", 1, "You hear a grunt.", 2)
+ O.show_message("[M.name] was recovered from the energy net!", 1, "You hear a grunt.", 2)
if(!isnull(master))//As long as they still exist.
master << "ERROR: unable to initiate transport protocol. Procedure terminated."
qdel(src)
@@ -82,7 +82,7 @@ It is possible to destroy the net by the occupant or someone else.
qdel(src)//Wait for everything to finish, delete the net. Else it will stop everything once net is deleted, including the spawn(0).
for(var/mob/O in viewers(src, 3))
- O.show_message("[M] vanished!", 1, "You hear sparks flying!", 2)
+ O.show_message("[M] vanishes!", 1, "You hear sparks flying!", 2)
if(!isnull(master))//As long as they still exist.
master << "SUCCESS: transport procedure of \the [affecting] complete."
diff --git a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm
index 428f417ca44..b31d49c1d82 100644
--- a/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm
+++ b/code/modules/ninja/suit/n_suit_verbs/ninja_net.dm
@@ -12,7 +12,7 @@
if(!locate(/obj/effect/energy_net) in C.loc)//Check if they are already being affected by an energy net.
for(var/turf/T in getline(H.loc, C.loc))
if(T.density)//Don't want them shooting nets through walls. It's kind of cheesy.
- H << "You may not use an energy net through solid obstacles!"
+ H << "You may not use an energy net through solid obstacles!"
return
spawn(0)
H.Beam(C,"n_beam",,15)
@@ -25,7 +25,7 @@
spawn(0)//Parallel processing.
E.process(C)
else
- H << "They are already trapped inside an energy net."
+ H << "They are already trapped inside an energy net!"
else
- H << "They will bring no honor to your Clan!"
+ H << "They will bring no honor to your Clan!"
return
\ No newline at end of file
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 92077b14d4a..351443ec5bb 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -55,7 +55,7 @@
anchored = !anchored
user << "You [anchored ? "wrench" : "unwrench"] [src]."
else
- user << "You can't put [P] in [src]!"
+ user << "You can't put [P] in [src]!"
/obj/structure/filingcabinet/attack_hand(mob/user)
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index d9a6b9527d4..96c8f83e2b0 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -16,22 +16,22 @@
return // don't set a label
if(!labels_left)
- user << "No labels left."
+ user << "No labels left!"
return
if(!label || !length(label))
- user << "No text set."
+ user << "No text set!"
return
if(length(A.name) + length(label) > 64)
- user << "Label too big."
+ user << "Label too big!"
return
if(ishuman(A))
- user << "You can't label humans."
+ user << "You can't label humans!"
return
if(issilicon(A))
- user << "You can't label cyborgs."
+ user << "You can't label cyborgs!"
return
- user.visible_message("[user] labels [A] as [label].", \
+ user.visible_message("[user] labels [A] as [label].", \
"You label [A] as [label].")
A.name = "[A.name] ([label])"
labels_left--
@@ -45,7 +45,7 @@
//Now let them chose the text.
var/str = copytext(reject_bad_text(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN)
if(!str || !length(str))
- user << "Invalid text."
+ user << "Invalid text!"
return
label = str
user << "You set the text to '[str]'."
diff --git a/code/modules/paperwork/paper.dm b/code/modules/paperwork/paper.dm
index cf006b775cc..564411de900 100644
--- a/code/modules/paperwork/paper.dm
+++ b/code/modules/paperwork/paper.dm
@@ -336,12 +336,12 @@
/obj/item/weapon/paper/proc/burn(var/showmsg, var/burntime)
if(showmsg)
- src.visible_message("[src] catches on fire!")
+ src.visible_message("[src] catches on fire.")
burning = 1
icon_state = "paper_onfire"
info = "[stars(info)]"
sleep(burntime) //7 seconds
- src.visible_message("[src] burns away, leaving behind a pile of ashes.")
+ src.visible_message("[src] burns away, leaving behind a pile of ashes.")
new /obj/effect/decal/cleanable/ash(src.loc)
qdel(src)
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index a26c0497223..8493cfb876a 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -57,7 +57,7 @@
user.put_in_hands(P)
user << "You take [P] out of \the [src]."
else
- user << "[src] is empty!"
+ user << "[src] is empty!"
add_fingerprint(user)
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index 7045311cb55..01ea0ee5d35 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -113,7 +113,7 @@
cooldown = 1
icon_state = "pen_blink"
//The more gang members there are the longer the cooldown will be
- var/time = 500 + (100 * modifier) //50 seconds + 10 seconds for every member in the gang
+ var/time = 450 + (150 * modifier) //45 seconds + 15 seconds for every member in the gang
spawn(time)
cooldown = 0
icon_state = "pen"
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 95220c1e344..92f82705db9 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -230,7 +230,7 @@
flick("bigscanner1", src)
updateUsrDialog()
else
- user << "There is already something in [src]."
+ user << "There is already something in [src]!"
else if(istype(O, /obj/item/weapon/photo))
if(copier_empty())
@@ -241,7 +241,7 @@
flick("bigscanner1", src)
updateUsrDialog()
else
- user << "There is already something in [src]."
+ user << "There is already something in [src]!"
else if(istype(O, /obj/item/device/toner))
if(toner <= 0)
@@ -251,14 +251,14 @@
user << "You insert [O] into [src]."
updateUsrDialog()
else
- user << "This cartridge is not yet ready for replacement! Use up the rest of the toner."
+ user << "This cartridge is not yet ready for replacement! Use up the rest of the toner."
else if(istype(O, /obj/item/weapon/wrench))
if(isinspace())
user << "There's nothing to fasten [src] to!"
return
playsound(loc, 'sound/items/Ratchet.ogg', 50, 1)
- user << "You start [anchored ? "unwrenching" : "wrenching"] [src]"
+ user << "You start [anchored ? "unwrenching" : "wrenching"] [src]..."
if(do_after(user, 20))
if(gc_destroyed)
return
@@ -302,30 +302,30 @@
return
src.add_fingerprint(user)
if(target == user)
- visible_message("[user] starts climbing onto the photocopier!")
+ user.visible_message("[user] starts climbing onto the photocopier!", "You start climbing onto the photocopier...")
else
- visible_message("[user] starts putting [target] onto the photocopier!")
+ user.visible_message("[user] starts putting [target] onto the photocopier!", "You start putting [target] onto the photocopier...")
if(do_after(user, 20))
if(!target || target.gc_destroyed || gc_destroyed || !Adjacent(target)) //check if the photocopier/target still exists.
return
if(target == user)
- visible_message("[user] climbs onto the photocopier!")
+ user.visible_message("[user] climbs onto the photocopier!", "You climb onto the photocopier.")
else
- visible_message("[user] puts [target] onto the photocopier!")
+ user.visible_message("[user] puts [target] onto the photocopier!", "You put [target] onto the photocopier.")
target.loc = get_turf(src)
ass = target
if(photocopy)
photocopy.loc = src.loc
- visible_message("[photocopy] is shoved out of the way by [ass]!")
+ visible_message("[photocopy] is shoved out of the way by [ass]!")
photocopy = null
else if(copy)
copy.loc = src.loc
- visible_message("[copy] is shoved out of the way by [ass]!")
+ visible_message("[copy] is shoved out of the way by [ass]!")
copy = null
updateUsrDialog()
diff --git a/code/modules/paperwork/photography.dm b/code/modules/paperwork/photography.dm
index a759a817464..bfb76afccc0 100644
--- a/code/modules/paperwork/photography.dm
+++ b/code/modules/paperwork/photography.dm
@@ -53,7 +53,7 @@
if(in_range(user, src))
show(user)
else
- user << "You need to get closer to get a good look at this photo."
+ user << "You need to get closer to get a good look at this photo!"
/obj/item/weapon/photo/proc/show(mob/user)
@@ -427,4 +427,4 @@ obj/item/device/camera/siliconcam/robot_camera/proc/borgprint()
p.pixel_y = rand(-10, 10)
C.toner -= 20 //Cyborgs are very ineffeicient at printing an image
visible_message("[C.name] spits out a photograph from a narrow slot on it's chassis.")
- usr << "You print a photograph."
+ usr << "You print a photograph."
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index 57e815508f7..e8270dafd52 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -143,24 +143,24 @@
if(!anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] secures the [src.name] to the floor.", \
- "You secure the anchor bolts to the floor.", \
- "You hear a ratchet")
+ "You secure the anchor bolts to the floor.", \
+ "You hear a ratchet.")
src.anchored = 1
connect_to_network()
else if(!linked_shielding.len > 0)
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] unsecures the [src.name].", \
- "You remove the anchor bolts.", \
- "You hear a ratchet")
+ "YYou remove the anchor bolts.", \
+ "You hear a ratchet.")
src.anchored = 0
disconnect_from_network()
else
- user << "Once bolted and linked to a shielding unit it the [src.name] is unable to be moved!"
+ user << "Once bolted and linked to a shielding unit it the [src.name] is unable to be moved!"
return
if(istype(W, /obj/item/weapon/am_containment))
if(fueljar)
- user << "There is already a [fueljar] inside!"
+ user << "There is already a [fueljar] inside!"
return
fueljar = W
W.loc = src
@@ -169,8 +169,8 @@
user.unEquip(W)
user.update_icons()
user.visible_message("[user.name] loads an [W.name] into the [src.name].", \
- "You load an [W.name].", \
- "You hear a thunk.")
+ "You load an [W.name].", \
+ "You hear a thunk.")
return
if(W.force >= 20)
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 042d4731b63..44da3f238a0 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -377,22 +377,22 @@
if (istype(W, /obj/item/weapon/crowbar) && opened)
if (has_electronics==1)
if (terminal)
- user << "Disconnect wires first."
+ user << "Disconnect the wires first!"
return
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
- user << "You are trying to remove the power control board..." //lpeters - fixed grammar issues
+ user << "You are trying to remove the power control board..." //lpeters - fixed grammar issues
if(do_after(user, 50))
if (has_electronics==1)
has_electronics = 0
if ((stat & BROKEN) || malfhack)
user.visible_message(\
- "[user.name] has broken the power control board inside [src.name]!",\
- "You broke the charred power control board and remove the remains.",
- "You hear a crack!")
+ "[user.name] has broken the power control board inside [src.name]!",\
+ "You break the charred power control board and remove the remains.",
+ "You hear a crack.")
//ticker.mode:apcs-- //XSI said no and I agreed. -rastaf0
else
user.visible_message(\
- "[user.name] has removed the power control board from [src.name]!",\
+ "[user.name] has removed the power control board from [src.name]!",\
"You remove the power control board.")
new /obj/item/weapon/module/power_control(loc)
else if (opened!=2) //cover isn't removed
@@ -400,49 +400,49 @@
update_icon()
else if (istype(W, /obj/item/weapon/crowbar) && !((stat & BROKEN) || malfhack) )
if(coverlocked && !(stat & MAINT))
- user << "The cover is locked and cannot be opened."
+ user << "The cover is locked and cannot be opened!"
return
else
opened = 1
update_icon()
else if (istype(W, /obj/item/weapon/stock_parts/cell) && opened) // trying to put a cell inside
if(cell)
- user << "There is a power cell already installed."
+ user << "There is a power cell already installed!"
return
else
if (stat & MAINT)
- user << "There is no connector for your power cell."
+ user << "There is no connector for your power cell!"
return
user.drop_item()
W.loc = src
cell = W
user.visible_message(\
- "[user.name] has inserted the power cell to [src.name]!",\
+ "[user.name] has inserted the power cell to [src.name]!",\
"You insert the power cell.")
chargecount = 0
update_icon()
else if (istype(W, /obj/item/weapon/screwdriver)) // haxing
if(opened)
if (cell)
- user << "Close the APC first." //Less hints more mystery!
+ user << "Close the APC first!" //Less hints more mystery!
return
else
if (has_electronics==1 && terminal)
has_electronics = 2
stat &= ~MAINT
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- user << "You screw the circuit electronics into place."
+ user << "You screw the circuit electronics into place."
else if (has_electronics==2)
has_electronics = 1
stat |= MAINT
playsound(src.loc, 'sound/items/Screwdriver.ogg', 50, 1)
- user << "You unfasten the electronics."
+ user << "You unfasten the electronics."
else /* has_electronics==0 */
- user << "There is nothing to secure."
+ user << "There is nothing to secure!"
return
update_icon()
else if(emagged)
- user << "The interface is broken."
+ user << "The interface is broken!"
else
wiresexposed = !wiresexposed
user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
@@ -450,30 +450,30 @@
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) // trying to unlock the interface with an ID card
if(emagged)
- user << "The interface is broken."
+ user << "The interface is broken!"
else if(opened)
- user << "You must close the cover to swipe an ID card."
+ user << "You must close the cover to swipe an ID card!"
else if(wiresexposed)
- user << "You must close the panel"
+ user << "You must close the panel!"
else if(stat & (BROKEN|MAINT))
- user << "Nothing happens."
+ user << "Nothing happens!"
else
if(src.allowed(usr) && !isWireCut(APC_WIRE_IDSCAN))
locked = !locked
- user << "You [ locked ? "lock" : "unlock"] the APC interface."
+ user << "You [ locked ? "lock" : "unlock"] the APC interface."
update_icon()
else
user << "Access denied."
else if (istype(W, /obj/item/stack/cable_coil) && !terminal && opened && has_electronics!=2)
if (src.loc:intact)
- user << "You must remove the floor plating in front of the APC first."
+ user << "You must remove the floor plating in front of the APC first!"
return
var/obj/item/stack/cable_coil/C = W
if(C.get_amount() < 10)
- user << "You need ten lengths of cable for APC."
+ user << "You need ten lengths of cable for APC!"
return
- user.visible_message("[user.name] adds cables to the APC frame.", \
- "You start adding cables to the APC frame...")
+ user.visible_message("[user.name] adds cables to the APC frame.", \
+ "You start adding cables to the APC frame...")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20))
if (C.amount >= 10 && !terminal && opened && has_electronics != 2)
@@ -492,8 +492,8 @@
terminal.dismantle(user)
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && !((stat & BROKEN) || malfhack))
- user.visible_message("[user.name] inserts the power control board into [src].", \
- "You start to insert the power control board into the frame...")
+ user.visible_message("[user.name] inserts the power control board into [src].", \
+ "You start to insert the power control board into the frame...")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 10))
if(has_electronics==0)
@@ -501,28 +501,28 @@
user << "You place the power control board inside the frame."
qdel(W)
else if (istype(W, /obj/item/weapon/module/power_control) && opened && has_electronics==0 && ((stat & BROKEN) || malfhack))
- user << "You cannot put the board inside, the frame is damaged."
+ user << "You cannot put the board inside, the frame is damaged!"
return
else if (istype(W, /obj/item/weapon/weldingtool) && opened && has_electronics==0 && !terminal)
var/obj/item/weapon/weldingtool/WT = W
if (WT.get_fuel() < 3)
- user << "You need more welding fuel to complete this task."
+ user << "You need more welding fuel to complete this task!"
return
- user.visible_message("[user.name] welds [src].", \
- "You start welding the APC frame...", \
- "You hear welding.")
+ user.visible_message("[user.name] welds [src].", \
+ "You start welding the APC frame...", \
+ "You hear welding.")
playsound(src.loc, 'sound/items/Welder.ogg', 50, 1)
if(do_after(user, 50))
if(!src || !WT.remove_fuel(3, user)) return
if (emagged || malfhack || (stat & BROKEN) || opened==2)
new /obj/item/stack/sheet/metal(loc)
user.visible_message(\
- "[user.name] has cut [src] apart with [W].",\
+ "[user.name] has cut [src] apart with [W].",\
"You disassembled the broken APC frame.")
else
new /obj/item/apc_frame(loc)
user.visible_message(\
- "[user.name] has cut [src] from the wall with [W].",\
+ "[user.name] has cut [src] from the wall with [W].",\
"You cut the APC frame from the wall.")
qdel(src)
return
@@ -531,18 +531,18 @@
if (opened==2)
opened = 1
user.visible_message(\
- "[user.name] has replaced the damaged APC frontal panel with a new one.",\
+ "[user.name] has replaced the damaged APC frontal panel with a new one.",\
"You replace the damaged APC frontal panel with a new one.")
qdel(W)
update_icon()
else if (istype(W, /obj/item/apc_frame) && opened && ((stat & BROKEN) || malfhack))
if (has_electronics)
- user << "You cannot repair this APC until you remove the electronics still inside."
+ user << "You cannot repair this APC until you remove the electronics still inside!"
return
- user.visible_message("[user.name] replaces the damaged APC frame with a new one.",\
- "You begin to replace the damaged APC frame...")
+ user.visible_message("[user.name] replaces the damaged APC frame with a new one.",\
+ "You begin to replace the damaged APC frame...")
if(do_after(user, 50))
- user << "You've replaced the damaged APC frame with a new one."
+ user << "You replace the damaged APC frame with a new one."
qdel(W)
stat &= ~BROKEN
malfai = null
@@ -557,9 +557,9 @@
&& W.w_class >= 3.0 \
&& prob(20) )
opened = 2
- user.visible_message("[user.name] has knocked down the APC cover with the [W.name]!", \
+ user.visible_message("[user.name] has knocked down the APC cover with the [W.name].", \
"You knock down the APC cover with your [W.name]!", \
- "You hear bang")
+ "You hear bang.")
update_icon()
else
if (istype(user, /mob/living/silicon))
@@ -573,11 +573,11 @@
/obj/machinery/power/apc/emag_act(mob/user as mob)
if(!emagged && !malfhack)
if(opened)
- user << "You must close the cover to swipe an ID card."
+ user << "You must close the cover to swipe an ID card!"
else if(wiresexposed)
- user << "You must close the panel first"
+ user << "You must close the panel first!"
else if(stat & (BROKEN|MAINT))
- user << "Nothing happens."
+ user << "Nothing happens!"
else
flick("apc-spark", src)
if (do_after(user,6))
@@ -587,7 +587,7 @@
user << "You emag the APC interface."
update_icon()
else
- user << "You fail to [ locked ? "unlock" : "lock"] the APC interface."
+ user << "You fail to [ locked ? "unlock" : "lock"] the APC interface!"
// attack with hand - remove cell (if cover open) or interact with the APC
@@ -604,7 +604,7 @@
cell.updateicon()
src.cell = null
- user.visible_message("[user.name] removes the power cell from [src.name]!",\
+ user.visible_message("[user.name] removes the power cell from [src.name]!",\
"You remove the power cell.")
//user << "You remove the power cell."
charging = 0
@@ -785,7 +785,7 @@
var/mob/living/carbon/human/H = user
if (istype(H))
if(H.getBrainLoss() >= 60)
- H.visible_message("[H] stares cluelessly at [src] and drools.")
+ H.visible_message("[H] stares cluelessly at [src] and drools.")
return 0
else if(prob(H.getBrainLoss()))
user << "You momentarily forget how to use [src]."
@@ -886,10 +886,10 @@
if(!istype(malf))
return
if(istype(malf.loc, /obj/machinery/power/apc)) // Already in an APC
- malf << "You must evacuate your current apc first."
+ malf << "You must evacuate your current APC first!"
return
if(!malf.can_shunt)
- malf << "You cannot shunt."
+ malf << "You cannot shunt!"
return
if(src.z != 1)
return
@@ -956,8 +956,8 @@
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
- visible_message("The [src.name] suddenly lets out a blast of smoke and some sparks!", \
- "You hear sizzling electronics.")
+ visible_message("The [src.name] suddenly lets out a blast of smoke and some sparks!", \
+ "You hear sizzling electronics.")
/obj/machinery/power/apc/surplus()
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 10054d21e52..03c2ace4c12 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -135,7 +135,7 @@ By design, d1 is the smallest direction and d2 is the highest
if(istype(W, /obj/item/weapon/wirecutters))
if (shock(user, 50))
return
- visible_message("[user] cuts the cable.")
+ user.visible_message("[user] cuts the cable.", "You cut the cable.")
stored.add_fingerprint(user)
investigate_log("was cut by [key_name(usr, usr.client)] in [user.loc.loc]","wires")
Deconstruct()
@@ -144,7 +144,7 @@ By design, d1 is the smallest direction and d2 is the highest
else if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/coil = W
if (coil.get_amount() < 1)
- user << "Not enough cable"
+ user << "Not enough cable!"
return
coil.cable_join(src, user)
@@ -537,14 +537,14 @@ obj/structure/cable/proc/avail()
if(!istype(usr.loc,/turf))
return
if(src.amount <= 14)
- usr << "You need at least 15 lengths to make restraints!"
+ usr << "You need at least 15 lengths to make restraints!"
return
var/obj/item/weapon/restraints/handcuffs/cable/B = new /obj/item/weapon/restraints/handcuffs/cable(usr.loc)
B.icon_state = "cuff_[item_color]"
usr << "You wind some cable together to make some restraints."
src.use(15)
else
- usr << "You cannot do that."
+ usr << "You cannot do that!"
..()
// Items usable on a cable coil :
@@ -555,7 +555,7 @@ obj/structure/cable/proc/avail()
if( istype(W, /obj/item/weapon/wirecutters) && src.amount > 1)
src.amount--
new /obj/item/stack/cable_coil(user.loc, 1,item_color)
- user << "You cut a piece off the cable coil."
+ user << "You cut a piece off the cable coil."
src.update_icon()
return
@@ -567,18 +567,18 @@ obj/structure/cable/proc/avail()
else if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
if(C.amount >= MAXCOIL)
- user << "The coil is too long, you cannot add any more cable to it."
+ user << "The coil is too long, you cannot add any more cable to it!"
return
if( (C.amount + src.amount <= MAXCOIL) )
- user << "You join the cable coils together."
+ user << "You join the cable coils together."
C.give(src.amount) // give it cable
src.use(src.amount) // make sure this one cleans up right
return
else
var/amt = MAXCOIL - C.amount
- user << "You transfer [amt] length\s of cable from one coil to the other."
+ user << "You transfer [amt] length\s of cable from one coil to the other."
C.give(amt)
src.use(amt)
return
@@ -628,15 +628,15 @@ obj/structure/cable/proc/avail()
return
if(!T.can_have_cabling())
- user << "You can only lay cables on catwalks and plating!"
+ user << "You can only lay cables on catwalks and plating!"
return
if(get_amount() < 1) // Out of cable
- user << "There is no cable left."
+ user << "There is no cable left!"
return
if(get_dist(T,user) > 1) // Too far
- user << "You can't lay cable at a place that far away."
+ user << "You can't lay cable at a place that far away!"
return
else
@@ -649,7 +649,7 @@ obj/structure/cable/proc/avail()
for(var/obj/structure/cable/LC in T)
if(LC.d2 == dirn && LC.d1 == 0)
- user << "There's already a cable at that position."
+ user << "There's already a cable at that position!"
return
var/obj/structure/cable/C = get_new_cable(T)
@@ -690,7 +690,7 @@ obj/structure/cable/proc/avail()
return
if(get_dist(C, user) > 1) // make sure it's close enough
- user << "You can't lay cable at a place that far away."
+ user << "You can't lay cable at a place that far away!"
return
@@ -703,10 +703,10 @@ obj/structure/cable/proc/avail()
// one end of the clicked cable is pointing towards us
if(C.d1 == dirn || C.d2 == dirn)
if(!U.can_have_cabling()) //checking if it's a plating or catwalk
- user << "You can only lay cables on catwalks and plating!"
+ user << "You can only lay cables on catwalks and plating!"
return
if(U.intact) //can't place a cable if it's a plating with a tile on it
- user << "You can't lay cable there unless the floor tiles are removed."
+ user << "You can't lay cable there unless the floor tiles are removed!"
return
else
// cable is pointing at us, we're standing on an open tile
@@ -716,7 +716,7 @@ obj/structure/cable/proc/avail()
for(var/obj/structure/cable/LC in U) // check to make sure there's not a cable there already
if(LC.d1 == fdirn || LC.d2 == fdirn)
- user << "There's already a cable at that position."
+ user << "There's already a cable at that position!"
return
var/obj/structure/cable/NC = get_new_cable (U)
@@ -760,7 +760,7 @@ obj/structure/cable/proc/avail()
if(LC == C) // skip the cable we're interacting with
continue
if((LC.d1 == nd1 && LC.d2 == nd2) || (LC.d1 == nd2 && LC.d2 == nd1) ) // make sure no cable matches either direction
- user << "There's already a cable at that position."
+ user << "There's already a cable at that position!"
return
diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm
index a73e924ee08..68bf7c270b0 100644
--- a/code/modules/power/cell.dm
+++ b/code/modules/power/cell.dm
@@ -63,7 +63,7 @@
if(istype(W, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/S = W
- user << "You inject the solution into the power cell."
+ user << "You inject the solution into the power cell."
if(S.reagents.has_reagent("plasma", 5))
diff --git a/code/modules/power/gravitygenerator.dm b/code/modules/power/gravitygenerator.dm
index 43b649fb5cd..7196abe57e8 100644
--- a/code/modules/power/gravitygenerator.dm
+++ b/code/modules/power/gravitygenerator.dm
@@ -187,7 +187,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
broken_state++
else if(WT.isOn())
- user << "You don't have enough fuel to mend the damaged framework."
+ user << "You don't have enough fuel to mend the damaged framework!"
if(GRAV_NEEDS_PLASTEEL)
if(istype(I, /obj/item/stack/sheet/plasteel))
var/obj/item/stack/sheet/plasteel/PS = I
@@ -197,7 +197,7 @@ var/const/GRAV_NEEDS_WRENCH = 3
playsound(src.loc, 'sound/machines/click.ogg', 75, 1)
broken_state++
else
- user << "You need 10 sheets of plasteel."
+ user << "You need 10 sheets of plasteel!"
if(GRAV_NEEDS_WRENCH)
if(istype(I, /obj/item/weapon/wrench))
user << "You secure the plating to the framework."
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index 89642e29838..00eb9f8c827 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -36,9 +36,9 @@
return
var/turf/loc = get_turf(usr)
if (!istype(loc, /turf/simulated/floor))
- usr << "[src.name] cannot be placed on this spot."
+ usr << "[src.name] cannot be placed on this spot!"
return
- usr << "Attaching [src] to the wall."
+ usr << "You begin attaching [src] to the wall..."
playsound(src.loc, 'sound/machines/click.ogg', 75, 1)
var/constrdir = usr.dir
var/constrloc = usr.loc
@@ -55,7 +55,7 @@
newlight.fingerprintslast = src.fingerprintslast
usr.visible_message("[usr.name] attaches [src] to the wall.", \
- "You attach [src] to the wall.")
+ "You attach [src] to the wall.")
qdel(src)
/obj/item/light_fixture_frame/small
@@ -99,20 +99,20 @@
if (istype(W, /obj/item/weapon/wrench))
if (src.stage == 1)
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
- usr << "You begin deconstructing [src]."
+ usr << "You begin deconstructing [src]..."
if (!do_after(usr, 30))
return
new /obj/item/stack/sheet/metal( get_turf(src.loc), sheets_refunded )
user.visible_message("[user.name] deconstructs [src].", \
- "You deconstruct [src].", "You hear a noise.")
+ "You deconstruct [src].", "You hear a ratchet.")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1)
qdel(src)
if (src.stage == 2)
- usr << "You have to remove the wires first."
+ usr << "You have to remove the wires first!"
return
if (src.stage == 3)
- usr << "You have to unscrew the case first."
+ usr << "You have to unscrew the case first!"
return
if(istype(W, /obj/item/weapon/wirecutters))
@@ -125,7 +125,7 @@
src.icon_state = "bulb-construct-stage1"
new /obj/item/stack/cable_coil(get_turf(src.loc), 1, "red")
user.visible_message("[user.name] removes the wiring from [src].", \
- "You remove the wiring from [src].", "You hear a noise.")
+ "You remove the wiring from [src].", "You hear clicking.")
playsound(src.loc, 'sound/items/Wirecutter.ogg', 100, 1)
return
@@ -140,9 +140,9 @@
src.icon_state = "bulb-construct-stage2"
src.stage = 2
user.visible_message("[user.name] adds wires to [src].", \
- "You add wires to [src].")
+ "You add wires to [src].")
else
- user << "You need one length of cable to wire [src]."
+ user << "You need one length of cable to wire [src]!"
return
if(istype(W, /obj/item/weapon/screwdriver))
@@ -154,7 +154,7 @@
src.icon_state = "bulb-empty"
src.stage = 3
user.visible_message("[user.name] closes [src]'s casing.", \
- "You close [src]'s casing.", "You hear a noise.")
+ "You close [src]'s casing.", "You hear screwing.")
playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1)
switch(fixture_type)
@@ -341,14 +341,14 @@
// attempt to insert light
if(istype(W, /obj/item/weapon/light))
if(status != LIGHT_EMPTY)
- user << "There is a [fitting] already inserted."
+ user << "There is a [fitting] already inserted!"
return
else
src.add_fingerprint(user)
var/obj/item/weapon/light/L = W
if(istype(L, light_type))
status = L.status
- user << "You insert the [L.name]."
+ user << "You insert the [L.name]."
switchcount = L.switchcount
rigged = L.rigged
brightness = L.brightness
@@ -361,7 +361,7 @@
if(on && rigged)
explode()
else
- user << "This type of light requires a [fitting]."
+ user << "This type of light requires a [fitting]!"
return
// attempt to break the light
@@ -376,7 +376,7 @@
user.visible_message("[user.name] smashed the light!", \
"You hit the light, and it smashes!", \
- "You hear a tinkle of breaking glass")
+ "You hear a tinkle of breaking glass.")
if(on && (W.flags & CONDUCT))
//if(!user.mutations & COLD_RESISTANCE)
if (prob(12))
@@ -384,14 +384,14 @@
broken()
else
- user.visible_message("[user.name] hits the light.")
+ user.visible_message("[user.name] hits the light!")
// attempt to stick weapon into light socket
else if(status == LIGHT_EMPTY)
if(istype(W, /obj/item/weapon/screwdriver)) //If it's a screwdriver open it.
playsound(src.loc, 'sound/items/Screwdriver.ogg', 75, 1)
- user.visible_message("[user.name] opens [src]'s casing.", \
- "You open [src]'s casing.", "You hear a noise.")
+ user.visible_message("[user.name] opens [src]'s casing.", \
+ "You open [src]'s casing.", "You hear a noise.")
var/obj/machinery/light_construct/newlight = null
switch(fitting)
if("tube")
@@ -409,7 +409,7 @@
qdel(src)
return
- user << "You stick \the [W] into the light socket!"
+ user << "You stick \the [W] into the light socket!"
if(has_power() && (W.flags & CONDUCT))
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
s.set_up(3, 1, src)
@@ -452,7 +452,7 @@
return
else if (status == LIGHT_OK||status == LIGHT_BURNED)
user.do_attack_animation(src)
- visible_message("[user.name] smashed the light!", "You hear a tinkle of breaking glass")
+ visible_message("[user.name] smashed the light!", "You hear a tinkle of breaking glass.")
broken()
return
@@ -463,7 +463,7 @@
return
else if (status == LIGHT_OK||status == LIGHT_BURNED)
M.do_attack_animation(src)
- visible_message("[M.name] smashed the light!", "You hear a tinkle of breaking glass")
+ visible_message("[M.name] smashed the light!", "You hear a tinkle of breaking glass.")
broken()
return
// attack with hand - remove tube/bulb
@@ -492,11 +492,11 @@
prot = 1
if(prot > 0)
- user << "You remove the light [fitting]"
+ user << "You remove the light [fitting]."
else if(istype(user) && user.dna.check_mutation(TK))
- user << "You telekinetically remove the light [fitting]."
+ user << "You telekinetically remove the light [fitting]."
else
- user << "You try to remove the light [fitting], but you burn your hand on it!"
+ user << "You try to remove the light [fitting], but you burn your hand on it!"
var/obj/item/organ/limb/affecting = H.get_organ("[user.hand ? "l" : "r" ]_arm")
if(affecting.take_damage( 0, 5 )) // 5 burn damage
@@ -504,7 +504,7 @@
H.updatehealth()
return // if burned, don't remove the light
else
- user << "You remove the light [fitting]."
+ user << "You remove the light [fitting]."
// create a light tube/bulb item and put it in the user's hand
var/obj/item/weapon/light/L = new light_type()
L.status = status
@@ -529,7 +529,7 @@
user << "There is no [fitting] in this light."
return
- user << "You telekinetically remove the light [fitting]."
+ user << "You telekinetically remove the light [fitting]."
// create a light tube/bulb item and put it in the user's hand
var/obj/item/weapon/light/L = new light_type()
L.status = status
@@ -681,7 +681,7 @@
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
var/obj/item/weapon/reagent_containers/syringe/S = I
- user << "You inject the solution into \the [src]."
+ user << "You inject the solution into \the [src]."
if(S.reagents.has_reagent("plasma", 5))
@@ -707,7 +707,7 @@
/obj/item/weapon/light/proc/shatter()
if(status == LIGHT_OK || status == LIGHT_BURNED)
- src.visible_message("[name] shatters.","You hear a small glass object shatter.")
+ src.visible_message("[name] shatters.","You hear a small glass object shatter.")
status = LIGHT_BROKEN
force = 5
playsound(src.loc, 'sound/effects/Glasshit.ogg', 75, 1)
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 79f25526b21..3202414ffb7 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -42,11 +42,11 @@ var/global/list/rad_collectors = list()
if(!src.locked)
toggle_power()
user.visible_message("[user.name] turns the [src.name] [active? "on":"off"].", \
- "You turn the [src.name] [active? "on":"off"].")
+ "You turn the [src.name] [active? "on":"off"].")
investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.toxins/0.29)]%":"It is empty"].","singulo")
return
else
- user << "The controls are locked!"
+ user << "The controls are locked!"
return
..()
@@ -59,10 +59,10 @@ var/global/list/rad_collectors = list()
atmosanalyzer_scan(P.air_contents, user)
else if(istype(W, /obj/item/weapon/tank/internals/plasma))
if(!src.anchored)
- user << "The [src] needs to be secured to the floor first."
+ user << "The [src] needs to be secured to the floor first!"
return 1
if(src.P)
- user << "There's already a plasma tank loaded."
+ user << "There's already a plasma tank loaded!"
return 1
user.drop_item()
src.P = W
@@ -74,32 +74,32 @@ var/global/list/rad_collectors = list()
return 1
else if(istype(W, /obj/item/weapon/wrench))
if(P)
- user << "Remove the plasma tank first."
+ user << "Remove the plasma tank first!"
return 1
if(!anchored && !isinspace())
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
anchored = 1
user.visible_message("[user.name] secures the [src.name].", \
- "You secure the external bolts.", \
- "You hear a ratchet")
+ "You secure the external bolts.", \
+ "You hear a ratchet.")
connect_to_network()
else if(anchored)
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
anchored = 0
user.visible_message("[user.name] unsecures the [src.name].", \
- "You unsecure the external bolts.", \
- "You hear a ratchet")
+ "You unsecure the external bolts.", \
+ "You hear a ratchet.")
disconnect_from_network()
else if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda))
if (src.allowed(user))
if(active)
src.locked = !src.locked
- user << "The controls are now [src.locked ? "locked." : "unlocked."]"
+ user << "You [src.locked ? "lock" : "unlock"] the controls."
else
src.locked = 0 //just in case it somehow gets locked
- user << "The controls can only be locked when \the [src] is active."
+ user << "The controls can only be locked when \the [src] is active!"
else
- user << "Access denied!"
+ user << "Access denied."
return 1
else
..()
diff --git a/code/modules/power/singularity/containment_field.dm b/code/modules/power/singularity/containment_field.dm
index 14062e210f5..ad420ffc5e6 100644
--- a/code/modules/power/singularity/containment_field.dm
+++ b/code/modules/power/singularity/containment_field.dm
@@ -94,8 +94,8 @@
user.Weaken(10)
user.burn_skin(shock_damage)
user.visible_message("[user.name] was shocked by the [src.name]!", \
- "You feel a powerful shock course through your body sending you flying!", \
- "You hear a heavy electrical crack.")
+ "You feel a powerful shock course through your body, sending you flying!", \
+ "You hear a heavy electrical crack.")
else if(issilicon(user))
if(prob(20))
@@ -103,7 +103,7 @@
user.take_overall_damage(0, shock_damage)
user.visible_message("[user.name] was shocked by the [src.name]!", \
"Energy pulse detected, system damaged!", \
- "You hear an electrical crack.")
+ "You hear an electrical crack.")
user.updatehealth()
bump(user)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index fe3691f5415..007d10b427b 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -30,7 +30,7 @@
if(usr.stat || !usr.canmove || usr.restrained())
return
if (src.anchored)
- usr << "It is fastened to the floor!"
+ usr << "It is fastened to the floor!"
return 0
src.dir = turn(src.dir, 90)
return 1
@@ -58,26 +58,26 @@
src.add_fingerprint(user)
if(state == 2)
if(!powernet)
- user << "The emitter isn't connected to a wire."
+ user << "The emitter isn't connected to a wire!"
return 1
if(!src.locked)
if(src.active==1)
src.active = 0
- user << "You turn off \the [src]."
+ user << "You turn off \the [src]."
message_admins("Emitter turned off by [key_name(user, user.client)](?) in ([x],[y],[z] - JMP)",0,1)
log_game("Emitter turned off by [user.ckey]([user]) in ([x],[y],[z])")
investigate_log("turned off by [user.key]","singulo")
else
src.active = 1
- user << "You turn on \the [src]."
+ user << "You turn on \the [src]."
src.shot_number = 0
src.fire_delay = 100
investigate_log("turned on by [user.key]","singulo")
update_icon()
else
- user << "The controls are locked!"
+ user << "The controls are locked!"
else
- user << "The [src] needs to be firmly secured to the floor first."
+ user << "The [src] needs to be firmly secured to the floor first!"
return 1
@@ -152,25 +152,25 @@
if(istype(W, /obj/item/weapon/wrench))
if(active)
- user << "Turn off \the [src] first."
+ user << "Turn off \the [src] first!"
return
switch(state)
if(0 && !isinspace())
state = 1
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] secures [src.name] to the floor.", \
- "You secure the external reinforcing bolts to the floor.", \
- "You hear a ratchet")
+ "You secure the external reinforcing bolts to the floor.", \
+ "You hear a ratchet")
src.anchored = 1
if(1)
state = 0
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
- "You undo the external reinforcing bolts.", \
- "You hear a ratchet")
+ "You undo the external reinforcing bolts.", \
+ "You hear a ratchet.")
src.anchored = 0
if(2)
- user << "The [src.name] needs to be unwelded from the floor."
+ user << "The [src.name] needs to be unwelded from the floor!"
return
if(istype(W, /obj/item/weapon/weldingtool))
@@ -180,42 +180,42 @@
return
switch(state)
if(0)
- user << "The [src.name] needs to be wrenched to the floor."
+ user << "The [src.name] needs to be wrenched to the floor!"
if(1)
if (WT.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
- "You start to weld \the [src] to the floor.", \
- "You hear welding")
+ "You start to weld \the [src] to the floor...", \
+ "You hear welding.")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 2
- user << "You weld \the [src] to the floor."
+ user << "You weld \the [src] to the floor."
connect_to_network()
if(2)
if (WT.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
- "You start to cut \the [src] free from the floor.", \
- "You hear welding")
+ "You start to cut \the [src] free from the floor...", \
+ "You hear welding.")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 1
- user << "You cut \the [src] free from the floor."
+ user << "You cut \the [src] free from the floor."
disconnect_from_network()
return
if(istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))
if(emagged)
- user << "The lock seems to be broken."
+ user << "The lock seems to be broken!"
return
if(src.allowed(user))
if(active)
src.locked = !src.locked
- user << "The controls are now [src.locked ? "locked." : "unlocked."]"
+ user << "You [src.locked ? "lock" : "unlock"] the controls."
else
src.locked = 0 //just in case it somehow gets locked
- user << "The controls can only be locked when \the [src] is online."
+ user << "The controls can only be locked when \the [src] is online!"
else
user << "Access denied."
return
@@ -227,4 +227,4 @@
if(!emagged)
locked = 0
emagged = 1
- user.visible_message("[user.name] emags the [src.name].","You short out the lock.")
+ user.visible_message("[user.name] emags the [src.name].","You short out the lock.")
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index 4e05a8f837e..8cb5c1c626f 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -79,24 +79,24 @@ field_generator power level display
if(state == 2)
if(get_dist(src, user) <= 1)//Need to actually touch the thing to turn it on
if(src.active >= 1)
- user << "You are unable to turn off the [src.name] once it is online."
+ user << "You are unable to turn off the [src.name] once it is online!"
return 1
else
- user.visible_message("[user.name] turns on the [src.name]", \
- "You turn on the [src.name].", \
- "You hear heavy droning")
+ user.visible_message("[user.name] turns on the [src.name].", \
+ "You turn on the [src.name].", \
+ "You hear heavy droning.")
turn_on()
investigate_log("activated by [user.key].","singulo")
src.add_fingerprint(user)
else
- user << "The [src] needs to be firmly secured to the floor first."
+ user << "The [src] needs to be firmly secured to the floor first!"
return
/obj/machinery/field/generator/attackby(obj/item/W, mob/user, params)
if(active)
- user << "The [src] needs to be off."
+ user << "The [src] needs to be off!"
return
else if(istype(W, /obj/item/weapon/wrench))
switch(state)
@@ -104,47 +104,47 @@ field_generator power level display
state = 1
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] secures [src.name] to the floor.", \
- "You secure the external reinforcing bolts to the floor.", \
- "You hear ratchet")
+ "You secure the external reinforcing bolts to the floor.", \
+ "You hear ratchet.")
src.anchored = 1
if(1)
state = 0
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
user.visible_message("[user.name] unsecures [src.name] reinforcing bolts from the floor.", \
- "You undo the external reinforcing bolts.", \
- "You hear ratchet")
+ "You undo the external reinforcing bolts.", \
+ "You hear ratchet.")
src.anchored = 0
if(2)
- user << "The [src.name] needs to be unwelded from the floor."
+ user << "The [src.name] needs to be unwelded from the floor!"
return
else if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
switch(state)
if(0)
- user << "The [src.name] needs to be wrenched to the floor."
+ user << "The [src.name] needs to be wrenched to the floor!"
return
if(1)
if (WT.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to weld the [src.name] to the floor.", \
- "You start to weld \the [src] to the floor.", \
- "You hear welding")
+ "You start to weld \the [src] to the floor...", \
+ "You hear welding.")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 2
- user << "You weld the field generator to the floor."
+ user << "You weld the field generator to the floor."
else
return
if(2)
if (WT.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 50, 1)
user.visible_message("[user.name] starts to cut the [src.name] free from the floor.", \
- "You start to cut \the [src] free from the floor.", \
- "You hear welding")
+ "You start to cut \the [src] free from the floor...", \
+ "You hear welding.")
if (do_after(user,20))
if(!src || !WT.isOn()) return
state = 1
- user << "You cut \the [src] free from the floor."
+ user << "You cut \the [src] free from the floor."
else
return
else
@@ -211,7 +211,7 @@ field_generator power level display
if(draw_power(round(power_draw/2,1)))
return 1
else
- visible_message("The [src.name] shuts down!", "You hear something shutting down")
+ visible_message("The [src.name] shuts down!", "You hear something shutting down.")
turn_off()
investigate_log("ran out of power and deactivated","singulo")
src.power = 0
diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm
index f73e3bcfa7d..6d8e6763389 100644
--- a/code/modules/power/singularity/generator.dm
+++ b/code/modules/power/singularity/generator.dm
@@ -20,14 +20,14 @@
if(!anchored && !isinspace())
user.visible_message("[user.name] secures [src.name] to the floor.", \
- "You secure the [src.name] to the floor.", \
- "You hear a ratchet")
+ "You secure the [src.name] to the floor.", \
+ "You hear a ratchet.")
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
anchored = 1
else if(anchored)
user.visible_message("[user.name] unsecures [src.name] from the floor.", \
- "You unsecure the [src.name] from the floor.", \
- "You hear a ratchet")
+ "You unsecure the [src.name] from the floor.", \
+ "You hear a ratchet.")
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
anchored = 0
return
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index 77972f145b6..9c21da66e97 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -218,7 +218,7 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
"You add some wires.")
temp_state++
else
- user << "You need one length of cable to wire the [src.name]."
+ user << "You need one length of cable to wire the [src.name]!"
return
if(2)
if(istype(O, /obj/item/weapon/wirecutters))//TODO:Shock user if its on?
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index f3ace39921c..599cc293ec7 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -101,25 +101,25 @@
return
if(terminal) //is there already a terminal ?
- user << "This SMES already have a power terminal!"
+ user << "This SMES already have a power terminal!"
return
if(!panel_open) //is the panel open ?
- user << "You must open the maintenance panel first!"
+ user << "You must open the maintenance panel first!"
return
var/turf/T = get_turf(user)
if (T.intact) //is the floor plating removed ?
- user << "You must first remove the floor plating!"
+ user << "You must first remove the floor plating!"
return
var/obj/item/stack/cable_coil/C = I
if(C.amount < 10)
- user << "You need more wires."
+ user << "You need more wires!"
return
- user << "You start building the power terminal..."
+ user << "You start building the power terminal..."
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20) && C.amount >= 10)
@@ -132,8 +132,8 @@
C.use(10)
user.visible_message(\
- "[user.name] has build a power terminal!",\
- "You build the power terminal.")
+ "[user.name] has built a power terminal.",\
+ "You build the power terminal.")
//build the terminal and link it to the network
make_terminal(T)
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index fa2254fd807..36d4fe99f60 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -59,14 +59,14 @@
if(istype(W, /obj/item/weapon/crowbar))
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
- user.visible_message("[user] begins to take the glass off the solar panel.")
+ user.visible_message("[user] begins to take the glass off the solar panel.", "You begin to take the glass off the solar panel...")
if(do_after(user, 50))
var/obj/item/solar_assembly/S = locate() in src
if(S)
S.loc = src.loc
S.give_glass()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user.visible_message("[user] takes the glass off the solar panel.")
+ user.visible_message("[user] takes the glass off the solar panel.", "You take the glass off the solar panel.")
qdel(src)
return
else if (W)
@@ -226,13 +226,13 @@
if(!anchored && isturf(loc))
if(istype(W, /obj/item/weapon/wrench))
anchored = 1
- user.visible_message("[user] wrenches the solar assembly into place.")
+ user.visible_message("[user] wrenches the solar assembly into place.", "You wrench the solar assembly into place.")
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
return 1
else
if(istype(W, /obj/item/weapon/wrench))
anchored = 0
- user.visible_message("[user] unwrenches the solar assembly from it's place.")
+ user.visible_message("[user] unwrenches the solar assembly from its place.", "You unwrench the solar assembly from its place.")
playsound(src.loc, 'sound/items/Ratchet.ogg', 75, 1)
return 1
@@ -241,13 +241,13 @@
if(S.use(2))
glass_type = W.type
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
- user.visible_message("[user] places the glass on the solar assembly.")
+ user.visible_message("[user] places the glass on the solar assembly.", "You place the glass on the solar assembly.")
if(tracker)
new /obj/machinery/power/tracker(get_turf(src), src)
else
new /obj/machinery/power/solar(get_turf(src), src)
else
- user << "You need two sheets of glass to put them into a solar panel."
+ user << "You need two sheets of glass to put them into a solar panel!"
return
return 1
@@ -256,13 +256,13 @@
tracker = 1
user.drop_item()
qdel(W)
- user.visible_message("[user] inserts the electronics into the solar assembly.")
+ user.visible_message("[user] inserts the electronics into the solar assembly.", "You insert the electronics into the solar assembly.")
return 1
else
if(istype(W, /obj/item/weapon/crowbar))
new /obj/item/weapon/tracker_electronics(src.loc)
tracker = 0
- user.visible_message("[user] takes out the electronics from the solar assembly.")
+ user.visible_message("[user] takes out the electronics from the solar assembly.", "You take out the electronics from the solar assembly.")
return 1
..()
diff --git a/code/modules/power/supermatter/supermatter.dm b/code/modules/power/supermatter/supermatter.dm
index 6e926c209f9..a04bf8dda44 100644
--- a/code/modules/power/supermatter/supermatter.dm
+++ b/code/modules/power/supermatter/supermatter.dm
@@ -214,18 +214,18 @@
if(Adjacent(user))
return attack_hand(user)
else
- user << "You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update."
+ user << "You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update."
return
/obj/machinery/power/supermatter_shard/attack_ai(mob/user as mob)
- user << "You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update."
+ user << "You attempt to interface with the control circuits but find they are not connected to your network. Maybe in a future firmware update."
/obj/machinery/power/supermatter_shard/attack_hand(mob/living/user as mob)
if(!istype(user))
return
- user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.",\
- "You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\
- "You hear an unearthly noise as a wave of heat washes over you.")
+ user.visible_message("\The [user] reaches out and touches \the [src], inducing a resonance... \his body starts to glow and bursts into flames before flashing into ash.",\
+ "You reach out and touch \the [src]. Everything starts burning and all you can hear is ringing. Your last thought is \"That was not a wise decision.\"",\
+ "You hear an unearthly noise as a wave of heat washes over you.")
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
@@ -242,9 +242,9 @@
return
if(user.drop_item(W))
Consume(W)
- user.visible_message("As [user] touches \the [src] with \a [W], silence fills the room...",\
- "You touch \the [src] with \the [W], and everything suddenly goes silent.\"\n\The [W] flashes into dust as you flinch away from \the [src].",\
- "Everything suddenly goes silent.")
+ user.visible_message("As [user] touches \the [src] with \a [W], silence fills the room...",\
+ "You touch \the [src] with \the [W], and everything suddenly goes silent.\"\n\The [W] flashes into dust as you flinch away from \the [src].",\
+ "Everything suddenly goes silent.")
playsound(get_turf(src), 'sound/effects/supermatter.ogg', 50, 1)
@@ -253,12 +253,12 @@
/obj/machinery/power/supermatter_shard/Bumped(atom/AM as mob|obj)
if(istype(AM, /mob/living))
- AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\
- "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\
- "You hear an unearthly noise as a wave of heat washes over you.")
+ AM.visible_message("\The [AM] slams into \the [src] inducing a resonance... \his body starts to glow and catch flame before flashing into ash.",\
+ "You slam into \the [src] as your ears are filled with unearthly ringing. Your last thought is \"Oh, fuck.\"",\
+ "You hear an unearthly noise as a wave of heat washes over you.")
else if(isobj(AM) && !istype(AM, /obj/effect))
- AM.visible_message("\The [AM] smacks into \the [src] and rapidly flashes to ash.",\
- "You hear a loud crack as you are washed with a wave of heat.")
+ AM.visible_message("\The [AM] smacks into \the [src] and rapidly flashes to ash.",\
+ "You hear a loud crack as you are washed with a wave of heat.")
else
return
@@ -286,7 +286,7 @@
L.irradiate(rads)
investigate_log("has irradiated [L] after consuming [AM].", "supermatter")
if(L in view())
- L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\
- "The unearthly ringing subsides and you notice you have new radiation burns.", 2)
+ L.show_message("As \the [src] slowly stops resonating, you find your skin covered in new radiation burns.", 1,\
+ "The unearthly ringing subsides and you notice you have new radiation burns.", 2)
else
- L.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2)
+ L.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2)
diff --git a/code/modules/power/terminal.dm b/code/modules/power/terminal.dm
index 834f7e3f9b3..724de7a1b41 100644
--- a/code/modules/power/terminal.dm
+++ b/code/modules/power/terminal.dm
@@ -52,12 +52,12 @@
if(istype(loc, /turf/simulated))
var/turf/simulated/T = loc
if(T.intact)
- user << "You must first expose the power terminal!"
+ user << "You must first expose the power terminal!"
return
if(master && master.can_terminal_dismantle())
- user.visible_message("[user.name] dismantles the power terminal from [master].", \
- "You begin to cut the cables...")
+ user.visible_message("[user.name] dismantles the power terminal from [master].", \
+ "You begin to cut the cables...")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 50))
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index 9b66f6afb91..2ce74ae88dd 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -62,14 +62,14 @@
if(istype(W, /obj/item/weapon/crowbar))
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
- user.visible_message("[user] begins to take the glass off the solar tracker.")
+ user.visible_message("[user] begins to take the glass off the solar tracker.", "You begin to take the glass off the solar tracker...")
if(do_after(user, 50))
var/obj/item/solar_assembly/S = locate() in src
if(S)
S.loc = src.loc
S.give_glass()
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user.visible_message("[user] takes the glass off the tracker.")
+ user.visible_message("[user] takes the glass off the tracker.", "You take the glass off the tracker.")
qdel(src)
return
..()
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index 5ff242be8aa..f2055dc64a3 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -51,7 +51,7 @@
box.update_icon()
user << "You collect [boolets] shell\s. [box] now contains [box.stored_ammo.len] shell\s."
else
- user << "You fail to collect anything."
+ user << "You fail to collect anything!"
//Boxes of ammo
/obj/item/ammo_box
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 57606d89072..4cc38cb4fc2 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -91,7 +91,7 @@
if(!message)
return
if(pointblank)
- user.visible_message("[user] fires [src] point blank at [pbtarget]!", "You fire [src] point blank at [pbtarget]!", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!")
+ user.visible_message("[user] fires [src] point blank at [pbtarget]!", "You fire [src] point blank at [pbtarget]!", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!")
else
user.visible_message("[user] fires [src]!", "You fire [src]!", "You hear a [istype(src, /obj/item/weapon/gun/energy) ? "laser blast" : "gunshot"]!")
@@ -119,7 +119,7 @@
if(istype(user, /mob/living))
var/mob/living/M = user
if (M.disabilities & CLUMSY && prob(40))
- user << "You shoot yourself in the foot with \the [src]!"
+ user << "You shoot yourself in the foot with \the [src]!"
process_fire(user,user,0,params)
M.drop_item()
return
@@ -134,7 +134,7 @@
/obj/item/weapon/gun/proc/can_trigger_gun(mob/living/carbon/user)
if (!user.IsAdvancedToolUser())
- user << "You don't have the dexterity to do this!"
+ user << "You don't have the dexterity to do this!"
return 0
if(!handle_pins(user))
@@ -143,10 +143,10 @@
if(trigger_guard)
if(istype(user) && user.dna)
if(user.dna.check_mutation(HULK))
- user << "Your meaty finger is much too large for the trigger guard!"
+ user << "Your meaty finger is much too large for the trigger guard!"
return 0
if(NOGUNS in user.dna.species.specflags)
- user << "Your fingers don't fit in the trigger guard!"
+ user << "Your fingers don't fit in the trigger guard!"
return 0
return 1
@@ -159,7 +159,7 @@
pin.auth_fail(user)
return 0
else
- user << "\The [src]'s trigger is locked. This weapon doesn't have a firing pin installed!"
+ user << "\The [src]'s trigger is locked. This weapon doesn't have a firing pin installed!"
return 0
@@ -232,7 +232,7 @@
if(can_flashlight)
if(!F)
if(user.l_hand != src && user.r_hand != src)
- user << "You'll need [src] in your hands to do that."
+ user << "You'll need [src] in your hands to do that!"
return
user.drop_item()
user << "You click [S] into place on [src]."
@@ -247,7 +247,7 @@
if(istype(A, /obj/item/weapon/screwdriver))
if(F)
if(user.l_hand != src && user.r_hand != src)
- user << "You'll need [src] in your hands to do that."
+ user << "You'll need [src] in your hands to do that!"
return
for(var/obj/item/device/flashlight/seclite/S in src)
user << "You unscrew the seclite from [src]."
@@ -275,7 +275,7 @@
var/mob/living/carbon/human/user = usr
if(!isturf(user.loc))
- user << "You cannot turn the light on while in this [user.loc]."
+ user << "You cannot turn the light on while in this [user.loc]!"
F.on = !F.on
user << "You toggle the gunlight [F.on ? "on":"off"]."
diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm
index d342e89b0d4..b728fc3a886 100644
--- a/code/modules/projectiles/guns/energy.dm
+++ b/code/modules/projectiles/guns/energy.dm
@@ -67,7 +67,7 @@
fire_sound = shot.fire_sound
fire_delay = shot.delay
if (shot.select_name)
- user << "[src] is now set to [shot.select_name]."
+ user << "[src] is now set to [shot.select_name]."
update_icon()
return
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index ad7246f8359..20cf03caaa3 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -48,7 +48,7 @@
/obj/item/weapon/gun/magic/wand/proc/zap_self(mob/living/user as mob)
- user.visible_message("[user] zaps \himself with [src]!")
+ user.visible_message("[user] zaps \himself with [src].")
playsound(user, fire_sound, 50, 1)
user.attack_log += "\[[time_stamp()]\] [user]/[user.ckey] zapped \himself with a [src]"
diff --git a/code/modules/projectiles/guns/projectile.dm b/code/modules/projectiles/guns/projectile.dm
index 1281adc83e5..66184119b45 100644
--- a/code/modules/projectiles/guns/projectile.dm
+++ b/code/modules/projectiles/guns/projectile.dm
@@ -79,10 +79,10 @@
update_icon()
return
else
- user << "[src] already has a suppressor."
+ user << "[src] already has a suppressor!"
return
else
- user << "You can't seem to figure out how to fit [S] on [src]."
+ user << "You can't seem to figure out how to fit [S] on [src]!"
return
return 0
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index 7639fbaca5f..010b3686cc6 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -136,7 +136,7 @@
/obj/item/weapon/gun/projectile/automatic/l6_saw/afterattack(atom/target as mob|obj|turf, mob/living/user as mob|obj, flag, params) //what I tried to do here is just add a check to see if the cover is open or not and add an icon_state change because I can't figure out how c-20rs do it with overlays
if(cover_open)
- user << "[src]'s cover is open! Close it before firing!"
+ user << "[src]'s cover is open! Close it before firing!"
else
..()
update_icon()
@@ -160,7 +160,7 @@
/obj/item/weapon/gun/projectile/automatic/l6_saw/attackby(var/obj/item/A as obj, mob/user as mob, params)
if(!cover_open)
- user << "[src]'s cover is closed! You can't insert a new mag!"
+ user << "[src]'s cover is closed! You can't insert a new mag."
return
..()
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index 0073e04b2fe..471b5401196 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -39,7 +39,7 @@
if (num_unloaded)
user << "You unload [num_unloaded] shell\s from [src]."
else
- user << "[src] is empty."
+ user << "[src] is empty!"
/obj/item/weapon/gun/projectile/revolver/can_shoot()
return get_ammo(0,0)
@@ -77,7 +77,7 @@
if(magazine.caliber != initial(magazine.caliber))
if(prob(70 - (magazine.ammo_count() * 10))) //minimum probability of 10, maximum of 60
playsound(user, fire_sound, 50, 1)
- user << "[src] blows up in your face!"
+ user << "[src] blows up in your face!"
user.take_organ_damage(0,20)
user.drop_item()
qdel(src)
@@ -88,31 +88,31 @@
..()
if(istype(A, /obj/item/weapon/screwdriver))
if(magazine.caliber == "38")
- user << "You begin to reinforce the barrel of [src]."
+ user << "You begin to reinforce the barrel of [src]..."
if(magazine.ammo_count())
afterattack(user, user) //you know the drill
- user.visible_message("[src] goes off!", "[src] goes off in your face!")
+ user.visible_message("[src] goes off!", "[src] goes off in your face!")
return
if(do_after(user, 30))
if(magazine.ammo_count())
- user << "You can't modify it!"
+ user << "You can't modify it!"
return
magazine.caliber = "357"
desc = "The barrel and chamber assembly seems to have been modified."
- user << "You reinforce the barrel of [src]! Now it will fire .357 rounds."
+ user << "You reinforce the barrel of [src]. Now it will fire .357 rounds."
else
- user << "You begin to revert the modifications to [src]."
+ user << "You begin to revert the modifications to [src]..."
if(magazine.ammo_count())
afterattack(user, user) //and again
- user.visible_message("[src] goes off!", "[src] goes off in your face!")
+ user.visible_message("[src] goes off!", "[src] goes off in your face!")
return
if(do_after(user, 30))
if(magazine.ammo_count())
- user << "You can't modify it!"
+ user << "You can't modify it!"
return
magazine.caliber = "38"
desc = initial(desc)
- user << "You remove the modifications on [src]! Now it will fire .38 rounds."
+ user << "You remove the modifications on [src]. Now it will fire .38 rounds."
/obj/item/weapon/gun/projectile/revolver/mateba
@@ -147,9 +147,9 @@
/obj/item/weapon/gun/projectile/revolver/russian/attackby(var/obj/item/A as obj, mob/user as mob, params)
var/num_loaded = ..()
if(num_loaded)
- user.visible_message("[user] loads a single bullet into the revolver and spins the chamber.", "You load a single bullet into the chamber and spin it.")
+ user.visible_message("[user] loads a single bullet into the revolver and spins the chamber.", "You load a single bullet into the chamber and spin it.")
else
- user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
+ user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
if(get_ammo() > 0)
Spin()
update_icon()
@@ -158,7 +158,7 @@
/obj/item/weapon/gun/projectile/revolver/russian/attack_self(mob/user as mob)
if(!spun && can_shoot())
- user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
+ user.visible_message("[user] spins the chamber of the revolver.", "You spin the revolver's chamber.")
Spin()
else
var/num_unloaded = 0
@@ -170,7 +170,7 @@
CB.update_icon()
num_unloaded++
if (num_unloaded)
- user << "You unload [num_unloaded] shell\s from [src]!"
+ user << "You unload [num_unloaded] shell\s from [src]."
else
user << "[src] is empty."
@@ -185,13 +185,13 @@
return
if(target != user)
if(ismob(target))
- user << "A mechanism prevents you from shooting anyone but yourself."
+ user << "A mechanism prevents you from shooting anyone but yourself!"
return
if(ishuman(user))
var/mob/living/carbon/human/H = user
if(!spun)
- user << "You need to spin the revolver's chamber first."
+ user << "You need to spin the revolver's chamber first!"
return
spun = 0
@@ -204,9 +204,9 @@
var/limb_name = affecting.getDisplayName()
if(affecting.name == "head" || affecting.name == "eyes" || affecting.name == "mouth")
user.apply_damage(300, BRUTE, affecting)
- user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a gunshot!")
+ user.visible_message("[user.name] fires [src] at \his head!", "You fire [src] at your head!", "You hear a gunshot!")
else
- user.visible_message("[user.name] cowardly fires [src] at \his [limb_name]!", "You cowardly fire [src] at your [limb_name]!", "You hear a gunshot!")
+ user.visible_message("[user.name] cowardly fires [src] at \his [limb_name]!", "You cowardly fire [src] at your [limb_name]!", "You hear a gunshot!")
return
user.visible_message("*click*")
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 0baee44780b..e5d5b462c6d 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -175,7 +175,7 @@
if (num_unloaded)
user << "You break open \the [src] and unload [num_unloaded] shell\s."
else
- user << "[src] is empty."
+ user << "[src] is empty!"
// IMPROVISED SHOTGUN //
@@ -204,7 +204,7 @@
user << "You tie the lengths of cable to the shotgun, making a sling."
update_icon()
else
- user << "You need at least ten lengths of cable if you want to make a sling."
+ user << "You need at least ten lengths of cable if you want to make a sling!"
return
// Sawing guns related procs //
@@ -224,13 +224,13 @@
/obj/item/weapon/gun/projectile/proc/sawoff(mob/user as mob)
if(sawn_state == SAWN_OFF)
- user << "\The [src] is already shortened."
+ user << "\The [src] is already shortened!"
return
if(sawn_state == SAWN_SAWING)
return
- user.visible_message("[user] begins to shorten \the [src].", "You begin to shorten \the [src].")
+ user.visible_message("[user] begins to shorten \the [src].", "You begin to shorten \the [src]...")
//if there's any live ammo inside the gun, makes it go off
if(blow_up(user))
@@ -240,7 +240,7 @@
sawn_state = SAWN_SAWING
if(do_after(user, 30))
- user.visible_message("[user] shortens \the [src]!", "You shorten \the [src]!")
+ user.visible_message("[user] shortens \the [src]!", "You shorten \the [src].")
name = "sawn-off [src.name]"
desc = sawn_desc
icon_state = "[icon_state]-sawn"
diff --git a/code/modules/projectiles/guns/syringe_gun.dm b/code/modules/projectiles/guns/syringe_gun.dm
index 0b08405cdcc..2fb641d6c56 100644
--- a/code/modules/projectiles/guns/syringe_gun.dm
+++ b/code/modules/projectiles/guns/syringe_gun.dm
@@ -47,7 +47,7 @@
/obj/item/weapon/gun/syringe/attack_self(mob/living/user as mob)
if(!syringes.len)
- user << "[src] is empty."
+ user << "[src] is empty!"
return 0
var/obj/item/weapon/reagent_containers/syringe/S = syringes[syringes.len]
@@ -56,7 +56,7 @@
S.loc = user.loc
syringes.Remove(S)
- user << "You unload [S] from \the [src]!"
+ user << "You unload [S] from \the [src]."
return 1
@@ -69,7 +69,7 @@
A.loc = src
return 1
else
- usr << "[src] cannot hold more syringes."
+ usr << "[src] cannot hold more syringes!"
return 0
/obj/item/weapon/gun/syringe/rapidsyringe
diff --git a/code/modules/projectiles/projectile.dm b/code/modules/projectiles/projectile.dm
index 4a7438fe954..37a75e268dd 100644
--- a/code/modules/projectiles/projectile.dm
+++ b/code/modules/projectiles/projectile.dm
@@ -62,7 +62,7 @@
organ_hit_text = " in \the [parse_zone(def_zone)]"
if(suppressed)
playsound(loc, hitsound, 5, 1, -1)
- L << "You've been shot by \a [src][organ_hit_text]!"
+ L << "You're shot by \a [src][organ_hit_text]!"
else
if(hitsound)
var/volume = vol_by_damage()
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index e49cb61e992..4fd76334aab 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -153,13 +153,13 @@
return
if(src.beaker)
- user << "A beaker is already loaded into the machine."
+ user << "A beaker is already loaded into the machine!"
return
src.beaker = B
user.drop_item()
B.loc = src
- user << "You add the beaker to the machine!"
+ user << "You add the beaker to the machine."
SSnano.update_uis(src) // update all UIs attached to src
if(!icon_beaker)
@@ -286,23 +286,23 @@
if(istype(B, /obj/item/weapon/reagent_containers/glass))
if(src.beaker)
- user << "A beaker is already loaded into the machine."
+ user << "A beaker is already loaded into the machine!"
return
src.beaker = B
user.drop_item()
B.loc = src
- user << "You add the beaker to the machine!"
+ user << "You add the beaker to the machine."
src.updateUsrDialog()
icon_state = "mixer1"
else if(!condi && istype(B, /obj/item/weapon/storage/pill_bottle))
if(src.loaded_pill_bottle)
- user << "A pill bottle is already loaded into the machine."
+ user << "A pill bottle is already loaded into the machine!"
return
src.loaded_pill_bottle = B
user.drop_item()
B.loc = src
- user << "You add the pill bottle into the dispenser slot!"
+ user << "You add the pill bottle into the dispenser slot."
src.updateUsrDialog()
return
@@ -610,28 +610,28 @@
default_deconstruction_crowbar(B)
return 1
else
- user << "You can't use the [src.name] while it's panel is opened."
+ user << "You can't use the [src.name] while it's panel is opened!"
return 1
if(istype(B, /obj/item/weapon/reagent_containers/glass))
if(src.beaker)
- user << "A beaker is already loaded into the machine."
+ user << "A beaker is already loaded into the machine!"
return
src.beaker = B
user.drop_item()
B.loc = src
- user << "You add the beaker to the machine!"
+ user << "You add the beaker to the machine."
src.updateUsrDialog()
icon_state = "mixer1"
else if(!condi && istype(B, /obj/item/weapon/storage/pill_bottle))
if(src.loaded_pill_bottle)
- user << "A pill bottle is already loaded into the machine."
+ user << "A pill bottle is already loaded into the machine!"
return
src.loaded_pill_bottle = B
user.drop_item()
B.loc = src
- user << "You add the pill bottle into the dispenser slot!"
+ user << "You add the pill bottle into the dispenser slot."
src.updateUsrDialog()
return
@@ -915,13 +915,13 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime)
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(stat & (NOPOWER|BROKEN)) return
if(src.beaker)
- user << "A beaker is already loaded into the machine."
+ user << "A beaker is already loaded into the machine!"
return
src.beaker = I
user.drop_item()
I.loc = src
- user << "You add the beaker to the machine!"
+ user << "You add the beaker to the machine."
src.updateUsrDialog()
icon_state = "mixer1"
@@ -1062,7 +1062,7 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime)
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown))
var/obj/item/weapon/reagent_containers/food/snacks/grown/G = O
if(!G.dry)
- user << "You must dry that first!"
+ user << "You must dry that first!"
return 1
if(holdingitems && holdingitems.len >= limit)
@@ -1077,17 +1077,17 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime)
B.remove_from_storage(G, src)
holdingitems += G
if(holdingitems && holdingitems.len >= limit) //Sanity checking so the blender doesn't overfill
- user << "You fill the All-In-One grinder to the brim."
+ user << "You fill the All-In-One grinder to the brim."
break
if(!O.contents.len)
- user << "You empty the plant bag into the All-In-One grinder."
+ user << "You empty the plant bag into the All-In-One grinder."
src.updateUsrDialog()
return 0
if (!is_type_in_list(O, blend_items) && !is_type_in_list(O, juice_items))
- user << "Cannot refine into a reagent."
+ user << "Cannot refine into a reagent!"
return 1
user.unEquip(O)
@@ -1441,13 +1441,13 @@ obj/machinery/computer/pandemic/proc/replicator_cooldown(var/waittime)
if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(beaker)
- user << "A beaker is already loaded into the machine."
+ user << "A beaker is already loaded into the machine!"
return
if(user.drop_item())
beaker = I
I.loc = src
- user << "You add the beaker to the machine!"
+ user << "You add the beaker to the machine."
icon_state = "mixer1b"
SSnano.update_uis(src)
diff --git a/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm b/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm
index 700315b3e36..9c0bbff9395 100644
--- a/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Medicine-Reagents.dm
@@ -162,7 +162,6 @@ datum/reagent/medicine/silver_sulfadiazine
description = "On touch, quickly heals burn damage. Basic anti-burn healing drug. On ingestion, deals minor toxin damage."
reagent_state = LIQUID
color = "#C8A5DC"
- metabolization_rate = 5 * REAGENTS_METABOLISM
datum/reagent/medicine/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume, var/show_message = 1)
if(iscarbon(M))
@@ -179,7 +178,7 @@ datum/reagent/medicine/silver_sulfadiazine/reaction_mob(var/mob/living/M as mob,
return
datum/reagent/medicine/silver_sulfadiazine/on_mob_life(var/mob/living/M as mob)
- M.adjustFireLoss(-1*REM)
+ M.adjustFireLoss(-2*REM)
..()
return
@@ -189,7 +188,6 @@ datum/reagent/medicine/styptic_powder
description = "On touch, quickly heals brute damage. Basic anti-brute healing drug. On ingestion, deals minor toxin damage."
reagent_state = LIQUID
color = "#C8A5DC"
- metabolization_rate = 5 * REAGENTS_METABOLISM
datum/reagent/medicine/styptic_powder/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume, var/show_message = 1)
if(iscarbon(M))
@@ -251,10 +249,10 @@ datum/reagent/medicine/charcoal
metabolization_rate = 0.5 * REAGENTS_METABOLISM
datum/reagent/medicine/charcoal/on_mob_life(var/mob/living/M as mob)
- M.adjustToxLoss(-1.5*REM)
+ M.adjustToxLoss(-2*REM)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
- M.reagents.remove_reagent(R.id,0.5)
+ M.reagents.remove_reagent(R.id,1)
..()
return
diff --git a/code/modules/reagents/reagent_containers/borghydro.dm b/code/modules/reagents/reagent_containers/borghydro.dm
index 7e2e63aba62..f4304ba596a 100644
--- a/code/modules/reagents/reagent_containers/borghydro.dm
+++ b/code/modules/reagents/reagent_containers/borghydro.dm
@@ -123,7 +123,7 @@ Borg Hypospray
empty = 0
if(empty)
- usr << "It is currently empty. Allow some time for the internal syntheszier to produce more."
+ usr << "It is currently empty! Allow some time for the internal syntheszier to produce more."
/*
Borg Shaker
*/
@@ -167,7 +167,7 @@ Borg Shaker
else if(target.is_open_container() && target.reagents)
var/datum/reagents/R = reagent_list[mode]
if(!R.total_volume)
- user << "[src] is currently out of this ingredient. Please allow some time for the synthesizer to produce more."
+ user << "[src] is currently out of this ingredient! Please allow some time for the synthesizer to produce more."
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
@@ -187,7 +187,7 @@ Borg Shaker
empty = 0
if(empty)
- usr << "It is currently empty. Please allow some time for the synthesizer to produce more."
+ usr << "It is currently empty! Please allow some time for the synthesizer to produce more."
/obj/item/weapon/reagent_containers/borghypo/borgshaker/hacked
..()
diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm
index bba70ba32b1..8a8f5f1728b 100644
--- a/code/modules/reagents/reagent_containers/dropper.dm
+++ b/code/modules/reagents/reagent_containers/dropper.dm
@@ -17,7 +17,7 @@
return
if(!target.is_open_container() && !ismob(target) && !istype(target,/obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/clothing/mask/cigarette)) //You can inject humans and food but you cant remove the shit.
- user << "You cannot directly fill [target]."
+ user << "You cannot directly fill [target]!"
return
var/trans = 0
@@ -73,7 +73,7 @@
return
if(!target.reagents.total_volume)
- user << "[target] is empty."
+ user << "[target] is empty!"
return
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 366847d9635..8cf1fb79d65 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -50,7 +50,7 @@
else if(istype(target, /obj/structure/reagent_dispensers)) //A dispenser. Transfer FROM it TO us.
if(target.reagents && !target.reagents.total_volume)
- user << "[target] is empty and can't be refilled."
+ user << "[target] is empty and can't be refilled!"
return
if(reagents.total_volume >= reagents.maximum_volume)
@@ -62,7 +62,7 @@
else if(target.is_open_container() && target.reagents) //Something like a glass. Player probably wants to transfer TO it.
if(!reagents.total_volume)
- user << "[src] is empty."
+ user << "[src] is empty!"
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
@@ -104,7 +104,7 @@
user << "You heat [src] with [I]."
reagents.handle_reactions()
else
- user << "[src] is already hotter than [I]."
+ user << "[src] is already hotter than [I]!"
if(istype(I,/obj/item/weapon/reagent_containers/food/snacks/egg)) //breaking eggs
var/obj/item/weapon/reagent_containers/food/snacks/egg/E = I
diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm
index 2d83c9580b8..b6da840f2cf 100644
--- a/code/modules/reagents/reagent_containers/hypospray.dm
+++ b/code/modules/reagents/reagent_containers/hypospray.dm
@@ -16,7 +16,7 @@
/obj/item/weapon/reagent_containers/hypospray/attack(mob/living/M, mob/user)
if(!reagents.total_volume)
- user << "[src] is empty."
+ user << "[src] is empty!"
return
if(!istype(M))
return
diff --git a/code/modules/reagents/reagent_containers/pill.dm b/code/modules/reagents/reagent_containers/pill.dm
index 4aff93675e5..4520bb48afb 100644
--- a/code/modules/reagents/reagent_containers/pill.dm
+++ b/code/modules/reagents/reagent_containers/pill.dm
@@ -59,11 +59,11 @@
if(!proximity) return
if(target.is_open_container() != 0 && target.reagents)
if(!target.reagents.total_volume)
- user << "[target] is empty. There's nothing to dissolve [src] in."
+ user << "[target] is empty! There's nothing to dissolve [src] in."
return
user << "You dissolve [src] in [target]."
for(var/mob/O in viewers(2, user)) //viewers is necessary here because of the small radius
- O << "[user] slips something into [target]."
+ O << "[user] slips something into [target]!"
reagents.trans_to(target, reagents.total_volume)
spawn(5)
qdel(src)
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 43484c7cc4b..edfce7a4595 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -40,7 +40,7 @@
return
if(reagents.total_volume < amount_per_transfer_from_this)
- user << "\The [src] is empty!"
+ user << "\The [src] is empty!"
return
spray(A)
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index 8c14b5d5b77..9d7988c289e 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -69,19 +69,19 @@
var/mob/living/carbon/human/H = target
if(H.dna)
if(NOBLOOD in H.dna.species.specflags && !H.dna.species.exotic_blood)
- user << "You are unable to locate any blood."
+ user << "You are unable to locate any blood!"
return
if(reagents.has_reagent("blood"))
- user << "There is already a blood sample in this syringe."
+ user << "There is already a blood sample in this syringe!"
return
if(istype(target, /mob/living/carbon)) //maybe just add a blood reagent to all mobs. Then you can suck them dry...With hundreds of syringes. Jolly good idea.
var/amount = src.reagents.maximum_volume - src.reagents.total_volume
var/mob/living/carbon/T = target
if(!check_dna_integrity(T))
- user << "You are unable to locate any blood."
+ user << "You are unable to locate any blood!"
return
if(NOCLONE in T.mutations) //target done been eat, no more blood in him
- user << "You are unable to locate any blood."
+ user << "You are unable to locate any blood!"
return
if(target != user)
target.visible_message("[user] is trying to take a blood sample from [target]!", \
@@ -99,22 +99,22 @@
if(H.dna && H.dna.species.exotic_blood && H.reagents.total_volume)
target.reagents.trans_to(src, amount)
else
- user << "You are unable to locate any blood."
+ user << "You are unable to locate any blood!"
return
if (B)
src.reagents.reagent_list += B
src.reagents.update_total()
src.on_reagent_change()
src.reagents.handle_reactions()
- user.visible_message("[user] takes a blood sample from [target].")
+ user.visible_message("[user] takes a blood sample from [target].")
else //if not mob
if(!target.reagents.total_volume)
- user << "[target] is empty."
+ user << "[target] is empty!"
return
if(!target.is_open_container() && !istype(target,/obj/structure/reagent_dispensers) && !istype(target,/obj/item/slime_extract))
- user << "You cannot directly remove reagents from [target]."
+ user << "You cannot directly remove reagents from [target]!"
return
var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this) // transfer from, transfer to - who cares?
@@ -132,7 +132,7 @@
return
if(!target.is_open_container() && !ismob(target) && !istype(target, /obj/item/weapon/reagent_containers/food) && !istype(target, /obj/item/slime_extract) && !istype(target, /obj/item/clothing/mask/cigarette) && !istype(target, /obj/item/weapon/storage/fancy/cigarettes))
- user << "You cannot directly fill [target]."
+ user << "You cannot directly fill [target]!"
return
if(target.reagents.total_volume >= target.reagents.maximum_volume)
user << "[target] is full."
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 5c2928a6556..ab72b62f722 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -149,11 +149,11 @@
if((!istype(user)) || (user.stat))
return
if(cups <= 0)
- user << "What? No cups?"
+ user << "No cups left!"
return
cups--
user.put_in_hands(new /obj/item/weapon/reagent_containers/food/drinks/sillycup)
- user.visible_message("[user] gets a cup from [src].","You get a cup from [src].")
+ user.visible_message("[user] gets a cup from [src].","You get a cup from [src].")
/obj/structure/reagent_dispensers/water_cooler/attackby(var/obj/item/I, var/mob/user, params)
if(istype(I, /obj/item/weapon/paper))
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index 3d725cafcfd..5e077f56ea3 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -126,7 +126,7 @@
return
if(isrobot(user)) return //Carn: fix for borgs dropping their modules on conveyor belts
if(!user.drop_item())
- user << "\The [I] is stuck to your hand, you cannot place it on the conveyor!"
+ user << "\The [I] is stuck to your hand, you cannot place it on the conveyor!"
return
if(I && I.loc) I.loc = src.loc
return
diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm
index 33b1ae0df0f..69ffea18298 100644
--- a/code/modules/recycling/disposal-construction.dm
+++ b/code/modules/recycling/disposal-construction.dm
@@ -98,7 +98,7 @@
return
if(anchored)
- usr << "You must unfasten the pipe before rotating it."
+ usr << "You must unfasten the pipe before rotating it!"
return
dir = turn(dir, -90)
@@ -112,7 +112,7 @@
return
if(anchored)
- usr << "You must unfasten the pipe before flipping it."
+ usr << "You must unfasten the pipe before flipping it!"
return
dir = turn(dir, 180)
@@ -170,10 +170,14 @@
nicetype = "pipe"
var/turf/T = loc
- if(T.intact)
- user << "You can only attach the [nicetype] if the floor plating is removed."
+ if(T.intact && istype(T, /turf/simulated/floor))
+ user << "You can only attach the [nicetype] if the floor plating is removed!"
return
-
+
+ if(!ispipe && istype(T, /turf/simulated/wall))
+ user << "You can't build [nicetype]s on walls, only disposal pipes!"
+ return
+
var/obj/structure/disposalpipe/CP = locate() in T
if(istype(I, /obj/item/weapon/wrench))
@@ -184,15 +188,15 @@
density = 0
else
density = 1
- user << "You detach the [nicetype] from the underfloor."
+ user << "You detach the [nicetype] from the underfloor."
else
if(!is_pipe()) // Disposal or outlet
if(CP) // There's something there
if(!istype(CP,/obj/structure/disposalpipe/trunk))
- user << "The [nicetype] requires a trunk underneath it in order to work."
+ user << "The [nicetype] requires a trunk underneath it in order to work!"
return
else // Nothing under, fuck.
- user << "The [nicetype] requires a trunk underneath it in order to work."
+ user << "The [nicetype] requires a trunk underneath it in order to work!"
return
else
if(CP)
@@ -201,7 +205,7 @@
if(istype(CP, /obj/structure/disposalpipe/broken))
pdir = CP.dir
if(pdir & dpdir)
- user << "There is already a [nicetype] at that location."
+ user << "There is already a [nicetype] at that location!"
return
anchored = 1
if(ispipe)
@@ -209,7 +213,7 @@
density = 0
else
density = 1 // We don't want disposal bins or outlets to go density 0
- user << "You attach the [nicetype] to the underfloor."
+ user << "You attach the [nicetype] to the underfloor."
playsound(loc, 'sound/items/Ratchet.ogg', 100, 1)
update()
@@ -218,11 +222,11 @@
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(loc, 'sound/items/Welder2.ogg', 100, 1)
- user << "Welding the [nicetype] in place."
+ user << "You start welding the [nicetype] in place..."
if(do_after(user, 20))
if(!loc || !W.isOn())
return
- user << "The [nicetype] has been welded in place!"
+ user << "The [nicetype] has been welded in place."
update() // TODO: Make this neat
if(ispipe)
@@ -250,7 +254,7 @@
return
else
- user << "You need to attach it to the plating first!"
+ user << "You need to attach it to the plating first!"
return
/obj/structure/disposalconstruct/proc/is_pipe()
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index c34059ec621..0cbd54f514f 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -105,11 +105,11 @@
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1)
- user << "You start slicing the floorweld off \the [src]."
+ user << "You start slicing the floorweld off \the [src]..."
if(do_after(user,20))
if(!src || !W.isOn()) return
- user << "You've sliced the floorweld off \the [src]."
+ user << "You slice the floorweld off \the [src]."
Deconstruct()
return
else
@@ -134,7 +134,7 @@
user.drop_item()
I.loc = src
- user.visible_message("[user.name] places \the [I] into \the [src].", \
+ user.visible_message("[user.name] places \the [I] into \the [src].", \
"You place \the [I] into \the [src].")
update()
@@ -149,23 +149,23 @@
if(!iscarbon(user) && !user.ventcrawler) //only carbon and ventcrawlers can climb into disposal by themselves.
return
if(target.mob_size > MOB_SIZE_HUMAN)
- user << "[target] doesn't fit inside [src]."
+ user << "[target] doesn't fit inside [src]!"
return
src.add_fingerprint(user)
if(user == target)
- user.visible_message("[user] starts climbing into [src].", \
- "[user] starts climbing into [src].")
+ user.visible_message("[user] starts climbing into [src].", \
+ "You start climbing into [src]...")
else
target.visible_message("[user] starts putting [target] into [src].", \
- "[user] starts putting [target] into [src]!")
+ "[user] starts putting you into [src]!")
if(do_mob(user, target, 20))
if (target.client)
target.client.perspective = EYE_PERSPECTIVE
target.client.eye = src
target.loc = src
if(user == target)
- user.visible_message("[user] climbs into [src].", \
- "[user] climbs into [src].")
+ user.visible_message("[user] climbs into [src].", \
+ "You climb into [src].")
else
target.visible_message("[user] has placed [target] in [src].", \
"[user] has placed [target] in [src].")
@@ -214,7 +214,7 @@
// human interact with machine
/obj/machinery/disposal/attack_hand(mob/user as mob)
if(user && user.loc == src)
- usr << "You cannot reach the controls from inside."
+ usr << "You cannot reach the controls from inside!"
return
/*
if(mode==-1)
@@ -271,7 +271,7 @@
if(..())
return
if(usr.loc == src)
- usr << "You cannot reach the controls from inside."
+ usr << "You cannot reach the controls from inside!"
return
if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1
@@ -846,12 +846,12 @@
if(W.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1)
- user << "You start slicing the disposal pipe."
+ user << "You start slicing the disposal pipe..."
// check if anything changed over 2 seconds
if(do_after(user,30))
if(!src || !W.isOn()) return
Deconstruct()
- user << "You've sliced the disposal pipe."
+ user << "You slice the disposal pipe."
else
return
@@ -1146,16 +1146,16 @@
var/obj/item/weapon/weldingtool/W = I
if(linked)
- user << "You need to deconstruct disposal machinery above this pipe."
+ user << "You need to deconstruct disposal machinery above this pipe!"
return
if(W.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1)
- user << "You start slicing the disposal pipe."
+ user << "You start slicing the disposal pipe..."
if(do_after(user,30))
if(!src || !W.isOn()) return
Deconstruct()
- user << "You've sliced the disposal pipe."
+ user << "You slice the disposal pipe."
else
return
@@ -1285,10 +1285,10 @@
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, 'sound/items/Welder2.ogg', 100, 1)
- user << "You start slicing the floorweld off \the [src]."
+ user << "You start slicing the floorweld off \the [src]..."
if(do_after(user,20))
if(!src || !W.isOn()) return
- user << "You've sliced the floorweld off \the [src]."
+ user << "You slice the floorweld off \the [src]."
stored.loc = loc
src.transfer_fingerprints_to(stored)
stored.update()
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index de964360207..19d4496b315 100644
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -38,15 +38,15 @@
else if(istype(W, /obj/item/weapon/pen))
var/str = copytext(sanitize(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN)
if(!str || !length(str))
- user << "Invalid text."
+ user << "Invalid text!"
return
- user.visible_message("[user] labels [src] as [str].")
+ user.visible_message("[user] labels [src] as [str].")
name = "[name] ([str])"
else if(istype(W, /obj/item/stack/wrapping_paper) && !giftwrapped)
var/obj/item/stack/wrapping_paper/WP = W
if(WP.use(3))
- user.visible_message("[user] wraps the package in festive paper!")
+ user.visible_message("[user] wraps the package in festive paper!")
giftwrapped = 1
if(istype(wrapped, /obj/structure/closet/crate))
icon_state = "giftcrate"
@@ -55,7 +55,7 @@
if(WP.amount <= 0 && !WP.loc) //if we used our last wrapping paper, drop a cardboard tube
new /obj/item/weapon/c_tube( get_turf(user) )
else
- user << "You need more paper."
+ user << "You need more paper!"
/obj/item/smallDelivery
@@ -92,9 +92,9 @@
else if(istype(W, /obj/item/weapon/pen))
var/str = copytext(sanitize(input(user,"Label text?","Set label","")),1,MAX_NAME_LEN)
if(!str || !length(str))
- user << "Invalid text."
+ user << "Invalid text!"
return
- user.visible_message("[user] labels [src] as [str].")
+ user.visible_message("[user] labels [src] as [str].")
name = "[name] ([str])"
else if(istype(W, /obj/item/stack/wrapping_paper) && !giftwrapped)
@@ -102,11 +102,11 @@
if(WP.use(1))
icon_state = "giftcrate[wrapped.w_class]"
giftwrapped = 1
- user.visible_message("[user] wraps the package in festive paper!")
+ user.visible_message("[user] wraps the package in festive paper!")
if(WP.amount <= 0 && !WP.loc) //if we used our last wrapping paper, drop a cardboard tube
new /obj/item/weapon/c_tube( get_turf(user) )
else
- user << "You need more paper."
+ user << "You need more paper!"
@@ -161,7 +161,7 @@
P.wrapped = O
O.loc = P
else
- user << "You need more paper."
+ user << "You need more paper!"
return
else if(istype (target, /obj/structure/closet))
var/obj/structure/closet/O = target
@@ -173,13 +173,13 @@
O.welded = 1
O.loc = P
else
- user << "You need more paper."
+ user << "You need more paper!"
return
else
- user << "The object you are trying to wrap is unsuitable for the sorting machinery."
+ user << "The object you are trying to wrap is unsuitable for the sorting machinery!"
return
- user.visible_message("[user] wraps [target].")
+ user.visible_message("[user] wraps [target].")
user.attack_log += text("\[[time_stamp()]\] Has used [name] on [target]")
if(amount <= 0 && !src.loc) //if we used our last wrapping paper, drop a cardboard tube
@@ -342,11 +342,11 @@
if(W.remove_fuel(0,user))
playsound(loc, 'sound/items/Welder2.ogg', 100, 1)
- user << "You start slicing the floorweld off the delivery chute."
+ user << "You start slicing the floorweld off the delivery chute..."
if(do_after(user,20))
if(!src || !W.isOn()) return
Deconstruct()
- user << "You sliced the floorweld off the delivery chute."
+ user << "You slice the floorweld off the delivery chute."
return
else
return
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index 1e9bcb8c6a0..3663a339382 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -101,7 +101,7 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
default_deconstruction_crowbar(O)
return
else
- user << "You can't load the [src.name] while it's opened."
+ user << "You can't load the [src.name] while it's opened!"
return
if (disabled)
return
@@ -116,11 +116,11 @@ using metal and glass, it uses glass and reagents (usually sulfuric acis).
if (stat)
return
if (busy)
- user << "The [name] is busy. Please wait for completion of previous operation."
+ user << "The [name] is busy! Please wait for completion of previous operation."
return
var/obj/item/stack/sheet/stack = O
if ((TotalMaterials() + stack.perunit) > max_material_amount)
- user << "The [name] is full. Please remove glass from the protolathe in order to insert more."
+ user << "The [name] is full! Please remove glass from the protolathe in order to insert more."
return
var/amount = round(input("How many sheets do you want to add?") as num)
diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm
index 72e30978b11..b8e4560a26a 100644
--- a/code/modules/research/designs/autolathe_designs.dm
+++ b/code/modules/research/designs/autolathe_designs.dm
@@ -106,6 +106,14 @@
build_path = /obj/item/weapon/stock_parts/console_screen
category = list("initial", "Electronics")
+/datum/design/apc_board
+ name = "APC Power Control Module"
+ id = "power control"
+ build_type = AUTOLATHE
+ materials = list("$metal" = 100, "$glass" = 100)
+ build_path = /obj/item/weapon/module/power_control
+ category = list("initial", "Electronics")
+
/datum/design/airlock_board
name = "Airlock electronics"
id = "airlock_board"
diff --git a/code/modules/research/experimentor.dm b/code/modules/research/experimentor.dm
index c9a9f339aa1..be722fe8fb0 100644
--- a/code/modules/research/experimentor.dm
+++ b/code/modules/research/experimentor.dm
@@ -156,7 +156,7 @@
loaded_item = O
user.drop_item()
O.loc = src
- user << "You add the [O.name] to the machine!"
+ user << "You add the [O.name] to the machine."
flick("h_lathe_load", src)
return
@@ -254,21 +254,21 @@
var/criticalReaction = locate(exp_on) in critical_items ? TRUE : FALSE
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == SCANTYPE_POKE)
- visible_message("[src] prods at [exp_on] with mechanical arms.")
+ visible_message("[src] prods at [exp_on] with mechanical arms.")
if(prob(EFFECT_PROB_LOW) && criticalReaction)
- visible_message("[exp_on] is gripped in just the right way, enhancing it's focus.")
+ visible_message("[exp_on] is gripped in just the right way, enhancing its focus.")
badThingCoeff++
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
- visible_message("[src] malfunctions and destroys [exp_on], lashing it's arms out at nearby people!.")
+ visible_message("[src] malfunctions and destroys [exp_on], lashing its arms out at nearby people!")
for(var/mob/living/m in oview(1, src))
m.apply_damage(15,"brute",pick("head","chest","groin"))
investigate_log("Experimentor dealt minor brute to [m].", "experimentor")
ejectItem(TRUE)
if(prob(EFFECT_PROB_LOW-badThingCoeff))
- visible_message("[src] malfunctions!.")
+ visible_message("[src] malfunctions!")
exp = SCANTYPE_OBLITERATE
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
- visible_message("[src] malfunctions, throwing the [exp_on]!.")
+ visible_message("[src] malfunctions, throwing the [exp_on]!")
var/mob/living/target = locate(/mob/living) in oview(7,src)
if(target)
var/obj/item/throwing = loaded_item
@@ -278,21 +278,21 @@
throwing.throw_at(target, 10, 1)
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == SCANTYPE_IRRADIATE)
- visible_message("[src] reflects radioactive rays at [exp_on]!")
+ visible_message("[src] reflects radioactive rays at [exp_on]!")
if(prob(EFFECT_PROB_LOW) && criticalReaction)
- visible_message("[exp_on] has activated an unknown subroutine!")
+ visible_message("[exp_on] has activated an unknown subroutine!")
cloneMode = TRUE
cloneCount = badThingCoeff
investigate_log("Experimentor has made a clone of [exp_on]", "experimentor")
ejectItem()
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
- visible_message("[src] malfunctions, melting [exp_on] and leaking radiation!.")
+ visible_message("[src] malfunctions, melting [exp_on] and leaking radiation!")
for(var/mob/living/m in oview(1, src))
m.irradiate(25)
investigate_log("Experimentor has irradiated [m]", "experimentor") //One entry per person so we know what was irradiated.
ejectItem(TRUE)
if(prob(EFFECT_PROB_LOW-badThingCoeff))
- visible_message("[src] malfunctions, spewing toxic waste!.")
+ visible_message("[src] malfunctions, spewing toxic waste!")
for(var/turf/T in oview(1, src))
if(!T.density)
if(prob(EFFECT_PROB_VERYHIGH))
@@ -303,7 +303,7 @@
ejectItem(TRUE)
var/newPath = pickWeighted(valid_items)
loaded_item = new newPath(src)
- visible_message("[src] malfunctions, transforming [savedName] into [loaded_item]!.")
+ visible_message("[src] malfunctions, transforming [savedName] into [loaded_item]!")
investigate_log("Experimentor has transformed [savedName] into [loaded_item]", "experimentor")
if(istype(loaded_item,/obj/item/weapon/grenade/chem_grenade))
var/obj/item/weapon/grenade/chem_grenade/CG = loaded_item
@@ -311,12 +311,12 @@
ejectItem()
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == SCANTYPE_GAS)
- visible_message("[src] fills it's chamber with gas, [exp_on] included.")
+ visible_message("[src] fills its chamber with gas, [exp_on] included.")
if(prob(EFFECT_PROB_LOW) && criticalReaction)
- visible_message("[exp_on] achieves the perfect mix!")
+ visible_message("[exp_on] achieves the perfect mix!")
new /obj/item/stack/sheet/mineral/plasma(get_turf(pick(oview(1,src))))
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
- visible_message("[src] destroys [exp_on], leaking dangerous gas!.")
+ visible_message("[src] destroys [exp_on], leaking dangerous gas!")
chosenchem = pick("carbon","radium","toxin","condensedcapsaicin","mushroomhallucinogen","space_drugs","ethanol","beepskysmash")
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = src
@@ -343,18 +343,18 @@
warn_admins(usr, "[chosenchem] smoke")
investigate_log("Experimentor has released [chosenchem] smoke!", "experimentor")
if(prob(EFFECT_PROB_LOW-badThingCoeff))
- visible_message("[src] malfunctions, spewing harmless gas!.")
+ visible_message("[src] malfunctions, spewing harmless gas.>")
throwSmoke(src.loc)
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
- visible_message("[src] melts [exp_on], ionizing the air around it!.")
+ visible_message("[src] melts [exp_on], ionizing the air around it!")
empulse(src.loc, 4, 6)
investigate_log("Experimentor has generated an Electromagnetic Pulse.", "experimentor")
ejectItem(TRUE)
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == SCANTYPE_HEAT)
- visible_message("[src] raises [exp_on]'s temperature.")
+ visible_message("[src] raises [exp_on]'s temperature.")
if(prob(EFFECT_PROB_LOW) && criticalReaction)
- visible_message("[src]'s emergency coolant system gives off a small ding!")
+ visible_message("[src]'s emergency coolant system gives off a small ding!")
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1)
var/obj/item/weapon/reagent_containers/food/drinks/coffee/C = new /obj/item/weapon/reagent_containers/food/drinks/coffee(get_turf(pick(oview(1,src))))
chosenchem = pick("plasma","capsaicin","ethanol")
@@ -377,12 +377,12 @@
FB.xo = MT.x - start.x
FB.fire()
if(prob(EFFECT_PROB_LOW-badThingCoeff))
- visible_message("[src] malfunctions, melting [exp_on] and releasing a burst of flame!.")
+ visible_message("[src] malfunctions, melting [exp_on] and releasing a burst of flame!")
explosion(src.loc, -1, 0, 0, 0, 0, flame_range = 2)
investigate_log("Experimentor started a fire.", "experimentor")
ejectItem(TRUE)
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
- visible_message("[src] malfunctions, melting [exp_on] and leaking hot air!.")
+ visible_message("[src] malfunctions, melting [exp_on] and leaking hot air!")
var/datum/gas_mixture/env = src.loc.return_air()
var/transfer_moles = 0.25 * env.total_moles()
var/datum/gas_mixture/removed = env.remove(transfer_moles)
@@ -396,7 +396,7 @@
investigate_log("Experimentor has released hot air.", "experimentor")
ejectItem(TRUE)
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
- visible_message("[src] malfunctions, activating it's emergency coolant systems!.")
+ visible_message("[src] malfunctions, activating its emergency coolant systems!")
throwSmoke(src.loc)
for(var/mob/living/m in oview(1, src))
m.apply_damage(5,"burn",pick("head","chest","groin"))
@@ -404,9 +404,9 @@
ejectItem()
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == SCANTYPE_COLD)
- visible_message("[src] lowers [exp_on]'s temperature.")
+ visible_message("[src] lowers [exp_on]'s temperature.")
if(prob(EFFECT_PROB_LOW) && criticalReaction)
- visible_message("[src]'s emergency coolant system gives off a small ding!")
+ visible_message("[src]'s emergency coolant system gives off a small ding!")
var/obj/machinery/vending/coffee/C = new /obj/machinery/vending/coffee(get_turf(pick(oview(1,src))))
playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) //Ding! Your death coffee is ready!
chosenchem = pick("uranium","frostoil","ephedrine")
@@ -416,7 +416,7 @@
C.desc = "It has a large hazard symbol printed on the side in fading ink."
investigate_log("Experimentor has made a cup of [chosenchem] coffee.", "experimentor")
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
- visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!")
+ visible_message("[src] malfunctions, shattering [exp_on] and releasing a dangerous cloud of coolant!")
var/datum/reagents/R = new/datum/reagents(50)
R.my_atom = src
R.add_reagent("frostoil" , 50)
@@ -428,7 +428,7 @@
qdel(R)
ejectItem(TRUE)
if(prob(EFFECT_PROB_LOW-badThingCoeff))
- visible_message("[src] malfunctions, shattering [exp_on] and leaking cold air!.")
+ visible_message("[src] malfunctions, shattering [exp_on] and leaking cold air!")
var/datum/gas_mixture/env = src.loc.return_air()
var/transfer_moles = 0.25 * env.total_moles()
var/datum/gas_mixture/removed = env.remove(transfer_moles)
@@ -442,22 +442,22 @@
investigate_log("Experimentor has released cold air.", "experimentor")
ejectItem(TRUE)
if(prob(EFFECT_PROB_MEDIUM-badThingCoeff))
- visible_message("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!.")
+ visible_message("[src] malfunctions, releasing a flurry of chilly air as [exp_on] pops out!")
var/datum/effect/effect/system/harmless_smoke_spread/smoke = new
smoke.set_up(1,0, src.loc, 0)
smoke.start()
ejectItem()
////////////////////////////////////////////////////////////////////////////////////////////////
if(exp == SCANTYPE_OBLITERATE)
- visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!")
+ visible_message("[exp_on] activates the crushing mechanism, [exp_on] is destroyed!")
if(prob(EFFECT_PROB_LOW) && criticalReaction)
- visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!")
+ visible_message("[src]'s crushing mechanism slowly and smoothly descends, flattening the [exp_on]!")
new /obj/item/stack/sheet/plasteel(get_turf(pick(oview(1,src))))
if(linked_console.linked_lathe)
linked_console.linked_lathe.m_amount += min((linked_console.linked_lathe.max_material_storage - linked_console.linked_lathe.TotalMaterials()), (exp_on.m_amt))
linked_console.linked_lathe.g_amount += min((linked_console.linked_lathe.max_material_storage - linked_console.linked_lathe.TotalMaterials()), (exp_on.g_amt))
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
- visible_message("[src]'s crusher goes way too many levels too high, crushing right through space-time!")
+ visible_message("[src]'s crusher goes way too many levels too high, crushing right through space-time!")
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
investigate_log("Experimentor has triggered the 'throw things' reaction.", "experimentor")
var/list/throwAt = list()
@@ -469,7 +469,7 @@
var/cast = throwAt[counter]
cast:throw_at(src,10,1)
if(prob(EFFECT_PROB_LOW-badThingCoeff))
- visible_message("[src]'s crusher goes one level too high, crushing right into space-time!.")
+ visible_message("[src]'s crusher goes one level too high, crushing right into space-time!")
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 1, -3)
investigate_log("Experimentor has triggered the 'minor throw things' reaction.", "experimentor")
var/list/oViewStuff = oview(7,src)
@@ -486,10 +486,10 @@
if(exp == FAIL)
var/a = pick("rumbles","shakes","vibrates","shudders")
var/b = pick("crushes","spins","viscerates","smashes","insults")
- visible_message("[exp_on] [a], and [b], the experiment was a failiure!")
+ visible_message("[exp_on] [a], and [b], the experiment was a failure.")
if(exp == SCANTYPE_DISCOVER)
- visible_message("[src] scans the [exp_on], revealing it's true nature!.")
+ visible_message("[src] scans the [exp_on], revealing its true nature!")
playsound(src.loc, 'sound/effects/supermatter.ogg', 50, 3, -1)
var/obj/item/weapon/relic/R = loaded_item
R.reveal()
@@ -500,11 +500,11 @@
if(prob(EFFECT_PROB_VERYLOW-badThingCoeff))
var/globalMalf = rand(1,100)
if(globalMalf < 15)
- visible_message("[src]'s onboard detection system has malfunctioned!.")
+ visible_message("[src]'s onboard detection system has malfunctioned!")
item_reactions["[exp_on.type]"] = pick(SCANTYPE_POKE,SCANTYPE_IRRADIATE,SCANTYPE_GAS,SCANTYPE_HEAT,SCANTYPE_COLD,SCANTYPE_OBLITERATE)
ejectItem()
if(globalMalf > 16 && globalMalf < 35)
- visible_message("[src] melts [exp_on], ian-izing the air around it!.")
+ visible_message("[src] melts [exp_on], ian-izing the air around it!")
throwSmoke(src.loc)
if(trackedIan)
throwSmoke(trackedIan.loc)
@@ -515,7 +515,7 @@
investigate_log("Experimentor has spawned a new corgi.", "experimentor")
ejectItem(TRUE)
if(globalMalf > 36 && globalMalf < 50)
- visible_message("[src] improves [exp_on], drawing the life essence of those nearby!")
+ visible_message("[src] improves [exp_on], drawing the life essence of those nearby!")
for(var/mob/living/m in view(4,src))
m << "You feel your flesh being torn from you, mists of blood drifting to [src]!"
m.apply_damage(50,"brute","chest")
@@ -526,7 +526,7 @@
exp_on.origin_tech = list2params(reqs)
investigate_log("Experimentor has set the origin tech of [exp_on] to [exp_on.origin_tech]", "experimentor")
if(globalMalf > 51 && globalMalf < 75)
- visible_message("[src] encounters a run-time error!")
+ visible_message("[src] encounters a run-time error!")
throwSmoke(src.loc)
if(trackedRuntime)
throwSmoke(trackedRuntime.loc)
@@ -537,7 +537,7 @@
investigate_log("Experimentor failed to steal runtime, and instead spawned a new cat.", "experimentor")
ejectItem(TRUE)
if(globalMalf > 76)
- visible_message("[src] begins to smoke and hiss, shaking violently!")
+ visible_message("[src] begins to smoke and hiss, shaking violently!")
use_power(500000)
investigate_log("Experimentor has drained power from its APC", "experimentor")
@@ -567,7 +567,7 @@
src.updateUsrDialog()
else
if(recentlyExperimented)
- usr << "[src] has been used too recently!"
+ usr << "[src] has been used too recently!"
return
var/dotype
if(text2num(scantype) == SCANTYPE_DISCOVER)
@@ -638,7 +638,7 @@
/obj/item/weapon/relic/attack_self(mob/user as mob)
if(revealed)
if(cooldown)
- user << "[src] does not react."
+ user << "[src] does not react!"
return
else if(src.loc == user)
cooldown = TRUE
@@ -690,7 +690,7 @@
qdel(src)
/obj/item/weapon/relic/proc/rapidDupe(var/mob/user)
- audible_message("[src] emits a loud pop!")
+ audible_message("[src] emits a loud pop!")
var/list/dupes = list()
var/counter
var/max = rand(5,10)
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index 5228fd29bc0..9322e7c9286 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -140,7 +140,7 @@ Note: Must be placed west/left of and R&D console to function.
default_deconstruction_crowbar(O)
return 1
else
- user << "You can't load the [src.name] while it's opened."
+ user << "You can't load the [src.name] while it's opened!"
return 1
if (disabled)
return
@@ -148,7 +148,7 @@ Note: Must be placed west/left of and R&D console to function.
user << " The [src.name] must be linked to an R&D console first!"
return 1
if (busy)
- user << "The [src.name] is busy. Please wait for completion of previous operation."
+ user << "The [src.name] is busy! Please wait for completion of previous operation."
return 1
if (O.is_open_container())
return
@@ -160,7 +160,7 @@ Note: Must be placed west/left of and R&D console to function.
if(istype(O,/obj/item/stack/sheet))
var/obj/item/stack/sheet/S = O
if (TotalMaterials() + S.perunit > max_material_storage)
- user << "The [src.name]'s material bin is full. Please remove material before adding more."
+ user << "The [src.name]'s material bin is full! Please remove material before adding more."
return 1
var/obj/item/stack/sheet/stack = O
diff --git a/code/modules/research/rdmachines.dm b/code/modules/research/rdmachines.dm
index ee922a055a6..e4ed832817e 100644
--- a/code/modules/research/rdmachines.dm
+++ b/code/modules/research/rdmachines.dm
@@ -73,10 +73,10 @@
if(href_list["pulse"])
var/temp_wire = href_list["wire"]
if (!istype(usr.get_active_hand(), /obj/item/device/multitool))
- usr << "You need a multitool!"
+ usr << "You need a multitool!"
else
if(src.wires[temp_wire])
- usr << "You can't pulse a cut wire."
+ usr << "You can't pulse a cut wire!"
else
if(src.hack_wire == href_list["wire"])
src.hacked = !src.hacked
@@ -91,7 +91,7 @@
spawn(100) src.shocked = !src.shocked
if(href_list["cut"])
if (!istype(usr.get_active_hand(), /obj/item/weapon/wirecutters))
- usr << "You need wirecutters!"
+ usr << "You need wirecutters!"
else
var/temp_wire = href_list["wire"]
wires[temp_wire] = !wires[temp_wire]
diff --git a/code/modules/research/xenobiology/xenobiology.dm b/code/modules/research/xenobiology/xenobiology.dm
index 12b76321f27..f054bbb6867 100644
--- a/code/modules/research/xenobiology/xenobiology.dm
+++ b/code/modules/research/xenobiology/xenobiology.dm
@@ -23,7 +23,7 @@
if(Uses == 0)
user << " You can't enhance a used extract!"
return ..()
- user <<"You apply the enhancer. It now has triple the amount of uses."
+ user <<"You apply the enhancer. It now has triple the amount of uses."
Uses = 3
enhanced = 1
qdel(O)
@@ -204,8 +204,8 @@
M.languages |= HUMAN
M.faction -= "neutral"
M << "All at once it makes sense, you know what you are and who you are! Self awareness is yours!"
- M << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost."
- user << "[M] is suddenly attentive and aware. It worked!"
+ M << "You are grateful to be self aware and owe [user] a great debt. Serve [user], and assist them in completing their goals at any cost."
+ user << "[M] is suddenly attentive and aware. It worked!"
qdel(src)
else
user << "[M] looks interested for a moment, but then looks back down. Maybe you should try again later..."
@@ -232,7 +232,7 @@
user <<" The slime already has the maximum amount of extract!"
return..()
- user <<"You feed the slime the steroid. It now has triple the amount of extract."
+ user <<"You feed the slime the steroid. It now has triple the amount of extract."
M.cores = 3
qdel(src)
@@ -350,7 +350,7 @@
ghost = O
break
if(!ghost)
- user << "The rune fizzles uselessly. There is no spirit nearby."
+ user << "The rune fizzles uselessly! There is no spirit nearby."
return
var/mob/living/carbon/human/G = new /mob/living/carbon/human
if(prob(50)) G.gender = "female"
diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm
index 3d75e5a227a..2a1909a15dd 100644
--- a/code/modules/security levels/keycard authentication.dm
+++ b/code/modules/security levels/keycard authentication.dm
@@ -25,7 +25,7 @@
return
/obj/machinery/keycard_auth/attack_paw(mob/user as mob)
- user << "You are too primitive to use this device."
+ user << "You are too primitive to use this device!"
return
/obj/machinery/keycard_auth/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
@@ -53,10 +53,10 @@
/obj/machinery/keycard_auth/attack_hand(mob/user as mob)
if(user.stat || stat & (NOPOWER|BROKEN))
- user << "This device is not powered."
+ user << "This device is not powered!"
return
if(busy)
- user << "This device is busy."
+ user << "This device is busy!"
return
user.set_machine(src)
diff --git a/code/modules/surgery/appendectomy.dm b/code/modules/surgery/appendectomy.dm
index 7ba9ad03ba0..0ba1db2da7c 100644
--- a/code/modules/surgery/appendectomy.dm
+++ b/code/modules/surgery/appendectomy.dm
@@ -15,17 +15,17 @@
/datum/surgery_step/extract_appendix/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
A = locate() in target.internal_organs
if(A)
- user.visible_message("[user] begins to extract [target]'s appendix.")
+ user.visible_message("[user] begins to extract [target]'s appendix.", "You begin to extract [target]'s appendix...")
else
- user.visible_message("[user] looks for an appendix in [target].")
+ user.visible_message("[user] looks for an appendix in [target].", "You look for an appendix in [target]...")
/datum/surgery_step/extract_appendix/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(A)
- user.visible_message("[user] successfully removes [target]'s appendix!")
+ user.visible_message("[user] successfully removes [target]'s appendix!", "You successfully removes [target]'s appendix.")
A.loc = get_turf(target)
target.internal_organs -= A
for(var/datum/disease/appendicitis in target.viruses)
appendicitis.cure()
else
- user.visible_message("[user] can't find an appendix in [target]!")
+ user << "You can't find an appendix in [target]!"
return 1
\ No newline at end of file
diff --git a/code/modules/surgery/brain_removal.dm b/code/modules/surgery/brain_removal.dm
index 41c3b4ee68c..0d57fb6f9a2 100644
--- a/code/modules/surgery/brain_removal.dm
+++ b/code/modules/surgery/brain_removal.dm
@@ -14,13 +14,13 @@
/datum/surgery_step/extract_brain/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
B = target.getorgan(/obj/item/organ/brain)
if(B)
- user.visible_message("[user] begins to extract [target]'s brain.")
+ user.visible_message("[user] begins to extract [target]'s brain.", "You begin to extract [target]'s brain...")
else
- user.visible_message("[user] looks for a brain in [target].")
+ user.visible_message("[user] looks for a brain in [target].", "You look for a brain in [target]...")
/datum/surgery_step/extract_brain/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(B)
- user.visible_message("[user] successfully removes [target]'s brain!")
+ user.visible_message("[user] successfully removes [target]'s brain!", "You successfully remove [target]'s brain.")
B.loc = get_turf(target)
B.transfer_identity(target)
target.internal_organs -= B
@@ -30,7 +30,7 @@
H.apply_damage(25,"brute","head")
add_logs(user, target, "debrained", addition="INTENT: [uppertext(user.a_intent)]")
else
- user.visible_message("[user] can't find a brain in [target]!")
+ user << "You can't find a brain in [target]!"
return 1
diff --git a/code/modules/surgery/cavity_implant.dm b/code/modules/surgery/cavity_implant.dm
index 289dadeec2d..4373e3c2a8b 100644
--- a/code/modules/surgery/cavity_implant.dm
+++ b/code/modules/surgery/cavity_implant.dm
@@ -19,27 +19,27 @@
IC = I
break
if(tool)
- user.visible_message("[user] begins to insert [tool] into [target]'s [target_zone].")
+ user.visible_message("[user] begins to insert [tool] into [target]'s [target_zone].", "You begin to insert [tool] into [target]'s [target_zone]...")
else
- user.visible_message("[user] checks for items in [target]'s [target_zone].")
+ user.visible_message("[user] checks for items in [target]'s [target_zone].", "You check for items in [target]'s [target_zone]...")
/datum/surgery_step/handle_cavity/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(tool)
if(IC || tool.w_class > 3 || NODROP in tool.flags || tool.GetTypeInAllContents(/obj/item/weapon/disk/nuclear) || istype(tool, /obj/item/weapon/disk/nuclear) || istype(tool, /obj/item/organ))
- user.visible_message("[user] can't seem to fit [tool] in [target]'s [target_zone].")
+ user << "You can't seem to fit [tool] in [target]'s [target_zone]!"
return 0
else
- user.visible_message("[user] stuffs [tool] into [target]'s [target_zone]!")
+ user.visible_message("[user] stuffs [tool] into [target]'s [target_zone]!", "You stuff [tool] into [target]'s [target_zone].")
user.drop_item()
target.internal_organs += tool
tool.loc = target
return 1
else
if(IC)
- user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!")
+ user.visible_message("[user] pulls [IC] out of [target]'s [target_zone]!", "You pull [IC] out of [target]'s [target_zone].")
user.put_in_hands(IC)
target.internal_organs -= IC
return 1
else
- user.visible_message("[user] doesn't find anything in [target]'s [target_zone].")
+ user << "You don't find anything in [target]'s [target_zone]."
return 0
\ No newline at end of file
diff --git a/code/modules/surgery/core_removal.dm b/code/modules/surgery/core_removal.dm
index 2f8dff6988f..6a38e160560 100644
--- a/code/modules/surgery/core_removal.dm
+++ b/code/modules/surgery/core_removal.dm
@@ -11,14 +11,13 @@
time = 16
/datum/surgery_step/extract_core/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to extract a core from [target].")
+ user.visible_message("[user] begins to extract a core from [target].", "You begin to extract a core from [target]...")
/datum/surgery_step/extract_core/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/simple_animal/slime/slime = target
if(slime.cores > 0)
slime.cores--
- user.visible_message("[user] successfully extracts a core from [target]!")
- user << "[slime.cores] core\s remaining."
+ user.visible_message("[user] successfully extracts a core from [target]!", "You successfully extract a core from [target]. [slime.cores] core\s remaining.")
new slime.coretype(slime.loc)
@@ -28,5 +27,5 @@
else
return 0
else
- user.visible_message("There aren't any cores left in [target].")
+ user << "There aren't any cores left in [target]!"
return 1
\ No newline at end of file
diff --git a/code/modules/surgery/cybernetic_implants.dm b/code/modules/surgery/cybernetic_implants.dm
index 0e4312f7263..3f4dcb5210c 100644
--- a/code/modules/surgery/cybernetic_implants.dm
+++ b/code/modules/surgery/cybernetic_implants.dm
@@ -2,7 +2,7 @@
#define MAX_CHEST_IMPLANT 3
/datum/surgery_step/cybernetic_implant/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/cybernetic_implant/implant, datum/surgery/surgery)
- user.visible_message("[user] begins to implant [target] with [implant].")
+ user.visible_message("[user] begins to implant [target] with [implant].", "You begin to implant [target] with [implant]...")
//[[[[EYES]]]]
/datum/surgery/eye_cybernetic_implant/eyes
@@ -68,9 +68,9 @@
/datum/surgery_step/cybernetic_implant/proc/insert(mob/user, mob/living/carbon/target, obj/item/cybernetic_implant/implant,target_zone,full)
if(full)
- user.visible_message("[user] can't seem to implant anything else into the [target]'s [target_zone].")
+ user << "You can't seem to implant anything else into the [target]'s [target_zone]!"
else
- user.visible_message("[user] inserts [implant] into the [target]'s [target_zone == "head" ? "brain" : target_zone]!")
+ user.visible_message("[user] inserts [implant] into the [target]'s [target_zone == "head" ? "brain" : target_zone]!", "You insert [implant] into the [target]'s [target_zone == "head" ? "brain" : target_zone].")
implant.owner = target
implant.function()
user.drop_item()
diff --git a/code/modules/surgery/eye_surgery.dm b/code/modules/surgery/eye_surgery.dm
index 0fb7f2413cb..71e136efa72 100644
--- a/code/modules/surgery/eye_surgery.dm
+++ b/code/modules/surgery/eye_surgery.dm
@@ -11,10 +11,10 @@
time = 64
/datum/surgery_step/fix_eyes/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to fix [target]'s eyes.")
+ user.visible_message("[user] begins to fix [target]'s eyes.", "You begin to fix [target]'s eyes...")
/datum/surgery_step/fix_eyes/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] successfully fixes [target]'s eyes!")
+ user.visible_message("[user] successfully fixes [target]'s eyes!", "You succeed in fixing [target]'s eyes.")
target.disabilities &= ~BLIND
target.disabilities &= ~NEARSIGHT
target.eye_blurry = 35 //this will fix itself slowly.
@@ -23,8 +23,8 @@
/datum/surgery_step/fix_eyes/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.getorgan(/obj/item/organ/brain))
- user.visible_message("[user] accidentally stabs [target] right in the brain!")
+ user.visible_message("[user] accidentally stabs [target] right in the brain!", "You accidentally stab [target] right in the brain!")
target.adjustBrainLoss(100)
else
- user.visible_message("[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain.")
+ user.visible_message("[user] accidentally stabs [target] right in the brain! Or would have, if [target] had a brain.", "You accidentally stab [target] right in the brain! Or would have, if [target] had a brain.")
return 0
\ No newline at end of file
diff --git a/code/modules/surgery/gender_reassignment.dm b/code/modules/surgery/gender_reassignment.dm
index 0ef01d56d7c..4cc6be2d953 100644
--- a/code/modules/surgery/gender_reassignment.dm
+++ b/code/modules/surgery/gender_reassignment.dm
@@ -13,18 +13,18 @@
/datum/surgery_step/reshape_genitals/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.gender == FEMALE)
- user.visible_message("[user] begins to reshape [target]'s genitals to look more masculine.")
+ user.visible_message("[user] begins to reshape [target]'s genitals to look more masculine.", "You begin to reshape [target]'s genitals to look more masculine...")
else
- user.visible_message("[user] begins to reshape [target]'s genitals to look more feminine.")
+ user.visible_message("[user] begins to reshape [target]'s genitals to look more feminine.", "You begin to reshape [target]'s genitals to look more feminine...")
/datum/surgery_step/reshape_genitals/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/carbon/human/H = target //no type check, as that should be handled by the surgery
H.gender_ambiguous = 0
if(target.gender == FEMALE)
- user.visible_message("[user] has made a man of [target]!")
+ user.visible_message("[user] has made a man of [target]!", "You made [target] a man.")
target.gender = MALE
else
- user.visible_message("[user] has made a woman of [target]!")
+ user.visible_message("[user] has made a woman of [target]!", "You made [target] a woman.")
target.gender = FEMALE
target.regenerate_icons()
return 1
@@ -32,7 +32,7 @@
/datum/surgery_step/reshape_genitals/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
var/mob/living/carbon/human/H = target
H.gender_ambiguous = 1
- user.visible_message("[user] mutilates [target]'s genitals beyond the point of recognition!")
+ user.visible_message("[user] accidentally mutilates [target]'s genitals beyond the point of recognition!", "You accidentally mutilate [target]'s genitals beyond the point of recognition!")
target.gender = pick(MALE, FEMALE)
target.regenerate_icons()
return 1
diff --git a/code/modules/surgery/generic_steps.dm b/code/modules/surgery/generic_steps.dm
index 7683c9444ff..b31ec1afe24 100644
--- a/code/modules/surgery/generic_steps.dm
+++ b/code/modules/surgery/generic_steps.dm
@@ -5,7 +5,7 @@
time = 24
/datum/surgery_step/incise/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to make an incision in [target]'s [parse_zone(target_zone)].")
+ user.visible_message("[user] begins to make an incision in [target]'s [parse_zone(target_zone)].", "You begin to make an incision in [target]'s [parse_zone(target_zone)]...")
@@ -15,7 +15,7 @@
time = 48
/datum/surgery_step/clamp_bleeders/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].")
+ user.visible_message("[user] begins to clamp bleeders in [target]'s [parse_zone(target_zone)].", "You begin to clamp bleeders in [target]'s [parse_zone(target_zone)]...")
//retract skin
@@ -24,7 +24,7 @@
time = 32
/datum/surgery_step/retract_skin/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].")
+ user.visible_message("[user] begins to retract the skin in [target]'s [parse_zone(target_zone)].", "You begin to retract the skin in [target]'s [parse_zone(target_zone)]...")
@@ -34,7 +34,7 @@
time = 32
/datum/surgery_step/close/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].")
+ user.visible_message("[user] begins to mend the incision in [target]'s [parse_zone(target_zone)].", "You begin to mend the incision in [target]'s [parse_zone(target_zone)]...")
/datum/surgery_step/close/tool_check(mob/user, obj/item/tool)
@@ -62,7 +62,7 @@
time = 64
/datum/surgery_step/saw/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].")
+ user.visible_message("[user] begins to saw through the bone in [target]'s [parse_zone(target_zone)].", "You begin to saw through the bone in [target]'s [parse_zone(target_zone)]...")
diff --git a/code/modules/surgery/helpers.dm b/code/modules/surgery/helpers.dm
index 360e4607720..a25e97df091 100644
--- a/code/modules/surgery/helpers.dm
+++ b/code/modules/surgery/helpers.dm
@@ -41,16 +41,16 @@
var/datum/surgery/S = available_surgeries[P]
var/datum/surgery/procedure = new S.type
if(procedure)
- if(get_location_accessible(M, procedure.location))
+ if(get_location_accessible(M, procedure.location) || procedure.ignore_clothes)
if(procedure.location == "anywhere") // if location == "anywhere" change location to the surgeon's target, otherwise leave location as is.
procedure.location = user.zone_sel.selecting
M.surgeries += procedure
- user.visible_message("[user] drapes [I] over [M]'s [parse_zone(procedure.location)] to prepare for \an [procedure.name].")
+ user.visible_message("[user] drapes [I] over [M]'s [parse_zone(procedure.location)] to prepare for \an [procedure.name].", "You drape [I] over [M]'s [parse_zone(procedure.location)] to prepare for \an [procedure.name].")
add_logs(user, M, "operated", addition="Operation type: [procedure.name]")
return 1
else
- user << "You need to expose [M]'s [procedure.location] first."
+ user << "You need to expose [M]'s [procedure.location] first!"
return 1 //return 1 so we don't slap the guy in the dick with the drapes.
else
return 1 //once the input menu comes up, cancelling it shouldn't hit the guy with the drapes either.
diff --git a/code/modules/surgery/implant_removal.dm b/code/modules/surgery/implant_removal.dm
index 97277220159..8e21fae2ff2 100644
--- a/code/modules/surgery/implant_removal.dm
+++ b/code/modules/surgery/implant_removal.dm
@@ -19,19 +19,19 @@
I = W
break
if(I)
- user.visible_message("[user] begins to extract [I] from [target]'s [target_zone].")
+ user.visible_message("[user] begins to extract [I] from [target]'s [target_zone].", "You begin to extract [I] from [target]'s [target_zone]...")
else
- user.visible_message("[user] looks for an implant in [target]'s [target_zone].")
+ user.visible_message("[user] looks for an implant in [target]'s [target_zone].", "You look for an implant in [target]'s [target_zone]...")
/datum/surgery_step/extract_implant/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(I)
- user.visible_message("[user] successfully removes [I] from [target]'s [target_zone]!")
+ user.visible_message("[user] successfully removes [I] from [target]'s [target_zone]!", "You successfully remove [I] from [target]'s [target_zone].")
if(istype(I, /obj/item/weapon/implant/loyalty))
- target << "You feel a sense of liberation as Nanotrasen's grip on your mind fades away."
+ target << "You feel a sense of liberation as Nanotrasen's grip on your mind fades away."
qdel(I)
if(istype(target, /mob/living/carbon/human))
var/mob/living/carbon/human/H = target
H.sec_hud_set_implants()
else
- user.visible_message("[user] can't find anything in [target]'s [target_zone].")
+ user << "You can't find anything in [target]'s [target_zone]!"
return 1
diff --git a/code/modules/surgery/limb augmentation.dm b/code/modules/surgery/limb augmentation.dm
index f9a26f9f49a..b520fb5a4e8 100644
--- a/code/modules/surgery/limb augmentation.dm
+++ b/code/modules/surgery/limb augmentation.dm
@@ -10,7 +10,7 @@
/datum/surgery_step/replace/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]!")
+ user.visible_message("[user] begins to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)].", "You begin to sever the muscles on [target]'s [parse_zone(user.zone_sel.selecting)]...")
/datum/surgery_step/add_limb
@@ -24,9 +24,9 @@
/datum/surgery_step/add_limb/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
L = new_organ
if(L)
- user.visible_message("[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].")
+ user.visible_message("[user] begins to augment [target]'s [parse_zone(user.zone_sel.selecting)].", "You begin to augment [target]'s [parse_zone(user.zone_sel.selecting)]...")
else
- user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].")
+ user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].", "You look for [target]'s [parse_zone(user.zone_sel.selecting)]...")
@@ -46,7 +46,7 @@
if(L)
if(ishuman(target))
var/mob/living/carbon/human/H = target
- user.visible_message("[user] successfully augments [target]'s [parse_zone(target_zone)]!")
+ user.visible_message("[user] successfully augments [target]'s [parse_zone(target_zone)]!", "You successfully augment [target]'s [parse_zone(target_zone)].")
L.loc = get_turf(target)
H.organs -= L
switch(target_zone)
@@ -72,5 +72,5 @@
H.update_augments() //Gives them the Cyber limb overlay
add_logs(user, target, "augmented", addition="by giving him new [parse_zone(target_zone)] INTENT: [uppertext(user.a_intent)]")
else
- user.visible_message("[user] [target] has no organic [parse_zone(target_zone)] there!")
+ user << "[target] has no organic [parse_zone(target_zone)] there!"
return 1
diff --git a/code/modules/surgery/lipoplasty.dm b/code/modules/surgery/lipoplasty.dm
index 2f3645a5df3..88f2cd2f4d1 100644
--- a/code/modules/surgery/lipoplasty.dm
+++ b/code/modules/surgery/lipoplasty.dm
@@ -13,10 +13,10 @@
time = 64
/datum/surgery_step/cut_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to cut away [target]'s excess fat!")
+ user.visible_message("[user] begins to cut away [target]'s excess fat.", "You begin to cut away [target]'s excess fat...")
/datum/surgery_step/cut_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] cuts [target]'s excess fat loose!")
+ user.visible_message("[user] cuts [target]'s excess fat loose!", "You cut [target]'s excess fat loose.")
return 1
//remove fat
@@ -25,10 +25,10 @@
time = 32
/datum/surgery_step/remove_fat/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to extract [target]'s loose fat!")
+ user.visible_message("[user] begins to extract [target]'s loose fat!", "You begin to extract [target]'s loose fat...")
/datum/surgery_step/remove_fat/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] extracts [target]'s fat!")
+ user.visible_message("[user] extracts [target]'s fat!", "You extract [target]'s fat.")
target.overeatduration = 0 //patient is unfatted
var/removednutriment = target.nutrition
target.nutrition = NUTRITION_LEVEL_WELL_FED
diff --git a/code/modules/surgery/plastic_surgery.dm b/code/modules/surgery/plastic_surgery.dm
index aa744928a95..e0a4dc96c76 100644
--- a/code/modules/surgery/plastic_surgery.dm
+++ b/code/modules/surgery/plastic_surgery.dm
@@ -10,15 +10,15 @@
time = 64
/datum/surgery_step/reshape_face/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to alter [target]'s appearance.")
+ user.visible_message("[user] begins to alter [target]'s appearance.", "You begin to alter [target]'s appearance...")
/datum/surgery_step/reshape_face/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(target.status_flags & DISFIGURED)
target.status_flags &= ~DISFIGURED
- user.visible_message("[user] successfully restores [target]'s appearance!")
+ user.visible_message("[user] successfully restores [target]'s appearance!", "You successfully restore [target]'s appearance.")
else
var/oldname = target.real_name
target.real_name = random_name(target.gender)
var/newname = target.real_name //something about how the code handles names required that I use this instead of target.real_name
- user.visible_message("[user] alters [oldname]'s appearance completely, they are now [newname]!")
+ user.visible_message("[user] alters [oldname]'s appearance completely, they are now [newname]!", "You alter [oldname]'s appearance completely, they are now [newname].")
return 1
\ No newline at end of file
diff --git a/code/modules/surgery/remove_embedded_object.dm b/code/modules/surgery/remove_embedded_object.dm
index 749faa22698..33968dd8968 100644
--- a/code/modules/surgery/remove_embedded_object.dm
+++ b/code/modules/surgery/remove_embedded_object.dm
@@ -18,9 +18,9 @@
/datum/surgery_step/remove_object/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
L = new_organ
if(L)
- user.visible_message("[user] looks for objects embedded in [target]'s [parse_zone(user.zone_sel.selecting)].")
+ user.visible_message("[user] looks for objects embedded in [target]'s [parse_zone(user.zone_sel.selecting)].", "You look for objects embedded in [target]'s [parse_zone(user.zone_sel.selecting)]...")
else
- user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].")
+ user.visible_message("[user] looks for [target]'s [parse_zone(user.zone_sel.selecting)].", "You look for [target]'s [parse_zone(user.zone_sel.selecting)]...")
/datum/surgery_step/remove_object/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
@@ -34,11 +34,11 @@
L.embedded_objects -= I
if(objects > 0)
- user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L.getDisplayName()]!")
+ user.visible_message("[user] sucessfully removes [objects] objects from [H]'s [L.getDisplayName()]!", "You sucessfully remove [objects] objects from [H]'s [L.getDisplayName()].")
else
- user.visible_message("[user] finds no objects embedded in [H]'s [L.getDisplayName()].")
+ user << "You find no objects embedded in [H]'s [L.getDisplayName()]!"
else
- user.visible_message("[user] can't find [target]'s [parse_zone(user.zone_sel.selecting)], let alone any objects embedded in it!")
+ user << "You can't find [target]'s [parse_zone(user.zone_sel.selecting)], let alone any objects embedded in it!"
return 1
\ No newline at end of file
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index 88e590ca8dc..fff1661c6bd 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -11,6 +11,7 @@
var/has_multi_loc = 0 //Multiple locations - RR
var/user_species_restricted = 0 //Surgery only performable BY species
var/list/user_species_ids
+ var/ignore_clothes = 0 //This surgery ignores clothes
/datum/surgery/proc/next_step(mob/user, mob/living/carbon/target)
if(step_in_progress) return
diff --git a/code/modules/surgery/surgery_step.dm b/code/modules/surgery/surgery_step.dm
index 19d5eca182c..f139e46f55d 100644
--- a/code/modules/surgery/surgery_step.dm
+++ b/code/modules/surgery/surgery_step.dm
@@ -29,7 +29,7 @@
initiate(user, target, target_zone, tool, surgery)
return 1
else
- user << "You need to expose [target]'s [parse_zone(target_zone)] to perform surgery on it!"
+ user << "You need to expose [target]'s [parse_zone(target_zone)] to perform surgery on it!"
return 1 //returns 1 so we don't stab the guy in the dick or wherever.
if(isrobot(user) && user.a_intent != "harm") //to save asimov borgs a LOT of heartache
return 1
@@ -68,22 +68,22 @@
/datum/surgery_step/proc/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to perform surgery on [target].")
+ user.visible_message("[user] begins to perform surgery on [target].", "You begin to perform surgery on [target]...")
/datum/surgery_step/proc/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] succeeds!")
+ user.visible_message("[user] succeeds!", "You succeed.")
return 1
/datum/surgery_step/saw/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(ishuman(target))
var/mob/living/carbon/human/H = target
H.apply_damage(75,"brute","[target_zone]")
- user.visible_message("[user] saws [target]'s [parse_zone(target_zone)] open!")
+ user.visible_message("[user] saws [target]'s [parse_zone(target_zone)] open!", "You saw [target]'s [parse_zone(target_zone)] open.")
return 1
/datum/surgery_step/proc/failure(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] screws up!")
+ user.visible_message("[user] screws up!", "You screw up!")
return 0
/datum/surgery_step/close/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
diff --git a/code/modules/surgery/xenomorph_removal.dm b/code/modules/surgery/xenomorph_removal.dm
index 98b81efcf5e..15f83e82622 100644
--- a/code/modules/surgery/xenomorph_removal.dm
+++ b/code/modules/surgery/xenomorph_removal.dm
@@ -13,13 +13,13 @@
time = 64
/datum/surgery_step/xenomorph_removal/preop(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
- user.visible_message("[user] begins to search in [target]'s chest for a xenomorph.")
+ user.visible_message("[user] begins to search in [target]'s chest for a xenomorph embryo.", "You begin to search in [target]'s chest for a xenomorph embryo...")
/datum/surgery_step/xenomorph_removal/success(mob/user, mob/living/carbon/target, target_zone, obj/item/tool, datum/surgery/surgery)
if(remove_xeno(user, target))
- user.visible_message("[user] successfully extracts the xenomorph from [target]!")
+ user.visible_message("[user] successfully extracts the xenomorph embryo from [target]!", "You successfully extract the xenomorph embryo from [target].")
else
- user.visible_message("[user] can't find anything in [target]'s chest!")
+ user.visible_message("[user] can't seem to find anything in [target]'s chest!", "You can't find anything in [target]'s chest!")
return 1
/datum/surgery_step/xenomorph_removal/proc/remove_xeno(mob/user, mob/living/carbon/target)
@@ -42,8 +42,8 @@
if(A)
if(prob(50))
A.AttemptGrow(0)
- user.visible_message("[user] accidentally pokes the xenomorph in [target]!")
+ user.visible_message("[user] accidentally pokes the xenomorph in [target]!", "You accidentally poke the xenomorph in [target]!")
else
target.adjustOxyLoss(30)
- user.visible_message("[user] accidentally pokes [target] in the lungs!")
+ user.visible_message("[user] accidentally pokes [target] in the lungs!", "You accidentally poke [target] in the lungs!")
return 0
\ No newline at end of file
diff --git a/code/modules/telesci/bscrystal.dm b/code/modules/telesci/bscrystal.dm
index 7c64352ca8f..c006939d876 100644
--- a/code/modules/telesci/bscrystal.dm
+++ b/code/modules/telesci/bscrystal.dm
@@ -17,7 +17,7 @@
/obj/item/bluespace_crystal/attack_self(var/mob/user)
- user.visible_message("[user] crushes [src]!")
+ user.visible_message("[user] crushes [src]!", "You crush [src]!")
PoolOrNew(/obj/effect/effect/sparks, loc)
playsound(src.loc, "sparks", 50, 1)
blink_mob(user)
diff --git a/code/modules/telesci/telesci_computer.dm b/code/modules/telesci/telesci_computer.dm
index ea9d253b54f..6d602467fa1 100644
--- a/code/modules/telesci/telesci_computer.dm
+++ b/code/modules/telesci/telesci_computer.dm
@@ -50,7 +50,7 @@
crystals += new /obj/item/bluespace_crystal/artificial(null) // starting crystals
/obj/machinery/computer/telescience/attack_paw(mob/user)
- user << "You are too primitive to use this computer."
+ user << "You are too primitive to use this computer!"
return
/obj/machinery/computer/telescience/attackby(obj/item/W, mob/user, params)
@@ -61,14 +61,14 @@
user.drop_item()
crystals += W
W.loc = null
- user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.")
+ user.visible_message("[user] inserts [W] into \the [src]'s crystal slot.", "You insert [W] into \the [src]'s crystal slot.")
updateDialog()
else if(istype(W, /obj/item/device/gps))
if(!inserted_gps)
inserted_gps = W
user.unEquip(W)
W.loc = src
- user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.")
+ user.visible_message("[user] inserts [W] into \the [src]'s GPS device slot.", "You insert [W] into \the [src]'s GPS device slot.")
else if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/M = W
if(M.buffer && istype(M.buffer, /obj/machinery/telepad))
diff --git a/config/game_options.txt b/config/game_options.txt
index ae06f1b3675..cc2a9c13d1d 100644
--- a/config/game_options.txt
+++ b/config/game_options.txt
@@ -100,20 +100,46 @@ PROBABILITY SANDBOX 0
## Toggles for continuous modes.
## Modes that aren't continuous will end the instant all antagonists are dead.
-## Unlisted modes are not currently supported for noncontinous play
+CONTINUOUS TRAITOR
+CONTINUOUS TRAITORCHAN
+CONTINUOUS DOUBLE_AGENTS
+#CONTINUOUS NUCLEAR
#CONTINUOUS REVOLUTION
+#CONTINUOUS SHADOWLING
+#CONTINUOUS GANG
+CONTINUOUS CULT
+CONTINUOUS CHANGELING
CONTINUOUS WIZARD
CONTINUOUS MALFUNCTION
CONTINUOUS BLOB
+#CONTINUOUS RAGINMAGES
+#CONTINUOUS MONKEY
+
+##Note: do not toggle continuous off for these modes, as they have no antagonists and would thus end immediately!
+
+CONTINUOUS METEOR
+CONTINUOUS EXTENDED
+
## Toggles for allowing midround antagonists (aka mulligan antagonists).
## In modes that are continuous, if all antagonists should die then a new set of antagonists will be created.
-## Only the listed modes are currently supported for this system
+MIDROUND_ANTAG TRAITOR
+MIDROUND_ANTAG TRAITORCHAN
+MIDROUND_ANTAG DOUBLE_AGENTS
+#MIDROUND_ANTAG NUCLEAR
+#MIDROUND_ANTAG REVOLUTION
+#MIDROUND_ANTAG SHADOWLING
+#MIDROUND_ANTAG GANG
+MIDROUND_ANTAG CULT
+MIDROUND_ANTAG CHANGELING
MIDROUND_ANTAG WIZARD
MIDROUND_ANTAG MALFUNCTION
MIDROUND_ANTAG BLOB
+#MIDROUND_ANTAG RAGINMAGES
+#MIDROUND_ANTAG MONKEY
+
## The amount of time it takes for the emergency shuttle to be called, from round start.
SHUTTLE_REFUEL_DELAY 12000
diff --git a/html/changelog.html b/html/changelog.html
index 72ba54ac5c3..1b28e0f192c 100644
--- a/html/changelog.html
+++ b/html/changelog.html
@@ -55,6 +55,40 @@
-->
+
25 April 2015
+
Boggart updated:
+
+ - Ports Nienhaus's guitar, generalizes handheld instrument code.
+ - Fixes being unable to build disposal pipes on walls, makes changing the RPD's settings not affect pipes that are currently building, makes the RPD use the datum/browser ui, makes it use categories and makes it show the selected mode.
+
+
Gun Hog updated:
+
+ - Nanotrasen has provided designs for fabrication of APC power control modules. You may print them at any autolathe.
+
+
Ikarrus updated:
+
+ - Gangs can now purchase switchblades, a relatively cheap and decently robust melee weapon.
+ - Gangs now require at least 66% control of the station to win.
+ - Gang spraycan uses reduced to 15.
+ - Pistol cost increased to 30 Influence
+ - Promotions now start off cheap at 20 influence but get more expensive the more people you promote.
+
+
Xhuis updated:
+
+ - Added a Create Antagonist button for revenants.
+ - Removed Mind Blast.
+ - Revenants no longer get killed by explosions.
+ - Mind spike cooldown increased to 4 seconds.
+ - Harvest now takes 8 seconds and requires you to be adjacent to the target.
+ - Hypnotise sleeps targets for longer.
+ - Revenant now starts with 3 strikes.
+
+
phil235 updated:
+
+ - Telecom machines are now deconstructed the same way as all other constructable machines.
+ - You can no longer overdose on nicotine but you can get addicted (very mild effects).
+
+
22 April 2015
Incoming5643 updated:
diff --git a/html/changelogs/.all_changelog.yml b/html/changelogs/.all_changelog.yml
index 7b93c2767ed..a14052090dd 100644
--- a/html/changelogs/.all_changelog.yml
+++ b/html/changelogs/.all_changelog.yml
@@ -2294,3 +2294,34 @@ DO NOT EDIT THIS FILE BY HAND! AUTOMATICALLY GENERATED BY ss13_genchangelog.py.
xxalpha:
- rscadd: Added an Exosuit Mining Scanner to the robotics fabricator.
- tweak: Buffed Ripley's movement and drilling speed in low pressure environments.
+2015-04-25:
+ Boggart:
+ - rscadd: Ports Nienhaus's guitar, generalizes handheld instrument code.
+ - rscadd: Fixes being unable to build disposal pipes on walls, makes changing the
+ RPD's settings not affect pipes that are currently building, makes the RPD use
+ the datum/browser ui, makes it use categories and makes it show the selected
+ mode.
+ Gun Hog:
+ - rscadd: Nanotrasen has provided designs for fabrication of APC power control modules.
+ You may print them at any autolathe.
+ Ikarrus:
+ - rscadd: Gangs can now purchase switchblades, a relatively cheap and decently robust
+ melee weapon.
+ - tweak: Gangs now require at least 66% control of the station to win.
+ - tweak: Gang spraycan uses reduced to 15.
+ - tweak: Pistol cost increased to 30 Influence
+ - tweak: Promotions now start off cheap at 20 influence but get more expensive the
+ more people you promote.
+ Xhuis:
+ - rscadd: Added a Create Antagonist button for revenants.
+ - rscdel: Removed Mind Blast.
+ - bugfix: Revenants no longer get killed by explosions.
+ - tweak: Mind spike cooldown increased to 4 seconds.
+ - tweak: Harvest now takes 8 seconds and requires you to be adjacent to the target.
+ - tweak: Hypnotise sleeps targets for longer.
+ - tweak: Revenant now starts with 3 strikes.
+ phil235:
+ - tweak: Telecom machines are now deconstructed the same way as all other constructable
+ machines.
+ - tweak: You can no longer overdose on nicotine but you can get addicted (very mild
+ effects).
diff --git a/html/changelogs/Ikarrus-gang5.yml b/html/changelogs/Ikarrus-gang5.yml
new file mode 100644
index 00000000000..9716bc9d8a5
--- /dev/null
+++ b/html/changelogs/Ikarrus-gang5.yml
@@ -0,0 +1,10 @@
+author: Ikarrus
+
+delete-after: True
+
+changes:
+ - rscadd: "Spraycans and crayons can now draw Poseur Tags, aka Fake Gang Tags, as grafiti."
+ - tweak: "Gangs Capture goal reduced to 60%"
+ - tweak: "Influence income changed to provide weaker gangs a bigger boost, while slowing down stronger gangs to promote opportunity for comebacks."
+ - tweak: "Gangs only earn influence on territories they have held on to since the previous Status Report (the income calculation every 5 minutes). This places more significance on defending your existing territory."
+ - bugfix: "You must be in the territory physically to tag it now. So no more tagging everything from maint."
\ No newline at end of file
diff --git a/html/changelogs/RemieRichards-PR-9090.yml b/html/changelogs/RemieRichards-PR-9090.yml
new file mode 100644
index 00000000000..7fc9dbe8c21
--- /dev/null
+++ b/html/changelogs/RemieRichards-PR-9090.yml
@@ -0,0 +1,6 @@
+author: RemieRichards
+delete-after: True
+changes:
+ - rscadd: "Ports VG's Ventcrawling overhaul!"
+ - tweak: "Crawling through vents is no longer instant, you now have to move and navigate manually"
+ - rscadd: "While inside pipes and other atmos machinery, you now see pipe vision"
diff --git a/html/changelogs/phil235-BundleFix4.yml b/html/changelogs/phil235-BundleFix4.yml
deleted file mode 100644
index dcaed92231a..00000000000
--- a/html/changelogs/phil235-BundleFix4.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-
-author: phil235
-
-delete-after: True
-
-changes:
- - tweak: "Telecom machines are now deconstructed the same way as all other constructable machines."
- - tweak: "You can no longer overdose on nicotine but you can get addicted (very mild effects)."
-
-
diff --git a/icons/mob/actions.dmi b/icons/mob/actions.dmi
index eabe14f8802..bc98f542874 100644
Binary files a/icons/mob/actions.dmi and b/icons/mob/actions.dmi differ
diff --git a/icons/mob/hud.dmi b/icons/mob/hud.dmi
index 4f1f25c3a4b..84ed7d9fc07 100644
Binary files a/icons/mob/hud.dmi and b/icons/mob/hud.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index fbc69f8e91a..9a75e1666b5 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 276ed025c8c..17fdcfdd538 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/obj/abductor.dmi b/icons/obj/abductor.dmi
index fbec59cf88a..dbb322992eb 100644
Binary files a/icons/obj/abductor.dmi and b/icons/obj/abductor.dmi differ
diff --git a/icons/obj/atmospherics/unary_devices.dmi b/icons/obj/atmospherics/unary_devices.dmi
index 60dec4db9a3..bc43f452e17 100644
Binary files a/icons/obj/atmospherics/unary_devices.dmi and b/icons/obj/atmospherics/unary_devices.dmi differ
diff --git a/icons/obj/closet.dmi b/icons/obj/closet.dmi
index 1dc010c9799..c21f6c8d5b9 100644
Binary files a/icons/obj/closet.dmi and b/icons/obj/closet.dmi differ
diff --git a/icons/obj/economy.dmi b/icons/obj/economy.dmi
index f096851d1e8..4b65337dbee 100644
Binary files a/icons/obj/economy.dmi and b/icons/obj/economy.dmi differ
diff --git a/icons/obj/musician.dmi b/icons/obj/musician.dmi
index b0a0efe03af..f191f97fca6 100644
Binary files a/icons/obj/musician.dmi and b/icons/obj/musician.dmi differ
diff --git a/icons/obj/structures.dmi b/icons/obj/structures.dmi
index adaa8481569..ccdac8d866d 100644
Binary files a/icons/obj/structures.dmi and b/icons/obj/structures.dmi differ
diff --git a/icons/obj/weapons.dmi b/icons/obj/weapons.dmi
index 0daf90741ca..9b5be0100e8 100644
Binary files a/icons/obj/weapons.dmi and b/icons/obj/weapons.dmi differ
diff --git a/icons/turf/floors.dmi b/icons/turf/floors.dmi
index 9894e89c626..15ec64bf77e 100644
Binary files a/icons/turf/floors.dmi and b/icons/turf/floors.dmi differ
diff --git a/icons/turf/walls.dmi b/icons/turf/walls.dmi
index d129a462dff..c9ab9f06a05 100644
Binary files a/icons/turf/walls.dmi and b/icons/turf/walls.dmi differ
diff --git a/sound/guitar/Ab3.ogg b/sound/guitar/Ab3.ogg
new file mode 100644
index 00000000000..6e242786c40
Binary files /dev/null and b/sound/guitar/Ab3.ogg differ
diff --git a/sound/guitar/Ab4.ogg b/sound/guitar/Ab4.ogg
new file mode 100644
index 00000000000..6f854ea5d3f
Binary files /dev/null and b/sound/guitar/Ab4.ogg differ
diff --git a/sound/guitar/Ab5.ogg b/sound/guitar/Ab5.ogg
new file mode 100644
index 00000000000..53ba1c01520
Binary files /dev/null and b/sound/guitar/Ab5.ogg differ
diff --git a/sound/guitar/Ab6.ogg b/sound/guitar/Ab6.ogg
new file mode 100644
index 00000000000..d0a238ba607
Binary files /dev/null and b/sound/guitar/Ab6.ogg differ
diff --git a/sound/guitar/An3.ogg b/sound/guitar/An3.ogg
new file mode 100644
index 00000000000..1f06e6d4f28
Binary files /dev/null and b/sound/guitar/An3.ogg differ
diff --git a/sound/guitar/An4.ogg b/sound/guitar/An4.ogg
new file mode 100644
index 00000000000..f3354df46b9
Binary files /dev/null and b/sound/guitar/An4.ogg differ
diff --git a/sound/guitar/An5.ogg b/sound/guitar/An5.ogg
new file mode 100644
index 00000000000..fc3b1b345c9
Binary files /dev/null and b/sound/guitar/An5.ogg differ
diff --git a/sound/guitar/An6.ogg b/sound/guitar/An6.ogg
new file mode 100644
index 00000000000..f58a50d2a65
Binary files /dev/null and b/sound/guitar/An6.ogg differ
diff --git a/sound/guitar/Bb3.ogg b/sound/guitar/Bb3.ogg
new file mode 100644
index 00000000000..e88343d88fb
Binary files /dev/null and b/sound/guitar/Bb3.ogg differ
diff --git a/sound/guitar/Bb4.ogg b/sound/guitar/Bb4.ogg
new file mode 100644
index 00000000000..11b883285da
Binary files /dev/null and b/sound/guitar/Bb4.ogg differ
diff --git a/sound/guitar/Bb5.ogg b/sound/guitar/Bb5.ogg
new file mode 100644
index 00000000000..5d9b10f87a6
Binary files /dev/null and b/sound/guitar/Bb5.ogg differ
diff --git a/sound/guitar/Bb6.ogg b/sound/guitar/Bb6.ogg
new file mode 100644
index 00000000000..c7f11ef59a6
Binary files /dev/null and b/sound/guitar/Bb6.ogg differ
diff --git a/sound/guitar/Bn3.ogg b/sound/guitar/Bn3.ogg
new file mode 100644
index 00000000000..0d6022369fa
Binary files /dev/null and b/sound/guitar/Bn3.ogg differ
diff --git a/sound/guitar/Bn4.ogg b/sound/guitar/Bn4.ogg
new file mode 100644
index 00000000000..7e8682d5ff0
Binary files /dev/null and b/sound/guitar/Bn4.ogg differ
diff --git a/sound/guitar/Bn5.ogg b/sound/guitar/Bn5.ogg
new file mode 100644
index 00000000000..1912da7f66c
Binary files /dev/null and b/sound/guitar/Bn5.ogg differ
diff --git a/sound/guitar/Bn6.ogg b/sound/guitar/Bn6.ogg
new file mode 100644
index 00000000000..985ec744dfb
Binary files /dev/null and b/sound/guitar/Bn6.ogg differ
diff --git a/sound/guitar/Cb4.ogg b/sound/guitar/Cb4.ogg
new file mode 100644
index 00000000000..0d6022369fa
Binary files /dev/null and b/sound/guitar/Cb4.ogg differ
diff --git a/sound/guitar/Cb5.ogg b/sound/guitar/Cb5.ogg
new file mode 100644
index 00000000000..7e8682d5ff0
Binary files /dev/null and b/sound/guitar/Cb5.ogg differ
diff --git a/sound/guitar/Cb6.ogg b/sound/guitar/Cb6.ogg
new file mode 100644
index 00000000000..1912da7f66c
Binary files /dev/null and b/sound/guitar/Cb6.ogg differ
diff --git a/sound/guitar/Cb7.ogg b/sound/guitar/Cb7.ogg
new file mode 100644
index 00000000000..985ec744dfb
Binary files /dev/null and b/sound/guitar/Cb7.ogg differ
diff --git a/sound/guitar/Cn4.ogg b/sound/guitar/Cn4.ogg
new file mode 100644
index 00000000000..0279b73f8bd
Binary files /dev/null and b/sound/guitar/Cn4.ogg differ
diff --git a/sound/guitar/Cn5.ogg b/sound/guitar/Cn5.ogg
new file mode 100644
index 00000000000..ece600a6c1a
Binary files /dev/null and b/sound/guitar/Cn5.ogg differ
diff --git a/sound/guitar/Cn6.ogg b/sound/guitar/Cn6.ogg
new file mode 100644
index 00000000000..8c2fecc62aa
Binary files /dev/null and b/sound/guitar/Cn6.ogg differ
diff --git a/sound/guitar/Db4.ogg b/sound/guitar/Db4.ogg
new file mode 100644
index 00000000000..8a14f1f8365
Binary files /dev/null and b/sound/guitar/Db4.ogg differ
diff --git a/sound/guitar/Db5.ogg b/sound/guitar/Db5.ogg
new file mode 100644
index 00000000000..46a67f20ce0
Binary files /dev/null and b/sound/guitar/Db5.ogg differ
diff --git a/sound/guitar/Db6.ogg b/sound/guitar/Db6.ogg
new file mode 100644
index 00000000000..a07095c6033
Binary files /dev/null and b/sound/guitar/Db6.ogg differ
diff --git a/sound/guitar/Dn4.ogg b/sound/guitar/Dn4.ogg
new file mode 100644
index 00000000000..587099a0ddc
Binary files /dev/null and b/sound/guitar/Dn4.ogg differ
diff --git a/sound/guitar/Dn5.ogg b/sound/guitar/Dn5.ogg
new file mode 100644
index 00000000000..d6a9c38415a
Binary files /dev/null and b/sound/guitar/Dn5.ogg differ
diff --git a/sound/guitar/Dn6.ogg b/sound/guitar/Dn6.ogg
new file mode 100644
index 00000000000..4e44d5e72fe
Binary files /dev/null and b/sound/guitar/Dn6.ogg differ
diff --git a/sound/guitar/Eb4.ogg b/sound/guitar/Eb4.ogg
new file mode 100644
index 00000000000..1f93c8273d1
Binary files /dev/null and b/sound/guitar/Eb4.ogg differ
diff --git a/sound/guitar/Eb5.ogg b/sound/guitar/Eb5.ogg
new file mode 100644
index 00000000000..5b795377f38
Binary files /dev/null and b/sound/guitar/Eb5.ogg differ
diff --git a/sound/guitar/Eb6.ogg b/sound/guitar/Eb6.ogg
new file mode 100644
index 00000000000..5febf7a37b3
Binary files /dev/null and b/sound/guitar/Eb6.ogg differ
diff --git a/sound/guitar/En3.ogg b/sound/guitar/En3.ogg
new file mode 100644
index 00000000000..d9679bd78ea
Binary files /dev/null and b/sound/guitar/En3.ogg differ
diff --git a/sound/guitar/En4.ogg b/sound/guitar/En4.ogg
new file mode 100644
index 00000000000..50dad80f506
Binary files /dev/null and b/sound/guitar/En4.ogg differ
diff --git a/sound/guitar/En5.ogg b/sound/guitar/En5.ogg
new file mode 100644
index 00000000000..8617c069201
Binary files /dev/null and b/sound/guitar/En5.ogg differ
diff --git a/sound/guitar/En6.ogg b/sound/guitar/En6.ogg
new file mode 100644
index 00000000000..a487ce33e4b
Binary files /dev/null and b/sound/guitar/En6.ogg differ
diff --git a/sound/guitar/Fb3.ogg b/sound/guitar/Fb3.ogg
new file mode 100644
index 00000000000..d9679bd78ea
Binary files /dev/null and b/sound/guitar/Fb3.ogg differ
diff --git a/sound/guitar/Fb4.ogg b/sound/guitar/Fb4.ogg
new file mode 100644
index 00000000000..50dad80f506
Binary files /dev/null and b/sound/guitar/Fb4.ogg differ
diff --git a/sound/guitar/Fb5.ogg b/sound/guitar/Fb5.ogg
new file mode 100644
index 00000000000..8617c069201
Binary files /dev/null and b/sound/guitar/Fb5.ogg differ
diff --git a/sound/guitar/Fb6.ogg b/sound/guitar/Fb6.ogg
new file mode 100644
index 00000000000..a487ce33e4b
Binary files /dev/null and b/sound/guitar/Fb6.ogg differ
diff --git a/sound/guitar/Fn3.ogg b/sound/guitar/Fn3.ogg
new file mode 100644
index 00000000000..4e37dc58126
Binary files /dev/null and b/sound/guitar/Fn3.ogg differ
diff --git a/sound/guitar/Fn4.ogg b/sound/guitar/Fn4.ogg
new file mode 100644
index 00000000000..3bf9957d48a
Binary files /dev/null and b/sound/guitar/Fn4.ogg differ
diff --git a/sound/guitar/Fn5.ogg b/sound/guitar/Fn5.ogg
new file mode 100644
index 00000000000..ad0a0ecec79
Binary files /dev/null and b/sound/guitar/Fn5.ogg differ
diff --git a/sound/guitar/Fn6.ogg b/sound/guitar/Fn6.ogg
new file mode 100644
index 00000000000..50457e7bf4c
Binary files /dev/null and b/sound/guitar/Fn6.ogg differ
diff --git a/sound/guitar/Gb3.ogg b/sound/guitar/Gb3.ogg
new file mode 100644
index 00000000000..1b2e6c503de
Binary files /dev/null and b/sound/guitar/Gb3.ogg differ
diff --git a/sound/guitar/Gb4.ogg b/sound/guitar/Gb4.ogg
new file mode 100644
index 00000000000..122a0c5c17d
Binary files /dev/null and b/sound/guitar/Gb4.ogg differ
diff --git a/sound/guitar/Gb5.ogg b/sound/guitar/Gb5.ogg
new file mode 100644
index 00000000000..b0346e2f365
Binary files /dev/null and b/sound/guitar/Gb5.ogg differ
diff --git a/sound/guitar/Gb6.ogg b/sound/guitar/Gb6.ogg
new file mode 100644
index 00000000000..4f873de27cf
Binary files /dev/null and b/sound/guitar/Gb6.ogg differ
diff --git a/sound/guitar/Gn3.ogg b/sound/guitar/Gn3.ogg
new file mode 100644
index 00000000000..783cded9fe5
Binary files /dev/null and b/sound/guitar/Gn3.ogg differ
diff --git a/sound/guitar/Gn4.ogg b/sound/guitar/Gn4.ogg
new file mode 100644
index 00000000000..92f9cd2fd9d
Binary files /dev/null and b/sound/guitar/Gn4.ogg differ
diff --git a/sound/guitar/Gn5.ogg b/sound/guitar/Gn5.ogg
new file mode 100644
index 00000000000..42fdebc209b
Binary files /dev/null and b/sound/guitar/Gn5.ogg differ
diff --git a/sound/guitar/Gn6.ogg b/sound/guitar/Gn6.ogg
new file mode 100644
index 00000000000..a36bf38f001
Binary files /dev/null and b/sound/guitar/Gn6.ogg differ
diff --git a/sound/machines/ventcrawl.ogg b/sound/machines/ventcrawl.ogg
new file mode 100644
index 00000000000..2df8b5c8981
Binary files /dev/null and b/sound/machines/ventcrawl.ogg differ
diff --git a/tgstation.dme b/tgstation.dme
index 27d86163d90..5ff1207a086 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -284,9 +284,13 @@
#include "code\game\gamemodes\setupgame.dm"
#include "code\game\gamemodes\abduction\abduction.dm"
#include "code\game\gamemodes\abduction\abduction_gear.dm"
-#include "code\game\gamemodes\abduction\abduction_machinery.dm"
#include "code\game\gamemodes\abduction\abduction_surgery.dm"
#include "code\game\gamemodes\abduction\gland.dm"
+#include "code\game\gamemodes\abduction\machinery\camera.dm"
+#include "code\game\gamemodes\abduction\machinery\console.dm"
+#include "code\game\gamemodes\abduction\machinery\dispenser.dm"
+#include "code\game\gamemodes\abduction\machinery\experiment.dm"
+#include "code\game\gamemodes\abduction\machinery\pad.dm"
#include "code\game\gamemodes\blob\blob.dm"
#include "code\game\gamemodes\blob\blob_finish.dm"
#include "code\game\gamemodes\blob\blob_report.dm"
@@ -575,6 +579,7 @@
#include "code\game\objects\items\devices\chameleonproj.dm"
#include "code\game\objects\items\devices\flash.dm"
#include "code\game\objects\items\devices\flashlight.dm"
+#include "code\game\objects\items\devices\instruments.dm"
#include "code\game\objects\items\devices\laserpointer.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\megaphone.dm"
@@ -590,7 +595,6 @@
#include "code\game\objects\items\devices\traitordevices.dm"
#include "code\game\objects\items\devices\transfer_valve.dm"
#include "code\game\objects\items\devices\uplinks.dm"
-#include "code\game\objects\items\devices\violin.dm"
#include "code\game\objects\items\devices\PDA\cart.dm"
#include "code\game\objects\items\devices\PDA\chatroom.dm"
#include "code\game\objects\items\devices\PDA\PDA.dm"
@@ -1077,6 +1081,7 @@
#include "code\modules\mob\living\login.dm"
#include "code\modules\mob\living\logout.dm"
#include "code\modules\mob\living\say.dm"
+#include "code\modules\mob\living\ventcrawling.dm"
#include "code\modules\mob\living\carbon\carbon.dm"
#include "code\modules\mob\living\carbon\carbon_defense.dm"
#include "code\modules\mob\living\carbon\carbon_defines.dm"