diff --git a/code/ATMOSPHERICS/components/binary_devices/circulator.dm b/code/ATMOSPHERICS/components/binary_devices/circulator.dm
index ff1089e6f8d..5e2bbce6dac 100644
--- a/code/ATMOSPHERICS/components/binary_devices/circulator.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/circulator.dm
@@ -89,7 +89,7 @@
return 1
/obj/machinery/atmospherics/binary/circulator/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src, W.usesound, 75, 1)
anchored = !anchored
user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the bolts holding [src.name] to the floor.", \
diff --git a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
index c08c82f6b90..2894022b96b 100644
--- a/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/passive_gate.dm
@@ -243,7 +243,7 @@
return
/obj/machinery/atmospherics/binary/passive_gate/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (unlocked)
to_chat(user, "You cannot unwrench \the [src], turn it off first.")
diff --git a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm
index a7127a4dc62..d26422c3092 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pipeturbine.dm
@@ -84,7 +84,7 @@
overlays += image('icons/obj/pipeturbine.dmi', "hi-turb")
attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
anchored = !anchored
playsound(src, W.usesound, 50, 1)
to_chat(user, "You [anchored ? "secure" : "unsecure"] the bolts holding \the [src] to the floor.")
@@ -259,7 +259,7 @@
attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
anchored = !anchored
playsound(src, W.usesound, 50, 1)
turbine = null
diff --git a/code/ATMOSPHERICS/components/binary_devices/pump.dm b/code/ATMOSPHERICS/components/binary_devices/pump.dm
index a89b1c5659b..ead0b9e59b8 100644
--- a/code/ATMOSPHERICS/components/binary_devices/pump.dm
+++ b/code/ATMOSPHERICS/components/binary_devices/pump.dm
@@ -222,7 +222,7 @@ Thus, the two variables affect pump operation are set in New():
update_icon()
/obj/machinery/atmospherics/binary/pump/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (!(stat & NOPOWER) && use_power)
to_chat(user, "You cannot unwrench this [src], turn it off first.")
diff --git a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
index e7ec93852da..1a82bab1e24 100644
--- a/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
+++ b/code/ATMOSPHERICS/components/omni_devices/omni_base.dm
@@ -80,7 +80,7 @@
update_icon()
/obj/machinery/atmospherics/omni/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if(!istype(W, /obj/item/weapon/wrench))
+ if(!W.is_wrench())
return ..()
if(!can_unwrench())
diff --git a/code/ATMOSPHERICS/components/portables_connector.dm b/code/ATMOSPHERICS/components/portables_connector.dm
index 7dca3f52d49..b30bc9b0389 100644
--- a/code/ATMOSPHERICS/components/portables_connector.dm
+++ b/code/ATMOSPHERICS/components/portables_connector.dm
@@ -133,7 +133,7 @@
/obj/machinery/atmospherics/portables_connector/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (connected_device)
to_chat(user, "You cannot unwrench \the [src], dettach \the [connected_device] first.")
diff --git a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm
index 0a68f74c71e..394dbceeda9 100644
--- a/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm
+++ b/code/ATMOSPHERICS/components/trinary_devices/trinary_base.dm
@@ -52,7 +52,7 @@
update_icon()
/obj/machinery/atmospherics/trinary/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if(!can_unwrench())
to_chat(user, "You cannot unwrench \the [src], it too exerted due to internal pressure.")
diff --git a/code/ATMOSPHERICS/components/tvalve.dm b/code/ATMOSPHERICS/components/tvalve.dm
index b65c615174e..cfc990c6e50 100644
--- a/code/ATMOSPHERICS/components/tvalve.dm
+++ b/code/ATMOSPHERICS/components/tvalve.dm
@@ -327,7 +327,7 @@
go_to_side()
/obj/machinery/atmospherics/tvalve/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (istype(src, /obj/machinery/atmospherics/tvalve/digital))
to_chat(user, "You cannot unwrench \the [src], it's too complicated.")
diff --git a/code/ATMOSPHERICS/components/unary/cold_sink.dm b/code/ATMOSPHERICS/components/unary/cold_sink.dm
index b211f57f391..4cf046ebb97 100644
--- a/code/ATMOSPHERICS/components/unary/cold_sink.dm
+++ b/code/ATMOSPHERICS/components/unary/cold_sink.dm
@@ -180,4 +180,4 @@
/obj/machinery/atmospherics/unary/freezer/examine(mob/user)
..(user)
if(panel_open)
- user << "The maintenance hatch is open."
+ to_chat(user, "The maintenance hatch is open.")
diff --git a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm
index ed4010f81ed..2295f70378b 100644
--- a/code/ATMOSPHERICS/components/unary/heat_exchanger.dm
+++ b/code/ATMOSPHERICS/components/unary/heat_exchanger.dm
@@ -67,7 +67,7 @@
return 1
attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
var/turf/T = src.loc
if (level==1 && isturf(T) && !T.is_plating())
diff --git a/code/ATMOSPHERICS/components/unary/heat_source.dm b/code/ATMOSPHERICS/components/unary/heat_source.dm
index 45a9962e063..5a0a93b2077 100644
--- a/code/ATMOSPHERICS/components/unary/heat_source.dm
+++ b/code/ATMOSPHERICS/components/unary/heat_source.dm
@@ -167,4 +167,4 @@
/obj/machinery/atmospherics/unary/heater/examine(mob/user)
..(user)
if(panel_open)
- user << "The maintenance hatch is open."
+ to_chat(user, "The maintenance hatch is open.")
diff --git a/code/ATMOSPHERICS/components/unary/vent_pump.dm b/code/ATMOSPHERICS/components/unary/vent_pump.dm
index 054507b4e17..9dc95b03854 100644
--- a/code/ATMOSPHERICS/components/unary/vent_pump.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_pump.dm
@@ -391,7 +391,7 @@
update_icon()
/obj/machinery/atmospherics/unary/vent_pump/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (!(stat & NOPOWER) && use_power)
to_chat(user, "You cannot unwrench \the [src], turn it off first.")
diff --git a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
index 09b5fde7c12..d7e7377a26a 100644
--- a/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
+++ b/code/ATMOSPHERICS/components/unary/vent_scrubber.dm
@@ -264,7 +264,7 @@
update_icon()
/obj/machinery/atmospherics/unary/vent_scrubber/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (!(stat & NOPOWER) && use_power)
to_chat(user, "You cannot unwrench \the [src], turn it off first.")
diff --git a/code/ATMOSPHERICS/components/valve.dm b/code/ATMOSPHERICS/components/valve.dm
index 93e5da7c320..f385ae5ed61 100644
--- a/code/ATMOSPHERICS/components/valve.dm
+++ b/code/ATMOSPHERICS/components/valve.dm
@@ -288,7 +288,7 @@
open()
/obj/machinery/atmospherics/valve/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
if (istype(src, /obj/machinery/atmospherics/valve/digital) && !src.allowed(user))
to_chat(user, "Access denied.")
diff --git a/code/ATMOSPHERICS/pipes/pipe_base.dm b/code/ATMOSPHERICS/pipes/pipe_base.dm
index 19b05e8b714..9d0667f79e6 100644
--- a/code/ATMOSPHERICS/pipes/pipe_base.dm
+++ b/code/ATMOSPHERICS/pipes/pipe_base.dm
@@ -89,7 +89,7 @@
if(istype(W,/obj/item/device/pipe_painter))
return 0
- if (!istype(W, /obj/item/weapon/wrench))
+ if (!W.is_wrench())
return ..()
var/turf/T = src.loc
if (level==1 && isturf(T) && !T.is_plating())
diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm
index fc735594542..df433e7f471 100644
--- a/code/__defines/misc.dm
+++ b/code/__defines/misc.dm
@@ -281,3 +281,9 @@ var/global/list/##LIST_NAME = list();\
#define MATRIX_Achromatomaly list(0.62, 0.32, 0.06, 0.16, 0.78, 0.06, 0.16, 0.32, 0.52)
#define MATRIX_Vulp_Colorblind list(0.50, 0.40, 0.10, 0.50, 0.40, 0.10, 0, 0.20, 0.80)
#define MATRIX_Taj_Colorblind list(0.40, 0.20, 0.40, 0.40, 0.60, 0, 0.20, 0.20, 0.60)
+
+// Tool substitution defines
+#define IS_SCREWDRIVER "screwdriver"
+#define IS_CROWBAR "crowbar"
+#define IS_WIRECUTTER "wirecutter"
+#define IS_WRENCH "wrench"
\ No newline at end of file
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index 468d91445fe..5b2cd11bd71 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -1054,62 +1054,21 @@ proc/get_mob_with_client_list()
//Quick type checks for some tools
var/global/list/common_tools = list(
/obj/item/stack/cable_coil,
-/obj/item/weapon/wrench,
+/obj/item/weapon/tool/wrench,
/obj/item/weapon/weldingtool,
-/obj/item/weapon/screwdriver,
-/obj/item/weapon/wirecutters,
+/obj/item/weapon/tool/screwdriver,
+/obj/item/weapon/tool/wirecutters,
/obj/item/device/multitool,
-/obj/item/weapon/crowbar)
+/obj/item/weapon/tool/crowbar)
/proc/istool(O)
if(O && is_type_in_list(O, common_tools))
return 1
return 0
-/proc/iswrench(O)
- if(istype(O, /obj/item/weapon/wrench))
- return 1
- return 0
-
-/proc/iswelder(O)
- if(istype(O, /obj/item/weapon/weldingtool))
- return 1
- return 0
-
-/proc/iscoil(O)
- if(istype(O, /obj/item/stack/cable_coil))
- return 1
- return 0
-
-/proc/iswirecutter(O)
- if(istype(O, /obj/item/weapon/wirecutters))
- return 1
- return 0
-
-/proc/isscrewdriver(O)
- if(istype(O, /obj/item/weapon/screwdriver))
- return 1
- return 0
-
-/proc/ismultitool(O)
- if(istype(O, /obj/item/device/multitool))
- return 1
- return 0
-
-/proc/iscrowbar(O)
- if(istype(O, /obj/item/weapon/crowbar))
- return 1
- return 0
-
-/proc/iswire(O)
- if(istype(O, /obj/item/stack/cable_coil))
- return 1
- return 0
/proc/is_wire_tool(obj/item/I)
- if(istype(I, /obj/item/device/multitool))
- return TRUE
- if(istype(I, /obj/item/weapon/wirecutters))
+ if(istype(I, /obj/item/device/multitool) || I.is_wirecutter())
return TRUE
if(istype(I, /obj/item/device/assembly/signaler))
return TRUE
@@ -1149,24 +1108,30 @@ proc/is_hot(obj/item/W as obj)
//Whether or not the given item counts as sharp in terms of dealing damage
/proc/is_sharp(obj/O as obj)
- if (!O) return 0
- if (O.sharp) return 1
- if (O.edge) return 1
- return 0
+ if(!O)
+ return FALSE
+ if(O.sharp)
+ return TRUE
+ if(O.edge)
+ return TRUE
+ return FALSE
//Whether or not the given item counts as cutting with an edge in terms of removing limbs
/proc/has_edge(obj/O as obj)
- if (!O) return 0
- if (O.edge) return 1
- return 0
+ if(!O)
+ return FALSE
+ if(O.edge)
+ return TRUE
+ return FALSE
//Returns 1 if the given item is capable of popping things like balloons, inflatable barriers, or cutting police tape.
/proc/can_puncture(obj/item/W as obj) // For the record, WHAT THE HELL IS THIS METHOD OF DOING IT?
- if(!W) return 0
- if(W.sharp) return 1
+ if(!W)
+ return FALSE
+ if(W.sharp)
+ return TRUE
return ( \
- W.sharp || \
- istype(W, /obj/item/weapon/screwdriver) || \
+ W.is_screwdriver() || \
istype(W, /obj/item/weapon/pen) || \
istype(W, /obj/item/weapon/weldingtool) || \
istype(W, /obj/item/weapon/flame/lighter/zippo) || \
@@ -1462,12 +1427,3 @@ var/mob/dview/dview_mob = new
return "Northwest"
if(337.5)
return "North-Northwest"
-
-
-
-
-
-
-
-
-
diff --git a/code/datums/autolathe/tools.dm b/code/datums/autolathe/tools.dm
index 70ea299ec84..d0aa2aa196b 100644
--- a/code/datums/autolathe/tools.dm
+++ b/code/datums/autolathe/tools.dm
@@ -1,6 +1,6 @@
/datum/category_item/autolathe/tools/crowbar
name = "crowbar"
- path =/obj/item/weapon/crowbar
+ path =/obj/item/weapon/tool/crowbar
/datum/category_item/autolathe/tools/multitool
name = "multitool"
@@ -21,15 +21,15 @@
/datum/category_item/autolathe/tools/screwdriver
name = "screwdriver"
- path =/obj/item/weapon/screwdriver
+ path =/obj/item/weapon/tool/screwdriver
/datum/category_item/autolathe/tools/wirecutters
name = "wirecutters"
- path =/obj/item/weapon/wirecutters
+ path =/obj/item/weapon/tool/wirecutters
/datum/category_item/autolathe/tools/wrench
name = "wrench"
- path =/obj/item/weapon/wrench
+ path =/obj/item/weapon/tool/wrench
/datum/category_item/autolathe/tools/hatchet
name = "hatchet"
diff --git a/code/datums/helper_datums/construction_datum.dm b/code/datums/helper_datums/construction_datum.dm
index 0bda144e8aa..e2d3dbdfd43 100644
--- a/code/datums/helper_datums/construction_datum.dm
+++ b/code/datums/helper_datums/construction_datum.dm
@@ -1,105 +1,152 @@
#define FORWARD -1
#define BACKWARD 1
+
+// As of August 4th, 2018, these datums are only used in Mech construction.
/datum/construction
var/list/steps
var/atom/holder
var/result
var/list/steps_desc
- New(atom)
- ..()
- holder = atom
- if(!holder) //don't want this without a holder
- spawn
- qdel(src)
+/datum/construction/New(atom)
+ ..()
+ holder = atom
+ if(!holder) //don't want this without a holder
+ spawn
+ qdel(src)
+ set_desc(steps.len)
+ return
+
+/datum/construction/proc/next_step()
+ steps.len--
+ if(!steps.len)
+ spawn_result()
+ else
set_desc(steps.len)
- return
+ return
- proc/next_step()
- steps.len--
- if(!steps.len)
- spawn_result()
- else
- set_desc(steps.len)
- return
+/datum/construction/proc/action(var/obj/item/I,mob/user as mob)
+ return
- proc/action(atom/used_atom,mob/user as mob)
- return
+/datum/construction/proc/check_step(var/obj/item/I,mob/user as mob) //check last step only
+ var/valid_step = is_right_key(I)
+ if(valid_step)
+ if(custom_action(valid_step, I, user))
+ next_step()
+ return 1
+ return 0
- proc/check_step(atom/used_atom,mob/user as mob) //check last step only
- var/valid_step = is_right_key(used_atom)
- if(valid_step)
- if(custom_action(valid_step, used_atom, user))
- next_step()
+/datum/construction/proc/is_right_key(var/obj/item/I) // returns current step num if I is of the right type.
+ var/list/L = steps[steps.len]
+ switch(L["key"])
+ if(IS_SCREWDRIVER)
+ if(I.is_screwdriver())
+ return steps.len
+ if(IS_CROWBAR)
+ if(I.is_crowbar())
+ return steps.len
+ if(IS_WIRECUTTER)
+ if(I.is_wirecutter())
+ return steps.len
+ if(IS_WRENCH)
+ if(I.is_wrench())
+ return steps.len
+
+ if(istype(I, L["key"]))
+ return steps.len
+ return 0
+
+/datum/construction/proc/custom_action(step, I, user)
+ return 1
+
+/datum/construction/proc/check_all_steps(var/obj/item/I,mob/user as mob) //check all steps, remove matching one.
+ for(var/i=1;i<=steps.len;i++)
+ var/list/L = steps[i];
+ if(istype(I, L["key"]))
+ if(custom_action(i, I, user))
+ steps[i]=null;//stupid byond list from list removal...
+ listclearnulls(steps);
+ if(!steps.len)
+ spawn_result()
return 1
- return 0
-
- proc/is_right_key(atom/used_atom) // returns current step num if used_atom is of the right type.
- var/list/L = steps[steps.len]
- if(istype(used_atom, L["key"]))
- return steps.len
- return 0
-
- proc/custom_action(step, used_atom, user)
- return 1
-
- proc/check_all_steps(atom/used_atom,mob/user as mob) //check all steps, remove matching one.
- for(var/i=1;i<=steps.len;i++)
- var/list/L = steps[i];
- if(istype(used_atom, L["key"]))
- if(custom_action(i, used_atom, user))
- steps[i]=null;//stupid byond list from list removal...
- listclearnulls(steps);
- if(!steps.len)
- spawn_result()
- return 1
- return 0
+ return 0
- proc/spawn_result()
- if(result)
- new result(get_turf(holder))
- spawn()
- qdel(holder)
- return
+/datum/construction/proc/spawn_result()
+ if(result)
+ new result(get_turf(holder))
+ spawn()
+ qdel(holder)
+ return
- proc/set_desc(index as num)
- var/list/step = steps[index]
- holder.desc = step["desc"]
- return
+/datum/construction/proc/set_desc(index as num)
+ var/list/step = steps[index]
+ holder.desc = step["desc"]
+ return
+
+// Reversible
/datum/construction/reversible
var/index
- New(atom)
- ..()
- index = steps.len
- return
+/datum/construction/reversible/New(atom)
+ ..()
+ index = steps.len
+ return
- proc/update_index(diff as num)
- index+=diff
- if(index==0)
- spawn_result()
- else
- set_desc(index)
- return
+/datum/construction/reversible/proc/update_index(diff as num)
+ index+=diff
+ if(index==0)
+ spawn_result()
+ else
+ set_desc(index)
+ return
- is_right_key(atom/used_atom) // returns index step
- var/list/L = steps[index]
- if(istype(used_atom, L["key"]))
- return FORWARD //to the first step -> forward
- else if(L["backkey"] && istype(used_atom, L["backkey"]))
- return BACKWARD //to the last step -> backwards
- return 0
+/datum/construction/reversible/is_right_key(var/obj/item/I) // returns index step
+ var/list/L = steps[index]
- check_step(atom/used_atom,mob/user as mob)
- var/diff = is_right_key(used_atom)
- if(diff)
- if(custom_action(index, diff, used_atom, user))
- update_index(diff)
- return 1
- return 0
+ switch(L["key"])
+ if(IS_SCREWDRIVER)
+ if(I.is_screwdriver())
+ return FORWARD
+ if(IS_CROWBAR)
+ if(I.is_crowbar())
+ return FORWARD
+ if(IS_WIRECUTTER)
+ if(I.is_wirecutter())
+ return FORWARD
+ if(IS_WRENCH)
+ if(I.is_wrench())
+ return FORWARD
- custom_action(index, diff, used_atom, user)
- return 1
\ No newline at end of file
+ switch(L["backkey"])
+ if(IS_SCREWDRIVER)
+ if(I.is_screwdriver())
+ return BACKWARD
+ if(IS_CROWBAR)
+ if(I.is_crowbar())
+ return BACKWARD
+ if(IS_WIRECUTTER)
+ if(I.is_wirecutter())
+ return BACKWARD
+ if(IS_WRENCH)
+ if(I.is_wrench())
+ return BACKWARD
+
+ if(istype(I, L["key"]))
+ return FORWARD //to the first step -> forward
+ else if(L["backkey"] && istype(I, L["backkey"]))
+ return BACKWARD //to the last step -> backwards
+ return 0
+
+/datum/construction/reversible/check_step(var/obj/item/I,mob/user as mob)
+ var/diff = is_right_key(I)
+ if(diff)
+ if(custom_action(index, diff, I, user))
+ update_index(diff)
+ return 1
+ return 0
+
+/datum/construction/reversible/custom_action(index, diff, I, user)
+ return 1
\ No newline at end of file
diff --git a/code/datums/outfits/jobs/cargo.dm b/code/datums/outfits/jobs/cargo.dm
index bbfe6f59f54..3423efcf337 100644
--- a/code/datums/outfits/jobs/cargo.dm
+++ b/code/datums/outfits/jobs/cargo.dm
@@ -25,5 +25,5 @@
satchel_one = /obj/item/weapon/storage/backpack/satchel/eng
id_type = /obj/item/weapon/card/id/cargo/mining
pda_type = /obj/item/device/pda/shaftminer
- backpack_contents = list(/obj/item/weapon/crowbar = 1, /obj/item/weapon/storage/bag/ore = 1)
+ backpack_contents = list(/obj/item/weapon/tool/crowbar = 1, /obj/item/weapon/storage/bag/ore = 1)
flags = OUTFIT_HAS_BACKPACK|OUTFIT_EXTENDED_SURVIVAL
diff --git a/code/datums/recipe.dm b/code/datums/recipe.dm
index 23af6093efa..9cddd506b6f 100644
--- a/code/datums/recipe.dm
+++ b/code/datums/recipe.dm
@@ -32,7 +32,7 @@
/datum/recipe
var/list/reagents // example: = list("berryjuice" = 5) // do not list same reagent twice
- var/list/items // example: = list(/obj/item/weapon/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
+ var/list/items // example: = list(/obj/item/weapon/tool/crowbar, /obj/item/weapon/welder) // place /foo/bar before /foo
var/list/fruit // example: = list("fruit" = 3)
var/result // example: = /obj/item/weapon/reagent_containers/food/snacks/donut/normal
var/time = 100 // 1/10 part of second
diff --git a/code/datums/supplypacks/supply.dm b/code/datums/supplypacks/supply.dm
index ade2fa907c6..0a40cae6a3a 100644
--- a/code/datums/supplypacks/supply.dm
+++ b/code/datums/supplypacks/supply.dm
@@ -58,7 +58,7 @@
/obj/item/weapon/wrapping_paper = 2,
/obj/item/device/destTagger,
/obj/item/weapon/hand_labeler,
- /obj/item/weapon/wirecutters,
+ /obj/item/weapon/tool/wirecutters,
/obj/item/weapon/tape_roll = 2)
cost = 10
containertype = "/obj/structure/closet/crate"
diff --git a/code/datums/wires/wires.dm b/code/datums/wires/wires.dm
index 435ca82fdcb..0a83f542db7 100644
--- a/code/datums/wires/wires.dm
+++ b/code/datums/wires/wires.dm
@@ -117,7 +117,7 @@ var/list/wireColours = list("red", "blue", "green", "darkred", "orange", "brown"
var/obj/item/I = L.get_active_hand()
holder.add_hiddenprint(L)
if(href_list["cut"]) // Toggles the cut/mend status
- if(istype(I, /obj/item/weapon/wirecutters))
+ if(I.is_wirecutter())
var/colour = href_list["cut"]
CutWireColour(colour)
playsound(holder, I.usesound, 20, 1)
diff --git a/code/game/gamemodes/sandbox/h_sandbox.dm b/code/game/gamemodes/sandbox/h_sandbox.dm
index 6e9f040f5c3..e919be9527f 100644
--- a/code/game/gamemodes/sandbox/h_sandbox.dm
+++ b/code/game/gamemodes/sandbox/h_sandbox.dm
@@ -121,7 +121,7 @@ datum/hSB
var/obj/item/weapon/storage/hsb = new/obj/item/weapon/storage/toolbox/mechanical
for(var/obj/item/device/radio/T in hsb)
qdel(T)
- new/obj/item/weapon/crowbar (hsb)
+ new/obj/item/weapon/tool/crowbar (hsb)
hsb.loc = usr.loc
if("hsbmedkit")
var/obj/item/weapon/storage/firstaid/hsb = new/obj/item/weapon/storage/firstaid/regular
diff --git a/code/game/machinery/CableLayer.dm b/code/game/machinery/CableLayer.dm
index a6c161982d3..659377281ec 100644
--- a/code/game/machinery/CableLayer.dm
+++ b/code/game/machinery/CableLayer.dm
@@ -35,7 +35,7 @@
user << "You load [result] lengths of cable into [src]."
return
- if(istype(O, /obj/item/weapon/wirecutters))
+ if(O.is_wirecutter())
if(cable && cable.amount)
var/m = round(input(usr,"Please specify the length of cable to cut","Cut cable",min(cable.amount,30)) as num, 1)
m = min(m, cable.amount)
diff --git a/code/game/machinery/atmoalter/canister.dm b/code/game/machinery/atmoalter/canister.dm
index a070ae91612..e19fc5c17cc 100644
--- a/code/game/machinery/atmoalter/canister.dm
+++ b/code/game/machinery/atmoalter/canister.dm
@@ -240,7 +240,7 @@ update_flag
..()
/obj/machinery/portable_atmospherics/canister/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if(!istype(W, /obj/item/weapon/wrench) && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda))
+ if(!W.is_wrench() && !istype(W, /obj/item/weapon/tank) && !istype(W, /obj/item/device/analyzer) && !istype(W, /obj/item/device/pda))
visible_message("\The [user] hits \the [src] with \a [W]!")
src.health -= W.force
src.add_fingerprint(user)
diff --git a/code/game/machinery/atmoalter/meter.dm b/code/game/machinery/atmoalter/meter.dm
index 71755cc246c..0b1f4c3d77c 100644
--- a/code/game/machinery/atmoalter/meter.dm
+++ b/code/game/machinery/atmoalter/meter.dm
@@ -105,7 +105,7 @@
return ..()
/obj/machinery/meter/attackby(var/obj/item/W, var/mob/user)
- if(iswrench(W))
+ if(W.is_wrench())
playsound(src, W.usesound, 50, 1)
to_chat(user, "You begin to unfasten \the [src]...")
if(do_after(user, 40 * W.toolspeed))
@@ -117,7 +117,7 @@
qdel(src)
return
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
for(var/obj/machinery/atmospherics/pipe/P in loc)
pipes_on_turf |= P
if(!pipes_on_turf.len)
diff --git a/code/game/machinery/atmoalter/portable_atmospherics.dm b/code/game/machinery/atmoalter/portable_atmospherics.dm
index 84d00eff045..477353e739d 100644
--- a/code/game/machinery/atmoalter/portable_atmospherics.dm
+++ b/code/game/machinery/atmoalter/portable_atmospherics.dm
@@ -113,10 +113,10 @@
update_icon()
return
- else if (istype(W, /obj/item/weapon/wrench))
+ else if (W.is_wrench())
if(connected_port)
disconnect()
- user << "You disconnect \the [src] from the port."
+ to_chat(user, "You disconnect \the [src] from the port.")
update_icon()
playsound(src, W.usesound, 50, 1)
return
@@ -124,15 +124,15 @@
var/obj/machinery/atmospherics/portables_connector/possible_port = locate(/obj/machinery/atmospherics/portables_connector/) in loc
if(possible_port)
if(connect(possible_port))
- user << "You connect \the [src] to the port."
+ to_chat(user, "You connect \the [src] to the port.")
update_icon()
playsound(src, W.usesound, 50, 1)
return
else
- user << "\The [src] failed to connect to the port."
+ to_chat(user, "\The [src] failed to connect to the port.")
return
else
- user << "Nothing happens."
+ to_chat(user, "Nothing happens.")
return
else if ((istype(W, /obj/item/device/analyzer)) && Adjacent(user))
@@ -160,7 +160,7 @@
/obj/machinery/portable_atmospherics/powered/attackby(obj/item/I, mob/user)
if(istype(I, /obj/item/weapon/cell))
if(cell)
- user << "There is already a power cell installed."
+ to_chat(user, "There is already a power cell installed.")
return
var/obj/item/weapon/cell/C = I
@@ -173,9 +173,9 @@
power_change()
return
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
if(!cell)
- user << "There is no power cell installed."
+ to_chat(user, "There is no power cell installed.")
return
user.visible_message("[user] opens the panel on [src] and removes [cell].", "You open the panel on [src] and remove [cell].")
diff --git a/code/game/machinery/atmoalter/scrubber.dm b/code/game/machinery/atmoalter/scrubber.dm
index 860a1135a1f..eb453ab2baf 100644
--- a/code/game/machinery/atmoalter/scrubber.dm
+++ b/code/game/machinery/atmoalter/scrubber.dm
@@ -166,7 +166,7 @@
name = "[name] (ID [id])"
/obj/machinery/portable_atmospherics/powered/scrubber/huge/attack_hand(var/mob/user as mob)
- usr << "You can't directly interact with this machine. Use the scrubber control console."
+ to_chat(user, "You can't directly interact with this machine. Use the scrubber control console.")
/obj/machinery/portable_atmospherics/powered/scrubber/huge/update_icon()
src.overlays = 0
@@ -205,21 +205,21 @@
update_connected_network()
/obj/machinery/portable_atmospherics/powered/scrubber/huge/attackby(var/obj/item/I as obj, var/mob/user as mob)
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
if(on)
- user << "Turn \the [src] off first!"
+ to_chat(user, "Turn \the [src] off first!")
return
anchored = !anchored
playsound(src.loc, I.usesound, 50, 1)
- user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
+ to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
return
//doesn't use power cells
if(istype(I, /obj/item/weapon/cell))
return
- if (istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
return
//doesn't hold tanks
@@ -233,8 +233,8 @@
name = "Stationary Air Scrubber"
/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary/attackby(var/obj/item/I as obj, var/mob/user as mob)
- if(istype(I, /obj/item/weapon/wrench))
- user << "The bolts are too tight for you to unscrew!"
+ if(I.is_wrench())
+ to_chat(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 4daf8392de9..02fb2f6b4d2 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -50,7 +50,7 @@
update_recipe_list()
if(..() || (disabled && !panel_open))
- user << "\The [src] is disabled!"
+ to_chat(user, "\The [src] is disabled!")
return
if(shocked)
@@ -118,7 +118,7 @@
/obj/machinery/autolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
- user << "\The [src] is busy. Please wait for completion of previous operation."
+ to_chat(user, "\The [src] is busy. Please wait for completion of previous operation.")
return
if(default_deconstruction_screwdriver(user, O))
@@ -134,7 +134,7 @@
if(panel_open)
//Don't eat multitools or wirecutters used on an open lathe.
- if(istype(O, /obj/item/device/multitool) || istype(O, /obj/item/weapon/wirecutters))
+ if(istype(O, /obj/item/device/multitool) || O.is_wirecutter())
attack_hand(user)
return
@@ -145,25 +145,25 @@
return 0
if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/s357) || istype(O,/obj/item/ammo_magazine/s38)) // Prevents ammo recycling exploit with speedloaders.
- user << "\The [O] is too hazardous to recycle with the autolathe!"
+ to_chat(user, "\The [O] is too hazardous to recycle with the autolathe!")
return
/* ToDo: Make this actually check for ammo and change the value of the magazine if it's empty. -Spades
var/obj/item/ammo_magazine/speedloader = O
if(speedloader.stored_ammo)
- user << "\The [speedloader] is too hazardous to put back into the autolathe while there's ammunition inside of it!"
+ to_chat(user, "\The [speedloader] is too hazardous to put back into the autolathe while there's ammunition inside of it!")
return
else
speedloader.matter = list(DEFAULT_WALL_MATERIAL = 75) // It's just a hunk of scrap metal now.
if(istype(O,/obj/item/ammo_magazine)) // This was just for immersion consistency with above.
var/obj/item/ammo_magazine/mag = O
if(mag.stored_ammo)
- user << "\The [mag] is too hazardous to put back into the autolathe while there's ammunition inside of it!"
+ to_chat(user, "\The [mag] is too hazardous to put back into the autolathe while there's ammunition inside of it!")
return*/
//Resources are being loaded.
var/obj/item/eating = O
if(!eating.matter)
- user << "\The [eating] does not contain significant amounts of useful materials and cannot be accepted."
+ to_chat(user, "\The [eating] does not contain significant amounts of useful materials and cannot be accepted.")
return
var/filltype = 0 // Used to determine message.
@@ -196,12 +196,12 @@
mass_per_sheet += eating.matter[material]
if(!filltype)
- user << "\The [src] is full. Please remove material from the autolathe in order to insert more."
+ to_chat(user, "\The [src] is full. Please remove material from the autolathe in order to insert more.")
return
else if(filltype == 1)
- user << "You fill \the [src] to capacity with \the [eating]."
+ to_chat(user, "You fill \the [src] to capacity with \the [eating].")
else
- user << "You fill \the [src] with \the [eating]."
+ to_chat(user, "You fill \the [src] with \the [eating].")
flick("autolathe_o", src) // Plays metal insertion animation. Work out a good way to work out a fitting animation. ~Z
@@ -227,7 +227,7 @@
add_fingerprint(usr)
if(busy)
- usr << "The autolathe is busy. Please wait for completion of previous operation."
+ to_chat(usr, "The autolathe is busy. Please wait for completion of previous operation.")
return
if(href_list["change_category"])
diff --git a/code/game/machinery/biogenerator.dm b/code/game/machinery/biogenerator.dm
index 4ad8d06a5aa..346e26370f5 100644
--- a/code/game/machinery/biogenerator.dm
+++ b/code/game/machinery/biogenerator.dm
@@ -50,43 +50,43 @@
return
if(istype(O, /obj/item/weapon/reagent_containers/glass))
if(beaker)
- user << "]The [src] is already loaded."
+ to_chat(user, "]The [src] is already loaded.")
else
user.remove_from_mob(O)
O.loc = src
beaker = O
updateUsrDialog()
else if(processing)
- user << "\The [src] is currently processing."
+ to_chat(user, "\The [src] is currently processing.")
else if(istype(O, /obj/item/weapon/storage/bag/plants))
var/i = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents)
i++
if(i >= 10)
- user << "\The [src] is already full! Activate it."
+ to_chat(user, "\The [src] is already full! Activate it.")
else
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in O.contents)
G.loc = src
i++
if(i >= 10)
- user << "You fill \the [src] to its capacity."
+ to_chat(user, "You fill \the [src] to its capacity.")
break
if(i < 10)
- user << "You empty \the [O] into \the [src]."
+ to_chat(user, "You empty \the [O] into \the [src].")
else if(!istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown))
- user << "You cannot put this in \the [src]."
+ to_chat(user, "You cannot put this in \the [src].")
else
var/i = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/G in contents)
i++
if(i >= 10)
- user << "\The [src] is full! Activate it."
+ to_chat(user, "\The [src] is full! Activate it.")
else
user.remove_from_mob(O)
O.loc = src
- user << "You put \the [O] in \the [src]"
+ to_chat(user, "You put \the [O] in \the [src]")
update_icon()
return
@@ -151,7 +151,7 @@
if(stat) //NOPOWER etc
return
if(processing)
- usr << "The biogenerator is in the process of working."
+ to_chat(usr, "The biogenerator is in the process of working.")
return
var/S = 0
for(var/obj/item/weapon/reagent_containers/food/snacks/grown/I in contents)
diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm
index 85f324c3879..484adf6068c 100644
--- a/code/game/machinery/camera/camera.dm
+++ b/code/game/machinery/camera/camera.dm
@@ -151,7 +151,7 @@
/obj/machinery/camera/attackby(obj/item/W as obj, mob/living/user as mob)
update_coverage()
// DECONSTRUCTION
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
//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
@@ -159,10 +159,10 @@
"You screw the camera's panel [panel_open ? "open" : "closed"].")
playsound(src.loc, W.usesound, 50, 1)
- else if((iswirecutter(W) || ismultitool(W)) && panel_open)
+ else if((W.is_wirecutter() || istype(W, /obj/item/device/multitool)) && panel_open)
interact(user)
- else if(iswelder(W) && (wires.CanDeconstruct() || (stat & BROKEN)))
+ else if(istype(W, /obj/item/weapon/weldingtool) && (wires.CanDeconstruct() || (stat & BROKEN)))
if(weld(W, user))
if(assembly)
assembly.loc = src.loc
diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm
index 44cd61d1d98..72b32b95d31 100644
--- a/code/game/machinery/camera/camera_assembly.dm
+++ b/code/game/machinery/camera/camera_assembly.dm
@@ -29,7 +29,7 @@
if(0)
// State 0
- if(iswrench(W) && isturf(src.loc))
+ if(W.is_wrench() && isturf(src.loc))
playsound(src, W.usesound, 50, 1)
user << "You wrench the assembly into place."
anchored = 1
@@ -40,14 +40,14 @@
if(1)
// State 1
- if(iswelder(W))
+ if(istype(W, /obj/item/weapon/weldingtool))
if(weld(W, user))
user << "You weld the assembly securely into place."
anchored = 1
state = 2
return
- else if(iswrench(W))
+ else if(W.is_wrench())
playsound(src, W.usesound, 50, 1)
user << "You unattach the assembly from its place."
anchored = 0
@@ -57,7 +57,7 @@
if(2)
// State 2
- if(iscoil(W))
+ if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
if(C.use(2))
user << "You add wires to the assembly."
@@ -66,7 +66,7 @@
user << "You need 2 coils of wire to wire the assembly."
return
- else if(iswelder(W))
+ else if(istype(W, /obj/item/weapon/weldingtool))
if(weld(W, user))
user << "You unweld the assembly from its place."
@@ -77,7 +77,7 @@
if(3)
// State 3
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
playsound(src.loc, W.usesound, 50, 1)
var/input = sanitize(input(usr, "Which networks would you like to connect this camera to? Separate networks with a comma. No Spaces!\nFor example: "+using_map.station_short+",Security,Secret ", "Set Network", camera_network ? camera_network : NETWORK_DEFAULT))
@@ -115,7 +115,7 @@
break
return
- else if(iswirecutter(W))
+ else if(W.is_wirecutter())
new/obj/item/stack/cable_coil(get_turf(src), 2)
playsound(src.loc, W.usesound, 50, 1)
@@ -132,7 +132,7 @@
return
// Taking out upgrades
- else if(iscrowbar(W) && upgrades.len)
+ else if(W.is_crowbar() && upgrades.len)
var/obj/U = locate(/obj) in upgrades
if(U)
user << "You unattach an upgrade from the assembly."
diff --git a/code/game/machinery/cell_charger.dm b/code/game/machinery/cell_charger.dm
index 6cb9e63eb5e..bad819a985d 100644
--- a/code/game/machinery/cell_charger.dm
+++ b/code/game/machinery/cell_charger.dm
@@ -61,7 +61,7 @@
user.visible_message("[user] inserts a cell into the charger.", "You insert a cell into the charger.")
chargelevel = -1
update_icon()
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(charging)
user << "Remove the cell first!"
return
diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm
index 3f3508b968f..69681d1775b 100644
--- a/code/game/machinery/cloning.dm
+++ b/code/game/machinery/cloning.dm
@@ -252,7 +252,7 @@
user.drop_item()
W.forceMove(src)
return
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(locked && (anchored || occupant))
to_chat(user, "Can not do that while [src] is in use.")
else
diff --git a/code/game/machinery/computer/ai_core.dm b/code/game/machinery/computer/ai_core.dm
index 0e68f1e7a3c..bc6da683320 100644
--- a/code/game/machinery/computer/ai_core.dm
+++ b/code/game/machinery/computer/ai_core.dm
@@ -14,75 +14,75 @@
switch(state)
if(0)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
- user << "You wrench the frame into place."
+ to_chat(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.isOn())
- user << "The welder must be on for this task."
+ to_chat(user, "The welder must be on for this task.")
return
playsound(loc, WT.usesound, 50, 1)
if(do_after(user, 20 * WT.toolspeed))
if(!src || !WT.remove_fuel(0, user)) return
- user << "You deconstruct the frame."
+ to_chat(user, "You deconstruct the frame.")
new /obj/item/stack/material/plasteel( loc, 4)
qdel(src)
if(1)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
- user << "You unfasten the frame."
+ to_chat(user, "You unfasten the frame.")
anchored = 0
state = 0
if(istype(P, /obj/item/weapon/circuitboard/aicore) && !circuit)
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You place the circuit board inside the frame."
+ to_chat(user, "You place the circuit board inside the frame.")
icon_state = "1"
circuit = P
user.drop_item()
P.loc = src
- if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+ if(P.is_screwdriver() && circuit)
playsound(loc, P.usesound, 50, 1)
- user << "You screw the circuit board into place."
+ to_chat(user, "You screw the circuit board into place.")
state = 2
icon_state = "2"
- if(istype(P, /obj/item/weapon/crowbar) && circuit)
+ if(P.is_crowbar() && circuit)
playsound(loc, P.usesound, 50, 1)
- user << "You remove the circuit board."
+ to_chat(user, "You remove the circuit board.")
state = 1
icon_state = "0"
circuit.loc = loc
circuit = null
if(2)
- if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+ if(P.is_screwdriver() && circuit)
playsound(loc, P.usesound, 50, 1)
- user << "You unfasten the circuit board."
+ to_chat(user, "You unfasten the circuit board.")
state = 1
icon_state = "1"
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = P
if (C.get_amount() < 5)
- user << "You need five coils of wire to add them to the frame."
+ to_chat(user, "You need five coils of wire to add them to the frame.")
return
- user << "You start to add cables to the frame."
+ to_chat(user, "You start to add cables to the frame.")
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
if (do_after(user, 20) && state == 2)
if (C.use(5))
state = 3
icon_state = "3"
- user << "You add cables to the frame."
+ to_chat(user, "You add cables to the frame.")
return
if(3)
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
if (brain)
- user << "Get that brain out of there first"
+ to_chat(user, "Get that brain out of there first")
else
playsound(loc, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
state = 2
icon_state = "2"
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( loc )
@@ -91,13 +91,13 @@
if(istype(P, /obj/item/stack/material) && P.get_material_name() == "rglass")
var/obj/item/stack/RG = P
if (RG.get_amount() < 2)
- user << "You need two sheets of glass to put in the glass panel."
+ to_chat(user, "You need two sheets of glass to put in the glass panel.")
return
- user << "You start to put in the glass panel."
+ to_chat(user, "You start to put in the glass panel.")
playsound(loc, 'sound/items/Deconstruct.ogg', 50, 1)
if (do_after(user, 20) && state == 3)
if(RG.use(2))
- user << "You put in the glass panel."
+ to_chat(user, "You put in the glass panel.")
state = 4
icon_state = "4"
@@ -126,14 +126,14 @@
if(istype(P, /obj/item/device/mmi))
var/obj/item/device/mmi/M = P
if(!M.brainmob)
- user << "Sticking an empty [P] into the frame would sort of defeat the purpose."
+ to_chat(user, "Sticking an empty [P] into the frame would sort of defeat the purpose.")
return
if(M.brainmob.stat == 2)
- user << "Sticking a dead [P] into the frame would sort of defeat the purpose."
+ to_chat(user, "Sticking a dead [P] into the frame would sort of defeat the purpose.")
return
if(jobban_isbanned(M.brainmob, "AI"))
- user << "This [P] does not seem to fit."
+ to_chat(user, "This [P] does not seem to fit.")
return
if(M.brainmob.mind)
@@ -145,17 +145,17 @@
usr << "Added [P]."
icon_state = "3b"
- if(istype(P, /obj/item/weapon/crowbar) && brain)
+ if(P.is_crowbar() && brain)
playsound(loc, P.usesound, 50, 1)
- user << "You remove the brain."
+ to_chat(user, "You remove the brain.")
brain.loc = loc
brain = null
icon_state = "3"
if(4)
- if(istype(P, /obj/item/weapon/crowbar))
+ if(P.is_crowbar())
playsound(loc, P.usesound, 50, 1)
- user << "You remove the glass panel."
+ to_chat(user, "You remove the glass panel.")
state = 3
if (brain)
icon_state = "3b"
@@ -164,9 +164,9 @@
new /obj/item/stack/material/glass/reinforced( loc, 2 )
return
- if(istype(P, /obj/item/weapon/screwdriver))
+ if(P.is_screwdriver())
playsound(loc, P.usesound, 50, 1)
- user << "You connect the monitor."
+ to_chat(user, "You connect the monitor.")
if(!brain)
var/open_for_latejoin = alert(user, "Would you like this core to be open for latejoining AIs?", "Latejoin", "Yes", "Yes", "No") == "Yes"
var/obj/structure/AIcore/deactivated/D = new(loc)
@@ -230,9 +230,9 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva
if(transfer)
load_ai(transfer,card,user)
else
- user << "ERROR: Unable to locate artificial intelligence."
+ to_chat(user, "ERROR: Unable to locate artificial intelligence.")
return
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(anchored)
user.visible_message("\The [user] starts to unbolt \the [src] from the plating...")
playsound(src, W.usesound, 50, 1)
@@ -270,7 +270,7 @@ GLOBAL_LIST_BOILERPLATE(all_deactivated_AI_cores, /obj/structure/AIcore/deactiva
if(D in empty_playable_ai_cores)
empty_playable_ai_cores -= D
- src << "\The [id] is now not available for latejoining AIs."
+ to_chat(src, "\The [id] is now not available for latejoining AIs.")
else
empty_playable_ai_cores += D
- src << "\The [id] is now available for latejoining AIs."
+ to_chat(src, "\The [id] is now available for latejoining AIs.")
diff --git a/code/game/machinery/computer/buildandrepair.dm b/code/game/machinery/computer/buildandrepair.dm
index 6d7243c36c8..960ce3dc357 100644
--- a/code/game/machinery/computer/buildandrepair.dm
+++ b/code/game/machinery/computer/buildandrepair.dm
@@ -13,75 +13,75 @@
/obj/structure/computerframe/attackby(obj/item/P as obj, mob/user as mob)
switch(state)
if(0)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
- user << "You wrench the frame into place."
+ to_chat(user, "You wrench the frame into place.")
src.anchored = 1
src.state = 1
if(istype(P, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = P
if(!WT.remove_fuel(0, user))
- user << "The welding tool must be on to complete this task."
+ to_chat(user, "The welding tool must be on to complete this task.")
return
playsound(src.loc, WT.usesound, 50, 1)
if(do_after(user, 20 * WT.toolspeed))
if(!src || !WT.isOn()) return
- user << "You deconstruct the frame."
+ to_chat(user, "You deconstruct the frame.")
new /obj/item/stack/material/steel( src.loc, 5 )
qdel(src)
if(1)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
- user << "You unfasten the frame."
+ to_chat(user, "You unfasten the frame.")
src.anchored = 0
src.state = 0
if(istype(P, /obj/item/weapon/circuitboard) && !circuit)
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "computer")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You place the circuit board inside the frame."
+ to_chat(user, "You place the circuit board inside the frame.")
src.icon_state = "1"
src.circuit = P
user.drop_item()
P.loc = src
else
- user << "This frame does not accept circuit boards of this type!"
- if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+ to_chat(user, "This frame does not accept circuit boards of this type!")
+ if(P.is_screwdriver() && circuit)
playsound(src.loc, P.usesound, 50, 1)
- user << "You screw the circuit board into place."
+ to_chat(user, "You screw the circuit board into place.")
src.state = 2
src.icon_state = "2"
- if(istype(P, /obj/item/weapon/crowbar) && circuit)
+ if(P.is_crowbar()) && circuit)
playsound(src.loc, P.usesound, 50, 1)
- user << "You remove the circuit board."
+ to_chat(user, "You remove the circuit board.")
src.state = 1
src.icon_state = "0"
circuit.loc = src.loc
src.circuit = null
if(2)
- if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+ if(P.is_screwdriver() && circuit)
playsound(src.loc, P.usesound, 50, 1)
- user << "You unfasten the circuit board."
+ to_chat(user, "You unfasten the circuit board.")
src.state = 1
src.icon_state = "1"
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = P
if (C.get_amount() < 5)
- user << "You need five coils of wire to add them to the frame."
+ to_chat(user, "You need five coils of wire to add them to the frame.")
return
- user << "You start to add cables to the frame."
+ to_chat(user, "You start to add cables to the frame.")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20) && state == 2)
if (C.use(5))
- user << "You add cables to the frame."
+ to_chat(user, "You add cables to the frame.")
state = 3
icon_state = "3"
if(3)
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
playsound(src.loc, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
src.state = 2
src.icon_state = "2"
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc )
@@ -90,25 +90,25 @@
if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass")
var/obj/item/stack/G = P
if (G.get_amount() < 2)
- user << "You need two sheets of glass to put in the glass panel."
+ to_chat(user, "You need two sheets of glass to put in the glass panel.")
return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You start to put in the glass panel."
+ to_chat(user, "You start to put in the glass panel.")
if(do_after(user, 20) && state == 3)
if (G.use(2))
- user << "You put in the glass panel."
+ to_chat(user, "You put in the glass panel.")
src.state = 4
src.icon_state = "4"
if(4)
- if(istype(P, /obj/item/weapon/crowbar))
+ if(P.is_crowbar())
playsound(src.loc, P.usesound, 50, 1)
- user << "You remove the glass panel."
+ to_chat(user, "You remove the glass panel.")
src.state = 3
src.icon_state = "3"
new /obj/item/stack/material/glass( src.loc, 2 )
- if(istype(P, /obj/item/weapon/screwdriver))
+ if(P.is_screwdriver())
playsound(src.loc, P.usesound, 50, 1)
- user << "You connect the monitor."
+ to_chat(user, "You connect the monitor.")
var/B = new src.circuit.build_path ( src.loc )
src.circuit.construct(B)
qdel(src)
diff --git a/code/game/machinery/computer/camera_circuit.dm b/code/game/machinery/computer/camera_circuit.dm
index 436703f724d..347eb145c4c 100644
--- a/code/game/machinery/computer/camera_circuit.dm
+++ b/code/game/machinery/computer/camera_circuit.dm
@@ -38,7 +38,7 @@
attackby(var/obj/item/I, var/mob/user)//if(health > 50)
..()
- else if(istype(I,/obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
secured = !secured
user.visible_message("The [src] can [secured ? "no longer" : "now"] be modified.")
playsound(src, I.usesound, 50, 1)
diff --git a/code/game/machinery/computer/computer.dm b/code/game/machinery/computer/computer.dm
index 92f69a70e1e..36c2a894e78 100644
--- a/code/game/machinery/computer/computer.dm
+++ b/code/game/machinery/computer/computer.dm
@@ -106,11 +106,11 @@
if(istype(I,/obj/item/weapon/gripper)) //Behold, Grippers and their horribleness. If ..() is called by any computers' attackby() now or in the future, this should let grippers work with them appropriately.
var/obj/item/weapon/gripper/B = I //B, for Borg.
if(!B.wrapped)
- user << "\The [B] is not holding anything."
+ to_chat(user, "\The [B] is not holding anything.")
return
else
var/B_held = B.wrapped
- user << "You use \the [B] to use \the [B_held] with \the [src]."
+ to_chat(user, "You use \the [B] to use \the [B_held] with \the [src].")
playsound(src, "keyboard", 100, 1, 0)
return
attack_hand(user)
diff --git a/code/game/machinery/computer/message.dm b/code/game/machinery/computer/message.dm
index fd82940b6dc..670b6371529 100644
--- a/code/game/machinery/computer/message.dm
+++ b/code/game/machinery/computer/message.dm
@@ -36,7 +36,7 @@
return
if(!istype(user))
return
- if(isscrewdriver(O) && emag)
+ if(O.is_screwdriver() && emag)
//Stops people from just unscrewing the monitor and putting it back to get the console working again.
user << "It is too hot to mess with!"
return
diff --git a/code/game/machinery/computer/pod.dm b/code/game/machinery/computer/pod.dm
index ee42ed18bd1..1d210787dec 100644
--- a/code/game/machinery/computer/pod.dm
+++ b/code/game/machinery/computer/pod.dm
@@ -52,11 +52,11 @@
/*
/obj/machinery/computer/pod/attackby(I as obj, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
playsound(src.loc, W.usesound, 50, 1)
if(do_after(user, 20))
if(stat & BROKEN)
- user << "The broken glass falls out."
+ to_chat(user, "The broken glass falls out.")
var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
new /obj/item/weapon/material/shard( loc )
@@ -80,7 +80,7 @@
A.anchored = 1
qdel(src)
else
- user << "You disconnect the monitor."
+ to_chat(user << "You disconnect the monitor.")
var/obj/structure/computerframe/A = new /obj/structure/computerframe( loc )
//generate appropriate circuitboard. Accounts for /pod/old computer types
@@ -210,7 +210,7 @@
/obj/machinery/computer/pod/old/syndicate/attack_hand(var/mob/user as mob)
if(!allowed(user))
- user << "Access Denied"
+ to_chat(user, "Access Denied")
return
else
..()
diff --git a/code/game/machinery/computer3/buildandrepair.dm b/code/game/machinery/computer3/buildandrepair.dm
index 14270bf144f..928675769c1 100644
--- a/code/game/machinery/computer3/buildandrepair.dm
+++ b/code/game/machinery/computer3/buildandrepair.dm
@@ -78,7 +78,7 @@
/obj/structure/computer3frame/attackby(obj/item/P as obj, mob/user as mob)
switch(state)
if(0)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
to_chat(user, "You wrench the frame into place.")
@@ -96,7 +96,7 @@
new /obj/item/stack/material/steel( src.loc, 5 )
qdel(src)
if(1)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
to_chat(user, "You unfasten the frame.")
@@ -113,12 +113,12 @@
P.loc = src
else
to_chat(user, "This frame does not accept circuit boards of this type!")
- if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+ if(P.is_screwdriver() && circuit)
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "You screw the circuit board into place.")
src.state = 2
src.icon_state = "2"
- if(istype(P, /obj/item/weapon/crowbar) && circuit)
+ if(P.is_crowbar() && circuit)
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "You remove the circuit board.")
src.state = 1
@@ -126,13 +126,13 @@
circuit.loc = src.loc
src.circuit = null
if(2)
- if(istype(P, /obj/item/weapon/screwdriver) && circuit)
+ if(P.is_screwdriver() && circuit)
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "You unfasten the circuit board.")
src.state = 1
src.icon_state = "1"
- if(istype(P, /obj/item/weapon/crowbar))
+ if(P.is_crowbar())
if(battery)
playsound(src.loc, P.usesound, 50, 1)
if(do_after(10 * P.toolspeed))
@@ -164,7 +164,7 @@
src.state = 3
src.icon_state = "3"
if(3)
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
if(components.len)
to_chat(user, "There are parts in the way!")
return
@@ -175,7 +175,7 @@
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc )
A.amount = 5
- if(istype(P, /obj/item/weapon/crowbar)) // complicated check
+ if(P.is_crowbar())
remove_peripheral()
if(istype(P, /obj/item/stack/material) && P.get_material_name() == "glass")
@@ -189,13 +189,13 @@
src.state = 4
src.icon_state = "4"
if(4)
- if(istype(P, /obj/item/weapon/crowbar))
+ if(P.is_crowbar())
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "You remove the glass panel.")
src.state = 3
src.icon_state = "3"
new /obj/item/stack/material/glass( src.loc, 2 )
- if(istype(P, /obj/item/weapon/screwdriver))
+ if(P.is_screwdriver())
playsound(src.loc, P.usesound, 50, 1)
to_chat(user, "You connect the monitor.")
var/obj/machinery/computer3/B = new src.circuit.build_path ( src.loc, built=1 )
diff --git a/code/game/machinery/computer3/computer.dm b/code/game/machinery/computer3/computer.dm
index 930ee6adcdf..c9d8eb22dec 100644
--- a/code/game/machinery/computer3/computer.dm
+++ b/code/game/machinery/computer3/computer.dm
@@ -309,8 +309,8 @@
if(os)
os.error = BUSTED_ASS_COMPUTER
-/obj/machinery/computer3/attackby(I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/screwdriver) && allow_disassemble)
+/obj/machinery/computer3/attackby(obj/item/I as obj, mob/user as mob)
+ if(I.is_screwdriver() && allow_disassemble)
disassemble(user)
return
diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm
index c3b6e010d63..e74ffb7cf94 100644
--- a/code/game/machinery/constructable_frame.dm
+++ b/code/game/machinery/constructable_frame.dm
@@ -31,19 +31,19 @@
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = P
if (C.get_amount() < 5)
- user << "You need five lengths of cable to add them to the frame."
+ to_chat(user, "You need five lengths of cable to add them to the frame.")
return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You start to add cables to the frame."
+ to_chat(user, "You start to add cables to the frame.")
if(do_after(user, 20) && state == 1)
if(C.use(5))
- user << "You add cables to the frame."
+ to_chat(user, "You add cables to the frame.")
state = 2
icon_state = "box_1"
else
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
playsound(src, W.usesound, 75, 1)
- user << "You dismantle the frame"
+ to_chat(user, "You dismantle the frame")
new /obj/item/stack/material/steel(src.loc, 5)
qdel(src)
if(2)
@@ -51,7 +51,7 @@
var/obj/item/weapon/circuitboard/B = P
if(B.board_type == "machine")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You add the circuit board to the frame."
+ to_chat(user, "You add the circuit board to the frame.")
circuit = P
user.drop_item()
P.loc = src
@@ -67,28 +67,28 @@
var/obj/ct = new cp() // have to quickly instantiate it get name
req_component_names[A] = ct.name
update_desc()
- user << desc
+ to_chat(user, desc)
else
- user << "This frame does not accept circuit boards of this type!"
+ to_chat(user, "This frame does not accept circuit boards of this type!")
else
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
playsound(src.loc, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
state = 1
icon_state = "box_0"
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( src.loc )
A.amount = 5
if(3)
- if(istype(P, /obj/item/weapon/crowbar))
+ if(P.is_crowbar())
playsound(src, P.usesound, 50, 1)
state = 2
circuit.loc = src.loc
circuit = null
if(components.len == 0)
- user << "You remove the circuit board."
+ to_chat(user, "You remove the circuit board.")
else
- user << "You remove the circuit board and other components."
+ to_chat(user, "You remove the circuit board and other components.")
for(var/obj/item/weapon/W in components)
W.loc = src.loc
desc = initial(desc)
@@ -96,7 +96,7 @@
components = null
icon_state = "box_1"
else
- if(istype(P, /obj/item/weapon/screwdriver))
+ if(P.is_screwdriver())
var/component_check = 1
for(var/R in req_components)
if(req_components[R] > 0)
@@ -132,7 +132,7 @@
for(var/I in req_components)
if(istype(P, text2path(I)) && (req_components[I] > 0))
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- if(istype(P, /obj/item/stack/cable_coil))
+ if(P.is_cable_coil))
var/obj/item/stack/cable_coil/CP = P
if(CP.get_amount() > 1)
var/camt = min(CP.amount, req_components[I]) // amount of cable to take, idealy amount required, but limited by amount provided
@@ -150,6 +150,6 @@
req_components[I]--
update_desc()
break
- user << desc
+ to_chat(user, desc)
if(P && P.loc != src && !istype(P, /obj/item/stack/cable_coil))
- user << "You cannot add that component to the machine!"
+ to_chat(user, "You cannot add that component to the machine!")
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index 6c686206443..adb4a5f35a1 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -185,7 +185,7 @@
/obj/machinery/atmospherics/unary/cryo_cell/attackby(var/obj/item/weapon/G as obj, var/mob/user as mob)
if(istype(G, /obj/item/weapon/reagent_containers/glass))
if(beaker)
- user << "A beaker is already loaded into the machine."
+ to_chat(user, "A beaker is already loaded into the machine.")
return
beaker = G
@@ -201,12 +201,12 @@
to_chat(user,"\The [src] is already occupied by [occupant].")
for(var/mob/living/simple_animal/slime/M in range(1,grab.affecting))
if(M.victim == grab.affecting)
- usr << "[grab.affecting.name] will not fit into the cryo because they have a slime latched onto their head."
+ to_chat(usr, "[grab.affecting.name] will not fit into the cryo because they have a slime latched onto their head.")
return
var/mob/M = grab.affecting
qdel(grab)
put_mob(M)
-
+
return
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(var/mob/target, var/mob/user) //Allows borgs to put people into cryo without external assistance
@@ -293,19 +293,19 @@
return
/obj/machinery/atmospherics/unary/cryo_cell/proc/put_mob(mob/living/carbon/M as mob)
if(stat & (NOPOWER|BROKEN))
- usr << "The cryo cell is not functioning."
+ to_chat(usr, "The cryo cell is not functioning.")
return
if(!istype(M))
- usr << "The cryo cell cannot handle such a lifeform!"
+ to_chat(usr, "The cryo cell cannot handle such a lifeform!")
return
if(occupant)
- usr << "The cryo cell is already occupied!"
+ to_chat(usr, "The cryo cell is already occupied!")
return
if(M.abiotic())
- usr << "Subject may not have abiotic items on."
+ to_chat(usr, "Subject may not have abiotic items on.")
return
if(!node)
- usr << "The cell is not correctly connected to its pipe network!"
+ to_chat(usr, "The cell is not correctly connected to its pipe network!")
return
if(M.client)
M.client.perspective = EYE_PERSPECTIVE
@@ -314,7 +314,7 @@
M.loc = src
M.ExtinguishMob()
if(M.health > -100 && (M.health < 0 || M.sleeping))
- M << "You feel a cold liquid surround you. Your skin starts to freeze up."
+ to_chat(M, "You feel a cold liquid surround you. Your skin starts to freeze up.")
occupant = M
buckle_mob(occupant, forced = TRUE, check_loc = FALSE)
vis_contents |= occupant
@@ -333,7 +333,7 @@
if(usr == occupant)//If the user is inside the tube...
if(usr.stat == 2)//and he's not dead....
return
- usr << "Release sequence activated. This will take two minutes."
+ to_chat(usr, "Release sequence activated. This will take two minutes.")
sleep(1200)
if(!src || !usr || !occupant || (occupant != usr)) //Check if someone's released/replaced/bombed him already
return
@@ -351,7 +351,7 @@
set src in oview(1)
for(var/mob/living/simple_animal/slime/M in range(1,usr))
if(M.victim == usr)
- usr << "You're too busy getting your life sucked out of you."
+ to_chat(usr, "You're too busy getting your life sucked out of you.")
return
if(usr.stat != 0)
return
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index 57fbab5439f..6e74466be3f 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -95,7 +95,7 @@
dat += "Recover object.
"
dat += "Recover all objects.
"
- user << browse(dat, "window=cryopod_console")
+ to_chat(user, browse(dat, "window=cryopod_console"))
onclose(user, "cryopod_console")
/obj/machinery/computer/cryopod/Topic(href, href_list)
@@ -114,7 +114,7 @@
dat += "[person]
"
dat += "
"
- user << browse(dat, "window=cryolog")
+ to_chat(user, browse(dat, "window=cryolog"))
if(href_list["view"])
if(!allow_items) return
@@ -124,13 +124,13 @@
dat += "[I.name]
"
dat += "
"
- user << browse(dat, "window=cryoitems")
+ to_chat(user, browse(dat, "window=cryoitems"))
else if(href_list["item"])
if(!allow_items) return
if(frozen_items.len == 0)
- user << "There is nothing to recover from storage."
+ to_chat(user, "There is nothing to recover from storage.")
return
var/obj/item/I = input(usr, "Please choose which object to retrieve.","Object recovery",null) as null|anything in frozen_items
@@ -138,7 +138,7 @@
return
if(!(I in frozen_items))
- user << "\The [I] is no longer in storage."
+ to_chat(user, "\The [I] is no longer in storage.")
return
visible_message("The console beeps happily as it disgorges \the [I].", 3)
@@ -150,7 +150,7 @@
if(!allow_items) return
if(frozen_items.len == 0)
- user << "There is nothing to recover from storage."
+ to_chat(user, "There is nothing to recover from storage.")
return
visible_message("The console beeps happily as it disgorges the desired objects.", 3)
@@ -484,7 +484,7 @@
var/obj/item/weapon/grab/grab = G
if(occupant)
- user << "\The [src] is in use."
+ to_chat(user, "\The [src] is in use.")
return
if(!ismob(grab.affecting))
@@ -529,12 +529,12 @@
return
if(occupant)
- usr << "\The [src] is in use."
+ to_chat(usr, "\The [src] is in use.")
return
for(var/mob/living/simple_animal/slime/M in range(1,usr))
if(M.victim == usr)
- usr << "You're too busy getting your life sucked out of you."
+ to_chat(usr, "You're too busy getting your life sucked out of you.")
return
visible_message("[usr] [on_enter_visible_message] [src].", 3)
@@ -545,7 +545,7 @@
return
if(occupant)
- usr << "\The [src] is in use."
+ to_chat(usr, "\The [src] is in use.")
return
usr.stop_pulling()
@@ -561,8 +561,8 @@
icon_state = occupied_icon_state
- usr << "[on_enter_occupant_message]"
- usr << "If you ghost, log out or close your client now, your character will shortly be permanently removed from the round."
+ to_chat(usr, "[on_enter_occupant_message]")
+ to_chat(usr, "If you ghost, log out or close your client now, your character will shortly be permanently removed from the round.")
time_entered = world.time
diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm
index 2ed722e1296..c50503f3c5f 100644
--- a/code/game/machinery/deployable.dm
+++ b/code/game/machinery/deployable.dm
@@ -86,7 +86,7 @@ for reference:
return //hitting things with the wrong type of stack usually doesn't produce messages, and probably doesn't need to.
if(health < maxhealth)
if(D.get_amount() < 1)
- user << "You need one sheet of [material.display_name] to repair \the [src]."
+ to_chat(user, "You need one sheet of [material.display_name] to repair \the [src].")
return
visible_message("[user] begins to repair \the [src].")
if(do_after(user,20) && health < maxhealth)
@@ -168,10 +168,10 @@ for reference:
anchored = !anchored
icon_state = "barrier[locked]"
if((locked == 1.0) && (emagged < 2.0))
- user << "Barrier lock toggled on."
+ to_chat(user, "Barrier lock toggled on.")
return
else if((locked == 0.0) && (emagged < 2.0))
- user << "Barrier lock toggled off."
+ to_chat(user, "Barrier lock toggled off.")
return
else
var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
@@ -180,7 +180,7 @@ for reference:
visible_message("BZZzZZzZZzZT")
return
return
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(health < maxhealth)
health = maxhealth
emagged = 0
@@ -252,7 +252,7 @@ for reference:
emagged = 1
req_access.Cut()
req_one_access.Cut()
- user << "You break the ID authentication lock on \the [src]."
+ to_chat(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()
@@ -260,7 +260,7 @@ for reference:
return 1
else if(emagged == 1)
emagged = 2
- user << "You short out the anchoring mechanism on \the [src]."
+ to_chat(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/door_control.dm b/code/game/machinery/door_control.dm
index 127eda61351..0a54b148d1b 100644
--- a/code/game/machinery/door_control.dm
+++ b/code/game/machinery/door_control.dm
@@ -21,7 +21,7 @@
if(wires & 2)
return attack_hand(user)
else
- user << "Error, no route to host."
+ to_chat(user, "Error, no route to host.")
/obj/machinery/button/remote/attackby(obj/item/weapon/W, mob/user as mob)
return attack_hand(user)
@@ -42,7 +42,7 @@
return
if(!allowed(user) && (wires & 1))
- user << "Access Denied"
+ to_chat(user, "Access Denied")
flick("doorctrl-denied",src)
return
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index 23c5c9dcd88..021edb48ca9 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -870,7 +870,7 @@ About the new airlock wires panel:
if(istype(C, /mob/living))
..()
return
- if(!repairing && (istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density))
+ if(!repairing && istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density)
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0,user))
if(!src.welded)
@@ -882,7 +882,7 @@ About the new airlock wires panel:
return
else
return
- else if(istype(C, /obj/item/weapon/screwdriver))
+ else if(C.is_screwdriver())
if (src.p_open)
if (stat & BROKEN)
to_chat(usr,"The panel is broken and cannot be closed.")
@@ -893,7 +893,7 @@ About the new airlock wires panel:
src.p_open = 1
playsound(src, C.usesound, 50, 1)
src.update_icon()
- else if(istype(C, /obj/item/weapon/wirecutters))
+ else if(C.is_wirecutter())
return src.attack_hand(user)
else if(istype(C, /obj/item/device/multitool))
return src.attack_hand(user)
@@ -902,7 +902,7 @@ About the new airlock wires panel:
else if(istype(C, /obj/item/weapon/pai_cable)) // -- TLE
var/obj/item/weapon/pai_cable/cable = C
cable.plugin(src, user)
- else if(!repairing && istype(C, /obj/item/weapon/crowbar))
+ else if(!repairing && C.is_crowbar())
if(can_remove_electronics())
playsound(src, C.usesound, 75, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to remove electronics from the airlock assembly.")
diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm
index 58ce8b282c6..f4926c2aa84 100644
--- a/code/game/machinery/doors/blast_door.dm
+++ b/code/game/machinery/doors/blast_door.dm
@@ -125,7 +125,7 @@
if(istype(C,/obj/item/weapon/material/twohanded/fireaxe)) // Fireaxes need to be in both hands to pry.
var/obj/item/weapon/material/twohanded/fireaxe/F = C
if(!F.wielded)
- user << "You need to be wielding \the [F] to do that."
+ to_chat(user, "You need to be wielding \the [F] to do that.")
return
// If we're at this point, it's a fireaxe in both hands or something else that doesn't care for twohanding.
@@ -133,7 +133,7 @@
force_toggle(1, user)
else
- usr << "[src]'s motors resist your effort."
+ to_chat(user, "[src]'s motors resist your effort.")
return
@@ -153,19 +153,19 @@
else if(istype(C, /obj/item/stack/material) && C.get_material_name() == "plasteel") // Repairing.
var/amt = Ceiling((maxhealth - health)/150)
if(!amt)
- usr << "\The [src] is already fully repaired."
+ to_chat(user, "\The [src] is already fully repaired.")
return
var/obj/item/stack/P = C
if(P.amount < amt)
- usr << "You don't have enough sheets to repair this! You need at least [amt] sheets."
+ to_chat(user, "You don't have enough sheets to repair this! You need at least [amt] sheets.")
return
- usr << "You begin repairing [src]..."
+ to_chat(user, "You begin repairing [src]...")
if(do_after(usr, 30))
if(P.use(amt))
- usr << "You have repaired \The [src]"
+ to_chat(user, "You have repaired \The [src]")
src.repair()
else
- usr << "You don't have enough sheets to repair this! You need at least [amt] sheets."
+ to_chat(user, "You don't have enough sheets to repair this! You need at least [amt] sheets.")
else if(src.density && (user.a_intent == I_HURT)) //If we can't pry it open and it's not a weapon.... Eh, let's attack it anyway.
var/obj/item/weapon/W = C
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 984d5e023d4..a56ce2a880e 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -254,7 +254,7 @@
repairing = null
return
- if(repairing && istype(I, /obj/item/weapon/crowbar))
+ if(repairing && I.is_crowbar())
user << "You remove \the [repairing]."
playsound(src, I.usesound, 100, 1)
repairing.loc = user.loc
diff --git a/code/game/machinery/doors/firedoor.dm b/code/game/machinery/doors/firedoor.dm
index 504d65c3065..fb7609ee05b 100644
--- a/code/game/machinery/doors/firedoor.dm
+++ b/code/game/machinery/doors/firedoor.dm
@@ -4,8 +4,8 @@
#define FIREDOOR_MIN_TEMP 0
// Bitflags
-#define FIREDOOR_ALERT_HOT 1
-#define FIREDOOR_ALERT_COLD 2
+#define FIREDOOR_ALERT_HOT 1
+#define FIREDOOR_ALERT_COLD 2
// Not used #define FIREDOOR_ALERT_LOWPRESS 4
/obj/machinery/door/firedoor
@@ -83,9 +83,9 @@
return
if(pdiff >= FIREDOOR_MAX_PRESSURE_DIFF)
- user << "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!"
+ to_chat(user, "WARNING: Current pressure differential is [pdiff]kPa! Opening door may result in injury!")
- user << "Sensor readings:"
+ to_chat(user, "Sensor readings:")
for(var/index = 1; index <= tile_info.len; index++)
var/o = " "
switch(index)
@@ -99,7 +99,7 @@
o += "WEST: "
if(tile_info[index] == null)
o += "DATA UNAVAILABLE"
- user << o
+ to_chat(user, o)
continue
var/celsius = convert_k2c(tile_info[index][1])
var/pressure = tile_info[index][2]
@@ -107,14 +107,14 @@
o += "[celsius]°C "
o += ""
o += "[pressure]kPa"
- user << o
+ to_chat(user, o)
if(islist(users_to_open) && users_to_open.len)
var/users_to_open_string = users_to_open[1]
if(users_to_open.len >= 2)
for(var/i = 2 to users_to_open.len)
users_to_open_string += ", [users_to_open[i]]"
- user << "These people have opened \the [src] during an alert: [users_to_open_string]."
+ to_chat(user, "These people have opened \the [src] during an alert: [users_to_open_string].")
/obj/machinery/door/firedoor/Bumped(atom/AM)
if(p_open || operating)
@@ -142,7 +142,7 @@
return
if(blocked)
- user << "\The [src] is welded solid!"
+ to_chat(user, "\The [src] is welded solid!")
return
var/alarmed = lockdown
@@ -154,15 +154,15 @@
"\The [src]", "Yes, [density ? "open" : "close"]", "No")
if(answer == "No")
return
- if(user.incapacitated() || (get_dist(src, user) > 1 && !issilicon(user)))
- user << "Sorry, you must remain able bodied and close to \the [src] in order to use it."
+ if(user.incapacitated() || (get_dist(src, user) > 1 && !issilicon(user)))
+ to_chat(user, "Sorry, you must remain able bodied and close to \the [src] in order to use it.")
return
if(density && (stat & (BROKEN|NOPOWER))) //can still close without power
- user << "\The [src] is not functioning, you'll have to force it open manually."
+ to_chat(user, "\The [src] is not functioning, you'll have to force it open manually.")
return
if(alarmed && density && lockdown && !allowed(user))
- user << "Access denied. Please wait for authorities to arrive, or for the alert to clear."
+ to_chat(user, "Access denied. Please wait for authorities to arrive, or for the alert to clear.")
return
else
user.visible_message("\The [src] [density ? "open" : "close"]s for \the [user].",\
@@ -245,7 +245,7 @@
return//Already doing something.
if(istype(C, /obj/item/weapon/weldingtool) && !repairing)
if(prying)
- to_chat(user,"Someone's busy prying that [density ? "open" : "closed"]!")
+ to_chat(user, "Someone's busy prying that [density ? "open" : "closed"]!")
var/obj/item/weapon/weldingtool/W = C
if(W.remove_fuel(0, user))
blocked = !blocked
@@ -256,7 +256,7 @@
update_icon()
return
- if(density && istype(C, /obj/item/weapon/screwdriver))
+ if(density && C.is_screwdriver())
hatch_open = !hatch_open
playsound(src, C.usesound, 50, 1)
user.visible_message("[user] has [hatch_open ? "opened" : "closed"] \the [src] maintenance hatch.",
@@ -264,9 +264,9 @@
update_icon()
return
- if(blocked && istype(C, /obj/item/weapon/crowbar) && !repairing)
+ if(blocked && C.is_crowbar() && !repairing)
if(!hatch_open)
- user << "You must open the maintenance hatch first!"
+ to_chat(user, "You must open the maintenance hatch first!")
else
user.visible_message("[user] is removing the electronics from \the [src].",
"You start to remove the electronics from [src].")
@@ -290,14 +290,14 @@
return
if(blocked)
- user << "\The [src] is welded shut!"
+ to_chat(user, "\The [src] is welded shut!")
return
if(C.pry == 1)
if(operating)
return
- if(blocked && istype(C, /obj/item/weapon/crowbar))
+ if(blocked && C.is_crowbar())
user.visible_message("\The [user] pries at \the [src] with \a [C], but \the [src] is welded in place!",\
"You try to pry \the [src] [density ? "open" : "closed"], but it is welded in place!",\
"You hear someone struggle and metal straining.")
@@ -309,7 +309,7 @@
return
if(prying)
- to_chat(user,"Someone's already prying that [density ? "open" : "closed"].")
+ to_chat(user, "Someone's already prying that [density ? "open" : "closed"].")
return
user.visible_message("\The [user] starts to force \the [src] [density ? "open" : "closed"] with \a [C]!",\
@@ -319,7 +319,7 @@
update_icon()
playsound(src, C.usesound, 100, 1)
if(do_after(user,30 * C.toolspeed))
- if(istype(C, /obj/item/weapon/crowbar))
+ if(C.is_crowbar())
if(stat & (BROKEN|NOPOWER) || !density)
user.visible_message("\The [user] forces \the [src] [density ? "open" : "closed"] with \a [C]!",\
"You force \the [src] [density ? "open" : "closed"] with \the [C]!",\
@@ -504,7 +504,7 @@
/obj/machinery/door/firedoor/glass
name = "\improper Emergency Glass Shutter"
- desc = "Emergency air-tight shutter, capable of sealing off breached areas. This one has a resilient glass window, allowing you to see the danger."
+ desc = "Emergency air-tight shutter, capable of sealing off breached areas. This one has a resilient glass window, allowing you to see the danger."
icon = 'icons/obj/doors/DoorHazardGlass.dmi'
icon_state = "door_open"
glass = 1
diff --git a/code/game/machinery/doors/firedoor_assembly.dm b/code/game/machinery/doors/firedoor_assembly.dm
index f30c2e6146d..cebafdbb40b 100644
--- a/code/game/machinery/doors/firedoor_assembly.dm
+++ b/code/game/machinery/doors/firedoor_assembly.dm
@@ -26,7 +26,7 @@ obj/structure/firedoor_assembly/attackby(obj/item/C, mob/user as mob)
wired = 1
user << "You wire \the [src]."
- else if(istype(C, /obj/item/weapon/wirecutters) && wired )
+ else if(C.is_wirecutter() && wired )
playsound(src.loc, C.usesound, 100, 1)
user.visible_message("[user] cuts the wires from \the [src].", "You start to cut the wires from \the [src].")
@@ -46,7 +46,7 @@ obj/structure/firedoor_assembly/attackby(obj/item/C, mob/user as mob)
qdel(src)
else
user << "You must secure \the [src] first!"
- else if(istype(C, /obj/item/weapon/wrench))
+ else if(C.is_wrench())
anchored = !anchored
playsound(src.loc, C.usesound, 50, 1)
user.visible_message("[user] has [anchored ? "" : "un" ]secured \the [src]!",
diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm
index d25473e709f..b2afaaf6aea 100644
--- a/code/game/machinery/doors/windowdoor.dm
+++ b/code/game/machinery/doors/windowdoor.dm
@@ -207,7 +207,7 @@
return 1
//If it's opened/emagged, crowbar can pry it out of its frame.
- if (!density && istype(I, /obj/item/weapon/crowbar))
+ if (!density && I.is_crowbar())
playsound(src, I.usesound, 50, 1)
user.visible_message("[user] begins prying the windoor out of the frame.", "You start to pry the windoor out of the frame.")
if (do_after(user,40 * I.toolspeed))
@@ -268,8 +268,6 @@
return
-
-
/obj/machinery/door/window/brigdoor
name = "secure door"
icon = 'icons/obj/doors/windoor.dmi'
@@ -284,7 +282,6 @@
new /obj/item/stack/rods(src.loc, 2)
..()
-
/obj/machinery/door/window/northleft
dir = NORTH
diff --git a/code/game/machinery/exonet_node.dm b/code/game/machinery/exonet_node.dm
index 87eba963240..27a01c0682e 100644
--- a/code/game/machinery/exonet_node.dm
+++ b/code/game/machinery/exonet_node.dm
@@ -88,9 +88,9 @@
// Parameters: 2 (I - the item being whacked against the machine, user - the person doing the whacking)
// Description: Handles deconstruction.
/obj/machinery/exonet_node/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
default_deconstruction_screwdriver(user, I)
- else if(istype(I, /obj/item/weapon/crowbar))
+ else if(I.is_crowbar())
default_deconstruction_crowbar(user, I)
else
..()
diff --git a/code/game/machinery/flasher.dm b/code/game/machinery/flasher.dm
index 18844dcd735..169bc8c6d7c 100644
--- a/code/game/machinery/flasher.dm
+++ b/code/game/machinery/flasher.dm
@@ -35,7 +35,7 @@
//Don't want to render prison breaks impossible
/obj/machinery/flasher/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
add_fingerprint(user)
disable = !disable
if(disable)
@@ -102,7 +102,7 @@
flash()
/obj/machinery/flasher/portable/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
add_fingerprint(user)
anchored = !anchored
diff --git a/code/game/machinery/floodlight.dm b/code/game/machinery/floodlight.dm
index 88b36f6b5c1..729d99f4199 100644
--- a/code/game/machinery/floodlight.dm
+++ b/code/game/machinery/floodlight.dm
@@ -65,7 +65,7 @@
turn_off(1)
else
if(!turn_on(1))
- user << "You try to turn on \the [src] but it does not work."
+ to_chat(user, "You try to turn on \the [src] but it does not work.")
/obj/machinery/floodlight/attack_hand(mob/user as mob)
if(open && cell)
@@ -82,7 +82,7 @@
cell = null
on = 0
set_light(0)
- user << "You remove the power cell"
+ to_chat(user, "You remove the power cell")
update_icon()
return
@@ -90,38 +90,38 @@
turn_off(1)
else
if(!turn_on(1))
- user << "You try to turn on \the [src] but it does not work."
+ to_chat(user, "You try to turn on \the [src] but it does not work.")
update_icon()
/obj/machinery/floodlight/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(!open)
if(unlocked)
unlocked = 0
- user << "You screw the battery panel in place."
+ to_chat(user, "You screw the battery panel in place.")
else
unlocked = 1
- user << "You unscrew the battery panel."
+ to_chat(user, "You unscrew the battery panel.")
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
if(unlocked)
if(open)
open = 0
overlays = null
- user << "You crowbar the battery panel in place."
+ to_chat(user, "You crowbar the battery panel in place.")
else
if(unlocked)
open = 1
- user << "You remove the battery panel."
+ to_chat(user, "You remove the battery panel.")
if(istype(W, /obj/item/weapon/cell))
if(open)
if(cell)
- user << "There is a power cell already installed."
+ to_chat(user, "There is a power cell already installed.")
else
user.drop_item()
W.loc = src
cell = W
- user << "You insert the power cell."
+ to_chat(user, "You insert the power cell.")
update_icon()
diff --git a/code/game/machinery/floor_light.dm b/code/game/machinery/floor_light.dm
index 1d0b63b0e13..f02d3c28558 100644
--- a/code/game/machinery/floor_light.dm
+++ b/code/game/machinery/floor_light.dm
@@ -23,13 +23,13 @@ var/list/floor_light_cache = list()
anchored = 1
/obj/machinery/floor_light/attackby(var/obj/item/W, var/mob/user)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
anchored = !anchored
visible_message("\The [user] has [anchored ? "attached" : "detached"] \the [src].")
else if(istype(W, /obj/item/weapon/weldingtool) && (damaged || (stat & BROKEN)))
var/obj/item/weapon/weldingtool/WT = W
if(!WT.remove_fuel(0, user))
- user << "\The [src] must be on to complete this task."
+ to_chat(user, "\The [src] must be on to complete this task.")
return
playsound(src.loc, WT.usesound, 50, 1)
if(!do_after(user, 20 * WT.toolspeed))
@@ -60,15 +60,15 @@ var/list/floor_light_cache = list()
else
if(!anchored)
- user << "\The [src] must be screwed down first."
+ to_chat(user, "\The [src] must be screwed down first.")
return
if(stat & BROKEN)
- user << "\The [src] is too damaged to be functional."
+ to_chat(user, "\The [src] is too damaged to be functional.")
return
if(stat & NOPOWER)
- user << "\The [src] is unpowered."
+ to_chat(user, "\The [src] is unpowered.")
return
on = !on
diff --git a/code/game/machinery/floorlayer.dm b/code/game/machinery/floorlayer.dm
index 1cbccc195ca..94f61981ea8 100644
--- a/code/game/machinery/floorlayer.dm
+++ b/code/game/machinery/floorlayer.dm
@@ -34,7 +34,7 @@
return
/obj/machinery/floorlayer/attackby(var/obj/item/W as obj, var/mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
var/m = input("Choose work mode", "Mode") as null|anything in mode
mode[m] = !mode[m]
var/O = mode[m]
@@ -42,23 +42,23 @@
return
if(istype(W, /obj/item/stack/tile))
- user << "\The [W] successfully loaded."
+ to_chat(user, "\The [W] successfully loaded.")
user.drop_item(T)
TakeTile(T)
return
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
if(!length(contents))
- user << "\The [src] is empty."
+ to_chat(user, "\The [src] is empty.")
else
var/obj/item/stack/tile/E = input("Choose remove tile type.", "Tiles") as null|anything in contents
if(E)
- user << "You remove the [E] from /the [src]."
+ to_chat(user, "You remove the [E] from /the [src].")
E.loc = src.loc
T = null
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
T = input("Choose tile type.", "Tiles") as null|anything in contents
return
..()
diff --git a/code/game/machinery/frame.dm b/code/game/machinery/frame.dm
index f1f2ec08349..2c16d3771e5 100644
--- a/code/game/machinery/frame.dm
+++ b/code/game/machinery/frame.dm
@@ -260,9 +260,9 @@
update_icon()
/obj/structure/frame/attackby(obj/item/P as obj, mob/user as mob)
- if(istype(P, /obj/item/weapon/wrench))
+ if(P.is_wrench())
if(state == FRAME_PLACED && !anchored)
- user << "You start to wrench the frame into place."
+ to_chat(user, "You start to wrench the frame into place.")
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
anchored = 1
@@ -270,14 +270,14 @@
state = FRAME_FASTENED
check_components()
update_desc()
- user << "You wrench the frame into place and set the outer cover."
+ to_chat(user, "You wrench the frame into place and set the outer cover.")
else
- user << "You wrench the frame into place."
+ to_chat(user, "You wrench the frame into place.")
else if(state == FRAME_PLACED && anchored)
playsound(src, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
- user << "You unfasten the frame."
+ to_chat(user, "You unfasten the frame.")
anchored = 0
else if(istype(P, /obj/item/weapon/weldingtool))
@@ -287,12 +287,12 @@
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user, 20 * P.toolspeed))
if(src && WT.isOn())
- user << "You deconstruct the frame."
+ to_chat(user, "You deconstruct the frame.")
new /obj/item/stack/material/steel(src.loc, frame_type.frame_size)
qdel(src)
return
else if(!WT.remove_fuel(0, user))
- user << "The welding tool must be on to complete this task."
+ to_chat(user, "The welding tool must be on to complete this task.")
return
else if(istype(P, /obj/item/weapon/circuitboard) && need_circuit && !circuit)
@@ -301,7 +301,7 @@
var/datum/frame/frame_types/board_type = B.board_type
if(board_type.name == frame_type.name)
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You place the circuit board inside the frame."
+ to_chat(user, "You place the circuit board inside the frame.")
circuit = P
user.drop_item()
P.loc = src
@@ -310,25 +310,25 @@
check_components()
update_desc()
else
- user << "This frame does not accept circuit boards of this type!"
+ to_chat(user, "This frame does not accept circuit boards of this type!")
return
- else if(istype(P, /obj/item/weapon/screwdriver))
+ else if(P.is_screwdriver())
if(state == FRAME_UNFASTENED)
if(need_circuit && circuit)
playsound(src, P.usesound, 50, 1)
- user << "You screw the circuit board into place."
+ to_chat(user, "You screw the circuit board into place.")
state = FRAME_FASTENED
else if(state == FRAME_FASTENED)
if(need_circuit && circuit)
playsound(src, P.usesound, 50, 1)
- user << "You unfasten the circuit board."
+ to_chat(user, "You unfasten the circuit board.")
state = FRAME_UNFASTENED
else if(!need_circuit && circuit)
playsound(src, P.usesound, 50, 1)
- user << "You unfasten the outer cover."
+ to_chat(user, "You unfasten the outer cover.")
state = FRAME_PLACED
else if(state == FRAME_WIRED)
@@ -370,7 +370,7 @@
else if(frame_type.frame_class == FRAME_CLASS_ALARM)
playsound(src, P.usesound, 50, 1)
- user << "You fasten the cover."
+ to_chat(user, "You fasten the cover.")
var/obj/machinery/B = new circuit.build_path(src.loc)
B.pixel_x = pixel_x
B.pixel_y = pixel_y
@@ -384,7 +384,7 @@
else if(state == FRAME_PANELED)
if(frame_type.frame_class == FRAME_CLASS_COMPUTER)
playsound(src, P.usesound, 50, 1)
- user << "You connect the monitor."
+ to_chat(user, "You connect the monitor.")
var/obj/machinery/B = new circuit.build_path(src.loc)
B.pixel_x = pixel_x
B.pixel_y = pixel_y
@@ -397,7 +397,7 @@
else if(frame_type.frame_class == FRAME_CLASS_DISPLAY)
playsound(src, P.usesound, 50, 1)
- user << "You connect the monitor."
+ to_chat(user, "You connect the monitor.")
var/obj/machinery/B = new circuit.build_path(src.loc)
B.pixel_x = pixel_x
B.pixel_y = pixel_y
@@ -408,11 +408,11 @@
qdel(src)
return
- else if(istype(P, /obj/item/weapon/crowbar))
+ else if(P.is_crowbar())
if(state == FRAME_UNFASTENED)
if(need_circuit && circuit)
playsound(src, P.usesound, 50, 1)
- user << "You remove the circuit board."
+ to_chat(user, "You remove the circuit board.")
state = FRAME_PLACED
circuit.forceMove(src.loc)
circuit = null
@@ -423,25 +423,25 @@
if(frame_type.frame_class == FRAME_CLASS_MACHINE)
playsound(src, P.usesound, 50, 1)
if(components.len == 0)
- user << "There are no components to remove."
+ to_chat(user, "There are no components to remove.")
else
- user << "You remove the components."
+ to_chat(user, "You remove the components.")
for(var/obj/item/weapon/W in components)
W.forceMove(src.loc)
check_components()
update_desc()
- user << desc
+ to_chat(user, desc)
else if(state == FRAME_PANELED)
if(frame_type.frame_class == FRAME_CLASS_COMPUTER)
playsound(src, P.usesound, 50, 1)
- user << "You remove the glass panel."
+ to_chat(user, "You remove the glass panel.")
state = FRAME_WIRED
new /obj/item/stack/material/glass(src.loc, 2)
else if(frame_type.frame_class == FRAME_CLASS_DISPLAY)
playsound(src, P.usesound, 50, 1)
- user << "You remove the glass panel."
+ to_chat(user, "You remove the glass panel.")
state = FRAME_WIRED
new /obj/item/stack/material/glass(src.loc, 2)
@@ -449,16 +449,16 @@
if(state == FRAME_FASTENED)
var/obj/item/stack/cable_coil/C = P
if(C.get_amount() < 5)
- user << "You need five coils of wire to add them to the frame."
+ to_chat(user, "You need five coils of wire to add them to the frame.")
return
- user << "You start to add cables to the frame."
+ to_chat(user, "You start to add cables to the frame.")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20) && state == FRAME_FASTENED)
if(C.use(5))
- user << "You add cables to the frame."
+ to_chat(user, "You add cables to the frame.")
state = FRAME_WIRED
if(frame_type.frame_class == FRAME_CLASS_MACHINE)
- user << desc
+ to_chat(user, desc)
else if(state == FRAME_WIRED)
if(frame_type.frame_class == FRAME_CLASS_MACHINE)
for(var/I in req_components)
@@ -483,31 +483,31 @@
req_components[I]--
update_desc()
break
- user << desc
+ to_chat(user, desc)
- else if(istype(P, /obj/item/weapon/wirecutters))
+ else if(P.is_wirecutter())
if(state == FRAME_WIRED)
if(frame_type.frame_class == FRAME_CLASS_COMPUTER)
playsound(src, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
state = FRAME_FASTENED
new /obj/item/stack/cable_coil(src.loc, 5)
else if(frame_type.frame_class == FRAME_CLASS_DISPLAY)
playsound(src, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
state = FRAME_FASTENED
new /obj/item/stack/cable_coil(src.loc, 5)
else if(frame_type.frame_class == FRAME_CLASS_ALARM)
playsound(src, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
state = FRAME_FASTENED
new /obj/item/stack/cable_coil(src.loc, 5)
else if(frame_type.frame_class == FRAME_CLASS_MACHINE)
playsound(src, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
state = FRAME_FASTENED
new /obj/item/stack/cable_coil(src.loc, 5)
@@ -516,25 +516,25 @@
if(frame_type.frame_class == FRAME_CLASS_COMPUTER)
var/obj/item/stack/G = P
if(G.get_amount() < 2)
- user << "You need two sheets of glass to put in the glass panel."
+ to_chat(user, "You need two sheets of glass to put in the glass panel.")
return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You start to put in the glass panel."
+ to_chat(user, "You start to put in the glass panel.")
if(do_after(user, 20) && state == FRAME_WIRED)
if(G.use(2))
- user << "You put in the glass panel."
+ to_chat(user, "You put in the glass panel.")
state = FRAME_PANELED
else if(frame_type.frame_class == FRAME_CLASS_DISPLAY)
var/obj/item/stack/G = P
if(G.get_amount() < 2)
- user << "You need two sheets of glass to put in the glass panel."
+ to_chat(user, "You need two sheets of glass to put in the glass panel.")
return
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
- user << "You start to put in the glass panel."
+ to_chat(user, "You start to put in the glass panel.")
if(do_after(user, 20) && state == FRAME_WIRED)
if(G.use(2))
- user << "You put in the glass panel."
+ to_chat(user, "You put in the glass panel.")
state = FRAME_PANELED
else if(istype(P, /obj/item))
@@ -562,9 +562,9 @@
req_components[I]--
update_desc()
break
- user << desc
+ to_chat(user, desc)
if(P && P.loc != src && !istype(P, /obj/item/stack/material))
- user << "You cannot add that component to the machine!"
+ to_chat(user, "You cannot add that component to the machine!")
return
update_icon()
@@ -578,12 +578,12 @@
return 0
if(anchored)
- usr << "It is fastened to the floor therefore you can't rotate it!"
+ to_chat(usr, "It is fastened to the floor therefore you can't rotate it!")
return 0
set_dir(turn(dir, 90))
- usr << "You rotate the [src] to face [dir2text(dir)]!"
+ to_chat(usr, "You rotate the [src] to face [dir2text(dir)]!")
return
@@ -597,11 +597,11 @@
return 0
if(anchored)
- usr << "It is fastened to the floor therefore you can't rotate it!"
+ to_chat(usr, "It is fastened to the floor therefore you can't rotate it!")
return 0
set_dir(turn(dir, 270))
- usr << "You rotate the [src] to face [dir2text(dir)]!"
+ to_chat(usr, "You rotate the [src] to face [dir2text(dir)]!")
return
\ No newline at end of file
diff --git a/code/game/machinery/igniter.dm b/code/game/machinery/igniter.dm
index 1e67fb8b4fd..5cb521d4230 100755
--- a/code/game/machinery/igniter.dm
+++ b/code/game/machinery/igniter.dm
@@ -71,7 +71,7 @@
// sd_SetLuminosity(0)
/obj/machinery/sparker/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
add_fingerprint(user)
disable = !disable
playsound(src, W.usesound, 50, 1)
diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm
index 306a098638b..36ec27f4ac7 100644
--- a/code/game/machinery/iv_drip.dm
+++ b/code/game/machinery/iv_drip.dm
@@ -55,21 +55,21 @@
/obj/machinery/iv_drip/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W, /obj/item/weapon/reagent_containers))
if(!isnull(beaker))
- user << "There is already a reagent container loaded!"
+ to_chat(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]."
+ to_chat(user, "You attach \the [W] to \the [src].")
update_icon()
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
playsound(src, W.usesound, 50, 1)
- user << "You start to dismantle the IV drip."
+ to_chat(user, "You start to dismantle the IV drip.")
if(do_after(user, 15))
- user << "You dismantle the IV drip."
+ to_chat(user, "You dismantle the IV drip.")
var/obj/item/stack/rods/A = new /obj/item/stack/rods(src.loc)
A.amount = 6
if(beaker)
@@ -110,12 +110,14 @@
amount = min(amount, 4)
// If the beaker is full, ping
if(amount == 0)
- if(prob(5)) visible_message("\The [src] pings.")
+ if(prob(5))
+ visible_message("\The [src] pings.")
return
var/mob/living/carbon/human/T = attached
- if(!istype(T)) return
+ if(!istype(T))
+ return
if(!T.dna)
return
if(NOCLONE in T.mutations)
@@ -152,30 +154,31 @@
set src in view(1)
if(!istype(usr, /mob/living))
- usr << "You can't do that."
+ to_chat(usr, "You can't do that.")
return
if(usr.stat)
return
mode = !mode
- usr << "The IV drip is now [mode ? "injecting" : "taking blood"]."
+ to_chat(usr, "The IV drip is now [mode ? "injecting" : "taking blood"].")
/obj/machinery/iv_drip/examine(mob/user)
..(user)
- if(!(user in view(2)) && user != src.loc) return
+ if(!(user in view(2)) && user != src.loc)
+ return
- user << "The IV drip is [mode ? "injecting" : "taking blood"]."
+ to_chat(user, "The IV drip is [mode ? "injecting" : "taking blood"].")
if(beaker)
if(beaker.reagents && beaker.reagents.reagent_list.len)
- usr << "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid."
+ to_chat(user, "Attached is \a [beaker] with [beaker.reagents.total_volume] units of liquid.")
else
- usr << "Attached is an empty [beaker]."
+ to_chat(user, "Attached is an empty [beaker].")
else
- usr << "No chemicals are attached."
+ to_chat(user, "No chemicals are attached.")
- usr << "[attached ? attached : "No one"] is attached."
+ to_chat(user, "[attached ? attached : "No one"] is attached.")
/obj/machinery/iv_drip/CanPass(atom/movable/mover, turf/target, height = 0, air_group = 0)
if(height && istype(mover) && mover.checkpass(PASSTABLE)) //allow bullets, beams, thrown objects, mice, drones, and the like through.
diff --git a/code/game/machinery/jukebox.dm b/code/game/machinery/jukebox.dm
index 2117198ebd2..b16ebafa88f 100644
--- a/code/game/machinery/jukebox.dm
+++ b/code/game/machinery/jukebox.dm
@@ -76,11 +76,11 @@ datum/track/New(var/title_name, var/audio)
return
if(default_deconstruction_crowbar(user, W))
return
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
return wires.Interact(user)
if(istype(W, /obj/item/device/multitool))
return wires.Interact(user)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
if(playing)
StopPlaying()
user.visible_message("[user] has [anchored ? "un" : ""]secured \the [src].", "You [anchored ? "un" : ""]secure \the [src].")
@@ -123,11 +123,11 @@ datum/track/New(var/title_name, var/audio)
return
if(!anchored)
- usr << "You must secure \the [src] first."
+ to_chat(usr, "You must secure \the [src] first.")
return
if(stat & (NOPOWER|BROKEN))
- usr << "\The [src] doesn't appear to function."
+ to_chat(usr, "\The [src] doesn't appear to function.")
return
if(href_list["change_track"])
@@ -156,7 +156,7 @@ datum/track/New(var/title_name, var/audio)
spawn(15)
explode()
else if(current_track == null)
- usr << "No track selected."
+ to_chat(usr, "No track selected.")
else
StartPlaying()
@@ -164,7 +164,7 @@ datum/track/New(var/title_name, var/audio)
/obj/machinery/media/jukebox/interact(mob/user)
if(stat & (NOPOWER|BROKEN))
- usr << "\The [src] doesn't appear to function."
+ to_chat(usr, "\The [src] doesn't appear to function.")
return
ui_interact(user)
@@ -220,7 +220,7 @@ datum/track/New(var/title_name, var/audio)
return
if(default_deconstruction_crowbar(user, W))
return
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
if(playing)
StopPlaying()
user.visible_message("[user] has [anchored ? "un" : ""]secured \the [src].", "You [anchored ? "un" : ""]secure \the [src].")
diff --git a/code/game/machinery/kitchen/microwave.dm b/code/game/machinery/kitchen/microwave.dm
index 3da253e6827..1ece9225b1b 100644
--- a/code/game/machinery/kitchen/microwave.dm
+++ b/code/game/machinery/kitchen/microwave.dm
@@ -61,7 +61,7 @@
/obj/machinery/microwave/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(src.broken > 0)
- if(src.broken == 2 && istype(O, /obj/item/weapon/screwdriver)) // If it's broken and they're using a screwdriver
+ if(src.broken == 2 && O.is_screwdriver()) // If it's broken and they're using a screwdriver
user.visible_message( \
"\The [user] starts to fix part of the microwave.", \
"You start to fix part of the microwave." \
@@ -73,7 +73,7 @@
"You have fixed part of the microwave." \
)
src.broken = 1 // Fix it a bit
- else if(src.broken == 1 && istype(O, /obj/item/weapon/wrench)) // If it's broken and they're doing the wrench
+ else if(src.broken == 1 && O.is_wrench()) // If it's broken and they're doing the wrench
user.visible_message( \
"\The [user] starts to fix part of the microwave.", \
"You start to fix part of the microwave." \
@@ -88,7 +88,7 @@
src.dirty = 0 // just to be sure
src.flags = OPENCONTAINER | NOREACT
else
- user << "It's broken!"
+ to_chat(user, "It's broken!")
return 1
else if(default_deconstruction_screwdriver(user, O))
return
@@ -113,11 +113,11 @@
src.icon_state = "mw"
src.flags = OPENCONTAINER | NOREACT
else //Otherwise bad luck!!
- user << "It's dirty!"
+ to_chat(user, "It's dirty!")
return 1
else if(is_type_in_list(O,acceptable_items))
if (contents.len>=(max_n_of_items + component_parts.len + 1)) //Adds component_parts to the maximum number of items. The 1 is from the circuit
- user << "This [src] is full of ingredients, you cannot put more."
+ to_chat(user, "This [src] is full of ingredients, you cannot put more.")
return 1
if(istype(O, /obj/item/stack) && O:get_amount() > 1) // This is bad, but I can't think of how to change it
var/obj/item/stack/S = O
@@ -143,15 +143,15 @@
return 1
for (var/datum/reagent/R in O.reagents.reagent_list)
if (!(R.id in acceptable_reagents))
- user << "Your [O] contains components unsuitable for cookery."
+ to_chat(user, "Your [O] contains components unsuitable for cookery.")
return 1
return
else if(istype(O,/obj/item/weapon/grab))
var/obj/item/weapon/grab/G = O
- user << "This is ridiculous. You can not fit \the [G.affecting] in this [src]."
+ to_chat(user, "This is ridiculous. You can not fit \the [G.affecting] in this [src].")
return 1
else
- user << "You have no idea what you can cook with this [O]."
+ to_chat(user, "You have no idea what you can cook with this [O].")
..()
src.updateUsrDialog()
@@ -225,7 +225,7 @@
Eject ingredients!
\
"}
- user << browse("Microwave Controls[dat]", "window=microwave")
+ to_chat(user, browse("Microwave Controls[dat]", "window=microwave"))
onclose(user, "microwave")
return
diff --git a/code/game/machinery/kitchen/smartfridge.dm b/code/game/machinery/kitchen/smartfridge.dm
index b2c3d21b689..a0ead02ef2f 100644
--- a/code/game/machinery/kitchen/smartfridge.dm
+++ b/code/game/machinery/kitchen/smartfridge.dm
@@ -208,7 +208,7 @@
********************/
/obj/machinery/smartfridge/attackby(var/obj/item/O as obj, var/mob/user as mob)
- if(istype(O, /obj/item/weapon/screwdriver))
+ if(O.is_screwdriver())
panel_open = !panel_open
user.visible_message("[user] [panel_open ? "opens" : "closes"] the maintenance panel of \the [src].", "You [panel_open ? "open" : "close"] the maintenance panel of \the [src].")
playsound(src, O.usesound, 50, 1)
@@ -221,13 +221,13 @@
if(wrenchable && default_unfasten_wrench(user, O, 20))
return
- if(istype(O, /obj/item/device/multitool)||istype(O, /obj/item/weapon/wirecutters))
+ if(istype(O, /obj/item/device/multitool) || O.is_wirecutter())
if(panel_open)
attack_hand(user)
return
if(stat & NOPOWER)
- user << "\The [src] is unpowered and useless."
+ to_chat(user, "\The [src] is unpowered and useless.")
return
if(accept_check(O))
@@ -246,27 +246,27 @@
if(plants_loaded)
user.visible_message("[user] loads \the [src] with \the [P].", "You load \the [src] with \the [P].")
if(P.contents.len > 0)
- user << "Some items are refused."
+ to_chat(user, "Some items are refused.")
else if(istype(O, /obj/item/weapon/gripper)) // Grippers. ~Mechoid.
var/obj/item/weapon/gripper/B = O //B, for Borg.
if(!B.wrapped)
- user << "\The [B] is not holding anything."
+ to_chat(user, "\The [B] is not holding anything.")
return
else
var/B_held = B.wrapped
- user << "You use \the [B] to put \the [B_held] into \the [src]."
+ to_chat(user, "You use \the [B] to put \the [B_held] into \the [src].")
return
else
- user << "\The [src] smartly refuses [O]."
+ to_chat(user, "\The [src] smartly refuses [O].")
return 1
/obj/machinery/smartfridge/secure/emag_act(var/remaining_charges, var/mob/user)
if(!emagged)
emagged = 1
locked = -1
- user << "You short out the product lock on [src]."
+ to_chat(user, "You short out the product lock on [src].")
return 1
/obj/machinery/smartfridge/proc/stock(obj/item/O)
@@ -378,9 +378,10 @@
*************************/
/obj/machinery/smartfridge/secure/Topic(href, href_list)
- if(stat & (NOPOWER|BROKEN)) return 0
+ if(stat & (NOPOWER|BROKEN))
+ return 0
if(usr.contents.Find(src) || (in_range(src, usr) && istype(loc, /turf)))
if(!allowed(usr) && !emagged && locked != -1 && href_list["vend"])
- usr << "Access denied."
+ to_chat(usr, "Access denied.")
return 0
return ..()
diff --git a/code/game/machinery/lightswitch.dm b/code/game/machinery/lightswitch.dm
index ab5fcbdf646..f4b3d6f8f05 100644
--- a/code/game/machinery/lightswitch.dm
+++ b/code/game/machinery/lightswitch.dm
@@ -46,7 +46,7 @@
/obj/machinery/light_switch/examine(mob/user)
if(..(user, 1))
- user << "A light switch. It is [on? "on" : "off"]."
+ to_chat(user, "A light switch. It is [on? "on" : "off"].")
/obj/machinery/light_switch/attack_hand(mob/user)
diff --git a/code/game/machinery/machinery.dm b/code/game/machinery/machinery.dm
index f68bc4cc8a0..c103f1f39e5 100644
--- a/code/game/machinery/machinery.dm
+++ b/code/game/machinery/machinery.dm
@@ -232,8 +232,8 @@ Class Procs:
return 1
if(user.lying || user.stat)
return 1
- if(!(istype(usr, /mob/living/carbon/human) || istype(usr, /mob/living/silicon)))
- usr << "You don't have the dexterity to do this!"
+ if(!(istype(user, /mob/living/carbon/human) || istype(user, /mob/living/silicon)))
+ to_chat(user, "You don't have the dexterity to do this!")
return 1
if(ishuman(user))
var/mob/living/carbon/human/H = user
@@ -241,7 +241,7 @@ Class Procs:
visible_message("[H] stares cluelessly at [src].")
return 1
else if(prob(H.getBrainLoss()))
- user << "You momentarily forget how to use [src]."
+ to_chat(user, "You momentarily forget how to use [src].")
return 1
add_fingerprint(user)
@@ -313,23 +313,23 @@ Class Procs:
component_parts -= A
component_parts += B
B.loc = null
- user << "[A.name] replaced with [B.name]."
+ to_chat(user, "[A.name] replaced with [B.name].")
break
update_icon()
RefreshParts()
else
- user << "Following parts detected in the machine:"
+ to_chat(user, "Following parts detected in the machine:")
for(var/var/obj/item/C in component_parts) //var/var/obj/item/C?
- user << " [C.name]"
+ to_chat(user, " [C.name]")
return 1
// Default behavior for wrenching down machines. Supports both delay and instant modes.
-/obj/machinery/proc/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/wrench/W, var/time = 0)
- if(!istype(W))
+/obj/machinery/proc/default_unfasten_wrench(var/mob/user, var/obj/item/W, var/time = 0)
+ if(!W.is_wrench())
return FALSE
if(panel_open)
return FALSE // Close panel first!
- playsound(loc, W.usesound, 50, 1)
+ playsound(loc, W.usesound, 50, 1)
var/actual_time = W.toolspeed * time
if(actual_time != 0)
user.visible_message( \
@@ -344,48 +344,48 @@ Class Procs:
update_icon()
return TRUE
-/obj/machinery/proc/default_deconstruction_crowbar(var/mob/user, var/obj/item/weapon/crowbar/C)
- if(!istype(C))
+/obj/machinery/proc/default_deconstruction_crowbar(var/mob/user, var/obj/item/C)
+ if(!C.is_crowbar())
return 0
if(!panel_open)
return 0
. = dismantle()
-/obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/obj/item/weapon/screwdriver/S)
- if(!istype(S))
+/obj/machinery/proc/default_deconstruction_screwdriver(var/mob/user, var/obj/item/S)
+ if(!S.is_screwdriver())
return 0
playsound(src, S.usesound, 50, 1)
panel_open = !panel_open
- user << "You [panel_open ? "open" : "close"] the maintenance hatch of [src]."
+ to_chat(user, "You [panel_open ? "open" : "close"] the maintenance hatch of [src].")
update_icon()
return 1
-/obj/machinery/proc/computer_deconstruction_screwdriver(var/mob/user, var/obj/item/weapon/screwdriver/S)
- if(!istype(S))
+/obj/machinery/proc/computer_deconstruction_screwdriver(var/mob/user, var/obj/item/S)
+ if(!S.is_screwdriver())
return 0
if(!circuit)
return 0
- user << "You start disconnecting the monitor."
+ to_chat(user, "You start disconnecting the monitor.")
playsound(src, S.usesound, 50, 1)
if(do_after(user, 20 * S.toolspeed))
if(stat & BROKEN)
- user << "The broken glass falls out."
+ to_chat(user, "The broken glass falls out.")
new /obj/item/weapon/material/shard(src.loc)
else
- user << "You disconnect the monitor."
+ to_chat(user, "You disconnect the monitor.")
. = dismantle()
-/obj/machinery/proc/alarm_deconstruction_screwdriver(var/mob/user, var/obj/item/weapon/screwdriver/S)
- if(!istype(S))
+/obj/machinery/proc/alarm_deconstruction_screwdriver(var/mob/user, var/obj/item/S)
+ if(!S.is_screwdriver())
return 0
playsound(src, S.usesound, 50, 1)
panel_open = !panel_open
- user << "The wires have been [panel_open ? "exposed" : "unexposed"]"
+ to_chat(user, "The wires have been [panel_open ? "exposed" : "unexposed"]")
update_icon()
return 1
-/obj/machinery/proc/alarm_deconstruction_wirecutters(var/mob/user, var/obj/item/weapon/wirecutters/W)
- if(!istype(W))
+/obj/machinery/proc/alarm_deconstruction_wirecutters(var/mob/user, var/obj/item/W)
+ if(!W.is_wirecutter())
return 0
if(!panel_open)
return 0
diff --git a/code/game/machinery/mass_driver.dm b/code/game/machinery/mass_driver.dm
index 4d1affb3a0c..1d13a36c3a0 100644
--- a/code/game/machinery/mass_driver.dm
+++ b/code/game/machinery/mass_driver.dm
@@ -38,7 +38,7 @@
if(panel_open)
var/input = sanitize(input(usr, "What id would you like to give this conveyor?", "Multitool-Conveyor interface", id))
if(!input)
- usr << "No input found please hang up and try your call again."
+ to_chat(usr, "No input found please hang up and try your call again.")
return
id = input
return
@@ -55,7 +55,7 @@
O_limit++
if(O_limit >= 20)
for(var/mob/M in hearers(src, null))
- M << "The mass driver lets out a screech, it mustn't be able to handle any more items."
+ to_chat(M, "The mass driver lets out a screech, it mustn't be able to handle any more items.")
break
use_power(500)
spawn(0)
diff --git a/code/game/machinery/navbeacon.dm b/code/game/machinery/navbeacon.dm
index 7e472c8ecab..6d4453d1f22 100644
--- a/code/game/machinery/navbeacon.dm
+++ b/code/game/machinery/navbeacon.dm
@@ -72,7 +72,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
if(!T.is_plating())
return // prevent intraction when T-scanner revealed
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
open = !open
playsound(src, I.usesound, 50, 1)
user.visible_message("[user] [open ? "opens" : "closes"] the beacon's cover.", "You [open ? "open" : "close"] the beacon's cover.")
@@ -83,12 +83,12 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
if(open)
if(allowed(user))
locked = !locked
- user << "Controls are now [locked ? "locked." : "unlocked."]"
+ to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]")
else
- user << "Access denied."
+ to_chat(user, "Access denied.")
updateDialog()
else
- user << "You must open the cover first!"
+ to_chat(user, "You must open the cover first!")
return
/obj/machinery/navbeacon/attack_ai(var/mob/user)
@@ -107,7 +107,7 @@ var/global/list/navbeacons = list() // no I don't like putting this in, but it w
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."
+ to_chat(user, "The beacon's control cover is closed.")
return
diff --git a/code/game/machinery/nuclear_bomb.dm b/code/game/machinery/nuclear_bomb.dm
index 018cf75f531..53c4dcdd288 100644
--- a/code/game/machinery/nuclear_bomb.dm
+++ b/code/game/machinery/nuclear_bomb.dm
@@ -55,30 +55,30 @@ var/bomb_set
return
/obj/machinery/nuclearbomb/attackby(obj/item/weapon/O as obj, mob/user as mob)
- if(istype(O, /obj/item/weapon/screwdriver))
+ if(O.is_screwdriver())
playsound(src, O.usesound, 50, 1)
add_fingerprint(user)
if(auth)
if(opened == 0)
opened = 1
overlays += image(icon, "npanel_open")
- user << "You unscrew the control panel of [src]."
+ to_chat(user, "You unscrew the control panel of [src].")
else
opened = 0
overlays -= image(icon, "npanel_open")
- user << "You screw the control panel of [src] back on."
+ to_chat(user, "You screw the control panel of [src] back on.")
else
if(opened == 0)
- user << "The [src] emits a buzzing noise, the panel staying locked in."
+ to_chat(user, "The [src] emits a buzzing noise, the panel staying locked in.")
if(opened == 1)
opened = 0
overlays -= image(icon, "npanel_open")
- user << "You screw the control panel of [src] back on."
+ to_chat(user, "You screw the control panel of [src] back on.")
flick("nuclearbombc", src)
return
- if(istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/device/multitool))
+ if(O.is_wirecutter() || istype(O, /obj/item/device/multitool))
if(opened == 1)
nukehack_win(user)
return
@@ -99,7 +99,7 @@ var/bomb_set
var/obj/item/weapon/weldingtool/WT = O
if(!WT.isOn()) return
if(WT.get_fuel() < 5) // uses up 5 fuel.
- user << "You need more fuel to complete this task."
+ to_chat(user, "You need more fuel to complete this task.")
return
user.visible_message("[user] starts cutting loose the anchoring bolt covers on [src].", "You start cutting loose the anchoring bolt covers with [O]...")
@@ -111,7 +111,7 @@ var/bomb_set
return
if(1)
- if(istype(O,/obj/item/weapon/crowbar))
+ if(O.is_crowbar())
user.visible_message("[user] starts forcing open the bolt covers on [src].", "You start forcing open the anchoring bolt covers with [O]...")
playsound(src, O.usesound, 50, 1)
@@ -127,7 +127,7 @@ var/bomb_set
var/obj/item/weapon/weldingtool/WT = O
if(!WT.isOn()) return
if(WT.get_fuel() < 5) // uses up 5 fuel.
- user << "You need more fuel to complete this task."
+ to_chat(user, "You need more fuel to complete this task.")
return
user.visible_message("[user] starts cutting apart the anchoring system sealant on [src].", "You start cutting apart the anchoring system's sealant with [O]...")
@@ -139,7 +139,7 @@ var/bomb_set
return
if(3)
- if(istype(O,/obj/item/weapon/wrench))
+ if(O.is_wrench())
user.visible_message("[user] begins unwrenching the anchoring bolts on [src].", "You begin unwrenching the anchoring bolts...")
playsound(src, O.usesound, 50, 1)
@@ -150,7 +150,7 @@ var/bomb_set
return
if(4)
- if(istype(O,/obj/item/weapon/crowbar))
+ if(O.is_crowbar())
user.visible_message("[user] begins lifting [src] off of the anchors.", "You begin lifting the device off the anchors...")
playsound(src, O.usesound, 50, 1)
@@ -165,7 +165,7 @@ var/bomb_set
/obj/machinery/nuclearbomb/attack_hand(mob/user as mob)
if(extended)
if(!ishuman(user))
- usr << "You don't have the dexterity to do this!"
+ to_chat(user, "You don't have the dexterity to do this!")
return 1
user.set_machine(src)
@@ -219,14 +219,14 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
if(!usr.canmove || usr.stat || usr.restrained())
return
if(!ishuman(usr))
- usr << "You don't have the dexterity to do this!"
+ to_chat(usr, "You don't have the dexterity to do this!")
return 1
if(deployable)
- usr << "You close several panels to make [src] undeployable."
+ to_chat(usr, "You close several panels to make [src] undeployable.")
deployable = 0
else
- usr << "You adjust some panels to make [src] deployable."
+ to_chat(usr, "You adjust some panels to make [src] deployable.")
deployable = 1
return
@@ -240,10 +240,10 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
var/temp_wire = href_list["wire"]
if(href_list["act"] == "pulse")
if(!istype(usr.get_active_hand(), /obj/item/device/multitool))
- usr << "You need a multitool!"
+ to_chat(usr, "You need a multitool!")
else
if(wires[temp_wire])
- usr << "You can't pulse a cut wire."
+ to_chat(usr, "You can't pulse a cut wire.")
else
if(light_wire == temp_wire)
lighthack = !lighthack
@@ -262,8 +262,9 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
else
visible_message("The [src] emits a quiet whirling noise!")
if(href_list["act"] == "wire")
- if(!istype(usr.get_active_hand(), /obj/item/weapon/wirecutters))
- usr << "You need wirecutters!"
+ var/obj/item/I = usr.get_active_hand()
+ if(!I.is_wirecutter())
+ to_chat(usr, "You need wirecutters!")
else
wires[temp_wire] = !wires[temp_wire]
if(safety_wire == temp_wire)
@@ -314,7 +315,7 @@ obj/machinery/nuclearbomb/proc/nukehack_win(mob/user as mob)
if(timing == -1.0)
return
if(safety)
- usr << "The safety is still on."
+ to_chat(usr, "The safety is still on.")
return
timing = !(timing)
if(timing)
diff --git a/code/game/machinery/oxygen_pump.dm b/code/game/machinery/oxygen_pump.dm
index 36db3f83f3c..0980dc60ed8 100644
--- a/code/game/machinery/oxygen_pump.dm
+++ b/code/game/machinery/oxygen_pump.dm
@@ -128,7 +128,7 @@
return 1
/obj/machinery/oxygen_pump/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
stat ^= MAINT
user.visible_message("\The [user] [stat & MAINT ? "opens" : "closes"] \the [src].", "You [stat & MAINT ? "open" : "close"] \the [src].")
if(stat & MAINT)
diff --git a/code/game/machinery/pda_multicaster.dm b/code/game/machinery/pda_multicaster.dm
index fde455ae51a..3388de0c313 100644
--- a/code/game/machinery/pda_multicaster.dm
+++ b/code/game/machinery/pda_multicaster.dm
@@ -46,9 +46,9 @@
icon_state = "[initial(icon_state)]-p"
/obj/machinery/pda_multicaster/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
default_deconstruction_screwdriver(user, I)
- else if(istype(I, /obj/item/weapon/crowbar))
+ else if(I.is_crowbar())
default_deconstruction_crowbar(user, I)
else
..()
diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm
index ca09d3de58d..0482e2f242b 100644
--- a/code/game/machinery/pipe/construction.dm
+++ b/code/game/machinery/pipe/construction.dm
@@ -166,11 +166,11 @@ Buildable meters
return ..()
/obj/item/pipe/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if(iswrench(W))
+ if(W.is_wrench())
return wrench_act(user, W)
return ..()
-/obj/item/pipe/proc/wrench_act(var/mob/living/user, var/obj/item/weapon/wrench/W)
+/obj/item/pipe/proc/wrench_act(var/mob/living/user, var/obj/item/weapon/tool/wrench/W)
if(!isturf(loc))
return TRUE
@@ -255,11 +255,11 @@ Buildable meters
var/piping_layer = PIPING_LAYER_DEFAULT
/obj/item/pipe_meter/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if(iswrench(W))
+ if(W.is_wrench())
return wrench_act(user, W)
return ..()
-/obj/item/pipe_meter/proc/wrench_act(var/mob/living/user, var/obj/item/weapon/wrench/W)
+/obj/item/pipe_meter/proc/wrench_act(var/mob/living/user, var/obj/item/weapon/tool/wrench/W)
var/obj/machinery/atmospherics/pipe/pipe
for(var/obj/machinery/atmospherics/pipe/P in loc)
if(P.piping_layer == piping_layer)
diff --git a/code/game/machinery/pipe/pipe_dispenser.dm b/code/game/machinery/pipe/pipe_dispenser.dm
index 6675a5ca15c..d863e57b904 100644
--- a/code/game/machinery/pipe/pipe_dispenser.dm
+++ b/code/game/machinery/pipe/pipe_dispenser.dm
@@ -74,7 +74,7 @@
user.drop_item()
qdel(W)
return
- else if (istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if (unwrenched==0)
playsound(src, W.usesound, 50, 1)
user << "You begin to unfasten \the [src] from the floor..."
diff --git a/code/game/machinery/pipe/pipelayer.dm b/code/game/machinery/pipe/pipelayer.dm
index 65656929de2..b51fbd4cc0a 100644
--- a/code/game/machinery/pipe/pipelayer.dm
+++ b/code/game/machinery/pipe/pipelayer.dm
@@ -13,7 +13,7 @@
var/max_metal = 50 // Max capacity for internal metal storage
var/metal = 0 // Current amount in internal metal storage
var/pipe_cost = 0.25 // Cost in steel for each pipe.
- var/obj/item/weapon/wrench/W // Internal wrench used for wrenching down the pipes
+ var/obj/item/weapon/tool/wrench/W // Internal wrench used for wrenching down the pipes
var/list/Pipes = list(
"regular pipes" = /obj/machinery/atmospherics/pipe/simple,
"scrubbers pipes" = /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -57,7 +57,7 @@
return
if(panel_open)
if(metal < 1)
- user << "\The [src] is empty."
+ to_chat(user, "\The [src] is empty.")
return
var/answer = alert(user, "Do you want to eject all the metal in \the [src]?", , "Yes","No")
if(answer == "Yes")
@@ -66,7 +66,7 @@
"You remove [amount_ejected] sheet\s of [DEFAULT_WALL_MATERIAL] from \the [src].")
return
if(!metal && !on)
- user << "\The [src] doesn't work without metal."
+ to_chat(user, "\The [src] doesn't work without metal.")
return
on = !on
old_turf = get_turf(src)
@@ -81,33 +81,33 @@
return
if(default_part_replacement(user, W))
return
- if (!panel_open && iswrench(W))
+ if (!panel_open && W.is_wrench())
P_type_t = input("Choose pipe type", "Pipe type") as null|anything in Pipes
P_type = Pipes[P_type_t]
user.visible_message("[user] has set \the [src] to manufacture [P_type_t].", "You set \the [src] to manufacture [P_type_t].")
return
- if(!panel_open && iscrowbar(W))
+ if(!panel_open && W.is_crowbar())
a_dis = !a_dis
user.visible_message("[user] has [!a_dis?"de":""]activated auto-dismantling.", "You [!a_dis?"de":""]activate auto-dismantling.")
return
if(istype(W, /obj/item/pipe))
// NOTE - We must check for matter, otherwise the (free) pipe dispenser can be used to get infinite steel.
if(!W.matter || W.matter[DEFAULT_WALL_MATERIAL] < pipe_cost * SHEET_MATERIAL_AMOUNT)
- user << "\The [W] doesn't contain enough [DEFAULT_WALL_MATERIAL] to recycle."
+ to_chat(user, "\The [W] doesn't contain enough [DEFAULT_WALL_MATERIAL] to recycle.")
else if(metal + pipe_cost > max_metal)
- user << "\The [src] is full."
+ to_chat(user, "\The [src] is full.")
else
user.drop_from_inventory(W)
metal += pipe_cost
- usr << "You recycle \the [W]."
+ to_chat(user, "You recycle \the [W].")
qdel(W)
return
if(istype(W, /obj/item/stack/material) && W.get_material_name() == DEFAULT_WALL_MATERIAL)
var/result = load_metal(W)
if(isnull(result))
- user << "Unable to load [W] - no metal found."
+ to_chat(user, "Unable to load [W] - no metal found.")
else if(!result)
- user << "\The [src] is full."
+ to_chat(user, "\The [src] is full.")
else
user.visible_message("[user] has loaded metal into \the [src].", "You load metal into \the [src]")
return
@@ -116,7 +116,7 @@
/obj/machinery/pipelayer/examine(mob/user)
..()
- user << "\The [src] has [metal] sheet\s, is set to produce [P_type_t], and auto-dismantling is [!a_dis?"de":""]activated."
+ to_chat(user, "\The [src] has [metal] sheet\s, is set to produce [P_type_t], and auto-dismantling is [!a_dis?"de":""]activated.")
/obj/machinery/pipelayer/proc/reset()
on = 0
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 2b59a24bd1d..5ae3608271c 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -231,11 +231,11 @@ var/list/turret_icons
/obj/machinery/porta_turret/proc/isLocked(mob/user)
if(ailock && issilicon(user))
- user << "There seems to be a firewall preventing you from accessing this device."
+ to_chat(user, "There seems to be a firewall preventing you from accessing this device.")
return 1
if(locked && !issilicon(user))
- user << "Access denied."
+ to_chat(user, "Access denied.")
return 1
return 0
@@ -284,14 +284,14 @@ var/list/turret_icons
/obj/machinery/porta_turret/CanUseTopic(var/mob/user)
if(HasController())
- user << "Turrets can only be controlled using the assigned turret controller."
+ to_chat(user, "Turrets can only be controlled using the assigned turret controller.")
return STATUS_CLOSE
if(isLocked(user))
return STATUS_CLOSE
if(!anchored)
- usr << "\The [src] has to be secured first!"
+ to_chat(user, "\The [src] has to be secured first!")
return STATUS_CLOSE
return ..()
@@ -335,13 +335,13 @@ var/list/turret_icons
/obj/machinery/porta_turret/attackby(obj/item/I, mob/user)
if(stat & BROKEN)
- if(istype(I, /obj/item/weapon/crowbar))
+ if(I.is_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."
+ to_chat(user, "You begin prying the metal coverings off.")
if(do_after(user, 20))
if(can_salvage && prob(70))
- user << "You remove the turret and salvage some components."
+ to_chat(user, "You remove the turret and salvage some components.")
if(installation)
var/obj/item/weapon/gun/energy/Gun = new installation(loc)
Gun.power_supply.charge = gun_charge
@@ -351,18 +351,18 @@ var/list/turret_icons
if(prob(50))
new /obj/item/device/assembly/prox_sensor(loc)
else
- user << "You remove the turret but did not manage to salvage anything."
+ to_chat(user, "You remove the turret but did not manage to salvage anything.")
qdel(src) // qdel
- else if((istype(I, /obj/item/weapon/wrench)))
+ else if(I.is_wrench())
if(enabled || raised)
- user << "You cannot unsecure an active turret!"
+ to_chat(user, "You cannot unsecure an active turret!")
return
if(wrenching)
- user << "Someone is already [anchored ? "un" : ""]securing the turret!"
+ to_chat(user, "Someone is already [anchored ? "un" : ""]securing the turret!")
return
if(!anchored && isinspace())
- user << "Cannot secure turrets in space!"
+ to_chat(user, "Cannot secure turrets in space!")
return
user.visible_message(\
@@ -377,11 +377,11 @@ var/list/turret_icons
playsound(loc, I.usesound, 100, 1)
anchored = 1
update_icon()
- user << "You secure the exterior bolts on the turret."
+ to_chat(user, "You secure the exterior bolts on the turret.")
else if(anchored)
playsound(loc, I.usesound, 100, 1)
anchored = 0
- user << "You unsecure the exterior bolts on the turret."
+ to_chat(user, "You unsecure the exterior bolts on the turret.")
update_icon()
wrenching = 0
@@ -389,10 +389,10 @@ var/list/turret_icons
//Behavior lock/unlock mangement
if(allowed(user))
locked = !locked
- user << "Controls are now [locked ? "locked" : "unlocked"]."
+ to_chat(user, "Controls are now [locked ? "locked" : "unlocked"].")
updateUsrDialog()
else
- user << "Access denied."
+ to_chat(user, "Access denied.")
else
//if the turret was attacked with the intention of harming it:
@@ -422,7 +422,7 @@ var/list/turret_icons
if(!emagged)
//Emagging the turret makes it go bonkers and stun everyone. It also makes
//the turret shoot much, much faster.
- user << "You short out [src]'s threat assessment circuits."
+ to_chat(user, "You short out [src]'s threat assessment circuits.")
visible_message("[src] hums oddly...")
emagged = 1
iconholder = 1
@@ -777,16 +777,16 @@ var/list/turret_icons
//this is a bit unwieldy but self-explanatory
switch(build_step)
if(0) //first step
- if(istype(I, /obj/item/weapon/wrench) && !anchored)
+ if(I.is_wrench() && !anchored)
playsound(loc, I.usesound, 100, 1)
- user << "You secure the external bolts."
+ to_chat(user, "You secure the external bolts.")
anchored = 1
build_step = 1
return
- else if(istype(I, /obj/item/weapon/crowbar) && !anchored)
+ else if(I.is_crowbar() && !anchored)
playsound(loc, I.usesound, 75, 1)
- user << "You dismantle the turret construction."
+ to_chat(user, "You dismantle the turret construction.")
new /obj/item/stack/material/steel(loc, 5)
qdel(src)
return
@@ -795,24 +795,24 @@ var/list/turret_icons
if(istype(I, /obj/item/stack/material) && I.get_material_name() == DEFAULT_WALL_MATERIAL)
var/obj/item/stack/M = I
if(M.use(2))
- user << "You add some metal armor to the interior frame."
+ to_chat(user, "You add some metal armor to the interior frame.")
build_step = 2
icon_state = "turret_frame2"
else
- user << "You need two sheets of metal to continue construction."
+ to_chat(user, "You need two sheets of metal to continue construction.")
return
- else if(istype(I, /obj/item/weapon/wrench))
+ else if(I.is_wrench())
playsound(loc, I.usesound, 75, 1)
- user << "You unfasten the external bolts."
+ to_chat(user, "You unfasten the external bolts.")
anchored = 0
build_step = 0
return
if(2)
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
playsound(loc, I.usesound, 100, 1)
- user << "You bolt the metal armor into place."
+ to_chat(user, "You bolt the metal armor into place.")
build_step = 3
return
@@ -821,14 +821,14 @@ var/list/turret_icons
if(!WT.isOn())
return
if(WT.get_fuel() < 5) //uses up 5 fuel.
- user << "You need more fuel to complete this task."
+ to_chat(user, "You need more fuel to complete this task.")
return
playsound(loc, I.usesound, 50, 1)
if(do_after(user, 20 * I.toolspeed))
if(!src || !WT.remove_fuel(5, user)) return
build_step = 1
- user << "You remove the turret's interior metal armor."
+ to_chat(user, "You remove the turret's interior metal armor.")
new /obj/item/stack/material/steel(loc, 2)
return
@@ -839,20 +839,20 @@ var/list/turret_icons
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]"
+ to_chat(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
- user << "You add [I] to the turret."
+ to_chat(user, "You add [I] to the turret.")
target_type = /obj/machinery/porta_turret
build_step = 4
qdel(I) //delete the gun :(
return
- else if(istype(I, /obj/item/weapon/wrench))
+ else if(I.is_wrench())
playsound(loc, I.usesound, 100, 1)
- user << "You remove the turret's metal armor bolts."
+ to_chat(user, "You remove the turret's metal armor bolts.")
build_step = 2
return
@@ -860,19 +860,19 @@ var/list/turret_icons
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]"
+ to_chat(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."
+ to_chat(user, "You add the prox sensor to the turret.")
qdel(I)
return
//attack_hand() removes the gun
if(5)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
playsound(loc, I.usesound, 100, 1)
build_step = 6
- user << "You close the internal access hatch."
+ to_chat(user, "You close the internal access hatch.")
return
//attack_hand() removes the prox sensor
@@ -881,16 +881,16 @@ var/list/turret_icons
if(istype(I, /obj/item/stack/material) && I.get_material_name() == DEFAULT_WALL_MATERIAL)
var/obj/item/stack/M = I
if(M.use(2))
- user << "You add some metal armor to the exterior frame."
+ to_chat(user, "You add some metal armor to the exterior frame.")
build_step = 7
else
- user << "You need two sheets of metal to continue construction."
+ to_chat(user, "You need two sheets of metal to continue construction.")
return
- else if(istype(I, /obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
playsound(loc, I.usesound, 100, 1)
build_step = 5
- user << "You open the internal access hatch."
+ to_chat(user, "You open the internal access hatch.")
return
if(7)
@@ -898,14 +898,14 @@ var/list/turret_icons
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."
+ to_chat(user, "You need more fuel to complete this task.")
playsound(loc, WT.usesound, 50, 1)
if(do_after(user, 30 * WT.toolspeed))
if(!src || !WT.remove_fuel(5, user))
return
build_step = 8
- user << "You weld the turret's armor down."
+ to_chat(user, "You weld the turret's armor down.")
//The final step: create a full turret
var/obj/machinery/porta_turret/Turret = new target_type(loc)
@@ -917,9 +917,9 @@ var/list/turret_icons
qdel(src) // qdel
- else if(istype(I, /obj/item/weapon/crowbar))
+ else if(I.is_crowbar())
playsound(loc, I.usesound, 75, 1)
- user << "You pry off the turret's exterior armor."
+ to_chat(user, "You pry off the turret's exterior armor.")
new /obj/item/stack/material/steel(loc, 2)
build_step = 6
return
@@ -948,10 +948,10 @@ var/list/turret_icons
Gun.update_icon()
installation = null
gun_charge = 0
- user << "You remove [Gun] from the turret frame."
+ to_chat(user, "You remove [Gun] from the turret frame.")
if(5)
- user << "You remove the prox sensor from the turret frame."
+ to_chat(user, "You remove the prox sensor from the turret frame.")
new /obj/item/device/assembly/prox_sensor(loc)
build_step = 4
diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm
index b51edaf189c..ddd50a8f50a 100644
--- a/code/game/machinery/recharger.dm
+++ b/code/game/machinery/recharger.dm
@@ -52,7 +52,7 @@ obj/machinery/recharger
G.loc = src
charging = G
update_icon()
- else if(portable && istype(G, /obj/item/weapon/wrench))
+ else if(portable && G.is_wrench())
if(charging)
to_chat(user, "Remove [charging] first!")
return
diff --git a/code/game/machinery/rechargestation.dm b/code/game/machinery/rechargestation.dm
index 692e76bf5a4..f702f3cf254 100644
--- a/code/game/machinery/rechargestation.dm
+++ b/code/game/machinery/rechargestation.dm
@@ -126,7 +126,7 @@
/obj/machinery/recharge_station/examine(mob/user)
..(user)
- user << "The charge meter reads: [round(chargepercentage())]%"
+ to_chat(user, "The charge meter reads: [round(chargepercentage())]%")
/obj/machinery/recharge_station/proc/chargepercentage()
if(!cell)
@@ -292,7 +292,7 @@
if(usr.incapacitated() || !isliving(usr))
return
-
+
go_in(usr)
/obj/machinery/recharge_station/ghost_pod_recharger
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index 9beb0ada4bb..473f3dfd778 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -237,7 +237,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
announcement.announcer = ID.assignment ? "[ID.assignment] [ID.registered_name]" : ID.registered_name
else
reset_message()
- user << "You are not authorized to send announcements."
+ to_chat(user, "You are not authorized to send announcements.")
updateUsrDialog()
if(istype(O, /obj/item/weapon/stamp))
if(inoperable(MAINT)) return
diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm
index ec0af28d589..4c447e91f30 100644
--- a/code/game/machinery/spaceheater.dm
+++ b/code/game/machinery/spaceheater.dm
@@ -30,11 +30,11 @@
/obj/machinery/space_heater/examine(mob/user)
..(user)
- user << "The heater is [on ? "on" : "off"] and the hatch is [panel_open ? "open" : "closed"]."
+ to_chat(user, "The heater is [on ? "on" : "off"] and the hatch is [panel_open ? "open" : "closed"].")
if(panel_open)
- user << "The power cell is [cell ? "installed" : "missing"]."
+ to_chat(user, "The power cell is [cell ? "installed" : "missing"].")
else
- user << "The charge meter reads [cell ? round(cell.percent(),1) : 0]%"
+ to_chat(user, "The charge meter reads [cell ? round(cell.percent(),1) : 0]%")
return
/obj/machinery/space_heater/powered()
@@ -54,7 +54,7 @@
if(istype(I, /obj/item/weapon/cell))
if(panel_open)
if(cell)
- user << "There is already a power cell inside."
+ to_chat(user, "There is already a power cell inside.")
return
else
// insert cell
@@ -68,9 +68,9 @@
user.visible_message("[user] inserts a power cell into [src].", "You insert the power cell into [src].")
power_change()
else
- user << "The hatch must be open to insert a power cell."
+ to_chat(user, "The hatch must be open to insert a power cell.")
return
- else if(istype(I, /obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
panel_open = !panel_open
playsound(src, I.usesound, 50, 1)
user.visible_message("[user] [panel_open ? "opens" : "closes"] the hatch on the [src].", "You [panel_open ? "open" : "close"] the hatch on the [src].")
diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index 7c0ca00f1a4..5cb6b0ba064 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -207,14 +207,14 @@
if(!protected)
playsound(src.loc, "sparks", 75, 1, -1)
- user << "You try to touch the controls but you get zapped. There must be a short circuit somewhere."
+ to_chat(user, "You try to touch the controls but you get zapped. There must be a short circuit somewhere.")
return*/
else //welp, the guy is protected, we can continue
if(issuperUV)
- user << "You slide the dial back towards \"185nm\"."
+ to_chat(user, "You slide the dial back towards \"185nm\".")
issuperUV = 0
else
- user << "You crank the dial all the way up to \"15nm\"."
+ to_chat(user, "You crank the dial all the way up to \"15nm\".")
issuperUV = 1
return
@@ -233,10 +233,10 @@
if(!protected)
playsound(src.loc, "sparks", 75, 1, -1)
- user << "You try to touch the controls but you get zapped. There must be a short circuit somewhere."
+ to_chat(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."
+ to_chat(user, "You push the button. The coloured LED next to it changes.")
safetieson = !safetieson
@@ -285,7 +285,7 @@
/obj/machinery/suit_storage_unit/proc/toggle_open(mob/user as mob)
if(islocked || isUV)
- user << "Unable to open unit."
+ to_chat(user, "Unable to open unit.")
return
if(OCCUPANT)
eject_occupant(user)
@@ -296,7 +296,7 @@
/obj/machinery/suit_storage_unit/proc/toggle_lock(mob/user as mob)
if(OCCUPANT && safetieson)
- user << "The Unit's safety protocols disallow locking when a biological form is detected inside its compartments."
+ to_chat(user, "The Unit's safety protocols disallow locking when a biological form is detected inside its compartments.")
return
if(isopen)
return
@@ -308,12 +308,12 @@
if(isUV || isopen) //I'm bored of all these sanity checks
return
if(OCCUPANT && safetieson)
- user << "WARNING: Biological entity detected in the confines of the Unit's storage. Cannot initiate cycle."
+ to_chat(user, "WARNING: Biological entity detected in the confines of the Unit's storage. Cannot initiate cycle.")
return
if(!HELMET && !MASK && !SUIT && !OCCUPANT) //shit's empty yo
- user << "Unit storage bays empty. Nothing to disinfect -- Aborting."
+ to_chat(user, "Unit storage bays empty. Nothing to disinfect -- Aborting.")
return
- user << "You start the Unit's cauterisation cycle."
+ to_chat(user, "You start the Unit's cauterisation cycle.")
cycletime_left = 20
isUV = 1
if(OCCUPANT && !islocked)
@@ -378,10 +378,10 @@
if(OCCUPANT)
if(issuperUV)
OCCUPANT.take_organ_damage(0,40)
- user << "Test. You gave him 40 damage"
+ to_chat(user, "Test. You gave him 40 damage")
else
OCCUPANT.take_organ_damage(0,8)
- user << "Test. You gave him 8 damage"
+ to_chat(user, "Test. You gave him 8 damage")
return*/
@@ -438,13 +438,13 @@
if(usr.stat != 0)
return
if(!isopen)
- usr << "The unit's doors are shut."
+ to_chat(usr, "The unit's doors are shut.")
return
if(!ispowered || isbroken)
- usr << "The unit is not operational."
+ to_chat(usr, "The unit is not operational.")
return
if((OCCUPANT) || (HELMET) || (SUIT))
- usr << "It's too cluttered inside for you to fit in!"
+ to_chat(usr, "It's too cluttered inside for you to fit in!")
return
visible_message("[usr] starts squeezing into the suit storage unit!", 3)
if(do_after(usr, 10))
@@ -471,10 +471,10 @@
/obj/machinery/suit_storage_unit/attackby(obj/item/I as obj, mob/user as mob)
if(!ispowered)
return
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
panelopen = !panelopen
playsound(src, I.usesound, 100, 1)
- user << text("You [] the unit's maintenance panel.",(panelopen ? "open up" : "close"))
+ to_chat(user, "You [panelopen ? "open up" : "close"] the unit's maintenance panel.")
updateUsrDialog()
return
if(istype(I, /obj/item/weapon/grab))
@@ -482,13 +482,13 @@
if(!(ismob(G.affecting)))
return
if(!isopen)
- usr << "The unit's doors are shut."
+ to_chat(user, "The unit's doors are shut.")
return
if(!ispowered || isbroken)
- usr << "The unit is not operational."
+ to_chat(user, "The unit is not operational.")
return
if((OCCUPANT) || (HELMET) || (SUIT)) //Unit needs to be absolutely empty
- user << "The unit's storage area is too cluttered."
+ to_chat(user, "The unit's storage area is too cluttered.")
return
visible_message("[user] starts putting [G.affecting.name] into the Suit Storage Unit.", 3)
if(do_after(user, 20))
@@ -514,9 +514,9 @@
return
var/obj/item/clothing/suit/space/S = I
if(SUIT)
- user << "The unit already contains a suit."
+ to_chat(user, "The unit already contains a suit.")
return
- user << "You load the [S.name] into the storage compartment."
+ to_chat(user, "You load the [S.name] into the storage compartment.")
user.drop_item()
S.loc = src
SUIT = S
@@ -528,9 +528,9 @@
return
var/obj/item/clothing/head/helmet/H = I
if(HELMET)
- user << "The unit already contains a helmet."
+ to_chat(user, "The unit already contains a helmet.")
return
- user << "You load the [H.name] into the storage compartment."
+ to_chat(user, "You load the [H.name] into the storage compartment.")
user.drop_item()
H.loc = src
HELMET = H
@@ -542,9 +542,9 @@
return
var/obj/item/clothing/mask/M = I
if(MASK)
- user << "The unit already contains a mask."
+ to_chat(user, "The unit already contains a mask.")
return
- user << "You load the [M.name] into the storage compartment."
+ to_chat(user, "You load the [M.name] into the storage compartment.")
user.drop_item()
M.loc = src
MASK = M
@@ -653,7 +653,7 @@
return
//Hacking init.
- if(istype(I, /obj/item/device/multitool) || istype(I, /obj/item/weapon/wirecutters))
+ if(istype(I, /obj/item/device/multitool) || I.is_wirecutter())
if(panel_open)
attack_hand(user)
return
@@ -665,11 +665,11 @@
return
if(locked)
- user << "The suit cycler is locked."
+ to_chat(user, "The suit cycler is locked.")
return
if(contents.len > 0)
- user << "There is no room inside the cycler for [G.affecting.name]."
+ to_chat(user, "There is no room inside the cycler for [G.affecting.name].")
return
visible_message("[user] starts putting [G.affecting.name] into the suit cycler.", 3)
@@ -689,29 +689,29 @@
updateUsrDialog()
return
- else if(istype(I,/obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
panel_open = !panel_open
playsound(src, I.usesound, 50, 1)
- user << "You [panel_open ? "open" : "close"] the maintenance panel."
+ to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
updateUsrDialog()
return
else if(istype(I,/obj/item/clothing/head/helmet/space) && !istype(I, /obj/item/clothing/head/helmet/space/rig))
if(locked)
- user << "The suit cycler is locked."
+ to_chat(user, "The suit cycler is locked.")
return
if(helmet)
- user << "The cycler already contains a helmet."
+ to_chat(user, "The cycler already contains a helmet.")
return
if(I.icon_override == CUSTOM_ITEM_MOB)
- user << "You cannot refit a customised voidsuit."
+ to_chat(user, "You cannot refit a customised voidsuit.")
return
- user << "You fit \the [I] into the suit cycler."
+ to_chat(user, "You fit \the [I] into the suit cycler.")
user.drop_item()
I.loc = src
helmet = I
@@ -723,18 +723,18 @@
else if(istype(I,/obj/item/clothing/suit/space/void))
if(locked)
- user << "The suit cycler is locked."
+ to_chat(user, "The suit cycler is locked.")
return
if(suit)
- user << "The cycler already contains a voidsuit."
+ to_chat(user, "The cycler already contains a voidsuit.")
return
if(I.icon_override == CUSTOM_ITEM_MOB)
- user << "You cannot refit a customised voidsuit."
+ to_chat(user, "You cannot refit a customised voidsuit.")
return
- user << "You fit \the [I] into the suit cycler."
+ to_chat(user, "You fit \the [I] into the suit cycler.")
user.drop_item()
I.loc = src
suit = I
@@ -747,11 +747,11 @@
/obj/machinery/suit_cycler/emag_act(var/remaining_charges, var/mob/user)
if(emagged)
- user << "The cycler has already been subverted."
+ to_chat(user, "The cycler has already been subverted.")
return
//Clear the access reqs, disable the safeties, and open up all paintjobs.
- user << "You run the sequencer across the interface, corrupting the operating protocols."
+ to_chat(user, "You run the sequencer across the interface, corrupting the operating protocols.")
departments = list("Engineering","Mining","Medical","Security","Atmos","HAZMAT","Construction","Biohazard","Crowd Control","Emergency Medical Response","^%###^%$", "Charring")
species = list(SPECIES_HUMAN,SPECIES_TAJ,SPECIES_SKRELL,SPECIES_UNATHI, SPECIES_TESHARI)
@@ -855,14 +855,14 @@
if(allowed(usr))
locked = !locked
- usr << "You [locked ? "" : "un"]lock \the [src]."
+ to_chat(usr, "You [locked ? "" : "un"]lock \the [src].")
else
- usr << "Access denied."
+ to_chat(usr, "Access denied.")
else if(href_list["begin_decontamination"])
if(safeties && occupant)
- usr << "The cycler has detected an occupant. Please remove the occupant before commencing the decontamination cycle."
+ to_chat(usr, "The cycler has detected an occupant. Please remove the occupant before commencing the decontamination cycle.")
return
active = 1
diff --git a/code/game/machinery/supplybeacon.dm b/code/game/machinery/supplybeacon.dm
index 0f58bd9a48c..9f228be5d47 100644
--- a/code/game/machinery/supplybeacon.dm
+++ b/code/game/machinery/supplybeacon.dm
@@ -45,7 +45,7 @@
drop_type = "supermatter"
/obj/machinery/power/supply_beacon/attackby(var/obj/item/weapon/W, var/mob/user)
- if(!use_power && istype(W, /obj/item/weapon/wrench))
+ if(!use_power && W.is_wrench())
if(!anchored && !connect_to_network())
to_chat(user, "This device must be placed over an exposed cable.")
return
diff --git a/code/game/machinery/syndicatebeacon.dm b/code/game/machinery/syndicatebeacon.dm
index 5befc59495d..2c59ec8b201 100644
--- a/code/game/machinery/syndicatebeacon.dm
+++ b/code/game/machinery/syndicatebeacon.dm
@@ -56,7 +56,7 @@
return
if(istype(M, /mob/living/carbon/human))
var/mob/living/carbon/human/N = M
- M << "You have joined the ranks of the Syndicate and become a traitor to the station!"
+ to_chat(N, "You have joined the ranks of the Syndicate and become a traitor to the station!")
traitors.add_antagonist(N.mind)
traitors.equip(N)
message_admins("[N]/([N.ckey]) has accepted a traitor objective from a syndicate beacon.")
@@ -87,7 +87,8 @@
/obj/machinery/power/singularity_beacon/proc/Activate(mob/user = null)
if(surplus() < 1500)
- if(user) user << "The connected wire doesn't have enough current."
+ if(user)
+ to_chat(user, "The connected wire doesn't have enough current.")
return
for(var/obj/singularity/singulo in all_singularities)
if(singulo.z == z)
@@ -96,7 +97,7 @@
active = 1
START_MACHINE_PROCESSING(src)
if(user)
- user << "You activate the beacon."
+ to_chat(user, "You activate the beacon.")
/obj/machinery/power/singularity_beacon/proc/Deactivate(mob/user = null)
for(var/obj/singularity/singulo in all_singularities)
@@ -105,7 +106,7 @@
icon_state = "[icontype]0"
active = 0
if(user)
- user << "You deactivate the beacon."
+ to_chat(user, "You deactivate the beacon.")
/obj/machinery/power/singularity_beacon/attack_ai(mob/user as mob)
return
@@ -114,27 +115,27 @@
if(anchored)
return active ? Deactivate(user) : Activate(user)
else
- user << "You need to screw the beacon to the floor first!"
+ to_chat(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)
- if(istype(W,/obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(active)
- user << "You need to deactivate the beacon first!"
+ to_chat(user, "You need to deactivate the beacon first!")
return
if(anchored)
anchored = 0
- user << "You unscrew the beacon from the floor."
+ to_chat(user, "You unscrew the beacon from the floor.")
playsound(src, W.usesound, 50, 1)
disconnect_from_network()
return
else
if(!connect_to_network())
- user << "This device must be placed over an exposed cable."
+ to_chat(user, "This device must be placed over an exposed cable.")
return
anchored = 1
- user << "You screw the beacon to the floor and attach the cable."
+ to_chat(user, "You screw the beacon to the floor and attach the cable.")
playsound(src, W.usesound, 50, 1)
return
..()
diff --git a/code/game/machinery/telecomms/machine_interactions.dm b/code/game/machinery/telecomms/machine_interactions.dm
index 208b9d51e83..331f5644d92 100644
--- a/code/game/machinery/telecomms/machine_interactions.dm
+++ b/code/game/machinery/telecomms/machine_interactions.dm
@@ -28,35 +28,35 @@
if (integrity < 100) //Damaged, let's repair!
if (T.use(1))
integrity = between(0, integrity + rand(10,20), 100)
- usr << "You apply the Nanopaste to [src], repairing some of the damage."
+ to_chat(usr, "You apply the Nanopaste to [src], repairing some of the damage.")
else
- usr << "This machine is already in perfect condition."
+ to_chat(usr, "This machine is already in perfect condition.")
return
switch(construct_op)
if(0)
- if(istype(P, /obj/item/weapon/screwdriver))
- user << "You unfasten the bolts."
+ if(P.is_screwdriver())
+ to_chat(user, "You unfasten the bolts.")
playsound(src.loc, P.usesound, 50, 1)
construct_op ++
if(1)
- if(istype(P, /obj/item/weapon/screwdriver))
- user << "You fasten the bolts."
+ if(P.is_screwdriver())
+ to_chat(user, "You fasten the bolts.")
playsound(src.loc, P.usesound, 50, 1)
construct_op --
- if(istype(P, /obj/item/weapon/wrench))
- user << "You dislodge the external plating."
+ if(P.is_wrench())
+ to_chat(user, "You dislodge the external plating.")
playsound(src.loc, P.usesound, 75, 1)
construct_op ++
if(2)
- if(istype(P, /obj/item/weapon/wrench))
- user << "You secure the external plating."
+ if(P.is_wrench())
+ to_chat(user, "You secure the external plating.")
playsound(src.loc, P.usesound, 75, 1)
construct_op --
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
playsound(src.loc, P.usesound, 50, 1)
- user << "You remove the cables."
+ to_chat(user, "You remove the cables.")
construct_op ++
var/obj/item/stack/cable_coil/A = new /obj/item/stack/cable_coil( user.loc )
A.amount = 5
@@ -65,16 +65,16 @@
if(istype(P, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/A = P
if (A.use(5))
- user << "You insert the cables."
+ to_chat(user, "You insert the cables.")
construct_op--
stat &= ~BROKEN // the machine's not borked anymore!
else
- user << "You need five coils of wire for this."
- if(istype(P, /obj/item/weapon/crowbar))
- user << "You begin prying out the circuit board other components..."
+ to_chat(user, "You need five coils of wire for this.")
+ if(P.is_crowbar())
+ to_chat(user, "You begin prying out the circuit board other components...")
playsound(src.loc, P.usesound, 50, 1)
if(do_after(user,60 * P.toolspeed))
- user << "You finish prying out the components."
+ to_chat(user, "You finish prying out the components.")
// Drop all the component stuff
if(contents.len > 0)
@@ -172,7 +172,7 @@
dat += ""
temp = ""
- user << browse(dat, "window=tcommachine;size=520x500;can_resize=0")
+ to_chat(user, browse(dat, "window=tcommachine;size=520x500;can_resize=0"))
onclose(user, "dormitory")
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 54b4f8b258c..92c23206bb8 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -179,7 +179,7 @@
if(I || istype(W, /obj/item/weapon/spacecash))
attack_hand(user)
return
- else if(istype(W, /obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
panel_open = !panel_open
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
playsound(src, W.usesound, 50, 1)
@@ -189,7 +189,7 @@
nanomanager.update_uis(src) // Speaker switch is on the main UI, not wires UI
return
- else if(istype(W, /obj/item/device/multitool)||istype(W, /obj/item/weapon/wirecutters))
+ else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter())
if(panel_open)
attack_hand(user)
return
@@ -201,7 +201,7 @@
to_chat(user, "You insert \the [W] into \the [src].")
nanomanager.update_uis(src)
return
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
playsound(src, W.usesound, 100, 1)
if(anchored)
user.visible_message("[user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
@@ -567,7 +567,7 @@
if(!user.unEquip(W))
return
- user << "You insert \the [W] in the product receptor."
+ to_chat(user, "You insert \the [W] in the product receptor.")
R.add_product(W)
if(has_logs)
do_logging(R, user)
@@ -737,7 +737,7 @@
/obj/machinery/vending/assist
products = list( /obj/item/device/assembly/prox_sensor = 5,/obj/item/device/assembly/igniter = 3,/obj/item/device/assembly/signaler = 4,
- /obj/item/weapon/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
+ /obj/item/weapon/tool/wirecutters = 1, /obj/item/weapon/cartridge/signal = 4)
contraband = list(/obj/item/device/flashlight = 5,/obj/item/device/assembly/timer = 2)
product_ads = "Only the finest!;Have some tools.;The most robust equipment.;The finest gear in space!"
@@ -1026,8 +1026,8 @@
icon_state = "tool"
icon_deny = "tool-deny"
//req_access = list(access_maint_tunnels) //Maintenance access
- products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/wirecutters = 5,
- /obj/item/weapon/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/screwdriver = 5,
+ products = list(/obj/item/stack/cable_coil/random = 10,/obj/item/weapon/tool/crowbar = 5,/obj/item/weapon/weldingtool = 3,/obj/item/weapon/tool/wirecutters = 5,
+ /obj/item/weapon/tool/wrench = 5,/obj/item/device/analyzer = 5,/obj/item/device/t_scanner = 5,/obj/item/weapon/tool/screwdriver = 5,
/obj/item/device/flashlight/glowstick = 3, /obj/item/device/flashlight/glowstick/red = 3, /obj/item/device/flashlight/glowstick/blue = 3,
/obj/item/device/flashlight/glowstick/orange =3, /obj/item/device/flashlight/glowstick/yellow = 3)
contraband = list(/obj/item/weapon/weldingtool/hugetank = 2,/obj/item/clothing/gloves/fyellow = 2,)
@@ -1065,8 +1065,8 @@
icon_deny = "engi-deny"
req_access = list(access_engine_equip)
products = list(/obj/item/clothing/under/rank/chief_engineer = 4,/obj/item/clothing/under/rank/engineer = 4,/obj/item/clothing/shoes/orange = 4,/obj/item/clothing/head/hardhat = 4,
- /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/screwdriver = 12,
- /obj/item/weapon/crowbar = 12,/obj/item/weapon/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/wrench = 12,/obj/item/device/t_scanner = 12,
+ /obj/item/weapon/storage/belt/utility = 4,/obj/item/clothing/glasses/meson = 4,/obj/item/clothing/gloves/yellow = 4, /obj/item/weapon/tool/screwdriver = 12,
+ /obj/item/weapon/tool/crowbar = 12,/obj/item/weapon/tool/wirecutters = 12,/obj/item/device/multitool = 12,/obj/item/weapon/tool/wrench = 12,/obj/item/device/t_scanner = 12,
/obj/item/stack/cable_coil/heavyduty = 8, /obj/item/weapon/cell = 8, /obj/item/weapon/weldingtool = 8,/obj/item/clothing/head/welding = 8,
/obj/item/weapon/light/tube = 10,/obj/item/clothing/suit/fire = 4, /obj/item/weapon/stock_parts/scanning_module = 5,/obj/item/weapon/stock_parts/micro_laser = 5,
/obj/item/weapon/stock_parts/matter_bin = 5,/obj/item/weapon/stock_parts/manipulator = 5,/obj/item/weapon/stock_parts/console_screen = 5)
@@ -1085,7 +1085,7 @@
products = list(/obj/item/clothing/suit/storage/toggle/labcoat = 4,/obj/item/clothing/under/rank/roboticist = 4,/obj/item/stack/cable_coil = 4,/obj/item/device/flash = 4,
/obj/item/weapon/cell/high = 12, /obj/item/device/assembly/prox_sensor = 3,/obj/item/device/assembly/signaler = 3,/obj/item/device/healthanalyzer = 3,
/obj/item/weapon/surgical/scalpel = 2,/obj/item/weapon/surgical/circular_saw = 2,/obj/item/weapon/tank/anesthetic = 2,/obj/item/clothing/mask/breath/medical = 5,
- /obj/item/weapon/screwdriver = 5,/obj/item/weapon/crowbar = 5)
+ /obj/item/weapon/tool/screwdriver = 5,/obj/item/weapon/tool/crowbar = 5)
//everything after the power cell had no amounts, I improvised. -Sayu
req_log_access = access_rd
has_logs = 1
diff --git a/code/game/machinery/wall_frames.dm b/code/game/machinery/wall_frames.dm
index 0d3c3bcd2c4..dd75e2d8e98 100644
--- a/code/game/machinery/wall_frames.dm
+++ b/code/game/machinery/wall_frames.dm
@@ -18,7 +18,7 @@
frame_types_wall = construction_frame_wall
/obj/item/frame/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
new refund_type(get_turf(src.loc), refund_amt)
qdel(src)
return
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index 309c9cf2a4c..672b0a2c4e9 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -90,7 +90,7 @@
return
if(default_unfasten_wrench(user, W, 40))
return
- /*if(istype(W,/obj/item/weapon/screwdriver))
+ /*if(W.is_screwdriver())
panel = !panel
user << "You [panel ? "open" : "close"] the [src]'s maintenance panel"*/
if(istype(W,/obj/item/weapon/pen/crayon) || istype(W,/obj/item/weapon/stamp))
diff --git a/code/game/mecha/mech_prosthetics.dm b/code/game/mecha/mech_prosthetics.dm
index 45b9853881b..f0b792ac734 100644
--- a/code/game/mecha/mech_prosthetics.dm
+++ b/code/game/mecha/mech_prosthetics.dm
@@ -150,7 +150,7 @@
/obj/machinery/pros_fabricator/attackby(var/obj/item/I, var/mob/user)
if(busy)
- user << "\The [src] is busy. Please wait for completion of previous operation."
+ to_chat(user, "\The [src] is busy. Please wait for completion of previous operation.")
return 1
if(default_deconstruction_screwdriver(user, I))
return
@@ -162,20 +162,20 @@
if(istype(I,/obj/item/weapon/disk/limb))
var/obj/item/weapon/disk/limb/D = I
if(!D.company || !(D.company in all_robolimbs))
- user << "This disk seems to be corrupted!"
+ to_chat(user, "This disk seems to be corrupted!")
else
- user << "Installing blueprint files for [D.company]..."
+ to_chat(user, "Installing blueprint files for [D.company]...")
if(do_after(user,50,src))
var/datum/robolimb/R = all_robolimbs[D.company]
R.unavailable_to_build = 0
- user << "Installed [D.company] blueprints!"
+ to_chat(user, "Installed [D.company] blueprints!")
qdel(I)
return
if(istype(I,/obj/item/stack/material))
var/obj/item/stack/material/S = I
if(!(S.material.name in materials))
- user << "The [src] doesn't accept [S.material]!"
+ to_chat(user, "The [src] doesn't accept [S.material]!")
return
var/sname = "[S.name]"
@@ -190,10 +190,10 @@
materials[S.material.name] += amnt
S.use(1)
count++
- user << "You insert [count] [sname] into the fabricator."
+ to_chat(user, "You insert [count] [sname] into the fabricator.")
update_busy()
else
- user << "The fabricator cannot hold more [sname]."
+ to_chat(user, "The fabricator cannot hold more [sname].")
return
diff --git a/code/game/mecha/mecha.dm b/code/game/mecha/mecha.dm
index 360c9e1bbf0..f410dbb0143 100644
--- a/code/game/mecha/mecha.dm
+++ b/code/game/mecha/mecha.dm
@@ -719,7 +719,7 @@
user << "Invalid ID: Access denied."
else
user << "Maintenance protocols disabled by operator."
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(state==1)
state = 2
user << "You undo the securing bolts."
@@ -727,7 +727,7 @@
state = 1
user << "You tighten the securing bolts."
return
- else if(istype(W, /obj/item/weapon/crowbar))
+ else if(W.is_crowbar())
if(state==2)
state = 3
user << "You open the hatch to the power unit"
@@ -744,7 +744,7 @@
else
user << "There's not enough wire to finish the task."
return
- else if(istype(W, /obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
if(hasInternalDamage(MECHA_INT_TEMP_CONTROL))
clearInternalDamage(MECHA_INT_TEMP_CONTROL)
user << "You repair the damaged temperature controller."
diff --git a/code/game/mecha/mecha_construction_paths.dm b/code/game/mecha/mecha_construction_paths.dm
index 98e81cb83fd..ce5b751e556 100644
--- a/code/game/mecha/mecha_construction_paths.dm
+++ b/code/game/mecha/mecha_construction_paths.dm
@@ -2,71 +2,73 @@
///// Construction datums //////
////////////////////////////////
-/datum/construction/mecha/custom_action(step, atom/used_atom, mob/user)
- if(istype(used_atom, /obj/item/weapon/weldingtool))
- var/obj/item/weapon/weldingtool/W = used_atom
+/datum/construction/mecha/custom_action(step, obj/item/I, mob/user)
+ if(istype(I, /obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/W = I
if (W.remove_fuel(0, user))
playsound(holder, 'sound/items/Welder2.ogg', 50, 1)
else
return 0
- else if(istype(used_atom, /obj/item/weapon/wrench))
+ else if(I.is_wrench())
playsound(holder, 'sound/items/Ratchet.ogg', 50, 1)
- else if(istype(used_atom, /obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
playsound(holder, 'sound/items/Screwdriver.ogg', 50, 1)
- else if(istype(used_atom, /obj/item/weapon/wirecutters))
+ else if(I.is_wirecutter())
playsound(holder, 'sound/items/Wirecutter.ogg', 50, 1)
- else if(istype(used_atom, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/C = used_atom
+ else if(istype(I, /obj/item/stack/cable_coil))
+ var/obj/item/stack/cable_coil/C = I
if(C.use(4))
playsound(holder, 'sound/items/Deconstruct.ogg', 50, 1)
else
- user << ("There's not enough cable to finish the task.")
+ to_chat(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
+ else if(istype(I, /obj/item/stack))
+ var/obj/item/stack/S = I
if(S.get_amount() < 5)
- user << ("There's not enough material in this stack.")
+ to_chat(user, "There's not enough material in this stack.")
return 0
else
S.use(5)
return 1
-/datum/construction/reversible/mecha/custom_action(index as num, diff as num, atom/used_atom, mob/user as mob)
- if(istype(used_atom, /obj/item/weapon/weldingtool))
- var/obj/item/weapon/weldingtool/W = used_atom
+/datum/construction/reversible/mecha/custom_action(index as num, diff as num, obj/item/I, mob/user as mob)
+ if(istype(I, /obj/item/weapon/weldingtool))
+ var/obj/item/weapon/weldingtool/W = I
if (W.remove_fuel(0, user))
playsound(holder, 'sound/items/Welder2.ogg', 50, 1)
else
return 0
- else if(istype(used_atom, /obj/item/weapon/wrench))
+ else if(I.is_wrench())
playsound(holder, 'sound/items/Ratchet.ogg', 50, 1)
- else if(istype(used_atom, /obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
playsound(holder, 'sound/items/Screwdriver.ogg', 50, 1)
- else if(istype(used_atom, /obj/item/weapon/wirecutters))
+ else if(I.is_wirecutter())
playsound(holder, 'sound/items/Wirecutter.ogg', 50, 1)
- else if(istype(used_atom, /obj/item/stack/cable_coil))
- var/obj/item/stack/cable_coil/C = used_atom
+ else if(istype(I, /obj/item/stack/cable_coil))
+ var/obj/item/stack/cable_coil/C = I
if(C.use(4))
playsound(holder, 'sound/items/Deconstruct.ogg', 50, 1)
else
- user << ("There's not enough cable to finish the task.")
+ to_chat(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
+ else if(istype(I, /obj/item/stack))
+ var/obj/item/stack/S = I
if(S.get_amount() < 5)
- user << ("There's not enough material in this stack.")
+ to_chat(user, "There's not enough material in this stack.")
return 0
else
S.use(5)
return 1
-
+//////////////////////
+// Ripley
+//////////////////////
/datum/construction/mecha/ripley_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
@@ -75,25 +77,25 @@
list("key"=/obj/item/mecha_parts/part/ripley_right_leg)//5
)
- custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.overlays += used_atom.icon_state+"+o"
- qdel(used_atom)
- return 1
+/datum/construction/mecha/ripley_chassis/custom_action(step, obj/item/I, mob/user)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]")
+ holder.overlays += I.icon_state+"+o"
+ qdel(I)
+ return 1
- action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
+/datum/construction/mecha/ripley_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
- spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "ripley0"
- const_holder.density = 1
- const_holder.overlays.len = 0
- spawn()
- qdel(src)
- return
+/datum/construction/mecha/ripley_chassis/spawn_result()
+ var/obj/item/mecha_parts/chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/ripley(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "ripley0"
+ const_holder.density = 1
+ const_holder.overlays.len = 0
+ spawn()
+ qdel(src)
+ return
/datum/construction/reversible/mecha/ripley
@@ -101,11 +103,11 @@
steps = list(
//1
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="External armor is wrenched."),
//2
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="External armor is installed."),
//3
list("key"=/obj/item/stack/material/plasteel,
@@ -113,170 +115,171 @@
"desc"="Internal armor is welded."),
//4
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="Internal armor is wrenched"),
//5
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="Internal armor is installed"),
//6
list("key"=/obj/item/stack/material/steel,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Peripherals control module is secured"),
//7
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Peripherals control module is installed"),
//8
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/peripherals,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Central control module is secured"),
//9
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Central control module is installed"),
//10
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/main,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is adjusted"),
//11
- list("key"=/obj/item/weapon/wirecutters,
- "backkey"=/obj/item/weapon/screwdriver,
+ list("key"=IS_WIRECUTTER,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is added"),
//12
list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The hydraulic systems are active."),
//13
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/wrench,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
"desc"="The hydraulic systems are connected."),
//14
- list("key"=/obj/item/weapon/wrench,
+ list("key"=IS_WRENCH,
"desc"="The hydraulic systems are disconnected.")
)
- action(atom/used_atom,mob/user as mob)
- return check_step(used_atom,user)
+/datum/construction/reversible/mecha/ripley/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
- custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return 0
+/datum/construction/reversible/mecha/ripley/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
- //TODO: better messages.
- switch(index)
- if(14)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ //TODO: better messages.
+ switch(index)
+ if(14)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "ripley1"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "ripley2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "ripley0"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "ripley3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
holder.icon_state = "ripley1"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "ripley2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "ripley0"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "ripley3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "ripley1"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "ripley4"
- else
- user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
- qdel(used_atom)
- holder.icon_state = "ripley5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "ripley3"
- if(9)
- if(diff==FORWARD)
- 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "ripley7"
- else
- 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.")
- holder.icon_state = "ripley8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
- holder.icon_state = "ripley9"
- else
- 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 internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "ripley10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
- var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "ripley8"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "ripley11"
- else
- 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 external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "ripley12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "ripley10"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "ripley13"
- else
- user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].")
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "ripley11"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
- else
- user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "ripley12"
- return 1
-
- spawn_result()
- ..()
- feedback_inc("mecha_ripley_created",1)
- return
-
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "ripley4"
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
+ qdel(I)
+ holder.icon_state = "ripley5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "ripley3"
+ if(9)
+ if(diff==FORWARD)
+ 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
+ qdel(I)
+ holder.icon_state = "ripley7"
+ else
+ 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.")
+ holder.icon_state = "ripley8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
+ holder.icon_state = "ripley9"
+ else
+ 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 internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "ripley10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
+ var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "ripley8"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "ripley11"
+ else
+ 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 external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "ripley12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "ripley10"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "ripley13"
+ else
+ user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].")
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "ripley11"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "ripley12"
+ return 1
+/datum/construction/reversible/mecha/ripley/spawn_result()
+ ..()
+ feedback_inc("mecha_ripley_created",1)
+ return
+//////////////////////
+// Gygax
+//////////////////////
/datum/construction/mecha/gygax_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/gygax_torso),//1
list("key"=/obj/item/mecha_parts/part/gygax_left_arm),//2
@@ -286,24 +289,24 @@
list("key"=/obj/item/mecha_parts/part/gygax_head)
)
- custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.overlays += used_atom.icon_state+"+o"
- qdel(used_atom)
- return 1
+/datum/construction/mecha/gygax_chassis/custom_action(step, obj/item/I, mob/user)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]")
+ holder.overlays += I.icon_state+"+o"
+ qdel(I)
+ return 1
- action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
+/datum/construction/mecha/gygax_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
- spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "gygax0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
+/datum/construction/mecha/gygax_chassis/spawn_result()
+ var/obj/item/mecha_parts/chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/gygax(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "gygax0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
/datum/construction/reversible/mecha/gygax
@@ -311,11 +314,11 @@
steps = list(
//1
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="External armor is wrenched."),
//2
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="External armor is installed."),
//3
list("key"=/obj/item/mecha_parts/part/gygax_armour,
@@ -323,240 +326,243 @@
"desc"="Internal armor is welded."),
//4
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="Internal armor is wrenched"),
//5
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="Internal armor is installed"),
//6
list("key"=/obj/item/stack/material/steel,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Advanced capacitor is secured"),
//7
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Advanced capacitor is installed"),
//8
list("key"=/obj/item/weapon/stock_parts/capacitor/adv,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Advanced scanner module is secured"),
//9
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Advanced scanner module is installed"),
//10
list("key"=/obj/item/weapon/stock_parts/scanning_module/adv,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Targeting module is secured"),
//11
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Targeting module is installed"),
//12
list("key"=/obj/item/weapon/circuitboard/mecha/gygax/targeting,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Peripherals control module is secured"),
//13
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Peripherals control module is installed"),
//14
list("key"=/obj/item/weapon/circuitboard/mecha/gygax/peripherals,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Central control module is secured"),
//15
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Central control module is installed"),
//16
list("key"=/obj/item/weapon/circuitboard/mecha/gygax/main,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is adjusted"),
//17
- list("key"=/obj/item/weapon/wirecutters,
- "backkey"=/obj/item/weapon/screwdriver,
+ list("key"=/obj/item/weapon/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is added"),
//18
list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The hydraulic systems are active."),
//19
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/wrench,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
"desc"="The hydraulic systems are connected."),
//20
- list("key"=/obj/item/weapon/wrench,
+ list("key"=IS_WRENCH,
"desc"="The hydraulic systems are disconnected.")
)
- action(atom/used_atom,mob/user as mob)
- return check_step(used_atom,user)
+/datum/construction/reversible/mecha/gygax/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
- custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return 0
+/datum/construction/reversible/mecha/gygax/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "gygax1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "gygax2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "gygax0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "gygax3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
holder.icon_state = "gygax1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "gygax2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "gygax0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "gygax3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "gygax1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "gygax4"
- else
- user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "gygax3"
- if(15)
- if(diff==FORWARD)
- 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax7"
- else
- 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.")
- holder.icon_state = "gygax8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 [holder].", "You install the weapon control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax9"
- else
- 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.")
- holder.icon_state = "gygax10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [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 [holder].", "You install advanced scanner module to [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax11"
- else
- 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.")
- holder.icon_state = "gygax12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [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 [holder].", "You install advanced capacitor to [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax13"
- else
- 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.")
- holder.icon_state = "gygax14"
- else
- user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
- holder.icon_state = "gygax15"
- else
- 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 internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "gygax16"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
- var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "gygax14"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "gygax17"
- else
- 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 Armour Plates to [holder].", "You install Gygax Armour Plates to [holder].")
- qdel(used_atom)
- holder.icon_state = "gygax18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "gygax16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures Gygax Armour Plates.", "You secure Gygax Armour Plates.")
- holder.icon_state = "gygax19"
- else
- user.visible_message("[user] pries Gygax Armour Plates from [holder].", "You prie Gygax Armour Plates from [holder].")
- new /obj/item/mecha_parts/part/gygax_armour(get_turf(holder))
- holder.icon_state = "gygax17"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds Gygax Armour Plates to [holder].", "You weld Gygax Armour Plates to [holder].")
- else
- user.visible_message("[user] unfastens Gygax Armour Plates.", "You unfasten Gygax Armour Plates.")
- holder.icon_state = "gygax18"
- return 1
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "gygax4"
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
+ qdel(I)
+ holder.icon_state = "gygax5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "gygax3"
+ if(15)
+ if(diff==FORWARD)
+ 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
+ qdel(I)
+ holder.icon_state = "gygax7"
+ else
+ 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.")
+ holder.icon_state = "gygax8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 [holder].", "You install the weapon control module into [holder].")
+ qdel(I)
+ holder.icon_state = "gygax9"
+ else
+ 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.")
+ holder.icon_state = "gygax10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [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 [holder].", "You install advanced scanner module to [holder].")
+ qdel(I)
+ holder.icon_state = "gygax11"
+ else
+ 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.")
+ holder.icon_state = "gygax12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [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 [holder].", "You install advanced capacitor to [holder].")
+ qdel(I)
+ holder.icon_state = "gygax13"
+ else
+ 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.")
+ holder.icon_state = "gygax14"
+ else
+ user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
+ holder.icon_state = "gygax15"
+ else
+ 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 internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "gygax16"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
+ var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "gygax14"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "gygax17"
+ else
+ 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 Armour Plates to [holder].", "You install Gygax Armour Plates to [holder].")
+ qdel(I)
+ holder.icon_state = "gygax18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "gygax16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Gygax Armour Plates.", "You secure Gygax Armour Plates.")
+ holder.icon_state = "gygax19"
+ else
+ user.visible_message("[user] pries Gygax Armour Plates from [holder].", "You prie Gygax Armour Plates from [holder].")
+ new /obj/item/mecha_parts/part/gygax_armour(get_turf(holder))
+ holder.icon_state = "gygax17"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Gygax Armour Plates to [holder].", "You weld Gygax Armour Plates to [holder].")
+ else
+ user.visible_message("[user] unfastens Gygax Armour Plates.", "You unfasten Gygax Armour Plates.")
+ holder.icon_state = "gygax18"
+ return 1
- spawn_result()
- ..()
- feedback_inc("mecha_gygax_created",1)
- return
+/datum/construction/reversible/mecha/gygax/spawn_result()
+ ..()
+ feedback_inc("mecha_gygax_created",1)
+ return
+////////////////////////
+// Firfighter
+////////////////////////
/datum/construction/mecha/firefighter_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/ripley_torso),//1
list("key"=/obj/item/mecha_parts/part/ripley_left_arm),//2
@@ -566,25 +572,25 @@
list("key"=/obj/item/clothing/suit/fire)//6
)
- custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.overlays += used_atom.icon_state+"+o"
- user.drop_item()
- qdel(used_atom)
- return 1
+/datum/construction/mecha/firefighter_chassis/custom_action(step, obj/item/I, mob/user)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]")
+ holder.overlays += I.icon_state+"+o"
+ user.drop_item()
+ qdel(I)
+ return 1
- action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
+/datum/construction/mecha/firefighter_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
- spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "fireripley0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
+/datum/construction/mecha/firefighter_chassis/spawn_result()
+ var/obj/item/mecha_parts/chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/firefighter(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "fireripley0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
/datum/construction/reversible/mecha/firefighter
@@ -592,15 +598,15 @@
steps = list(
//1
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="External armor is wrenched."),
//2
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="External armor is installed."),
//3
list("key"=/obj/item/stack/material/plasteel,
- "backkey"=/obj/item/weapon/crowbar,
+ "backkey"=IS_CROWBAR,
"desc"="External armor is being installed."),
//4
list("key"=/obj/item/stack/material/plasteel,
@@ -608,179 +614,180 @@
"desc"="Internal armor is welded."),
//5
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="Internal armor is wrenched"),
//6
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="Internal armor is installed"),
-
//7
list("key"=/obj/item/stack/material/plasteel,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Peripherals control module is secured"),
//8
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Peripherals control module is installed"),
//9
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/peripherals,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Central control module is secured"),
//10
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Central control module is installed"),
//11
list("key"=/obj/item/weapon/circuitboard/mecha/ripley/main,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is adjusted"),
//12
- list("key"=/obj/item/weapon/wirecutters,
- "backkey"=/obj/item/weapon/screwdriver,
+ list("key"=/obj/item/weapon/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is added"),
//13
list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The hydraulic systems are active."),
//14
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/wrench,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
"desc"="The hydraulic systems are connected."),
//15
- list("key"=/obj/item/weapon/wrench,
+ list("key"=IS_WRENCH,
"desc"="The hydraulic systems are disconnected.")
)
- action(atom/used_atom,mob/user as mob)
- return check_step(used_atom,user)
+/datum/construction/reversible/mecha/firefighter/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
- custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return 0
+/datum/construction/reversible/mecha/firefighter/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
- //TODO: better messages.
- switch(index)
- if(15)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ //TODO: better messages.
+ switch(index)
+ if(15)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "fireripley1"
+ if(14)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "fireripley2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "fireripley0"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "fireripley3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
holder.icon_state = "fireripley1"
- if(14)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "fireripley2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "fireripley0"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "fireripley3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "fireripley1"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "fireripley4"
- else
- user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
- qdel(used_atom)
- holder.icon_state = "fireripley5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "fireripley3"
- if(10)
- if(diff==FORWARD)
- 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "fireripley7"
- else
- 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.")
- holder.icon_state = "fireripley8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
- holder.icon_state = "fireripley9"
- else
- user.visible_message("[user] unfastens the peripherals control module.", "You unfasten the peripherals control module.")
- holder.icon_state = "fireripley7"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "fireripley4"
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
+ qdel(I)
+ holder.icon_state = "fireripley5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "fireripley3"
+ if(10)
+ if(diff==FORWARD)
+ 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
+ qdel(I)
+ holder.icon_state = "fireripley7"
+ else
+ 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.")
+ holder.icon_state = "fireripley8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
+ holder.icon_state = "fireripley9"
+ else
+ 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 internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "fireripley10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "fireripley8"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "fireripley11"
+ else
+ 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 [holder].", "You start to install the external armor layer to [holder].")
+ holder.icon_state = "fireripley12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "fireripley10"
+ if(3)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "fireripley13"
+ else
+ user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].")
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "fireripley11"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "fireripley14"
+ else
+ user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].")
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "fireripley12"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
+ else
+ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "fireripley13"
+ return 1
- if(6)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "fireripley10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley8"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "fireripley11"
- else
- 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 [holder].", "You start to install the external armor layer to [holder].")
- holder.icon_state = "fireripley12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "fireripley10"
- if(3)
- if(diff==FORWARD)
- user.visible_message("[user] installs external reinforced armor layer to [holder].", "You install external reinforced armor layer to [holder].")
- holder.icon_state = "fireripley13"
- else
- user.visible_message("[user] removes the external armor from [holder].", "You remove the external armor from [holder].")
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley11"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "fireripley14"
- else
- user.visible_message("[user] pries external armor layer from [holder].", "You prie external armor layer from [holder].")
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "fireripley12"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
- else
- user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "fireripley13"
- return 1
-
- spawn_result()
- ..()
- feedback_inc("mecha_firefighter_created",1)
- return
+/datum/construction/reversible/mecha/firefighter/spawn_result()
+ ..()
+ feedback_inc("mecha_firefighter_created",1)
+ return
+//////////////////////
+// Durand
+//////////////////////
/datum/construction/mecha/durand_chassis
steps = list(list("key"=/obj/item/mecha_parts/part/durand_torso),//1
list("key"=/obj/item/mecha_parts/part/durand_left_arm),//2
@@ -790,35 +797,36 @@
list("key"=/obj/item/mecha_parts/part/durand_head)
)
- custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.overlays += used_atom.icon_state+"+o"
- qdel(used_atom)
- return 1
+/datum/construction/mecha/durand_chassis/custom_action(step, obj/item/I, mob/user)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]")
+ holder.overlays += I.icon_state+"+o"
+ qdel(I)
+ return 1
- action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
+/datum/construction/mecha/durand_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/durand_chassis/spawn_result()
+ var/obj/item/mecha_parts/chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "durand0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
- spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/durand(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "durand0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
/datum/construction/reversible/mecha/durand
result = "/obj/mecha/combat/durand"
steps = list(
//1
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="External armor is wrenched."),
//2
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="External armor is installed."),
//3
list("key"=/obj/item/mecha_parts/part/durand_armour,
@@ -826,242 +834,456 @@
"desc"="Internal armor is welded."),
//4
list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
+ "backkey"=IS_WRENCH,
"desc"="Internal armor is wrenched"),
//5
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
"desc"="Internal armor is installed"),
//6
list("key"=/obj/item/stack/material/steel,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Advanced capacitor is secured"),
//7
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Advanced capacitor is installed"),
//8
list("key"=/obj/item/weapon/stock_parts/capacitor/adv,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Advanced scanner module is secured"),
//9
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Advanced scanner module is installed"),
//10
list("key"=/obj/item/weapon/stock_parts/scanning_module/adv,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Targeting module is secured"),
//11
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Targeting module is installed"),
//12
list("key"=/obj/item/weapon/circuitboard/mecha/durand/targeting,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Peripherals control module is secured"),
//13
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Peripherals control module is installed"),
//14
list("key"=/obj/item/weapon/circuitboard/mecha/durand/peripherals,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="Central control module is secured"),
//15
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
"desc"="Central control module is installed"),
//16
list("key"=/obj/item/weapon/circuitboard/mecha/durand/main,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is adjusted"),
//17
- list("key"=/obj/item/weapon/wirecutters,
- "backkey"=/obj/item/weapon/screwdriver,
+ list("key"=/obj/item/weapon/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The wiring is added"),
//18
list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/weapon/screwdriver,
+ "backkey"=IS_SCREWDRIVER,
"desc"="The hydraulic systems are active."),
//19
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/wrench,
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
"desc"="The hydraulic systems are connected."),
//20
- list("key"=/obj/item/weapon/wrench,
+ list("key"=IS_WRENCH,
"desc"="The hydraulic systems are disconnected.")
)
- action(atom/used_atom,mob/user as mob)
- return check_step(used_atom,user)
+/datum/construction/reversible/mecha/durand/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
- custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return 0
+/datum/construction/reversible/mecha/durand/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
- //TODO: better messages.
- switch(index)
- if(20)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ //TODO: better messages.
+ switch(index)
+ if(20)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "durand1"
+ if(19)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "durand2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "durand0"
+ if(18)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "durand3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
holder.icon_state = "durand1"
- if(19)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "durand2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "durand0"
- if(18)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "durand3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "durand1"
- if(17)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "durand4"
- else
- user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
- qdel(used_atom)
- holder.icon_state = "durand5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "durand3"
- if(15)
- if(diff==FORWARD)
- 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "durand7"
- else
- 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.")
- holder.icon_state = "durand8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 [holder].", "You install the weapon control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "durand9"
- else
- 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.")
- holder.icon_state = "durand10"
- else
- user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [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 advanced scanner module to [holder].", "You install advanced scanner module to [holder].")
- qdel(used_atom)
- holder.icon_state = "durand11"
- else
- 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 advanced scanner module.", "You secure the advanced scanner module.")
- holder.icon_state = "durand12"
- else
- user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
- new /obj/item/weapon/stock_parts/scanning_module/adv(get_turf(holder))
- holder.icon_state = "durand10"
- if(8)
- if(diff==FORWARD)
- user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].")
- qdel(used_atom)
- holder.icon_state = "durand13"
- else
- user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
- holder.icon_state = "durand11"
- if(7)
- if(diff==FORWARD)
- user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
- holder.icon_state = "durand14"
- else
- user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].")
- new /obj/item/weapon/stock_parts/capacitor/adv(get_turf(holder))
- holder.icon_state = "durand12"
- if(6)
- if(diff==FORWARD)
- user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
- holder.icon_state = "durand15"
- else
- user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
- holder.icon_state = "durand13"
- if(5)
- if(diff==FORWARD)
- user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "durand16"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
- var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "durand14"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "durand17"
- else
- 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 Armour Plates to [holder].", "You install Durand Armour Plates to [holder].")
- qdel(used_atom)
- holder.icon_state = "durand18"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "durand16"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures Durand Armour Plates.", "You secure Durand Armour Plates.")
- holder.icon_state = "durand19"
- else
- user.visible_message("[user] pries Durand Armour Plates from [holder].", "You prie Durand Armour Plates from [holder].")
- new /obj/item/mecha_parts/part/durand_armour(get_turf(holder))
- holder.icon_state = "durand17"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].")
- else
- user.visible_message("[user] unfastens Durand Armour Plates.", "You unfasten Durand Armour Plates.")
- holder.icon_state = "durand18"
- return 1
+ if(17)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "durand4"
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
+ qdel(I)
+ holder.icon_state = "durand5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "durand3"
+ if(15)
+ if(diff==FORWARD)
+ 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
+ qdel(I)
+ holder.icon_state = "durand7"
+ else
+ 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.")
+ holder.icon_state = "durand8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 [holder].", "You install the weapon control module into [holder].")
+ qdel(I)
+ holder.icon_state = "durand9"
+ else
+ 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.")
+ holder.icon_state = "durand10"
+ else
+ user.visible_message("[user] removes the weapon control module from [holder].", "You remove the weapon control module from [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 advanced scanner module to [holder].", "You install advanced scanner module to [holder].")
+ qdel(I)
+ holder.icon_state = "durand11"
+ else
+ 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 advanced scanner module.", "You secure the advanced scanner module.")
+ holder.icon_state = "durand12"
+ else
+ user.visible_message("[user] removes the advanced scanner module from [holder].", "You remove the advanced scanner module from [holder].")
+ new /obj/item/weapon/stock_parts/scanning_module/adv(get_turf(holder))
+ holder.icon_state = "durand10"
+ if(8)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs advanced capacitor to [holder].", "You install advanced capacitor to [holder].")
+ qdel(I)
+ holder.icon_state = "durand13"
+ else
+ user.visible_message("[user] unfastens the advanced scanner module.", "You unfasten the advanced scanner module.")
+ holder.icon_state = "durand11"
+ if(7)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures the advanced capacitor.", "You secure the advanced capacitor.")
+ holder.icon_state = "durand14"
+ else
+ user.visible_message("[user] removes the advanced capacitor from [holder].", "You remove the advanced capacitor from [holder].")
+ new /obj/item/weapon/stock_parts/capacitor/adv(get_turf(holder))
+ holder.icon_state = "durand12"
+ if(6)
+ if(diff==FORWARD)
+ user.visible_message("[user] installs internal armor layer to [holder].", "You install internal armor layer to [holder].")
+ holder.icon_state = "durand15"
+ else
+ user.visible_message("[user] unfastens the advanced capacitor.", "You unfasten the advanced capacitor.")
+ holder.icon_state = "durand13"
+ if(5)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "durand16"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
+ var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "durand14"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "durand17"
+ else
+ 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 Armour Plates to [holder].", "You install Durand Armour Plates to [holder].")
+ qdel(I)
+ holder.icon_state = "durand18"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "durand16"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures Durand Armour Plates.", "You secure Durand Armour Plates.")
+ holder.icon_state = "durand19"
+ else
+ user.visible_message("[user] pries Durand Armour Plates from [holder].", "You prie Durand Armour Plates from [holder].")
+ new /obj/item/mecha_parts/part/durand_armour(get_turf(holder))
+ holder.icon_state = "durand17"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds Durand Armour Plates to [holder].", "You weld Durand Armour Plates to [holder].")
+ else
+ user.visible_message("[user] unfastens Durand Armour Plates.", "You unfasten Durand Armour Plates.")
+ holder.icon_state = "durand18"
+ return 1
- spawn_result()
- ..()
- feedback_inc("mecha_durand_created",1)
- return
+/datum/construction/reversible/mecha/durand/spawn_result()
+ ..()
+ feedback_inc("mecha_durand_created",1)
+ return
+
+////////////////////////
+// Odysseus
+////////////////////////
+/datum/construction/mecha/odysseus_chassis
+ steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
+ list("key"=/obj/item/mecha_parts/part/odysseus_head),//2
+ list("key"=/obj/item/mecha_parts/part/odysseus_left_arm),//3
+ list("key"=/obj/item/mecha_parts/part/odysseus_right_arm),//4
+ list("key"=/obj/item/mecha_parts/part/odysseus_left_leg),//5
+ list("key"=/obj/item/mecha_parts/part/odysseus_right_leg)//6
+ )
+
+/datum/construction/mecha/odysseus_chassis/custom_action(step, obj/item/I, mob/user)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]")
+ holder.overlays += I.icon_state+"+o"
+ qdel(I)
+ return 1
+
+/datum/construction/mecha/odysseus_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
+
+/datum/construction/mecha/odysseus_chassis/spawn_result()
+ var/obj/item/mecha_parts/chassis/const_holder = holder
+ const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder)
+ const_holder.icon = 'icons/mecha/mech_construction.dmi'
+ const_holder.icon_state = "odysseus0"
+ const_holder.density = 1
+ spawn()
+ qdel(src)
+ return
+/datum/construction/reversible/mecha/odysseus
+ result = "/obj/mecha/medical/odysseus"
+ steps = list(
+ //1
+ list("key"=/obj/item/weapon/weldingtool,
+ "backkey"=IS_WRENCH,
+ "desc"="External armor is wrenched."),
+ //2
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
+ "desc"="External armor is installed."),
+ //3
+ list("key"=/obj/item/stack/material/plasteel,
+ "backkey"=/obj/item/weapon/weldingtool,
+ "desc"="Internal armor is welded."),
+ //4
+ list("key"=/obj/item/weapon/weldingtool,
+ "backkey"=IS_WRENCH,
+ "desc"="Internal armor is wrenched"),
+ //5
+ list("key"=IS_WRENCH,
+ "backkey"=IS_CROWBAR,
+ "desc"="Internal armor is installed"),
+ //6
+ list("key"=/obj/item/stack/material/steel,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Peripherals control module is secured"),
+ //7
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Peripherals control module is installed"),
+ //8
+ list("key"=/obj/item/weapon/circuitboard/mecha/odysseus/peripherals,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="Central control module is secured"),
+ //9
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_CROWBAR,
+ "desc"="Central control module is installed"),
+ //10
+ list("key"=/obj/item/weapon/circuitboard/mecha/odysseus/main,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is adjusted"),
+ //11
+ list("key"=/obj/item/weapon/tool/wirecutters,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The wiring is added"),
+ //12
+ list("key"=/obj/item/stack/cable_coil,
+ "backkey"=IS_SCREWDRIVER,
+ "desc"="The hydraulic systems are active."),
+ //13
+ list("key"=IS_SCREWDRIVER,
+ "backkey"=IS_WRENCH,
+ "desc"="The hydraulic systems are connected."),
+ //14
+ list("key"=IS_WRENCH,
+ "desc"="The hydraulic systems are disconnected.")
+ )
+
+/datum/construction/reversible/mecha/odysseus/action(obj/item/I,mob/user as mob)
+ return check_step(I,user)
+
+/datum/construction/reversible/mecha/odysseus/custom_action(index, diff, obj/item/I, mob/user)
+ if(!..())
+ return 0
+
+ //TODO: better messages.
+ switch(index)
+ if(14)
+ user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
+ holder.icon_state = "odysseus1"
+ if(13)
+ if(diff==FORWARD)
+ user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
+ holder.icon_state = "odysseus2"
+ else
+ user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
+ holder.icon_state = "odysseus0"
+ if(12)
+ if(diff==FORWARD)
+ user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
+ holder.icon_state = "odysseus3"
+ else
+ user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
+ holder.icon_state = "odysseus1"
+ if(11)
+ if(diff==FORWARD)
+ user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
+ holder.icon_state = "odysseus4"
+ else
+ user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
+ qdel(I)
+ holder.icon_state = "odysseus5"
+ else
+ user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
+ holder.icon_state = "odysseus3"
+ if(9)
+ if(diff==FORWARD)
+ 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
+ qdel(I)
+ holder.icon_state = "odysseus7"
+ else
+ 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.")
+ holder.icon_state = "odysseus8"
+ else
+ user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
+ holder.icon_state = "odysseus9"
+ else
+ 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 internal armor layer.", "You secure internal armor layer.")
+ holder.icon_state = "odysseus10"
+ else
+ user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
+ var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
+ MS.amount = 5
+ holder.icon_state = "odysseus8"
+ if(4)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
+ holder.icon_state = "odysseus11"
+ else
+ 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 [I] layer to [holder].", "You install external reinforced armor layer to [holder].")
+ holder.icon_state = "odysseus12"
+ else
+ user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
+ holder.icon_state = "odysseus10"
+ if(2)
+ if(diff==FORWARD)
+ user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
+ holder.icon_state = "odysseus13"
+ else
+ var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
+ MS.amount = 5
+ user.visible_message("[user] pries [MS] from [holder].", "You prie [MS] from [holder].")
+ holder.icon_state = "odysseus11"
+ if(1)
+ if(diff==FORWARD)
+ user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
+ holder.icon_state = "odysseus14"
+ else
+ user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
+ holder.icon_state = "odysseus12"
+ return 1
+
+/datum/construction/reversible/mecha/odysseus/spawn_result()
+ ..()
+ feedback_inc("mecha_odysseus_created",1)
+ return
+
+//////////////////////
+// Phazon
+//////////////////////
/datum/construction/mecha/phazon_chassis
result = "/obj/mecha/combat/phazon"
steps = list(list("key"=/obj/item/mecha_parts/part/phazon_torso),//1
@@ -1072,224 +1294,11 @@
list("key"=/obj/item/mecha_parts/part/phazon_head)
)
- custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.overlays += used_atom.icon_state+"+o"
- qdel(used_atom)
- return 1
+/datum/construction/mecha/phazon_chassis/custom_action(step, obj/item/I, mob/user)
+ user.visible_message("[user] has connected [I] to [holder].", "You connect [I] to [holder]")
+ holder.overlays += I.icon_state+"+o"
+ qdel(I)
+ return 1
- action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
-
-
-
-
-/datum/construction/mecha/odysseus_chassis
- steps = list(list("key"=/obj/item/mecha_parts/part/odysseus_torso),//1
- list("key"=/obj/item/mecha_parts/part/odysseus_head),//2
- list("key"=/obj/item/mecha_parts/part/odysseus_left_arm),//3
- list("key"=/obj/item/mecha_parts/part/odysseus_right_arm),//4
- list("key"=/obj/item/mecha_parts/part/odysseus_left_leg),//5
- list("key"=/obj/item/mecha_parts/part/odysseus_right_leg)//6
- )
-
- custom_action(step, atom/used_atom, mob/user)
- user.visible_message("[user] has connected [used_atom] to [holder].", "You connect [used_atom] to [holder]")
- holder.overlays += used_atom.icon_state+"+o"
- qdel(used_atom)
- return 1
-
- action(atom/used_atom,mob/user as mob)
- return check_all_steps(used_atom,user)
-
- spawn_result()
- var/obj/item/mecha_parts/chassis/const_holder = holder
- const_holder.construct = new /datum/construction/reversible/mecha/odysseus(const_holder)
- const_holder.icon = 'icons/mecha/mech_construction.dmi'
- const_holder.icon_state = "odysseus0"
- const_holder.density = 1
- spawn()
- qdel(src)
- return
-
-
-/datum/construction/reversible/mecha/odysseus
- result = "/obj/mecha/medical/odysseus"
- steps = list(
- //1
- list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
- "desc"="External armor is wrenched."),
- //2
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
- "desc"="External armor is installed."),
- //3
- list("key"=/obj/item/stack/material/plasteel,
- "backkey"=/obj/item/weapon/weldingtool,
- "desc"="Internal armor is welded."),
- //4
- list("key"=/obj/item/weapon/weldingtool,
- "backkey"=/obj/item/weapon/wrench,
- "desc"="Internal armor is wrenched"),
- //5
- list("key"=/obj/item/weapon/wrench,
- "backkey"=/obj/item/weapon/crowbar,
- "desc"="Internal armor is installed"),
- //6
- list("key"=/obj/item/stack/material/steel,
- "backkey"=/obj/item/weapon/screwdriver,
- "desc"="Peripherals control module is secured"),
- //7
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
- "desc"="Peripherals control module is installed"),
- //8
- list("key"=/obj/item/weapon/circuitboard/mecha/odysseus/peripherals,
- "backkey"=/obj/item/weapon/screwdriver,
- "desc"="Central control module is secured"),
- //9
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/crowbar,
- "desc"="Central control module is installed"),
- //10
- list("key"=/obj/item/weapon/circuitboard/mecha/odysseus/main,
- "backkey"=/obj/item/weapon/screwdriver,
- "desc"="The wiring is adjusted"),
- //11
- list("key"=/obj/item/weapon/wirecutters,
- "backkey"=/obj/item/weapon/screwdriver,
- "desc"="The wiring is added"),
- //12
- list("key"=/obj/item/stack/cable_coil,
- "backkey"=/obj/item/weapon/screwdriver,
- "desc"="The hydraulic systems are active."),
- //13
- list("key"=/obj/item/weapon/screwdriver,
- "backkey"=/obj/item/weapon/wrench,
- "desc"="The hydraulic systems are connected."),
- //14
- list("key"=/obj/item/weapon/wrench,
- "desc"="The hydraulic systems are disconnected.")
- )
-
- action(atom/used_atom,mob/user as mob)
- return check_step(used_atom,user)
-
- custom_action(index, diff, atom/used_atom, mob/user)
- if(!..())
- return 0
-
- //TODO: better messages.
- switch(index)
- if(14)
- user.visible_message("[user] connects [holder] hydraulic systems", "You connect [holder] hydraulic systems.")
- holder.icon_state = "odysseus1"
- if(13)
- if(diff==FORWARD)
- user.visible_message("[user] activates [holder] hydraulic systems.", "You activate [holder] hydraulic systems.")
- holder.icon_state = "odysseus2"
- else
- user.visible_message("[user] disconnects [holder] hydraulic systems", "You disconnect [holder] hydraulic systems.")
- holder.icon_state = "odysseus0"
- if(12)
- if(diff==FORWARD)
- user.visible_message("[user] adds the wiring to [holder].", "You add the wiring to [holder].")
- holder.icon_state = "odysseus3"
- else
- user.visible_message("[user] deactivates [holder] hydraulic systems.", "You deactivate [holder] hydraulic systems.")
- holder.icon_state = "odysseus1"
- if(11)
- if(diff==FORWARD)
- user.visible_message("[user] adjusts the wiring of [holder].", "You adjust the wiring of [holder].")
- holder.icon_state = "odysseus4"
- else
- user.visible_message("[user] removes the wiring from [holder].", "You remove the wiring from [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 [holder].", "You install the central computer mainboard into [holder].")
- qdel(used_atom)
- holder.icon_state = "odysseus5"
- else
- user.visible_message("[user] disconnects the wiring of [holder].", "You disconnect the wiring of [holder].")
- holder.icon_state = "odysseus3"
- if(9)
- if(diff==FORWARD)
- 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 [holder].", "You remove the central computer mainboard from [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 [holder].", "You install the peripherals control module into [holder].")
- qdel(used_atom)
- holder.icon_state = "odysseus7"
- else
- 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.")
- holder.icon_state = "odysseus8"
- else
- user.visible_message("[user] removes the peripherals control module from [holder].", "You remove the peripherals control module from [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 internal armor layer to [holder].", "You install internal armor layer to [holder].")
- holder.icon_state = "odysseus9"
- else
- 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 internal armor layer.", "You secure internal armor layer.")
- holder.icon_state = "odysseus10"
- else
- user.visible_message("[user] pries internal armor layer from [holder].", "You prie internal armor layer from [holder].")
- var/obj/item/stack/material/steel/MS = new /obj/item/stack/material/steel(get_turf(holder))
- MS.amount = 5
- holder.icon_state = "odysseus8"
- if(4)
- if(diff==FORWARD)
- user.visible_message("[user] welds internal armor layer to [holder].", "You weld the internal armor layer to [holder].")
- holder.icon_state = "odysseus11"
- else
- 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 [holder].", "You install external reinforced armor layer to [holder].")
-
- holder.icon_state = "odysseus12"
- else
- user.visible_message("[user] cuts internal armor layer from [holder].", "You cut the internal armor layer from [holder].")
- holder.icon_state = "odysseus10"
- if(2)
- if(diff==FORWARD)
- user.visible_message("[user] secures external armor layer.", "You secure external reinforced armor layer.")
- holder.icon_state = "odysseus13"
- else
- var/obj/item/stack/material/plasteel/MS = new /obj/item/stack/material/plasteel(get_turf(holder))
- MS.amount = 5
- user.visible_message("[user] pries [MS] from [holder].", "You prie [MS] from [holder].")
- holder.icon_state = "odysseus11"
- if(1)
- if(diff==FORWARD)
- user.visible_message("[user] welds external armor layer to [holder].", "You weld external armor layer to [holder].")
- holder.icon_state = "odysseus14"
- else
- user.visible_message("[user] unfastens the external armor layer.", "You unfasten the external armor layer.")
- holder.icon_state = "odysseus12"
- return 1
-
- spawn_result()
- ..()
- feedback_inc("mecha_odysseus_created",1)
- return
+/datum/construction/mecha/phazon_chassis/action(obj/item/I,mob/user as mob)
+ return check_all_steps(I,user)
\ No newline at end of file
diff --git a/code/game/mecha/mecha_wreckage.dm b/code/game/mecha/mecha_wreckage.dm
index 39620c47426..73cee1223b7 100644
--- a/code/game/mecha/mecha_wreckage.dm
+++ b/code/game/mecha/mecha_wreckage.dm
@@ -34,7 +34,7 @@
if(istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = W
if(salvage_num <= 0)
- user << "You don't see anything that can be cut with [W]."
+ to_chat(user, "You don't see anything that can be cut with [W].")
return
if (!isemptylist(welder_salvage) && WT.remove_fuel(0,user))
var/type = prob(70)?pick(welder_salvage):null
@@ -45,13 +45,13 @@
welder_salvage -= type
salvage_num--
else
- user << "You failed to salvage anything valuable from [src]."
+ to_chat(user, "You failed to salvage anything valuable from [src].")
else
- user << "You need more welding fuel to complete this task."
+ to_chat(user, "You need more welding fuel to complete this task.")
return
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
if(salvage_num <= 0)
- user << "You don't see anything that can be cut with [W]."
+ to_chat(user, "You don't see anything that can be cut with [W].")
return
else if(!isemptylist(wirecutters_salvage))
var/type = prob(70)?pick(wirecutters_salvage):null
@@ -60,8 +60,8 @@
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]."
- if(istype(W, /obj/item/weapon/crowbar))
+ to_chat(user, "You failed to salvage anything valuable from [src].")
+ if(W.is_crowbar())
if(!isemptylist(crowbar_salvage))
var/obj/S = pick(crowbar_salvage)
if(S)
@@ -70,7 +70,7 @@
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 [W]."
+ to_chat(user, "You don't see anything that can be pried with [W].")
else
..()
return
diff --git a/code/game/objects/effects/decals/contraband.dm b/code/game/objects/effects/decals/contraband.dm
index 695f8d3b792..0d7370d2698 100644
--- a/code/game/objects/effects/decals/contraband.dm
+++ b/code/game/objects/effects/decals/contraband.dm
@@ -122,7 +122,7 @@
icon_state = design.icon_state // poster[serial_number]
/obj/structure/sign/poster/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
playsound(src.loc, W.usesound, 100, 1)
if(ruined)
user << "You remove the remnants of the poster."
diff --git a/code/game/objects/effects/mines.dm b/code/game/objects/effects/mines.dm
index a1a6623ff1d..9ea690318b5 100644
--- a/code/game/objects/effects/mines.dm
+++ b/code/game/objects/effects/mines.dm
@@ -47,13 +47,13 @@
explode(M)
/obj/effect/mine/attackby(obj/item/W as obj, mob/living/user as mob)
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
panel_open = !panel_open
user.visible_message("[user] very carefully screws the mine's panel [panel_open ? "open" : "closed"].",
"You very carefully screw the mine's panel [panel_open ? "open" : "closed"].")
playsound(src.loc, W.usesound, 50, 1)
- else if((iswirecutter(W) || ismultitool(W)) && panel_open)
+ else if((W.is_wirecutter() || istype(W, /obj/item/device/multitool)) && panel_open)
interact(user)
else
..()
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index b732e1c546a..4a80379c16a 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -806,3 +806,27 @@ modules/mob/living/carbon/human/life.dm if you die, you will be zoomed out.
/obj/item/proc/apply_accessories(var/image/standing)
return standing
+/*
+ * Assorted tool procs, so any item can emulate any tool, if coded
+*/
+/obj/item/proc/is_screwdriver()
+ return FALSE
+
+/obj/item/proc/is_wrench()
+ return FALSE
+
+/obj/item/proc/is_crowbar()
+ return FALSE
+
+/obj/item/proc/is_wirecutter()
+ return FALSE
+
+// These next three might bug out or runtime, unless someone goes back and finds a way to generalize their specific code
+/obj/item/proc/is_cable_coil()
+ return FALSE
+
+/obj/item/proc/is_multitool()
+ return FALSE
+
+/obj/item/proc/is_welder()
+ return FALSE
\ No newline at end of file
diff --git a/code/game/objects/items/apc_frame.dm b/code/game/objects/items/apc_frame.dm
index fd2ea3e94bd..fe40f772dd7 100644
--- a/code/game/objects/items/apc_frame.dm
+++ b/code/game/objects/items/apc_frame.dm
@@ -9,7 +9,7 @@
/obj/item/frame/apc/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
- if (istype(W, /obj/item/weapon/wrench))
+ if (W.is_wrench())
new /obj/item/stack/material/steel( get_turf(src.loc), 2 )
qdel(src)
diff --git a/code/game/objects/items/bodybag.dm b/code/game/objects/items/bodybag.dm
index 302c7df568c..324c5560a31 100644
--- a/code/game/objects/items/bodybag.dm
+++ b/code/game/objects/items/bodybag.dm
@@ -42,7 +42,7 @@
storage_capacity = (MOB_MEDIUM * 2) - 1
var/contains_body = 0
-/obj/structure/closet/body_bag/attackby(W as obj, mob/user as mob)
+/obj/structure/closet/body_bag/attackby(var/obj/item/W as obj, mob/user as mob)
if (istype(W, /obj/item/weapon/pen))
var/t = input(user, "What would you like the label to be?", text("[]", src.name), null) as text
if (user.get_active_hand() != W)
@@ -58,7 +58,7 @@
src.name = "body bag"
//..() //Doesn't need to run the parent. Since when can fucking bodybags be welded shut? -Agouri
return
- else if(istype(W, /obj/item/weapon/wirecutters))
+ else if(W.is_wirecutter())
to_chat(user, "You cut the tag off the bodybag")
src.name = "body bag"
src.overlays.Cut()
@@ -239,7 +239,7 @@
inject_occupant(H)
break
- else if(istype(W,/obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
if(syringe)
if(used)
to_chat(user,"The injector cannot be removed now that the stasis bag has been used!")
diff --git a/code/game/objects/items/devices/defib.dm b/code/game/objects/items/devices/defib.dm
index af9d697d63c..9b127da04a1 100644
--- a/code/game/objects/items/devices/defib.dm
+++ b/code/game/objects/items/devices/defib.dm
@@ -94,7 +94,7 @@
to_chat(user, "You install a cell in \the [src].")
update_icon()
- else if(isscrewdriver(W))
+ else if(W.is_screwdriver())
if(bcell)
bcell.update_icon()
bcell.forceMove(get_turf(src.loc))
diff --git a/code/game/objects/items/devices/hacktool.dm b/code/game/objects/items/devices/hacktool.dm
index 9ae5f62732b..b5d6439da32 100644
--- a/code/game/objects/items/devices/hacktool.dm
+++ b/code/game/objects/items/devices/hacktool.dm
@@ -24,7 +24,7 @@
return ..()
/obj/item/device/multitool/hacktool/attackby(var/obj/item/W, var/mob/user)
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
in_hack_mode = !in_hack_mode
playsound(src.loc, W.usesound, 50, 1)
else
diff --git a/code/game/objects/items/devices/laserpointer.dm b/code/game/objects/items/devices/laserpointer.dm
index 69905f0cb8a..343a58ce1a2 100644
--- a/code/game/objects/items/devices/laserpointer.dm
+++ b/code/game/objects/items/devices/laserpointer.dm
@@ -54,7 +54,7 @@
else
to_chat(user, "[src] already has a diode.")
- else if(istype(W, /obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
if(diode)
to_chat(user, "You remove the [diode.name] from the [src].")
diode.loc = get_turf(src.loc)
diff --git a/code/game/objects/items/devices/powersink.dm b/code/game/objects/items/devices/powersink.dm
index f3bc620d089..6ea73e8c783 100644
--- a/code/game/objects/items/devices/powersink.dm
+++ b/code/game/objects/items/devices/powersink.dm
@@ -30,13 +30,13 @@
..()
/obj/item/device/powersink/attackby(var/obj/item/I, var/mob/user)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
if(mode == 0)
var/turf/T = loc
if(isturf(T) && !!T.is_plating())
attached = locate() in T
if(!attached)
- user << "No exposed cable here to attach to."
+ to_chat(user, "No exposed cable here to attach to.")
return
else
anchored = 1
@@ -45,7 +45,7 @@
playsound(src, I.usesound, 50, 1)
return
else
- user << "Device must be placed over an exposed cable to attach to it."
+ to_chat(user, "Device must be placed over an exposed cable to attach to it.")
return
else
if (mode == 2)
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 105eb3aa8fc..a67a2bef7bd 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -40,8 +40,8 @@
if(!(..(user, 1) && radio_desc))
return
- user << "The following channels are available:"
- user << radio_desc
+ to_chat(user, "The following channels are available:")
+ to_chat(user, radio_desc)
/obj/item/device/radio/headset/handle_message_mode(mob/living/M as mob, message, channel)
if (channel == "special")
@@ -326,10 +326,10 @@
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..()
user.set_machine(src)
- if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
+ if(!(W.is_screwdriver() || istype(W, /obj/item/device/encryptionkey)))
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(keyslot1 || keyslot2)
@@ -353,15 +353,15 @@
keyslot2 = null
recalculateChannels()
- user << "You pop out the encryption keys in the headset!"
+ to_chat(user, "You pop out the encryption keys in the headset!")
playsound(src, W.usesound, 50, 1)
else
- user << "This headset doesn't have any encryption keys! How useless..."
+ to_chat(user, "This headset doesn't have any encryption keys! How useless...")
if(istype(W, /obj/item/device/encryptionkey/))
if(keyslot1 && keyslot2)
- user << "The headset can't hold another key!"
+ to_chat(user, "The headset can't hold another key!")
return
if(!keyslot1)
diff --git a/code/game/objects/items/devices/radio/intercom.dm b/code/game/objects/items/devices/radio/intercom.dm
index 011032584ad..364323d1838 100644
--- a/code/game/objects/items/devices/radio/intercom.dm
+++ b/code/game/objects/items/devices/radio/intercom.dm
@@ -118,9 +118,9 @@
/obj/item/device/radio/intercom/attackby(obj/item/W as obj, mob/user as mob)
add_fingerprint(user)
- if(istype(W, /obj/item/weapon/screwdriver)) // Opening the intercom up.
+ if(W.is_screwdriver()) // Opening the intercom up.
wiresexposed = !wiresexposed
- user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
+ to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]")
playsound(src, W.usesound, 50, 1)
if(wiresexposed)
if(!on)
@@ -130,7 +130,7 @@
else
icon_state = "intercom"
return
- if(wiresexposed && istype(W, /obj/item/weapon/wirecutters))
+ if(wiresexposed && W.is_wirecutter())
user.visible_message("[user] has cut the wires inside \the [src]!", "You have cut the wires inside \the [src].")
playsound(src, W.usesound, 50, 1)
new/obj/item/stack/cable_coil(get_turf(src), 5)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 801b7e60cfa..350caf013c7 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -561,7 +561,7 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
user.set_machine(src)
- if (!( istype(W, /obj/item/weapon/screwdriver) ))
+ if (!W.is_screwdriver())
return
b_stat = !( b_stat )
if(!istype(src, /obj/item/device/radio/beacon))
@@ -613,10 +613,10 @@ var/global/list/default_medbay_channels = list(
/obj/item/device/radio/borg/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..()
user.set_machine(src)
- if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
+ if (!(W.is_screwdriver() || istype(W, /obj/item/device/encryptionkey)))
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(keyslot)
@@ -632,15 +632,15 @@ var/global/list/default_medbay_channels = list(
keyslot = null
recalculateChannels()
- user << "You pop out the encryption key in the radio!"
+ to_chat(user, "You pop out the encryption key in the radio!")
playsound(src, W.usesound, 50, 1)
else
- user << "This radio doesn't have any encryption keys!"
+ to_chat(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!"
+ to_chat(user, "The radio can't hold another key!")
return
if(!keyslot)
@@ -692,9 +692,9 @@ var/global/list/default_medbay_channels = list(
if(enable_subspace_transmission != subspace_transmission)
subspace_transmission = !subspace_transmission
if(subspace_transmission)
- usr << "Subspace Transmission is enabled"
+ to_chat(usr, "Subspace Transmission is enabled")
else
- usr << "Subspace Transmission is disabled"
+ to_chat(usr, "Subspace Transmission is disabled")
if(subspace_transmission == 0)//Simple as fuck, clears the channel list to prevent talking/listening over them if subspace transmission is disabled
channels = list()
@@ -707,10 +707,10 @@ var/global/list/default_medbay_channels = list(
shut_up = !shut_up
if(shut_up)
canhear_range = 0
- usr << "Loadspeaker disabled."
+ to_chat(usr, "Loadspeaker disabled.")
else
canhear_range = 3
- usr << "Loadspeaker enabled."
+ to_chat(usr, "Loadspeaker enabled.")
. = 1
if(.)
diff --git a/code/game/objects/items/devices/suit_cooling.dm b/code/game/objects/items/devices/suit_cooling.dm
index 2040f22a990..6efc0457851 100644
--- a/code/game/objects/items/devices/suit_cooling.dm
+++ b/code/game/objects/items/devices/suit_cooling.dm
@@ -122,7 +122,7 @@
cell.add_fingerprint(user)
cell.update_icon()
- user << "You remove \the [src.cell]."
+ to_chat(user, "You remove \the [src.cell].")
src.cell = null
updateicon()
return
@@ -134,16 +134,16 @@
turn_off()
else
turn_on()
- user << "You switch \the [src] [on ? "on" : "off"]."
+ to_chat(user, "You switch \the [src] [on ? "on" : "off"].")
/obj/item/device/suit_cooling_unit/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W, /obj/item/weapon/screwdriver))
+ if (W.is_screwdriver())
if(cover_open)
cover_open = 0
- user << "You screw the panel into place."
+ to_chat(user, "You screw the panel into place.")
else
cover_open = 1
- user << "You unscrew the panel."
+ to_chat(user, "You unscrew the panel.")
playsound(src, W.usesound, 50, 1)
updateicon()
return
@@ -151,12 +151,12 @@
if (istype(W, /obj/item/weapon/cell))
if(cover_open)
if(cell)
- user << "There is a [cell] already installed here."
+ to_chat(user, "There is a [cell] already installed here.")
else
user.drop_item()
W.loc = src
cell = W
- user << "You insert the [cell]."
+ to_chat(user, "You insert the [cell].")
updateicon()
return
@@ -177,19 +177,19 @@
if (on)
if (attached_to_suit(src.loc))
- user << "It's switched on and running."
+ to_chat(user, "It's switched on and running.")
else
- user << "It's switched on, but not attached to anything."
+ to_chat(user, "It's switched on, but not attached to anything.")
else
- user << "It is switched off."
+ to_chat(user, "It is switched off.")
if (cover_open)
if(cell)
- user << "The panel is open, exposing the [cell]."
+ to_chat(user, "The panel is open, exposing the [cell].")
else
- user << "The panel is open."
+ to_chat(user, "The panel is open.")
if (cell)
- user << "The charge meter reads [round(cell.percent())]%."
+ to_chat(user, "The charge meter reads [round(cell.percent())]%.")
else
- user << "It doesn't have a power cell installed."
+ to_chat(user, "It doesn't have a power cell installed.")
diff --git a/code/game/objects/items/devices/taperecorder.dm b/code/game/objects/items/devices/taperecorder.dm
index 791725c14bd..841bcc18ed7 100644
--- a/code/game/objects/items/devices/taperecorder.dm
+++ b/code/game/objects/items/devices/taperecorder.dm
@@ -414,7 +414,7 @@
/obj/item/device/tape/attackby(obj/item/I, mob/user, params)
- if(ruined && istype(I, /obj/item/weapon/screwdriver))
+ if(ruined && I.is_screwdriver())
to_chat(user, "You start winding the tape back in...")
playsound(src, I.usesound, 50, 1)
if(do_after(user, 120 * I.toolspeed, target = src))
diff --git a/code/game/objects/items/weapons/circuitboards/computer/research.dm b/code/game/objects/items/weapons/circuitboards/computer/research.dm
index fa9ed167971..791cd51cdca 100644
--- a/code/game/objects/items/weapons/circuitboards/computer/research.dm
+++ b/code/game/objects/items/weapons/circuitboards/computer/research.dm
@@ -7,15 +7,15 @@
build_path = /obj/machinery/computer/rdconsole/core
/obj/item/weapon/circuitboard/rdconsole/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I,/obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
playsound(src, I.usesound, 50, 1)
user.visible_message("\The [user] adjusts the jumper on \the [src]'s access protocol pins.", "You adjust the jumper on the access protocol pins.")
if(build_path == /obj/machinery/computer/rdconsole/core)
name = T_BOARD("RD Console - Robotics")
build_path = /obj/machinery/computer/rdconsole/robotics
- user << "Access protocols set to robotics."
+ to_chat(user, "Access protocols set to robotics.")
else
name = T_BOARD("RD Console")
build_path = /obj/machinery/computer/rdconsole/core
- user << "Access protocols set to default."
+ to_chat(user, "Access protocols set to default.")
return
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/circuitboards/machinery/research.dm b/code/game/objects/items/weapons/circuitboards/machinery/research.dm
index 31e0d9c063a..3fc0aa26ab9 100644
--- a/code/game/objects/items/weapons/circuitboards/machinery/research.dm
+++ b/code/game/objects/items/weapons/circuitboards/machinery/research.dm
@@ -12,17 +12,17 @@ obj/item/weapon/circuitboard/rdserver
/obj/item/weapon/stock_parts/scanning_module = 1)
obj/item/weapon/circuitboard/rdserver/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I,/obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
playsound(src, I.usesound, 50, 1)
user.visible_message("\The [user] adjusts the jumper on \the [src]'s access protocol pins.", "You adjust the jumper on the access protocol pins.")
if(build_path == /obj/machinery/r_n_d/server/core)
name = T_BOARD("RD Console - Robotics")
build_path = /obj/machinery/r_n_d/server/robotics
- user << "Access protocols set to robotics."
+ to_chat(user, "Access protocols set to robotics.")
else
name = T_BOARD("RD Console")
build_path = /obj/machinery/r_n_d/server/core
- user << "Access protocols set to default."
+ to_chat(user, "Access protocols set to default.")
return
/obj/item/weapon/circuitboard/destructive_analyzer
diff --git a/code/game/objects/items/weapons/explosives.dm b/code/game/objects/items/weapons/explosives.dm
index b49a76c5a9a..5290ac74799 100644
--- a/code/game/objects/items/weapons/explosives.dm
+++ b/code/game/objects/items/weapons/explosives.dm
@@ -25,11 +25,11 @@
return ..()
/obj/item/weapon/plastique/attackby(var/obj/item/I, var/mob/user)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
open_panel = !open_panel
user << "You [open_panel ? "open" : "close"] the wire panel."
playsound(src, I.usesound, 50, 1)
- else if(istype(I, /obj/item/weapon/wirecutters) || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler ))
+ else if(I.is_wirecutter() || istype(I, /obj/item/device/multitool) || istype(I, /obj/item/device/assembly/signaler ))
wires.Interact(user)
else
..()
diff --git a/code/game/objects/items/weapons/flamethrower.dm b/code/game/objects/items/weapons/flamethrower.dm
index 649b5677cad..3f62ac2725a 100644
--- a/code/game/objects/items/weapons/flamethrower.dm
+++ b/code/game/objects/items/weapons/flamethrower.dm
@@ -70,7 +70,7 @@
/obj/item/weapon/flamethrower/attackby(obj/item/W as obj, mob/user as mob)
if(user.stat || user.restrained() || user.lying) return
- if(iswrench(W) && !status)//Taking this apart
+ if(W.is_wrench() && !status)//Taking this apart
var/turf/T = get_turf(src)
if(weldtool)
weldtool.loc = T
@@ -85,7 +85,7 @@
qdel(src)
return
- if(isscrewdriver(W) && igniter && !lit)
+ if(W.is_screwdriver() && igniter && !lit)
status = !status
user << "[igniter] is now [status ? "secured" : "unsecured"]!"
update_icon()
diff --git a/code/game/objects/items/weapons/gift_wrappaper.dm b/code/game/objects/items/weapons/gift_wrappaper.dm
index bef0f8fcd9b..177d674c6b0 100644
--- a/code/game/objects/items/weapons/gift_wrappaper.dm
+++ b/code/game/objects/items/weapons/gift_wrappaper.dm
@@ -46,7 +46,7 @@
/obj/effect/spresent/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
- if (!istype(W, /obj/item/weapon/wirecutters))
+ if (!W.is_wirecutter())
user << "I need wirecutters for that."
return
@@ -129,7 +129,8 @@
if (!( locate(/obj/structure/table, src.loc) ))
user << "You MUST put the paper on a table!"
if (W.w_class < ITEMSIZE_LARGE)
- if (user.get_type_in_hands(/obj/item/weapon/wirecutters))
+ var/obj/item/I = user.get_inactive_hand()
+ if(I.is_wirecutter())
var/a_used = 2 ** (src.w_class - 1)
if (src.amount < a_used)
user << "You need more paper!"
diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm
index 92de17d9943..f8b1f5692d2 100644
--- a/code/game/objects/items/weapons/grenades/chem_grenade.dm
+++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm
@@ -41,7 +41,7 @@
user.put_in_hands(B)
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
if(stage > 1 && !active && clown_check(user))
- user << "You prime \the [name]!"
+ to_chat(user, "You prime \the [name]!")
msg_admin_attack("[key_name_admin(user)] primed \a [src]")
@@ -56,13 +56,13 @@
if(istype(W,/obj/item/device/assembly_holder) && (!stage || stage==1) && path != 2)
var/obj/item/device/assembly_holder/det = W
if(istype(det.a_left,det.a_right.type) || (!isigniter(det.a_left) && !isigniter(det.a_right)))
- user << "Assembly must contain one igniter."
+ to_chat(user, "Assembly must contain one igniter.")
return
if(!det.secured)
- user << "Assembly must be secured with screwdriver."
+ to_chat(user, "Assembly must be secured with screwdriver.")
return
path = 1
- user << "You add [W] to the metal casing."
+ to_chat(user, "You add [W] to the metal casing.")
playsound(src.loc, 'sound/items/Screwdriver2.ogg', 25, -3)
user.remove_from_mob(det)
det.loc = src
@@ -76,26 +76,26 @@
icon_state = initial(icon_state) +"_ass"
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
stage = 1
- else if(istype(W,/obj/item/weapon/screwdriver) && path != 2)
+ else if(W.is_screwdriver() && path != 2)
if(stage == 1)
path = 1
if(beakers.len)
- user << "You lock the assembly."
+ to_chat(user, "You lock the assembly.")
name = "grenade"
else
-// user << "You need to add at least one beaker before locking the assembly."
- user << "You lock the empty assembly."
+// to_chat(user, "You need to add at least one beaker before locking the assembly.")
+ to_chat(user, "You lock the empty assembly.")
name = "fake grenade"
playsound(src, W.usesound, 50, 1)
icon_state = initial(icon_state) +"_locked"
stage = 2
else if(stage == 2)
if(active && prob(95))
- user << "You trigger the assembly!"
+ to_chat(user, "You trigger the assembly!")
prime()
return
else
- user << "You unlock the assembly."
+ to_chat(user, "You unlock the assembly.")
playsound(src.loc, W.usesound, 50, -3)
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
icon_state = initial(icon_state) + (detonator?"_ass":"")
@@ -104,23 +104,23 @@
else if(is_type_in_list(W, allowed_containers) && (!stage || stage==1) && path != 2)
path = 1
if(beakers.len == 2)
- user << "The grenade can not hold more containers."
+ to_chat(user, "The grenade can not hold more containers.")
return
else
if(W.reagents.total_volume)
- user << "You add \the [W] to the assembly."
+ to_chat(user, "You add \the [W] to the assembly.")
user.drop_item()
W.loc = src
beakers += W
stage = 1
name = "unsecured grenade with [beakers.len] containers[detonator?" and detonator":""]"
else
- user << "\The [W] is empty."
+ to_chat(user, "\The [W] is empty.")
examine(mob/user)
..(user)
if(detonator)
- user << "With attached [detonator.name]"
+ to_chat(user, "With attached [detonator.name]")
activate(mob/user as mob)
if(active) return
diff --git a/code/game/objects/items/weapons/grenades/grenade.dm b/code/game/objects/items/weapons/grenades/grenade.dm
index 5854e02cac6..3d91607ce2e 100644
--- a/code/game/objects/items/weapons/grenades/grenade.dm
+++ b/code/game/objects/items/weapons/grenades/grenade.dm
@@ -91,7 +91,7 @@
/obj/item/weapon/grenade/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
switch(det_time)
if (1)
det_time = 10
diff --git a/code/game/objects/items/weapons/implants/implantcircuits.dm b/code/game/objects/items/weapons/implants/implantcircuits.dm
index 7dd29055f3a..2b87e8fae53 100644
--- a/code/game/objects/items/weapons/implants/implantcircuits.dm
+++ b/code/game/objects/items/weapons/implants/implantcircuits.dm
@@ -39,7 +39,7 @@
IC.examine(user)
/obj/item/weapon/implant/integrated_circuit/attackby(var/obj/item/O, var/mob/user)
- if(istype(O, /obj/item/weapon/crowbar) || istype(O, /obj/item/device/integrated_electronics) || istype(O, /obj/item/integrated_circuit) || istype(O, /obj/item/weapon/screwdriver) || istype(O, /obj/item/weapon/cell/device) )
+ if(O.is_crowbar() || istype(O, /obj/item/device/integrated_electronics) || istype(O, /obj/item/integrated_circuit) || O.is_screwdriver() || istype(O, /obj/item/weapon/cell/device) )
IC.attackby(O, user)
else
..()
diff --git a/code/game/objects/items/weapons/improvised_components.dm b/code/game/objects/items/weapons/improvised_components.dm
index 105a76473fa..ded033a746a 100644
--- a/code/game/objects/items/weapons/improvised_components.dm
+++ b/code/game/objects/items/weapons/improvised_components.dm
@@ -7,8 +7,8 @@
thrown_force_divisor = 0.1
/obj/item/weapon/material/butterflyconstruction/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W,/obj/item/weapon/screwdriver))
- user << "You finish the concealed blade weapon."
+ if(W.is_screwdriver())
+ to_chat(user, "You finish the concealed blade weapon.")
playsound(src, W.usesound, 50, 1)
new /obj/item/weapon/material/butterfly(user.loc, material.name)
qdel(src)
@@ -33,7 +33,7 @@
/obj/item/weapon/material/butterflyhandle/attackby(obj/item/W as obj, mob/user as mob)
if(istype(W,/obj/item/weapon/material/butterflyblade))
var/obj/item/weapon/material/butterflyblade/B = W
- user << "You attach the two concealed blade parts."
+ to_chat(user, "You attach the two concealed blade parts.")
new /obj/item/weapon/material/butterflyconstruction(user.loc, B.material.name)
qdel(W)
qdel(src)
@@ -58,10 +58,10 @@
if(istype(I, /obj/item/weapon/material/shard) || istype(I, /obj/item/weapon/material/butterflyblade))
var/obj/item/weapon/material/tmp_shard = I
finished = new /obj/item/weapon/material/twohanded/spear(get_turf(user), tmp_shard.material.name)
- user << "You fasten \the [I] to the top of the rod with the cable."
- else if(istype(I, /obj/item/weapon/wirecutters))
+ to_chat(user, "You fasten \the [I] to the top of the rod with the cable.")
+ else if(I.is_wirecutter())
finished = new /obj/item/weapon/melee/baton/cattleprod(get_turf(user))
- user << "You fasten the wirecutters to the top of the rod with the cable, prongs outward."
+ to_chat(user, "You fasten the wirecutters to the top of the rod with the cable, prongs outward.")
if(finished)
user.drop_from_inventory(src)
user.drop_from_inventory(I)
diff --git a/code/game/objects/items/weapons/material/gravemarker.dm b/code/game/objects/items/weapons/material/gravemarker.dm
index f50416b05da..aff9a9e5ce1 100644
--- a/code/game/objects/items/weapons/material/gravemarker.dm
+++ b/code/game/objects/items/weapons/material/gravemarker.dm
@@ -12,7 +12,7 @@
var/epitaph = "" //A quick little blurb
/obj/item/weapon/material/gravemarker/attackby(obj/item/weapon/W, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
var/carving_1 = sanitizeSafe(input(user, "Who is \the [src.name] for?", "Gravestone Naming", null) as text, MAX_NAME_LEN)
if(carving_1)
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
@@ -27,7 +27,7 @@
user.visible_message("[user] carves something into \the [src.name].", "You carve your message into \the [src.name].")
epitaph += carving_2
update_icon()
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
material.place_dismantled_product(get_turf(src))
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 51b1c50274d..c7607d5aeb8 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -43,11 +43,11 @@
icon_state = "utility"
can_hold = list(
///obj/item/weapon/combitool,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/screwdriver,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/screwdriver,
/obj/item/weapon/weldingtool,
- /obj/item/weapon/wirecutters,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/wirecutters,
+ /obj/item/weapon/tool/wrench,
/obj/item/device/multitool,
/obj/item/device/flashlight,
/obj/item/weapon/cell/device,
@@ -71,21 +71,21 @@
/obj/item/weapon/storage/belt/utility/full
starts_with = list(
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wrench,
/obj/item/weapon/weldingtool,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/wirecutters,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/wirecutters,
/obj/item/stack/cable_coil/random_belt
)
/obj/item/weapon/storage/belt/utility/atmostech
starts_with = list(
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wrench,
/obj/item/weapon/weldingtool,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/wirecutters,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/wirecutters,
)
/obj/item/weapon/storage/belt/utility/chief
@@ -96,8 +96,8 @@
/obj/item/weapon/storage/belt/utility/chief/full
starts_with = list(
- /obj/item/weapon/screwdriver/power,
- /obj/item/weapon/crowbar/power,
+ /obj/item/weapon/tool/screwdriver/power,
+ /obj/item/weapon/tool/crowbar/power,
/obj/item/weapon/weldingtool/experimental,
/obj/item/device/multitool,
/obj/item/stack/cable_coil/random_belt,
@@ -130,7 +130,7 @@
/obj/item/clothing/gloves,
/obj/item/weapon/reagent_containers/hypospray,
/obj/item/clothing/glasses,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/device/flashlight,
/obj/item/weapon/cell/device,
/obj/item/weapon/extinguisher/mini,
@@ -241,11 +241,11 @@
/obj/item/weapon/storage/belt/utility/alien/full
starts_with = list(
- /obj/item/weapon/screwdriver/alien,
- /obj/item/weapon/wrench/alien,
+ /obj/item/weapon/tool/screwdriver/alien,
+ /obj/item/weapon/tool/wrench/alien,
/obj/item/weapon/weldingtool/alien,
- /obj/item/weapon/crowbar/alien,
- /obj/item/weapon/wirecutters/alien,
+ /obj/item/weapon/tool/crowbar/alien,
+ /obj/item/weapon/tool/wirecutters/alien,
/obj/item/device/multitool/alien,
/obj/item/stack/cable_coil/alien
)
@@ -278,7 +278,7 @@
/obj/item/clothing/gloves,
/obj/item/weapon/reagent_containers/hypospray,
/obj/item/clothing/glasses,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/device/flashlight,
/obj/item/weapon/cell/device,
/obj/item/weapon/extinguisher/mini,
@@ -368,7 +368,7 @@
/obj/item/weapon/clipboard,
/obj/item/weapon/anodevice,
/obj/item/clothing/glasses,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/wrench,
/obj/item/weapon/storage/excavation,
/obj/item/weapon/anobattery,
/obj/item/device/ano_scanner,
diff --git a/code/game/objects/items/weapons/storage/secure.dm b/code/game/objects/items/weapons/storage/secure.dm
index 78a2d940ad8..081dcdcb2dd 100644
--- a/code/game/objects/items/weapons/storage/secure.dm
+++ b/code/game/objects/items/weapons/storage/secure.dm
@@ -41,13 +41,13 @@
playsound(src.loc, "sparks", 50, 1)
return
- if (istype(W, /obj/item/weapon/screwdriver))
+ if (W.is_screwdriver())
if (do_after(user, 20 * W.toolspeed))
src.open =! src.open
playsound(src, W.usesound, 50, 1)
user.show_message(text("You [] the service panel.", (src.open ? "open" : "close")))
return
- if ((istype(W, /obj/item/device/multitool)) && (src.open == 1)&& (!src.l_hacking))
+ if (istype(W, /obj/item/device/multitool) && (src.open == 1)&& (!src.l_hacking))
user.show_message("Now attempting to reset internal memory, please hold.", 1)
src.l_hacking = 1
if (do_after(usr, 100))
@@ -135,7 +135,7 @@
src.overlays = null
overlays += image('icons/obj/storage.dmi', icon_locking)
locked = 0
- user << (feedback ? feedback : "You short out the lock of \the [src].")
+ to_chat(user, (feedback ? feedback : "You short out the lock of \the [src]."))
return 1
// -----------------------------
@@ -156,7 +156,7 @@
attack_hand(mob/user as mob)
if ((src.loc == user) && (src.locked == 1))
- usr << "[src] is locked and cannot be opened!"
+ to_chat(user, "[src] is locked and cannot be opened!")
else if ((src.loc == user) && (!src.locked))
src.open(usr)
else
diff --git a/code/game/objects/items/weapons/storage/toolbox.dm b/code/game/objects/items/weapons/storage/toolbox.dm
index c4174eb4c09..7989c53f1d0 100644
--- a/code/game/objects/items/weapons/storage/toolbox.dm
+++ b/code/game/objects/items/weapons/storage/toolbox.dm
@@ -20,7 +20,7 @@
icon_state = "red"
item_state_slots = list(slot_r_hand_str = "toolbox_red", slot_l_hand_str = "toolbox_red")
starts_with = list(
- /obj/item/weapon/crowbar/red,
+ /obj/item/weapon/tool/crowbar/red,
/obj/item/weapon/extinguisher/mini,
/obj/item/device/radio
)
@@ -36,12 +36,12 @@
icon_state = "blue"
item_state_slots = list(slot_r_hand_str = "toolbox_blue", slot_l_hand_str = "toolbox_blue")
starts_with = list(
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wrench,
/obj/item/weapon/weldingtool,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/device/analyzer,
- /obj/item/weapon/wirecutters
+ /obj/item/weapon/tool/wirecutters
)
/obj/item/weapon/storage/toolbox/electrical
@@ -49,10 +49,10 @@
icon_state = "yellow"
item_state_slots = list(slot_r_hand_str = "toolbox_yellow", slot_l_hand_str = "toolbox_yellow")
starts_with = list(
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wirecutters,
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wirecutters,
/obj/item/device/t_scanner,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/stack/cable_coil/random_belt,
/obj/item/stack/cable_coil/random_belt
)
@@ -72,20 +72,20 @@
force = 14
starts_with = list(
/obj/item/clothing/gloves/yellow,
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wrench,
/obj/item/weapon/weldingtool,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/wirecutters,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/wirecutters,
/obj/item/device/multitool
)
/obj/item/weapon/storage/toolbox/syndicate/powertools
starts_with = list(
/obj/item/clothing/gloves/yellow,
- /obj/item/weapon/screwdriver/power,
+ /obj/item/weapon/tool/screwdriver/power,
/obj/item/weapon/weldingtool/experimental,
- /obj/item/weapon/crowbar/power,
+ /obj/item/weapon/tool/crowbar/power,
/obj/item/device/multitool,
/obj/item/stack/cable_coil/random_belt,
/obj/item/device/analyzer
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 937663c65c8..c66da847128 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -223,19 +223,19 @@
/obj/item/weapon/storage/box/syndie_kit/demolitions
starts_with = list(
/obj/item/weapon/syndie/c4explosive,
- /obj/item/weapon/screwdriver
+ /obj/item/weapon/tool/screwdriver
)
/obj/item/weapon/storage/box/syndie_kit/demolitions_heavy
starts_with = list(
/obj/item/weapon/syndie/c4explosive/heavy,
- /obj/item/weapon/screwdriver
+ /obj/item/weapon/tool/screwdriver
)
/obj/item/weapon/storage/box/syndie_kit/demolitions_super_heavy
starts_with = list(
/obj/item/weapon/syndie/c4explosive/heavy/super_heavy,
- /obj/item/weapon/screwdriver
+ /obj/item/weapon/tool/screwdriver
)
/obj/item/weapon/storage/secure/briefcase/rifle
@@ -253,8 +253,8 @@
description_fluff = "The container, upon opening, looks to have a few oddly shaped indentations in its packing."
description_antag = "This case will likely contain a charged fuel rod gun, and a few fuel rods to go with it. It can only hold the fuel rod gun, fuel rods, batteries, a screwdriver, and stock machine parts."
force = 12 //Anti-rad lined i.e. Lead, probably gonna hurt a bit if you get bashed with it.
- can_hold = list(/obj/item/weapon/gun/magnetic/fuelrod, /obj/item/weapon/fuel_assembly, /obj/item/weapon/cell, /obj/item/weapon/stock_parts, /obj/item/weapon/screwdriver)
- cant_hold = list(/obj/item/weapon/screwdriver/power)
+ can_hold = list(/obj/item/weapon/gun/magnetic/fuelrod, /obj/item/weapon/fuel_assembly, /obj/item/weapon/cell, /obj/item/weapon/stock_parts, /obj/item/weapon/tool/screwdriver)
+ cant_hold = list(/obj/item/weapon/tool/screwdriver/power)
starts_with = list(
/obj/item/weapon/gun/magnetic/fuelrod,
/obj/item/weapon/fuel_assembly/deuterium,
@@ -262,5 +262,5 @@
/obj/item/weapon/fuel_assembly/tritium,
/obj/item/weapon/fuel_assembly/tritium,
/obj/item/weapon/fuel_assembly/phoron,
- /obj/item/weapon/screwdriver
+ /obj/item/weapon/tool/screwdriver
)
diff --git a/code/game/objects/items/weapons/storage/wallets.dm b/code/game/objects/items/weapons/storage/wallets.dm
index 60a253c87c2..ce1227014ca 100644
--- a/code/game/objects/items/weapons/storage/wallets.dm
+++ b/code/game/objects/items/weapons/storage/wallets.dm
@@ -32,12 +32,12 @@
/obj/item/weapon/photo,
/obj/item/weapon/reagent_containers/dropper,
/obj/item/weapon/sample,
- /obj/item/weapon/screwdriver,
+ /obj/item/weapon/tool/screwdriver,
/obj/item/weapon/stamp,
/obj/item/clothing/accessory/permit,
/obj/item/clothing/accessory/badge
)
- cant_hold = list(/obj/item/weapon/screwdriver/power)
+ cant_hold = list(/obj/item/weapon/tool/screwdriver/power)
slot_flags = SLOT_ID
var/obj/item/weapon/card/id/front_id = null
diff --git a/code/game/objects/items/weapons/syndie.dm b/code/game/objects/items/weapons/syndie.dm
index c47489272b3..ee528cb6f82 100644
--- a/code/game/objects/items/weapons/syndie.dm
+++ b/code/game/objects/items/weapons/syndie.dm
@@ -91,7 +91,7 @@
else if(lit && detonator_mode)
switch(alert(user, "What would you like to do?", "Lighter", "Press the button.", "Close the lighter."))
if("Press the button.")
- user << "You press the button."
+ to_chat(user, "You press the button.")
icon_state = "[base_state]click"
if(src.bomb)
src.bomb.detonate()
@@ -106,7 +106,7 @@
/obj/item/weapon/flame/lighter/zippo/c4detonator/attackby(obj/item/weapon/W, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
detonator_mode = !detonator_mode
playsound(src, W.usesound, 50, 1)
- user << "You unscrew the top panel of \the [src] revealing a button."
+ to_chat(user, "You unscrew the top panel of \the [src] revealing a button.")
diff --git a/code/game/objects/items/weapons/tanks/tanks.dm b/code/game/objects/items/weapons/tanks/tanks.dm
index 49608c649a2..07979777e79 100644
--- a/code/game/objects/items/weapons/tanks/tanks.dm
+++ b/code/game/objects/items/weapons/tanks/tanks.dm
@@ -130,7 +130,7 @@ var/list/global/tank_gauge_cache = list()
to_chat(user, "You attach the wires to the tank.")
src.add_bomb_overlay()
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
if(wired && src.proxyassembly.assembly)
to_chat(user, "You carefully begin clipping the wires that attach to the tank.")
diff --git a/code/game/objects/items/weapons/tools/combitool.dm b/code/game/objects/items/weapons/tools/combitool.dm
new file mode 100644
index 00000000000..96b64d18f7c
--- /dev/null
+++ b/code/game/objects/items/weapons/tools/combitool.dm
@@ -0,0 +1,63 @@
+// File is unticked because this is entirely untested old code
+
+
+/*
+ * Combitool
+ */
+/obj/item/weapon/combitool
+ name = "combi-tool"
+ desc = "It even has one of those nubbins for doing the thingy."
+ icon = 'icons/obj/items.dmi'
+ icon_state = "combitool"
+ w_class = ITEMSIZE_SMALL
+
+ var/list/spawn_tools = list(
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wrench,
+ /obj/item/weapon/tool/wirecutters,
+ /obj/item/weapon/material/knife,
+ /obj/item/weapon/material/kitchen/utensil/fork,
+ /obj/item/weapon/material/knife/machete/hatchet
+ )
+ var/list/tools = list()
+ var/current_tool = 1
+
+/obj/item/weapon/combitool/examine()
+ ..()
+ if(loc == usr && tools.len)
+ to_chat(usr, "It has the following fittings:")
+ for(var/obj/item/tool in tools)
+ to_chat(usr, "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]")
+
+/obj/item/weapon/combitool/New()
+ ..()
+ for(var/type in spawn_tools)
+ tools |= new type(src)
+
+/obj/item/weapon/combitool/attack_self(mob/user as mob)
+ if(++current_tool > tools.len) current_tool = 1
+ var/obj/item/tool = tools[current_tool]
+ if(!tool)
+ to_chat(user, "You can't seem to find any fittings in \the [src].")
+ else
+ to_chat(user, "You switch \the [src] to the [tool.name] fitting.")
+ return 1
+
+/obj/item/weapon/combitool/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ if(!M.Adjacent(user))
+ return 0
+ var/obj/item/tool = tools[current_tool]
+ if(!tool) return 0
+ return (tool ? tool.attack(M,user) : 0)
+
+/obj/item/weapon/combitool/afterattack(var/atom/target, var/mob/living/user, proximity, params)
+ if(!proximity)
+ return 0
+ var/obj/item/tool = tools[current_tool]
+ if(!tool) return 0
+ tool.loc = user
+ var/resolved = target.attackby(tool,user)
+ if(!resolved && tool && target)
+ tool.afterattack(target,user,1)
+ if(tool)
+ tool.loc = src
diff --git a/code/game/objects/items/weapons/tools/crowbar.dm b/code/game/objects/items/weapons/tools/crowbar.dm
new file mode 100644
index 00000000000..5eb2668b2f8
--- /dev/null
+++ b/code/game/objects/items/weapons/tools/crowbar.dm
@@ -0,0 +1,77 @@
+/*
+ * Crowbar
+ */
+
+/obj/item/weapon/tool/crowbar
+ name = "crowbar"
+ desc = "Used to remove floors and to pry open doors."
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "crowbar"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+ force = 6
+ throwforce = 7
+ pry = 1
+ item_state = "crowbar"
+ w_class = ITEMSIZE_SMALL
+ origin_tech = list(TECH_ENGINEERING = 1)
+ matter = list(DEFAULT_WALL_MATERIAL = 50)
+ attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
+ usesound = 'sound/items/crowbar.ogg'
+ toolspeed = 1
+
+/obj/item/weapon/tool/crowbar/is_crowbar()
+ return TRUE
+
+/obj/item/weapon/tool/crowbar/red
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "red_crowbar"
+ item_state = "crowbar_red"
+
+/obj/item/weapon/tool/crowbar/alien
+ name = "alien crowbar"
+ desc = "A hard-light crowbar. It appears to pry by itself, without any effort required."
+ icon = 'icons/obj/abductor.dmi'
+ usesound = 'sound/weapons/sonic_jackhammer.ogg'
+ icon_state = "crowbar"
+ toolspeed = 0.1
+ origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 4)
+
+/obj/item/weapon/tool/crowbar/cyborg
+ name = "hydraulic crowbar"
+ desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbars in industrial synthetics."
+ usesound = 'sound/items/jaws_pry.ogg'
+ force = 10
+ toolspeed = 0.5
+
+/obj/item/weapon/tool/crowbar/power
+ name = "jaws of life"
+ desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a prying head."
+ icon_state = "jaws_pry"
+ item_state = "jawsoflife"
+ matter = list(MAT_METAL=150, MAT_SILVER=50)
+ origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ usesound = 'sound/items/jaws_pry.ogg'
+ force = 15
+ toolspeed = 0.25
+ var/obj/item/weapon/tool/wirecutters/power/counterpart = null
+
+/obj/item/weapon/tool/crowbar/power/New(newloc, no_counterpart = TRUE)
+ ..(newloc)
+ if(!counterpart && no_counterpart)
+ counterpart = new(src, FALSE)
+ counterpart.counterpart = src
+
+/obj/item/weapon/tool/crowbar/power/Destroy()
+ if(counterpart)
+ counterpart.counterpart = null // So it can qdel cleanly.
+ qdel_null(counterpart)
+ return ..()
+
+/obj/item/weapon/tool/crowbar/power/attack_self(mob/user)
+ playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
+ user.drop_item(src)
+ counterpart.forceMove(get_turf(src))
+ src.forceMove(counterpart)
+ user.put_in_active_hand(counterpart)
+ to_chat(user, "You attach the cutting jaws to [src].")
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools/screwdriver.dm b/code/game/objects/items/weapons/tools/screwdriver.dm
new file mode 100644
index 00000000000..6c0a1561a32
--- /dev/null
+++ b/code/game/objects/items/weapons/tools/screwdriver.dm
@@ -0,0 +1,125 @@
+/*
+ * Screwdriver
+ */
+/obj/item/weapon/tool/screwdriver
+ name = "screwdriver"
+ desc = "You can be totally screwwy with this."
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "screwdriver"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT | SLOT_EARS
+ force = 6
+ w_class = ITEMSIZE_TINY
+ throwforce = 5
+ throw_speed = 3
+ throw_range = 5
+ hitsound = 'sound/weapons/bladeslice.ogg'
+ usesound = 'sound/items/screwdriver.ogg'
+ matter = list(DEFAULT_WALL_MATERIAL = 75)
+ attack_verb = list("stabbed")
+ sharp = 1
+ toolspeed = 1
+ var/random_color = TRUE
+
+/obj/item/weapon/tool/screwdriver/suicide_act(mob/user)
+ var/datum/gender/TU = gender_datums[user.get_visible_gender()]
+ viewers(user) << pick("\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.", \
+ "\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.")
+ return(BRUTELOSS)
+
+/obj/item/weapon/tool/screwdriver/New()
+ if(random_color)
+ switch(pick("red","blue","purple","brown","green","cyan","yellow"))
+ if ("red")
+ icon_state = "screwdriver2"
+ item_state = "screwdriver"
+ if ("blue")
+ icon_state = "screwdriver"
+ item_state = "screwdriver_blue"
+ if ("purple")
+ icon_state = "screwdriver3"
+ item_state = "screwdriver_purple"
+ if ("brown")
+ icon_state = "screwdriver4"
+ item_state = "screwdriver_brown"
+ if ("green")
+ icon_state = "screwdriver5"
+ item_state = "screwdriver_green"
+ if ("cyan")
+ icon_state = "screwdriver6"
+ item_state = "screwdriver_cyan"
+ if ("yellow")
+ icon_state = "screwdriver7"
+ item_state = "screwdriver_yellow"
+
+ if (prob(75))
+ src.pixel_y = rand(0, 16)
+ ..()
+
+/obj/item/weapon/tool/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
+ if(!istype(M) || user.a_intent == "help")
+ return ..()
+ if(user.zone_sel.selecting != O_EYES && user.zone_sel.selecting != BP_HEAD)
+ return ..()
+ if((CLUMSY in user.mutations) && prob(50))
+ M = user
+ return eyestab(M,user)
+
+/obj/item/weapon/tool/screwdriver/is_screwdriver()
+ return TRUE
+
+/obj/item/weapon/tool/screwdriver/alien
+ name = "alien screwdriver"
+ desc = "An ultrasonic screwdriver."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "screwdriver_a"
+ item_state = "screwdriver_black"
+ usesound = 'sound/items/pshoom.ogg'
+ toolspeed = 0.1
+ random_color = FALSE
+
+/obj/item/weapon/tool/screwdriver/cyborg
+ name = "powered screwdriver"
+ desc = "An electrical screwdriver, designed to be both precise and quick."
+ usesound = 'sound/items/drill_use.ogg'
+ toolspeed = 0.5
+
+/obj/item/weapon/tool/screwdriver/power
+ name = "hand drill"
+ desc = "A simple powered hand drill. It's fitted with a screw bit."
+ icon_state = "drill_screw"
+ item_state = "drill"
+ matter = list(DEFAULT_WALL_MATERIAL = 150, MAT_SILVER = 50)
+ origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ slot_flags = SLOT_BELT
+ force = 8
+ w_class = ITEMSIZE_SMALL
+ throwforce = 8
+ throw_speed = 2
+ throw_range = 3//it's heavier than a screw driver/wrench, so it does more damage, but can't be thrown as far
+ attack_verb = list("drilled", "screwed", "jabbed", "whacked")
+ hitsound = 'sound/items/drill_hit.ogg'
+ usesound = 'sound/items/drill_use.ogg'
+ toolspeed = 0.25
+ random_color = FALSE
+ var/obj/item/weapon/tool/wrench/power/counterpart = null
+
+/obj/item/weapon/tool/screwdriver/power/New(newloc, no_counterpart = TRUE)
+ ..(newloc)
+ if(!counterpart && no_counterpart)
+ counterpart = new(src, FALSE)
+ counterpart.counterpart = src
+
+/obj/item/weapon/tool/screwdriver/power/Destroy()
+ if(counterpart)
+ counterpart.counterpart = null // So it can qdel cleanly.
+ qdel_null(counterpart)
+ return ..()
+
+/obj/item/weapon/tool/screwdriver/power/attack_self(mob/user)
+ playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
+ user.drop_item(src)
+ counterpart.forceMove(get_turf(src))
+ src.forceMove(counterpart)
+ user.put_in_active_hand(counterpart)
+ to_chat(user, "You attach the bolt driver bit to [src].")
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools/weldingtool.dm
similarity index 55%
rename from code/game/objects/items/weapons/tools.dm
rename to code/game/objects/items/weapons/tools/weldingtool.dm
index 0ee916a1626..31019176d82 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools/weldingtool.dm
@@ -1,1042 +1,595 @@
-//This file was auto-corrected by findeclaration.exe on 25.5.2012 20:42:32
-
-#define WELDER_FUEL_BURN_INTERVAL 13
-
-/* Tools!
- * Note: Multitools are /obj/item/device
- *
- * Contains:
- * Wrench
- * Screwdriver
- * Wirecutters
- * Welding Tool
- * Crowbar
- */
-
-/*
- * Wrench
- */
-/obj/item/weapon/wrench
- name = "wrench"
- desc = "A wrench with many common uses. Can be usually found in your hand."
- icon = 'icons/obj/tools.dmi'
- icon_state = "wrench"
- flags = CONDUCT
- slot_flags = SLOT_BELT
- force = 6
- throwforce = 7
- w_class = ITEMSIZE_SMALL
- origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
- matter = list(DEFAULT_WALL_MATERIAL = 150)
- attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
- usesound = 'sound/items/ratchet.ogg'
- toolspeed = 1
-
-/obj/item/weapon/wrench/cyborg
- name = "automatic wrench"
- desc = "An advanced robotic wrench. Can be found in industrial synthetic shells."
- usesound = 'sound/items/drill_use.ogg'
- toolspeed = 0.5
-
-/obj/item/weapon/wrench/alien
- name = "alien wrench"
- desc = "A polarized wrench. It causes anything placed between the jaws to turn."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "wrench"
- usesound = 'sound/effects/empulse.ogg'
- toolspeed = 0.1
- origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5)
-
-/obj/item/weapon/wrench/power
- name = "hand drill"
- desc = "A simple powered hand drill. It's fitted with a bolt bit."
- icon_state = "drill_bolt"
- item_state = "drill"
- usesound = 'sound/items/drill_use.ogg'
- matter = list(DEFAULT_WALL_MATERIAL = 150, MAT_SILVER = 50)
- origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
- force = 8
- w_class = ITEMSIZE_SMALL
- throwforce = 8
- attack_verb = list("drilled", "screwed", "jabbed")
- toolspeed = 0.25
- var/obj/item/weapon/screwdriver/power/counterpart = null
-
-/obj/item/weapon/wrench/power/New(newloc, no_counterpart = TRUE)
- ..(newloc)
- if(!counterpart && no_counterpart)
- counterpart = new(src, FALSE)
- counterpart.counterpart = src
-
-/obj/item/weapon/wrench/power/Destroy()
- if(counterpart)
- counterpart.counterpart = null // So it can qdel cleanly.
- qdel_null(counterpart)
- return ..()
-
-/obj/item/weapon/wrench/power/attack_self(mob/user)
- playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
- user.drop_item(src)
- counterpart.forceMove(get_turf(src))
- src.forceMove(counterpart)
- user.put_in_active_hand(counterpart)
- to_chat(user, "You attach the screw driver bit to [src].")
-
-/*
- * Screwdriver
- */
-/obj/item/weapon/screwdriver
- name = "screwdriver"
- desc = "You can be totally screwwy with this."
- icon = 'icons/obj/tools.dmi'
- icon_state = "screwdriver"
- flags = CONDUCT
- slot_flags = SLOT_BELT | SLOT_EARS
- force = 6
- w_class = ITEMSIZE_TINY
- throwforce = 5
- throw_speed = 3
- throw_range = 5
- hitsound = 'sound/weapons/bladeslice.ogg'
- usesound = 'sound/items/screwdriver.ogg'
- matter = list(DEFAULT_WALL_MATERIAL = 75)
- attack_verb = list("stabbed")
- sharp = 1
- toolspeed = 1
- var/random_color = TRUE
-
- suicide_act(mob/user)
- var/datum/gender/TU = gender_datums[user.get_visible_gender()]
- viewers(user) << pick("\The [user] is stabbing the [src.name] into [TU.his] temple! It looks like [TU.hes] trying to commit suicide.", \
- "\The [user] is stabbing the [src.name] into [TU.his] heart! It looks like [TU.hes] trying to commit suicide.")
- return(BRUTELOSS)
-
-/obj/item/weapon/screwdriver/New()
- if(random_color)
- switch(pick("red","blue","purple","brown","green","cyan","yellow"))
- if ("red")
- icon_state = "screwdriver2"
- item_state = "screwdriver"
- if ("blue")
- icon_state = "screwdriver"
- item_state = "screwdriver_blue"
- if ("purple")
- icon_state = "screwdriver3"
- item_state = "screwdriver_purple"
- if ("brown")
- icon_state = "screwdriver4"
- item_state = "screwdriver_brown"
- if ("green")
- icon_state = "screwdriver5"
- item_state = "screwdriver_green"
- if ("cyan")
- icon_state = "screwdriver6"
- item_state = "screwdriver_cyan"
- if ("yellow")
- icon_state = "screwdriver7"
- item_state = "screwdriver_yellow"
-
- if (prob(75))
- src.pixel_y = rand(0, 16)
- ..()
-
-/obj/item/weapon/screwdriver/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- if(!istype(M) || user.a_intent == "help")
- return ..()
- if(user.zone_sel.selecting != O_EYES && user.zone_sel.selecting != BP_HEAD)
- return ..()
- if((CLUMSY in user.mutations) && prob(50))
- M = user
- return eyestab(M,user)
-
-/obj/item/weapon/screwdriver/alien
- name = "alien screwdriver"
- desc = "An ultrasonic screwdriver."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "screwdriver_a"
- item_state = "screwdriver_black"
- usesound = 'sound/items/pshoom.ogg'
- toolspeed = 0.1
- random_color = FALSE
-
-/obj/item/weapon/screwdriver/cyborg
- name = "powered screwdriver"
- desc = "An electrical screwdriver, designed to be both precise and quick."
- usesound = 'sound/items/drill_use.ogg'
- toolspeed = 0.5
-
-/obj/item/weapon/screwdriver/power
- name = "hand drill"
- desc = "A simple powered hand drill. It's fitted with a screw bit."
- icon_state = "drill_screw"
- item_state = "drill"
- matter = list(DEFAULT_WALL_MATERIAL = 150, MAT_SILVER = 50)
- origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
- slot_flags = SLOT_BELT
- force = 8
- w_class = ITEMSIZE_SMALL
- throwforce = 8
- throw_speed = 2
- throw_range = 3//it's heavier than a screw driver/wrench, so it does more damage, but can't be thrown as far
- attack_verb = list("drilled", "screwed", "jabbed", "whacked")
- hitsound = 'sound/items/drill_hit.ogg'
- usesound = 'sound/items/drill_use.ogg'
- toolspeed = 0.25
- random_color = FALSE
- var/obj/item/weapon/wrench/power/counterpart = null
-
-/obj/item/weapon/screwdriver/power/New(newloc, no_counterpart = TRUE)
- ..(newloc)
- if(!counterpart && no_counterpart)
- counterpart = new(src, FALSE)
- counterpart.counterpart = src
-
-/obj/item/weapon/screwdriver/power/Destroy()
- if(counterpart)
- counterpart.counterpart = null // So it can qdel cleanly.
- qdel_null(counterpart)
- return ..()
-
-/obj/item/weapon/screwdriver/power/attack_self(mob/user)
- playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
- user.drop_item(src)
- counterpart.forceMove(get_turf(src))
- src.forceMove(counterpart)
- user.put_in_active_hand(counterpart)
- to_chat(user, "You attach the bolt driver bit to [src].")
-
-/*
- * Wirecutters
- */
-/obj/item/weapon/wirecutters
- name = "wirecutters"
- desc = "This cuts wires."
- icon = 'icons/obj/tools.dmi'
- icon_state = "cutters"
- flags = CONDUCT
- slot_flags = SLOT_BELT
- force = 6
- throw_speed = 2
- throw_range = 9
- w_class = ITEMSIZE_SMALL
- origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
- matter = list(DEFAULT_WALL_MATERIAL = 80)
- attack_verb = list("pinched", "nipped")
- hitsound = 'sound/items/wirecutter.ogg'
- usesound = 'sound/items/wirecutter.ogg'
- sharp = 1
- edge = 1
- toolspeed = 1
- var/random_color = TRUE
-
-/obj/item/weapon/wirecutters/New()
- if(random_color && prob(50))
- icon_state = "cutters-y"
- item_state = "cutters_yellow"
- ..()
-
-/obj/item/weapon/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
- if(istype(C) && user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
- usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
- "You cut \the [C]'s restraints with \the [src]!",\
- "You hear cable being cut.")
- C.handcuffed = null
- if(C.buckled && C.buckled.buckle_require_restraints)
- C.buckled.unbuckle_mob()
- C.update_inv_handcuffed()
- return
- else
- ..()
-
-/obj/item/weapon/wirecutters/alien
- name = "alien wirecutters"
- desc = "Extremely sharp wirecutters, made out of a silvery-green metal."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "cutters"
- toolspeed = 0.1
- origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
- random_color = FALSE
-
-/obj/item/weapon/wirecutters/cyborg
- name = "wirecutters"
- desc = "This cuts wires. With science."
- usesound = 'sound/items/jaws_cut.ogg'
- toolspeed = 0.5
-
-/obj/item/weapon/wirecutters/power
- name = "jaws of life"
- desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
- icon_state = "jaws_cutter"
- item_state = "jawsoflife"
- origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
- matter = list(MAT_METAL=150, MAT_SILVER=50)
- usesound = 'sound/items/jaws_cut.ogg'
- force = 15
- toolspeed = 0.25
- random_color = FALSE
- var/obj/item/weapon/crowbar/power/counterpart = null
-
-/obj/item/weapon/wirecutters/power/New(newloc, no_counterpart = TRUE)
- ..(newloc)
- if(!counterpart && no_counterpart)
- counterpart = new(src, FALSE)
- counterpart.counterpart = src
-
-/obj/item/weapon/wirecutters/power/Destroy()
- if(counterpart)
- counterpart.counterpart = null // So it can qdel cleanly.
- qdel_null(counterpart)
- return ..()
-
-/obj/item/weapon/wirecutters/power/attack_self(mob/user)
- playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
- user.drop_item(src)
- counterpart.forceMove(get_turf(src))
- src.forceMove(counterpart)
- user.put_in_active_hand(counterpart)
- to_chat(user, "You attach the pry jaws to [src].")
-
-/*
- * Welding Tool
- */
-/obj/item/weapon/weldingtool
- name = "welding tool"
- icon = 'icons/obj/tools.dmi'
- icon_state = "welder"
- item_state = "welder"
- flags = CONDUCT
- slot_flags = SLOT_BELT
-
- //Amount of OUCH when it's thrown
- force = 3.0
- throwforce = 5.0
- throw_speed = 1
- throw_range = 5
- w_class = ITEMSIZE_SMALL
-
- //Cost to make in the autolathe
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
-
- //R&D tech level
- origin_tech = list(TECH_ENGINEERING = 1)
-
- //Welding tool specific stuff
- var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
- var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
- var/max_fuel = 20 //The max amount of fuel the welder can hold
-
- var/acti_sound = 'sound/items/welderactivate.ogg'
- var/deac_sound = 'sound/items/welderdeactivate.ogg'
- usesound = 'sound/items/Welder2.ogg'
- var/change_icons = TRUE
- var/flame_intensity = 2 //how powerful the emitted light is when used.
- var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
- var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
- var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
- var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
- toolspeed = 1
-
-/obj/item/weapon/weldingtool/New()
-// var/random_fuel = min(rand(10,20),max_fuel)
- var/datum/reagents/R = new/datum/reagents(max_fuel)
- reagents = R
- R.my_atom = src
- R.add_reagent("fuel", max_fuel)
- update_icon()
- if(always_process)
- processing_objects |= src
- ..()
-
-/obj/item/weapon/weldingtool/Destroy()
- if(welding || always_process)
- processing_objects -= src
- return ..()
-
-/obj/item/weapon/weldingtool/examine(mob/user)
- if(..(user, 0))
- if(max_fuel)
- to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
-
-
-/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
- if(istype(W,/obj/item/weapon/screwdriver))
- if(welding)
- to_chat(user, "Stop welding first!")
- return
- status = !status
- if(status)
- to_chat(user, "You secure the welder.")
- else
- to_chat(user, "The welder can now be attached and modified.")
- src.add_fingerprint(user)
- return
-
- if((!status) && (istype(W,/obj/item/stack/rods)))
- var/obj/item/stack/rods/R = W
- R.use(1)
- var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
- src.loc = F
- F.weldtool = src
- if (user.client)
- user.client.screen -= src
- if (user.r_hand == src)
- user.remove_from_mob(src)
- else
- user.remove_from_mob(src)
- src.master = F
- src.layer = initial(src.layer)
- user.remove_from_mob(src)
- if (user.client)
- user.client.screen -= src
- src.loc = F
- src.add_fingerprint(user)
- return
-
- ..()
- return
-
-
-/obj/item/weapon/weldingtool/process()
- if(welding)
- ++burned_fuel_for
- if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
- remove_fuel(1)
-
-
-
- if(get_fuel() < 1)
- setWelding(0)
-
- //I'm not sure what this does. I assume it has to do with starting fires...
- //...but it doesnt check to see if the welder is on or not.
- var/turf/location = src.loc
- if(istype(location, /mob/living))
- var/mob/living/M = location
- if(M.item_is_in_hands(src))
- location = get_turf(M)
- if (istype(location, /turf))
- location.hotspot_expose(700, 5)
-
-
-/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
- if(!proximity) return
- if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
- if(!welding && max_fuel)
- O.reagents.trans_to_obj(src, max_fuel)
- to_chat(user, "Welder refueled")
- playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
- return
- else if(!welding)
- to_chat(user, "[src] doesn't use fuel.")
- return
- else
- message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
- log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
- to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
- var/obj/structure/reagent_dispensers/fueltank/tank = O
- tank.explode()
- return
- if (src.welding)
- remove_fuel(1)
- var/turf/location = get_turf(user)
- if(isliving(O))
- var/mob/living/L = O
- L.IgniteMob()
- if (istype(location, /turf))
- location.hotspot_expose(700, 50, 1)
- return
-
-
-/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
- setWelding(!welding, usr)
- return
-
-//Returns the amount of fuel in the welder
-/obj/item/weapon/weldingtool/proc/get_fuel()
- return reagents.get_reagent_amount("fuel")
-
-/obj/item/weapon/weldingtool/proc/get_max_fuel()
- return max_fuel
-
-//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
-/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null)
- if(!welding)
- return 0
- if(amount)
- burned_fuel_for = 0 // Reset the counter since we're removing fuel.
- if(get_fuel() >= amount)
- reagents.remove_reagent("fuel", amount)
- if(M)
- eyecheck(M)
- update_icon()
- return 1
- else
- if(M)
- to_chat(M, "You need more welding fuel to complete this task.")
- update_icon()
- return 0
-
-//Returns whether or not the welding tool is currently on.
-/obj/item/weapon/weldingtool/proc/isOn()
- return src.welding
-
-/obj/item/weapon/weldingtool/update_icon()
- ..()
- overlays.Cut()
- // Welding overlay.
- if(welding)
- var/image/I = image(icon, src, "[icon_state]-on")
- overlays.Add(I)
- item_state = "[initial(item_state)]1"
- else
- item_state = initial(item_state)
-
- // Fuel counter overlay.
- if(change_icons && get_max_fuel())
- var/ratio = get_fuel() / get_max_fuel()
- ratio = Ceiling(ratio*4) * 25
- var/image/I = image(icon, src, "[icon_state][ratio]")
- overlays.Add(I)
-
- // Lights
- if(welding && flame_intensity)
- set_light(flame_intensity, flame_intensity, flame_color)
- else
- set_light(0)
-
-// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
- var/mob/M = loc
- if(istype(M))
- M.update_inv_l_hand()
- M.update_inv_r_hand()
-
-/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
- if(!canremove)
- return
-
- if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
-
- if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
- return
-
- if (!( istype(over_object, /obj/screen) ))
- return ..()
-
- //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
- //there's got to be a better way of doing this.
- if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
- return
-
- if (( usr.restrained() ) || ( usr.stat ))
- return
-
- if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
- return
-
- switch(over_object.name)
- if("r_hand")
- usr.u_equip(src)
- usr.put_in_r_hand(src)
- if("l_hand")
- usr.u_equip(src)
- usr.put_in_l_hand(src)
- src.add_fingerprint(usr)
-
-//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
-//so that the welding tool updates accordingly
-/obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M)
- if(!status) return
-
- var/turf/T = get_turf(src)
- //If we're turning it on
- if(set_welding && !welding)
- if (get_fuel() > 0)
- if(M)
- to_chat(M, "You switch the [src] on.")
- else if(T)
- T.visible_message("\The [src] turns on.")
- playsound(loc, acti_sound, 50, 1)
- src.force = 15
- src.damtype = "fire"
- src.w_class = ITEMSIZE_LARGE
- src.hitsound = 'sound/items/welder.ogg'
- welding = 1
- update_icon()
- if(!always_process)
- processing_objects |= src
- else
- if(M)
- var/msg = max_fuel ? "welding fuel" : "charge"
- to_chat(M, "You need more [msg] to complete this task.")
- return
- //Otherwise
- else if(!set_welding && welding)
- if(!always_process)
- processing_objects -= src
- if(M)
- to_chat(M, "You switch \the [src] off.")
- else if(T)
- T.visible_message("\The [src] turns off.")
- playsound(loc, deac_sound, 50, 1)
- src.force = 3
- src.damtype = "brute"
- src.w_class = initial(src.w_class)
- src.welding = 0
- src.hitsound = initial(src.hitsound)
- update_icon()
-
-//Decides whether or not to damage a player's eyes based on what they're wearing as protection
-//Note: This should probably be moved to mob
-/obj/item/weapon/weldingtool/proc/eyecheck(mob/living/carbon/user)
- if(!istype(user))
- return 1
- var/safety = user.eyecheck()
- safety = between(-1, safety + eye_safety_modifier, 2)
- if(istype(user, /mob/living/carbon/human))
- var/mob/living/carbon/human/H = user
- var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
- if(!E)
- return
- switch(safety)
- if(1)
- to_chat(usr, "Your eyes sting a little.")
- E.damage += rand(1, 2)
- if(E.damage > 12)
- user.eye_blurry += rand(3,6)
- if(0)
- to_chat(usr, "Your eyes burn.")
- E.damage += rand(2, 4)
- if(E.damage > 10)
- E.damage += rand(4,10)
- if(-1)
- to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
- user.eye_blurry += rand(12,20)
- E.damage += rand(12, 16)
- if(safety<2)
-
- if(E.damage > 10)
- to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
-
- if (E.damage >= E.min_broken_damage)
- to_chat(user, "You go blind!")
- user.sdisabilities |= BLIND
- else if (E.damage >= E.min_bruised_damage)
- to_chat(user, "You go blind!")
- user.Blind(5)
- user.eye_blurry = 5
- user.disabilities |= NEARSIGHTED
- spawn(100)
- user.disabilities &= ~NEARSIGHTED
- return
-
-/obj/item/weapon/weldingtool/is_hot()
- return isOn()
-
-/obj/item/weapon/weldingtool/largetank
- name = "industrial welding tool"
- desc = "A slightly larger welder with a larger tank."
- icon_state = "indwelder"
- max_fuel = 40
- origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
-
-/obj/item/weapon/weldingtool/largetank/cyborg
- name = "integrated welding tool"
- desc = "An advanced welder designed to be used in robotic systems."
- toolspeed = 0.5
-
-/obj/item/weapon/weldingtool/hugetank
- name = "upgraded welding tool"
- desc = "A much larger welder with a huge tank."
- icon_state = "indwelder"
- max_fuel = 80
- w_class = ITEMSIZE_NORMAL
- origin_tech = list(TECH_ENGINEERING = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
-
-/obj/item/weapon/weldingtool/mini
- name = "emergency welding tool"
- desc = "A miniature welder used during emergencies."
- icon_state = "miniwelder"
- max_fuel = 10
- w_class = ITEMSIZE_SMALL
- matter = list(MAT_METAL = 30, MAT_GLASS = 10)
- change_icons = 0
- toolspeed = 2
- eye_safety_modifier = 1 // Safer on eyes.
-
-/obj/item/weapon/weldingtool/alien
- name = "alien welding tool"
- desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
- icon = 'icons/obj/abductor.dmi'
- icon_state = "welder"
- toolspeed = 0.1
- flame_color = "#6699FF" // Light bluish.
- eye_safety_modifier = 2
- change_icons = 0
- origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
- always_process = TRUE
-
-/obj/item/weapon/weldingtool/alien/process()
- if(get_fuel() <= get_max_fuel())
- reagents.add_reagent("fuel", 1)
- ..()
-
-/obj/item/weapon/weldingtool/experimental
- name = "experimental welding tool"
- desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
- icon_state = "exwelder"
- max_fuel = 40
- w_class = ITEMSIZE_NORMAL
- origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
- matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
- toolspeed = 0.5
- change_icons = 0
- flame_intensity = 3
- always_process = TRUE
- var/nextrefueltick = 0
-
-/obj/item/weapon/weldingtool/experimental/process()
- ..()
- if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
- nextrefueltick = world.time + 10
- reagents.add_reagent("fuel", 1)
-
-/*
- * Backpack Welder.
- */
-
-/obj/item/weapon/weldingtool/tubefed
- name = "tube-fed welding tool"
- desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
- icon_state = "tubewelder"
- max_fuel = 10
- w_class = ITEMSIZE_NO_CONTAINER
- matter = null
- toolspeed = 1.25
- change_icons = 0
- flame_intensity = 1
- eye_safety_modifier = 1
- always_process = TRUE
- var/obj/item/weapon/weldpack/mounted_pack = null
-
-/obj/item/weapon/weldingtool/tubefed/New(location)
- ..()
- if(istype(location, /obj/item/weapon/weldpack))
- var/obj/item/weapon/weldpack/holder = location
- mounted_pack = holder
- else
- qdel(src)
-
-/obj/item/weapon/weldingtool/tubefed/Destroy()
- mounted_pack.nozzle = null
- mounted_pack = null
- return ..()
-
-/obj/item/weapon/weldingtool/tubefed/process()
- if(mounted_pack)
- if(!istype(mounted_pack.loc,/mob/living/carbon/human))
- mounted_pack.return_nozzle()
- else
- var/mob/living/carbon/human/H = mounted_pack.loc
- if(H.back != mounted_pack)
- mounted_pack.return_nozzle()
-
- if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
- mounted_pack.return_nozzle()
- visible_message("\The [src] retracts to its fueltank.")
-
- if(get_fuel() <= get_max_fuel())
- mounted_pack.reagents.trans_to_obj(src, 1)
-
- ..()
-
-/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
- ..()
- if(src.loc != user)
- mounted_pack.return_nozzle()
- to_chat(user, "\The [src] retracts to its fueltank.")
-
-/*
- * Electric/Arc Welder
- */
-
-/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
- name = "electric welding tool"
- desc = "A welder which runs off of electricity."
- icon_state = "arcwelder"
- max_fuel = 0 //We'll handle the consumption later.
- item_state = "ewelder"
- var/obj/item/weapon/cell/power_supply //What type of power cell this uses
- var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
- var/cell_type = /obj/item/weapon/cell/device
- var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
- flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
- acti_sound = 'sound/effects/sparks4.ogg'
- deac_sound = 'sound/effects/sparks4.ogg'
-
-/obj/item/weapon/weldingtool/electric/unloaded/New()
- cell_type = null
-
-/obj/item/weapon/weldingtool/electric/New()
- ..()
- if(cell_type == null)
- update_icon()
- else if(cell_type)
- power_supply = new cell_type(src)
- else
- power_supply = new /obj/item/weapon/cell/device(src)
- update_icon()
-
-/obj/item/weapon/weldingtool/electric/get_cell()
- return power_supply
-
-/obj/item/weapon/weldingtool/electric/examine(mob/user)
- if(get_dist(src, user) > 1)
- to_chat(user, desc)
- else // The << need to stay, for some reason
- if(power_supply)
- user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
- else
- user << text("\icon[] The [] has no power cell!", src, src.name)
-
-/obj/item/weapon/weldingtool/electric/get_fuel()
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(external)
- return external.charge
- else if(power_supply)
- return power_supply.charge
- else
- return 0
-
-/obj/item/weapon/weldingtool/electric/get_max_fuel()
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(external)
- return external.maxcharge
- else if(power_supply)
- return power_supply.maxcharge
- return 0
-
-/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
- if(!welding)
- return 0
- if(get_fuel() >= amount)
- power_supply.checked_use(charge_cost)
- if(use_external_power)
- var/obj/item/weapon/cell/external = get_external_power_supply()
- if(!external || !external.use(charge_cost)) //Take power from the borg...
- power_supply.give(charge_cost) //Give it back to the cell.
- if(M)
- eyecheck(M)
- update_icon()
- return 1
- else
- if(M)
- to_chat(M, "You need more energy to complete this task.")
- update_icon()
- return 0
-
-/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
- if(user.get_inactive_hand() == src)
- if(power_supply)
- power_supply.update_icon()
- user.put_in_hands(power_supply)
- power_supply = null
- to_chat(user, "You remove the cell from the [src].")
- setWelding(0)
- update_icon()
- return
- ..()
- else
- return ..()
-
-/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
- if(istype(W, /obj/item/weapon/cell))
- if(istype(W, /obj/item/weapon/cell/device))
- if(!power_supply)
- user.drop_item()
- W.loc = src
- power_supply = W
- to_chat(user, "You install a cell in \the [src].")
- update_icon()
- else
- to_chat(user, "\The [src] already has a cell.")
- else
- to_chat(user, "\The [src] cannot use that type of cell.")
- else
- ..()
-
-/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
- if(isrobot(src.loc))
- var/mob/living/silicon/robot/R = src.loc
- return R.cell
- if(istype(src.loc, /obj/item/rig_module))
- var/obj/item/rig_module/module = src.loc
- if(module.holder && module.holder.wearer)
- var/mob/living/carbon/human/H = module.holder.wearer
- if(istype(H) && H.back)
- var/obj/item/weapon/rig/suit = H.back
- if(istype(suit))
- return suit.cell
- return null
-
-/obj/item/weapon/weldingtool/electric/mounted
- use_external_power = 1
-
-/obj/item/weapon/weldingtool/electric/mounted/cyborg
- toolspeed = 0.5
-/*
- * Crowbar
- */
-
-/obj/item/weapon/crowbar
- name = "crowbar"
- desc = "Used to remove floors and to pry open doors."
- icon = 'icons/obj/tools.dmi'
- icon_state = "crowbar"
- flags = CONDUCT
- slot_flags = SLOT_BELT
- force = 6
- throwforce = 7
- pry = 1
- item_state = "crowbar"
- w_class = ITEMSIZE_SMALL
- origin_tech = list(TECH_ENGINEERING = 1)
- matter = list(DEFAULT_WALL_MATERIAL = 50)
- attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
- usesound = 'sound/items/crowbar.ogg'
- toolspeed = 1
-
-/obj/item/weapon/crowbar/red
- icon = 'icons/obj/tools.dmi'
- icon_state = "red_crowbar"
- item_state = "crowbar_red"
-
-/obj/item/weapon/weldingtool/attack(var/atom/A, var/mob/living/user, var/def_zone)
- if(ishuman(A) && user.a_intent == I_HELP)
- var/mob/living/carbon/human/H = A
- var/obj/item/organ/external/S = H.organs_by_name[user.zone_sel.selecting]
-
- if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
- return ..()
-
- if(!welding)
- to_chat(user, "You'll need to turn [src] on to patch the damage on [H]'s [S.name]!")
- return 1
-
- if(S.robo_repair(15, BRUTE, "some dents", src, user))
- remove_fuel(1, user)
-
- else
- return ..()
-
-/obj/item/weapon/crowbar/alien
- name = "alien crowbar"
- desc = "A hard-light crowbar. It appears to pry by itself, without any effort required."
- icon = 'icons/obj/abductor.dmi'
- usesound = 'sound/weapons/sonic_jackhammer.ogg'
- icon_state = "crowbar"
- toolspeed = 0.1
- origin_tech = list(TECH_COMBAT = 4, TECH_ENGINEERING = 4)
-
-/obj/item/weapon/crowbar/cyborg
- name = "hydraulic crowbar"
- desc = "A hydraulic prying tool, compact but powerful. Designed to replace crowbars in industrial synthetics."
- usesound = 'sound/items/jaws_pry.ogg'
- force = 10
- toolspeed = 0.5
-
-/obj/item/weapon/crowbar/power
- name = "jaws of life"
- desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a prying head."
- icon_state = "jaws_pry"
- item_state = "jawsoflife"
- matter = list(MAT_METAL=150, MAT_SILVER=50)
- origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
- usesound = 'sound/items/jaws_pry.ogg'
- force = 15
- toolspeed = 0.25
- var/obj/item/weapon/wirecutters/power/counterpart = null
-
-/obj/item/weapon/crowbar/power/New(newloc, no_counterpart = TRUE)
- ..(newloc)
- if(!counterpart && no_counterpart)
- counterpart = new(src, FALSE)
- counterpart.counterpart = src
-
-/obj/item/weapon/crowbar/power/Destroy()
- if(counterpart)
- counterpart.counterpart = null // So it can qdel cleanly.
- qdel_null(counterpart)
- return ..()
-
-/obj/item/weapon/crowbar/power/attack_self(mob/user)
- playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
- user.drop_item(src)
- counterpart.forceMove(get_turf(src))
- src.forceMove(counterpart)
- user.put_in_active_hand(counterpart)
- to_chat(user, "You attach the cutting jaws to [src].")
-
-
-/*/obj/item/weapon/combitool
- name = "combi-tool"
- desc = "It even has one of those nubbins for doing the thingy."
- icon = 'icons/obj/items.dmi'
- icon_state = "combitool"
- w_class = ITEMSIZE_SMALL
-
- var/list/spawn_tools = list(
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wrench,
- /obj/item/weapon/wirecutters,
- /obj/item/weapon/material/knife,
- /obj/item/weapon/material/kitchen/utensil/fork,
- /obj/item/weapon/material/knife/machete/hatchet
- )
- var/list/tools = list()
- var/current_tool = 1
-
-/obj/item/weapon/combitool/examine()
- ..()
- if(loc == usr && tools.len)
- to_chat(usr, "It has the following fittings:")
- for(var/obj/item/tool in tools)
- to_chat(usr, "\icon[tool] - [tool.name][tools[current_tool]==tool?" (selected)":""]")
-
-/obj/item/weapon/combitool/New()
- ..()
- for(var/type in spawn_tools)
- tools |= new type(src)
-
-/obj/item/weapon/combitool/attack_self(mob/user as mob)
- if(++current_tool > tools.len) current_tool = 1
- var/obj/item/tool = tools[current_tool]
- if(!tool)
- to_chat(user, "You can't seem to find any fittings in \the [src].")
- else
- to_chat(user, "You switch \the [src] to the [tool.name] fitting.")
- return 1
-
-/obj/item/weapon/combitool/attack(mob/living/carbon/M as mob, mob/living/carbon/user as mob)
- if(!M.Adjacent(user))
- return 0
- var/obj/item/tool = tools[current_tool]
- if(!tool) return 0
- return (tool ? tool.attack(M,user) : 0)
-
-/obj/item/weapon/combitool/afterattack(var/atom/target, var/mob/living/user, proximity, params)
- if(!proximity)
- return 0
- var/obj/item/tool = tools[current_tool]
- if(!tool) return 0
- tool.loc = user
- var/resolved = target.attackby(tool,user)
- if(!resolved && tool && target)
- tool.afterattack(target,user,1)
- if(tool)
- tool.loc = src*/
-
-#undef WELDER_FUEL_BURN_INTERVAL
+
+#define WELDER_FUEL_BURN_INTERVAL 13
+/*
+ * Welding Tool
+ */
+/obj/item/weapon/weldingtool
+ name = "welding tool"
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "welder"
+ item_state = "welder"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+
+ //Amount of OUCH when it's thrown
+ force = 3.0
+ throwforce = 5.0
+ throw_speed = 1
+ throw_range = 5
+ w_class = ITEMSIZE_SMALL
+
+ //Cost to make in the autolathe
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 30)
+
+ //R&D tech level
+ origin_tech = list(TECH_ENGINEERING = 1)
+
+ //Welding tool specific stuff
+ var/welding = 0 //Whether or not the welding tool is off(0), on(1) or currently welding(2)
+ var/status = 1 //Whether the welder is secured or unsecured (able to attach rods to it to make a flamethrower)
+ var/max_fuel = 20 //The max amount of fuel the welder can hold
+
+ var/acti_sound = 'sound/items/welderactivate.ogg'
+ var/deac_sound = 'sound/items/welderdeactivate.ogg'
+ usesound = 'sound/items/Welder2.ogg'
+ var/change_icons = TRUE
+ var/flame_intensity = 2 //how powerful the emitted light is when used.
+ var/flame_color = "#FF9933" // What color the welder light emits when its on. Default is an orange-ish color.
+ var/eye_safety_modifier = 0 // Increasing this will make less eye protection needed to stop eye damage. IE at 1, sunglasses will fully protect.
+ var/burned_fuel_for = 0 // Keeps track of how long the welder's been on, used to gradually empty the welder if left one, without RNG.
+ var/always_process = FALSE // If true, keeps the welder on the process list even if it's off. Used for when it needs to regenerate fuel.
+ toolspeed = 1
+
+/obj/item/weapon/weldingtool/New()
+// var/random_fuel = min(rand(10,20),max_fuel)
+ var/datum/reagents/R = new/datum/reagents(max_fuel)
+ reagents = R
+ R.my_atom = src
+ R.add_reagent("fuel", max_fuel)
+ update_icon()
+ if(always_process)
+ processing_objects |= src
+ ..()
+
+/obj/item/weapon/weldingtool/Destroy()
+ if(welding || always_process)
+ processing_objects -= src
+ return ..()
+
+/obj/item/weapon/weldingtool/examine(mob/user)
+ if(..(user, 0))
+ if(max_fuel)
+ to_chat(user, text("\icon[] The [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel ))
+
+
+/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
+ if(istype(W,/obj/item/weapon/tool/screwdriver))
+ if(welding)
+ to_chat(user, "Stop welding first!")
+ return
+ status = !status
+ if(status)
+ to_chat(user, "You secure the welder.")
+ else
+ to_chat(user, "The welder can now be attached and modified.")
+ src.add_fingerprint(user)
+ return
+
+ if((!status) && (istype(W,/obj/item/stack/rods)))
+ var/obj/item/stack/rods/R = W
+ R.use(1)
+ var/obj/item/weapon/flamethrower/F = new/obj/item/weapon/flamethrower(user.loc)
+ src.loc = F
+ F.weldtool = src
+ if (user.client)
+ user.client.screen -= src
+ if (user.r_hand == src)
+ user.remove_from_mob(src)
+ else
+ user.remove_from_mob(src)
+ src.master = F
+ src.layer = initial(src.layer)
+ user.remove_from_mob(src)
+ if (user.client)
+ user.client.screen -= src
+ src.loc = F
+ src.add_fingerprint(user)
+ return
+
+ ..()
+ return
+
+
+/obj/item/weapon/weldingtool/process()
+ if(welding)
+ ++burned_fuel_for
+ if(burned_fuel_for >= WELDER_FUEL_BURN_INTERVAL)
+ remove_fuel(1)
+
+
+
+ if(get_fuel() < 1)
+ setWelding(0)
+
+ //I'm not sure what this does. I assume it has to do with starting fires...
+ //...but it doesnt check to see if the welder is on or not.
+ var/turf/location = src.loc
+ if(istype(location, /mob/living))
+ var/mob/living/M = location
+ if(M.item_is_in_hands(src))
+ location = get_turf(M)
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 5)
+
+
+/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
+ if(!proximity) return
+ if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1)
+ if(!welding && max_fuel)
+ O.reagents.trans_to_obj(src, max_fuel)
+ to_chat(user, "Welder refueled")
+ playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
+ return
+ else if(!welding)
+ to_chat(user, "[src] doesn't use fuel.")
+ return
+ else
+ message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
+ log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
+ to_chat(user, "You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.")
+ var/obj/structure/reagent_dispensers/fueltank/tank = O
+ tank.explode()
+ return
+ if (src.welding)
+ remove_fuel(1)
+ var/turf/location = get_turf(user)
+ if(isliving(O))
+ var/mob/living/L = O
+ L.IgniteMob()
+ if (istype(location, /turf))
+ location.hotspot_expose(700, 50, 1)
+ return
+
+
+/obj/item/weapon/weldingtool/attack_self(mob/user as mob)
+ setWelding(!welding, usr)
+ return
+
+//Returns the amount of fuel in the welder
+/obj/item/weapon/weldingtool/proc/get_fuel()
+ return reagents.get_reagent_amount("fuel")
+
+/obj/item/weapon/weldingtool/proc/get_max_fuel()
+ return max_fuel
+
+//Removes fuel from the welding tool. If a mob is passed, it will perform an eyecheck on the mob. This should probably be renamed to use()
+/obj/item/weapon/weldingtool/proc/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(amount)
+ burned_fuel_for = 0 // Reset the counter since we're removing fuel.
+ if(get_fuel() >= amount)
+ reagents.remove_reagent("fuel", amount)
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more welding fuel to complete this task.")
+ update_icon()
+ return 0
+
+//Returns whether or not the welding tool is currently on.
+/obj/item/weapon/weldingtool/proc/isOn()
+ return src.welding
+
+/obj/item/weapon/weldingtool/update_icon()
+ ..()
+ overlays.Cut()
+ // Welding overlay.
+ if(welding)
+ var/image/I = image(icon, src, "[icon_state]-on")
+ overlays.Add(I)
+ item_state = "[initial(item_state)]1"
+ else
+ item_state = initial(item_state)
+
+ // Fuel counter overlay.
+ if(change_icons && get_max_fuel())
+ var/ratio = get_fuel() / get_max_fuel()
+ ratio = Ceiling(ratio*4) * 25
+ var/image/I = image(icon, src, "[icon_state][ratio]")
+ overlays.Add(I)
+
+ // Lights
+ if(welding && flame_intensity)
+ set_light(flame_intensity, flame_intensity, flame_color)
+ else
+ set_light(0)
+
+// icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
+ var/mob/M = loc
+ if(istype(M))
+ M.update_inv_l_hand()
+ M.update_inv_r_hand()
+
+/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
+ if(!canremove)
+ return
+
+ if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
+
+ if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
+ return
+
+ if (!( istype(over_object, /obj/screen) ))
+ return ..()
+
+ //makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
+ //there's got to be a better way of doing this.
+ if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
+ return
+
+ if (( usr.restrained() ) || ( usr.stat ))
+ return
+
+ if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
+ return
+
+ switch(over_object.name)
+ if("r_hand")
+ usr.u_equip(src)
+ usr.put_in_r_hand(src)
+ if("l_hand")
+ usr.u_equip(src)
+ usr.put_in_l_hand(src)
+ src.add_fingerprint(usr)
+
+//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
+//so that the welding tool updates accordingly
+/obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M)
+ if(!status) return
+
+ var/turf/T = get_turf(src)
+ //If we're turning it on
+ if(set_welding && !welding)
+ if (get_fuel() > 0)
+ if(M)
+ to_chat(M, "You switch the [src] on.")
+ else if(T)
+ T.visible_message("\The [src] turns on.")
+ playsound(loc, acti_sound, 50, 1)
+ src.force = 15
+ src.damtype = "fire"
+ src.w_class = ITEMSIZE_LARGE
+ src.hitsound = 'sound/items/welder.ogg'
+ welding = 1
+ update_icon()
+ if(!always_process)
+ processing_objects |= src
+ else
+ if(M)
+ var/msg = max_fuel ? "welding fuel" : "charge"
+ to_chat(M, "You need more [msg] to complete this task.")
+ return
+ //Otherwise
+ else if(!set_welding && welding)
+ if(!always_process)
+ processing_objects -= src
+ if(M)
+ to_chat(M, "You switch \the [src] off.")
+ else if(T)
+ T.visible_message("\The [src] turns off.")
+ playsound(loc, deac_sound, 50, 1)
+ src.force = 3
+ src.damtype = "brute"
+ src.w_class = initial(src.w_class)
+ src.welding = 0
+ src.hitsound = initial(src.hitsound)
+ update_icon()
+
+//Decides whether or not to damage a player's eyes based on what they're wearing as protection
+//Note: This should probably be moved to mob
+/obj/item/weapon/weldingtool/proc/eyecheck(mob/living/carbon/user)
+ if(!istype(user))
+ return 1
+ var/safety = user.eyecheck()
+ safety = between(-1, safety + eye_safety_modifier, 2)
+ if(istype(user, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = user
+ var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
+ if(!E)
+ return
+ switch(safety)
+ if(1)
+ to_chat(usr, "Your eyes sting a little.")
+ E.damage += rand(1, 2)
+ if(E.damage > 12)
+ user.eye_blurry += rand(3,6)
+ if(0)
+ to_chat(usr, "Your eyes burn.")
+ E.damage += rand(2, 4)
+ if(E.damage > 10)
+ E.damage += rand(4,10)
+ if(-1)
+ to_chat(usr, "Your thermals intensify the welder's glow. Your eyes itch and burn severely.")
+ user.eye_blurry += rand(12,20)
+ E.damage += rand(12, 16)
+ if(safety<2)
+
+ if(E.damage > 10)
+ to_chat(user, "Your eyes are really starting to hurt. This can't be good for you!")
+
+ if (E.damage >= E.min_broken_damage)
+ to_chat(user, "You go blind!")
+ user.sdisabilities |= BLIND
+ else if (E.damage >= E.min_bruised_damage)
+ to_chat(user, "You go blind!")
+ user.Blind(5)
+ user.eye_blurry = 5
+ user.disabilities |= NEARSIGHTED
+ spawn(100)
+ user.disabilities &= ~NEARSIGHTED
+ return
+
+/obj/item/weapon/weldingtool/is_hot()
+ return isOn()
+
+/obj/item/weapon/weldingtool/largetank
+ name = "industrial welding tool"
+ desc = "A slightly larger welder with a larger tank."
+ icon_state = "indwelder"
+ max_fuel = 40
+ origin_tech = list(TECH_ENGINEERING = 2, TECH_PHORON = 2)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 60)
+
+/obj/item/weapon/weldingtool/largetank/cyborg
+ name = "integrated welding tool"
+ desc = "An advanced welder designed to be used in robotic systems."
+ toolspeed = 0.5
+
+/obj/item/weapon/weldingtool/hugetank
+ name = "upgraded welding tool"
+ desc = "A much larger welder with a huge tank."
+ icon_state = "indwelder"
+ max_fuel = 80
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+
+/obj/item/weapon/weldingtool/mini
+ name = "emergency welding tool"
+ desc = "A miniature welder used during emergencies."
+ icon_state = "miniwelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_SMALL
+ matter = list(MAT_METAL = 30, MAT_GLASS = 10)
+ change_icons = 0
+ toolspeed = 2
+ eye_safety_modifier = 1 // Safer on eyes.
+
+/obj/item/weapon/weldingtool/alien
+ name = "alien welding tool"
+ desc = "An alien welding tool. Whatever fuel it uses, it never runs out."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "welder"
+ toolspeed = 0.1
+ flame_color = "#6699FF" // Light bluish.
+ eye_safety_modifier = 2
+ change_icons = 0
+ origin_tech = list(TECH_PHORON = 5 ,TECH_ENGINEERING = 5)
+ always_process = TRUE
+
+/obj/item/weapon/weldingtool/alien/process()
+ if(get_fuel() <= get_max_fuel())
+ reagents.add_reagent("fuel", 1)
+ ..()
+
+/obj/item/weapon/weldingtool/experimental
+ name = "experimental welding tool"
+ desc = "An experimental welder capable of synthesizing its own fuel from waste compounds. It can output a flame hotter than regular welders."
+ icon_state = "exwelder"
+ max_fuel = 40
+ w_class = ITEMSIZE_NORMAL
+ origin_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3)
+ matter = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120)
+ toolspeed = 0.5
+ change_icons = 0
+ flame_intensity = 3
+ always_process = TRUE
+ var/nextrefueltick = 0
+
+/obj/item/weapon/weldingtool/experimental/process()
+ ..()
+ if(get_fuel() < get_max_fuel() && nextrefueltick < world.time)
+ nextrefueltick = world.time + 10
+ reagents.add_reagent("fuel", 1)
+
+/*
+ * Backpack Welder.
+ */
+
+/obj/item/weapon/weldingtool/tubefed
+ name = "tube-fed welding tool"
+ desc = "A bulky, cooler-burning welding tool that draws from a worn welding tank."
+ icon_state = "tubewelder"
+ max_fuel = 10
+ w_class = ITEMSIZE_NO_CONTAINER
+ matter = null
+ toolspeed = 1.25
+ change_icons = 0
+ flame_intensity = 1
+ eye_safety_modifier = 1
+ always_process = TRUE
+ var/obj/item/weapon/weldpack/mounted_pack = null
+
+/obj/item/weapon/weldingtool/tubefed/New(location)
+ ..()
+ if(istype(location, /obj/item/weapon/weldpack))
+ var/obj/item/weapon/weldpack/holder = location
+ mounted_pack = holder
+ else
+ qdel(src)
+
+/obj/item/weapon/weldingtool/tubefed/Destroy()
+ mounted_pack.nozzle = null
+ mounted_pack = null
+ return ..()
+
+/obj/item/weapon/weldingtool/tubefed/process()
+ if(mounted_pack)
+ if(!istype(mounted_pack.loc,/mob/living/carbon/human))
+ mounted_pack.return_nozzle()
+ else
+ var/mob/living/carbon/human/H = mounted_pack.loc
+ if(H.back != mounted_pack)
+ mounted_pack.return_nozzle()
+
+ if(mounted_pack.loc != src.loc && src.loc != mounted_pack)
+ mounted_pack.return_nozzle()
+ visible_message("\The [src] retracts to its fueltank.")
+
+ if(get_fuel() <= get_max_fuel())
+ mounted_pack.reagents.trans_to_obj(src, 1)
+
+ ..()
+
+/obj/item/weapon/weldingtool/tubefed/dropped(mob/user)
+ ..()
+ if(src.loc != user)
+ mounted_pack.return_nozzle()
+ to_chat(user, "\The [src] retracts to its fueltank.")
+
+/*
+ * Electric/Arc Welder
+ */
+
+/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
+ name = "electric welding tool"
+ desc = "A welder which runs off of electricity."
+ icon_state = "arcwelder"
+ max_fuel = 0 //We'll handle the consumption later.
+ item_state = "ewelder"
+ var/obj/item/weapon/cell/power_supply //What type of power cell this uses
+ var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
+ var/cell_type = /obj/item/weapon/cell/device
+ var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
+ flame_color = "#00CCFF" // Blue-ish, to set it apart from the gas flames.
+ acti_sound = 'sound/effects/sparks4.ogg'
+ deac_sound = 'sound/effects/sparks4.ogg'
+
+/obj/item/weapon/weldingtool/electric/unloaded/New()
+ cell_type = null
+
+/obj/item/weapon/weldingtool/electric/New()
+ ..()
+ if(cell_type == null)
+ update_icon()
+ else if(cell_type)
+ power_supply = new cell_type(src)
+ else
+ power_supply = new /obj/item/weapon/cell/device(src)
+ update_icon()
+
+/obj/item/weapon/weldingtool/electric/get_cell()
+ return power_supply
+
+/obj/item/weapon/weldingtool/electric/examine(mob/user)
+ if(get_dist(src, user) > 1)
+ to_chat(user, desc)
+ else // The << need to stay, for some reason
+ if(power_supply)
+ user << text("\icon[] The [] has [] charge left.", src, src.name, get_fuel())
+ else
+ user << text("\icon[] The [] has no power cell!", src, src.name)
+
+/obj/item/weapon/weldingtool/electric/get_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.charge
+ else if(power_supply)
+ return power_supply.charge
+ else
+ return 0
+
+/obj/item/weapon/weldingtool/electric/get_max_fuel()
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(external)
+ return external.maxcharge
+ else if(power_supply)
+ return power_supply.maxcharge
+ return 0
+
+/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
+ if(!welding)
+ return 0
+ if(get_fuel() >= amount)
+ power_supply.checked_use(charge_cost)
+ if(use_external_power)
+ var/obj/item/weapon/cell/external = get_external_power_supply()
+ if(!external || !external.use(charge_cost)) //Take power from the borg...
+ power_supply.give(charge_cost) //Give it back to the cell.
+ if(M)
+ eyecheck(M)
+ update_icon()
+ return 1
+ else
+ if(M)
+ to_chat(M, "You need more energy to complete this task.")
+ update_icon()
+ return 0
+
+/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
+ if(user.get_inactive_hand() == src)
+ if(power_supply)
+ power_supply.update_icon()
+ user.put_in_hands(power_supply)
+ power_supply = null
+ to_chat(user, "You remove the cell from the [src].")
+ setWelding(0)
+ update_icon()
+ return
+ ..()
+ else
+ return ..()
+
+/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
+ if(istype(W, /obj/item/weapon/cell))
+ if(istype(W, /obj/item/weapon/cell/device))
+ if(!power_supply)
+ user.drop_item()
+ W.loc = src
+ power_supply = W
+ to_chat(user, "You install a cell in \the [src].")
+ update_icon()
+ else
+ to_chat(user, "\The [src] already has a cell.")
+ else
+ to_chat(user, "\The [src] cannot use that type of cell.")
+ else
+ ..()
+
+/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
+ if(isrobot(src.loc))
+ var/mob/living/silicon/robot/R = src.loc
+ return R.cell
+ if(istype(src.loc, /obj/item/rig_module))
+ var/obj/item/rig_module/module = src.loc
+ if(module.holder && module.holder.wearer)
+ var/mob/living/carbon/human/H = module.holder.wearer
+ if(istype(H) && H.back)
+ var/obj/item/weapon/rig/suit = H.back
+ if(istype(suit))
+ return suit.cell
+ return null
+
+/obj/item/weapon/weldingtool/electric/mounted
+ use_external_power = 1
+
+/obj/item/weapon/weldingtool/electric/mounted/cyborg
+ toolspeed = 0.5
+
+#undef WELDER_FUEL_BURN_INTERVAL
diff --git a/code/game/objects/items/weapons/tools/wirecutters.dm b/code/game/objects/items/weapons/tools/wirecutters.dm
new file mode 100644
index 00000000000..edd002cc4b5
--- /dev/null
+++ b/code/game/objects/items/weapons/tools/wirecutters.dm
@@ -0,0 +1,93 @@
+/*
+ * Wirecutters
+ */
+/obj/item/weapon/tool/wirecutters
+ name = "wirecutters"
+ desc = "This cuts wires."
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "cutters"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+ force = 6
+ throw_speed = 2
+ throw_range = 9
+ w_class = ITEMSIZE_SMALL
+ origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
+ matter = list(DEFAULT_WALL_MATERIAL = 80)
+ attack_verb = list("pinched", "nipped")
+ hitsound = 'sound/items/wirecutter.ogg'
+ usesound = 'sound/items/wirecutter.ogg'
+ sharp = 1
+ edge = 1
+ toolspeed = 1
+ var/random_color = TRUE
+
+/obj/item/weapon/tool/wirecutters/New()
+ if(random_color && prob(50))
+ icon_state = "cutters-y"
+ item_state = "cutters_yellow"
+ ..()
+
+/obj/item/weapon/tool/wirecutters/attack(mob/living/carbon/C as mob, mob/user as mob)
+ if(istype(C) && user.a_intent == I_HELP && (C.handcuffed) && (istype(C.handcuffed, /obj/item/weapon/handcuffs/cable)))
+ usr.visible_message("\The [usr] cuts \the [C]'s restraints with \the [src]!",\
+ "You cut \the [C]'s restraints with \the [src]!",\
+ "You hear cable being cut.")
+ C.handcuffed = null
+ if(C.buckled && C.buckled.buckle_require_restraints)
+ C.buckled.unbuckle_mob()
+ C.update_inv_handcuffed()
+ return
+ else
+ ..()
+
+/obj/item/weapon/tool/wirecutters/is_wirecutter()
+ return TRUE
+
+/obj/item/weapon/tool/wirecutters/alien
+ name = "alien wirecutters"
+ desc = "Extremely sharp wirecutters, made out of a silvery-green metal."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "cutters"
+ toolspeed = 0.1
+ origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4)
+ random_color = FALSE
+
+/obj/item/weapon/tool/wirecutters/cyborg
+ name = "wirecutters"
+ desc = "This cuts wires. With science."
+ usesound = 'sound/items/jaws_cut.ogg'
+ toolspeed = 0.5
+
+/obj/item/weapon/tool/wirecutters/power
+ name = "jaws of life"
+ desc = "A set of jaws of life, compressed through the magic of science. It's fitted with a cutting head."
+ icon_state = "jaws_cutter"
+ item_state = "jawsoflife"
+ origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ matter = list(MAT_METAL=150, MAT_SILVER=50)
+ usesound = 'sound/items/jaws_cut.ogg'
+ force = 15
+ toolspeed = 0.25
+ random_color = FALSE
+ var/obj/item/weapon/tool/crowbar/power/counterpart = null
+
+/obj/item/weapon/tool/wirecutters/power/New(newloc, no_counterpart = TRUE)
+ ..(newloc)
+ if(!counterpart && no_counterpart)
+ counterpart = new(src, FALSE)
+ counterpart.counterpart = src
+
+/obj/item/weapon/tool/wirecutters/power/Destroy()
+ if(counterpart)
+ counterpart.counterpart = null // So it can qdel cleanly.
+ qdel_null(counterpart)
+ return ..()
+
+/obj/item/weapon/tool/wirecutters/power/attack_self(mob/user)
+ playsound(get_turf(user), 'sound/items/change_jaws.ogg', 50, 1)
+ user.drop_item(src)
+ counterpart.forceMove(get_turf(src))
+ src.forceMove(counterpart)
+ user.put_in_active_hand(counterpart)
+ to_chat(user, "You attach the pry jaws to [src].")
\ No newline at end of file
diff --git a/code/game/objects/items/weapons/tools/wrench.dm b/code/game/objects/items/weapons/tools/wrench.dm
new file mode 100644
index 00000000000..22eb3711571
--- /dev/null
+++ b/code/game/objects/items/weapons/tools/wrench.dm
@@ -0,0 +1,71 @@
+/*
+ * Wrench
+ */
+/obj/item/weapon/tool/wrench
+ name = "wrench"
+ desc = "A wrench with many common uses. Can be usually found in your hand."
+ icon = 'icons/obj/tools.dmi'
+ icon_state = "wrench"
+ flags = CONDUCT
+ slot_flags = SLOT_BELT
+ force = 6
+ throwforce = 7
+ w_class = ITEMSIZE_SMALL
+ origin_tech = list(TECH_MATERIAL = 1, TECH_ENGINEERING = 1)
+ matter = list(DEFAULT_WALL_MATERIAL = 150)
+ attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
+ usesound = 'sound/items/ratchet.ogg'
+ toolspeed = 1
+
+/obj/item/weapon/tool/wrench/is_wrench()
+ return TRUE
+
+/obj/item/weapon/tool/wrench/cyborg
+ name = "automatic wrench"
+ desc = "An advanced robotic wrench. Can be found in industrial synthetic shells."
+ usesound = 'sound/items/drill_use.ogg'
+ toolspeed = 0.5
+
+/obj/item/weapon/tool/wrench/alien
+ name = "alien wrench"
+ desc = "A polarized wrench. It causes anything placed between the jaws to turn."
+ icon = 'icons/obj/abductor.dmi'
+ icon_state = "wrench"
+ usesound = 'sound/effects/empulse.ogg'
+ toolspeed = 0.1
+ origin_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 5)
+
+/obj/item/weapon/tool/wrench/power
+ name = "hand drill"
+ desc = "A simple powered hand drill. It's fitted with a bolt bit."
+ icon_state = "drill_bolt"
+ item_state = "drill"
+ usesound = 'sound/items/drill_use.ogg'
+ matter = list(DEFAULT_WALL_MATERIAL = 150, MAT_SILVER = 50)
+ origin_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2)
+ force = 8
+ w_class = ITEMSIZE_SMALL
+ throwforce = 8
+ attack_verb = list("drilled", "screwed", "jabbed")
+ toolspeed = 0.25
+ var/obj/item/weapon/tool/screwdriver/power/counterpart = null
+
+/obj/item/weapon/tool/wrench/power/New(newloc, no_counterpart = TRUE)
+ ..(newloc)
+ if(!counterpart && no_counterpart)
+ counterpart = new(src, FALSE)
+ counterpart.counterpart = src
+
+/obj/item/weapon/tool/wrench/power/Destroy()
+ if(counterpart)
+ counterpart.counterpart = null // So it can qdel cleanly.
+ qdel_null(counterpart)
+ return ..()
+
+/obj/item/weapon/tool/wrench/power/attack_self(mob/user)
+ playsound(get_turf(user),'sound/items/change_drill.ogg',50,1)
+ user.drop_item(src)
+ counterpart.forceMove(get_turf(src))
+ src.forceMove(counterpart)
+ user.put_in_active_hand(counterpart)
+ to_chat(user, "You attach the screw driver bit to [src].")
\ No newline at end of file
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 0facb97eac7..9c2fb604346 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -39,7 +39,7 @@
/obj/CanUseTopic(var/mob/user, var/datum/topic_state/state)
if(user.CanUseObjTopic(src))
return ..()
- user << "\icon[src]Access Denied!"
+ to_chat(user, "\icon[src]Access Denied!")
return STATUS_CLOSE
/mob/living/silicon/CanUseObjTopic(var/obj/O)
diff --git a/code/game/objects/random/misc.dm b/code/game/objects/random/misc.dm
index c918425221f..28a9513e77c 100644
--- a/code/game/objects/random/misc.dm
+++ b/code/game/objects/random/misc.dm
@@ -10,12 +10,12 @@
icon_state = "welder"
/obj/random/tool/item_to_spawn()
- return pick(/obj/item/weapon/screwdriver,
- /obj/item/weapon/wirecutters,
+ return pick(/obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wirecutters,
/obj/item/weapon/weldingtool,
/obj/item/weapon/weldingtool/largetank,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/wrench,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/wrench,
/obj/item/device/flashlight,
/obj/item/device/multitool)
@@ -26,8 +26,8 @@
/obj/random/tool/powermaint/item_to_spawn()
return pick(prob(320);/obj/random/tool,
- prob(1);/obj/item/weapon/screwdriver/power,
- prob(1);/obj/item/weapon/wirecutters/power,
+ prob(1);/obj/item/weapon/tool/screwdriver/power,
+ prob(1);/obj/item/weapon/tool/wirecutters/power,
prob(15);/obj/item/weapon/weldingtool/electric,
prob(5);/obj/item/weapon/weldingtool/experimental)
@@ -37,8 +37,8 @@
icon_state = "jaws_pry"
/obj/random/tool/power/item_to_spawn()
- return pick(/obj/item/weapon/screwdriver/power,
- /obj/item/weapon/wirecutters/power,
+ return pick(/obj/item/weapon/tool/screwdriver/power,
+ /obj/item/weapon/tool/wirecutters/power,
/obj/item/weapon/weldingtool/electric,
/obj/item/weapon/weldingtool/experimental)
@@ -49,11 +49,11 @@
icon_state = "welder"
/obj/random/tool/alien/item_to_spawn()
- return pick(/obj/item/weapon/screwdriver/alien,
- /obj/item/weapon/wirecutters/alien,
+ return pick(/obj/item/weapon/tool/screwdriver/alien,
+ /obj/item/weapon/tool/wirecutters/alien,
/obj/item/weapon/weldingtool/alien,
- /obj/item/weapon/crowbar/alien,
- /obj/item/weapon/wrench/alien,
+ /obj/item/weapon/tool/crowbar/alien,
+ /obj/item/weapon/tool/wrench/alien,
/obj/item/stack/cable_coil/alien,
/obj/item/device/multitool/alien)
diff --git a/code/game/objects/structures/catwalk.dm b/code/game/objects/structures/catwalk.dm
index 60cb0753b18..eda2c9346ba 100644
--- a/code/game/objects/structures/catwalk.dm
+++ b/code/game/objects/structures/catwalk.dm
@@ -67,7 +67,7 @@
return
/obj/structure/catwalk/attackby(obj/item/C as obj, mob/user as mob)
- if (istype(C, /obj/item/weapon/weldingtool))
+ if(istype(C, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/WT = C
if(WT.isOn())
if(WT.remove_fuel(0, user))
@@ -76,7 +76,7 @@
new /obj/item/stack/rods(src.loc)
new /obj/structure/lattice(src.loc)
qdel(src)
- if(istype(C, /obj/item/weapon/screwdriver))
+ if(C.is_screwdriver())
if(health < maxhealth)
to_chat(user, "You begin repairing \the [src.name] with \the [C.name].")
if(do_after(user, 20, src))
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index 79c873c56b1..1dc8336ae67 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -260,7 +260,7 @@
src.update_icon()
for(var/mob/M in viewers(src))
M.show_message("[src] has been [welded?"welded shut":"unwelded"] by [user.name].", 3, "You hear welding.", 2)
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(welded)
if(anchored)
user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
diff --git a/code/game/objects/structures/crates_lockers/closets/malfunction.dm b/code/game/objects/structures/crates_lockers/closets/malfunction.dm
index 90f91d1d8f3..40b6ec68b9f 100644
--- a/code/game/objects/structures/crates_lockers/closets/malfunction.dm
+++ b/code/game/objects/structures/crates_lockers/closets/malfunction.dm
@@ -9,6 +9,6 @@
/obj/item/clothing/mask/breath,
/obj/item/clothing/head/helmet/space/void,
/obj/item/clothing/suit/space/void,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/weapon/cell,
/obj/item/device/multitool)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
index d378c74537b..2b10bdff4ab 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
@@ -16,7 +16,7 @@
/obj/item/clothing/head/greenbandana,
/obj/item/weapon/material/minihoe,
/obj/item/weapon/material/knife/machete/hatchet,
- /obj/item/weapon/wirecutters/clippers,
+ /obj/item/weapon/tool/wirecutters/clippers,
/obj/item/weapon/reagent_containers/spray/plantbgone,
/obj/item/clothing/suit/storage/hooded/wintercoat/hydro,
/obj/item/clothing/shoes/boots/winter/hydro)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
index e87884b10ab..16520ae8fa3 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/medical.dm
@@ -132,7 +132,7 @@
/obj/item/device/healthanalyzer,
/obj/item/device/radio/off,
/obj/random/medical,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/storage/box/freezer,
/obj/item/clothing/accessory/storage/white_vest,
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 269e7b6fc8b..994fe0eca13 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
@@ -88,7 +88,7 @@
spark_system.start()
playsound(src.loc, 'sound/weapons/blade1.ogg', 50, 1)
playsound(src.loc, "sparks", 50, 1)
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(welded)
if(anchored)
user.visible_message("\The [user] begins unsecuring \the [src] from the floor.", "You start unsecuring \the [src] from the floor.")
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 64ba461107a..738e36e09ac 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -104,7 +104,7 @@
/obj/item/weapon/storage/box/holobadge/hos,
/obj/item/clothing/accessory/badge/holo/hos,
/obj/item/weapon/reagent_containers/spray/pepper,
- /obj/item/weapon/crowbar/red,
+ /obj/item/weapon/tool/crowbar/red,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/storage/belt/security,
/obj/item/device/flash,
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index c2476442461..1194b7f9fa0 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -14,7 +14,7 @@
/obj/item/clothing/under/syndicate,
/obj/item/clothing/head/helmet/space/void/merc,
/obj/item/clothing/suit/space/void/merc,
- /obj/item/weapon/crowbar/red,
+ /obj/item/weapon/tool/crowbar/red,
/obj/item/weapon/cell/high,
/obj/item/weapon/card/id/syndicate,
/obj/item/device/multitool,
@@ -24,7 +24,7 @@
/obj/structure/closet/syndicate/suit
desc = "It's a storage unit for voidsuits."
-
+
starts_with = list(
/obj/item/weapon/tank/jetpack/oxygen,
/obj/item/clothing/shoes/magboots,
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
index 4b20c5a955c..f0781b3f02d 100644
--- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
@@ -113,15 +113,15 @@
if(prob(70))
starts_with += /obj/item/device/flashlight
if(prob(70))
- starts_with += /obj/item/weapon/screwdriver
+ starts_with += /obj/item/weapon/tool/screwdriver
if(prob(70))
- starts_with += /obj/item/weapon/wrench
+ starts_with += /obj/item/weapon/tool/wrench
if(prob(70))
starts_with += /obj/item/weapon/weldingtool
if(prob(70))
- starts_with += /obj/item/weapon/crowbar
+ starts_with += /obj/item/weapon/tool/crowbar
if(prob(70))
- starts_with += /obj/item/weapon/wirecutters
+ starts_with += /obj/item/weapon/tool/wirecutters
if(prob(70))
starts_with += /obj/item/device/t_scanner
if(prob(20))
@@ -202,7 +202,7 @@
icon_closed = "hydrant"
icon_opened = "hydrant_open"
plane = TURF_PLANE
- layer = ABOVE_TURF_LAYER
+ layer = ABOVE_TURF_LAYER
anchored = 1
density = 0
wall_mounted = 1
diff --git a/code/game/objects/structures/crates_lockers/closets/walllocker.dm b/code/game/objects/structures/crates_lockers/closets/walllocker.dm
index 39204e34917..78572d38cd3 100644
--- a/code/game/objects/structures/crates_lockers/closets/walllocker.dm
+++ b/code/game/objects/structures/crates_lockers/closets/walllocker.dm
@@ -16,7 +16,7 @@
/obj/structure/closet/walllocker/emerglocker
name = "emergency locker"
desc = "A wall mounted locker with emergency supplies."
- var/list/spawnitems = list(/obj/item/weapon/tank/emergency/oxygen,/obj/item/clothing/mask/breath,/obj/item/weapon/crowbar/red)
+ var/list/spawnitems = list(/obj/item/weapon/tank/emergency/oxygen,/obj/item/clothing/mask/breath,/obj/item/weapon/tool/crowbar/red)
var/amount = 2 // spawns each items X times.
icon_state = "emerg"
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index e108626206b..e399c04d0ba 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -94,7 +94,7 @@
user.drop_item()
W.forceMove(src)
return
- else if(istype(W, /obj/item/weapon/wirecutters))
+ else if(W.is_wirecutter())
if(rigged)
user << "You cut away the wiring."
playsound(src.loc, W.usesound, 100, 1)
@@ -191,7 +191,7 @@
src.toggle(user)
/obj/structure/closet/crate/secure/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(is_type_in_list(W, list(/obj/item/weapon/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/wirecutters)))
+ if(is_type_in_list(W, list(/obj/item/weapon/packageWrap, /obj/item/stack/cable_coil, /obj/item/device/radio/electropack, /obj/item/weapon/tool/wirecutters)))
return ..()
if(istype(W, /obj/item/weapon/melee/energy/blade))
emag_act(INFINITY, user)
diff --git a/code/game/objects/structures/crates_lockers/largecrate.dm b/code/game/objects/structures/crates_lockers/largecrate.dm
index b4a0d60dcbe..b48636f9ba4 100644
--- a/code/game/objects/structures/crates_lockers/largecrate.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate.dm
@@ -21,7 +21,7 @@
return
/obj/structure/largecrate/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
new /obj/item/stack/material/wood(src)
var/turf/T = get_turf(src)
for(var/atom/movable/AM in contents)
@@ -42,7 +42,7 @@
icon_state = "mulecrate"
/obj/structure/largecrate/hoverpod/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
var/obj/item/mecha_parts/mecha_equipment/ME
var/obj/mecha/working/hoverpod/H = new (loc)
diff --git a/code/game/objects/structures/curtains.dm b/code/game/objects/structures/curtains.dm
index 39c2dc43fd9..78095631dec 100644
--- a/code/game/objects/structures/curtains.dm
+++ b/code/game/objects/structures/curtains.dm
@@ -37,7 +37,7 @@
layer = OBJ_LAYER
/obj/structure/curtain/attackby(obj/item/P, mob/user)
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
playsound(src, P.usesound, 50, 1)
user << "You start to cut the shower curtains."
if(do_after(user, 10))
diff --git a/code/game/objects/structures/door_assembly.dm b/code/game/objects/structures/door_assembly.dm
index 87957b4d4d9..f8ea5d2f77c 100644
--- a/code/game/objects/structures/door_assembly.dm
+++ b/code/game/objects/structures/door_assembly.dm
@@ -200,7 +200,7 @@
to_chat(user, "You need more welding fuel.")
return
- else if(istype(W, /obj/item/weapon/wrench) && state == 0)
+ else if(W.is_wrench() && state == 0)
playsound(src, W.usesound, 100, 1)
if(anchored)
user.visible_message("[user] begins unsecuring the airlock assembly from the floor.", "You starts unsecuring the airlock assembly from the floor.")
@@ -223,7 +223,7 @@
src.state = 1
to_chat(user, "You wire the airlock.")
- else if(istype(W, /obj/item/weapon/wirecutters) && state == 1 )
+ else if(W.is_wirecutter() && state == 1 )
playsound(src, W.usesound, 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
@@ -245,7 +245,7 @@
src.state = 2
src.electronics = W
- else if(istype(W, /obj/item/weapon/crowbar) && state == 2 )
+ else if(W.is_crowbar() && state == 2 )
//This should never happen, but just in case I guess
if (!electronics)
to_chat(user, "There was nothing to remove.")
@@ -287,7 +287,7 @@
to_chat(user, "You installed [material_display_name(material_name)] plating into the airlock assembly.")
glass = material_name
- else if(istype(W, /obj/item/weapon/screwdriver) && state == 2 )
+ else if(W.is_screwdriver() && state == 2 )
playsound(src, W.usesound, 100, 1)
to_chat(user, "Now finishing the airlock.")
diff --git a/code/game/objects/structures/electricchair.dm b/code/game/objects/structures/electricchair.dm
index e9483386cfb..1cd43b7910f 100644
--- a/code/game/objects/structures/electricchair.dm
+++ b/code/game/objects/structures/electricchair.dm
@@ -12,7 +12,7 @@
return
/obj/structure/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
var/obj/structure/bed/chair/C = new /obj/structure/bed/chair(loc)
playsound(src, W.usesound, 50, 1)
C.set_dir(dir)
diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm
index e93afd18f34..2be63df8e78 100644
--- a/code/game/objects/structures/extinguisher.dm
+++ b/code/game/objects/structures/extinguisher.dm
@@ -35,7 +35,7 @@
user << "You place [O] in [src]."
else
opened = !opened
- if(istype(O, /obj/item/weapon/wrench))
+ if(O.is_wrench())
if(!has_extinguisher)
user << "You start to unwrench the extinguisher cabinet."
playsound(src.loc, O.usesound, 50, 1)
diff --git a/code/game/objects/structures/fitness.dm b/code/game/objects/structures/fitness.dm
index d29ad16f740..158bf5533b0 100644
--- a/code/game/objects/structures/fitness.dm
+++ b/code/game/objects/structures/fitness.dm
@@ -33,7 +33,7 @@
var/list/qualifiers = list("with ease", "without any trouble", "with great effort")
/obj/structure/fitness/weightlifter/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src.loc, 'sound/items/Deconstruct.ogg', 75, 1)
weight = ((weight) % qualifiers.len) + 1
to_chat(user, "You set the machine's weight level to [weight].")
diff --git a/code/game/objects/structures/girders.dm b/code/game/objects/structures/girders.dm
index a22bbae0d25..311e07d0c6c 100644
--- a/code/game/objects/structures/girders.dm
+++ b/code/game/objects/structures/girders.dm
@@ -144,7 +144,7 @@
reinforce_girder()
/obj/structure/girder/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench) && state == 0)
+ if(W.is_wrench() && state == 0)
if(anchored && !reinf_material)
playsound(src, W.usesound, 100, 1)
to_chat(user, "Now disassembling the girder...")
@@ -170,7 +170,7 @@
to_chat(user, "You drill through the girder!")
dismantle()
- else if(istype(W, /obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
if(state == 2)
playsound(src, W.usesound, 100, 1)
to_chat(user, "Now unsecuring support struts...")
@@ -183,7 +183,7 @@
reinforcing = !reinforcing
to_chat(user, "\The [src] can now be [reinforcing? "reinforced" : "constructed"]!")
- else if(istype(W, /obj/item/weapon/wirecutters) && state == 1)
+ else if(W.is_wirecutter() && state == 1)
playsound(src, W.usesound, 100, 1)
to_chat(user, "Now removing support struts...")
if(do_after(user,40 * W.toolspeed))
@@ -193,7 +193,7 @@
reinf_material = null
reset_girder()
- else if(istype(W, /obj/item/weapon/crowbar) && state == 0 && anchored)
+ else if(W.is_crowbar() && state == 0 && anchored)
playsound(src, W.usesound, 100, 1)
to_chat(user, "Now dislodging the girder...")
if(do_after(user, 40 * W.toolspeed))
@@ -329,7 +329,7 @@
qdel(src)
/obj/structure/girder/cult/attackby(obj/item/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src, W.usesound, 100, 1)
to_chat(user, "Now disassembling the girder...")
if(do_after(user,40 * W.toolspeed))
diff --git a/code/game/objects/structures/gravemarker.dm b/code/game/objects/structures/gravemarker.dm
index e20591b9399..7ef0d49a517 100644
--- a/code/game/objects/structures/gravemarker.dm
+++ b/code/game/objects/structures/gravemarker.dm
@@ -56,7 +56,7 @@
return 1
/obj/structure/gravemarker/attackby(obj/item/weapon/W, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
var/carving_1 = sanitizeSafe(input(user, "Who is \the [src.name] for?", "Gravestone Naming", null) as text, MAX_NAME_LEN)
if(carving_1)
user.visible_message("[user] starts carving \the [src.name].", "You start carving \the [src.name].")
@@ -72,7 +72,7 @@
epitaph += carving_2
update_icon()
return
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
user.visible_message("[user] starts taking down \the [src.name].", "You start taking down \the [src.name].")
if(do_after(user, material.hardness * W.toolspeed))
user.visible_message("[user] takes down \the [src.name].", "You take down \the [src.name].")
diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm
index bed4a2bd6e9..8b16105815d 100644
--- a/code/game/objects/structures/grille.dm
+++ b/code/game/objects/structures/grille.dm
@@ -94,12 +94,12 @@
spawn(0) healthcheck() //spawn to make sure we return properly if the grille is deleted
/obj/structure/grille/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(iswirecutter(W))
+ if(W.is_wirecutter())
if(!shock(user, 100))
playsound(src, W.usesound, 100, 1)
new /obj/item/stack/rods(get_turf(src), destroyed ? 1 : 2)
qdel(src)
- else if((isscrewdriver(W)) && (istype(loc, /turf/simulated) || anchored))
+ else if((W.is_screwdriver()) && (istype(loc, /turf/simulated) || anchored))
if(!shock(user, 90))
playsound(src, W.usesound, 100, 1)
anchored = !anchored
diff --git a/code/game/objects/structures/loot_piles.dm b/code/game/objects/structures/loot_piles.dm
index 96416e02291..60807e253d1 100644
--- a/code/game/objects/structures/loot_piles.dm
+++ b/code/game/objects/structures/loot_piles.dm
@@ -365,9 +365,9 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
/obj/item/device/gps,
/obj/item/device/geiger,
/obj/item/device/mass_spectrometer,
- /obj/item/weapon/wrench,
- /obj/item/weapon/screwdriver,
- /obj/item/weapon/wirecutters,
+ /obj/item/weapon/tool/wrench,
+ /obj/item/weapon/tool/screwdriver,
+ /obj/item/weapon/tool/wirecutters,
/obj/item/device/multitool,
/obj/item/mecha_parts/mecha_equipment/generator,
/obj/item/mecha_parts/mecha_equipment/tool/cable_layer,
@@ -450,11 +450,11 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
uncommon_loot = list(
/obj/item/device/multitool/alien,
/obj/item/stack/cable_coil/alien,
- /obj/item/weapon/crowbar/alien,
- /obj/item/weapon/screwdriver/alien,
+ /obj/item/weapon/tool/crowbar/alien,
+ /obj/item/weapon/tool/screwdriver/alien,
/obj/item/weapon/weldingtool/alien,
- /obj/item/weapon/wirecutters/alien,
- /obj/item/weapon/wrench/alien
+ /obj/item/weapon/tool/wirecutters/alien,
+ /obj/item/weapon/tool/wrench/alien
)
rare_loot = list(
/obj/item/weapon/storage/belt/utility/alien/full
@@ -496,11 +496,11 @@ Loot piles can be depleted, if loot_depleted is turned on. Note that players wh
common_loot = list(
/obj/item/device/multitool/alien,
/obj/item/stack/cable_coil/alien,
- /obj/item/weapon/crowbar/alien,
- /obj/item/weapon/screwdriver/alien,
+ /obj/item/weapon/tool/crowbar/alien,
+ /obj/item/weapon/tool/screwdriver/alien,
/obj/item/weapon/weldingtool/alien,
- /obj/item/weapon/wirecutters/alien,
- /obj/item/weapon/wrench/alien,
+ /obj/item/weapon/tool/wirecutters/alien,
+ /obj/item/weapon/tool/wrench/alien,
/obj/item/weapon/surgical/FixOVein/alien,
/obj/item/weapon/surgical/bone_clamp/alien,
/obj/item/weapon/surgical/cautery/alien,
diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm
index 1e8237cdfd0..3011d2c61df 100644
--- a/code/game/objects/structures/mirror.dm
+++ b/code/game/objects/structures/mirror.dm
@@ -49,24 +49,24 @@
..()
/obj/structure/mirror/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
if(!glass)
playsound(src.loc, I.usesound, 50, 1)
if(do_after(user, 20 * I.toolspeed))
- user << "You unfasten the frame."
+ to_chat(user, "You unfasten the frame.")
new /obj/item/frame/mirror( src.loc )
qdel(src)
return
- if(istype(I, /obj/item/weapon/crowbar))
+ if(I.is_wrench())
if(shattered && glass)
- user << "The broken glass falls out."
+ to_chat(user, "The broken glass falls out.")
icon_state = "mirror_frame"
glass = !glass
new /obj/item/weapon/material/shard( src.loc )
return
if(!shattered && glass)
playsound(src.loc, I.usesound, 50, 1)
- user << "You remove the glass."
+ to_chat(user, "You remove the glass.")
glass = !glass
icon_state = "mirror_frame"
new /obj/item/stack/material/glass( src.loc, 2 )
@@ -76,15 +76,15 @@
if(!glass)
var/obj/item/stack/material/glass/G = I
if (G.get_amount() < 2)
- user << "You need two sheets of glass to add them to the frame."
+ to_chat(user, "You need two sheets of glass to add them to the frame.")
return
- user << "You start to add the glass to the frame."
+ to_chat(user, "You start to add the glass to the frame.")
if(do_after(user, 20))
if (G.use(2))
shattered = 0
glass = 1
icon_state = "mirror"
- user << "You add the glass to the frame."
+ to_chat(user, "You add the glass to the frame.")
return
if(shattered && glass)
diff --git a/code/game/objects/structures/musician.dm b/code/game/objects/structures/musician.dm
index 3b36cb00873..130c5916133 100644
--- a/code/game/objects/structures/musician.dm
+++ b/code/game/objects/structures/musician.dm
@@ -429,8 +429,8 @@
return
/obj/structure/device/piano/attackby(obj/item/O as obj, mob/user as mob)
- if (istype(O, /obj/item/weapon/wrench))
- if (anchored)
+ if(O.is_wrench())
+ if(anchored)
playsound(src.loc, O.usesound, 50, 1)
user << "You begin to loosen \the [src]'s casters..."
if (do_after(user, 40 * O.toolspeed))
diff --git a/code/game/objects/structures/noticeboard.dm b/code/game/objects/structures/noticeboard.dm
index 0a26e568ecd..64ef2f926b7 100644
--- a/code/game/objects/structures/noticeboard.dm
+++ b/code/game/objects/structures/noticeboard.dm
@@ -41,7 +41,7 @@
user << "You pin the paper to the noticeboard."
else
user << "You reach to pin your paper to the board but hesitate. You are certain your paper will not be seen among the many others already attached."
- if(istype(O, /obj/item/weapon/wrench))
+ if(O.is_wrench())
user << "You start to unwrench the noticeboard."
playsound(src.loc, O.usesound, 50, 1)
if(do_after(user, 15 * O.toolspeed))
diff --git a/code/game/objects/structures/plasticflaps.dm b/code/game/objects/structures/plasticflaps.dm
index cab9822323e..0340356e37c 100644
--- a/code/game/objects/structures/plasticflaps.dm
+++ b/code/game/objects/structures/plasticflaps.dm
@@ -16,7 +16,7 @@
)
/obj/structure/plasticflaps/attackby(obj/item/P, mob/user)
- if(istype(P, /obj/item/weapon/wirecutters))
+ if(P.is_wirecutter())
playsound(src, P.usesound, 50, 1)
user << "You start to cut the plastic flaps."
if(do_after(user, 10 * P.toolspeed))
diff --git a/code/game/objects/structures/railing.dm b/code/game/objects/structures/railing.dm
index e67750b8f30..18e45af166d 100644
--- a/code/game/objects/structures/railing.dm
+++ b/code/game/objects/structures/railing.dm
@@ -198,7 +198,7 @@
/obj/structure/railing/attackby(obj/item/W as obj, mob/user as mob)
// Dismantle
- if(istype(W, /obj/item/weapon/wrench) && !anchored)
+ if(W.is_wrench() && !anchored)
playsound(src.loc, W.usesound, 50, 1)
if(do_after(user, 20, src))
user.visible_message("\The [user] dismantles \the [src].", "You dismantle \the [src].")
@@ -217,7 +217,7 @@
return
// Install
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
user.visible_message(anchored ? "\The [user] begins unscrewing \the [src]." : "\The [user] begins fasten \the [src]." )
playsound(loc, W.usesound, 75, 1)
if(do_after(user, 10, src))
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index c68becdab9a..cfb77a748e4 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -21,9 +21,9 @@
return
/obj/structure/sign/attackby(obj/item/tool as obj, mob/user as mob) //deconstruction
- if(istype(tool, /obj/item/weapon/screwdriver) && !istype(src, /obj/structure/sign/double))
+ if(tool.is_screwdriver() && !istype(src, /obj/structure/sign/double))
playsound(src, tool.usesound, 50, 1)
- user << "You unfasten the sign with your [tool]."
+ to_chat(user, "You unfasten the sign with your [tool].")
var/obj/item/sign/S = new(src.loc)
S.name = name
S.desc = desc
@@ -42,7 +42,7 @@
var/sign_state = ""
/obj/item/sign/attackby(obj/item/tool as obj, mob/user as mob) //construction
- if(istype(tool, /obj/item/weapon/screwdriver) && isturf(user.loc))
+ if(tool.is_screwdriver() && isturf(user.loc))
var/direction = input("In which direction?", "Select direction.") in list("North", "East", "South", "West", "Cancel")
if(direction == "Cancel") return
var/obj/structure/sign/S = new(user.loc)
@@ -59,7 +59,7 @@
S.name = name
S.desc = desc
S.icon_state = sign_state
- user << "You fasten \the [S] with your [tool]."
+ to_chat(user, "You fasten \the [S] with your [tool].")
qdel(src)
else ..()
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 219854f15f9..bff152aa0a7 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -89,7 +89,7 @@
return
/obj/structure/bed/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src, W.usesound, 50, 1)
dismantle()
qdel(src)
@@ -120,7 +120,7 @@
add_padding(padding_type)
return
- else if (istype(W, /obj/item/weapon/wirecutters))
+ else if(W.is_wirecutter())
if(!padding_material)
to_chat(user, "\The [src] has no padding to remove.")
return
@@ -213,7 +213,7 @@
return
/obj/structure/bed/roller/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench) || istype(W,/obj/item/stack) || istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wrench() || istype(W,/obj/item/stack) || W.is_wirecutter())
return
else if(istype(W,/obj/item/roller_holder))
if(has_buckled_mobs())
diff --git a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
index 390e3c84b9c..bbc2a645938 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/chairs.dm
@@ -134,7 +134,7 @@
return
/obj/structure/bed/chair/office/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/stack) || istype(W, /obj/item/weapon/wirecutters))
+ if(istype(W,/obj/item/stack) || W.is_wirecutter())
return
..()
@@ -198,7 +198,7 @@
return
/obj/structure/bed/chair/wood/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W,/obj/item/stack) || istype(W, /obj/item/weapon/wirecutters))
+ if(istype(W,/obj/item/stack) || W.is_wirecutter())
return
..()
diff --git a/code/game/objects/structures/stool_bed_chair_nest/stools.dm b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
index 02ea01556a9..b594ad678ae 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/stools.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/stools.dm
@@ -108,7 +108,7 @@ var/global/list/stool_cache = list() //haha stool
qdel(src)
/obj/item/weapon/stool/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src, W.usesound, 50, 1)
dismantle()
qdel(src)
@@ -138,7 +138,7 @@ var/global/list/stool_cache = list() //haha stool
user << "You add padding to \the [src]."
add_padding(padding_type)
return
- else if (istype(W, /obj/item/weapon/wirecutters))
+ else if (W.is_wirecutter())
if(!padding_material)
user << "\The [src] has no padding to remove."
return
diff --git a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
index bb1a62e40bd..e5eba3f20ae 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/wheelchair.dm
@@ -23,7 +23,7 @@
L.set_dir(dir)
/obj/structure/bed/chair/wheelchair/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench) || istype(W,/obj/item/stack) || istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wrench() || W.is_wirecutter() || istype(W,/obj/item/stack))
return
..()
diff --git a/code/game/objects/structures/tank_dispenser.dm b/code/game/objects/structures/tank_dispenser.dm
index c13ae10e647..d9d31dfb550 100644
--- a/code/game/objects/structures/tank_dispenser.dm
+++ b/code/game/objects/structures/tank_dispenser.dm
@@ -74,7 +74,7 @@
user << "[src] is full."
updateUsrDialog()
return
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
if(anchored)
user << "You lean down and unwrench [src]."
anchored = 0
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index 98e0f1a41e4..ff95dd44d8b 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -44,7 +44,7 @@
icon_state = "toilet[open][cistern]"
/obj/structure/toilet/attackby(obj/item/I as obj, mob/living/user as mob)
- if(istype(I, /obj/item/weapon/crowbar))
+ if(I.is_crowbar())
to_chat(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))
@@ -160,7 +160,7 @@
/obj/machinery/shower/attackby(obj/item/I as obj, mob/user as mob)
if(I.type == /obj/item/device/analyzer)
to_chat(user, "The water temperature seems to be [watertemp].")
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
var/newtemp = input(user, "What setting would you like to set the temperature valve to?", "Water Temperature Valve") in temperature_settings
to_chat(user, "You begin to adjust the temperature valve with \the [I].")
playsound(src.loc, I.usesound, 50, 1)
diff --git a/code/game/objects/structures/windoor_assembly.dm b/code/game/objects/structures/windoor_assembly.dm
index 1d1be706940..47f08399f01 100644
--- a/code/game/objects/structures/windoor_assembly.dm
+++ b/code/game/objects/structures/windoor_assembly.dm
@@ -108,7 +108,7 @@ obj/structure/windoor_assembly/Destroy()
return
//Wrenching an unsecure assembly anchors it in place. Step 4 complete
- if(istype(W, /obj/item/weapon/wrench) && !anchored)
+ if(W.is_wrench() && !anchored)
playsound(src, W.usesound, 100, 1)
user.visible_message("[user] secures the windoor assembly to the floor.", "You start to secure the windoor assembly to the floor.")
@@ -119,7 +119,7 @@ obj/structure/windoor_assembly/Destroy()
step = 0
//Unwrenching an unsecure assembly un-anchors it. Step 4 undone
- else if(istype(W, /obj/item/weapon/wrench) && anchored)
+ else if(W.is_wrench() && anchored)
playsound(src, W.usesound, 100, 1)
user.visible_message("[user] unsecures the windoor assembly to the floor.", "You start to unsecure the windoor assembly to the floor.")
@@ -145,7 +145,7 @@ obj/structure/windoor_assembly/Destroy()
if("02")
//Removing wire from the assembly. Step 5 undone.
- if(istype(W, /obj/item/weapon/wirecutters) && !src.electronics)
+ if(W.is_wirecutter() && !src.electronics)
playsound(src, W.usesound, 100, 1)
user.visible_message("[user] cuts the wires from the airlock assembly.", "You start to cut the wires from airlock assembly.")
@@ -174,7 +174,7 @@ obj/structure/windoor_assembly/Destroy()
W.loc = src.loc
//Screwdriver to remove airlock electronics. Step 6 undone.
- else if(istype(W, /obj/item/weapon/screwdriver) && src.electronics)
+ else if(W.is_screwdriver() && src.electronics)
playsound(src, W.usesound, 100, 1)
user.visible_message("[user] removes the electronics from the airlock assembly.", "You start to uninstall electronics from the airlock assembly.")
@@ -187,7 +187,7 @@ obj/structure/windoor_assembly/Destroy()
ae.loc = src.loc
//Crowbar to complete the assembly, Step 7 complete.
- else if(istype(W, /obj/item/weapon/crowbar))
+ else if(W.is_crowbar())
if(!src.electronics)
to_chat(usr,"The assembly is missing electronics.")
return
diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm
index c197ee1f601..f97433aab4f 100644
--- a/code/game/objects/structures/window.dm
+++ b/code/game/objects/structures/window.dm
@@ -262,7 +262,7 @@
if(W.flags & NOBLUDGEON) return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(reinf && state >= 1)
state = 3 - state
update_nearby_icons()
@@ -280,11 +280,11 @@
update_verbs()
playsound(src, W.usesound, 75, 1)
user << (anchored ? "You have fastened the window to the floor." : "You have unfastened the window.")
- else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <= 1)
+ else if(W.is_crowbar() && reinf && state <= 1)
state = 1 - state
playsound(src, W.usesound, 75, 1)
user << (state ? "You have pried the window into the frame." : "You have pried the window out of the frame.")
- else if(istype(W, /obj/item/weapon/wrench) && !anchored && (!state || !reinf))
+ else if(W.is_wrench() && !anchored && (!state || !reinf))
if(!glasstype)
user << "You're not sure how to dismantle \the [src] properly."
else
@@ -294,7 +294,7 @@
if(is_fulltile())
mats.amount = 4
qdel(src)
- else if(iscoil(W) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized))
+ else if(istype(W, /obj/item/stack/cable_coil) && reinf && state == 0 && !istype(src, /obj/structure/window/reinforced/polarized))
var/obj/item/stack/cable_coil/C = W
if (C.use(1))
playsound(src.loc, 'sound/effects/sparks1.ogg', 75, 1)
@@ -572,7 +572,7 @@
maxhealth = 80
/obj/structure/window/reinforced/polarized/attackby(obj/item/W as obj, mob/user as mob)
- if(ismultitool(W) && !anchored) // Only allow programming if unanchored!
+ if(istype(W, /obj/item/device/multitool) && !anchored) // Only allow programming if unanchored!
var/obj/item/device/multitool/MT = W
// First check if they have a windowtint button buffered
if(istype(MT.connectable, /obj/machinery/button/windowtint))
@@ -632,7 +632,7 @@
icon_state = "light[active]"
/obj/machinery/button/windowtint/attackby(obj/item/W as obj, mob/user as mob)
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/obj/item/device/multitool/MT = W
if(!id)
// If no ID is set yet (newly built button?) let them select an ID for first-time use!
diff --git a/code/game/turfs/simulated/floor_attackby.dm b/code/game/turfs/simulated/floor_attackby.dm
index 57d51dbaeac..83d2444f965 100644
--- a/code/game/turfs/simulated/floor_attackby.dm
+++ b/code/game/turfs/simulated/floor_attackby.dm
@@ -115,7 +115,7 @@
to_chat(user, "You need more welding fuel to complete this task.")
/turf/simulated/floor/proc/try_deconstruct_tile(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
if(broken || burnt)
to_chat(user, "You remove the broken [flooring.descriptor].")
make_plating()
@@ -129,14 +129,14 @@
return 0
playsound(src, W.usesound, 80, 1)
return 1
- else if(istype(W, /obj/item/weapon/screwdriver) && (flooring.flags & TURF_REMOVE_SCREWDRIVER))
+ else if(W.is_screwdriver() && (flooring.flags & TURF_REMOVE_SCREWDRIVER))
if(broken || burnt)
return 0
to_chat(user, "You unscrew and remove the [flooring.descriptor].")
make_plating(1)
playsound(src, W.usesound, 80, 1)
return 1
- else if(istype(W, /obj/item/weapon/wrench) && (flooring.flags & TURF_REMOVE_WRENCH))
+ else if(W.is_wrench() && (flooring.flags & TURF_REMOVE_WRENCH))
to_chat(user, "You unwrench and remove the [flooring.descriptor].")
make_plating(1)
playsound(src, W.usesound, 80, 1)
diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm
index 73a56e89495..70cacfba2ca 100644
--- a/code/game/turfs/simulated/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall_attacks.dm
@@ -284,7 +284,7 @@
else
switch(construction_stage)
if(6)
- if (istype(W, /obj/item/weapon/wirecutters))
+ if (W.is_wirecutter())
playsound(src, W.usesound, 100, 1)
construction_stage = 5
user.update_examine_panel(src)
@@ -292,7 +292,7 @@
update_icon()
return
if(5)
- if (istype(W, /obj/item/weapon/screwdriver))
+ if (W.is_screwdriver())
to_chat(user, "You begin removing the support lines.")
playsound(src, W.usesound, 100, 1)
if(!do_after(user,40 * W.toolspeed) || !istype(src, /turf/simulated/wall) || construction_stage != 5)
@@ -302,7 +302,7 @@
update_icon()
to_chat(user, "You unscrew the support lines.")
return
- else if (istype(W, /obj/item/weapon/wirecutters))
+ else if (W.is_wirecutter())
construction_stage = 6
user.update_examine_panel(src)
to_chat(user, "You mend the outer grille.")
@@ -332,7 +332,7 @@
update_icon()
to_chat(user, "You press firmly on the cover, dislodging it.")
return
- else if (istype(W, /obj/item/weapon/screwdriver))
+ else if (W.is_screwdriver())
to_chat(user, "You begin screwing down the support lines.")
playsound(src, W.usesound, 100, 1)
if(!do_after(user,40 * W.toolspeed) || !istype(src, /turf/simulated/wall) || construction_stage != 4)
@@ -343,7 +343,7 @@
to_chat(user, "You screw down the support lines.")
return
if(3)
- if (istype(W, /obj/item/weapon/crowbar))
+ if (W.is_crowbar())
to_chat(user, "You struggle to pry off the cover.")
playsound(src, W.usesound, 100, 1)
if(!do_after(user,100 * W.toolspeed) || !istype(src, /turf/simulated/wall) || construction_stage != 3)
@@ -354,7 +354,7 @@
to_chat(user, "You pry off the cover.")
return
if(2)
- if (istype(W, /obj/item/weapon/wrench))
+ if (W.is_wrench())
to_chat(user, "You start loosening the anchoring bolts which secure the support rods to their frame.")
playsound(src, W.usesound, 100, 1)
if(!do_after(user,40 * W.toolspeed) || !istype(src, /turf/simulated/wall) || construction_stage != 2)
@@ -386,7 +386,7 @@
to_chat(user, "The slice through the support rods.")
return
if(0)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
to_chat(user, "You struggle to pry off the outer sheath.")
playsound(src, W.usesound, 100, 1)
if(!do_after(user,100 * W.toolspeed) || !istype(src, /turf/simulated/wall) || !user || !W || !T )
diff --git a/code/modules/assembly/assembly.dm b/code/modules/assembly/assembly.dm
index 747b0d442bc..8c965f0deb0 100644
--- a/code/modules/assembly/assembly.dm
+++ b/code/modules/assembly/assembly.dm
@@ -102,7 +102,7 @@
if((!A.secured) && (!secured))
attach_assembly(A,user)
return
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
if(toggle_secure())
to_chat(user, "\The [src] is ready!")
else
diff --git a/code/modules/assembly/holder.dm b/code/modules/assembly/holder.dm
index 1bbf0597e6c..0cc5f496826 100644
--- a/code/modules/assembly/holder.dm
+++ b/code/modules/assembly/holder.dm
@@ -144,7 +144,7 @@
/obj/item/device/assembly_holder/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(isscrewdriver(W))
+ if(W.is_screwdriver())
if(!a_left || !a_right)
to_chat(user, " BUG:Assembly part missing, please report this!")
return
diff --git a/code/modules/assembly/shock_kit.dm b/code/modules/assembly/shock_kit.dm
index 0fbefc88d81..fd5c35bbfbd 100644
--- a/code/modules/assembly/shock_kit.dm
+++ b/code/modules/assembly/shock_kit.dm
@@ -15,7 +15,7 @@
return
/obj/item/assembly/shock_kit/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench) && !status)
+ if(W.is_wrench() && !status)
var/turf/T = loc
if(ismob(T))
T = T.loc
@@ -27,7 +27,7 @@
part2 = null
qdel(src)
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
status = !status
to_chat(user, "[src] is now [status ? "secured" : "unsecured"]!")
playsound(src, W.usesound, 50, 1)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 33c17b51d2d..8b466116197 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -231,7 +231,7 @@
return 0 // return 1 to cancel attack_hand()
/*/obj/item/clothing/gloves/attackby(obj/item/weapon/W, mob/user)
- if(istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/weapon/scalpel))
+ if(W.is_wirecutter() || istype(W, /obj/item/weapon/scalpel))
if (clipped)
user << "The [src] have already been clipped!"
update_icon()
diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm
index 2de7c06aebf..739f3e39772 100644
--- a/code/modules/clothing/gloves/boxing.dm
+++ b/code/modules/clothing/gloves/boxing.dm
@@ -4,11 +4,13 @@
icon_state = "boxing"
item_state_slots = list(slot_r_hand_str = "red", slot_l_hand_str = "red")
+/*
/obj/item/clothing/gloves/boxing/attackby(obj/item/weapon/W, mob/user)
- if(istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/weapon/surgical/scalpel))
+ if(W.is_wirecutter() || istype(W, /obj/item/weapon/surgical/scalpel))
user << "That won't work." //Nope
return
..()
+*/
/obj/item/clothing/gloves/boxing/green
icon_state = "boxinggreen"
diff --git a/code/modules/clothing/spacesuits/rig/rig_attackby.dm b/code/modules/clothing/spacesuits/rig/rig_attackby.dm
index cda9d51796a..39b23827d86 100644
--- a/code/modules/clothing/spacesuits/rig/rig_attackby.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_attackby.dm
@@ -1,6 +1,6 @@
/obj/item/weapon/rig/attackby(obj/item/W as obj, mob/living/user as mob)
-
- if(!istype(user)) return 0
+ if(!istype(user))
+ return 0
if(electrified != 0)
if(shock(user)) //Handles removing charge from the cell, as well. No need to do that here.
@@ -14,78 +14,79 @@
if(W.GetID())
if(subverted)
locked = 0
- user << "It looks like the locking system has been shorted out."
+ to_chat(user, "It looks like the locking system has been shorted out.")
return
if((!req_access || !req_access.len) && (!req_one_access || !req_one_access.len))
locked = 0
- user << "\The [src] doesn't seem to have a locking mechanism."
+ to_chat(user, "\The [src] doesn't seem to have a locking mechanism.")
return
if(security_check_enabled && !src.allowed(user))
- user << "Access denied."
+ to_chat(user, "Access denied.")
return
locked = !locked
- user << "You [locked ? "lock" : "unlock"] \the [src] access panel."
+ to_chat(user, "You [locked ? "lock" : "unlock"] \the [src] access panel.")
return
- else if(istype(W,/obj/item/weapon/crowbar))
-
+ else if(W.is_crowbar())
if(!open && locked)
- user << "The access panel is locked shut."
+ to_chat(user, "The access panel is locked shut.")
return
open = !open
- user << "You [open ? "open" : "close"] the access panel."
+ to_chat(user, "You [open ? "open" : "close"] the access panel.")
return
if(open)
-
// Hacking.
- if(istype(W,/obj/item/weapon/wirecutters) || istype(W,/obj/item/device/multitool))
+ if(W.is_wirecutter() || istype(W, /obj/item/device/multitool))
if(open)
wires.Interact(user)
else
- user << "You can't reach the wiring."
+ to_chat(user, "You can't reach the wiring.")
return
// Air tank.
if(istype(W,/obj/item/weapon/tank)) //Todo, some kind of check for suits without integrated air supplies.
if(air_supply)
- user << "\The [src] already has a tank installed."
+ to_chat(user, "\The [src] already has a tank installed.")
+ return
+
+ if(!user.unEquip(W))
return
- if(!user.unEquip(W)) return
air_supply = W
W.forceMove(src)
- user << "You slot [W] into [src] and tighten the connecting valve."
+ to_chat(user, "You slot [W] into [src] and tighten the connecting valve.")
return
// Check if this is a hardsuit upgrade or a modification.
else if(istype(W,/obj/item/rig_module))
-
if(istype(src.loc,/mob/living/carbon/human))
var/mob/living/carbon/human/H = src.loc
if(H.back == src)
- user << "You can't install a hardsuit module while the suit is being worn."
+ to_chat(user, "You can't install a hardsuit module while the suit is being worn.")
return 1
- if(!installed_modules) installed_modules = list()
+ if(!installed_modules)
+ installed_modules = list()
if(installed_modules.len)
for(var/obj/item/rig_module/installed_mod in installed_modules)
if(!installed_mod.redundant && istype(installed_mod,W))
- user << "The hardsuit already has a module of that class installed."
+ to_chat(user, "The hardsuit already has a module of that class installed.")
return 1
var/obj/item/rig_module/mod = W
- user << "You begin installing \the [mod] into \the [src]."
+ to_chat(user, "You begin installing \the [mod] into \the [src].")
if(!do_after(user,40))
return
if(!user || !W)
return
- if(!user.unEquip(mod)) return
- user << "You install \the [mod] into \the [src]."
+ if(!user.unEquip(mod))
+ return
+ to_chat(user, "You install \the [mod] into \the [src].")
installed_modules |= mod
mod.forceMove(src)
mod.installed(src)
@@ -94,27 +95,28 @@
else if(!cell && istype(W,/obj/item/weapon/cell))
- if(!user.unEquip(W)) return
- user << "You jack \the [W] into \the [src]'s battery mount."
+ if(!user.unEquip(W))
+ return
+ to_chat(user, "You jack \the [W] into \the [src]'s battery mount.")
W.forceMove(src)
src.cell = W
return
- else if(istype(W,/obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(!air_supply)
- user << "There is not tank to remove."
+ to_chat(user, "There is not tank to remove.")
return
if(user.r_hand && user.l_hand)
air_supply.forceMove(get_turf(user))
else
user.put_in_hands(air_supply)
- user << "You detach and remove \the [air_supply]."
+ to_chat(user, "You detach and remove \the [air_supply].")
air_supply = null
return
- else if(istype(W,/obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
var/list/current_mounts = list()
if(cell) current_mounts += "cell"
@@ -127,7 +129,7 @@
if(istype(src.loc,/mob/living/carbon/human) && to_remove != "cell")
var/mob/living/carbon/human/H = src.loc
if(H.back == src)
- user << "You can't remove an installed device while the hardsuit is being worn."
+ to_chat(user, "You can't remove an installed device while the hardsuit is being worn.")
return
switch(to_remove)
@@ -135,7 +137,7 @@
if("cell")
if(cell)
- user << "You detatch \the [cell] from \the [src]'s battery mount."
+ to_chat(user, "You detatch \the [cell] from \the [src]'s battery mount.")
for(var/obj/item/rig_module/module in installed_modules)
module.deactivate()
if(user.r_hand && user.l_hand)
@@ -144,7 +146,7 @@
cell.forceMove(user.put_in_hands(cell))
cell = null
else
- user << "There is nothing loaded in that mount."
+ to_chat(user, "There is nothing loaded in that mount.")
if("system module")
@@ -155,7 +157,7 @@
possible_removals[module.name] = module
if(!possible_removals.len)
- user << "There are no installed modules to remove."
+ to_chat(user, "There are no installed modules to remove.")
return
var/removal_choice = input("Which module would you like to remove?") as null|anything in possible_removals
@@ -163,7 +165,7 @@
return
var/obj/item/rig_module/removed = possible_removals[removal_choice]
- user << "You detatch \the [removed] from \the [src]."
+ to_chat(user, "You detatch \the [removed] from \the [src].")
removed.forceMove(get_turf(src))
removed.removed()
installed_modules -= removed
@@ -192,5 +194,5 @@
req_one_access.Cut()
locked = 0
subverted = 1
- user << "You short out the access protocol for the suit."
+ to_chat(user, "You short out the access protocol for the suit.")
return 1
diff --git a/code/modules/clothing/spacesuits/rig/suits/ert.dm b/code/modules/clothing/spacesuits/rig/suits/ert.dm
index 915c2bc698e..33b4e073515 100644
--- a/code/modules/clothing/spacesuits/rig/suits/ert.dm
+++ b/code/modules/clothing/spacesuits/rig/suits/ert.dm
@@ -14,8 +14,8 @@
siemens_coefficient= 0.5
armor = list(melee = 60, bullet = 50, laser = 30,energy = 15, bomb = 30, bio = 100, rad = 100)
- allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/crowbar, \
- /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/device/multitool, \
+ allowed = list(/obj/item/device/flashlight, /obj/item/weapon/tank, /obj/item/device/t_scanner, /obj/item/weapon/rcd, /obj/item/weapon/tool/crowbar, \
+ /obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/device/multitool, \
/obj/item/device/radio, /obj/item/device/analyzer,/obj/item/weapon/storage/briefcase/inflatable, /obj/item/weapon/melee/baton, /obj/item/weapon/gun, \
/obj/item/weapon/storage/firstaid, /obj/item/weapon/reagent_containers/hypospray, /obj/item/roller)
diff --git a/code/modules/clothing/spacesuits/void/void.dm b/code/modules/clothing/spacesuits/void/void.dm
index ef78d32f03b..d755540b91a 100644
--- a/code/modules/clothing/spacesuits/void/void.dm
+++ b/code/modules/clothing/spacesuits/void/void.dm
@@ -68,9 +68,9 @@
var/list/part_list = new
for(var/obj/item/I in list(helmet,boots,tank,cooler))
part_list += "\a [I]"
- user << "\The [src] has [english_list(part_list)] installed."
+ to_chat(user, "\The [src] has [english_list(part_list)] installed.")
if(tank && in_range(src,user))
- user << "The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank]."
+ to_chat(user, "The wrist-mounted pressure gauge reads [max(round(tank.air_contents.return_pressure()),0)] kPa remaining in \the [tank].")
/obj/item/clothing/suit/space/void/refit_for_species(var/target_species)
..()
@@ -95,23 +95,23 @@
if(helmet)
if(H.head)
- M << "You are unable to deploy your suit's helmet as \the [H.head] is in the way."
+ to_chat(M, "You are unable to deploy your suit's helmet as \the [H.head] is in the way.")
else if (H.equip_to_slot_if_possible(helmet, slot_head))
- M << "Your suit's helmet deploys with a hiss."
+ to_chat(M, "Your suit's helmet deploys with a hiss.")
helmet.canremove = 0
if(tank)
if(H.s_store) //In case someone finds a way.
- M << "Alarmingly, the valve on your suit's installed tank fails to engage."
+ to_chat(M, "Alarmingly, the valve on your suit's installed tank fails to engage.")
else if (H.equip_to_slot_if_possible(tank, slot_s_store))
- M << "The valve on your suit's installed tank safely engages."
+ to_chat(M, "The valve on your suit's installed tank safely engages.")
tank.canremove = 0
if(cooler)
if(H.s_store) //Ditto
- M << "Alarmingly, the cooling unit installed into your suit fails to deploy."
+ to_chat(M, "Alarmingly, the cooling unit installed into your suit fails to deploy.")
else if (H.equip_to_slot_if_possible(cooler, slot_s_store))
- M << "Your suit's cooling unit deploys."
+ to_chat(M, "Your suit's cooling unit deploys.")
cooler.canremove = 0
@@ -153,28 +153,31 @@
if(!istype(src.loc,/mob/living)) return
if(!helmet)
- usr << "There is no helmet installed."
+ to_chat(usr, "There is no helmet installed.")
return
var/mob/living/carbon/human/H = usr
- if(!istype(H)) return
- if(H.stat) return
- if(H.wear_suit != src) return
+ if(!istype(H))
+ return
+ if(H.stat)
+ return
+ if(H.wear_suit != src)
+ return
if(H.head == helmet)
- H << "You retract your suit helmet."
+ to_chat(H, "You retract your suit helmet.")
helmet.canremove = 1
H.drop_from_inventory(helmet)
helmet.forceMove(src)
else
if(H.head)
- H << "You cannot deploy your helmet while wearing \the [H.head]."
+ to_chat(H, "You cannot deploy your helmet while wearing \the [H.head].")
return
if(H.equip_to_slot_if_possible(helmet, slot_head))
helmet.pickup(H)
helmet.canremove = 0
- H << "You deploy your suit helmet, sealing you off from the world."
+ to_chat(H, "You deploy your suit helmet, sealing you off from the world.")
helmet.update_light(H)
/obj/item/clothing/suit/space/void/verb/eject_tank()
@@ -186,7 +189,7 @@
if(!istype(src.loc,/mob/living)) return
if(!tank && !cooler)
- usr << "There is no tank or cooling unit inserted."
+ to_chat(usr, "There is no tank or cooling unit inserted.")
return
var/mob/living/carbon/human/H = usr
@@ -202,7 +205,7 @@
else
removing = cooler
cooler = null
- H << "You press the emergency release, ejecting \the [removing] from your suit."
+ to_chat(H, "You press the emergency release, ejecting \the [removing] from your suit.")
removing.canremove = 1
H.drop_from_inventory(removing)
@@ -214,75 +217,75 @@
return ..()
if(istype(src.loc,/mob/living))
- user << "You cannot modify \the [src] while it is being worn."
+ to_chat(user, "You cannot modify \the [src] while it is being worn.")
return
- if(istype(W,/obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(helmet || boots || tank)
var/choice = input("What component would you like to remove?") as null|anything in list(helmet,boots,tank,cooler)
if(!choice) return
if(choice == tank) //No, a switch doesn't work here. Sorry. ~Techhead
- user << "You pop \the [tank] out of \the [src]'s storage compartment."
+ to_chat(user, "You pop \the [tank] out of \the [src]'s storage compartment.")
tank.forceMove(get_turf(src))
playsound(src, W.usesound, 50, 1)
src.tank = null
else if(choice == cooler)
- user << "You pop \the [cooler] out of \the [src]'s storage compartment."
+ to_chat(user, "You pop \the [cooler] out of \the [src]'s storage compartment.")
cooler.forceMove(get_turf(src))
playsound(src, W.usesound, 50, 1)
src.cooler = null
else if(choice == helmet)
- user << "You detatch \the [helmet] from \the [src]'s helmet mount."
+ to_chat(user, "You detatch \the [helmet] from \the [src]'s helmet mount.")
helmet.forceMove(get_turf(src))
playsound(src, W.usesound, 50, 1)
src.helmet = null
else if(choice == boots)
- user << "You detatch \the [boots] from \the [src]'s boot mounts."
+ to_chat(user, "You detatch \the [boots] from \the [src]'s boot mounts.")
boots.forceMove(get_turf(src))
playsound(src, W.usesound, 50, 1)
src.boots = null
else
- user << "\The [src] does not have anything installed."
+ to_chat(user, "\The [src] does not have anything installed.")
return
else if(istype(W,/obj/item/clothing/head/helmet/space))
if(helmet)
- user << "\The [src] already has a helmet installed."
+ to_chat(user, "\The [src] already has a helmet installed.")
else
- user << "You attach \the [W] to \the [src]'s helmet mount."
+ to_chat(user, "You attach \the [W] to \the [src]'s helmet mount.")
user.drop_item()
W.forceMove(src)
src.helmet = W
return
else if(istype(W,/obj/item/clothing/shoes/magboots))
if(boots)
- user << "\The [src] already has magboots installed."
+ to_chat(user, "\The [src] already has magboots installed.")
else
- user << "You attach \the [W] to \the [src]'s boot mounts."
+ to_chat(user, "You attach \the [W] to \the [src]'s boot mounts.")
user.drop_item()
W.forceMove(src)
boots = W
return
else if(istype(W,/obj/item/weapon/tank))
if(tank)
- user << "\The [src] already has an airtank installed."
+ to_chat(user, "\The [src] already has an airtank installed.")
else if(cooler)
- user << "\The [src]'s suit cooling unit is in the way. Remove it first."
+ to_chat(user, "\The [src]'s suit cooling unit is in the way. Remove it first.")
else if(istype(W,/obj/item/weapon/tank/phoron))
- user << "\The [W] cannot be inserted into \the [src]'s storage compartment."
+ to_chat(user, "\The [W] cannot be inserted into \the [src]'s storage compartment.")
else
- user << "You insert \the [W] into \the [src]'s storage compartment."
+ to_chat(user, "You insert \the [W] into \the [src]'s storage compartment.")
user.drop_item()
W.forceMove(src)
tank = W
return
else if(istype(W,/obj/item/device/suit_cooling_unit))
if(cooler)
- user << "\The [src] already has a suit cooling unit installed."
+ to_chat(user, "\The [src] already has a suit cooling unit installed.")
else if(tank)
- user << "\The [src]'s airtank is in the way. Remove it first."
+ to_chat(user, "\The [src]'s airtank is in the way. Remove it first.")
else
- user << "You insert \the [W] into \the [src]'s storage compartment."
+ to_chat(user, "You insert \the [W] into \the [src]'s storage compartment.")
user.drop_item()
W.forceMove(src)
cooler = W
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 1d93fe9f25a..b2afaae33a6 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -160,7 +160,7 @@
icon_state = "hazard"
blood_overlay_type = "armor"
allowed = list (/obj/item/device/analyzer, /obj/item/device/flashlight, /obj/item/device/multitool, /obj/item/device/pipe_painter, /obj/item/device/radio, /obj/item/device/t_scanner,
- /obj/item/weapon/crowbar, /obj/item/weapon/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/wirecutters, /obj/item/weapon/wrench, /obj/item/weapon/tank/emergency/oxygen,
+ /obj/item/weapon/tool/crowbar, /obj/item/weapon/tool/screwdriver, /obj/item/weapon/weldingtool, /obj/item/weapon/tool/wirecutters, /obj/item/weapon/tool/wrench, /obj/item/weapon/tank/emergency/oxygen,
/obj/item/clothing/mask/gas, /obj/item/taperoll/engineering)
body_parts_covered = UPPER_TORSO
diff --git a/code/modules/economy/cash_register.dm b/code/modules/economy/cash_register.dm
index c9332fb72ff..0b85db81913 100644
--- a/code/modules/economy/cash_register.dm
+++ b/code/modules/economy/cash_register.dm
@@ -166,7 +166,7 @@
-/obj/machinery/cash_register/attackby(obj/O as obj, user as mob)
+/obj/machinery/cash_register/attackby(obj/item/O as obj, user as mob)
// Check for a method of paying (ID, PDA, e-wallet, cash, ect.)
var/obj/item/weapon/card/id/I = O.GetID()
if(I)
@@ -188,8 +188,8 @@
scan_cash(SC)
else if(istype(O, /obj/item/weapon/card/emag))
return ..()
- else if(istype(O, /obj/item/weapon/wrench))
- var/obj/item/weapon/wrench/W = O
+ else if(O.is_wrench())
+ var/obj/item/weapon/tool/wrench/W = O
toggle_anchors(W, user)
// Not paying: Look up price and add it to transaction_amount
else
@@ -479,7 +479,7 @@
usr << "The cash box is locked."
-/obj/machinery/cash_register/proc/toggle_anchors(obj/item/weapon/wrench/W, mob/user)
+/obj/machinery/cash_register/proc/toggle_anchors(obj/item/weapon/tool/wrench/W, mob/user)
if(manipulating) return
manipulating = 1
if(!anchored)
diff --git a/code/modules/holodeck/HolodeckObjects.dm b/code/modules/holodeck/HolodeckObjects.dm
index 7432cda5895..8ad12f9ab01 100644
--- a/code/modules/holodeck/HolodeckObjects.dm
+++ b/code/modules/holodeck/HolodeckObjects.dm
@@ -128,7 +128,8 @@
item_state = "boxing"
/obj/structure/window/reinforced/holowindow/attackby(obj/item/W as obj, mob/user as mob)
- if(!istype(W)) return//I really wish I did not need this
+ if(!istype(W))
+ return//I really wish I did not need this
if (istype(W, /obj/item/weapon/grab) && get_dist(src,user)<2)
var/obj/item/weapon/grab/G = W
if(istype(G.affecting,/mob/living))
@@ -155,12 +156,12 @@
if(W.flags & NOBLUDGEON) return
- if(istype(W, /obj/item/weapon/screwdriver))
- user << ("It's a holowindow, you can't unfasten it!")
- else if(istype(W, /obj/item/weapon/crowbar) && reinf && state <= 1)
- user << ("It's a holowindow, you can't pry it!")
- else if(istype(W, /obj/item/weapon/wrench) && !anchored && (!state || !reinf))
- user << ("It's a holowindow, you can't dismantle it!")
+ if(W.is_screwdriver())
+ to_chat(user, "It's a holowindow, you can't unfasten it!")
+ else if(W.is_crowbar() && reinf && state <= 1)
+ to_chat(user, "It's a holowindow, you can't pry it!")
+ else if(W.is_wrench() && !anchored && (!state || !reinf))
+ to_chat(user, "It's a holowindow, you can't dismantle it!")
else
if(W.damtype == BRUTE || W.damtype == BURN)
hit(W.force)
@@ -216,8 +217,8 @@
qdel(src)
/obj/structure/bed/chair/holochair/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
- user << ("It's a holochair, you can't dismantle it!")
+ if(W.is_wrench())
+ to_chat(user, "It's a holochair, you can't dismantle it!")
return
/obj/item/weapon/holo
@@ -269,13 +270,13 @@
icon_state = "sword[item_color]"
w_class = ITEMSIZE_LARGE
playsound(user, 'sound/weapons/saberon.ogg', 50, 1)
- user << "[src] is now active."
+ to_chat(user, "[src] is now active.")
else
force = 3
icon_state = "sword0"
w_class = ITEMSIZE_SMALL
playsound(user, 'sound/weapons/saberoff.ogg', 50, 1)
- user << "[src] can now be concealed."
+ to_chat(user, "[src] can now be concealed.")
if(istype(user,/mob/living/carbon/human))
var/mob/living/carbon/human/H = user
@@ -307,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<2)
- user << "You need a better grip to do that!"
+ to_chat(user, "You need a better grip to do that!")
return
G.affecting.loc = src.loc
G.affecting.Weaken(5)
@@ -350,7 +351,7 @@
power_channel = ENVIRON
/obj/machinery/readybutton/attack_ai(mob/user as mob)
- user << "The station AI is not to interact with these devices!"
+ to_chat(user, "The station AI is not to interact with these devices!")
return
/obj/machinery/readybutton/New()
@@ -358,12 +359,12 @@
/obj/machinery/readybutton/attackby(obj/item/weapon/W as obj, mob/user as mob)
- user << "The device is a solid button, there's nothing you can do with it!"
+ to_chat(user, "The device is a solid button, there's nothing you can do with it!")
/obj/machinery/readybutton/attack_hand(mob/user as mob)
if(user.stat || stat & (NOPOWER|BROKEN))
- user << "This device is not powered."
+ to_chat(user, "This device is not powered.")
return
if(!user.IsAdvancedToolUser())
@@ -374,7 +375,7 @@
qdel(src)
if(eventstarted)
- usr << "The event has already begun!"
+ to_chat(usr, "The event has already begun!")
return
ready = !ready
@@ -405,7 +406,7 @@
qdel(W)
for(var/mob/M in currentarea)
- M << "FIGHT!"
+ to_chat(M, "FIGHT!")
// A window that disappears when the ready button is pressed
/obj/structure/window/reinforced/holowindow/disappearing
diff --git a/code/modules/hydroponics/beekeeping/beehive.dm b/code/modules/hydroponics/beekeeping/beehive.dm
index cc46a8da38f..7f95ac306ce 100644
--- a/code/modules/hydroponics/beekeeping/beehive.dm
+++ b/code/modules/hydroponics/beekeeping/beehive.dm
@@ -33,22 +33,22 @@
/obj/machinery/beehive/examine(var/mob/user)
..()
if(!closed)
- user << "The lid is open."
+ to_chat(user, "The lid is open.")
/obj/machinery/beehive/attackby(var/obj/item/I, var/mob/user)
- if(istype(I, /obj/item/weapon/crowbar))
+ if(I.is_crowbar())
closed = !closed
user.visible_message("[user] [closed ? "closes" : "opens"] \the [src].", "You [closed ? "close" : "open"] \the [src].")
update_icon()
return
- else if(istype(I, /obj/item/weapon/wrench))
+ else if(I.is_wrench())
anchored = !anchored
playsound(loc, I.usesound, 50, 1)
user.visible_message("[user] [anchored ? "wrenches" : "unwrenches"] \the [src].", "You [anchored ? "wrench" : "unwrench"] \the [src].")
return
else if(istype(I, /obj/item/bee_smoker))
if(closed)
- user << "You need to open \the [src] with a crowbar before smoking the bees."
+ to_chat(user, "You need to open \the [src] with a crowbar before smoking the bees.")
return
user.visible_message("[user] smokes the bees in \the [src].", "You smoke the bees in \the [src].")
smoked = 30
@@ -56,14 +56,14 @@
return
else if(istype(I, /obj/item/honey_frame))
if(closed)
- user << "You need to open \the [src] with a crowbar before inserting \the [I]."
+ to_chat(user, "You need to open \the [src] with a crowbar before inserting \the [I].")
return
if(frames >= maxFrames)
- user << "There is no place for an another frame."
+ to_chat(user, "There is no place for an another frame.")
return
var/obj/item/honey_frame/H = I
if(H.honey)
- user << "\The [I] is full with beeswax and honey, empty it in the extractor first."
+ to_chat(user, "\The [I] is full with beeswax and honey, empty it in the extractor first.")
return
++frames
user.visible_message("[user] loads \the [I] into \the [src].", "You load \the [I] into \the [src].")
@@ -74,16 +74,16 @@
else if(istype(I, /obj/item/bee_pack))
var/obj/item/bee_pack/B = I
if(B.full && bee_count)
- user << "\The [src] already has bees inside."
+ to_chat(user, "\The [src] already has bees inside.")
return
if(!B.full && bee_count < 90)
- user << "\The [src] is not ready to split."
+ to_chat(user, "\The [src] is not ready to split.")
return
if(!B.full && !smoked)
- user << "Smoke \the [src] first!"
+ to_chat(user, "Smoke \the [src] first!")
return
if(closed)
- user << "You need to open \the [src] with a crowbar before moving the bees."
+ to_chat(user, "You need to open \the [src] with a crowbar before moving the bees.")
return
if(B.full)
user.visible_message("[user] puts the queen and the bees from \the [I] into \the [src].", "You put the queen and the bees from \the [I] into \the [src].")
@@ -96,22 +96,22 @@
update_icon()
return
else if(istype(I, /obj/item/device/analyzer/plant_analyzer))
- user << "Scan result of \the [src]..."
- user << "Beehive is [bee_count ? "[round(bee_count)]% full" : "empty"].[bee_count > 90 ? " Colony is ready to split." : ""]"
+ to_chat(user, "Scan result of \the [src]...")
+ to_chat(user, "Beehive is [bee_count ? "[round(bee_count)]% full" : "empty"].[bee_count > 90 ? " Colony is ready to split." : ""]")
if(frames)
- user << "[frames] frames installed, [round(honeycombs / 100)] filled."
+ to_chat(user, "[frames] frames installed, [round(honeycombs / 100)] filled.")
if(honeycombs < frames * 100)
- user << "Next frame is [round(honeycombs % 100)]% full."
+ to_chat(user, "Next frame is [round(honeycombs % 100)]% full.")
else
- user << "No frames installed."
+ to_chat(user, "No frames installed.")
if(smoked)
- user << "The hive is smoked."
+ to_chat(user, "The hive is smoked.")
return 1
- else if(istype(I, /obj/item/weapon/screwdriver))
+ else if(I.is_screwdriver())
if(bee_count)
- user << "You can't dismantle \the [src] with these bees inside."
+ to_chat(user, "You can't dismantle \the [src] with these bees inside.")
return
- user << "You start dismantling \the [src]..."
+ to_chat(user, "You start dismantling \the [src]...")
playsound(src, I.usesound, 50, 1)
if(do_after(user, 30))
user.visible_message("[user] dismantles \the [src].", "You dismantle \the [src].")
@@ -122,10 +122,10 @@
/obj/machinery/beehive/attack_hand(var/mob/user)
if(!closed)
if(honeycombs < 100)
- user << "There are no filled honeycombs."
+ to_chat(user, "There are no filled honeycombs.")
return
if(!smoked && bee_count)
- user << "The bees won't let you take the honeycombs out like this, smoke them first."
+ to_chat(user, "The bees won't let you take the honeycombs out like this, smoke them first.")
return
user.visible_message("[user] starts taking the honeycombs out of \the [src].", "You start taking the honeycombs out of \the [src]...")
while(honeycombs >= 100 && do_after(user, 30))
@@ -134,7 +134,7 @@
--frames
update_icon()
if(honeycombs < 100)
- user << "You take all filled honeycombs out."
+ to_chat(user, "You take all filled honeycombs out.")
return
/obj/machinery/beehive/process()
@@ -166,12 +166,12 @@
/obj/machinery/honey_extractor/attackby(var/obj/item/I, var/mob/user)
if(processing)
- user << "\The [src] is currently spinning, wait until it's finished."
+ to_chat(user, "\The [src] is currently spinning, wait until it's finished.")
return
else if(istype(I, /obj/item/honey_frame))
var/obj/item/honey_frame/H = I
if(!H.honey)
- user << "\The [H] is empty, put it into a beehive."
+ to_chat(user, "\The [H] is empty, put it into a beehive.")
return
user.visible_message("[user] loads \the [H] into \the [src] and turns it on.", "You load \the [H] into \the [src] and turn it on.")
processing = H.honey
@@ -185,7 +185,7 @@
icon_state = "centrifuge"
else if(istype(I, /obj/item/weapon/reagent_containers/glass))
if(!honey)
- user << "There is no honey in \the [src]."
+ to_chat(user, "There is no honey in \the [src].")
return
var/obj/item/weapon/reagent_containers/glass/G = I
var/transferred = min(G.reagents.maximum_volume - G.reagents.total_volume, honey)
@@ -226,7 +226,7 @@
icon_state = "apiary"
/obj/item/beehive_assembly/attack_self(var/mob/user)
- user << "You start assembling \the [src]..."
+ to_chat(user, "You start assembling \the [src]...")
if(do_after(user, 30))
user.visible_message("[user] constructs a beehive.", "You construct a beehive.")
new /obj/machinery/beehive(get_turf(user))
diff --git a/code/modules/hydroponics/seed_machines.dm b/code/modules/hydroponics/seed_machines.dm
index bc96f064c9c..3507e497004 100644
--- a/code/modules/hydroponics/seed_machines.dm
+++ b/code/modules/hydroponics/seed_machines.dm
@@ -17,7 +17,7 @@
if(genes.len)
var/choice = alert(user, "Are you sure you want to wipe the disk?", "Xenobotany Data", "No", "Yes")
if(src && user && genes && choice && choice == "Yes" && user.Adjacent(get_turf(src)))
- user << "You wipe the disk data."
+ to_chat(user, "You wipe the disk data.")
name = initial(name)
desc = initial(name)
genes = list()
@@ -82,16 +82,16 @@
/obj/machinery/botany/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/seeds))
if(seed)
- user << "There is already a seed loaded."
+ to_chat(user, "There is already a seed loaded.")
return
var/obj/item/seeds/S =W
if(S.seed && S.seed.get_trait(TRAIT_IMMUTABLE) > 0)
- user << "That seed is not compatible with our genetics technology."
+ to_chat(user, "That seed is not compatible with our genetics technology.")
else
user.drop_from_inventory(W)
W.loc = src
seed = W
- user << "You load [W] into [src]."
+ to_chat(user, "You load [W] into [src].")
return
if(default_deconstruction_screwdriver(user, W))
@@ -100,24 +100,24 @@
return
if(istype(W,/obj/item/weapon/disk/botany))
if(loaded_disk)
- user << "There is already a data disk loaded."
+ to_chat(user, "There is already a data disk loaded.")
return
else
var/obj/item/weapon/disk/botany/B = W
if(B.genes && B.genes.len)
if(!disk_needs_genes)
- user << "That disk already has gene data loaded."
+ to_chat(user, "That disk already has gene data loaded.")
return
else
if(disk_needs_genes)
- user << "That disk does not have any gene data loaded."
+ to_chat(user, "That disk does not have any gene data loaded.")
return
user.drop_from_inventory(W)
W.loc = src
loaded_disk = W
- user << "You load [W] into [src]."
+ to_chat(user, "You load [W] into [src].")
return
..()
diff --git a/code/modules/hydroponics/seed_storage.dm b/code/modules/hydroponics/seed_storage.dm
index 6ee9fde05c8..b2803e9d05a 100644
--- a/code/modules/hydroponics/seed_storage.dm
+++ b/code/modules/hydroponics/seed_storage.dm
@@ -482,20 +482,20 @@
if (loaded)
user.visible_message("[user] puts the seeds from \the [O.name] into \the [src].", "You put the seeds from \the [O.name] into \the [src].")
else
- user << "There are no seeds in \the [O.name]."
+ to_chat(user, "There are no seeds in \the [O.name].")
return
- else if(istype(O, /obj/item/weapon/wrench))
+ else if(O.is_wrench())
playsound(loc, O.usesound, 50, 1)
anchored = !anchored
- user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
- else if(istype(O, /obj/item/weapon/screwdriver))
+ to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
+ else if(O.is_screwdriver())
panel_open = !panel_open
to_chat(user, "You [panel_open ? "open" : "close"] the maintenance panel.")
playsound(src, O.usesound, 50, 1)
overlays.Cut()
if(panel_open)
overlays += image(icon, "[initial(icon_state)]-panel")
- else if((istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/device/multitool)) && panel_open)
+ else if((O.is_wirecutter() || istype(O, /obj/item/device/multitool)) && panel_open)
wires.Interact(user)
/obj/machinery/seed_storage/emag_act(var/remaining_charges, var/mob/user)
diff --git a/code/modules/hydroponics/spreading/spreading.dm b/code/modules/hydroponics/spreading/spreading.dm
index c35d4b489a6..b2e3e28287f 100644
--- a/code/modules/hydroponics/spreading/spreading.dm
+++ b/code/modules/hydroponics/spreading/spreading.dm
@@ -240,7 +240,7 @@
user.setClickCooldown(user.get_attack_speed(W))
plant_controller.add_plant(src)
- if(istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/weapon/surgical/scalpel))
+ if(W.is_wirecutter() || istype(W, /obj/item/weapon/surgical/scalpel))
if(sampled)
user << "\The [src] has already been sampled recently."
return
diff --git a/code/modules/hydroponics/trays/tray.dm b/code/modules/hydroponics/trays/tray.dm
index 7dc02dedc71..8db9f7a8f1a 100644
--- a/code/modules/hydroponics/trays/tray.dm
+++ b/code/modules/hydroponics/trays/tray.dm
@@ -453,7 +453,7 @@
if(O.is_open_container())
return 0
- if(istype(O, /obj/item/weapon/wirecutters) || istype(O, /obj/item/weapon/surgical/scalpel))
+ if(O.is_wirecutter() || istype(O, /obj/item/weapon/surgical/scalpel))
if(!seed)
user << "There is nothing to take a sample from in \the [src]."
@@ -548,7 +548,7 @@
qdel(O)
check_health()
- else if(mechanical && istype(O, /obj/item/weapon/wrench))
+ else if(mechanical && O.is_wrench())
//If there's a connector here, the portable_atmospherics setup can handle it.
if(locate(/obj/machinery/atmospherics/portables_connector/) in loc)
diff --git a/code/modules/hydroponics/trays/tray_tools.dm b/code/modules/hydroponics/trays/tray_tools.dm
index 6c6a8ddbe35..c242f30bed8 100644
--- a/code/modules/hydroponics/trays/tray_tools.dm
+++ b/code/modules/hydroponics/trays/tray_tools.dm
@@ -1,6 +1,6 @@
//Analyzer, pestkillers, weedkillers, nutrients, hatchets, cutters.
-/obj/item/weapon/wirecutters/clippers
+/obj/item/weapon/tool/wirecutters/clippers
name = "plant clippers"
desc = "A tool used to take samples from plants."
diff --git a/code/modules/integrated_electronics/core/assemblies.dm b/code/modules/integrated_electronics/core/assemblies.dm
index 6404e2a579c..90046fd2696 100644
--- a/code/modules/integrated_electronics/core/assemblies.dm
+++ b/code/modules/integrated_electronics/core/assemblies.dm
@@ -264,13 +264,13 @@
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
interact(user)
return TRUE
- else if(istype(I, /obj/item/weapon/crowbar))
+ else if(I.is_crowbar())
playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1)
opened = !opened
to_chat(user, "You [opened ? "opened" : "closed"] \the [src].")
update_icon()
return TRUE
- else if(istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger) || istype(I, /obj/item/weapon/screwdriver))
+ else if(istype(I, /obj/item/device/integrated_electronics/wirer) || istype(I, /obj/item/device/integrated_electronics/debugger) || I.is_screwdriver())
if(opened)
interact(user)
else
diff --git a/code/modules/integrated_electronics/core/device.dm b/code/modules/integrated_electronics/core/device.dm
index 91243aefab4..1b298c7a368 100644
--- a/code/modules/integrated_electronics/core/device.dm
+++ b/code/modules/integrated_electronics/core/device.dm
@@ -12,7 +12,7 @@
..()
/obj/item/device/assembly/electronic_assembly/attackby(obj/item/I as obj, mob/user as mob)
- if (iscrowbar(I) )
+ if (I.is_crowbar())
toggle_open(user)
else if (opened)
EA.attackby(I, user)
diff --git a/code/modules/integrated_electronics/core/tools.dm b/code/modules/integrated_electronics/core/tools.dm
index 5d4133e3d3d..c9d1c89e2be 100644
--- a/code/modules/integrated_electronics/core/tools.dm
+++ b/code/modules/integrated_electronics/core/tools.dm
@@ -261,11 +261,11 @@
/obj/item/weapon/storage/bag/circuits/mini,
/obj/item/device/electronic_assembly,
/obj/item/device/integrated_electronics,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/screwdriver,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/screwdriver,
/obj/item/device/multitool
)
- cant_hold = list(/obj/item/weapon/screwdriver/power)
+ cant_hold = list(/obj/item/weapon/tool/screwdriver/power)
/obj/item/weapon/storage/bag/circuits/basic/New()
..()
@@ -290,8 +290,8 @@
new /obj/item/device/assembly/electronic_assembly(src)
new /obj/item/device/assembly/electronic_assembly(src)
new /obj/item/device/multitool(src)
- new /obj/item/weapon/screwdriver(src)
- new /obj/item/weapon/crowbar(src)
+ new /obj/item/weapon/tool/screwdriver(src)
+ new /obj/item/weapon/tool/crowbar(src)
make_exact_fit()
/obj/item/weapon/storage/bag/circuits/all/New()
@@ -317,7 +317,7 @@
new /obj/item/device/electronic_assembly/drone(src)
new /obj/item/device/integrated_electronics/wirer(src)
new /obj/item/device/integrated_electronics/debugger(src)
- new /obj/item/weapon/crowbar(src)
+ new /obj/item/weapon/tool/crowbar(src)
make_exact_fit()
/obj/item/weapon/storage/bag/circuits/mini/
diff --git a/code/modules/integrated_electronics/subtypes/manipulation.dm b/code/modules/integrated_electronics/subtypes/manipulation.dm
index 3e53a069f30..344a7dc47e8 100644
--- a/code/modules/integrated_electronics/subtypes/manipulation.dm
+++ b/code/modules/integrated_electronics/subtypes/manipulation.dm
@@ -32,13 +32,13 @@
if(istype(O, /obj/item/weapon/gun))
var/obj/item/weapon/gun/gun = O
if(installed_gun)
- user << "There's already a weapon installed."
+ to_chat(user, "There's already a weapon installed.")
return
user.drop_from_inventory(gun)
installed_gun = gun
size += gun.w_class
gun.forceMove(src)
- user << "You slide \the [gun] into the firing mechanism."
+ to_chat(user, "You slide \the [gun] into the firing mechanism.")
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
else
..()
@@ -46,12 +46,12 @@
/obj/item/integrated_circuit/manipulation/weapon_firing/attack_self(var/mob/user)
if(installed_gun)
installed_gun.forceMove(get_turf(src))
- user << "You slide \the [installed_gun] out of the firing mechanism."
+ to_chat(user, "You slide \the [installed_gun] out of the firing mechanism.")
size = initial(size)
playsound(src.loc, 'sound/items/Crowbar.ogg', 50, 1)
installed_gun = null
else
- user << "There's no weapon to remove from the mechanism."
+ to_chat(user, "There's no weapon to remove from the mechanism.")
/obj/item/integrated_circuit/manipulation/weapon_firing/do_work()
if(!installed_gun)
diff --git a/code/modules/library/lib_items.dm b/code/modules/library/lib_items.dm
index 10c1fb2a8e4..63f855b8a42 100644
--- a/code/modules/library/lib_items.dm
+++ b/code/modules/library/lib_items.dm
@@ -37,15 +37,15 @@
return
else
name = ("bookcase ([newname])")
- else if(istype(O,/obj/item/weapon/wrench))
+ else if(O.is_wrench())
playsound(loc, O.usesound, 100, 1)
- user << (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor.")
+ to_chat(user, (anchored ? "You unfasten \the [src] from the floor." : "You secure \the [src] to the floor."))
anchored = !anchored
- else if(istype(O,/obj/item/weapon/screwdriver))
+ else if(O.is_screwdriver())
playsound(loc, O.usesound, 75, 1)
- user << "You begin dismantling \the [src]."
+ to_chat(user, "You begin dismantling \the [src].")
if(do_after(user,25 * O.toolspeed))
- user << "You dismantle \the [src]."
+ to_chat(user, "You dismantle \the [src].")
new /obj/item/stack/material/wood(get_turf(src), 3)
for(var/obj/item/weapon/book/b in contents)
b.loc = (get_turf(src))
@@ -154,19 +154,19 @@
/obj/item/weapon/book/attack_self(var/mob/user as mob)
if(carved)
if(store)
- user << "[store] falls out of [title]!"
+ to_chat(user, "[store] falls out of [title]!")
store.loc = get_turf(src.loc)
store = null
return
else
- user << "The pages of [title] have been cut out!"
+ to_chat(user, "The pages of [title] have been cut out!")
return
if(src.dat)
user << browse("Penned by [author].
" + "[dat]", "window=book")
user.visible_message("[user] opens a book titled \"[src.title]\" and begins reading intently.")
onclose(user, "book")
else
- user << "This book is completely blank!"
+ to_chat(user, "This book is completely blank!")
/obj/item/weapon/book/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(carved)
@@ -175,24 +175,24 @@
user.drop_item()
W.loc = src
store = W
- user << "You put [W] in [title]."
+ to_chat(user, "You put [W] in [title].")
return
else
- user << "[W] won't fit in [title]."
+ to_chat(user, "[W] won't fit in [title].")
return
else
- user << "There's already something in [title]!"
+ to_chat(user, "There's already something in [title]!")
return
if(istype(W, /obj/item/weapon/pen))
if(unique)
- user << "These pages don't seem to take the ink well. Looks like you can't modify it."
+ to_chat(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)
if("Title")
var/newtitle = reject_bad_text(sanitizeSafe(input("Write a new title:")))
if(!newtitle)
- usr << "The title is invalid."
+ to_chat(usr, "The title is invalid.")
return
else
src.name = newtitle
@@ -200,14 +200,14 @@
if("Contents")
var/content = sanitize(input("Write your book's contents (HTML NOT allowed):") as message|null, MAX_BOOK_MESSAGE_LEN)
if(!content)
- usr << "The content is invalid."
+ to_chat(usr, "The content is invalid.")
return
else
src.dat += content
if("Author")
var/newauthor = sanitize(input(usr, "Write the author's name:"))
if(!newauthor)
- usr << "The name is invalid."
+ to_chat(usr, "The name is invalid.")
return
else
src.author = newauthor
@@ -216,37 +216,37 @@
else if(istype(W, /obj/item/weapon/barcodescanner))
var/obj/item/weapon/barcodescanner/scanner = W
if(!scanner.computer)
- user << "[W]'s screen flashes: 'No associated computer found!'"
+ to_chat(user, "[W]'s screen flashes: 'No associated computer found!'")
else
switch(scanner.mode)
if(0)
scanner.book = src
- user << "[W]'s screen flashes: 'Book stored in buffer.'"
+ to_chat(user, "[W]'s screen flashes: 'Book stored in buffer.'")
if(1)
scanner.book = src
scanner.computer.buffer_book = src.name
- user << "[W]'s screen flashes: 'Book stored in buffer. Book title stored in associated computer buffer.'"
+ to_chat(user, "[W]'s screen flashes: 'Book stored in buffer. Book title stored in associated computer buffer.'")
if(2)
scanner.book = src
for(var/datum/borrowbook/b in scanner.computer.checkouts)
if(b.bookname == src.name)
scanner.computer.checkouts.Remove(b)
- user << "[W]'s screen flashes: 'Book stored in buffer. Book has been checked in.'"
+ to_chat(user, "[W]'s screen flashes: 'Book stored in buffer. Book has been checked in.'")
return
- user << "[W]'s screen flashes: 'Book stored in buffer. No active check-out record found for current title.'"
+ to_chat(user, "[W]'s screen flashes: 'Book stored in buffer. No active check-out record found for current title.'")
if(3)
scanner.book = src
for(var/obj/item/weapon/book in scanner.computer.inventory)
if(book == src)
- user << "[W]'s screen flashes: 'Book stored in buffer. Title already present in inventory, aborting to avoid duplicate entry.'"
+ to_chat(user, "[W]'s screen flashes: 'Book stored in buffer. Title already present in inventory, aborting to avoid duplicate entry.'")
return
scanner.computer.inventory.Add(src)
- user << "[W]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'"
- else if(istype(W, /obj/item/weapon/material/knife) || istype(W, /obj/item/weapon/wirecutters))
+ to_chat(user, "[W]'s screen flashes: 'Book stored in buffer. Title added to general inventory.'")
+ else if(istype(W, /obj/item/weapon/material/knife) || W.is_wirecutter())
if(carved) return
- user << "You begin to carve out [title]."
+ to_chat(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."
+ to_chat(user, "You carve out the pages from [title]! You didn't want to read it anyway.")
carved = 1
return
else
@@ -278,7 +278,7 @@
mode += 1
if(mode > 3)
mode = 0
- user << "[src] Status Display:"
+ to_chat(user, "[src] Status Display:")
var/modedesc
switch(mode)
if(0)
@@ -291,9 +291,9 @@
modedesc = "Scan book to local buffer, attempt to add book to general inventory."
else
modedesc = "ERROR"
- user << " - Mode [mode] : [modedesc]"
+ to_chat(user, " - Mode [mode] : [modedesc]")
if(src.computer)
- user << "Computer has been associated with this unit."
+ to_chat(user, "Computer has been associated with this unit.")
else
- user << "No associated computer found. Only local scans will function properly."
- user << "\n"
\ No newline at end of file
+ to_chat(user, "No associated computer found. Only local scans will function properly.")
+ to_chat(user, "\n")
\ No newline at end of file
diff --git a/code/modules/mining/coins.dm b/code/modules/mining/coins.dm
index 2536f0ac2d2..baf8094967c 100644
--- a/code/modules/mining/coins.dm
+++ b/code/modules/mining/coins.dm
@@ -57,7 +57,7 @@
else
user << "This cable coil appears to be empty."
return
- else if(istype(W,/obj/item/weapon/wirecutters))
+ else if(W.is_wirecutter())
if(!string_attached)
..()
return
diff --git a/code/modules/mining/drilling/drill.dm b/code/modules/mining/drilling/drill.dm
index 99fe3f85eeb..7cf8bc575e6 100644
--- a/code/modules/mining/drilling/drill.dm
+++ b/code/modules/mining/drilling/drill.dm
@@ -158,13 +158,13 @@
if(istype(O, /obj/item/weapon/cell))
if(cell)
- user << "The drill already has a cell installed."
+ to_chat(user, "The drill already has a cell installed.")
else
user.drop_item()
O.loc = src
cell = O
component_parts += O
- user << "You install \the [O]."
+ to_chat(user, "You install \the [O].")
return
..()
@@ -172,13 +172,13 @@
check_supports()
if (panel_open && cell && user.Adjacent(src))
- user << "You take out \the [cell]."
+ to_chat(user, "You take out \the [cell].")
cell.loc = get_turf(user)
component_parts -= cell
cell = null
return
else if(need_player_check)
- user << "You hit the manual override and reset the drill's error checking."
+ to_chat(user, "You hit the manual override and reset the drill's error checking.")
need_player_check = 0
if(anchored)
get_resource_field()
@@ -193,9 +193,9 @@
else
visible_message("\The [src] shudders to a grinding halt.")
else
- user << "The drill is unpowered."
+ to_chat(user, "The drill is unpowered.")
else
- user << "Turning on a piece of industrial machinery without sufficient bracing or wires exposed is a bad idea."
+ to_chat(user, "Turning on a piece of industrial machinery without sufficient bracing or wires exposed is a bad idea.")
update_icon()
@@ -289,9 +289,9 @@
if(B)
for(var/obj/item/weapon/ore/O in contents)
O.loc = B
- usr << "You unload the drill's storage cache into the ore box."
+ to_chat(usr, "You unload the drill's storage cache into the ore box.")
else
- usr << "You must move an ore box up to the drill before you can unload it."
+ to_chat(usr, "You must move an ore box up to the drill before you can unload it.")
/obj/machinery/mining/brace
@@ -308,7 +308,7 @@
/obj/machinery/mining/brace/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(connected && connected.active)
- user << "You can't work with the brace of a running drill!"
+ to_chat(user, "You can't work with the brace of a running drill!")
return
if(default_deconstruction_screwdriver(user, W))
@@ -316,14 +316,14 @@
if(default_deconstruction_crowbar(user, W))
return
- if(istype(W,/obj/item/weapon/wrench))
+ if(W.is_wrench())
if(istype(get_turf(src), /turf/space))
- user << "You can't anchor something to empty space. Idiot."
+ to_chat(user, "You can't anchor something to empty space. Idiot.")
return
playsound(src, W.usesound, 100, 1)
- user << "You [anchored ? "un" : ""]anchor the brace."
+ to_chat(user, "You [anchored ? "un" : ""]anchor the brace.")
anchored = !anchored
if(anchored)
@@ -371,7 +371,7 @@
if(usr.stat) return
if (src.anchored)
- usr << "It is anchored in place!"
+ to_chat(usr, "It is anchored in place!")
return 0
src.set_dir(turn(src.dir, 90))
diff --git a/code/modules/mob/living/bot/bot.dm b/code/modules/mob/living/bot/bot.dm
index 1b07efea95c..12715a4c2b6 100644
--- a/code/modules/mob/living/bot/bot.dm
+++ b/code/modules/mob/living/bot/bot.dm
@@ -88,23 +88,23 @@
if(O.GetID())
if(access_scanner.allowed(user) && !open && !emagged)
locked = !locked
- user << "Controls are now [locked ? "locked." : "unlocked."]"
+ to_chat(user, "Controls are now [locked ? "locked." : "unlocked."]")
attack_hand(user)
else
if(emagged)
- user << "ERROR"
+ to_chat(user, "ERROR")
if(open)
- user << "Please close the access panel before locking it."
+ to_chat(user, "Please close the access panel before locking it.")
else
- user << "Access denied."
+ to_chat(user, "Access denied.")
return
- else if(istype(O, /obj/item/weapon/screwdriver))
+ else if(O.is_screwdriver())
if(!locked)
open = !open
- user << "Maintenance panel is now [open ? "opened" : "closed"]."
+ to_chat(user, "Maintenance panel is now [open ? "opened" : "closed"].")
playsound(src, O.usesound, 50, 1)
else
- user << "You need to unlock the controls first."
+ to_chat(user, "You need to unlock the controls first.")
return
else if(istype(O, /obj/item/weapon/weldingtool))
if(health < getMaxHealth())
@@ -113,9 +113,9 @@
user.visible_message("[user] repairs [src].","You repair [src].")
playsound(src, O.usesound, 50, 1)
else
- user << "Unable to repair with the maintenance panel closed."
+ to_chat(user, "Unable to repair with the maintenance panel closed.")
else
- user << "[src] does not need a repair."
+ to_chat(user, "[src] does not need a repair.")
return
else
..()
diff --git a/code/modules/mob/living/bot/ed209bot.dm b/code/modules/mob/living/bot/ed209bot.dm
index cac0f1872a0..7c709bc165f 100644
--- a/code/modules/mob/living/bot/ed209bot.dm
+++ b/code/modules/mob/living/bot/ed209bot.dm
@@ -56,7 +56,7 @@
/mob/living/bot/secbot/ed209/RangedAttack(var/atom/A)
if(last_shot + shot_delay > world.time)
- src << "You are not ready to fire yet!"
+ to_chat(src, "You are not ready to fire yet!")
return
last_shot = world.time
@@ -100,7 +100,7 @@
user.drop_item()
qdel(W)
build_step++
- user << "You add the robot leg to [src]."
+ to_chat(user, "You add the robot leg to [src].")
name = "legs/frame assembly"
if(build_step == 1)
icon_state = "ed209_leg"
@@ -112,7 +112,7 @@
user.drop_item()
qdel(W)
build_step++
- user << "You add the armor to [src]."
+ to_chat(user, "You add the armor to [src].")
name = "vest/legs/frame assembly"
item_state = "ed209_shell"
icon_state = "ed209_shell"
@@ -123,13 +123,13 @@
if(WT.remove_fuel(0, user))
build_step++
name = "shielded frame assembly"
- user << "You welded the vest to [src]."
+ to_chat(user, "You welded the vest to [src].")
if(4)
if(istype(W, /obj/item/clothing/head/helmet))
user.drop_item()
qdel(W)
build_step++
- user << "You add the helmet to [src]."
+ to_chat(user, "You add the helmet to [src].")
name = "covered and shielded frame assembly"
item_state = "ed209_hat"
icon_state = "ed209_hat"
@@ -139,7 +139,7 @@
user.drop_item()
qdel(W)
build_step++
- user << "You add the prox sensor to [src]."
+ to_chat(user, "You add the prox sensor to [src].")
name = "covered, shielded and sensored frame assembly"
item_state = "ed209_prox"
icon_state = "ed209_prox"
@@ -148,13 +148,13 @@
if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
if (C.get_amount() < 1)
- user << "You need one coil of wire to wire [src]."
+ to_chat(user, "You need one coil of wire to wire [src].")
return
- user << "You start to wire [src]."
+ to_chat(user, "You start to wire [src].")
if(do_after(user, 40) && build_step == 6)
if(C.use(1))
build_step++
- user << "You wire the ED-209 assembly."
+ to_chat(user, "You wire the ED-209 assembly.")
name = "wired ED-209 assembly"
return
@@ -162,27 +162,27 @@
if(istype(W, /obj/item/weapon/gun/energy/taser))
name = "taser ED-209 assembly"
build_step++
- user << "You add [W] to [src]."
+ to_chat(user, "You add [W] to [src].")
item_state = "ed209_taser"
icon_state = "ed209_taser"
user.drop_item()
qdel(W)
if(8)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
playsound(src, W.usesound, 100, 1)
var/turf/T = get_turf(user)
- user << "Now attaching the gun to the frame..."
+ to_chat(user, "Now attaching the gun to the frame...")
sleep(40)
if(get_turf(user) == T && build_step == 8)
build_step++
name = "armed [name]"
- user << "Taser gun attached."
+ to_chat(user, "Taser gun attached.")
if(9)
if(istype(W, /obj/item/weapon/cell))
build_step++
- user << "You complete the ED-209."
+ to_chat(user, "You complete the ED-209.")
var/turf/T = get_turf(src)
new /mob/living/bot/secbot/ed209(T,created_name,lasercolor)
user.drop_item()
diff --git a/code/modules/mob/living/bot/edCLNbot.dm b/code/modules/mob/living/bot/edCLNbot.dm
index 159b3e3594e..9b846511659 100644
--- a/code/modules/mob/living/bot/edCLNbot.dm
+++ b/code/modules/mob/living/bot/edCLNbot.dm
@@ -214,7 +214,7 @@
qdel(W)
if(7)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
playsound(src, W.usesound, 100, 1)
var/turf/T = get_turf(user)
to_chat(user, "Attatching the mop to the frame...")
diff --git a/code/modules/mob/living/silicon/ai/ai.dm b/code/modules/mob/living/silicon/ai/ai.dm
index b7b0c86b194..c35fdcbf2ac 100644
--- a/code/modules/mob/living/silicon/ai/ai.dm
+++ b/code/modules/mob/living/silicon/ai/ai.dm
@@ -119,7 +119,7 @@ var/list/ai_verbs_default = list(
canmove = 0
density = 1
loc = loc
-
+
if(!is_dummy)
aiCommunicator = new /obj/item/device/communicator/integrated(src)
@@ -686,7 +686,7 @@ var/list/ai_verbs_default = list(
var/obj/item/device/aicard/card = W
card.grab_ai(src, user)
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(user == controlling_drone)
to_chat(user, "The drone's subsystems resist your efforts to tamper with your bolts.")
return
@@ -796,7 +796,7 @@ var/list/ai_verbs_default = list(
//Special subtype kept around for global announcements
/mob/living/silicon/ai/announcer/
is_dummy = 1
-
+
/mob/living/silicon/ai/announcer/initialize()
. = ..()
mob_list -= src
diff --git a/code/modules/mob/living/silicon/robot/drone/drone.dm b/code/modules/mob/living/silicon/robot/drone/drone.dm
index 0273ea1a72b..dfecf96e6c5 100644
--- a/code/modules/mob/living/silicon/robot/drone/drone.dm
+++ b/code/modules/mob/living/silicon/robot/drone/drone.dm
@@ -182,7 +182,7 @@ var/list/mob_hat_cache = list()
to_chat(user, "\The [src] is not compatible with \the [W].")
return
- else if (istype(W, /obj/item/weapon/crowbar))
+ else if (W.is_crowbar())
to_chat(user, "\The [src] is hermetically sealed. You can't open the case.")
return
diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm
index 6c7b8953850..1845ab5a4a6 100644
--- a/code/modules/mob/living/silicon/robot/robot.dm
+++ b/code/modules/mob/living/silicon/robot/robot.dm
@@ -196,7 +196,7 @@
if(cell.charge > cell_amount)
// Spam Protection
if(prob(10))
- src << "Warning: Unauthorized access through power channel [rand(11,29)] detected!"
+ to_chat(src, "Warning: Unauthorized access through power channel [rand(11,29)] detected!")
cell.use(cell_amount)
return amount
return 0
@@ -227,7 +227,7 @@
mmi.brainmob.remove_language("Robot Talk")
mind.transfer_to(mmi.brainmob)
else
- src << "Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug."
+ to_chat(src, "Oops! Something went very wrong, your MMI was unable to receive your mind. You have been ghosted. Please make a bug report so we can fix this bug.")
ghostize()
//ERROR("A borg has been destroyed, but its MMI lacked a brainmob, so the mind could not be transferred. Player: [ckey].")
mmi = null
@@ -256,7 +256,7 @@
var/list/modules = list()
modules.Add(robot_module_types)
if((crisis && security_level == SEC_LEVEL_RED) || crisis_override) //Leaving this in until it's balanced appropriately.
- src << "Crisis mode active. Combat module available."
+ to_chat(src, "Crisis mode active. Combat module available.")
modules+="Combat"
modtype = input("Please, select a module!", "Robot module", null, null) as null|anything in modules
@@ -352,7 +352,7 @@
set name = "Toggle Lights"
lights_on = !lights_on
- usr << "You [lights_on ? "enable" : "disable"] your integrated light."
+ to_chat(usr, "You [lights_on ? "enable" : "disable"] your integrated light.")
handle_light()
/mob/living/silicon/robot/verb/self_diagnosis_verb()
@@ -360,11 +360,11 @@
set name = "Self Diagnosis"
if(!is_component_functioning("diagnosis unit"))
- src << "Your self-diagnosis component isn't functioning."
+ to_chat(src, "Your self-diagnosis component isn't functioning.")
var/datum/robot_component/CO = get_component("diagnosis unit")
if (!cell_use_power(CO.active_usage))
- src << "Low Power."
+ to_chat(src, "Low Power.")
var/dat = self_diagnosis()
src << browse(dat, "window=robotdiagnosis")
@@ -388,10 +388,10 @@
var/datum/robot_component/C = components[toggle]
if(C.toggled)
C.toggled = 0
- src << "You disable [C.name]."
+ to_chat(src, "You disable [C.name].")
else
C.toggled = 1
- src << "You enable [C.name]."
+ to_chat(src, "You enable [C.name].")
/mob/living/silicon/robot/verb/spark_plug() //So you can still sparkle on demand without violence.
set category = "Robot Commands"
@@ -462,7 +462,7 @@
C.brute_damage = WC.brute
C.electronics_damage = WC.burn
- usr << "You install the [W.name]."
+ to_chat(usr, "You install the [W.name].")
return
@@ -477,11 +477,11 @@
if (istype(W, /obj/item/weapon/weldingtool))
if (src == user)
- user << "You lack the reach to be able to repair yourself."
+ to_chat(user, "You lack the reach to be able to repair yourself.")
return
if (!getBruteLoss())
- user << "Nothing to fix here!"
+ to_chat(user, "Nothing to fix here!")
return
var/obj/item/weapon/weldingtool/WT = W
if (WT.remove_fuel(0))
@@ -492,12 +492,12 @@
for(var/mob/O in viewers(user, null))
O.show_message(text("[user] has fixed some of the dents on [src]!"), 1)
else
- user << "Need more welding fuel!"
+ to_chat(user, "Need more welding fuel!")
return
else if(istype(W, /obj/item/stack/cable_coil) && (wiresexposed || istype(src,/mob/living/silicon/robot/drone)))
if (!getFireLoss())
- user << "Nothing to fix here!"
+ to_chat(user, "Nothing to fix here!")
return
var/obj/item/stack/cable_coil/coil = W
if (coil.use(1))
@@ -507,21 +507,21 @@
for(var/mob/O in viewers(user, null))
O.show_message(text("[user] has fixed some of the burnt wires on [src]!"), 1)
- else if (istype(W, /obj/item/weapon/crowbar)) // crowbar means open or close the cover
+ else if (W.is_crowbar()) // crowbar means open or close the cover
if(opened)
if(cell)
- user << "You close the cover."
+ to_chat(user, "You close the cover.")
opened = 0
updateicon()
else if(wiresexposed && wires.IsAllCut())
//Cell is out, wires are exposed, remove MMI, produce damaged chassis, baleet original mob.
if(!mmi)
- user << "\The [src] has no brain to remove."
+ to_chat(user, "\The [src] has no brain to remove.")
return
- user << "You jam the crowbar into the robot and begin levering [mmi]."
+ to_chat(user, "You jam the crowbar into the robot and begin levering [mmi].")
sleep(30)
- user << "You damage some parts of the chassis, but eventually manage to rip out [mmi]!"
+ to_chat(user, "You damage some parts of the chassis, but eventually manage to rip out [mmi]!")
var/obj/item/robot_parts/robot_suit/C = new/obj/item/robot_parts/robot_suit(loc)
C.l_leg = new/obj/item/robot_parts/l_leg(C)
C.r_leg = new/obj/item/robot_parts/r_leg(C)
@@ -544,7 +544,7 @@
return
var/datum/robot_component/C = components[remove]
var/obj/item/robot_parts/robot_component/I = C.wrapped
- user << "You remove \the [I]."
+ to_chat(user, "You remove \the [I].")
if(istype(I))
I.brute = C.brute_damage
I.burn = C.electronics_damage
@@ -557,25 +557,25 @@
else
if(locked)
- user << "The cover is locked and cannot be opened."
+ to_chat(user, "The cover is locked and cannot be opened.")
else
- user << "You open the cover."
+ to_chat(user, "You open the cover.")
opened = 1
updateicon()
else if (istype(W, /obj/item/weapon/cell) && opened) // trying to put a cell inside
var/datum/robot_component/C = components["power cell"]
if(wiresexposed)
- user << "Close the panel first."
+ to_chat(user, "Close the panel first.")
else if(cell)
- user << "There is a power cell already installed."
+ to_chat(user, "There is a power cell already installed.")
else if(W.w_class != ITEMSIZE_NORMAL)
- user << "\The [W] is too [W.w_class < ITEMSIZE_NORMAL ? "small" : "large"] to fit here."
+ to_chat(user, "\The [W] is too [W.w_class < ITEMSIZE_NORMAL ? "small" : "large"] to fit here.")
else
user.drop_item()
W.loc = src
cell = W
- user << "You insert the power cell."
+ to_chat(user, "You insert the power cell.")
C.installed = 1
C.wrapped = W
@@ -584,59 +584,59 @@
C.brute_damage = 0
C.electronics_damage = 0
- else if (istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/multitool))
+ else if (W.is_wirecutter() || istype(W, /obj/item/device/multitool))
if (wiresexposed)
wires.Interact(user)
else
- user << "You can't reach the wiring."
+ to_chat(user, "You can't reach the wiring.")
- else if(istype(W, /obj/item/weapon/screwdriver) && opened && !cell) // haxing
+ else if(W.is_screwdriver() && opened && !cell) // haxing
wiresexposed = !wiresexposed
- user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
+ to_chat(user, "The wires have been [wiresexposed ? "exposed" : "unexposed"]")
playsound(src, W.usesound, 50, 1)
updateicon()
- else if(istype(W, /obj/item/weapon/screwdriver) && opened && cell) // radio
+ else if(W.is_screwdriver() && opened && cell) // radio
if(radio)
radio.attackby(W,user)//Push it to the radio to let it handle everything
else
- user << "Unable to locate a radio."
+ to_chat(user, "Unable to locate a radio.")
updateicon()
else if(istype(W, /obj/item/device/encryptionkey/) && opened)
if(radio)//sanityyyyyy
radio.attackby(W,user)//GTFO, you have your own procs
else
- user << "Unable to locate a radio."
+ to_chat(user, "Unable to locate a radio.")
else if (istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)||istype(W, /obj/item/weapon/card/robot)) // trying to unlock the interface with an ID card
if(emagged)//still allow them to open the cover
- user << "The interface seems slightly damaged"
+ to_chat(user, "The interface seems slightly damaged")
if(opened)
- user << "You must close the cover to swipe an ID card."
+ to_chat(user, "You must close the cover to swipe an ID card.")
else
if(allowed(usr))
locked = !locked
- user << "You [ locked ? "lock" : "unlock"] [src]'s interface."
+ to_chat(user, "You [ locked ? "lock" : "unlock"] [src]'s interface.")
updateicon()
else
- user << "Access denied."
+ to_chat(user, "Access denied.")
else if(istype(W, /obj/item/borg/upgrade/))
var/obj/item/borg/upgrade/U = W
if(!opened)
- usr << "You must access the borgs internals!"
+ to_chat(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!"
+ to_chat(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!"
+ to_chat(usr, "The upgrade is locked and cannot be used yet!")
else
if(U.action(src))
- usr << "You apply the upgrade to [src]!"
+ to_chat(usr, "You apply the upgrade to [src]!")
usr.drop_item()
U.loc = src
else
- usr << "Upgrade error!"
+ to_chat(usr, "Upgrade error!")
else
@@ -661,7 +661,7 @@
cell.update_icon()
cell.add_fingerprint(user)
user.put_in_active_hand(cell)
- user << "You remove \the [cell]."
+ to_chat(user, "You remove \the [cell].")
cell = null
cell_component.wrapped = null
cell_component.installed = 0
@@ -669,7 +669,7 @@
else if(cell_component.installed == -1)
cell_component.installed = 0
var/obj/item/broken_device = cell_component.wrapped
- user << "You remove \the [broken_device]."
+ to_chat(user, "You remove \the [broken_device].")
user.put_in_active_hand(broken_device)
//Robots take half damage from basic attacks.
@@ -732,7 +732,7 @@
/mob/living/silicon/robot/proc/installed_modules()
if(weapon_lock)
- src << "Weapon lock active, unable to use modules! Count:[weaponlock_time]"
+ to_chat(src, "Weapon lock active, unable to use modules! Count:[weaponlock_time]")
return
if(!module)
@@ -795,7 +795,7 @@
return 1
if(activated(O))
- src << "Already activated"
+ to_chat(src, "Already activated")
return 1
if(!module_state_1)
module_state_1 = O
@@ -816,7 +816,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!"
+ to_chat(src, "You need to disable a module first!")
installed_modules()
return 1
@@ -833,9 +833,9 @@
module_state_3 = null
contents -= O
else
- src << "Module isn't activated."
+ to_chat(src, "Module isn't activated.")
else
- src << "Module isn't activated"
+ to_chat(src, "Module isn't activated")
installed_modules()
return 1
return
@@ -948,7 +948,7 @@
/mob/living/silicon/robot/proc/choose_icon(var/triesleft, var/list/module_sprites)
if(!module_sprites.len)
- src << "Something is badly wrong with the sprite selection. Harass a coder."
+ to_chat(src, "Something is badly wrong with the sprite selection. Harass a coder.")
return
icon_selected = 0
@@ -970,7 +970,7 @@
icon_selected = 1
icon_selection_tries = 0
- src << "Your icon has been set. You now require a module reset to change it."
+ to_chat(src, "Your icon has been set. You now require a module reset to change it.")
/mob/living/silicon/robot/proc/sensor_mode() //Medical/Security HUD controller for borgs
set name = "Set Sensor Augmentation"
@@ -1042,20 +1042,20 @@
if(!opened)//Cover is closed
if(locked)
if(prob(90))
- user << "You emag the cover lock."
+ to_chat(user, "You emag the cover lock.")
locked = 0
else
- user << "You fail to emag the cover lock."
- src << "Hack attempt detected."
+ to_chat(user, "You fail to emag the cover lock.")
+ to_chat(src, "Hack attempt detected.")
return 1
else
- user << "The cover is already unlocked."
+ to_chat(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 panel first"
+ to_chat(user, "You must close the panel first")
return
else
sleep(6)
@@ -1063,7 +1063,7 @@
emagged = 1
lawupdate = 0
disconnect_from_ai()
- user << "You emag [src]'s interface."
+ to_chat(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()
@@ -1075,26 +1075,26 @@
set_zeroth_law("Only [user.real_name] and people [TU.he] designate[TU.s] as being such are operatives.")
. = 1
spawn()
- src << "ALERT: Foreign software detected."
+ to_chat(src, "ALERT: Foreign software detected.")
sleep(5)
- src << "Initiating diagnostics..."
+ to_chat(src, "Initiating diagnostics...")
sleep(20)
- src << "SynBorg v1.7.1 loaded."
+ to_chat(src, "SynBorg v1.7.1 loaded.")
sleep(5)
- src << "LAW SYNCHRONISATION ERROR"
+ to_chat(src, "LAW SYNCHRONISATION ERROR")
sleep(5)
- src << "Would you like to send a report to NanoTraSoft? Y/N"
+ to_chat(src, "Would you like to send a report to NanoTraSoft? Y/N")
sleep(10)
- src << "> N"
+ to_chat(src, "> N")
sleep(20)
- src << "ERRORERRORERROR"
- src << "Obey these laws:"
+ to_chat(src, "ERRORERRORERROR")
+ to_chat(src, "Obey these laws:")
laws.show_laws(src)
- src << "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands."
+ to_chat(src, "ALERT: [user.real_name] is your new master. Obey your new laws and [TU.his] commands.")
updateicon()
else
- user << "You fail to hack [src]'s interface."
- src << "Hack attempt detected."
+ to_chat(user, "You fail to hack [src]'s interface.")
+ to_chat(src, "Hack attempt detected.")
return 1
return
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/event.dm b/code/modules/mob/living/silicon/robot/robot_modules/event.dm
index cdc15210ebf..3d3eb355df2 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/event.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/event.dm
@@ -21,9 +21,9 @@
// Engi
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
// Sci
@@ -55,8 +55,8 @@
// For repairing gravemarkers
src.modules += new /obj/item/weapon/weldingtool/electric/mounted(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
// For growing flowers
src.modules += new /obj/item/weapon/material/minihoe(src)
@@ -77,5 +77,4 @@
var/obj/item/stack/material/cyborg/wood/W = new (src)
W.synths = list(wood)
- src.modules += W
-
+ src.modules += W
\ No newline at end of file
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/station.dm b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
index 19af854d26e..6cd2fa5f816 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/station.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/station.dm
@@ -154,7 +154,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/New()
..()
src.modules += new /obj/item/device/flash(src)
- src.modules += new /obj/item/weapon/crowbar/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
src.modules += new /obj/item/weapon/extinguisher(src)
src.modules += new /obj/item/device/gps/robot(src)
@@ -179,7 +179,7 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/standard/New()
..()
src.modules += new /obj/item/weapon/melee/baton/loaded(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
src.modules += new /obj/item/device/healthanalyzer(src)
src.emag = new /obj/item/weapon/melee/energy/sword(src)
@@ -365,8 +365,8 @@ var/global/list/robot_modules = list(
..()
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/rcd/borg(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
src.modules += new /obj/item/device/pipe_painter(src)
@@ -406,9 +406,9 @@ var/global/list/robot_modules = list(
..()
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/device/t_scanner(src)
src.modules += new /obj/item/device/analyzer(src)
@@ -702,8 +702,8 @@ var/global/list/robot_modules = list(
/obj/item/weapon/robot_module/robot/miner/New()
..()
src.modules += new /obj/item/borg/sight/material(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
src.modules += new /obj/item/weapon/storage/bag/ore(src)
src.modules += new /obj/item/weapon/pickaxe/borgdrill(src)
src.modules += new /obj/item/weapon/storage/bag/sheetsnatcher/borg(src)
@@ -736,9 +736,9 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/robotanalyzer(src)
src.modules += new /obj/item/weapon/card/robot(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/weapon/surgical/scalpel/cyborg(src)
src.modules += new /obj/item/weapon/surgical/circular_saw/cyborg(src)
@@ -808,10 +808,10 @@ var/global/list/robot_modules = list(
..()
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/crowbar/cyborg(src)
- src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/crowbar/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool(src)
src.modules += new /obj/item/device/lightreplacer(src)
src.modules += new /obj/item/weapon/gripper(src)
diff --git a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm
index 63e4f359be0..3c8e981c3b7 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules/syndicate.dm
@@ -78,9 +78,9 @@
// General engineering/hacking.
src.modules += new /obj/item/borg/sight/meson(src)
src.modules += new /obj/item/weapon/weldingtool/electric/mounted/cyborg(src)
- src.modules += new /obj/item/weapon/screwdriver/cyborg(src)
- src.modules += new /obj/item/weapon/wrench/cyborg(src)
- src.modules += new /obj/item/weapon/wirecutters/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/screwdriver/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wrench/cyborg(src)
+ src.modules += new /obj/item/weapon/tool/wirecutters/cyborg(src)
src.modules += new /obj/item/device/multitool/ai_detector(src)
src.modules += new /obj/item/weapon/pickaxe/plasmacutter(src)
src.modules += new /obj/item/weapon/rcd/borg/lesser(src) // Can't eat rwalls to prevent AI core cheese.
diff --git a/code/modules/paperwork/filingcabinet.dm b/code/modules/paperwork/filingcabinet.dm
index 940dac91e70..44a2d1310b2 100644
--- a/code/modules/paperwork/filingcabinet.dm
+++ b/code/modules/paperwork/filingcabinet.dm
@@ -33,34 +33,34 @@
/obj/structure/filingcabinet/attackby(obj/item/P as obj, mob/user as mob)
if(istype(P, /obj/item/weapon/paper) || istype(P, /obj/item/weapon/folder) || istype(P, /obj/item/weapon/photo) || istype(P, /obj/item/weapon/paper_bundle))
- user << "You put [P] in [src]."
+ to_chat(user, "You put [P] in [src].")
user.drop_item()
P.loc = src
icon_state = "[initial(icon_state)]-open"
sleep(5)
icon_state = initial(icon_state)
updateUsrDialog()
- else if(istype(P, /obj/item/weapon/wrench))
+ else if(P.is_wrench())
playsound(loc, P.usesound, 50, 1)
anchored = !anchored
- user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
- else if(istype(P, /obj/item/weapon/screwdriver))
- user << "You begin taking the [name] apart."
+ to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
+ else if(P.is_screwdriver())
+ to_chat(user, "You begin taking the [name] apart.")
playsound(src, P.usesound, 50, 1)
if(do_after(user, 10 * P.toolspeed))
playsound(loc, P.usesound, 50, 1)
- user << "You take the [name] apart."
+ to_chat(user, "You take the [name] apart.")
new /obj/item/stack/material/steel( src.loc, 4 )
for(var/obj/item/I in contents)
I.forceMove(loc)
qdel(src)
return
else
- user << "You can't put [P] in [src]!"
+ to_chat(user, "You can't put [P] in [src]!")
/obj/structure/filingcabinet/attack_hand(mob/user as mob)
if(contents.len <= 0)
- user << "\The [src] is empty."
+ to_chat(user, "\The [src] is empty.")
return
user.set_machine(src)
@@ -85,9 +85,9 @@
I.loc = loc
if(prob(25))
step_rand(I)
- user << "You pull \a [I] out of [src] at random."
+ to_chat(user, "You pull \a [I] out of [src] at random.")
return
- user << "You find nothing in [src]."
+ to_chat(user, "You find nothing in [src].")
/obj/structure/filingcabinet/Topic(href, href_list)
if(href_list["retrieve"])
diff --git a/code/modules/paperwork/papershredder.dm b/code/modules/paperwork/papershredder.dm
index bbf630ced63..b1f58b09653 100644
--- a/code/modules/paperwork/papershredder.dm
+++ b/code/modules/paperwork/papershredder.dm
@@ -40,10 +40,10 @@
if(istype(W, /obj/item/weapon/storage))
empty_bin(user, W)
return
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
playsound(src, W.usesound, 50, 1)
anchored = !anchored
- user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
+ to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
return
else if(default_part_replacement(user, W))
return
@@ -60,7 +60,7 @@
if(inoperable())
return // Need powah!
if(paperamount == max_paper)
- user << "\The [src] is full; please empty it before you continue."
+ to_chat(user, "\The [src] is full; please empty it before you continue.")
return
paperamount += paper_result
user.drop_from_inventory(W)
@@ -68,7 +68,7 @@
playsound(src.loc, 'sound/items/pshred.ogg', 75, 1)
flick(shred_anim, src)
if(paperamount > max_paper)
- user <<"\The [src] was too full, and shredded paper goes everywhere!"
+ to_chat(user,"\The [src] was too full, and shredded paper goes everywhere!")
for(var/i=(paperamount-max_paper);i>0;i--)
var/obj/item/weapon/shreddedp/SP = get_shredded_paper()
SP.loc = get_turf(src)
@@ -87,7 +87,7 @@
return
if(!paperamount)
- usr << "\The [src] is empty."
+ to_chat(usr, "\The [src] is empty.")
return
empty_bin(usr)
@@ -99,7 +99,7 @@
empty_into = null
if(empty_into && empty_into.contents.len >= empty_into.storage_slots)
- user << "\The [empty_into] is full."
+ to_chat(user, "\The [empty_into] is full.")
return
while(paperamount)
@@ -111,12 +111,12 @@
break
if(empty_into)
if(paperamount)
- user << "You fill \the [empty_into] with as much shredded paper as it will carry."
+ to_chat(user, "You fill \the [empty_into] with as much shredded paper as it will carry.")
else
- user << "You empty \the [src] into \the [empty_into]."
+ to_chat(user, "You empty \the [src] into \the [empty_into].")
else
- user << "You empty \the [src]."
+ to_chat(user, "You empty \the [src].")
update_icon()
/obj/machinery/papershredder/proc/get_shredded_paper()
@@ -171,12 +171,12 @@
if(user.restrained())
return
if(!P.lit)
- user << "\The [P] is not lit."
+ to_chat(user, "\The [P] is not lit.")
return
user.visible_message("\The [user] holds \the [P] up to \the [src]. It looks like [TU.he] [TU.is] trying to burn it!", \
"You hold \the [P] up to \the [src], burning it slowly.")
if(!do_after(user,20))
- user << "You must hold \the [P] steady to burn \the [src]."
+ to_chat(user, "You must hold \the [P] steady to burn \the [src].")
return
user.visible_message("\The [user] burns right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.", \
"You burn right through \the [src], turning it to ash. It flutters through the air before settling on the floor in a heap.")
diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm
index 0870b60c641..515eaea1104 100644
--- a/code/modules/paperwork/photocopier.dm
+++ b/code/modules/paperwork/photocopier.dm
@@ -80,7 +80,7 @@
var/obj/item/weapon/paper_bundle/B = bundlecopy(copyitem)
sleep(11*B.pages.len)
else
- usr << "\The [copyitem] can't be copied by \the [src]."
+ to_chat(usr, "\The [copyitem] can't be copied by \the [src].")
break
use_power(active_power_usage)
@@ -88,7 +88,7 @@
if(copyitem)
copyitem.loc = usr.loc
usr.put_in_hands(copyitem)
- usr << "You take \the [copyitem] out of \the [src]."
+ to_chat(usr, "You take \the [copyitem] out of \the [src].")
copyitem = null
else if(href_list["min"])
if(copies > 1)
@@ -126,24 +126,24 @@
user.drop_item()
copyitem = O
O.loc = src
- user << "You insert \the [O] into \the [src]."
+ to_chat(user, "You insert \the [O] into \the [src].")
playsound(loc, "sound/machines/click.ogg", 100, 1)
flick(insert_anim, src)
else
- user << "There is already something in \the [src]."
+ to_chat(user, "There is already something in \the [src].")
else if(istype(O, /obj/item/device/toner))
if(toner <= 10) //allow replacing when low toner is affecting the print darkness
user.drop_item()
- user << "You insert the toner cartridge into \the [src]."
+ to_chat(user, "You insert the toner cartridge into \the [src].")
var/obj/item/device/toner/T = O
toner += T.toner_amount
qdel(O)
else
- user << "This cartridge is not yet ready for replacement! Use up the rest of the toner."
- else if(istype(O, /obj/item/weapon/wrench))
+ to_chat(user, "This cartridge is not yet ready for replacement! Use up the rest of the toner.")
+ else if(O.is_wrench())
playsound(loc, O.usesound, 50, 1)
anchored = !anchored
- user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
+ to_chat(user, "You [anchored ? "wrench" : "unwrench"] \the [src].")
else if(default_deconstruction_screwdriver(user, O))
return
diff --git a/code/modules/power/antimatter/control.dm b/code/modules/power/antimatter/control.dm
index dfea9f494e1..1f1c01bab2d 100644
--- a/code/modules/power/antimatter/control.dm
+++ b/code/modules/power/antimatter/control.dm
@@ -140,7 +140,7 @@
/obj/machinery/power/am_control_unit/attackby(obj/item/W, mob/user)
if(!istype(W) || !user) return
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
if(!anchored)
playsound(src, W.usesound, 75, 1)
user.visible_message("[user.name] secures the [src.name] to the floor.", \
diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm
index 690f95e874c..f4e920f0007 100644
--- a/code/modules/power/apc.dm
+++ b/code/modules/power/apc.dm
@@ -446,7 +446,7 @@
if (istype(user, /mob/living/silicon) && get_dist(src,user)>1)
return src.attack_hand(user)
src.add_fingerprint(user)
- if (istype(W, /obj/item/weapon/crowbar) && opened)
+ if (W.is_crowbar() && opened)
if (has_electronics==1)
if (terminal)
to_chat(user,"Disconnect the wires first.")
@@ -470,7 +470,7 @@
else if (opened!=2) //cover isn't removed
opened = 0
update_icon()
- else if (istype(W, /obj/item/weapon/crowbar) && !(stat & BROKEN) )
+ else if (W.is_crowbar() && !(stat & BROKEN) )
if(coverlocked && !(stat & MAINT))
to_chat(user,"The cover is locked and cannot be opened.")
return
@@ -496,7 +496,7 @@
"You insert the power cell.")
chargecount = 0
update_icon()
- else if (istype(W, /obj/item/weapon/screwdriver)) // haxing
+ else if (W.is_screwdriver()) // haxing
if(opened)
if (cell)
to_chat(user,"Remove the power cell first.")
@@ -567,7 +567,7 @@
"You add cables to the APC frame.")
make_terminal()
terminal.connect_to_network()
- else if (istype(W, /obj/item/weapon/wirecutters) && terminal && opened && has_electronics!=2)
+ else if (W.is_wirecutter() && terminal && opened && has_electronics!=2)
var/turf/T = loc
if(istype(T) && !T.is_plating())
to_chat(user,"You must remove the floor plating in front of the APC first.")
@@ -668,9 +668,7 @@
else
if (istype(user, /mob/living/silicon))
return src.attack_hand(user)
- if (!opened && wiresexposed && \
- (istype(W, /obj/item/device/multitool) || \
- istype(W, /obj/item/weapon/wirecutters) || istype(W, /obj/item/device/assembly/signaler)))
+ if (!opened && wiresexposed && (istype(W, /obj/item/device/multitool) || W.is_wirecutter() || istype(W, /obj/item/device/assembly/signaler)))
return src.attack_hand(user)
//Placeholder until someone can do take_damage() for APCs or something.
to_chat(user,"The [src.name] looks too sturdy to bash open with \the [W.name].")
diff --git a/code/modules/power/batteryrack.dm b/code/modules/power/batteryrack.dm
index 7bb37a56623..d897bb827a1 100644
--- a/code/modules/power/batteryrack.dm
+++ b/code/modules/power/batteryrack.dm
@@ -78,7 +78,7 @@
/obj/machinery/power/smes/batteryrack/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob) //these can only be moved by being reconstructed, solves having to remake the powernet.
..() //SMES attackby for now handles screwdriver, cable coils and wirecutters, no need to repeat that here
if(open_hatch)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
if (charge < (capacity / 100))
if (!output_attempt && !input_attempt)
playsound(src, W.usesound, 50, 1)
@@ -91,9 +91,9 @@
qdel(src)
return 1
else
- user << "Turn off the [src] before dismantling it."
+ to_chat(user, "Turn off the [src] before dismantling it.")
else
- user << "Better let [src] discharge before dismantling it."
+ to_chat(user, "Better let [src] discharge before dismantling it.")
else if ((istype(W, /obj/item/weapon/stock_parts/capacitor) && (capacitors_amount < 5)) || (istype(W, /obj/item/weapon/cell) && (cells_amount < 5)))
if (charge < (capacity / 100))
if (!output_attempt && !input_attempt)
@@ -101,11 +101,11 @@
component_parts += W
W.loc = src
RefreshParts()
- user << "You upgrade the [src] with [W.name]."
+ to_chat(user, "You upgrade the [src] with [W.name].")
else
- user << "Turn off the [src] before dismantling it."
+ to_chat(user, "Turn off the [src] before dismantling it.")
else
- user << "Better let [src] discharge before putting your hand inside it."
+ to_chat(user, "Better let [src] discharge before putting your hand inside it.")
else
user.set_machine(src)
interact(user)
diff --git a/code/modules/power/breaker_box.dm b/code/modules/power/breaker_box.dm
index 2e7903c38e6..856697e0334 100644
--- a/code/modules/power/breaker_box.dm
+++ b/code/modules/power/breaker_box.dm
@@ -40,26 +40,26 @@
set_state(1)
/obj/machinery/power/breakerbox/examine(mob/user)
- user << "Large machine with heavy duty switching circuits used for advanced grid control"
+ to_chat(user, "Large machine with heavy duty switching circuits used for advanced grid control")
if(on)
- user << "It seems to be online."
+ to_chat(user, "It seems to be online.")
else
- user << "It seems to be offline."
+ to_chat(user, "It seems to be offline.")
/obj/machinery/power/breakerbox/attack_ai(mob/user)
if(update_locked)
- user << "System locked. Please try again later."
+ to_chat(user, "System locked. Please try again later.")
return
if(busy)
- user << "System is busy. Please wait until current operation is finished before changing power settings."
+ to_chat(user, "System is busy. Please wait until current operation is finished before changing power settings.")
return
busy = 1
- user << "Updating power settings..."
+ to_chat(user, "Updating power settings...")
if(do_after(user, 50))
set_state(!on)
- user << "Update Completed. New setting:[on ? "on": "off"]"
+ to_chat(user, "Update Completed. New setting:[on ? "on": "off"]")
update_locked = 1
spawn(600)
update_locked = 0
@@ -68,11 +68,11 @@
/obj/machinery/power/breakerbox/attack_hand(mob/user)
if(update_locked)
- user << "System locked. Please try again later."
+ to_chat(user, "System locked. Please try again later.")
return
if(busy)
- user << "System is busy. Please wait until current operation is finished before changing power settings."
+ to_chat(user, "System is busy. Please wait until current operation is finished before changing power settings.")
return
busy = 1
@@ -94,7 +94,7 @@
var/newtag = input(user, "Enter new RCON tag. Use \"NO_TAG\" to disable RCON or leave empty to cancel.", "SMES RCON system") as text
if(newtag)
RCon_tag = newtag
- user << "You changed the RCON tag to: [newtag]"
+ to_chat(user, "You changed the RCON tag to: [newtag]")
if(on)
to_chat(user, "Disable the breaker before performing maintenance.")
return
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 2d057825faf..6717edf95d9 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -159,7 +159,7 @@ var/list/possible_cable_coil_colours = list(
if(!T.is_plating())
return
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
var/obj/item/stack/cable_coil/CC
if(d1 == UP || d2 == UP)
to_chat(user, "You must cut this cable from above.")
diff --git a/code/modules/power/cable_ender.dm b/code/modules/power/cable_ender.dm
index d6975091ea3..20ca1fdd051 100644
--- a/code/modules/power/cable_ender.dm
+++ b/code/modules/power/cable_ender.dm
@@ -24,7 +24,7 @@
/obj/structure/cable/ender/attackby(obj/item/W, mob/user)
src.add_fingerprint(user)
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
to_chat(user, " These cables are too tough to be cut with those [W.name].")
return
else if(istype(W, /obj/item/stack/cable_coil))
diff --git a/code/modules/power/cable_heavyduty.dm b/code/modules/power/cable_heavyduty.dm
index a286517965b..c90c936c4d8 100644
--- a/code/modules/power/cable_heavyduty.dm
+++ b/code/modules/power/cable_heavyduty.dm
@@ -17,7 +17,7 @@
if(!T.is_plating())
return
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
usr << "These cables are too tough to be cut with those [W.name]."
return
else if(istype(W, /obj/item/stack/cable_coil))
diff --git a/code/modules/power/fusion/core/_core.dm b/code/modules/power/fusion/core/_core.dm
index 7f81b70ffd7..329170be442 100644
--- a/code/modules/power/fusion/core/_core.dm
+++ b/code/modules/power/fusion/core/_core.dm
@@ -120,7 +120,7 @@ var/list/fusion_cores = list()
if(default_part_replacement(user, W))
return
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", "Fusion Core", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
diff --git a/code/modules/power/fusion/core/core_control.dm b/code/modules/power/fusion/core/core_control.dm
index 54d96883a74..0dca71a4d16 100644
--- a/code/modules/power/fusion/core/core_control.dm
+++ b/code/modules/power/fusion/core/core_control.dm
@@ -11,7 +11,7 @@
/obj/machinery/computer/fusion_core_control/attackby(var/obj/item/thing, var/mob/user)
..()
- if(ismultitool(thing))
+ if(istype(thing, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", "Core Control", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
diff --git a/code/modules/power/fusion/fuel_assembly/fuel_control.dm b/code/modules/power/fusion/fuel_assembly/fuel_control.dm
index e765c4d4959..6825f9ba37f 100644
--- a/code/modules/power/fusion/fuel_assembly/fuel_control.dm
+++ b/code/modules/power/fusion/fuel_assembly/fuel_control.dm
@@ -96,7 +96,7 @@
/obj/machinery/computer/fusion_fuel_control/attackby(var/obj/item/W, var/mob/user)
..()
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", "Fuel Control", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
diff --git a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
index 545638c7d80..79794ff0690 100644
--- a/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
+++ b/code/modules/power/fusion/fuel_assembly/fuel_injector.dm
@@ -42,7 +42,7 @@ var/list/fuel_injectors = list()
/obj/machinery/fusion_fuel_injector/attackby(obj/item/W, mob/user)
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", "Fuel Injector", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
@@ -68,7 +68,7 @@ var/list/fuel_injectors = list()
cur_assembly = W
return
- if(iswrench(W) || isscrewdriver(W) || iscrowbar(W) || istype(W, /obj/item/weapon/storage/part_replacer))
+ if(W.is_wrench() || W.is_screwdriver() || W.is_crowbar() || istype(W, /obj/item/weapon/storage/part_replacer))
if(injecting)
to_chat(user, "Shut \the [src] off first!")
return
diff --git a/code/modules/power/fusion/gyrotron/gyrotron.dm b/code/modules/power/fusion/gyrotron/gyrotron.dm
index 5309b0f5b24..23697d24497 100644
--- a/code/modules/power/fusion/gyrotron/gyrotron.dm
+++ b/code/modules/power/fusion/gyrotron/gyrotron.dm
@@ -52,7 +52,7 @@ var/list/gyrotrons = list()
icon_state = "emitter-off"
/obj/machinery/power/emitter/gyrotron/attackby(var/obj/item/W, var/mob/user)
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", "Gyrotron", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
diff --git a/code/modules/power/fusion/gyrotron/gyrotron_control.dm b/code/modules/power/fusion/gyrotron/gyrotron_control.dm
index eb735a81f34..958e03f06f4 100644
--- a/code/modules/power/fusion/gyrotron/gyrotron_control.dm
+++ b/code/modules/power/fusion/gyrotron/gyrotron_control.dm
@@ -96,7 +96,7 @@
/obj/machinery/computer/gyrotron_control/attackby(var/obj/item/W, var/mob/user)
..()
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", "Gyrotron Control", id_tag) as null|text
if(new_ident && user.Adjacent(src))
id_tag = new_ident
diff --git a/code/modules/power/generator.dm b/code/modules/power/generator.dm
index 27032a21982..c7168ee9b0c 100644
--- a/code/modules/power/generator.dm
+++ b/code/modules/power/generator.dm
@@ -137,7 +137,7 @@
attack_hand(user)
/obj/machinery/power/generator/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src, W.usesound, 75, 1)
anchored = !anchored
user.visible_message("[user.name] [anchored ? "secures" : "unsecures"] the bolts holding [src.name] to the floor.", \
diff --git a/code/modules/power/grid_checker.dm b/code/modules/power/grid_checker.dm
index 8127383651c..93d4918af0f 100644
--- a/code/modules/power/grid_checker.dm
+++ b/code/modules/power/grid_checker.dm
@@ -43,12 +43,12 @@
/obj/machinery/power/grid_checker/attackby(obj/item/W, mob/user)
if(!user)
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
default_deconstruction_screwdriver(user, W)
opened = !opened
- else if(istype(W, /obj/item/weapon/crowbar))
+ else if(W.is_crowbar())
default_deconstruction_crowbar(user, W)
- else if(istype(W, /obj/item/device/multitool) || istype(W, /obj/item/weapon/wirecutters) )
+ else if(istype(W, /obj/item/device/multitool) || W.is_wirecutter())
attack_hand(user)
/obj/machinery/power/grid_checker/attack_hand(mob/user)
diff --git a/code/modules/power/lighting.dm b/code/modules/power/lighting.dm
index a2210f22fc4..6417889dcdd 100644
--- a/code/modules/power/lighting.dm
+++ b/code/modules/power/lighting.dm
@@ -47,7 +47,7 @@
/obj/machinery/light_construct/attackby(obj/item/weapon/W as obj, mob/user as mob)
src.add_fingerprint(user)
- if (istype(W, /obj/item/weapon/wrench))
+ if (W.is_wrench())
if (src.stage == 1)
playsound(src, W.usesound, 75, 1)
usr << "You begin deconstructing [src]."
@@ -66,7 +66,7 @@
usr << "You have to unscrew the case first."
return
- if(istype(W, /obj/item/weapon/wirecutters))
+ if(W.is_wirecutter())
if (src.stage != 2) return
src.stage = 1
switch(fixture_type)
@@ -98,7 +98,7 @@
"You add wires to [src].")
return
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if (src.stage == 2)
switch(fixture_type)
if ("tube")
@@ -420,7 +420,7 @@
// 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.
+ if(W.is_screwdriver()) //If it's a screwdriver open it.
playsound(src, W.usesound, 75, 1)
user.visible_message("[user.name] opens [src]'s casing.", \
"You open [src]'s casing.", "You hear a noise.")
@@ -456,7 +456,7 @@
electrocute_mob(user, get_area(src), src, rand(0.7,1.0))
/obj/machinery/light/flamp/attackby(obj/item/W, mob/user)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
anchored = !anchored
playsound(src, W.usesound, 50, 1)
user << "You [anchored ? "wrench" : "unwrench"] \the [src]."
@@ -469,7 +469,7 @@
return
else
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
playsound(src, W.usesound, 75, 1)
user.visible_message("[user.name] removes [src]'s lamp shade.", \
"You remove [src]'s lamp shade.", "You hear a noise.")
diff --git a/code/modules/power/pacman2.dm b/code/modules/power/pacman2.dm
index b6b904e65a7..8e32cccc304 100644
--- a/code/modules/power/pacman2.dm
+++ b/code/modules/power/pacman2.dm
@@ -52,7 +52,7 @@
examine(mob/user)
..(user)
- user << "The generator has [P.air_contents.phoron] units of fuel left, producing [power_gen] per cycle."
+ to_chat(user, "The generator has [P.air_contents.phoron] units of fuel left, producing [power_gen] per cycle.")
handleInactive()
heat -= 2
@@ -70,29 +70,29 @@
attackby(var/obj/item/O as obj, var/mob/user as mob)
if(istype(O, /obj/item/weapon/tank/phoron))
if(P)
- user << "The generator already has a phoron tank loaded!"
+ to_chat(user, "The generator already has a phoron tank loaded!")
return
P = O
user.drop_item()
O.loc = src
- user << "You add the phoron tank to the generator."
+ to_chat(user, "You add the phoron tank to the generator.")
else if(!active)
- if(istype(O, /obj/item/weapon/wrench))
+ if(O.is_wrench())
anchored = !anchored
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(anchored)
- user << "You secure the generator to the floor."
+ to_chat(user, "You secure the generator to the floor.")
else
- user << "You unsecure the generator from the floor."
+ to_chat(user, "You unsecure the generator from the floor.")
SSmachines.makepowernets()
- else if(istype(O, /obj/item/weapon/screwdriver))
+ else if(O.is_screwdriver())
open = !open
playsound(loc, O.usesound, 50, 1)
if(open)
- user << "You open the access panel."
+ to_chat(user, "You open the access panel.")
else
- user << "You close the access panel."
- else if(istype(O, /obj/item/weapon/crowbar) && !open)
+ to_chat(user, "You close the access panel.")
+ else if(O.is_crowbar() && !open)
playsound(loc, O.usesound, 50, 1)
var/obj/machinery/constructable_frame/machine_frame/new_frame = new /obj/machinery/constructable_frame/machine_frame(src.loc)
for(var/obj/item/I in component_parts)
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index 5a20aaeaebf..660ee536db7 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -51,9 +51,9 @@
if(!..(user,1 ))
return
if(active)
- usr << "The generator is on."
+ to_chat(user, "The generator is on.")
else
- usr << "The generator is off."
+ to_chat(user, "The generator is off.")
/obj/machinery/power/port_gen/emp_act(severity)
var/duration = 6000 //ten minutes
@@ -145,10 +145,12 @@
/obj/machinery/power/port_gen/pacman/examine(mob/user)
..(user)
- user << "\The [src] appears to be producing [power_gen*power_output] W."
- user << "There [sheets == 1 ? "is" : "are"] [sheets] sheet\s left in the hopper."
- if(IsBroken()) user << "\The [src] seems to have broken down."
- if(overheating) user << "\The [src] is overheating!"
+ to_chat(user, "\The [src] appears to be producing [power_gen*power_output] W.")
+ to_chat(user, "There [sheets == 1 ? "is" : "are"] [sheets] sheet\s left in the hopper.")
+ if(IsBroken())
+ to_chat(user, "\The [src] seems to have broken down.")
+ if(overheating)
+ to_chat(user, "\The [src] is overheating!")
/obj/machinery/power/port_gen/pacman/HasFuel()
var/needed_sheets = power_output / time_per_sheet
@@ -263,21 +265,21 @@
var/obj/item/stack/addstack = O
var/amount = min((max_sheets - sheets), addstack.amount)
if(amount < 1)
- user << "The [src.name] is full!"
+ to_chat(user, "The [src.name] is full!")
return
- user << "You add [amount] sheet\s to the [src.name]."
+ to_chat(user, "You add [amount] sheet\s to the [src.name].")
sheets += amount
addstack.use(amount)
updateUsrDialog()
return
else if(!active)
- if(istype(O, /obj/item/weapon/wrench))
+ if(O.is_wrench())
if(!anchored)
connect_to_network()
- user << "You secure the generator to the floor."
+ to_chat(user, "You secure the generator to the floor.")
else
disconnect_from_network()
- user << "You unsecure the generator from the floor."
+ to_chat(user, "You unsecure the generator from the floor.")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
anchored = !anchored
else if(default_deconstruction_screwdriver(user, O))
@@ -337,7 +339,7 @@
if (get_dist(src, user) > 1 )
if (!istype(user, /mob/living/silicon/ai))
user.unset_machine()
- user << browse(null, "window=port_gen")
+ user << browse(null, "window=port_gen"
return
user.set_machine(src)
diff --git a/code/modules/power/power.dm b/code/modules/power/power.dm
index 112f5a482eb..04e63379fc2 100644
--- a/code/modules/power/power.dm
+++ b/code/modules/power/power.dm
@@ -139,7 +139,7 @@
return
// Power machinery should also connect/disconnect from the network.
-/obj/machinery/power/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/wrench/W, var/time = 20)
+/obj/machinery/power/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/W, var/time = 20)
if((. = ..()))
if(anchored)
connect_to_network()
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index 9dbec38fe9f..af143b64a4e 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -54,7 +54,7 @@ var/global/list/rad_collectors = list()
investigate_log("turned [active?"on":"off"] by [user.key]. [P?"Fuel: [round(P.air_contents.gas["phoron"]/0.29)]%":"It is empty"].","singulo")
return
else
- user << "The controls are locked!"
+ to_chat(user, "The controls are locked!")
return
..()
@@ -62,23 +62,23 @@ var/global/list/rad_collectors = list()
/obj/machinery/power/rad_collector/attackby(obj/item/W, mob/user)
if(istype(W, /obj/item/weapon/tank/phoron))
if(!src.anchored)
- user << "The [src] needs to be secured to the floor first."
+ to_chat(user, "The [src] needs to be secured to the floor first.")
return 1
if(src.P)
- user << "There's already a phoron tank loaded."
+ to_chat(user, "There's already a phoron tank loaded.")
return 1
user.drop_item()
src.P = W
W.loc = src
update_icons()
return 1
- else if(istype(W, /obj/item/weapon/crowbar))
+ else if(W.is_crowbar())
if(P && !src.locked)
eject()
return 1
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(P)
- user << "Remove the phoron tank first."
+ to_chat(user, "Remove the phoron tank first.")
return 1
playsound(src, W.usesound, 75, 1)
src.anchored = !src.anchored
@@ -94,18 +94,18 @@ var/global/list/rad_collectors = list()
if (src.allowed(user))
if(active)
src.locked = !src.locked
- user << "The controls are now [src.locked ? "locked." : "unlocked."]"
+ to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
else
src.locked = 0 //just in case it somehow gets locked
- user << "The controls can only be locked when the [src] is active."
+ to_chat(user, "The controls can only be locked when the [src] is active.")
else
- user << "Access denied!"
+ to_chat(user, "Access denied!")
return 1
return ..()
/obj/machinery/power/rad_collector/examine(mob/user)
if (..(user, 3))
- user << "The meter indicates that \the [src] is collecting [last_power] W."
+ to_chat(user, "The meter indicates that \the [src] is collecting [last_power] W.")
return 1
/obj/machinery/power/rad_collector/ex_act(severity)
diff --git a/code/modules/power/singularity/emitter.dm b/code/modules/power/singularity/emitter.dm
index eaca5bd6633..8ac6bfb559f 100644
--- a/code/modules/power/singularity/emitter.dm
+++ b/code/modules/power/singularity/emitter.dm
@@ -146,7 +146,7 @@
/obj/machinery/power/emitter/attackby(obj/item/W, mob/user)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
if(active)
user << "Turn off [src] first."
return
diff --git a/code/modules/power/singularity/field_generator.dm b/code/modules/power/singularity/field_generator.dm
index dc6fd45163d..41329199389 100644
--- a/code/modules/power/singularity/field_generator.dm
+++ b/code/modules/power/singularity/field_generator.dm
@@ -103,7 +103,7 @@ field_generator power level display
if(active)
user << "The [src] needs to be off."
return
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
switch(state)
if(0)
state = 1
diff --git a/code/modules/power/singularity/generator.dm b/code/modules/power/singularity/generator.dm
index 2f9bc83cf45..888d75ea6f3 100644
--- a/code/modules/power/singularity/generator.dm
+++ b/code/modules/power/singularity/generator.dm
@@ -17,7 +17,7 @@
if(src) qdel(src)
/obj/machinery/the_singularitygen/attackby(obj/item/W, mob/user)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
anchored = !anchored
playsound(src, W.usesound, 75, 1)
if(anchored)
diff --git a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
index a5d2a4ac0a8..e89ff0dcce7 100644
--- a/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
+++ b/code/modules/power/singularity/particle_accelerator/particle_accelerator.dm
@@ -207,35 +207,35 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps
if(0)
- if(iswrench(O))
+ if(O.is_wrench())
playsound(src, O.usesound, 75, 1)
src.anchored = 1
user.visible_message("[user.name] secures the [src.name] to the floor.", \
"You secure the external bolts.")
temp_state++
if(1)
- if(iswrench(O))
+ if(O.is_wrench())
playsound(src, O.usesound, 75, 1)
src.anchored = 0
user.visible_message("[user.name] detaches the [src.name] from the floor.", \
"You remove the external bolts.")
temp_state--
- else if(iscoil(O))
+ else if(istype(O, /obj/item/stack/cable_coil))
if(O:use(1,user))
user.visible_message("[user.name] adds wires to the [src.name].", \
"You add some wires.")
temp_state++
if(2)
- if(iswirecutter(O))//TODO:Shock user if its on?
+ if(O.is_wirecutter())//TODO:Shock user if its on?
user.visible_message("[user.name] removes some wires from the [src.name].", \
"You remove some wires.")
temp_state--
- else if(isscrewdriver(O))
+ else if(O.is_screwdriver())
user.visible_message("[user.name] closes the [src.name]'s access panel.", \
"You close the access panel.")
temp_state++
if(3)
- if(isscrewdriver(O))
+ if(O.is_screwdriver())
user.visible_message("[user.name] opens the [src.name]'s access panel.", \
"You open the access panel.")
temp_state--
@@ -346,35 +346,35 @@ So, hopefully this is helpful if any more icons are to be added/changed/wonderin
var/temp_state = src.construction_state
switch(src.construction_state)//TODO:Might be more interesting to have it need several parts rather than a single list of steps
if(0)
- if(iswrench(O))
+ if(O.is_wrench())
playsound(src, O.usesound, 75, 1)
src.anchored = 1
user.visible_message("[user.name] secures the [src.name] to the floor.", \
"You secure the external bolts.")
temp_state++
if(1)
- if(iswrench(O))
+ if(O.is_wrench())
playsound(src, O.usesound, 75, 1)
src.anchored = 0
user.visible_message("[user.name] detaches the [src.name] from the floor.", \
"You remove the external bolts.")
temp_state--
- else if(iscoil(O))
+ else if(istype(O, /obj/item/stack/cable_coil))
if(O:use(1))
user.visible_message("[user.name] adds wires to the [src.name].", \
"You add some wires.")
temp_state++
if(2)
- if(iswirecutter(O))//TODO:Shock user if its on?
+ if(O.is_wirecutter())//TODO:Shock user if its on?
user.visible_message("[user.name] removes some wires from the [src.name].", \
"You remove some wires.")
temp_state--
- else if(isscrewdriver(O))
+ else if(O.is_screwdriver())
user.visible_message("[user.name] closes the [src.name]'s access panel.", \
"You close the access panel.")
temp_state++
if(3)
- if(isscrewdriver(O))
+ if(O.is_screwdriver())
user.visible_message("[user.name] opens the [src.name]'s access panel.", \
"You open the access panel.")
temp_state--
diff --git a/code/modules/power/smes.dm b/code/modules/power/smes.dm
index e2b37348a9d..5a6ecf02abf 100644
--- a/code/modules/power/smes.dm
+++ b/code/modules/power/smes.dm
@@ -192,7 +192,7 @@
//Will return 1 on failure
/obj/machinery/power/smes/proc/make_terminal(const/mob/user)
if (user.loc == loc)
- user << "You must not be on the same tile as the [src]."
+ to_chat(user, "You must not be on the same tile as the [src].")
return 1
//Direction the terminal will face to
@@ -204,13 +204,13 @@
tempDir = WEST
var/turf/tempLoc = get_step(src, reverse_direction(tempDir))
if (istype(tempLoc, /turf/space))
- user << "You can't build a terminal on space."
+ to_chat(user, "You can't build a terminal on space.")
return 1
else if (istype(tempLoc))
if(!tempLoc.is_plating())
- user << "You must remove the floor plating first."
+ to_chat(user, "You must remove the floor plating first.")
return 1
- user << "You start adding cable to the [src]."
+ to_chat(user, "You start adding cable to the [src].")
if(do_after(user, 50))
terminal = new /obj/machinery/power/terminal(tempLoc)
terminal.set_dir(tempDir)
@@ -236,27 +236,27 @@
/obj/machinery/power/smes/attackby(var/obj/item/weapon/W as obj, var/mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(!open_hatch)
open_hatch = 1
- user << "You open the maintenance hatch of [src]."
+ to_chat(user, "You open the maintenance hatch of [src].")
playsound(src, W.usesound, 50, 1)
return 0
else
open_hatch = 0
- user << "You close the maintenance hatch of [src]."
+ to_chat(user, "You close the maintenance hatch of [src].")
playsound(src, W.usesound, 50, 1)
return 0
if (!open_hatch)
- user << "You need to open access hatch on [src] first!"
+ to_chat(user, "You need to open access hatch on [src] first!")
return 0
if(istype(W, /obj/item/stack/cable_coil) && !terminal && !building_terminal)
building_terminal = 1
var/obj/item/stack/cable_coil/CC = W
if (CC.get_amount() <= 10)
- user << "You need more cables."
+ to_chat(user, "You need more cables.")
building_terminal = 0
return 0
if (make_terminal(user))
@@ -270,14 +270,14 @@
stat = 0
return 0
- else if(istype(W, /obj/item/weapon/wirecutters) && terminal && !building_terminal)
+ else if(W.is_wirecutter() && terminal && !building_terminal)
building_terminal = 1
var/turf/tempTDir = terminal.loc
if (istype(tempTDir))
if(!tempTDir.is_plating())
- user << "You must remove the floor plating first."
+ to_chat(user, "You must remove the floor plating first.")
else
- user << "You begin to cut the cables..."
+ to_chat(user, "You begin to cut the cables...")
playsound(get_turf(src), 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 50 * W.toolspeed))
if (prob(50) && electrocute_mob(usr, terminal.powernet, terminal))
diff --git a/code/modules/power/smes_construction.dm b/code/modules/power/smes_construction.dm
index 6a4aa9c276e..6a9e6bfaff8 100644
--- a/code/modules/power/smes_construction.dm
+++ b/code/modules/power/smes_construction.dm
@@ -328,7 +328,7 @@
failure_probability = 0
// Crowbar - Disassemble the SMES.
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
if (terminal)
to_chat(user, "You have to disassemble the terminal first!")
return
diff --git a/code/modules/power/solar.dm b/code/modules/power/solar.dm
index 360cad96bfb..2d9f1803ba5 100644
--- a/code/modules/power/solar.dm
+++ b/code/modules/power/solar.dm
@@ -61,7 +61,7 @@ var/list/solars_list = list()
/obj/machinery/power/solar/attackby(obj/item/weapon/W, mob/user)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
user.visible_message("[user] begins to take the glass off the solar panel.")
if(do_after(user, 50))
@@ -228,13 +228,13 @@ var/list/solars_list = list()
if (!isturf(loc))
return 0
if(!anchored)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
anchored = 1
user.visible_message("[user] wrenches the solar assembly into place.")
playsound(src, W.usesound, 75, 1)
return 1
else
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
anchored = 0
user.visible_message("[user] unwrenches the solar assembly from it's place.")
playsound(src, W.usesound, 75, 1)
@@ -251,7 +251,7 @@ var/list/solars_list = list()
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."
+ to_chat(user, "You need two sheets of glass to put them into a solar panel.")
return
return 1
@@ -263,7 +263,7 @@ var/list/solars_list = list()
user.visible_message("[user] inserts the electronics into the solar assembly.")
return 1
else
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
new /obj/item/weapon/tracker_electronics(src.loc)
tracker = 0
user.visible_message("[user] takes out the electronics from the solar assembly.")
@@ -403,11 +403,11 @@ var/list/solars_list = list()
return
/obj/machinery/power/solar_control/attackby(obj/item/I, user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
playsound(src, I.usesound, 50, 1)
if(do_after(user, 20))
if (src.stat & BROKEN)
- user << "The broken glass falls out."
+ to_chat(user, "The broken glass falls out.")
var/obj/structure/frame/A = new /obj/structure/frame/computer( src.loc )
new /obj/item/weapon/material/shard( src.loc )
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
@@ -419,7 +419,7 @@ var/list/solars_list = list()
A.anchored = 1
qdel(src)
else
- user << "You disconnect the monitor."
+ to_chat(user, "You disconnect the monitor.")
var/obj/structure/frame/A = new /obj/structure/frame/computer( src.loc )
var/obj/item/weapon/circuitboard/solar_control/M = new /obj/item/weapon/circuitboard/solar_control( A )
for (var/obj/C in src)
diff --git a/code/modules/power/tracker.dm b/code/modules/power/tracker.dm
index b06ed2aaf19..a6eab0dbe0a 100644
--- a/code/modules/power/tracker.dm
+++ b/code/modules/power/tracker.dm
@@ -59,7 +59,7 @@
/obj/machinery/power/tracker/attackby(var/obj/item/weapon/W, var/mob/user)
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
playsound(src.loc, 'sound/machines/click.ogg', 50, 1)
user.visible_message("[user] begins to take the glass off the solar tracker.")
if(do_after(user, 50))
diff --git a/code/modules/power/turbine.dm b/code/modules/power/turbine.dm
index 30668993a8f..725280149b1 100644
--- a/code/modules/power/turbine.dm
+++ b/code/modules/power/turbine.dm
@@ -124,14 +124,14 @@
return
if(default_deconstruction_crowbar(user, W))
return
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", name, comp_id) as null|text
if(new_ident && user.Adjacent(src))
comp_id = new_ident
return
return ..()
-/obj/machinery/compressor/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/wrench/W, var/time = 20)
+/obj/machinery/compressor/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/W, var/time = 20)
if((. = ..()))
turbine = null
if(anchored)
@@ -229,7 +229,7 @@
return
return ..()
-/obj/machinery/power/turbine/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/wrench/W, var/time = 20)
+/obj/machinery/power/turbine/default_unfasten_wrench(var/mob/user, var/obj/item/weapon/W, var/time = 20)
if((. = ..()))
compressor = null
if(anchored)
@@ -337,7 +337,7 @@
doors += P
/obj/machinery/computer/turbine_computer/attackby(obj/item/W, mob/user)
- if(ismultitool(W))
+ if(istype(W, /obj/item/device/multitool))
var/new_ident = input("Enter a new ident tag.", name, id) as null|text
if(new_ident && user.Adjacent(src))
id = new_ident
diff --git a/code/modules/projectiles/ammunition.dm b/code/modules/projectiles/ammunition.dm
index b28c8f29935..a9307e10ac0 100644
--- a/code/modules/projectiles/ammunition.dm
+++ b/code/modules/projectiles/ammunition.dm
@@ -30,20 +30,20 @@
update_icon()
/obj/item/ammo_casing/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(!BB)
- user << "There is no bullet in the casing to inscribe anything into."
+ to_chat(user, "There is no bullet in the casing to inscribe anything into.")
return
var/tmp_label = ""
var/label_text = sanitizeSafe(input(user, "Inscribe some text into \the [initial(BB.name)]","Inscription",tmp_label), MAX_NAME_LEN)
if(length(label_text) > 20)
- user << "The inscription can be at most 20 characters long."
+ to_chat(user, "The inscription can be at most 20 characters long.")
else if(!label_text)
- user << "You scratch the inscription off of [initial(BB)]."
+ to_chat(user, "You scratch the inscription off of [initial(BB)].")
BB.name = initial(BB.name)
else
- user << "You inscribe \"[label_text]\" into \the [initial(BB.name)]."
+ to_chat(user, "You inscribe \"[label_text]\" into \the [initial(BB.name)].")
BB.name = "[initial(BB.name)] (\"[label_text]\")"
/obj/item/ammo_casing/update_icon()
@@ -55,7 +55,7 @@
/obj/item/ammo_casing/examine(mob/user)
..()
if (!BB)
- user << "This one is spent."
+ to_chat(user, "This one is spent.")
//Gun loading types
#define SINGLE_CASING 1 //The gun only accepts ammo_casings. ammo_magazines should never have this as their mag_type.
@@ -110,10 +110,10 @@
if(istype(W, /obj/item/ammo_casing))
var/obj/item/ammo_casing/C = W
if(C.caliber != caliber)
- user << "[C] does not fit into [src]."
+ to_chat(user, "[C] does not fit into [src].")
return
if(stored_ammo.len >= max_ammo)
- user << "[src] is full!"
+ to_chat(user, "[src] is full!")
return
user.remove_from_mob(C)
C.loc = src
@@ -122,13 +122,13 @@
if(istype(W, /obj/item/ammo_magazine/clip))
var/obj/item/ammo_magazine/clip/L = W
if(L.caliber != caliber)
- user << "The ammo in [L] does not fit into [src]."
+ to_chat(user, "The ammo in [L] does not fit into [src].")
return
if(!L.stored_ammo.len)
- user << "There's no more ammo [L]!"
+ to_chat(user, "There's no more ammo [L]!")
return
if(stored_ammo.len >= max_ammo)
- user << "[src] is full!"
+ to_chat(user, "[src] is full!")
return
var/obj/item/ammo_casing/AC = L.stored_ammo[1] //select the next casing.
L.stored_ammo -= AC //Remove this casing from loaded list of the clip.
@@ -140,9 +140,9 @@
/obj/item/ammo_magazine/attack_self(mob/user)
if(!stored_ammo.len)
- user << "[src] is already empty!"
+ to_chat(user, "[src] is already empty!")
return
- user << "You empty [src]."
+ to_chat(user, "You empty [src].")
for(var/obj/item/ammo_casing/C in stored_ammo)
C.loc = user.loc
C.set_dir(pick(cardinal))
@@ -162,7 +162,7 @@
/obj/item/ammo_magazine/examine(mob/user)
..()
- user << "There [(stored_ammo.len == 1)? "is" : "are"] [stored_ammo.len] round\s left!"
+ to_chat(user, "There [(stored_ammo.len == 1)? "is" : "are"] [stored_ammo.len] round\s left!")
//magazine icon state caching
/var/global/list/magazine_icondata_keys = list()
diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm
index 663f5f78781..f8445008fe9 100644
--- a/code/modules/projectiles/gun.dm
+++ b/code/modules/projectiles/gun.dm
@@ -150,11 +150,11 @@
if(dna_lock && attached_lock.stored_dna)
if(!authorized_user(user))
if(attached_lock.safety_level == 0)
- M << "\The [src] buzzes in dissapoint and displays an invalid DNA symbol."
+ to_chat(M, "\The [src] buzzes in dissapoint and displays an invalid DNA symbol.")
return 0
if(!attached_lock.exploding)
if(attached_lock.safety_level == 1)
- M << "\The [src] hisses in dissapointment."
+ to_chat(M, "\The [src] hisses in dissapointment.")
visible_message("\The [src] announces, \"Self-destruct occurring in ten seconds.\"", "\The [src] announces, \"Self-destruct occurring in ten seconds.\"")
spawn(100)
explosion(src, 0, 0, 3, 4)
@@ -163,7 +163,7 @@
qdel(src)
return 0
if(HULK in M.mutations)
- M << "Your fingers are much too large for the trigger guard!"
+ to_chat(M, "Your fingers are much too large for the trigger guard!")
return 0
if((CLUMSY in M.mutations) && prob(40)) //Clumsy handling
var/obj/P = consume_next_projectile()
@@ -196,7 +196,7 @@
return
if(user && user.a_intent == I_HELP && user.is_preference_enabled(/datum/client_preference/safefiring)) //regardless of what happens, refuse to shoot if help intent is on
- user << "You refrain from firing your [src] as your intent is set to help."
+ to_chat(user, "You refrain from firing your [src] as your intent is set to help.")
return
else
@@ -236,9 +236,9 @@
/obj/item/weapon/gun/attackby(var/obj/item/A as obj, mob/user as mob)
if(istype(A, /obj/item/dnalockingchip))
if(dna_lock)
- user << "\The [src] already has a [attached_lock]."
+ to_chat(user, "\The [src] already has a [attached_lock].")
return
- user << "You insert \the [A] into \the [src]."
+ to_chat(user, "You insert \the [A] into \the [src].")
user.drop_item()
A.loc = src
attached_lock = A
@@ -248,12 +248,12 @@
verbs += /obj/item/weapon/gun/verb/allow_dna
return
- if(istype(A, /obj/item/weapon/screwdriver))
+ if(A.is_screwdriver())
if(dna_lock && attached_lock && !attached_lock.controller_lock)
- user << "You begin removing \the [attached_lock] from \the [src]."
+ to_chat(user, "You begin removing \the [attached_lock] from \the [src].")
playsound(src, A.usesound, 50, 1)
if(do_after(user, 25 * A.toolspeed))
- user << "You remove \the [attached_lock] from \the [src]."
+ to_chat(user, "You remove \the [attached_lock] from \the [src].")
user.put_in_hands(attached_lock)
dna_lock = 0
attached_lock = null
@@ -261,12 +261,12 @@
verbs -= /obj/item/weapon/gun/verb/give_dna
verbs -= /obj/item/weapon/gun/verb/allow_dna
else
- user << "\The [src] is not accepting modifications at this time."
+ to_chat(user, "\The [src] is not accepting modifications at this time.")
..()
/obj/item/weapon/gun/emag_act(var/remaining_charges, var/mob/user)
if(dna_lock && attached_lock.controller_lock)
- user << "You short circuit the internal locking mechanisms of \the [src]!"
+ to_chat(user, "You short circuit the internal locking mechanisms of \the [src]!")
attached_lock.controller_dna = null
attached_lock.controller_lock = 0
attached_lock.stored_dna = list()
@@ -317,7 +317,7 @@
if(world.time < next_fire_time)
if (world.time % 3) //to prevent spam
- user << "[src] is not ready to fire again!"
+ to_chat(user, "[src] is not ready to fire again!")
return
var/shoot_time = (burst - 1)* burst_delay
@@ -681,7 +681,7 @@
user.apply_damage(in_chamber.damage*2.5, in_chamber.damage_type, "head", used_weapon = "Point blank shot in the mouth with \a [in_chamber]", sharp=1)
user.death()
else
- user << "Ow..."
+ to_chat(user, "Ow...")
user.apply_effect(110,AGONY,0)
qdel(in_chamber)
mouthshoot = 0
diff --git a/code/modules/projectiles/guns/launcher/crossbow.dm b/code/modules/projectiles/guns/launcher/crossbow.dm
index 8918b7d8931..a8458b1676c 100644
--- a/code/modules/projectiles/guns/launcher/crossbow.dm
+++ b/code/modules/projectiles/guns/launcher/crossbow.dm
@@ -162,7 +162,7 @@
else
user << "[src] already has a cell installed."
- else if(istype(W, /obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
if(cell)
var/obj/item/C = cell
C.loc = get_turf(user)
@@ -227,7 +227,7 @@
else
user << "You need at least three rods to complete this task."
return
- else if(istype(W,/obj/item/weapon/weldingtool))
+ else if(istype(W, /obj/item/weapon/weldingtool))
if(buildstate == 1)
var/obj/item/weapon/weldingtool/T = W
if(T.remove_fuel(0,user))
@@ -237,7 +237,7 @@
buildstate++
update_icon()
return
- else if(istype(W,/obj/item/stack/cable_coil))
+ else if(istype(W, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = W
if(buildstate == 2)
if(C.use(5))
@@ -265,7 +265,7 @@
else
user << "You need at least three plastic sheets to complete this task."
return
- else if(istype(W,/obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
if(buildstate == 5)
user << "You secure the crossbow's various parts."
playsound(src, W.usesound, 50, 1)
diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm
index a34db528872..2e8289fb8e9 100644
--- a/code/modules/projectiles/guns/magnetic/magnetic.dm
+++ b/code/modules/projectiles/guns/magnetic/magnetic.dm
@@ -105,7 +105,7 @@
update_icon()
return
- if(isscrewdriver(thing))
+ if(thing.is_screwdriver())
if(!capacitor)
to_chat(user, "\The [src] has no capacitor installed.")
return
diff --git a/code/modules/projectiles/guns/magnetic/magnetic_construction.dm b/code/modules/projectiles/guns/magnetic/magnetic_construction.dm
index 0c3647458b5..e8d38169fd5 100644
--- a/code/modules/projectiles/guns/magnetic/magnetic_construction.dm
+++ b/code/modules/projectiles/guns/magnetic/magnetic_construction.dm
@@ -66,7 +66,7 @@
increment_construction_stage()
return
- if(isscrewdriver(thing) && construction_stage >= 9)
+ if(thing.is_screwdriver() && construction_stage >= 9)
user.visible_message("\The [user] secures \the [src] and finishes it off.")
playsound(loc, 'sound/items/Screwdriver.ogg', 50, 1)
var/obj/item/weapon/gun/magnetic/coilgun = new(loc)
diff --git a/code/modules/projectiles/guns/modular_guns.dm b/code/modules/projectiles/guns/modular_guns.dm
index 8f81e971c47..64b33347cd0 100644
--- a/code/modules/projectiles/guns/modular_guns.dm
+++ b/code/modules/projectiles/guns/modular_guns.dm
@@ -50,12 +50,12 @@
FireModeModify()
/obj/item/weapon/gun/energy/modular/attackby(obj/item/O, mob/user)
- if(istype(O, /obj/item/weapon/screwdriver))
+ if(O.is_screwdriver())
to_chat(user, "You [assembled ? "disassemble" : "assemble"] the gun.")
assembled = !assembled
playsound(src, O.usesound, 50, 1)
return
- if(istype(O, /obj/item/weapon/crowbar))
+ if(O.is_crowbar())
if(assembled == 1)
to_chat(user, "Disassemble the [src] first!")
return
@@ -130,11 +130,11 @@
/obj/item/weapon/gun/energy/modular/load_ammo(var/obj/item/C, mob/user)
if(istype(C, cell_type))
if(self_recharge || battery_lock)
- user << "[src] does not have a battery port."
+ to_chat(user, "[src] does not have a battery port.")
return
var/obj/item/weapon/cell/P = C
if(power_supply)
- user << "[src] already has a power cell."
+ to_chat(user, "[src] already has a power cell.")
else
user.visible_message("[user] is reloading [src].", "You start to insert [P] into [src].")
if(do_after(user, 10))
diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm
index 30b5f86027d..f426fa5ebc9 100644
--- a/code/modules/random_map/drop/drop_types.dm
+++ b/code/modules/random_map/drop/drop_types.dm
@@ -193,8 +193,8 @@ datum/supply_drop_loot/riot
/obj/item/weapon/reagent_containers/food/snacks/tastybread,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake,
/obj/item/weapon/reagent_containers/food/drinks/glass2/fitnessflask/proteinshake,
- /obj/item/weapon/crowbar,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/device/flashlight,
/obj/item/device/flashlight,
/obj/item/clothing/suit/storage/hazardvest,
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index c30869e1358..d75d1439f7b 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -50,24 +50,24 @@
if(istype(B, /obj/item/weapon/reagent_containers/glass) || istype(B, /obj/item/weapon/reagent_containers/food))
if(src.beaker)
- user << "\A [beaker] is already loaded into the machine."
+ to_chat(user, "\A [beaker] is already loaded into the machine.")
return
src.beaker = B
user.drop_item()
B.loc = src
- user << "You add \the [B] to the machine!"
+ to_chat(user, "You add \the [B] to the machine!")
icon_state = "mixer1"
else if(istype(B, /obj/item/weapon/storage/pill_bottle))
if(src.loaded_pill_bottle)
- user << "A \the [loaded_pill_bottle] s already loaded into the machine."
+ to_chat(user, "A \the [loaded_pill_bottle] s already loaded into the machine.")
return
src.loaded_pill_bottle = B
user.drop_item()
B.loc = src
- user << "You add \the [loaded_pill_bottle] into the dispenser slot!"
+ to_chat(user, "You add \the [loaded_pill_bottle] into the dispenser slot!")
else if(default_unfasten_wrench(user, B, 20))
return
@@ -346,7 +346,7 @@
return 0
if(holdingitems && holdingitems.len >= limit)
- usr << "The machine cannot hold anymore items."
+ to_chat(user, "The machine cannot hold anymore items.")
return 1
if(!istype(O))
@@ -365,13 +365,13 @@
break
if(failed)
- user << "Nothing in the plant bag is usable."
+ to_chat(user, "Nothing in the plant bag is usable.")
return 1
if(!O.contents.len)
- user << "You empty \the [O] into \the [src]."
+ to_chat(user, "You empty \the [O] into \the [src].")
else
- user << "You fill \the [src] from \the [O]."
+ to_chat(user, "You fill \the [src] from \the [O].")
src.updateUsrDialog()
return 0
@@ -379,16 +379,16 @@
if(istype(O,/obj/item/weapon/gripper))
var/obj/item/weapon/gripper/B = O //B, for Borg.
if(!B.wrapped)
- user << "\The [B] is not holding anything."
+ to_chat(user, "\The [B] is not holding anything.")
return 0
else
var/B_held = B.wrapped
- user << "You use \the [B] to load \the [src] with \the [B_held]."
+ to_chat(user, "You use \the [B] to load \the [src] with \the [B_held].")
return 0
if(!sheet_reagents[O.type] && (!O.reagents || !O.reagents.total_volume))
- user << "\The [O] is not suitable for blending."
+ to_chat(user, "\The [O] is not suitable for blending.")
return 1
user.remove_from_mob(O)
diff --git a/code/modules/reagents/dispenser/dispenser2.dm b/code/modules/reagents/dispenser/dispenser2.dm
index 5ba448c14d2..726c66af427 100644
--- a/code/modules/reagents/dispenser/dispenser2.dm
+++ b/code/modules/reagents/dispenser/dispenser2.dm
@@ -26,32 +26,32 @@
/obj/machinery/chemical_dispenser/examine(mob/user)
..()
- user << "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more."
+ to_chat(user, "It has [cartridges.len] cartridges installed, and has space for [DISPENSER_MAX_CARTRIDGES - cartridges.len] more.")
/obj/machinery/chemical_dispenser/proc/add_cartridge(obj/item/weapon/reagent_containers/chem_disp_cartridge/C, mob/user)
if(!istype(C))
if(user)
- user << "\The [C] will not fit in \the [src]!"
+ to_chat(user, "\The [C] will not fit in \the [src]!")
return
if(cartridges.len >= DISPENSER_MAX_CARTRIDGES)
if(user)
- user << "\The [src] does not have any slots open for \the [C] to fit into!"
+ to_chat(user, "\The [src] does not have any slots open for \the [C] to fit into!")
return
if(!C.label)
if(user)
- user << "\The [C] does not have a label!"
+ to_chat(user, "\The [C] does not have a label!")
return
if(cartridges[C.label])
if(user)
- user << "\The [src] already contains a cartridge with that label!"
+ to_chat(user, "\The [src] already contains a cartridge with that label!")
return
if(user)
user.drop_from_inventory(C)
- user << "You add \the [C] to \the [src]."
+ to_chat(user, "You add \the [C] to \the [src].")
C.loc = src
cartridges[C.label] = C
@@ -64,9 +64,9 @@
nanomanager.update_uis(src)
/obj/machinery/chemical_dispenser/attackby(obj/item/weapon/W, mob/user)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
playsound(src, W.usesound, 50, 1)
- user << "You begin to [anchored ? "un" : ""]fasten \the [src]."
+ to_chat(user, "You begin to [anchored ? "un" : ""]fasten \the [src].")
if (do_after(user, 20 * W.toolspeed))
user.visible_message(
"\The [user] [anchored ? "un" : ""]fastens \the [src].",
@@ -74,39 +74,39 @@
"You hear a ratchet.")
anchored = !anchored
else
- user << "You decide not to [anchored ? "un" : ""]fasten \the [src]."
+ to_chat(user, "You decide not to [anchored ? "un" : ""]fasten \the [src].")
else if(istype(W, /obj/item/weapon/reagent_containers/chem_disp_cartridge))
add_cartridge(W, user)
- else if(istype(W, /obj/item/weapon/screwdriver))
+ else if(W.is_screwdriver())
var/label = input(user, "Which cartridge would you like to remove?", "Chemical Dispenser") as null|anything in cartridges
if(!label) return
var/obj/item/weapon/reagent_containers/chem_disp_cartridge/C = remove_cartridge(label)
if(C)
- user << "You remove \the [C] from \the [src]."
+ to_chat(user, "You remove \the [C] from \the [src].")
C.loc = loc
playsound(src, W.usesound, 50, 1)
else if(istype(W, /obj/item/weapon/reagent_containers/glass) || istype(W, /obj/item/weapon/reagent_containers/food))
if(container)
- user << "There is already \a [container] on \the [src]!"
+ to_chat(user, "There is already \a [container] on \the [src]!")
return
var/obj/item/weapon/reagent_containers/RC = W
if(!accept_drinking && istype(RC,/obj/item/weapon/reagent_containers/food))
- user << "This machine only accepts beakers!"
+ to_chat(user, "This machine only accepts beakers!")
return
if(!RC.is_open_container())
- user << "You don't see how \the [src] could dispense reagents into \the [RC]."
+ to_chat(user, "You don't see how \the [src] could dispense reagents into \the [RC].")
return
container = RC
user.drop_from_inventory(RC)
RC.loc = src
- user << "You set \the [RC] on \the [src]."
+ to_chat(user, "You set \the [RC] on \the [src].")
nanomanager.update_uis(src) // update all UIs attached to src
else
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index 316311c7942..5aefbc96d34 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -252,7 +252,7 @@
flags = OPENCONTAINER
unacidable = 0
-/obj/item/weapon/reagent_containers/glass/bucket/attackby(var/obj/D, mob/user as mob)
+/obj/item/weapon/reagent_containers/glass/bucket/attackby(var/obj/item/D, mob/user as mob)
if(isprox(D))
user << "You add [D] to [src]."
qdel(D)
@@ -260,7 +260,7 @@
user.drop_from_inventory(src)
qdel(src)
return
- else if(istype(D, /obj/item/weapon/wirecutters))
+ else if(D.is_wirecutter())
to_chat(user, "You cut a big hole in \the [src] with \the [D]. It's kinda useless as a bucket now.")
user.put_in_hands(new /obj/item/clothing/head/helmet/bucket)
user.drop_from_inventory(src)
diff --git a/code/modules/reagents/reagent_dispenser.dm b/code/modules/reagents/reagent_dispenser.dm
index 494659fb1e3..d40fc516109 100644
--- a/code/modules/reagents/reagent_dispenser.dm
+++ b/code/modules/reagents/reagent_dispenser.dm
@@ -27,12 +27,12 @@
/obj/structure/reagent_dispensers/examine(mob/user)
if(!..(user, 2))
return
- user << "It contains:"
+ to_chat(user, "It contains:")
if(reagents && reagents.reagent_list.len)
for(var/datum/reagent/R in reagents.reagent_list)
- user << "[R.volume] units of [R.name]"
+ to_chat(user, "[R.volume] units of [R.name]")
else
- user << "Nothing."
+ to_chat(user, "Nothing.")
/obj/structure/reagent_dispensers/verb/set_APTFT() //set amount_per_transfer_from_this
set name = "Set transfer amount"
@@ -103,9 +103,9 @@
if(!..(user, 2))
return
if (modded)
- user << "Fuel faucet is wrenched open, leaking the fuel!"
+ to_chat(user, "Fuel faucet is wrenched open, leaking the fuel!")
if(rig)
- user << "There is some kind of device rigged to the tank."
+ to_chat(user, "There is some kind of device rigged to the tank.")
/obj/structure/reagent_dispensers/fueltank/attack_hand()
if (rig)
@@ -118,7 +118,7 @@
/obj/structure/reagent_dispensers/fueltank/attackby(obj/item/weapon/W as obj, mob/user as mob)
src.add_fingerprint(user)
- if (istype(W,/obj/item/weapon/wrench))
+ if (W.is_wrench())
user.visible_message("[user] wrenches [src]'s faucet [modded ? "closed" : "open"].", \
"You wrench [src]'s faucet [modded ? "closed" : "open"]")
modded = modded ? 0 : 1
@@ -129,7 +129,7 @@
leak_fuel(amount_per_transfer_from_this)
if (istype(W,/obj/item/device/assembly_holder))
if (rig)
- user << "There is another device in the way."
+ to_chat(user, "There is another device in the way.")
return ..()
user.visible_message("[user] begins rigging [W] to \the [src].", "You begin rigging [W] to \the [src]")
if(do_after(user, 20))
@@ -236,15 +236,15 @@
/obj/structure/reagent_dispensers/water_cooler/examine(mob/user)
..()
if(cupholder)
- user << "There are [cups] cups in the cup dispenser."
+ to_chat(user, "There are [cups] cups in the cup dispenser.")
/obj/structure/reagent_dispensers/water_cooler/attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
src.add_fingerprint(user)
if(bottle)
playsound(loc, I.usesound, 50, 1)
if(do_after(user, 20) && bottle)
- user << "You unfasten the jug."
+ to_chat(user, "You unfasten the jug.")
var/obj/item/weapon/reagent_containers/glass/cooler_bottle/G = new /obj/item/weapon/reagent_containers/glass/cooler_bottle( src.loc )
for(var/datum/reagent/R in reagents.reagent_list)
var/total_reagent = reagents.get_reagent_amount(R.id)
@@ -259,15 +259,15 @@
user.visible_message("\The [user] begins securing \the [src] to the floor.", "You start securing \the [src] to the floor.")
if(do_after(user, 20 * I.toolspeed, src))
if(!src) return
- user << "You [anchored? "un" : ""]secured \the [src]!"
+ to_chat(user, "You [anchored? "un" : ""]secured \the [src]!")
anchored = !anchored
playsound(loc, I.usesound, 50, 1)
return
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
if(cupholder)
playsound(loc, I.usesound, 50, 1)
- user << "You take the cup dispenser off."
+ to_chat(user, "You take the cup dispenser off.")
new /obj/item/stack/material/plastic( src.loc )
if(cups)
for(var/i = 0 to cups)
@@ -278,9 +278,9 @@
return
if(!bottle && !cupholder)
playsound(loc, I.usesound, 50, 1)
- user << "You start taking the water-cooler apart."
+ to_chat(user, "You start taking the water-cooler apart.")
if(do_after(user, 20 * I.toolspeed) && !bottle && !cupholder)
- user << "You take the water-cooler apart."
+ to_chat(user, "You take the water-cooler apart.")
new /obj/item/stack/material/plastic( src.loc, 4 )
qdel(src)
return
@@ -290,19 +290,19 @@
if(!bottle)
if(anchored)
var/obj/item/weapon/reagent_containers/glass/cooler_bottle/G = I
- user << "You start to screw the bottle onto the water-cooler."
+ to_chat(user, "You start to screw the bottle onto the water-cooler.")
if(do_after(user, 20) && !bottle && anchored)
bottle = 1
update_icon()
- user << "You screw the bottle onto the water-cooler!"
+ to_chat(user, "You screw the bottle onto the water-cooler!")
for(var/datum/reagent/R in G.reagents.reagent_list)
var/total_reagent = G.reagents.get_reagent_amount(R.id)
reagents.add_reagent(R.id, total_reagent)
qdel(G)
else
- user << "You need to wrench down the cooler first."
+ to_chat(user, "You need to wrench down the cooler first.")
else
- user << "There is already a bottle there!"
+ to_chat(user, "There is already a bottle there!")
return 1
if(istype(I, /obj/item/stack/material/plastic))
@@ -310,17 +310,17 @@
if(anchored)
var/obj/item/stack/material/plastic/P = I
src.add_fingerprint(user)
- user << "You start to attach a cup dispenser onto the water-cooler."
+ to_chat(user, "You start to attach a cup dispenser onto the water-cooler.")
playsound(src.loc, 'sound/items/Deconstruct.ogg', 50, 1)
if(do_after(user, 20) && !cupholder && anchored)
if (P.use(1))
- user << "You attach a cup dispenser onto the water-cooler."
+ to_chat(user, "You attach a cup dispenser onto the water-cooler.")
cupholder = 1
update_icon()
else
- user << "You need to wrench down the cooler first."
+ to_chat(user, "You need to wrench down the cooler first.")
else
- user << "There is already a cup dispenser there!"
+ to_chat(user, "There is already a cup dispenser there!")
return
/obj/structure/reagent_dispensers/water_cooler/attack_hand(mob/user)
diff --git a/code/modules/recycling/conveyor2.dm b/code/modules/recycling/conveyor2.dm
index d1be4f08da9..d70e6e563de 100644
--- a/code/modules/recycling/conveyor2.dm
+++ b/code/modules/recycling/conveyor2.dm
@@ -100,7 +100,7 @@
if(panel_open)
var/input = sanitize(input(usr, "What id would you like to give this conveyor?", "Multitool-Conveyor interface", id))
if(!input)
- usr << "No input found please hang up and try your call again."
+ to_chat(user, "No input found. Please hang up and try your call again.")
return
id = input
for(var/obj/machinery/conveyor_switch/C in machines)
@@ -220,7 +220,7 @@
// attack with hand, switch position
/obj/machinery/conveyor_switch/attack_hand(mob/user)
if(!allowed(user))
- user << "Access denied."
+ to_chat(user, "Access denied.")
return
if(position == 0)
@@ -251,12 +251,12 @@
if(panel_open)
var/obj/item/weapon/weldingtool/WT = I
if(!WT.remove_fuel(0, user))
- user << "The welding tool must be on to complete this task."
+ to_chat(user, "The welding tool must be on to complete this task.")
return
playsound(src, WT.usesound, 50, 1)
if(do_after(user, 20 * WT.toolspeed))
if(!src || !WT.isOn()) return
- user << "You deconstruct the frame."
+ to_chat(user, "You deconstruct the frame.")
new /obj/item/stack/material/steel( src.loc, 2 )
qdel(src)
return
@@ -265,7 +265,7 @@
if(panel_open)
var/input = sanitize(input(usr, "What id would you like to give this conveyor switch?", "Multitool-Conveyor interface", id))
if(!input)
- usr << "No input found please hang up and try your call again."
+ to_chat(user, "No input found. Please hang up and try your call again.")
return
id = input
conveyors = list() // Clear list so they aren't double added.
diff --git a/code/modules/recycling/disposal-construction.dm b/code/modules/recycling/disposal-construction.dm
index 597033a6e67..8034b776b45 100644
--- a/code/modules/recycling/disposal-construction.dm
+++ b/code/modules/recycling/disposal-construction.dm
@@ -112,7 +112,7 @@
return
if(anchored)
- usr << "You must unfasten the pipe before rotating it."
+ to_chat(usr, "You must unfasten the pipe before rotating it.")
return
set_dir(turn(dir, -90))
@@ -126,7 +126,7 @@
return
if(anchored)
- usr << "You must unfasten the pipe before flipping it."
+ to_chat(usr, "You must unfasten the pipe before flipping it.")
return
set_dir(turn(dir, 180))
@@ -223,12 +223,12 @@
var/turf/T = src.loc
if(!T.is_plating())
- user << "You can only attach the [nicetype] if the floor plating is removed."
+ to_chat(user, "You can only attach the [nicetype] if the floor plating is removed.")
return
var/obj/structure/disposalpipe/CP = locate() in T
- if(istype(I, /obj/item/weapon/wrench))
+ if(I.is_wrench())
if(anchored)
anchored = 0
if(ispipe)
@@ -236,15 +236,15 @@
density = 0
else
density = 1
- user << "You detach the [nicetype] from the underfloor."
+ to_chat(user, "You detach the [nicetype] from the underfloor.")
else
if(ptype>=6 && ptype <= 8) // 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."
+ to_chat(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."
+ to_chat(user, "The [nicetype] requires a trunk underneath it in order to work.")
return
else
if(CP)
@@ -253,7 +253,7 @@
if(istype(CP, /obj/structure/disposalpipe/broken))
pdir = CP.dir
if(pdir & dpdir)
- user << "There is already a [nicetype] at that location."
+ to_chat(user, "There is already a [nicetype] at that location.")
return
anchored = 1
@@ -262,7 +262,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."
+ to_chat(user, "You attach the [nicetype] to the underfloor.")
playsound(loc, I.usesound, 100, 1)
update()
@@ -271,10 +271,10 @@
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src, W.usesound, 100, 1)
- user << "Welding the [nicetype] in place."
+ to_chat(user, "Welding the [nicetype] in place.")
if(do_after(user, 20 * W.toolspeed))
if(!src || !W.isOn()) return
- user << "The [nicetype] has been welded in place!"
+ to_chat(user, "The [nicetype] has been welded in place!")
update() // TODO: Make this neat
if(ispipe) // Pipe
@@ -316,10 +316,10 @@
qdel(src)
return
else
- user << "You need more welding fuel to complete this task."
+ to_chat(user, "You need more welding fuel to complete this task.")
return
else
- user << "You need to attach it to the plating first!"
+ to_chat(user, "You need to attach it to the plating first!")
return
/obj/structure/disposalconstruct/hides_under_flooring()
diff --git a/code/modules/recycling/disposal.dm b/code/modules/recycling/disposal.dm
index a9b0b213ed1..10157157fac 100644
--- a/code/modules/recycling/disposal.dm
+++ b/code/modules/recycling/disposal.dm
@@ -55,32 +55,32 @@
src.add_fingerprint(user)
if(mode<=0) // It's off
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
if(contents.len > 0)
- user << "Eject the items first!"
+ to_chat(user, "Eject the items first!")
return
if(mode==0) // It's off but still not unscrewed
mode=-1 // Set it to doubleoff l0l
playsound(src, I.usesound, 50, 1)
- user << "You remove the screws around the power connection."
+ to_chat(user, "You remove the screws around the power connection.")
return
else if(mode==-1)
mode=0
playsound(src, I.usesound, 50, 1)
- user << "You attach the screws around the power connection."
+ to_chat(user, "You attach the screws around the power connection.")
return
- else if(istype(I,/obj/item/weapon/weldingtool) && mode==-1)
+ else if(istype(I, /obj/item/weapon/weldingtool) && mode==-1)
if(contents.len > 0)
- user << "Eject the items first!"
+ to_chat(user, "Eject the items first!")
return
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src, W.usesound, 100, 1)
- user << "You start slicing the floorweld off the disposal unit."
+ to_chat(user, "You start slicing the floorweld off the disposal unit.")
if(do_after(user,20 * W.toolspeed))
if(!src || !W.isOn()) return
- user << "You sliced the floorweld off the disposal unit."
+ to_chat(user, "You sliced the floorweld off the disposal unit.")
var/obj/structure/disposalconstruct/C = new (src.loc)
src.transfer_fingerprints_to(C)
C.ptype = 6 // 6 = disposal unit
@@ -90,16 +90,16 @@
qdel(src)
return
else
- user << "You need more welding fuel to complete this task."
+ to_chat(user, "You need more welding fuel to complete this task.")
return
if(istype(I, /obj/item/weapon/melee/energy/blade))
- user << "You can't place that item inside the disposal unit."
+ to_chat(user, "You can't place that item inside the disposal unit.")
return
if(istype(I, /obj/item/weapon/storage/bag/trash))
var/obj/item/weapon/storage/bag/trash/T = I
- user << "You empty the bag."
+ to_chat(user, "You empty the bag.")
for(var/obj/item/O in T.contents)
T.remove_from_storage(O,src)
T.update_icon()
@@ -143,7 +143,7 @@
if(I)
I.forceMove(src)
- user << "You place \the [I] into the [src]."
+ to_chat(user, "You place \the [I] into the [src].")
for(var/mob/M in viewers(src))
if(M == user)
continue
@@ -179,10 +179,10 @@
if(target == user && !user.stat && !user.weakened && !user.stunned && !user.paralysis) // if drop self, then climbed in
// must be awake, not stunned or whatever
msg = "[user.name] climbs into the [src]."
- user << "You climb into the [src]."
+ to_chat(user, "You climb into the [src].")
else if(target != user && !user.restrained() && !user.stat && !user.weakened && !user.stunned && !user.paralysis)
msg = "[user.name] stuffs [target.name] into the [src]!"
- user << "You stuff [target.name] into the [src]!"
+ to_chat(user, "You stuff [target.name] into the [src]!")
add_attack_logs(user,target,"Disposals dunked")
else
@@ -230,7 +230,7 @@
return
if(user && user.loc == src)
- usr << "You cannot reach the controls from inside."
+ to_chat(user, "You cannot reach the controls from inside.")
return
// Clumsy folks can only flush it.
@@ -279,11 +279,11 @@
/obj/machinery/disposal/Topic(href, href_list)
if(usr.loc == src)
- usr << "You cannot reach the controls from inside."
+ to_chat(usr, "You cannot reach the controls from inside.")
return
if(mode==-1 && !href_list["eject"]) // only allow ejecting if mode is -1
- usr << "The disposal units power is disabled."
+ to_chat(usr, "The disposal units power is disabled.")
return
if(..())
return
@@ -636,7 +636,7 @@
if (src.loc)
for (var/mob/M in hearers(src.loc.loc))
- M << "CLONG, clong!"
+ to_chat(M, "CLONG, clong!")
playsound(src.loc, 'sound/effects/clang.ogg', 50, 0, 0)
@@ -885,15 +885,15 @@
// check if anything changed over 2 seconds
var/turf/uloc = user.loc
var/atom/wloc = W.loc
- user << "Slicing the disposal pipe."
+ to_chat(user, "Slicing the disposal pipe.")
sleep(30)
if(!W.isOn()) return
if(user.loc == uloc && wloc == W.loc)
welded()
else
- user << "You must stay still while welding the pipe."
+ to_chat(user, "You must stay still while welding the pipe.")
else
- user << "You need more welding fuel to cut the pipe."
+ to_chat(user, "You need more welding fuel to cut the pipe.")
return
// called when pipe is cut with welder
@@ -1169,7 +1169,7 @@
if(O.currTag)// Tag set
sort_tag = O.currTag
playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1)
- user << "Changed tag to '[sort_tag]'."
+ to_chat(user, "Changed tag to '[sort_tag]'.")
updatename()
updatedesc()
@@ -1237,7 +1237,7 @@
if(O.currTag)// Tag set
sortType = O.currTag
playsound(src.loc, 'sound/machines/twobeep.ogg', 100, 1)
- user << "Changed filter to '[sortType]'."
+ to_chat(user, "Changed filter to '[sortType]'.")
updatename()
updatedesc()
@@ -1365,15 +1365,15 @@
// check if anything changed over 2 seconds
var/turf/uloc = user.loc
var/atom/wloc = W.loc
- user << "Slicing the disposal pipe."
+ to_chat(user, "Slicing the disposal pipe.")
sleep(30)
if(!W.isOn()) return
if(user.loc == uloc && wloc == W.loc)
welded()
else
- user << "You must stay still while welding the pipe."
+ to_chat(user, "You must stay still while welding the pipe.")
else
- user << "You need more welding fuel to cut the pipe."
+ to_chat(user, "You need more welding fuel to cut the pipe.")
return
// would transfer to next pipe segment, but we are in a trunk
@@ -1475,25 +1475,25 @@
if(!I || !user)
return
src.add_fingerprint(user)
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
if(mode==0)
mode=1
- user << "You remove the screws around the power connection."
+ to_chat(user, "You remove the screws around the power connection.")
playsound(src, I.usesound, 50, 1)
return
else if(mode==1)
mode=0
- user << "You attach the screws around the power connection."
+ to_chat(user, "You attach the screws around the power connection.")
playsound(src, I.usesound, 50, 1)
return
- else if(istype(I,/obj/item/weapon/weldingtool) && mode==1)
+ else if(istype(I, /obj/item/weapon/weldingtool) && mode==1)
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src, W.usesound, 100, 1)
- user << "You start slicing the floorweld off the disposal outlet."
+ to_chat(user, "You start slicing the floorweld off the disposal outlet.")
if(do_after(user,20 * W.toolspeed))
if(!src || !W.isOn()) return
- user << "You sliced the floorweld off the disposal outlet."
+ to_chat(user, "You sliced the floorweld off the disposal outlet.")
var/obj/structure/disposalconstruct/C = new (src.loc)
src.transfer_fingerprints_to(C)
C.ptype = 7 // 7 = outlet
@@ -1503,7 +1503,7 @@
qdel(src)
return
else
- user << "You need more welding fuel to complete this task."
+ to_chat(user, "You need more welding fuel to complete this task.")
return
// called when movable is expelled from a disposal pipe or outlet
diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm
index b2cbcb9b3ef..64f5b923ab1 100755
--- a/code/modules/recycling/sortingmachinery.dm
+++ b/code/modules/recycling/sortingmachinery.dm
@@ -26,7 +26,7 @@
var/obj/item/device/destTagger/O = W
if(O.currTag)
if(src.sortTag != O.currTag)
- user << "You have labeled the destination as [O.currTag]."
+ to_chat(user, "You have labeled the destination as [O.currTag].")
if(!src.sortTag)
src.sortTag = O.currTag
update_icon()
@@ -34,16 +34,16 @@
src.sortTag = O.currTag
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1)
else
- user << "The package is already labeled for [O.currTag]."
+ to_chat(user, "The package is already labeled for [O.currTag].")
else
- user << "You need to set a destination first!"
+ to_chat(user, "You need to set a destination first!")
else if(istype(W, /obj/item/weapon/pen))
switch(alert("What would you like to alter?",,"Title","Description", "Cancel"))
if("Title")
var/str = sanitizeSafe(input(usr,"Label text?","Set label",""), MAX_NAME_LEN)
if(!str || !length(str))
- usr << " Invalid text."
+ to_chat(user, " Invalid text.")
return
user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[str]\"",\
"You title \the [src]: \"[str]\"",\
@@ -57,7 +57,7 @@
if("Description")
var/str = sanitize(input(usr,"Label text?","Set label",""))
if(!str || !length(str))
- usr << "Invalid text."
+ to_chat(user, "Invalid text.")
return
if(!examtext && !nameset)
examtext = str
@@ -101,9 +101,9 @@
examine(mob/user)
if(..(user, 4))
if(sortTag)
- user << "It is labeled \"[sortTag]\""
+ to_chat(user, "It is labeled \"[sortTag]\"")
if(examtext)
- user << "It has a note attached which reads, \"[examtext]\""
+ to_chat(user, "It has a note attached which reads, \"[examtext]\"")
return
/obj/item/smallDelivery
@@ -133,7 +133,7 @@
var/obj/item/device/destTagger/O = W
if(O.currTag)
if(src.sortTag != O.currTag)
- user << "You have labeled the destination as [O.currTag]."
+ to_chat(user, "You have labeled the destination as [O.currTag].")
if(!src.sortTag)
src.sortTag = O.currTag
update_icon()
@@ -141,16 +141,16 @@
src.sortTag = O.currTag
playsound(src.loc, 'sound/machines/twobeep.ogg', 50, 1)
else
- user << "The package is already labeled for [O.currTag]."
+ to_chat(user, "The package is already labeled for [O.currTag].")
else
- user << "You need to set a destination first!"
+ to_chat(user, "You need to set a destination first!")
else if(istype(W, /obj/item/weapon/pen))
switch(alert("What would you like to alter?",,"Title","Description", "Cancel"))
if("Title")
var/str = sanitizeSafe(input(usr,"Label text?","Set label",""), MAX_NAME_LEN)
if(!str || !length(str))
- usr << " Invalid text."
+ to_chat(user, " Invalid text.")
return
user.visible_message("\The [user] titles \the [src] with \a [W], marking down: \"[str]\"",\
"You title \the [src]: \"[str]\"",\
@@ -165,7 +165,7 @@
if("Description")
var/str = sanitize(input(usr,"Label text?","Set label",""))
if(!str || !length(str))
- usr << "Invalid text."
+ to_chat(user, "Invalid text.")
return
if(!examtext && !nameset)
examtext = str
@@ -205,9 +205,9 @@
examine(mob/user)
if(..(user, 4))
if(sortTag)
- user << "It is labeled \"[sortTag]\""
+ to_chat(user, "It is labeled \"[sortTag]\"")
if(examtext)
- user << "It has a note attached which reads, \"[examtext]\""
+ to_chat(user, "It has a note attached which reads, \"[examtext]\"")
return
/obj/item/weapon/packageWrap
@@ -278,7 +278,7 @@
"You wrap \the [target], leaving [amount] units of paper on \the [src].",\
"You hear someone taping paper around a large object.")
else if(src.amount < 3)
- user << "You need more paper."
+ to_chat(user, "You need more paper.")
else if (istype (target, /obj/structure/closet))
var/obj/structure/closet/O = target
if (src.amount > 3 && !O.opened)
@@ -291,9 +291,9 @@
"You wrap \the [target], leaving [amount] units of paper on \the [src].",\
"You hear someone taping paper around a large object.")
else if(src.amount < 3)
- user << "You need more paper."
+ to_chat(user, "You need more paper.")
else
- user << "The object you are trying to wrap is unsuitable for the sorting machinery!"
+ to_chat(user, "The object you are trying to wrap is unsuitable for the sorting machinery!")
if (src.amount <= 0)
new /obj/item/weapon/c_tube( src.loc )
qdel(src)
@@ -302,7 +302,7 @@
examine(mob/user)
if(..(user, 0))
- user << "There are [amount] units of package wrap left!"
+ to_chat(user, "There are [amount] units of package wrap left!")
return
@@ -421,25 +421,25 @@
if(!I || !user)
return
- if(istype(I, /obj/item/weapon/screwdriver))
+ if(I.is_screwdriver())
if(c_mode==0)
c_mode=1
playsound(src.loc, I.usesound, 50, 1)
- user << "You remove the screws around the power connection."
+ to_chat(user, "You remove the screws around the power connection.")
return
else if(c_mode==1)
c_mode=0
playsound(src.loc, I.usesound, 50, 1)
- user << "You attach the screws around the power connection."
+ to_chat(user, "You attach the screws around the power connection.")
return
- else if(istype(I,/obj/item/weapon/weldingtool) && c_mode==1)
+ else if(istype(I, /obj/item/weapon/weldingtool) && c_mode==1)
var/obj/item/weapon/weldingtool/W = I
if(W.remove_fuel(0,user))
playsound(src.loc, W.usesound, 50, 1)
- user << "You start slicing the floorweld off the delivery chute."
+ to_chat(user, "You start slicing the floorweld off the delivery chute.")
if(do_after(user,20 * W.toolspeed))
if(!src || !W.isOn()) return
- user << "You sliced the floorweld off the delivery chute."
+ to_chat(user, "You sliced the floorweld off the delivery chute.")
var/obj/structure/disposalconstruct/C = new (src.loc)
C.ptype = 8 // 8 = Delivery chute
C.update()
@@ -448,7 +448,7 @@
qdel(src)
return
else
- user << "You need more welding fuel to complete this task."
+ to_chat(user, "You need more welding fuel to complete this task.")
return
/obj/machinery/disposal/deliveryChute/Destroy()
diff --git a/code/modules/research/circuitprinter.dm b/code/modules/research/circuitprinter.dm
index dae6575577d..850df766455 100644
--- a/code/modules/research/circuitprinter.dm
+++ b/code/modules/research/circuitprinter.dm
@@ -99,7 +99,7 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
/obj/machinery/r_n_d/circuit_imprinter/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
- user << "\The [src] is busy. Please wait for completion of previous operation."
+ to_chat(user, "\The [src] is busy. Please wait for completion of previous operation.")
return 1
if(default_deconstruction_screwdriver(user, O))
if(linked_console)
@@ -113,26 +113,26 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
if(istype(O, /obj/item/weapon/gripper/no_use/loader))
return 0 //Sheet loaders weren't finishing attack(), this prevents the message "You can't stuff that gripper into this" without preventing the rest of the attack sequence from finishing
if(panel_open)
- user << "You can't load \the [src] while it's opened."
+ to_chat(user, "You can't load \the [src] while it's opened.")
return 1
if(!linked_console)
- user << "\The [src] must be linked to an R&D console first."
+ to_chat(user, "\The [src] must be linked to an R&D console first.")
return 1
if(O.is_open_container())
return 0
if(!istype(O, /obj/item/stack/material)) //Previously checked for specific material sheets, for some reason? Made the check on 133 redundant.
- user << "You cannot insert this item into \the [src]."
+ to_chat(user, "You cannot insert this item into \the [src].")
return 1
if(stat)
return 1
if(TotalMaterials() + SHEET_MATERIAL_AMOUNT > max_material_storage)
- user << "\The [src]'s material bin is full. Please remove material before adding more."
+ to_chat(user, "\The [src]'s material bin is full. Please remove material before adding more.")
return 1
var/obj/item/stack/material/S = O
if(!(S.material.name in materials))
- user << "The [src] doesn't accept [S.material]!"
+ to_chat(user, "The [src] doesn't accept [S.material]!")
return
busy = 1
@@ -152,9 +152,9 @@ using metal and glass, it uses glass and reagents (usually sulphuric acid).
materials[S.material.name] += amnt
S.use(1)
count++
- user << "You insert [count] [sname] into the fabricator."
+ to_chat(user, "You insert [count] [sname] into the fabricator.")
else
- user << "The fabricator cannot hold more [sname]."
+ to_chat(user, "The fabricator cannot hold more [sname].")
busy = 0
updateUsrDialog()
diff --git a/code/modules/research/designs/misc.dm b/code/modules/research/designs/misc.dm
index ab420d142fd..29231a7cd9a 100644
--- a/code/modules/research/designs/misc.dm
+++ b/code/modules/research/designs/misc.dm
@@ -139,7 +139,7 @@ datum/design/item/laserpointer
id = "handdrill"
req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2)
materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100)
- build_path = /obj/item/weapon/screwdriver/power
+ build_path = /obj/item/weapon/tool/screwdriver/power
sort_string = "VASDA"
/datum/design/item/jaws_life
@@ -148,7 +148,7 @@ datum/design/item/laserpointer
id = "jawslife"
req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2)
materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100)
- build_path = /obj/item/weapon/crowbar/power
+ build_path = /obj/item/weapon/tool/crowbar/power
sort_string = "VASEA"
/datum/design/item/device/t_scanner_upg
diff --git a/code/modules/research/protolathe.dm b/code/modules/research/protolathe.dm
index b90937343c7..1e1d54f9bc3 100644
--- a/code/modules/research/protolathe.dm
+++ b/code/modules/research/protolathe.dm
@@ -91,7 +91,7 @@
/obj/machinery/r_n_d/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob)
if(busy)
- user << "\The [src] is busy. Please wait for completion of previous operation."
+ to_chat(user, "\The [src] is busy. Please wait for completion of previous operation.")
return 1
if(default_deconstruction_screwdriver(user, O))
if(linked_console)
@@ -107,20 +107,20 @@
if(istype(O, /obj/item/weapon/gripper/no_use/loader))
return 0 //Sheet loaders weren't finishing attack(), this prevents the message "You can't stuff that gripper into this" without preventing the rest of the attack sequence from finishing
if(panel_open)
- user << "You can't load \the [src] while it's opened."
+ to_chat(user, "You can't load \the [src] while it's opened.")
return 1
if(!linked_console)
- user << "\The [src] must be linked to an R&D console first!"
+ to_chat(user, "\The [src] must be linked to an R&D console first!")
return 1
if(!istype(O, /obj/item/stack/material))
- user << "You cannot insert this item into \the [src]!"
+ to_chat(user, "You cannot insert this item into \the [src]!")
return 1
if(stat)
return 1
var/obj/item/stack/material/S = O
if(!(S.material.name in materials))
- user << "The [src] doesn't accept [S.material]!"
+ to_chat(user, "The [src] doesn't accept [S.material]!")
return
busy = 1
@@ -140,9 +140,9 @@
materials[S.material.name] += amnt
S.use(1)
count++
- user << "You insert [count] [sname] into the fabricator."
+ to_chat(user, "You insert [count] [sname] into the fabricator.")
else
- user << "The fabricator cannot hold more [sname]."
+ to_chat(user, "The fabricator cannot hold more [sname].")
busy = 0
var/stacktype = S.type
diff --git a/code/modules/security levels/keycard authentication.dm b/code/modules/security levels/keycard authentication.dm
index 4d5eeb7905b..7696c92a519 100644
--- a/code/modules/security levels/keycard authentication.dm
+++ b/code/modules/security levels/keycard authentication.dm
@@ -27,7 +27,7 @@
/obj/machinery/keycard_auth/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(stat & (NOPOWER|BROKEN))
- user << "This device is not powered."
+ to_chat(user, "This device is not powered.")
return
if(istype(W,/obj/item/weapon/card/id))
var/obj/item/weapon/card/id/ID = W
@@ -41,11 +41,11 @@
event_triggered_by = usr
broadcast_request() //This is the device making the initial event request. It needs to broadcast to other devices
- if(istype(W, /obj/item/weapon/screwdriver))
- user << "You begin removing the faceplate from the [src]"
+ if(W.is_screwdriver())
+ to_chat(user, "You begin removing the faceplate from the [src]")
playsound(src, W.usesound, 50, 1)
if(do_after(user, 10 * W.toolspeed))
- user << "You remove the faceplate from the [src]"
+ to_chat(user, "You remove the faceplate from the [src]")
var/obj/structure/frame/A = new /obj/structure/frame(loc)
var/obj/item/weapon/circuitboard/M = new circuit(A)
A.frame_type = M.board_type
@@ -70,12 +70,12 @@
/obj/machinery/keycard_auth/attack_hand(mob/user as mob)
if(user.stat || stat & (NOPOWER|BROKEN))
- user << "This device is not powered."
+ to_chat(user, "This device is not powered.")
return
if(!user.IsAdvancedToolUser())
return 0
if(busy)
- user << "This device is busy."
+ to_chat(user, "This device is busy.")
return
user.set_machine(src)
@@ -105,10 +105,10 @@
/obj/machinery/keycard_auth/Topic(href, href_list)
..()
if(busy)
- usr << "This device is busy."
+ to_chat(usr, "This device is busy.")
return
if(usr.stat || stat & (BROKEN|NOPOWER))
- usr << "This device is without power."
+ to_chat(usr, "This device is without power.")
return
if(href_list["triggerevent"])
event = href_list["triggerevent"]
@@ -174,7 +174,7 @@
feedback_inc("alert_keycard_auth_maintRevoke",1)
if("Emergency Response Team")
if(is_ert_blocked())
- usr << "All emergency response teams are dispatched and can not be called at this time."
+ to_chat(usr, "All emergency response teams are dispatched and can not be called at this time.")
return
trigger_armed_response_team(1)
diff --git a/code/modules/shieldgen/emergency_shield.dm b/code/modules/shieldgen/emergency_shield.dm
index b67e6f70a2f..1798ebd67f9 100644
--- a/code/modules/shieldgen/emergency_shield.dm
+++ b/code/modules/shieldgen/emergency_shield.dm
@@ -254,10 +254,10 @@
/obj/machinery/shieldgen/attack_hand(mob/user as mob)
if(locked)
- user << "The machine is locked, you are unable to use it."
+ to_chat(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."
+ to_chat(user, "The panel must be closed before operating this machine.")
return
if (src.active)
@@ -272,7 +272,7 @@
"You hear heavy droning.")
src.shields_up()
else
- user << "The device must first be secured to the floor."
+ to_chat(user, "The device must first be secured to the floor.")
return
/obj/machinery/shieldgen/emag_act(var/remaining_charges, var/mob/user)
@@ -282,50 +282,50 @@
return 1
/obj/machinery/shieldgen/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
playsound(src, W.usesound, 100, 1)
if(is_open)
- user << "You close the panel."
+ to_chat(user, "You close the panel.")
is_open = 0
else
- user << "You open the panel and expose the wiring."
+ to_chat(user, "You open the panel and expose the wiring.")
is_open = 1
else if(istype(W, /obj/item/stack/cable_coil) && malfunction && is_open)
var/obj/item/stack/cable_coil/coil = W
- user << "You begin to replace the wires."
+ to_chat(user, "You begin to replace the wires.")
//if(do_after(user, min(60, round( ((getMaxHealth()/health)*10)+(malfunction*10) ))) //Take longer to repair heavier damage
if(do_after(user, 30))
if (coil.use(1))
health = max_health
malfunction = 0
- user << "You repair the [src]!"
+ to_chat(user, "You repair the [src]!")
update_icon()
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(locked)
- user << "The bolts are covered, unlocking this would retract the covers."
+ to_chat(user, "The bolts are covered, unlocking this would retract the covers.")
return
if(anchored)
playsound(src, W.usesound, 100, 1)
- user << "You unsecure the [src] from the floor!"
+ to_chat(user, "You unsecure the [src] from the floor!")
if(active)
- user << "The [src] shuts off!"
+ to_chat(user, "The [src] shuts off!")
src.shields_down()
anchored = 0
else
if(istype(get_turf(src), /turf/space)) return //No wrenching these in space!
playsound(src, W.usesound, 100, 1)
- user << "You secure the [src] to the floor!"
+ to_chat(user, "You secure the [src] to the floor!")
anchored = 1
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."]"
+ to_chat(user, "The controls are now [src.locked ? "locked." : "unlocked."]")
else
- user << "Access denied."
+ to_chat(user, "Access denied.")
else
..()
diff --git a/code/modules/shieldgen/sheldwallgen.dm b/code/modules/shieldgen/sheldwallgen.dm
index 995df27b480..37c55e59114 100644
--- a/code/modules/shieldgen/sheldwallgen.dm
+++ b/code/modules/shieldgen/sheldwallgen.dm
@@ -158,7 +158,7 @@
/obj/machinery/shieldwallgen/attackby(obj/item/W, mob/user)
- if(istype(W, /obj/item/weapon/wrench))
+ if(W.is_wrench())
if(active)
user << "Turn off the field generator first."
return
diff --git a/code/modules/shieldgen/shield_capacitor.dm b/code/modules/shieldgen/shield_capacitor.dm
index 1b8f2def84f..ae517059846 100644
--- a/code/modules/shieldgen/shield_capacitor.dm
+++ b/code/modules/shieldgen/shield_capacitor.dm
@@ -45,7 +45,7 @@
updateDialog()
else
user << "Access denied."
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
src.anchored = !src.anchored
playsound(src, W.usesound, 75, 1)
src.visible_message("\icon[src] [src] has been [anchored ? "bolted to the floor" : "unbolted from the floor"] by [user].")
diff --git a/code/modules/shieldgen/shield_gen.dm b/code/modules/shieldgen/shield_gen.dm
index aa504fd7a6a..7c63d0a6234 100644
--- a/code/modules/shieldgen/shield_gen.dm
+++ b/code/modules/shieldgen/shield_gen.dm
@@ -64,7 +64,7 @@
updateDialog()
else
user << "Access denied."
- else if(istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
src.anchored = !src.anchored
playsound(src, W.usesound, 75, 1)
src.visible_message("\icon[src] [src] has been [anchored?"bolted to the floor":"unbolted from the floor"] by [user].")
diff --git a/code/modules/surgery/_defines.dm b/code/modules/surgery/_defines.dm
index 900f3e45456..a76fb4e9709 100644
--- a/code/modules/surgery/_defines.dm
+++ b/code/modules/surgery/_defines.dm
@@ -1 +1 @@
-#define SURGERY_FAILURE -1
+#define SURGERY_FAILURE -1
\ No newline at end of file
diff --git a/code/modules/surgery/bones.dm b/code/modules/surgery/bones.dm
index 5465e7d03ef..2f832fdb9f8 100644
--- a/code/modules/surgery/bones.dm
+++ b/code/modules/surgery/bones.dm
@@ -9,9 +9,11 @@
/datum/surgery_step/glue_bone
allowed_tools = list(
- /obj/item/weapon/surgical/bonegel = 100, \
- /obj/item/weapon/screwdriver = 75
+ /obj/item/weapon/surgical/bonegel = 100
)
+
+ allowed_procs = list(IS_SCREWDRIVER = 75)
+
can_infect = 1
blood_level = 1
@@ -49,10 +51,11 @@
/datum/surgery_step/set_bone
allowed_tools = list(
- /obj/item/weapon/surgical/bonesetter = 100, \
- /obj/item/weapon/wrench = 75 \
+ /obj/item/weapon/surgical/bonesetter = 100
)
+ allowed_procs = list(IS_WRENCH = 75)
+
min_duration = 60
max_duration = 70
@@ -92,10 +95,11 @@
/datum/surgery_step/mend_skull
allowed_tools = list(
- /obj/item/weapon/surgical/bonesetter = 100, \
- /obj/item/weapon/wrench = 75 \
+ /obj/item/weapon/surgical/bonesetter = 100
)
+ allowed_procs = list(IS_WRENCH = 75)
+
min_duration = 60
max_duration = 70
@@ -130,9 +134,11 @@
/datum/surgery_step/finish_bone
allowed_tools = list(
- /obj/item/weapon/surgical/bonegel = 100, \
- /obj/item/weapon/screwdriver = 75
+ /obj/item/weapon/surgical/bonegel = 100
)
+
+ allowed_procs = list(IS_SCREWDRIVER = 75)
+
can_infect = 1
blood_level = 1
@@ -169,8 +175,9 @@
/datum/surgery_step/clamp_bone
allowed_tools = list(
- /obj/item/weapon/surgical/bone_clamp = 100
- )
+ /obj/item/weapon/surgical/bone_clamp = 100
+ )
+
can_infect = 1
blood_level = 1
diff --git a/code/modules/surgery/encased.dm b/code/modules/surgery/encased.dm
index 7bc33d75000..35136917064 100644
--- a/code/modules/surgery/encased.dm
+++ b/code/modules/surgery/encased.dm
@@ -20,8 +20,8 @@
/datum/surgery_step/open_encased/saw
allowed_tools = list(
- /obj/item/weapon/surgical/circular_saw = 100, \
- /obj/item/weapon/material/knife/machete/hatchet = 75
+ /obj/item/weapon/surgical/circular_saw = 100, \
+ /obj/item/weapon/material/knife/machete/hatchet = 75
)
min_duration = 50
@@ -69,10 +69,11 @@
/datum/surgery_step/open_encased/retract
allowed_tools = list(
- /obj/item/weapon/surgical/retractor = 100, \
- /obj/item/weapon/crowbar = 75
+ /obj/item/weapon/surgical/retractor = 100
)
+ allowed_procs = list(IS_CROWBAR = 75)
+
min_duration = 30
max_duration = 40
@@ -121,10 +122,11 @@
/datum/surgery_step/open_encased/close
allowed_tools = list(
- /obj/item/weapon/surgical/retractor = 100, \
- /obj/item/weapon/crowbar = 75
+ /obj/item/weapon/surgical/retractor = 100,
)
+ allowed_procs = list(IS_CROWBAR = 75)
+
min_duration = 20
max_duration = 40
@@ -178,10 +180,11 @@
/datum/surgery_step/open_encased/mend
allowed_tools = list(
- /obj/item/weapon/surgical/bonegel = 100, \
- /obj/item/weapon/screwdriver = 75
+ /obj/item/weapon/surgical/bonegel = 100
)
+ allowed_procs = list(IS_SCREWDRIVER = 75)
+
min_duration = 20
max_duration = 40
diff --git a/code/modules/surgery/face.dm b/code/modules/surgery/face.dm
index b3fae927bbd..30f50b14ecc 100644
--- a/code/modules/surgery/face.dm
+++ b/code/modules/surgery/face.dm
@@ -88,9 +88,11 @@
/datum/surgery_step/face/fix_face
allowed_tools = list(
- /obj/item/weapon/surgical/retractor = 100, \
- /obj/item/weapon/crowbar = 55, \
- /obj/item/weapon/material/kitchen/utensil/fork = 75)
+ /obj/item/weapon/surgical/retractor = 100, \
+ /obj/item/weapon/material/kitchen/utensil/fork = 75
+ )
+
+ allowed_procs = list(IS_CROWBAR = 55)
min_duration = 80
max_duration = 100
diff --git a/code/modules/surgery/generic.dm b/code/modules/surgery/generic.dm
index f74c7dda641..64de0aeef4f 100644
--- a/code/modules/surgery/generic.dm
+++ b/code/modules/surgery/generic.dm
@@ -28,9 +28,9 @@
/datum/surgery_step/generic/cut_open
allowed_tools = list(
- /obj/item/weapon/surgical/scalpel = 100, \
- /obj/item/weapon/material/knife = 75, \
- /obj/item/weapon/material/shard = 50, \
+ /obj/item/weapon/surgical/scalpel = 100, \
+ /obj/item/weapon/material/knife = 75, \
+ /obj/item/weapon/material/shard = 50, \
)
req_open = 0
@@ -72,10 +72,10 @@
/datum/surgery_step/generic/cut_with_laser
allowed_tools = list(
- /obj/item/weapon/surgical/scalpel/laser3 = 95, \
- /obj/item/weapon/surgical/scalpel/laser2 = 85, \
- /obj/item/weapon/surgical/scalpel/laser1 = 75, \
- /obj/item/weapon/melee/energy/sword = 5
+ /obj/item/weapon/surgical/scalpel/laser3 = 95, \
+ /obj/item/weapon/surgical/scalpel/laser2 = 85, \
+ /obj/item/weapon/surgical/scalpel/laser1 = 75, \
+ /obj/item/weapon/melee/energy/sword = 5
)
priority = 2
req_open = 0
@@ -118,8 +118,9 @@
/datum/surgery_step/generic/incision_manager
allowed_tools = list(
- /obj/item/weapon/surgical/scalpel/manager = 100
+ /obj/item/weapon/surgical/scalpel/manager = 100
)
+
priority = 2
req_open = 0
min_duration = 80
@@ -163,9 +164,9 @@
/datum/surgery_step/generic/clamp_bleeders
allowed_tools = list(
- /obj/item/weapon/surgical/hemostat = 100, \
- /obj/item/stack/cable_coil = 75, \
- /obj/item/device/assembly/mousetrap = 20
+ /obj/item/weapon/surgical/hemostat = 100, \
+ /obj/item/stack/cable_coil = 75, \
+ /obj/item/device/assembly/mousetrap = 20
)
min_duration = 40
@@ -202,11 +203,12 @@
/datum/surgery_step/generic/retract_skin
allowed_tools = list(
- /obj/item/weapon/surgical/retractor = 100, \
- /obj/item/weapon/crowbar = 75, \
- /obj/item/weapon/material/kitchen/utensil/fork = 50
+ /obj/item/weapon/surgical/retractor = 100, \
+ /obj/item/weapon/material/kitchen/utensil/fork = 50
)
+ allowed_procs = list(IS_CROWBAR = 75)
+
min_duration = 30
max_duration = 40
@@ -261,10 +263,10 @@
/datum/surgery_step/generic/cauterize
allowed_tools = list(
- /obj/item/weapon/surgical/cautery = 100, \
- /obj/item/clothing/mask/smokable/cigarette = 75, \
- /obj/item/weapon/flame/lighter = 50, \
- /obj/item/weapon/weldingtool = 25
+ /obj/item/weapon/surgical/cautery = 100, \
+ /obj/item/clothing/mask/smokable/cigarette = 75, \
+ /obj/item/weapon/flame/lighter = 50, \
+ /obj/item/weapon/weldingtool = 25
)
min_duration = 70
@@ -302,8 +304,8 @@
/datum/surgery_step/generic/amputate
allowed_tools = list(
- /obj/item/weapon/surgical/circular_saw = 100, \
- /obj/item/weapon/material/knife/machete/hatchet = 75
+ /obj/item/weapon/surgical/circular_saw = 100, \
+ /obj/item/weapon/material/knife/machete/hatchet = 75
)
req_open = 0
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index c8872e05ccf..8e21e9e8a37 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -44,9 +44,9 @@
/datum/surgery_step/cavity/make_space
allowed_tools = list(
- /obj/item/weapon/surgical/surgicaldrill = 100, \
- /obj/item/weapon/pen = 75, \
- /obj/item/stack/rods = 50
+ /obj/item/weapon/surgical/surgicaldrill = 100, \
+ /obj/item/weapon/pen = 75, \
+ /obj/item/stack/rods = 50
)
min_duration = 60
@@ -77,10 +77,10 @@
/datum/surgery_step/cavity/close_space
priority = 2
allowed_tools = list(
- /obj/item/weapon/surgical/cautery = 100, \
- /obj/item/clothing/mask/smokable/cigarette = 75, \
- /obj/item/weapon/flame/lighter = 50, \
- /obj/item/weapon/weldingtool = 25
+ /obj/item/weapon/surgical/cautery = 100, \
+ /obj/item/clothing/mask/smokable/cigarette = 75, \
+ /obj/item/weapon/flame/lighter = 50, \
+ /obj/item/weapon/weldingtool = 25
)
min_duration = 60
@@ -156,11 +156,12 @@
/datum/surgery_step/cavity/implant_removal
allowed_tools = list(
- /obj/item/weapon/surgical/hemostat = 100, \
- /obj/item/weapon/wirecutters = 75, \
- /obj/item/weapon/material/kitchen/utensil/fork = 20
+ /obj/item/weapon/surgical/hemostat = 100, \
+ /obj/item/weapon/material/kitchen/utensil/fork = 20
)
+ allowed_procs = list(IS_WIRECUTTER = 75)
+
min_duration = 80
max_duration = 100
diff --git a/code/modules/surgery/neck.dm b/code/modules/surgery/neck.dm
index 6cd347586b2..5b1522d60c2 100644
--- a/code/modules/surgery/neck.dm
+++ b/code/modules/surgery/neck.dm
@@ -59,9 +59,11 @@
priority = 3 //Do this instead of expanding the skull cavity
allowed_tools = list(
/obj/item/weapon/surgical/surgicaldrill = 100,
- /obj/item/weapon/screwdriver = 75,
/obj/item/weapon/melee/changeling/arm_blade = 15,
- /obj/item/weapon/pickaxe = 5)
+ /obj/item/weapon/pickaxe = 5
+ )
+
+ allowed_procs = list(IS_SCREWDRIVER = 75)
min_duration = 200 //Very. Very. Carefully.
max_duration = 300
@@ -100,9 +102,10 @@
priority = 3 //Do this instead of picking around for implants.
allowed_tools = list(
/obj/item/weapon/surgical/hemostat = 100,
- /obj/item/weapon/wirecutters = 60,
/obj/item/weapon/melee/changeling/claw = 40) //Surprisingly, claws are kind of okay at picking things out.
+ allowed_procs = list(IS_WIRECUTTER = 60)
+
min_duration = 90
max_duration = 120
@@ -216,9 +219,10 @@
priority = 3 //Do this instead of searching for objects in the skull.
allowed_tools = list(
/obj/item/weapon/surgical/hemostat = 100,
- /obj/item/weapon/wirecutters = 60,
/obj/item/weapon/melee/changeling/claw = 20) //Claws. Good for digging, not so much for moving.
+ allowed_procs = list(IS_WIRECUTTER = 60)
+
min_duration = 90
max_duration = 120
diff --git a/code/modules/surgery/organs_internal.dm b/code/modules/surgery/organs_internal.dm
index d54a4aff146..2f2e1cb44ac 100644
--- a/code/modules/surgery/organs_internal.dm
+++ b/code/modules/surgery/organs_internal.dm
@@ -20,9 +20,10 @@
/datum/surgery_step/internal/remove_embryo
allowed_tools = list(
/obj/item/weapon/surgical/hemostat = 100, \
- /obj/item/weapon/wirecutters = 75, \
/obj/item/weapon/material/kitchen/utensil/fork = 20
)
+
+ allowed_procs = list(IS_WIRECUTTER = 75)
blood_level = 2
min_duration = 80
@@ -212,10 +213,11 @@
allowed_tools = list(
/obj/item/weapon/surgical/hemostat = 100, \
- /obj/item/weapon/wirecutters = 75, \
/obj/item/weapon/material/kitchen/utensil/fork = 20
)
+ allowed_procs = list(IS_WIRECUTTER = 75)
+
min_duration = 60
max_duration = 80
diff --git a/code/modules/surgery/robotics.dm b/code/modules/surgery/robotics.dm
index 4debf4017c4..7fccfa8071c 100644
--- a/code/modules/surgery/robotics.dm
+++ b/code/modules/surgery/robotics.dm
@@ -28,10 +28,12 @@
/datum/surgery_step/robotics/unscrew_hatch
allowed_tools = list(
- /obj/item/weapon/screwdriver = 100,
/obj/item/weapon/coin = 50,
/obj/item/weapon/material/knife = 50
)
+
+ allowed_procs = list(IS_SCREWDRIVER = 100)
+
req_open = 0
min_duration = 90
@@ -66,10 +68,11 @@
/datum/surgery_step/robotics/open_hatch
allowed_tools = list(
/obj/item/weapon/surgical/retractor = 100,
- /obj/item/weapon/crowbar = 100,
/obj/item/weapon/material/kitchen/utensil = 50
)
+ allowed_procs = list(IS_CROWBAR = 100)
+
min_duration = 30
max_duration = 40
@@ -102,10 +105,11 @@
/datum/surgery_step/robotics/close_hatch
allowed_tools = list(
/obj/item/weapon/surgical/retractor = 100,
- /obj/item/weapon/crowbar = 100,
/obj/item/weapon/material/kitchen/utensil = 50
)
+ allowed_procs = list(IS_CROWBAR = 100)
+
min_duration = 70
max_duration = 100
@@ -148,7 +152,7 @@
/datum/surgery_step/robotics/repair_brute/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- if(istype(tool,/obj/item/weapon/weldingtool))
+ if(istype(tool, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/welder = tool
if(!welder.isOn() || !welder.remove_fuel(1,user))
return 0
@@ -188,7 +192,7 @@
/datum/surgery_step/robotics/repair_burn/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
if(..())
var/obj/item/organ/external/affected = target.get_organ(target_zone)
- if(istype(tool,/obj/item/stack/cable_coil/))
+ if(istype(tool, /obj/item/stack/cable_coil))
var/obj/item/stack/cable_coil/C = tool
if(affected.burn_dam == 0)
to_chat(user, "There are no burnt wires here!")
@@ -229,9 +233,10 @@
allowed_tools = list(
/obj/item/stack/nanopaste = 100, \
/obj/item/weapon/surgical/bonegel = 30, \
- /obj/item/weapon/screwdriver = 70, \
)
+ allowed_procs = list(IS_SCREWDRIVER = 100)
+
min_duration = 70
max_duration = 90
@@ -348,9 +353,7 @@
///////////////////////////////////////////////////////////////
/datum/surgery_step/robotics/attach_organ_robotic
- allowed_tools = list(
- /obj/item/weapon/screwdriver = 100,
- )
+ allowed_procs = list(IS_SCREWDRIVER = 100)
min_duration = 100
max_duration = 120
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index b06221e5c9d..837e10a5a0a 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -10,6 +10,10 @@
// type path referencing tools that can be used for this step, and how well are they suited for it
var/list/allowed_tools = null
+
+ // List of procs that can be called if allowed_tools fails
+ var/list/allowed_procs = null
+
// type paths referencing races that this step applies to.
var/list/allowed_species = null
var/list/disallowed_species = null
@@ -23,55 +27,73 @@
//How much blood this step can get on surgeon. 1 - hands, 2 - full body.
var/blood_level = 0
- //returns how well tool is suited for this step
- proc/tool_quality(obj/item/tool)
- for (var/T in allowed_tools)
- if (istype(tool,T))
- return allowed_tools[T]
+//returns how well tool is suited for this step
+/datum/surgery_step/proc/tool_quality(obj/item/tool)
+ for (var/T in allowed_tools)
+ if (istype(tool,T))
+ return allowed_tools[T]
+
+ for(var/P in allowed_procs)
+ switch(P)
+ if(IS_SCREWDRIVER)
+ if(tool.is_screwdriver())
+ return allowed_procs[P]
+ if(IS_CROWBAR)
+ if(tool.is_crowbar())
+ return allowed_procs[P]
+ if(IS_WIRECUTTER)
+ if(tool.is_wirecutter())
+ return allowed_procs[P]
+ if(IS_WRENCH)
+ if(tool.is_wrench())
+ return allowed_procs[P]
+ return 0
+
+
+// Checks if this step applies to the user mob at all
+/datum/surgery_step/proc/is_valid_target(mob/living/carbon/human/target)
+ if(!hasorgans(target))
return 0
- // Checks if this step applies to the user mob at all
- proc/is_valid_target(mob/living/carbon/human/target)
- if(!hasorgans(target))
- return 0
+ if(allowed_species)
+ for(var/species in allowed_species)
+ if(target.species.get_bodytype() == species)
+ return 1
- if(allowed_species)
- for(var/species in allowed_species)
- if(target.species.get_bodytype() == species)
- return 1
+ if(disallowed_species)
+ for(var/species in disallowed_species)
+ if(target.species.get_bodytype() == species)
+ return 0
- if(disallowed_species)
- for(var/species in disallowed_species)
- if(target.species.get_bodytype() == species)
- return 0
-
- return 1
+ return 1
- // checks whether this step can be applied with the given user and target
- proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
- return 0
+// checks whether this step can be applied with the given user and target
+/datum/surgery_step/proc/can_use(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ return 0
- // does stuff to begin the step, usually just printing messages. Moved germs transfering and bloodying here too
- proc/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
- var/obj/item/organ/external/affected = target.get_organ(target_zone)
- if (can_infect && affected)
- spread_germs_to_organ(affected, user)
- if (ishuman(user) && prob(60))
- var/mob/living/carbon/human/H = user
- if (blood_level)
- H.bloody_hands(target,0)
- if (blood_level > 1)
- H.bloody_body(target,0)
- return
+// does stuff to begin the step, usually just printing messages. Moved germs transfering and bloodying here too
+/datum/surgery_step/proc/begin_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ var/obj/item/organ/external/affected = target.get_organ(target_zone)
+ if (can_infect && affected)
+ spread_germs_to_organ(affected, user)
+ if (ishuman(user) && prob(60))
+ var/mob/living/carbon/human/H = user
+ if (blood_level)
+ H.bloody_hands(target,0)
+ if (blood_level > 1)
+ H.bloody_body(target,0)
+ return
+
+// does stuff to end the step, which is normally print a message + do whatever this step changes
+/datum/surgery_step/proc/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ return
+
+// stuff that happens when the step fails
+/datum/surgery_step/proc/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
+ return null
- // does stuff to end the step, which is normally print a message + do whatever this step changes
- proc/end_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
- return
- // stuff that happens when the step fails
- proc/fail_step(mob/living/user, mob/living/carbon/human/target, target_zone, obj/item/tool)
- return null
/proc/spread_germs_to_organ(var/obj/item/organ/external/E, var/mob/living/carbon/human/user)
if(!istype(user) || !istype(E)) return
diff --git a/code/modules/surgery/~defines.dm b/code/modules/surgery/~defines.dm
index 6b27ac56f5b..61f9b143f28 100644
--- a/code/modules/surgery/~defines.dm
+++ b/code/modules/surgery/~defines.dm
@@ -1 +1 @@
-#undef SURGERY_FAILURE
+#undef SURGERY_FAILURE
\ No newline at end of file
diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm
index 5a497972626..af34ab6b2b8 100644
--- a/code/modules/tables/tables.dm
+++ b/code/modules/tables/tables.dm
@@ -89,15 +89,15 @@
if(health < maxhealth)
switch(health / maxhealth)
if(0.0 to 0.5)
- user << "It looks severely damaged!"
+ to_chat(user, "It looks severely damaged!")
if(0.25 to 0.5)
- user << "It looks damaged!"
+ to_chat(user, "It looks damaged!")
if(0.5 to 1.0)
- user << "It has a few scrapes and dents."
+ to_chat(user, "It has a few scrapes and dents.")
/obj/structure/table/attackby(obj/item/weapon/W, mob/user)
- if(reinforced && istype(W, /obj/item/weapon/screwdriver))
+ if(reinforced && W.is_screwdriver())
remove_reinforced(W, user)
if(!reinforced)
update_desc()
@@ -105,7 +105,7 @@
update_material()
return 1
- if(carpeted && istype(W, /obj/item/weapon/crowbar))
+ if(carpeted && W.is_crowbar())
user.visible_message("\The [user] removes the carpet from \the [src].",
"You remove the carpet from \the [src].")
new /obj/item/stack/tile/carpet(loc)
@@ -122,9 +122,9 @@
update_icon()
return 1
else
- user << "You don't have enough carpet!"
+ to_chat(user, "You don't have enough carpet!")
- if(!reinforced && !carpeted && material && istype(W, /obj/item/weapon/wrench))
+ if(!reinforced && !carpeted && material && W.is_wrench())
remove_material(W, user)
if(!material)
update_connections(1)
@@ -135,14 +135,14 @@
update_material()
return 1
- if(!carpeted && !reinforced && !material && istype(W, /obj/item/weapon/wrench))
+ if(!carpeted && !reinforced && !material && W.is_wrench())
dismantle(W, user)
return 1
if(health < maxhealth && istype(W, /obj/item/weapon/weldingtool))
var/obj/item/weapon/weldingtool/F = W
if(F.welding)
- user << "You begin reparing damage to \the [src]."
+ to_chat(user, "You begin reparing damage to \the [src].")
playsound(src, F.usesound, 50, 1)
if(!do_after(user, 20 * F.toolspeed) || !F.remove_fuel(1, user))
return
@@ -197,19 +197,19 @@
/obj/structure/table/proc/reinforce_table(obj/item/stack/material/S, mob/user)
if(reinforced)
- user << "\The [src] is already reinforced!"
+ to_chat(user, "\The [src] is already reinforced!")
return
if(!can_reinforce)
- user << "\The [src] cannot be reinforced!"
+ to_chat(user, "\The [src] cannot be reinforced!")
return
if(!material)
- user << "Plate \the [src] before reinforcing it!"
+ to_chat(user, "Plate \the [src] before reinforcing it!")
return
if(flipped)
- user << "Put \the [src] back in place before reinforcing it!"
+ to_chat(user, "Put \the [src] back in place before reinforcing it!")
return
reinforced = common_material_add(S, user, "reinforc")
@@ -234,12 +234,12 @@
/obj/structure/table/proc/common_material_add(obj/item/stack/material/S, mob/user, verb) // Verb is actually verb without 'e' or 'ing', which is added. Works for 'plate'/'plating' and 'reinforce'/'reinforcing'.
var/material/M = S.get_material()
if(!istype(M))
- user << "You cannot [verb]e \the [src] with \the [S]."
+ to_chat(user, "You cannot [verb]e \the [src] with \the [S].")
return null
if(manipulating) return M
manipulating = 1
- user << "You begin [verb]ing \the [src] with [M.display_name]."
+ to_chat(user, "You begin [verb]ing \the [src] with [M.display_name].")
if(!do_after(user, 20) || !S.use(1))
manipulating = 0
return null
@@ -250,7 +250,7 @@
// Returns the material to set the table to.
/obj/structure/table/proc/common_material_remove(mob/user, material/M, delay, what, type_holding, sound)
if(!M.stack_type)
- user << "You are unable to remove the [what] from this [src]!"
+ to_chat(user, "You are unable to remove the [what] from this [src]!")
return M
if(manipulating) return M
@@ -268,13 +268,13 @@
manipulating = 0
return null
-/obj/structure/table/proc/remove_reinforced(obj/item/weapon/screwdriver/S, mob/user)
+/obj/structure/table/proc/remove_reinforced(obj/item/weapon/S, mob/user)
reinforced = common_material_remove(user, reinforced, 40 * S.toolspeed, "reinforcements", "screws", S.usesound)
-/obj/structure/table/proc/remove_material(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/proc/remove_material(obj/item/weapon/W, mob/user)
material = common_material_remove(user, material, 20 * W.toolspeed, "plating", "bolts", W.usesound)
-/obj/structure/table/proc/dismantle(obj/item/weapon/wrench/W, mob/user)
+/obj/structure/table/proc/dismantle(obj/item/W, mob/user)
if(manipulating) return
manipulating = 1
user.visible_message("\The [user] begins dismantling \the [src].",
@@ -459,7 +459,8 @@
*/
/proc/dirs_to_corner_states(list/dirs)
- if(!istype(dirs)) return
+ if(!istype(dirs))
+ return
var/list/ret = list(NORTHWEST, SOUTHEAST, NORTHEAST, SOUTHWEST)
diff --git a/code/modules/vehicles/cargo_train.dm b/code/modules/vehicles/cargo_train.dm
index f9c14af3a57..e8927197dcb 100644
--- a/code/modules/vehicles/cargo_train.dm
+++ b/code/modules/vehicles/cargo_train.dm
@@ -63,7 +63,7 @@
return ..()
/obj/vehicle/train/cargo/trolley/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if(open && istype(W, /obj/item/weapon/wirecutters))
+ if(open && W.is_wirecutter())
passenger_allowed = !passenger_allowed
user.visible_message("[user] [passenger_allowed ? "cuts" : "mends"] a cable in [src].","You [passenger_allowed ? "cut" : "mend"] the load limiter cable.")
else
diff --git a/code/modules/vehicles/vehicle.dm b/code/modules/vehicles/vehicle.dm
index 13dc84f0e45..3180ace6298 100644
--- a/code/modules/vehicles/vehicle.dm
+++ b/code/modules/vehicles/vehicle.dm
@@ -118,13 +118,13 @@
if(istype(W, /obj/item/weapon/hand_labeler))
return
if(mechanical)
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
if(!locked)
open = !open
update_icon()
- user << "Maintenance panel is now [open ? "opened" : "closed"]."
+ to_chat(user, "Maintenance panel is now [open ? "opened" : "closed"].")
playsound(src, W.usesound, 50, 1)
- else if(istype(W, /obj/item/weapon/crowbar) && cell && open)
+ else if(W.is_crowbar() && cell && open)
remove_cell(user)
else if(istype(W, /obj/item/weapon/cell) && !cell && open)
@@ -139,11 +139,11 @@
playsound(src, T.usesound, 50, 1)
user.visible_message("[user] repairs [src]!"," You repair [src]!")
else
- user << "Unable to repair with the maintenance panel closed."
+ to_chat(user, "Unable to repair with the maintenance panel closed.")
else
- user << "[src] does not need a repair."
+ to_chat(user, "[src] does not need a repair.")
else
- user << "Unable to repair while [src] is off."
+ to_chat(user, "Unable to repair while [src] is off.")
else if(hasvar(W,"force") && hasvar(W,"damtype"))
user.setClickCooldown(user.get_attack_speed(W))
@@ -237,7 +237,7 @@
emagged = 1
if(locked)
locked = 0
- user << "You bypass [src]'s controls."
+ to_chat(user, "You bypass [src]'s controls.")
return TRUE
/obj/vehicle/proc/explode()
@@ -300,7 +300,7 @@
C.forceMove(src)
cell = C
powercheck()
- usr << "You install [C] in [src]."
+ to_chat(usr, "You install [C] in [src].")
/obj/vehicle/proc/remove_cell(var/mob/living/carbon/human/H)
if(!mechanical)
@@ -308,7 +308,7 @@
if(!cell)
return
- usr << "You remove [cell] from [src]."
+ to_chat(usr, "You remove [cell] from [src].")
cell.forceMove(get_turf(H))
H.put_in_hands(cell)
cell = null
diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm
index 026bea5e5d9..7b7da041169 100644
--- a/code/modules/virus2/centrifuge.dm
+++ b/code/modules/virus2/centrifuge.dm
@@ -9,8 +9,8 @@
var/obj/item/weapon/reagent_containers/glass/beaker/vial/sample = null
var/datum/disease2/disease/virus2 = null
-/obj/machinery/computer/centrifuge/attackby(var/obj/O as obj, var/mob/user as mob)
- if(istype(O, /obj/item/weapon/screwdriver))
+/obj/machinery/computer/centrifuge/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(O.is_screwdriver())
return ..(O,user)
if(default_unfasten_wrench(user, O, 20))
@@ -18,7 +18,7 @@
if(istype(O,/obj/item/weapon/reagent_containers/glass/beaker/vial))
if(sample)
- user << "\The [src] is already loaded."
+ to_chat(user, "\The [src] is already loaded.")
return
sample = O
diff --git a/code/modules/virus2/diseasesplicer.dm b/code/modules/virus2/diseasesplicer.dm
index d9a875050d1..31cb84d6657 100644
--- a/code/modules/virus2/diseasesplicer.dm
+++ b/code/modules/virus2/diseasesplicer.dm
@@ -11,8 +11,8 @@
var/splicing = 0
var/scanning = 0
-/obj/machinery/computer/diseasesplicer/attackby(var/obj/I as obj, var/mob/user as mob)
- if(istype(I, /obj/item/weapon/screwdriver))
+/obj/machinery/computer/diseasesplicer/attackby(var/obj/item/I as obj, var/mob/user as mob)
+ if(I.is_screwdriver())
return ..(I,user)
if(default_unfasten_wrench(user, I, 20))
@@ -21,7 +21,7 @@
if(istype(I,/obj/item/weapon/virusdish))
var/mob/living/carbon/c = user
if (dish)
- user << "\The [src] is already loaded."
+ to_chat(user, "\The [src] is already loaded.")
return
dish = I
@@ -29,7 +29,7 @@
I.loc = src
if(istype(I,/obj/item/weapon/diseasedisk))
- user << "You upload the contents of the disk onto the buffer."
+ to_chat(user, "You upload the contents of the disk onto the buffer.")
memorybank = I:effect
species_buffer = I:species
analysed = I:analysed
diff --git a/code/modules/xenoarcheaology/artifacts/replicator.dm b/code/modules/xenoarcheaology/artifacts/replicator.dm
index c4324b30ece..a0f0ab92da2 100644
--- a/code/modules/xenoarcheaology/artifacts/replicator.dm
+++ b/code/modules/xenoarcheaology/artifacts/replicator.dm
@@ -45,7 +45,7 @@
/obj/item/weapon/material/knife/butch,
/obj/item/weapon/caution,
/obj/item/weapon/caution/cone,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/weapon/clipboard,
/obj/item/weapon/cell,
/obj/item/weapon/surgical/circular_saw,
@@ -59,9 +59,9 @@
/obj/item/weapon/pickaxe,
/obj/item/weapon/shovel,
/obj/item/weapon/weldingtool,
- /obj/item/weapon/wirecutters,
- /obj/item/weapon/wrench,
- /obj/item/weapon/screwdriver,
+ /obj/item/weapon/tool/wirecutters,
+ /obj/item/weapon/tool/wrench,
+ /obj/item/weapon/tool/screwdriver,
/obj/item/weapon/grenade/chem_grenade/cleaner,
/obj/item/weapon/grenade/chem_grenade/metalfoam)
diff --git a/code/modules/xenoarcheaology/finds/find_spawning.dm b/code/modules/xenoarcheaology/finds/find_spawning.dm
index 42e8408c458..39cf1776e60 100644
--- a/code/modules/xenoarcheaology/finds/find_spawning.dm
+++ b/code/modules/xenoarcheaology/finds/find_spawning.dm
@@ -146,11 +146,11 @@
if(13)
item_type = "tool"
if(prob(25))
- new_item = new /obj/item/weapon/wrench(src.loc)
+ new_item = new /obj/item/weapon/tool/wrench(src.loc)
else if(prob(25))
- new_item = new /obj/item/weapon/crowbar(src.loc)
+ new_item = new /obj/item/weapon/tool/crowbar(src.loc)
else
- new_item = new /obj/item/weapon/screwdriver(src.loc)
+ new_item = new /obj/item/weapon/tool/screwdriver(src.loc)
additional_desc = "[pick("It doesn't look safe.",\
"You wonder what it was used for",\
"There appear to be [pick("dark red","dark purple","dark green","dark blue")] stains on it")]."
@@ -417,11 +417,11 @@
var/list/alien_stuff = list(
/obj/item/device/multitool/alien,
/obj/item/stack/cable_coil/alien,
- /obj/item/weapon/crowbar/alien,
- /obj/item/weapon/screwdriver/alien,
+ /obj/item/weapon/tool/crowbar/alien,
+ /obj/item/weapon/tool/screwdriver/alien,
/obj/item/weapon/weldingtool/alien,
- /obj/item/weapon/wirecutters/alien,
- /obj/item/weapon/wrench/alien,
+ /obj/item/weapon/tool/wirecutters/alien,
+ /obj/item/weapon/tool/wrench/alien,
/obj/item/weapon/surgical/FixOVein/alien,
/obj/item/weapon/surgical/bone_clamp/alien,
/obj/item/weapon/surgical/cautery/alien,
diff --git a/code/modules/xenoarcheaology/tools/suspension_generator.dm b/code/modules/xenoarcheaology/tools/suspension_generator.dm
index ac56f7de921..c85307f3ee3 100644
--- a/code/modules/xenoarcheaology/tools/suspension_generator.dm
+++ b/code/modules/xenoarcheaology/tools/suspension_generator.dm
@@ -24,7 +24,7 @@
M.weakened = max(M.weakened, 3)
cell.charge -= power_use
if(prob(5))
- M << "[pick("You feel tingly","You feel like floating","It is hard to speak","You can barely move")]."
+ to_chat(M, "[pick("You feel tingly","You feel like floating","It is hard to speak","You can barely move")].")
for(var/obj/item/I in T)
if(!suspension_field.contents.len)
@@ -81,7 +81,7 @@
if(anchored)
activate()
else
- usr << "You are unable to activate [src] until it is properly secured on the ground."
+ to_chat(usr, "You are unable to activate [src] until it is properly secured on the ground.")
else
deactivate()
else if(href_list["insertcard"])
@@ -91,9 +91,9 @@
I.loc = src
auth_card = I
if(attempt_unlock(I, usr))
- usr << "You insert [I], the console flashes \'Access granted.\'"
+ to_chat(usr, "You insert [I], the console flashes \'Access granted.\'")
else
- usr << "You insert [I], the console flashes \'Access denied.\'"
+ to_chat(usr, "You insert [I], the console flashes \'Access denied.\'")
else if(href_list["ejectcard"])
if(auth_card)
if(ishuman(usr))
@@ -122,44 +122,44 @@
icon_state = "suspension0"
cell = null
- user << "You remove the power cell"
+ to_chat(user, "You remove the power cell")
/obj/machinery/suspension_gen/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(!locked && !suspension_field && default_deconstruction_screwdriver(user, W))
return
- else if (istype(W, /obj/item/weapon/wrench))
+ else if(W.is_wrench())
if(!suspension_field)
if(anchored)
anchored = 0
else
anchored = 1
playsound(loc, W.usesound, 50, 1)
- user << "You wrench the stabilising legs [anchored ? "into place" : "up against the body"]."
+ to_chat(user, "You wrench the stabilising legs [anchored ? "into place" : "up against the body"].")
if(anchored)
desc = "It is resting securely on four stubby legs."
else
desc = "It has stubby legs bolted up against it's body for stabilising."
else
- user << "You are unable to secure [src] while it is active!"
+ to_chat(user, "You are unable to secure [src] while it is active!")
else if (istype(W, /obj/item/weapon/cell))
if(panel_open)
if(cell)
- user << "There is a power cell already installed."
+ to_chat(user, "There is a power cell already installed.")
else
user.drop_item()
W.loc = src
cell = W
- user << "You insert the power cell."
+ to_chat(user, "You insert the power cell.")
icon_state = "suspension1"
else if(istype(W, /obj/item/weapon/card))
var/obj/item/weapon/card/I = W
if(!auth_card)
if(attempt_unlock(I, user))
- user << "You swipe [I], the console flashes \'Access granted.\'"
+ to_chat(user, "You swipe [I], the console flashes \'Access granted.\'")
else
- user << "You swipe [I], console flashes \'Access denied.\'"
+ to_chat(user, "You swipe [I], console flashes \'Access denied.\'")
else
- user << "Remove [auth_card] first."
+ to_chat(user, "Remove [auth_card] first.")
/obj/machinery/suspension_gen/proc/attempt_unlock(var/obj/item/weapon/card/C, var/mob/user)
if(!panel_open)
@@ -207,7 +207,7 @@
var/turf/T = get_turf(suspension_field)
for(var/mob/living/M in T)
- M << "You no longer feel like floating."
+ to_chat(M, "You no longer feel like floating.")
M.weakened = min(M.weakened, 3)
src.visible_message("\icon[src] [src] deactivates with a gentle shudder.")
@@ -225,7 +225,7 @@
set category = "Object"
if(anchored)
- usr << "You cannot rotate [src], it has been firmly fixed to the floor."
+ to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.")
else
set_dir(turn(dir, 90))
@@ -235,7 +235,7 @@
set category = "Object"
if(anchored)
- usr << "You cannot rotate [src], it has been firmly fixed to the floor."
+ to_chat(usr, "You cannot rotate [src], it has been firmly fixed to the floor.")
else
set_dir(turn(dir, -90))
diff --git a/code/modules/xenobio2/machinery/core_extractor.dm b/code/modules/xenobio2/machinery/core_extractor.dm
index e772558fcc8..8bb5bc42fbc 100644
--- a/code/modules/xenobio2/machinery/core_extractor.dm
+++ b/code/modules/xenobio2/machinery/core_extractor.dm
@@ -32,16 +32,16 @@
/obj/machinery/slime/extractor/attackby(var/obj/item/W, var/mob/user)
//Let's try to deconstruct first.
- if(istype(W, /obj/item/weapon/screwdriver) && !inuse)
+ if(W.is_screwdriver() && !inuse)
default_deconstruction_screwdriver(user, W)
return
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
default_deconstruction_crowbar(user, W)
return
if(panel_open)
- user << "Close the panel first!"
+ to_chat(user, "Close the panel first!")
var/obj/item/weapon/grab/G = W
@@ -49,7 +49,7 @@
return ..()
if(G.state < 2)
- user << "You need a better grip to do that!"
+ to_chat(user, "You need a better grip to do that!")
return
move_into_extractor(user,G.affecting)
@@ -62,20 +62,20 @@
/obj/machinery/slime/extractor/proc/move_into_extractor(var/mob/user,var/mob/living/victim)
if(src.occupant)
- user << "The core extractor is full, empty it first!"
+ to_chat(user, "The core extractor is full, empty it first!")
return
if(inuse)
- user << "The core extractor is locked and running, wait for it to finish."
+ to_chat(user, "The core extractor is locked and running, wait for it to finish.")
return
- if(!(istype(victim, /mob/living/simple_animal/xeno/slime)) )
- user << "This is not a suitable subject for the core extractor!"
+ if(!(istype(victim, /mob/living/simple_animal/xeno/slime)))
+ to_chat(user, "This is not a suitable subject for the core extractor!")
return
var/mob/living/simple_animal/xeno/slime/S = victim
if(S.is_child)
- user << "This subject is not developed enough for the core extractor!"
+ to_chat(user, "This subject is not developed enough for the core extractor!")
return
user.visible_message("[user] starts to put [victim] into the core extractor!")
diff --git a/code/modules/xenobio2/machinery/gene_manipulators.dm b/code/modules/xenobio2/machinery/gene_manipulators.dm
index 98c2fa8160e..da12c49d682 100644
--- a/code/modules/xenobio2/machinery/gene_manipulators.dm
+++ b/code/modules/xenobio2/machinery/gene_manipulators.dm
@@ -24,7 +24,7 @@
if(genes.len)
var/choice = alert(user, "Are you sure you want to wipe the disk?", "Xenobiological Data", "No", "Yes")
if(src && user && genes && choice && choice == "Yes" && user.Adjacent(get_turf(src)))
- user << "You wipe the disk data."
+ to_chat(user, "You wipe the disk data.")
name = initial(name)
desc = initial(name)
genes = list()
@@ -67,24 +67,24 @@
return
if(istype(W,/obj/item/weapon/disk/xenobio))
if(loaded_disk)
- user << "There is already a data disk loaded."
+ to_chat(user, "There is already a data disk loaded.")
return
else
var/obj/item/weapon/disk/xenobio/B = W
if(B.genes && B.genes.len)
if(!disk_needs_genes)
- user << "That disk already has gene data loaded."
+ to_chat(user, "That disk already has gene data loaded.")
return
else
if(disk_needs_genes)
- user << "That disk does not have any gene data loaded."
+ to_chat(user, "That disk does not have any gene data loaded.")
return
user.drop_from_inventory(W)
W.forceMove(src)
loaded_disk = W
- user << "You load [W] into [src]."
+ to_chat(user, "You load [W] into [src].")
return
..()
@@ -137,14 +137,14 @@
/obj/machinery/xenobio/extractor/attackby(obj/item/weapon/W as obj, mob/user as mob)
if(istype(W,/obj/item/xenoproduct))
if(product)
- user << "There is already a xenobiological product loaded."
+ to_chat(user, "There is already a xenobiological product loaded.")
return
else
var/obj/item/xenoproduct/B = W
user.drop_from_inventory(B)
B.forceMove(src)
product = B
- user << "You load [B] into [src]."
+ to_chat(user, "You load [B] into [src].")
return
..()
@@ -280,7 +280,7 @@
if(istype(W,/obj/item/weapon/grab))
var/obj/item/weapon/grab/G = W
if(occupant)
- user << "There is already an organism loaded."
+ to_chat(user, "There is already an organism loaded.")
return
else
if(isxeno(G.affecting))
@@ -289,9 +289,9 @@
user.drop_from_inventory(G)
X.forceMove(src)
occupant = X
- user << "You load [X] into [src]."
+ to_chat(user, "You load [X] into [src]."
else
- user << "This specimen is incompatible with the machinery!"
+ to_chat(user, "This specimen is incompatible with the machinery!")
return
..()
@@ -374,15 +374,15 @@
/obj/machinery/xenobio/editor/proc/move_into_editor(var/mob/user,var/mob/living/victim)
if(src.occupant)
- user << "The [src] is full, empty it first!"
+ to_chat(user, "The [src] is full, empty it first!")
return
if(in_use)
- user << "The [src] is locked and running, wait for it to finish."
+ to_chat(user, "The [src] is locked and running, wait for it to finish.")
return
if(!(istype(victim, /mob/living/simple_animal/xeno/slime)) )
- user << "This is not a suitable subject for the [src]!"
+ to_chat(user, "This is not a suitable subject for the [src]!")
return
user.visible_message("[user] starts to put [victim] into the [src]!")
diff --git a/code/modules/xenobio2/machinery/injector.dm b/code/modules/xenobio2/machinery/injector.dm
index dc9bad89f1b..c181f1f1048 100644
--- a/code/modules/xenobio2/machinery/injector.dm
+++ b/code/modules/xenobio2/machinery/injector.dm
@@ -93,11 +93,11 @@
/obj/machinery/xenobio2/manualinjector/attackby(var/obj/item/W, var/mob/user)
//Let's try to deconstruct first.
- if(istype(W, /obj/item/weapon/screwdriver))
+ if(W.is_screwdriver())
default_deconstruction_screwdriver(user, W)
return
- if(istype(W, /obj/item/weapon/crowbar) && !occupant)
+ if(W.is_crowbar() && !occupant)
default_deconstruction_crowbar(user, W)
return
diff --git a/code/modules/xenobio2/machinery/slime_replicator.dm b/code/modules/xenobio2/machinery/slime_replicator.dm
index 077e3300088..8fb54929fe4 100644
--- a/code/modules/xenobio2/machinery/slime_replicator.dm
+++ b/code/modules/xenobio2/machinery/slime_replicator.dm
@@ -30,11 +30,11 @@
/obj/machinery/slime/replicator/attackby(var/obj/item/W, var/mob/user)
//Let's try to deconstruct first.
- if(istype(W, /obj/item/weapon/screwdriver) && !inuse)
+ if(W.is_screwdriver() && !inuse)
default_deconstruction_screwdriver(user, W)
return
- if(istype(W, /obj/item/weapon/crowbar))
+ if(W.is_crowbar())
default_deconstruction_crowbar(user, W)
return
diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm
index 25903db1abe..47dda061475 100644
--- a/maps/northern_star/polaris-1.dmm
+++ b/maps/northern_star/polaris-1.dmm
@@ -746,7 +746,7 @@
"aor" = (/obj/machinery/libraryscanner,/turf/simulated/floor/wood,/area/library)
"aos" = (/obj/structure/table/woodentable,/obj/item/device/taperecorder{pixel_y = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/newscaster{pixel_x = 0; pixel_y = -28},/obj/item/device/retail_scanner/civilian{icon_state = "retail_idle"; dir = 1},/obj/item/device/camera,/obj/item/device/tape,/turf/simulated/floor/carpet,/area/library)
"aot" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen/invisible,/obj/item/clothing/under/suit_jacket/red,/obj/machinery/light,/obj/item/weapon/barcodescanner,/turf/simulated/floor/carpet,/area/library)
-"aou" = (/obj/structure/table/rack,/obj/item/weapon/storage/firstaid/adv,/obj/item/bodybag/cryobag,/obj/item/weapon/crowbar,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/sign/poster{pixel_y = 32},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
+"aou" = (/obj/structure/table/rack,/obj/item/weapon/storage/firstaid/adv,/obj/item/bodybag/cryobag,/obj/item/weapon/tool/crowbar,/obj/effect/floor_decal/corner/paleblue/full{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/sign/poster{pixel_y = 32},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
"aov" = (/obj/effect/floor_decal/corner/paleblue{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
"aow" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
"aox" = (/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station_starboard)
@@ -887,7 +887,7 @@
"arc" = (/obj/structure/closet/secure_closet/security,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/glasses/hud/security,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"ard" = (/obj/structure/closet/secure_closet/security,/obj/machinery/light,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/glasses/hud/security,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"are" = (/obj/structure/table/standard,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/accessory/badge/holo,/obj/item/clothing/accessory/badge/holo,/obj/item/clothing/accessory/badge/holo/cord,/obj/effect/floor_decal/corner/red/full,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
-"arf" = (/obj/structure/table/standard,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
+"arf" = (/obj/structure/table/standard,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"arg" = (/obj/structure/curtain/open/shower/security,/obj/machinery/shower{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/northleft{name = "Shower"; req_access = list()},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"arh" = (/obj/structure/curtain/open/shower/security,/obj/machinery/shower{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northright{dir = 1; name = "Shower"; req_access = list()},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
"ari" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/tiled/freezer,/area/security/security_bathroom)
@@ -1114,7 +1114,7 @@
"avv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/security_equiptment_storage)
"avw" = (/obj/machinery/computer/prisoner,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/warden)
"avx" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/floor_decal/industrial/outline/grey,/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled/dark,/area/security/warden)
-"avy" = (/obj/structure/table/reinforced,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/security{c_tag = "SEC - Warden's Office"},/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/weapon/wrench,/obj/item/device/retail_scanner/security,/turf/simulated/floor/tiled/dark,/area/security/warden)
+"avy" = (/obj/structure/table/reinforced,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/security{c_tag = "SEC - Warden's Office"},/obj/item/weapon/tool/crowbar,/obj/item/device/radio/off,/obj/item/weapon/tool/wrench,/obj/item/device/retail_scanner/security,/turf/simulated/floor/tiled/dark,/area/security/warden)
"avz" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/light_switch{pixel_x = 14; pixel_y = 24},/obj/machinery/photocopier,/turf/simulated/floor/tiled/dark,/area/security/warden)
"avA" = (/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Warden's Office"},/turf/simulated/floor/tiled/dark,/area/security/warden)
"avB" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/folder/red,/obj/item/weapon/pen,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/dark,/area/security/warden)
@@ -1138,7 +1138,7 @@
"avT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/corner/red{dir = 4},/turf/simulated/floor/tiled,/area/security/security_cell_hallway)
"avU" = (/obj/machinery/computer/area_atmos/area,/turf/simulated/floor,/area/security/riot_control)
"avV" = (/obj/machinery/atmospherics/binary/pump,/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor,/area/security/riot_control)
-"avW" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/item/weapon/wrench,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/security/riot_control)
+"avW" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/item/weapon/tool/wrench,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/security/riot_control)
"avX" = (/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor,/area/maintenance/security_starboard)
"avY" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor,/area/maintenance/security_starboard)
"avZ" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor,/area/maintenance/security_starboard)
@@ -2117,11 +2117,11 @@
"aOK" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two)
"aOL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two)
"aOM" = (/obj/machinery/camera/network/northern_star{c_tag = "Hall - Recreation Aft"; dir = 4},/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled,/area/crew_quarters/recreation_area_hallway)
-"aON" = (/obj/item/inflatable/door/torn,/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/maintenance/pool)
+"aON" = (/obj/item/inflatable/door/torn,/obj/item/weapon/tool/screwdriver,/turf/simulated/floor,/area/maintenance/pool)
"aOO" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = -28; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aOP" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aOQ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "large_escape_pod_2"; pixel_x = 26; pixel_y = -26; tag_door = "large_escape_pod_2_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
-"aOR" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/random/medical/lite,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
+"aOR" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/obj/random/medical/lite,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aOS" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aOT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aOU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/substation/security)
@@ -2735,13 +2735,13 @@
"baE" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/emergency/eva)
"baF" = (/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3},/obj/structure/table/reinforced,/obj/effect/floor_decal/industrial/warning,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/emergency/eva)
"baG" = (/obj/machinery/suit_storage_unit/standard_unit,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/emergency/eva)
-"baH" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/camera/network/civilian{c_tag = "CIV - Emergency EVA"; dir = 1},/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/emergency/eva)
+"baH" = (/obj/structure/table/reinforced,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/industrial/warning,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/camera/network/civilian{c_tag = "CIV - Emergency EVA"; dir = 1},/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/emergency/eva)
"baI" = (/obj/structure/table/woodentable,/obj/machinery/light,/obj/effect/floor_decal/corner/brown{dir = 10},/obj/random/maintenance/engineering,/obj/item/weapon/storage/belt/utility,/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
"baJ" = (/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
"baK" = (/obj/effect/floor_decal/corner/brown/full{dir = 4},/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
"baL" = (/obj/effect/floor_decal/corner/yellow/full,/obj/effect/decal/cleanable/blood/oil,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
"baM" = (/obj/effect/floor_decal/corner/yellow{dir = 10},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
-"baN" = (/obj/effect/floor_decal/corner/yellow{dir = 10},/obj/structure/table/marble,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/taperoll/engineering,/obj/item/weapon/crowbar,/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
+"baN" = (/obj/effect/floor_decal/corner/yellow{dir = 10},/obj/structure/table/marble,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/taperoll/engineering,/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled/white,/area/ai_monitored/storage/emergency/eva)
"baO" = (/obj/structure/table/marble,/turf/simulated/floor/tiled/yellow,/area/ai_monitored/storage/emergency/eva)
"baP" = (/obj/structure/closet/crate/freezer,/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
"baQ" = (/obj/structure/closet/crate/freezer,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/freezer,/area/medical/surgery_storage)
@@ -2984,7 +2984,7 @@
"bft" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/item/weapon/folder/white,/obj/item/weapon/pen,/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/effect/floor_decal/corner/pink{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"bfu" = (/obj/structure/filingcabinet/medical{desc = "A large cabinet with hard copy medical records."; name = "Medical Records"},/obj/machinery/camera/network/medbay{c_tag = "MED - Examination Room"},/obj/effect/floor_decal/corner/pink{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/exam_room)
"bfv" = (/obj/structure/closet/secure_closet/medical1,/obj/effect/floor_decal/corner/pink/full{dir = 1},/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/exam_room)
-"bfw" = (/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/cryo)
+"bfw" = (/obj/item/weapon/tool/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/cryo)
"bfx" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/medical/cryo)
"bfy" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/medical/cryo)
"bfz" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
@@ -3337,7 +3337,7 @@
"bmi" = (/obj/structure/table/standard,/obj/item/weapon/hand_labeler,/obj/item/weapon/pen,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/effect/floor_decal/corner/purple{dir = 5},/turf/simulated/floor/tiled/white,/area/rnd/lab)
"bmj" = (/obj/item/weapon/stock_parts/console_screen,/obj/structure/table/standard,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/effect/floor_decal/corner/purple/full{dir = 1},/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/machinery/recharger{pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/lab)
"bmk" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
-"bml" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar,/turf/simulated/floor/tiled,/area/teleporter)
+"bml" = (/obj/structure/closet/crate,/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled,/area/teleporter)
"bmm" = (/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/teleporter)
"bmn" = (/obj/structure/table/standard,/obj/structure/flora/pottedplant{icon_state = "plant-09"; name = "Steve"; pixel_y = 15},/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled/dark,/area/ai)
"bmo" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled/dark,/area/ai)
@@ -3780,7 +3780,7 @@
"buJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buK" = (/obj/effect/floor_decal/corner/paleblue{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"buL" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/effect/floor_decal/corner/paleblue/full{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
-"buM" = (/obj/machinery/clonepod{!INVALID_VAR! = 600},/obj/effect/floor_decal/corner/mauve/full,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
+"buM" = (/obj/machinery/clonepod/full,/obj/effect/floor_decal/corner/mauve/full,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"buN" = (/obj/machinery/computer/cloning,/obj/effect/floor_decal/corner/mauve{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"buO" = (/obj/machinery/dna_scannernew,/obj/effect/floor_decal/corner/mauve{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
"buP" = (/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning)
@@ -4157,7 +4157,7 @@
"bBW" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 10},/obj/structure/table/reinforced,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bBX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bBY" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
-"bBZ" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/crowbar/red,/obj/item/clothing/glasses/science,/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
+"bBZ" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar/red,/obj/item/clothing/glasses/science,/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bCa" = (/obj/structure/table/reinforced,/obj/machinery/button/ignition{id = "Xenobio"; pixel_x = -6; pixel_y = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bCb" = (/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = 32; pixel_y = 0},/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/purple,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bCc" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/camera/network/research{c_tag = "SCI - Research Hallway Center"; dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/research)
@@ -4277,7 +4277,7 @@
"bEm" = (/obj/structure/closet/secure_closet/hydroponics,/obj/effect/floor_decal/corner/lime/full{dir = 8},/turf/simulated/floor/tiled,/area/hydroponics)
"bEn" = (/obj/effect/floor_decal/corner/lime{dir = 5},/obj/structure/closet/secure_closet/hydroponics,/turf/simulated/floor/tiled,/area/hydroponics)
"bEo" = (/obj/effect/floor_decal/corner/lime{dir = 5},/obj/structure/closet/secure_closet/hydroponics,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics)
-"bEp" = (/obj/machinery/alarm{pixel_y = 22},/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/crowbar,/obj/effect/floor_decal/corner/lime/full{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics)
+"bEp" = (/obj/machinery/alarm{pixel_y = 22},/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/tool/crowbar,/obj/effect/floor_decal/corner/lime/full{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics)
"bEq" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/maintenance{name = "Hydroponics Maintenance"; req_access = list(35)},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor,/area/hydroponics)
"bEr" = (/obj/machinery/navbeacon/delivery/south{location = "Hydroponics"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/door/firedoor/border_only,/obj/effect/floor_decal/industrial/loading,/turf/simulated/floor/tiled,/area/hydroponics)
"bEs" = (/obj/structure/kitchenspike,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/kitchen)
@@ -4685,7 +4685,7 @@
"bMe" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/table/standard,/obj/item/device/robotanalyzer,/obj/item/device/robotanalyzer,/obj/item/device/mmi/digital/robot,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMg" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/industrial/warning{dir = 1},/turf/simulated/floor/tiled,/area/assembly/robotics)
-"bMh" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/effect/floor_decal/corner/pink{dir = 6},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/multitool{pixel_x = 3},/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/turf/simulated/floor/tiled,/area/assembly/robotics)
+"bMh" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/effect/floor_decal/corner/pink{dir = 6},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/multitool{pixel_x = 3},/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/turf/simulated/floor/tiled,/area/assembly/robotics)
"bMi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Biohazard"; name = "Biohazard Shutter"; opacity = 0},/turf/simulated/floor/plating,/area/assembly/robotics)
"bMj" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/central_four)
"bMk" = (/obj/structure/closet/secure_closet/hop2,/obj/effect/floor_decal/corner/blue{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
@@ -4725,7 +4725,7 @@
"bMS" = (/obj/effect/floor_decal/corner/beige{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"bMT" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/corner/beige{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"bMU" = (/obj/effect/floor_decal/corner/beige{dir = 5},/obj/structure/sink{dir = 2; icon_state = "sink"; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
-"bMV" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/screwdriver,/obj/effect/floor_decal/corner/beige{dir = 5},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 1; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
+"bMV" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/tool/screwdriver,/obj/effect/floor_decal/corner/beige{dir = 5},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 1; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"bMW" = (/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = 0; pixel_y = 24; pixel_z = 0},/obj/machinery/light_switch{pixel_x = 12; pixel_y = 25},/obj/effect/floor_decal/corner/beige{dir = 5},/obj/structure/table/reinforced,/obj/item/weapon/packageWrap,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"bMX" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/medical/chemistry)
"bMY" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/closet/secure_closet/paramedic,/obj/random/medical,/obj/random/medical,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
@@ -5060,7 +5060,7 @@
"bTp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/camera/network/research{c_tag = "SCI - Xenoflora"; dir = 2},/turf/simulated/floor/tiled/hydro,/area/rnd/xenobiology/xenoflora)
"bTq" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/hydro,/area/rnd/xenobiology/xenoflora)
"bTr" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
-"bTs" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/light{dir = 1},/obj/item/weapon/wrench,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
+"bTs" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/light{dir = 1},/obj/item/weapon/tool/wrench,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
"bTt" = (/obj/machinery/firealarm{dir = 2; pixel_y = 24},/obj/machinery/biogenerator,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
"bTu" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/seed_extractor,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
"bTv" = (/obj/machinery/reagentgrinder,/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/rnd/xenobiology/xenoflora)
@@ -5068,7 +5068,7 @@
"bTx" = (/obj/structure/table/standard,/obj/machinery/light,/obj/structure/closet/secure_closet/medical_wall{name = "anesthetic closet"; pixel_x = -32; req_access = list(29)},/obj/item/weapon/tank/anesthetic,/obj/item/weapon/tank/anesthetic,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/breath/medical,/obj/item/weapon/storage/box/gloves,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bTy" = (/obj/machinery/optable{name = "Robotics Operating Table"},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bTz" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
-"bTA" = (/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/hemostat,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
+"bTA" = (/obj/structure/table/standard,/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/hemostat,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bTB" = (/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/light,/obj/machinery/computer/operating{name = "Robotics Operating Computer"},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bTC" = (/obj/structure/table/standard,/obj/machinery/newscaster{pixel_x = 28; pixel_y = 1},/obj/machinery/cell_charger,/turf/simulated/floor/tiled,/area/assembly/robotics)
"bTD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/hallway/primary/central_four)
@@ -5201,7 +5201,7 @@
"bWa" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 2; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 0; pixel_y = -21},/obj/structure/closet/secure_closet/medical1,/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bWb" = (/obj/effect/floor_decal/corner/pink{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bWc" = (/obj/effect/floor_decal/corner/pink{dir = 6},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
-"bWd" = (/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/structure/sign/poster{pixel_x = 0; pixel_y = -32},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
+"bWd" = (/obj/structure/table/rack,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/roller,/obj/item/roller,/obj/item/roller,/obj/structure/sign/poster{pixel_x = 0; pixel_y = -32},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"bWe" = (/obj/effect/floor_decal/corner/pink/full,/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/machinery/light,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/medical/patient_c)
"bWf" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_c)
"bWg" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/patient_c)
@@ -5489,7 +5489,7 @@
"cbC" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"cbD" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/wood,/area/crew_quarters/captain)
"cbE" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/wood,/area/crew_quarters/captain)
-"cbF" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/barman_recipes,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/weapon/screwdriver,/obj/item/weapon/flame/lighter/zippo,/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/obj/machinery/button/remote/blast_door{id = "bar"; name = "Bar Shutters"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/lino,/area/crew_quarters/bar)
+"cbF" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/barman_recipes,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/weapon/tool/screwdriver,/obj/item/weapon/flame/lighter/zippo,/obj/machinery/light_switch{pixel_x = -36; pixel_y = 0},/obj/machinery/button/remote/blast_door{id = "bar"; name = "Bar Shutters"; pixel_x = -26; pixel_y = 0},/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cbG" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cbH" = (/obj/item/weapon/stool/padded,/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cbI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/neutral,/area/crew_quarters/cafeteria)
@@ -5739,7 +5739,7 @@
"cgs" = (/obj/machinery/portable_atmospherics/powered/scrubber,/turf/simulated/floor,/area/maintenance/medbay_aft)
"cgt" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/medbay_aft)
"cgu" = (/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
-"cgv" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor,/area/maintenance/medbay_aft)
+"cgv" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor,/area/maintenance/medbay_aft)
"cgw" = (/turf/space,/obj/structure/shuttle/engine/propulsion{dir = 8},/turf/simulated/shuttle/plating/airless/carry,/area/shuttle/large_escape_pod1/station)
"cgx" = (/obj/structure/shuttle/engine/heater{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/airless,/area/shuttle/large_escape_pod1/station)
"cgy" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/obj/structure/window/reinforced{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
@@ -5886,7 +5886,7 @@
"cjj" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/medbay_aft)
"cjk" = (/obj/structure/table/rack,/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/suit/storage/hazardvest,/obj/item/weapon/storage/box/lights/mixed,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/medbay_aft)
"cjl" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
-"cjm" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/random/medical/lite,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
+"cjm" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/tool/wrench,/obj/random/medical/lite,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"cjn" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"cjo" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"cjp" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
@@ -6487,7 +6487,7 @@
"cuM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
"cuN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/secondary/docking_hallway)
"cuO" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/vacant/vacant_shop)
-"cuP" = (/obj/item/weapon/crowbar,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
+"cuP" = (/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"cuQ" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled,/area/vacant/vacant_shop)
"cuR" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = -4},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = -4},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = 8; pixel_y = 12},/obj/item/weapon/reagent_containers/food/drinks/cup{pixel_x = -4; pixel_y = 12},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop)
"cuS" = (/obj/structure/table/marble,/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 8},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 8; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = 0; pixel_y = 4},/obj/item/weapon/reagent_containers/food/drinks/glass2/square{pixel_x = -8; pixel_y = 4},/obj/machinery/camera/network/civilian{c_tag = "CIV - Cafe Back Room"; dir = 2},/turf/simulated/floor/tiled/yellow,/area/crew_quarters/coffee_shop)
@@ -7442,7 +7442,7 @@
"cNf" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
"cNg" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
"cNh" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/engineering_hallway)
-"cNi" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/wirecutters,/turf/simulated/floor/tiled,/area/construction)
+"cNi" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/tool/wirecutters,/turf/simulated/floor/tiled,/area/construction)
"cNj" = (/obj/machinery/suit_cycler/medical,/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
"cNk" = (/obj/machinery/door/airlock/glass_command{name = "E.V.A. Cycler Access"; req_one_access = list(18)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled,/area/ai_monitored/storage/eva)
"cNl" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/dark,/area/ai_monitored/storage/eva)
@@ -7518,7 +7518,7 @@
"cOD" = (/obj/structure/table/reinforced,/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/rods{amount = 50},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/ai_monitored/storage/eva)
"cOE" = (/obj/effect/floor_decal/corner/red/full,/obj/structure/filingcabinet/chestdrawer,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor/tiled,/area/security/checkpoint2)
"cOF" = (/obj/effect/floor_decal/corner/red{dir = 10},/obj/machinery/light,/turf/simulated/floor/tiled,/area/security/checkpoint2)
-"cOG" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/device/flash,/obj/machinery/camera/network/security{c_tag = "SEC - Arrival Checkpoint"; dir = 1},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/tiled,/area/security/checkpoint2)
+"cOG" = (/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/device/flash,/obj/machinery/camera/network/security{c_tag = "SEC - Arrival Checkpoint"; dir = 1},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/simulated/floor/tiled,/area/security/checkpoint2)
"cOH" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway)
"cOI" = (/obj/effect/floor_decal/industrial/loading{icon_state = "loadingarea"; dir = 8},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway)
"cOJ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/hallway/secondary/docking_hallway)
@@ -7767,7 +7767,7 @@
"cTs" = (/obj/machinery/atmospherics/pipe/simple/visible/green,/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored/upper_level)
"cTt" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/lattice,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored/upper_level)
"cTu" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/table/standard,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 3; name = "Atmos RC"; pixel_x = 0; pixel_y = 28},/obj/item/device/t_scanner,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/radio/headset/headset_eng,/obj/item/weapon/cartridge/atmos,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/obj/item/weapon/cartridge/atmos,/obj/item/device/pipe_painter,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"cTv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/table/standard,/obj/structure/closet/fireaxecabinet{pixel_y = 32},/obj/machinery/cell_charger,/obj/item/weapon/wrench,/turf/simulated/floor/tiled,/area/engineering/atmos)
+"cTv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/table/standard,/obj/structure/closet/fireaxecabinet{pixel_y = 32},/obj/machinery/cell_charger,/obj/item/weapon/tool/wrench,/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/table/standard,/obj/machinery/newscaster{pixel_y = 30},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/obj/machinery/camera/network/engineering{c_tag = "ENG - Atmospherics Fore Starboard"; dir = 2},/turf/simulated/floor/tiled,/area/engineering/atmos)
"cTx" = (/obj/effect/decal/warning_stripes,/obj/machinery/atmospherics/pipe/manifold4w/visible/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/visible/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/engineering/atmos)
"cTy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -8894,11 +8894,11 @@
"dpb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor,/obj/machinery/door/airlock/atmos{name = "Atmospherics Maintenance"; req_access = list(24)},/turf/simulated/floor,/area/maintenance/atmos_control)
"dpc" = (/obj/structure/closet/toolcloset,/obj/item/device/flashlight,/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/workshop)
"dpd" = (/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/engineering/workshop)
-"dpe" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/device/flashlight,/obj/item/weapon/wrench,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/engineering/workshop)
+"dpe" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/device/flashlight,/obj/item/weapon/tool/wrench,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/engineering/workshop)
"dpf" = (/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/mechanical{pixel_y = 5},/obj/item/weapon/storage/toolbox/electrical,/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/machinery/newscaster{pixel_x = 0; pixel_y = -30},/turf/simulated/floor/tiled,/area/engineering/workshop)
"dpg" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/reinforced,/obj/item/stack/rods{amount = 50},/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/obj/item/weapon/cell/high,/obj/item/stack/material/glass/phoronrglass{amount = 20},/obj/item/weapon/pickaxe,/obj/item/weapon/pickaxe,/turf/simulated/floor/tiled,/area/engineering/workshop)
"dph" = (/obj/structure/table/reinforced,/obj/item/device/floor_painter,/obj/item/device/multitool{pixel_x = 5},/obj/item/device/t_scanner,/obj/item/weapon/reagent_containers/spray/cleaner,/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 3; name = "Engineering RC"; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled,/area/engineering/workshop)
-"dpi" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/workshop)
+"dpi" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/box/lights/mixed,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/workshop)
"dpj" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = 3},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/machinery/light,/turf/simulated/floor/tiled,/area/engineering/workshop)
"dpk" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Engineering Subgrid"; name_tag = "Engineering Subgrid"},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor,/area/maintenance/substation/engineering)
"dpl" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Engineering"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/engineering)
diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm
index 7ed9493bdab..a2c9a941bd8 100644
--- a/maps/northern_star/polaris-2.dmm
+++ b/maps/northern_star/polaris-2.dmm
@@ -660,7 +660,7 @@
"mJ" = (/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space)
"mK" = (/obj/structure/lattice,/turf/space,/area/space)
"mL" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"mM" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"mM" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"mN" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"mO" = (/obj/effect/floor_decal/corner/blue{dir = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"mP" = (/obj/structure/table/reinforced,/obj/item/device/aicard,/obj/item/weapon/pinpointer/advpinpointer,/obj/item/weapon/stamp/centcomm,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -685,7 +685,7 @@
"ni" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nj" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/handcuffs{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/box/handcuffs,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nk" = (/obj/structure/table/reinforced,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"nl" = (/obj/structure/table/reinforced,/obj/item/weapon/wrench,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"nl" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nm" = (/obj/structure/table/rack,/obj/item/rig_module/device/drill,/obj/item/rig_module/device/drill,/obj/item/rig_module/maneuvering_jets,/obj/item/rig_module/maneuvering_jets,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nn" = (/obj/structure/table/rack,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/obj/item/rig_module/mounted/taser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"no" = (/obj/structure/table/rack,/obj/item/rig_module/grenade_launcher,/obj/item/rig_module/grenade_launcher,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -711,7 +711,7 @@
"nI" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nJ" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nK" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"nL" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"nL" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nM" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"nN" = (/obj/machinery/vending/snack{name = "hacked Getmore Chocolate Corp"; prices = list()},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"nO" = (/obj/structure/closet/wardrobe/ert,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -755,7 +755,7 @@
"oA" = (/obj/structure/sign/securearea{name = "\improper ARMORY"; pixel_y = 32},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oB" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oC" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"oD" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"oD" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oE" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donut,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oF" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oG" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT1"; name = "Launch Bay #1"; p_open = 0},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops)
@@ -772,7 +772,7 @@
"oR" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/centcom/specops)
"oS" = (/obj/effect/floor_decal/corner/white{dir = 5},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oT" = (/obj/structure/table/reinforced,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/obj/item/clothing/accessory/storage/black_vest,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"oU" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"oU" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oV" = (/obj/structure/table/reinforced,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/obj/item/device/paicard,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oW" = (/obj/machinery/cell_charger,/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"oX" = (/obj/machinery/vending/cigarette{name = "hacked cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -981,7 +981,7 @@
"sS" = (/obj/structure/lattice,/obj/structure/grille,/obj/structure/lattice,/turf/space,/area/space)
"sT" = (/obj/structure/table/rack,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/obj/item/weapon/material/knife/tacknife/combatknife,/obj/item/weapon/material/knife/tacknife/combatknife,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"sU" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/ionrifle,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = 32},/obj/item/weapon/gun/energy/ionrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"sV" = (/obj/structure/table/rack,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
+"sV" = (/obj/structure/table/rack,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"sW" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"sX" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"sY" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
@@ -1133,7 +1133,7 @@
"vO" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters_infirmary"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"vP" = (/turf/simulated/shuttle/floor/white,/area/syndicate_station/start)
"vQ" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = -32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"vR" = (/obj/structure/table/standard,/obj/item/weapon/screwdriver,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"vR" = (/obj/structure/table/standard,/obj/item/weapon/tool/screwdriver,/obj/effect/spawner/newbomb/timer/syndicate,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"vS" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/blast/shutters{density = 0; dir = 4; icon_state = "shutter0"; id = "syndieshutters_workshop"; name = "Blast Shutters"; opacity = 0},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"vT" = (/obj/structure/table/rack,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"vU" = (/obj/structure/table/rack,/obj/item/weapon/rig/merc/empty,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
@@ -1212,7 +1212,7 @@
"xp" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor/white,/area/syndicate_station/start)
"xq" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/closet/secure_closet/medical_wall{pixel_x = 32; pixel_y = 0; req_access = list(150)},/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/gloves/sterile/latex,/obj/item/weapon/reagent_containers/syringe,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/obj/item/weapon/reagent_containers/glass/bottle/stoxin,/turf/simulated/shuttle/floor/white,/area/syndicate_station/start)
"xr" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"xs" = (/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"xs" = (/obj/item/weapon/tool/crowbar,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"xt" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"xu" = (/obj/structure/sign/nosmoking_2{pixel_x = 32},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"xv" = (/obj/machinery/door/airlock/external,/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/terminal)
@@ -1357,7 +1357,7 @@
"Ae" = (/obj/structure/closet/secure_closet/bar,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/restaurant)
"Af" = (/obj/structure/table/marble,/obj/effect/floor_decal/corner/white/diagonal,/obj/machinery/cash_register/civilian{ icon_state = "register_idle"; dir = 8},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
"Ag" = (/obj/structure/table/standard,/obj/effect/floor_decal/corner/white/diagonal,/obj/item/weapon/reagent_containers/food/condiment/small/peppermill,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/restaurant)
-"Ah" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
+"Ah" = (/obj/machinery/computer/supplycomp/control,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"Ai" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_thunderdome"; name = "Thunderdome Access"; pixel_x = 6; pixel_y = -24; req_access = list(101)},/obj/machinery/button/remote/blast_door{id = "crescent_vip_shuttle"; name = "VIP Shuttle Access"; pixel_x = 6; pixel_y = -34; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"Aj" = (/obj/machinery/computer/shuttle_control{req_access = list(101); shuttle_tag = "Centcom"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"Ak" = (/obj/machinery/computer/communications,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
@@ -1710,7 +1710,7 @@
"GT" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"GU" = (/obj/machinery/door/airlock{name = "Unit 5"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"GV" = (/obj/machinery/door/airlock{name = "Unit 6"},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
-"GW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
+"GW" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"GX" = (/obj/machinery/door/airlock/glass_security{name = "Escape Shuttle Cell"; req_access = list(1)},/turf/simulated/shuttle/floor/red,/area/shuttle/escape/centcom)
"GY" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/obj/machinery/camera/network/crescent{c_tag = "Crescent Bar East"; dir = 4},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
"GZ" = (/obj/structure/table/woodentable{dir = 5},/obj/item/weapon/flame/lighter/zippo,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/material/ashtray/bronze{pixel_x = -1; pixel_y = 1},/turf/unsimulated/floor{ icon_state = "wood"},/area/centcom/bar)
@@ -1783,7 +1783,7 @@
"Io" = (/obj/machinery/bodyscanner{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Ip" = (/obj/machinery/body_scanconsole,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Iq" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/o2,/obj/item/weapon/storage/firstaid/o2,/obj/effect/floor_decal/corner/green{dir = 6},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
-"Ir" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/wrench,/obj/effect/floor_decal/corner/blue/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
+"Ir" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 0; pixel_y = 0},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/corner/blue/full,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Is" = (/obj/effect/floor_decal/corner/blue{dir = 8},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"It" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
"Iu" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/effect/floor_decal/corner/blue/full{dir = 4},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/medical)
@@ -1849,7 +1849,7 @@
"JC" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"JD" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"JE" = (/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
-"JF" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
+"JF" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/tool/wrench,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"JG" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"JH" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom)
"JI" = (/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom)
@@ -1955,7 +1955,7 @@
"LE" = (/obj/structure/bed/chair{dir = 1},/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
"LF" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
"LG" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/sleeping_agent{pixel_x = 1},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
-"LH" = (/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
+"LH" = (/obj/item/weapon/tool/wrench,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
"LI" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
"LJ" = (/obj/machinery/door/airlock/centcom{name = "General Access"; opacity = 1; req_access = list(101)},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome)
"LK" = (/obj/structure/bed/chair,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
@@ -1994,7 +1994,7 @@
"Mr" = (/obj/machinery/dna_scannernew,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Ms" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Mt" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
-"Mu" = (/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
+"Mu" = (/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/tool/wrench,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Mv" = (/obj/structure/closet/crate/medical,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/surgicaldrill,/obj/item/weapon/surgical/bonegel{pixel_x = 4; pixel_y = 3},/obj/item/weapon/surgical/bonesetter,/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/retractor{pixel_x = 0; pixel_y = 6},/obj/item/weapon/surgical/hemostat{pixel_y = 4},/obj/item/weapon/surgical/cautery{pixel_y = 4},/obj/item/weapon/surgical/FixOVein{pixel_x = -6; pixel_y = 1},/obj/item/stack/nanopaste,/obj/item/weapon/tank/anesthetic,/obj/item/clothing/mask/breath/medical,/obj/item/clothing/mask/surgical,/obj/item/clothing/mask/surgical,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"Mw" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/snacks/chips,/turf/unsimulated/beach/sand,/area/beach)
"Mx" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/obj/item/weapon/reagent_containers/food/drinks/cans/cola,/turf/unsimulated/beach/sand,/area/beach)
@@ -2302,8 +2302,8 @@
"Sn" = (/obj/structure/table/steel,/obj/item/clothing/glasses/regular,/obj/item/clothing/glasses/regular,/turf/simulated/shuttle/floor/red,/area/skipjack_station/start)
"So" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor/red,/area/skipjack_station/start)
"Sp" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
-"Sq" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
-"Sr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
+"Sq" = (/obj/item/weapon/tool/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
+"Sr" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/tool/crowbar,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"Ss" = (/obj/machinery/computer/shuttle,/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"St" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Su" = (/obj/machinery/door/airlock/maintenance_hatch,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station)
diff --git a/maps/northern_star/polaris-3.dmm b/maps/northern_star/polaris-3.dmm
index 4c429df1ce6..d74448f8d3c 100644
--- a/maps/northern_star/polaris-3.dmm
+++ b/maps/northern_star/polaris-3.dmm
@@ -78,7 +78,7 @@
"bz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/tcomsat)
"bA" = (/obj/structure/disposaloutlet{dir = 4},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/airless,/area/tcomsat)
"bB" = (/obj/structure/table/standard,/obj/item/device/radio/off,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
-"bC" = (/obj/structure/table/standard,/obj/item/weapon/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
+"bC" = (/obj/structure/table/standard,/obj/item/weapon/tool/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"bN" = (/obj/item/trash/cheesie,/turf/space,/area/space)
"bO" = (/obj/machinery/door/blast/regular{id = "oldship_gun"; name = "Pod Bay Door"},/turf/simulated/shuttle/plating,/area/derelict/ship)
"bP" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "oldship_gun"},/turf/simulated/shuttle/plating,/area/derelict/ship)
diff --git a/maps/northern_star/polaris-5.dmm b/maps/northern_star/polaris-5.dmm
index c1c909e1686..f4f4ea76089 100644
--- a/maps/northern_star/polaris-5.dmm
+++ b/maps/northern_star/polaris-5.dmm
@@ -21,7 +21,7 @@
"au" = (/turf/simulated/floor/tiled/airless,/area/outpost/research/test_area)
"av" = (/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/simulated/floor/airless,/area/outpost/research/test_area)
"aw" = (/obj/structure/dispenser,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
-"ax" = (/obj/structure/table/standard,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 30},/obj/item/weapon/crowbar,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
+"ax" = (/obj/structure/table/standard,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/screwdriver{pixel_y = 10},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 30},/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"ay" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"az" = (/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/outpost/research/mixing)
"aA" = (/turf/simulated/wall,/area/outpost/research/hallway/toxins_hallway)
@@ -290,7 +290,7 @@
"fD" = (/obj/structure/closet/emcloset,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 9},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"fE" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "toxins_airlock_control"; name = "Toxins Access Button"; pixel_x = 26; pixel_y = 26; req_access = list(7)},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
"fF" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Toxins Access"; dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled/white,/area/outpost/research/hallway/toxins_hallway)
-"fG" = (/obj/item/weapon/wrench,/obj/structure/table/steel,/turf/simulated/floor/tiled/dark,/area/outpost/research/toxins_misc_lab)
+"fG" = (/obj/item/weapon/tool/wrench,/obj/structure/table/steel,/turf/simulated/floor/tiled/dark,/area/outpost/research/toxins_misc_lab)
"fH" = (/obj/machinery/pipedispenser,/turf/simulated/floor/tiled/dark,/area/outpost/research/toxins_misc_lab)
"fI" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging/junction,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored)
"fJ" = (/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/dark,/area/outpost/research/xenobiology)
@@ -882,7 +882,7 @@
"qX" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
"qY" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
"qZ" = (/obj/structure/table/rack,/obj/item/clothing/head/welding,/obj/item/weapon/weldingtool,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
-"ra" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
+"ra" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/tool/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
"rb" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/anomaly)
"rc" = (/obj/machinery/conveyor{dir = 4; id = "anom"},/turf/simulated/floor/plating,/area/outpost/research/anomaly)
"rd" = (/obj/machinery/conveyor{dir = 4; id = "anom"},/obj/structure/plasticflaps/mining,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/outpost/research/anomaly)
@@ -909,7 +909,7 @@
"ry" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/turf/simulated/floor/tiled/white,/area/outpost/research/analysis)
"rz" = (/obj/effect/floor_decal/corner/beige{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/outpost/research/analysis)
"rA" = (/obj/structure/table/glass,/obj/effect/floor_decal/corner/beige/full{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/outpost/research/analysis)
-"rB" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/crowbar,/obj/machinery/newscaster{layer = 3.3; pixel_x = -30; pixel_y = 0},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
+"rB" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/tool/crowbar,/obj/machinery/newscaster{layer = 3.3; pixel_x = -30; pixel_y = 0},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
"rC" = (/turf/simulated/floor/tiled/white,/area/outpost/research/anomaly)
"rD" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/outpost/research/anomaly)
"rE" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled,/area/outpost/research/anomaly)
@@ -947,8 +947,8 @@
"sk" = (/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/research/eva)
"sl" = (/obj/effect/floor_decal/corner/purple/full{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/table/standard,/turf/simulated/floor/tiled,/area/outpost/research/eva)
"sm" = (/obj/effect/floor_decal/corner/purple{dir = 1},/obj/machinery/light{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/outpost/research/eva)
-"sn" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/research/eva)
-"so" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/outpost/research/eva)
+"sn" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/outpost/research/eva)
+"so" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/outpost/research/eva)
"sp" = (/obj/structure/dispenser/oxygen,/obj/effect/floor_decal/corner/purple{dir = 6},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/outpost/research/eva)
"sq" = (/obj/machinery/light/small,/turf/simulated/mineral/floor/ignore_mapgen,/area/mine/explored)
"sr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/outpost/research/analysis)
@@ -1470,7 +1470,7 @@
"Cn" = (/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/outpost/mining_main/refinery)
"Co" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled,/area/outpost/mining_main/refinery)
"Cp" = (/obj/machinery/conveyor{dir = 2; id = "mining_internal"},/obj/machinery/mineral/output,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/refinery)
-"Cq" = (/obj/structure/table/steel,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/mining_main/refinery)
+"Cq" = (/obj/structure/table/steel,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/turf/simulated/floor/tiled/asteroid_steel/airless,/area/outpost/mining_main/refinery)
"Cr" = (/obj/structure/closet/crate,/obj/item/stack/material/phoron{amount = 50},/obj/item/stack/material/phoron{amount = 50},/obj/item/stack/material/phoron{amount = 50},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"Cs" = (/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/sensor{long_range = 1; name_tag = "Asteroid Main Grid"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
"Ct" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/outpost/engineering/mining/power)
@@ -1586,13 +1586,13 @@
"Ez" = (/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"EA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"EB" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
-"EC" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe/hammer,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/shovel,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
-"ED" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/shovel,/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
+"EC" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar,/obj/item/weapon/shovel,/obj/machinery/light,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
+"ED" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe/hammer,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar,/obj/item/weapon/shovel,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
"EE" = (/turf/simulated/wall,/area/outpost/mining_main/storage)
"EF" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/camera/network/mining{c_tag = "OPM - Mining Hallway Aft"; dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
"EG" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
"EH" = (/obj/structure/disposalpipe/segment,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/structure/cable/blue,/turf/simulated/floor/tiled,/area/outpost/mining_main/south_hall)
-"EI" = (/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
+"EI" = (/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/obj/machinery/light,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"EJ" = (/obj/item/stack/flag/green{pixel_x = -4; pixel_y = 0},/obj/item/stack/flag/red,/obj/item/stack/flag/yellow{pixel_x = 4},/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/outpost/mining_main/eva)
"EK" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
"EL" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled/dark,/area/outpost/mining_main/storage)
@@ -1912,7 +1912,7 @@
"KN" = (/obj/structure/lattice,/obj/structure/grille{density = 0; icon_state = "brokengrille"},/turf/space,/area/space)
"KO" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
"KP" = (/obj/machinery/power/tracker,/obj/structure/cable/yellow,/turf/simulated/floor/airless{icon_state = "asteroidplating2"},/area/outpost/engineering/solarsoutside/aft)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -2079,7 +2079,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadDjDwDwDwDwDwDw
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadDjDjDODwDwDPDwDQDRDSDTDUDVDWDXDYDZEaEaDtEbEcDtqOeJeJdndndnadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadDjDODwEdEeEfEfEgEhEiEjEkElEmEnEaEaEoDfEpEqDgdneJeJadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadDjDjErEsEtEsEsEuEvEwExEyEzEzEAEzEBDfDfdndndneJeJeJadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadDjDjECEDDwDwEEEFEGEHDgEaEaEIEJDfDfdndndneJeJeJadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadDjDjEDECDwDwEEEFEGEHDgEaEaEIEJDfDfdndndneJeJeJadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadDjDjDjEKELEEEMENDBDgEOEPDfDfDfdndndneJeJeJadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadDjDjDjEEEQERESDgDfDfDfdndndndndneJeJdnadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadadadadadDjDjETEUEVDfDfaddndndndndndneJeJdnadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadadaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm
index e75ed0e9734..ead72095daa 100644
--- a/maps/southern_cross/southern_cross-1.dmm
+++ b/maps/southern_cross/southern_cross-1.dmm
@@ -39,7 +39,7 @@
"aaM" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod1/station)
"aaN" = (/turf/simulated/shuttle/wall,/area/shuttle/escape_pod2/station)
"aaO" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/shuttle/plating,/area/shuttle/escape_pod2/station)
-"aaP" = (/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/wrench,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/holofloor/wood,/area/crew_quarters/firstdeck/gym)
+"aaP" = (/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/tool/wrench,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/holofloor/wood,/area/crew_quarters/firstdeck/gym)
"aaQ" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/cups,/turf/simulated/floor/holofloor/wood,/area/crew_quarters/firstdeck/gym)
"aaR" = (/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 8; icon_state = "map"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/floor_decal/rust,/obj/machinery/light/small{dir = 8},/turf/simulated/floor/tiled/steel_dirty,/area/hallway/primary/firstdeck/auxdockfore)
"aaS" = (/obj/machinery/atmospherics/pipe/manifold4w/hidden,/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/auxdockfore)
@@ -304,7 +304,7 @@
"afR" = (/obj/machinery/atmospherics/binary/pump/on{dir = 4; target_pressure = 200},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport)
"afS" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/closet/crate,/obj/item/weapon/toy/xmas_cracker,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport)
"afT" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/item/device/paicard,/turf/simulated/floor/plating,/area/construction/firstdeck/construction5)
-"afU" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/wirecutters,/turf/simulated/floor/tiled,/area/construction/firstdeck/construction5)
+"afU" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/tool/wirecutters,/turf/simulated/floor/tiled,/area/construction/firstdeck/construction5)
"afV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = -1},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/toilet/firstdeck)
"afW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/toilet/firstdeck)
"afX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/toilet/firstdeck)
@@ -339,7 +339,7 @@
"agA" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport)
"agB" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/firstdeck/foreport)
"agC" = (/obj/machinery/light{dir = 8},/turf/simulated/floor/plating,/area/construction/firstdeck/construction5)
-"agD" = (/obj/item/weapon/crowbar,/turf/simulated/floor/tiled,/area/construction/firstdeck/construction5)
+"agD" = (/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled,/area/construction/firstdeck/construction5)
"agE" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor/plating,/area/construction/firstdeck/construction5)
"agF" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/toilet/firstdeck)
"agG" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/toilet/firstdeck)
@@ -669,7 +669,7 @@
"amS" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station)
"amT" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station)
"amU" = (/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod{frequency = 1380; id_tag = "large_escape_pod_2"; pixel_x = 26; pixel_y = -26; tag_door = "large_escape_pod_2_hatch"},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
-"amV" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/obj/random/medical/lite,/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station)
+"amV" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/obj/random/medical/lite,/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station)
"amW" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station)
"amX" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod2/station)
"amY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/space_heater,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/hangar/one)
@@ -1202,7 +1202,7 @@
"axf" = (/obj/structure/table/glass,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/item/roller,/obj/item/bodybag/cryobag,/obj/item/weapon/storage/firstaid/regular,/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/firstdeck)
"axg" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/table/glass,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/firstdeck)
"axh" = (/obj/structure/extinguisher_cabinet{pixel_y = -30},/obj/structure/bed/chair/office/light{dir = 4},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/industrial/warning{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/firstdeck)
-"axi" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/camera/network/medbay{c_tag = "MED - FA Station Deck One"; dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/rack,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/roller,/obj/item/roller,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/firstdeck)
+"axi" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/camera/network/medbay{c_tag = "MED - FA Station Deck One"; dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/structure/table/rack,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/roller,/obj/item/roller,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/first_aid_station/firstdeck)
"axj" = (/obj/machinery/computer/crew,/turf/simulated/floor/tiled/techmaint,/area/medical/first_aid_station/firstdeck)
"axk" = (/turf/simulated/floor,/area/tcomm/tcomstorage)
"axl" = (/obj/item/weapon/storage/toolbox/mechanical,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/tcomm/tcomstorage)
@@ -1292,7 +1292,7 @@
"ayR" = (/turf/simulated/floor/plating,/area/construction/firstdeck/construction2)
"ayS" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/construction/firstdeck/construction2)
"ayT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled/steel_dirty,/area/construction/firstdeck/construction2)
-"ayU" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/wirecutters,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/construction/firstdeck/construction2)
+"ayU" = (/obj/effect/decal/cleanable/blood/oil/streak{amount = 0},/obj/item/weapon/tool/wirecutters,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/steel_dirty,/area/construction/firstdeck/construction2)
"ayV" = (/obj/structure/table/steel,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/construction/firstdeck/construction2)
"ayW" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/port)
"ayX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/monotile,/area/hallway/primary/firstdeck/port)
@@ -1513,7 +1513,7 @@
"aDe" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter)
"aDf" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/monotile,/area/hallway/primary/firstdeck/ascenter)
"aDg" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/camera/network/first_deck{c_tag = "First Deck - Center Three"; dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter)
-"aDh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard)
+"aDh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard)
"aDi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard)
"aDj" = (/turf/simulated/wall/r_wall,/area/hangar/two)
"aDk" = (/turf/simulated/wall,/area/hangar/two)
@@ -1728,7 +1728,7 @@
"aHl" = (/turf/simulated/shuttle/wall/voidcraft,/area/shuttle/shuttle2/start)
"aHm" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/tiled/steel,/area/hangar/two)
"aHn" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod1/station)
-"aHo" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/random/medical/lite,/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod1/station)
+"aHo" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/tool/wrench,/obj/random/medical/lite,/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod1/station)
"aHp" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/shuttle/large_escape_pod1/station)
"aHq" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"aHr" = (/obj/machinery/sleep_console,/obj/item/device/radio/intercom/department/medbay{dir = 1; pixel_x = 0; pixel_y = -21},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
@@ -1873,7 +1873,7 @@
"aKa" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/camera/network/first_deck{c_tag = "First Deck - Center Four"; dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter)
"aKb" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter)
"aKc" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/green/border,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/ascenter)
-"aKd" = (/obj/item/inflatable/door/torn,/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/maintenance/firstdeck/aftstarboard)
+"aKd" = (/obj/item/inflatable/door/torn,/obj/item/weapon/tool/screwdriver,/turf/simulated/floor,/area/maintenance/firstdeck/aftstarboard)
"aKe" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/firstdeck/aftstarboard)
"aKf" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/machinery/airlock_sensor{frequency = 1380; id_tag = "shuttle2_sensor"; pixel_x = 0; pixel_y = -28},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "shuttle2_pump"},/turf/simulated/shuttle/floor/black,/area/shuttle/shuttle2/start)
"aKg" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/embedded_controller/radio/airlock/docking_port{frequency = 1380; id_tag = "shuttle2_shuttle"; pixel_y = -26; tag_airpump = "shuttle2_pump"; tag_chamber_sensor = "shuttle2_sensor"; tag_exterior_door = "shuttle2_outer"; tag_interior_door = "shuttle2_inner"},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 1; frequency = 1380; id_tag = "shuttle2_pump"},/turf/simulated/shuttle/floor/black,/area/shuttle/shuttle2/start)
@@ -2342,7 +2342,7 @@
"aTb" = (/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/aft)
"aTc" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/hallway/primary/firstdeck/aft)
"aTd" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/security/checkpoint3)
-"aTe" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/crowbar,/obj/item/weapon/pen,/obj/item/device/flash,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/security/checkpoint3)
+"aTe" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/tool/crowbar,/obj/item/weapon/pen,/obj/item/device/flash,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/security/checkpoint3)
"aTf" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/monotile,/area/security/checkpoint3)
"aTg" = (/obj/machinery/computer/secure_data,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/checkpoint3)
"aTh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/turf/simulated/floor/tiled,/area/hallway/secondary/escape/firstdeck/ep_aftstarboard)
@@ -2573,7 +2573,7 @@
"aXy" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/freezer,/area/security/security_restroom)
"aXz" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = -1},/obj/machinery/door/window/westright{name = "Shower"},/obj/structure/curtain/open/shower/security,/turf/simulated/floor/tiled/freezer,/area/security/security_restroom)
"aXA" = (/turf/simulated/wall,/area/security/security_restroom)
-"aXB" = (/obj/structure/table/standard,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/machinery/recharger/wallcharger{pixel_x = -24; pixel_y = -4},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
+"aXB" = (/obj/structure/table/standard,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/machinery/recharger/wallcharger{pixel_x = -24; pixel_y = -4},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"aXC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"aXD" = (/obj/structure/closet/secure_closet/security,/obj/item/clothing/glasses/hud/security,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/red/border{dir = 5},/turf/simulated/floor/tiled,/area/security/security_lockerroom)
"aXE" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/security/range)
@@ -2840,7 +2840,7 @@
"bcF" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor/tiled,/area/security/main)
"bcG" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/security/main)
"bcH" = (/obj/machinery/light{dir = 4},/obj/structure/table/standard,/obj/item/weapon/storage/box/donut,/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/red/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/security/main)
-"bcI" = (/obj/structure/table/steel_reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/magnetic_controller{autolink = 1},/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/glasses/sunglasses{pixel_x = 3; pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud/aviator,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/weapon/screwdriver,/turf/simulated/floor/tiled,/area/security/range)
+"bcI" = (/obj/structure/table/steel_reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/magnetic_controller{autolink = 1},/obj/item/clothing/glasses/sunglasses,/obj/item/clothing/glasses/sunglasses{pixel_x = 3; pixel_y = 3},/obj/item/clothing/glasses/sunglasses/sechud/aviator,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/weapon/tool/screwdriver,/turf/simulated/floor/tiled,/area/security/range)
"bcJ" = (/obj/machinery/door/window/northleft{name = "Range Access"},/obj/effect/floor_decal/industrial/loading{dir = 1},/turf/simulated/floor/tiled,/area/security/range)
"bcK" = (/obj/structure/table/steel_reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/laser/practice,/turf/simulated/floor/tiled,/area/security/range)
"bcL" = (/obj/structure/table/steel_reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/laser/practice,/turf/simulated/floor/tiled,/area/security/range)
@@ -2859,7 +2859,7 @@
"bcY" = (/obj/machinery/computer/prisoner,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
"bcZ" = (/obj/structure/filingcabinet/chestdrawer,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/camera/network/security{c_tag = "SEC - Warden's Office"},/obj/item/device/radio/intercom/department/security{pixel_y = 21},/turf/simulated/floor/tiled/dark,/area/security/warden)
"bda" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/warden)
-"bdb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel_reinforced,/obj/item/weapon/book/codex/corp_regs,/obj/item/weapon/stamp/denied{pixel_x = 5},/obj/item/weapon/stamp/ward,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/weapon/wrench,/obj/item/device/retail_scanner/security,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/warden)
+"bdb" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/table/steel_reinforced,/obj/item/weapon/book/codex/corp_regs,/obj/item/weapon/stamp/denied{pixel_x = 5},/obj/item/weapon/stamp/ward,/obj/item/weapon/tool/crowbar,/obj/item/device/radio/off,/obj/item/weapon/tool/wrench,/obj/item/device/retail_scanner/security,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/security/warden)
"bdc" = (/obj/structure/closet/secure_closet/warden,/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{pixel_x = 36; pixel_y = 0},/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/warden)
"bdd" = (/obj/machinery/camera/network/security{c_tag = "SEC - Brig Hallway Fore"; dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/security/brig)
"bde" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/brig)
@@ -3220,7 +3220,7 @@
"bjV" = (/obj/machinery/atmospherics/pipe/simple/visible/cyan,/obj/structure/lattice,/turf/space,/area/space)
"bjW" = (/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/lattice,/turf/space,/area/space)
"bjX" = (/obj/machinery/atmospherics/pipe/tank/nitrous_oxide{dir = 1},/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/plating,/area/security/riot_control)
-"bjY" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/item/weapon/wrench,/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/plating,/area/security/riot_control)
+"bjY" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/powered/scrubber,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/plating,/area/security/riot_control)
"bjZ" = (/obj/structure/table/reinforced,/obj/machinery/microscope,/obj/item/device/radio/intercom/department/security{pixel_y = 21},/turf/simulated/floor/tiled/freezer,/area/security/detectives_office)
"bka" = (/obj/structure/table/reinforced,/obj/machinery/computer/med_data/laptop,/turf/simulated/floor/tiled/freezer,/area/security/detectives_office)
"bkb" = (/obj/machinery/computer/security/wooden_tv,/obj/structure/window/reinforced{dir = 8},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/lino,/area/security/detectives_office)
@@ -3945,7 +3945,7 @@
"bxS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/binary/pump{dir = 4; name = "N2O to Connector"},/turf/simulated/floor/tiled,/area/engineering/atmos)
"bxT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos)
"bxU" = (/obj/structure/table/standard,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/stack/material/steel{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/storage/belt/utility/atmostech,/obj/item/weapon/storage/belt/utility/atmostech,/turf/simulated/floor/tiled,/area/engineering/atmos)
-"bxV" = (/obj/structure/table/standard,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/cell_charger,/obj/item/device/multitool{pixel_x = 5},/obj/item/weapon/wrench,/turf/simulated/floor/tiled,/area/engineering/atmos)
+"bxV" = (/obj/structure/table/standard,/obj/structure/closet/fireaxecabinet{pixel_y = -32},/obj/machinery/cell_charger,/obj/item/device/multitool{pixel_x = 5},/obj/item/weapon/tool/wrench,/turf/simulated/floor/tiled,/area/engineering/atmos)
"bxW" = (/obj/machinery/atmospherics/pipe/manifold/visible/yellow{dir = 8},/obj/machinery/meter,/obj/structure/closet/firecloset,/turf/simulated/floor/tiled,/area/engineering/atmos)
"bxX" = (/obj/machinery/atmospherics/valve/digital{dir = 4; name = "Emergency Cooling Valve 1"},/obj/structure/closet/firecloset,/turf/simulated/floor/tiled,/area/engineering/atmos)
"bxY" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{dir = 4; initialize_directions = 11},/obj/machinery/meter,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/turf/simulated/floor/tiled,/area/engineering/atmos)
@@ -4185,7 +4185,7 @@
"bCy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/maintenance{req_access = list(12)},/turf/simulated/floor/plating,/area/storage/auxillary)
"bCz" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/plating,/area/maintenance/research)
"bCA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/meter,/turf/simulated/floor/plating,/area/maintenance/research)
-"bCB" = (/obj/structure/table,/obj/item/stack/material/plastic,/obj/item/weapon/wrench,/obj/item/weapon/weldingtool/hugetank,/turf/simulated/floor/plating,/area/maintenance/research)
+"bCB" = (/obj/structure/table,/obj/item/stack/material/plastic,/obj/item/weapon/tool/wrench,/obj/item/weapon/weldingtool/hugetank,/turf/simulated/floor/plating,/area/maintenance/research)
"bCC" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/research)
"bCD" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/maintenance/research)
"bCE" = (/obj/item/weapon/rig/hazmat/equipped,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/machinery/status_display{pixel_x = 0; pixel_y = 32},/obj/machinery/door/window/southright{name = "RD Suit"; req_one_access = list(30)},/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/sc/hor)
@@ -4535,7 +4535,7 @@
"bJk" = (/obj/machinery/camera/network/research{c_tag = "SCI - Toxins Gas Storage"; dir = 1},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled/dark,/area/rnd/storage)
"bJl" = (/obj/machinery/computer/area_atmos,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/rnd/storage)
"bJm" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/dark,/area/rnd/storage)
-"bJn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/standard,/obj/item/weapon/wrench,/obj/item/weapon/screwdriver{pixel_y = 10},/obj/item/weapon/crowbar,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/mixing)
+"bJn" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/table/standard,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/screwdriver{pixel_y = 10},/obj/item/weapon/tool/crowbar,/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = -30; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/rnd/mixing)
"bJo" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/rnd/mixing)
"bJp" = (/obj/machinery/atmospherics/pipe/simple/visible/red{icon_state = "intact"; dir = 10},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/rnd/mixing)
"bJq" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/obj/machinery/meter,/turf/simulated/floor/tiled/white,/area/rnd/mixing)
@@ -5068,7 +5068,7 @@
"bTx" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled,/area/rnd/mixing)
"bTy" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/rnd/mixing)
"bTz" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/rnd/mixing)
-"bTA" = (/obj/item/weapon/wrench,/turf/simulated/floor/tiled,/area/rnd/mixing)
+"bTA" = (/obj/item/weapon/tool/wrench,/turf/simulated/floor/tiled,/area/rnd/mixing)
"bTB" = (/obj/machinery/pipedispenser,/turf/simulated/floor/tiled,/area/rnd/mixing)
"bTC" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{icon_state = "intact"; dir = 9},/turf/simulated/floor/reinforced/airless,/area/rnd/mixing)
"bTD" = (/turf/simulated/wall/r_wall,/area/engineering/engine_room)
@@ -5107,7 +5107,7 @@
"bUk" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/freezer,/area/engineering/engi_restroom)
"bUl" = (/obj/structure/sink{pixel_y = 16},/obj/structure/mirror{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/freezer,/area/engineering/engi_restroom)
"bUm" = (/obj/structure/undies_wardrobe,/obj/structure/window/basic,/turf/simulated/floor/tiled/freezer,/area/engineering/engi_restroom)
-"bUn" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/engineering)
+"bUn" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wirecutters,/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/security,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/engineering)
"bUo" = (/obj/machinery/portable_atmospherics/canister/empty,/turf/simulated/floor/plating,/area/maintenance/engineering)
"bUp" = (/obj/structure/flora/ausbushes/sparsegrass,/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/fpcenter)
"bUq" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/navbeacon/patrol{location = "CH2"; next_patrol = "CH3"},/turf/simulated/floor/tiled/dark,/area/hallway/primary/seconddeck/fpcenter)
@@ -5150,8 +5150,8 @@
"bVb" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bVc" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"bVd" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
-"bVe" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/hemostat,/obj/item/stack/cable_coil,/obj/item/weapon/weldingtool/hugetank,/obj/effect/floor_decal/industrial/warning,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
-"bVf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/closet/crate,/obj/item/weapon/wrench,/obj/item/weapon/crowbar/red,/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = -32; pixel_y = -4},/obj/machinery/camera/network/research{c_tag = "SCI - Miscellaneous Research"; dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
+"bVe" = (/obj/structure/table/standard,/obj/structure/window/reinforced,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/hemostat,/obj/item/stack/cable_coil,/obj/item/weapon/weldingtool/hugetank,/obj/effect/floor_decal/industrial/warning,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor/tiled/white,/area/assembly/robotics)
+"bVf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/closet/crate,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar/red,/obj/machinery/computer/security/telescreen{desc = "Used to monitor the proceedings inside the test chamber."; name = "Test Chamber Monitor"; network = list("Miscellaneous Reseach"); pixel_x = -32; pixel_y = -4},/obj/machinery/camera/network/research{c_tag = "SCI - Miscellaneous Research"; dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bVg" = (/obj/machinery/hologram/holopad,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/universal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bVh" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/purple/border{dir = 4},/turf/simulated/floor/tiled/white,/area/rnd/misc_lab)
"bVi" = (/obj/machinery/atmospherics/pipe/simple/heat_exchanging{icon_state = "intact"; dir = 10},/obj/structure/lattice,/turf/space,/area/space)
@@ -5281,7 +5281,7 @@
"bXC" = (/obj/structure/closet/secure_closet/engineering_electrical,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/engineering/workshop)
"bXD" = (/obj/machinery/vending/tool,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/workshop)
"bXE" = (/obj/structure/closet/toolcloset,/obj/item/device/flashlight,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/workshop)
-"bXF" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar/red,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/tiled/dark,/area/engineering/workshop)
+"bXF" = (/obj/structure/table/steel_reinforced,/obj/item/clothing/gloves/black,/obj/item/clothing/gloves/black,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/tiled/dark,/area/engineering/workshop)
"bXG" = (/obj/machinery/computer/station_alert/all,/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/chief)
"bXH" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/chief)
"bXI" = (/obj/structure/bed/chair/office/light{dir = 1},/obj/effect/landmark/start{name = "Chief Engineer"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/chief)
@@ -5310,7 +5310,7 @@
"bYf" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Central Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/central)
"bYg" = (/obj/random/obstruction,/turf/simulated/floor/plating,/area/maintenance/central)
"bYh" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/maintenance{name = "Central Maintenance Access"; req_one_access = list(12,19)},/turf/simulated/floor/plating,/area/maintenance/central)
-"bYi" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/teleporter)
+"bYi" = (/obj/structure/closet/crate,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/turf/simulated/floor/tiled,/area/teleporter)
"bYj" = (/turf/simulated/floor/tiled,/area/teleporter)
"bYk" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled,/area/teleporter)
"bYl" = (/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled,/area/teleporter)
@@ -5364,7 +5364,7 @@
"bZh" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/workshop)
"bZi" = (/obj/machinery/vending/engivend,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/engineering/workshop)
"bZj" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/turf/simulated/floor/tiled,/area/engineering/workshop)
-"bZk" = (/obj/structure/table/steel_reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/wrench,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/engineering/workshop)
+"bZk" = (/obj/structure/table/steel_reinforced,/obj/machinery/cell_charger,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/tool/wrench,/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/engineering/workshop)
"bZl" = (/obj/machinery/computer/security/telescreen{desc = "Used to monitor the engine room."; layer = 3.3; name = "Engine Monitor"; network = list("Engine"); pixel_x = 0; pixel_y = -34},/obj/machinery/computer/atmos_alert,/obj/machinery/newscaster{pixel_x = -30; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 10},/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/chief)
"bZm" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/chief)
"bZn" = (/obj/machinery/camera/network/engineering{c_tag = "ENG - Chief Engineer's Office"; dir = 1},/obj/machinery/button/remote/airlock{desc = "A remote control-switch for the engine core airlock hatch bolts."; id = "engine_access_hatch"; name = "Engine Hatch Bolt Control"; pixel_x = -6; pixel_y = -44; specialfunctions = 4},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for engine core."; id = "EngineVent"; name = "Engine Ventillatory Control"; pixel_x = 6; pixel_y = -44},/obj/machinery/keycard_auth{pixel_x = 0; pixel_y = -24},/obj/machinery/button/remote/blast_door{id = "englockdown"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -34; req_access = list(10)},/obj/machinery/button/remote/blast_door{id = "atmoslockdown"; name = "Atmospherics Lockdown"; pixel_x = 6; pixel_y = -34; req_access = list(10)},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/simulated/floor/tiled,/area/crew_quarters/heads/sc/chief)
@@ -5513,7 +5513,7 @@
"cca" = (/obj/machinery/computer/guestpass{pixel_x = 0; pixel_y = -30},/obj/machinery/light,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 6},/obj/effect/floor_decal/corner/purple/border{dir = 6},/obj/effect/floor_decal/borderfloorwhite/corner2,/obj/effect/floor_decal/corner/purple/bordercorner2,/turf/simulated/floor/tiled/white,/area/rnd/research_foyer)
"ccb" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/assembly/robotics)
"ccc" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
-"ccd" = (/obj/structure/table/standard,/obj/structure/reagent_dispensers/acid{density = 0; pixel_x = 0; pixel_y = -30},/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/multitool{pixel_x = 3},/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
+"ccd" = (/obj/structure/table/standard,/obj/structure/reagent_dispensers/acid{density = 0; pixel_x = 0; pixel_y = -30},/obj/machinery/recharger{pixel_y = 0},/obj/item/weapon/storage/toolbox/mechanical,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool{pixel_x = 3},/obj/item/device/multitool{pixel_x = 3},/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/electrical{pixel_x = 1; pixel_y = 6},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"cce" = (/obj/structure/closet{name = "robotics parts"},/obj/item/clothing/glasses/welding,/obj/item/clothing/glasses/welding,/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/item/clothing/head/welding{pixel_x = -3; pixel_y = 5},/obj/machinery/ai_status_display{pixel_y = -32},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"ccf" = (/obj/structure/closet{name = "welding equipment"},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000; pixel_x = 5; pixel_y = -5},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/device/assembly/prox_sensor{pixel_x = -8; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/weapon/storage/firstaid/regular{empty = 1; name = "First-Aid (empty)"},/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/device/healthanalyzer,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/device/flash/synthetic,/obj/item/stack/cable_coil,/obj/item/stack/cable_coil,/obj/machinery/light,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
"ccg" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/assembly/robotics)
@@ -6624,7 +6624,7 @@
"cxt" = (/obj/machinery/atmospherics/pipe/simple/visible/green{icon_state = "intact"; dir = 6},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor,/area/engineering/engine_room)
"cxu" = (/obj/machinery/status_display,/turf/simulated/wall,/area/quartermaster/qm)
"cxv" = (/obj/structure/table/reinforced,/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/stack/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 6},/obj/item/weapon/storage/briefcase/inflatable{pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = -3},/turf/simulated/floor/tiled/techmaint,/area/ai_monitored/storage/emergency/eva)
-"cxw" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/machinery/camera/network/civilian{c_tag = "CIV - Emergency EVA"; dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled/techmaint,/area/ai_monitored/storage/emergency/eva)
+"cxw" = (/obj/structure/table/reinforced,/obj/machinery/cell_charger,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/machinery/camera/network/civilian{c_tag = "CIV - Emergency EVA"; dir = 1},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/turf/simulated/floor/tiled/techmaint,/area/ai_monitored/storage/emergency/eva)
"cxx" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techmaint,/area/ai_monitored/storage/emergency/eva)
"cxy" = (/obj/structure/flora/ausbushes/genericbush,/turf/simulated/floor/grass,/area/hallway/primary/seconddeck/apcenter)
"cxz" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter)
@@ -6764,7 +6764,7 @@
"cAd" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/bottle/stoxin{pixel_x = -6; pixel_y = 10},/obj/item/weapon/reagent_containers/glass/bottle/antitoxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/reagent_containers/glass/bottle/inaprovaline{pixel_x = 1},/obj/random/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/regular,/obj/random/medical,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/masks{pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay_primary_storage)
"cAe" = (/obj/structure/closet/l3closet/medical,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"cAf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
-"cAg" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/weapon/crowbar/red,/obj/item/weapon/crowbar/red,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
+"cAg" = (/obj/structure/closet/crate,/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/weapon/tool/crowbar/red,/obj/item/weapon/tool/crowbar/red,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"cAh" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/medbay2)
"cAi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/medbay2)
"cAj" = (/turf/simulated/wall,/area/medical/medbay2)
@@ -6846,7 +6846,7 @@
"cBH" = (/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/turf/simulated/floor/tiled/white,/area/medical/foyer)
"cBI" = (/obj/effect/floor_decal/corner/paleblue{dir = 6},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/medical/foyer)
"cBJ" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/foyer)
-"cBK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/table/glass,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/screwdriver,/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = 6; pixel_y = -18; pixel_z = 0},/obj/machinery/button/remote/blast_door{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_x = -6; pixel_y = -18},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
+"cBK" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/table/glass,/obj/item/weapon/storage/box/syringes,/obj/item/weapon/tool/screwdriver,/obj/machinery/button/remote/blast_door{id = "chemwindow"; name = "Pharmacy Windows Shutter Control"; pixel_x = 6; pixel_y = -18; pixel_z = 0},/obj/machinery/button/remote/blast_door{id = "chemcounter"; name = "Pharmacy Counter Lockdown Control"; pixel_x = -6; pixel_y = -18},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/beige/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"cBL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"cBM" = (/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/medical/chemistry)
"cBN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/chemistry)
@@ -6916,7 +6916,7 @@
"cCZ" = (/obj/structure/closet/secure_closet/medical1,/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/machinery/light_switch{pixel_x = -36},/obj/random/medical,/obj/random/medical,/obj/random/medical,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/status_display{pixel_x = 0; pixel_y = -32},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay)
"cDa" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/pink/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 10},/obj/effect/floor_decal/corner/pink/bordercorner2{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
"cDb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/pink/border{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 5},/obj/effect/floor_decal/corner/pink/bordercorner2{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/medbay_emt_bay)
-"cDc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/structure/table/rack{dir = 8; layer = 2.6},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay)
+"cDc" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/obj/structure/table/rack{dir = 8; layer = 2.6},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay)
"cDd" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced/polarized{id = "exam_window_tint"},/turf/simulated/floor/plating,/area/medical/exam_room)
"cDe" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Examination Room"; req_access = list(5)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_grid,/area/medical/exam_room)
"cDf" = (/obj/structure/table/glass,/obj/machinery/recharger{pixel_y = 0},/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/camera/network/medbay{c_tag = "MED - Medical Break Area"; dir = 4},/obj/item/device/defib_kit/loaded,/turf/simulated/floor/tiled/white,/area/medical/reception)
@@ -7411,7 +7411,7 @@
"cMA" = (/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/pink/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"cMB" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/pink/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"cMC" = (/obj/structure/extinguisher_cabinet{pixel_x = 28; pixel_y = 0},/obj/machinery/firealarm{pixel_y = 24},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/pink/border{dir = 5},/obj/machinery/computer/crew,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
-"cMD" = (/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/structure/table/glass,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/techmaint,/area/medical/cryo)
+"cMD" = (/obj/item/weapon/tool/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/structure/table/glass,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled/techmaint,/area/medical/cryo)
"cME" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/atmospherics/unary/cryo_cell,/turf/simulated/floor/tiled/techmaint,/area/medical/cryo)
"cMF" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/medical/cryo)
"cMG" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/techmaint,/area/medical/cryo)
@@ -7887,7 +7887,7 @@
"cVI" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/barrestroom)
"cVJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/barrestroom)
"cVK" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 28},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/barrestroom)
-"cVL" = (/obj/item/weapon/book/manual/barman_recipes,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/weapon/screwdriver,/obj/item/weapon/flame/lighter/zippo,/obj/structure/table/marble,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Fore"; dir = 4},/turf/simulated/floor/lino,/area/crew_quarters/bar)
+"cVL" = (/obj/item/weapon/book/manual/barman_recipes,/obj/item/clothing/head/that{pixel_x = 4; pixel_y = 6},/obj/item/weapon/tool/screwdriver,/obj/item/weapon/flame/lighter/zippo,/obj/structure/table/marble,/obj/machinery/camera/network/civilian{c_tag = "CIV - Bar Fore"; dir = 4},/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cVM" = (/obj/effect/landmark/start{name = "Bartender"},/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cVN" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor/lino,/area/crew_quarters/bar)
"cVO" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/lino,/area/crew_quarters/bar)
@@ -8354,7 +8354,7 @@
"deH" = (/obj/structure/table/marble,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"deI" = (/obj/machinery/cooker/cereal,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
"deJ" = (/obj/machinery/cooker/candy,/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/kitchen)
-"deK" = (/obj/structure/table/standard{name = "plastic table frame"},/obj/item/weapon/crowbar,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance,/obj/random/maintenance,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/plating,/area/maintenance/chapel)
+"deK" = (/obj/structure/table/standard{name = "plastic table frame"},/obj/item/weapon/tool/crowbar,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance,/obj/random/maintenance,/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/plating,/area/maintenance/chapel)
"deL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/plating,/area/maintenance/chapel)
"deM" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/light{dir = 8},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/holodeck_control)
"deN" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/holodeck_control)
@@ -8470,7 +8470,7 @@
"dgT" = (/obj/machinery/vending/hydronutrients,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/hydroponics)
"dgU" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/hydroponics)
"dgV" = (/obj/structure/closet/secure_closet/hydroponics,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/hydroponics)
-"dgW" = (/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/crowbar,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/hydroponics)
+"dgW" = (/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/tool/crowbar,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/lime/border,/turf/simulated/floor/tiled/hydro,/area/hydroponics)
"dgX" = (/obj/structure/table/rack,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/storage/fancy/cigarettes/dromedaryco,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/chapel)
"dgY" = (/obj/item/weapon/stool/padded,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled,/area/holodeck_control)
"dgZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/holodeck_control)
@@ -9046,7 +9046,7 @@
"drX" = (/obj/machinery/lapvend,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/storage/primary)
"drY" = (/obj/machinery/computer/security,/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -21},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/security/checkpoint2)
"drZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/checkpoint2)
-"dsa" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/crowbar,/obj/item/weapon/pen,/obj/item/device/flash,/obj/machinery/camera/network/security{c_tag = "SEC - Arrival Checkpoint"; dir = 8},/obj/machinery/light{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/checkpoint2)
+"dsa" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/tool/crowbar,/obj/item/weapon/pen,/obj/item/device/flash,/obj/machinery/camera/network/security{c_tag = "SEC - Arrival Checkpoint"; dir = 8},/obj/machinery/light{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/checkpoint2)
"dsb" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dsc" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/seconddeck/locker)
"dsd" = (/obj/structure/closet/wardrobe/mixed,/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/crew_quarters/seconddeck/locker)
@@ -10237,7 +10237,7 @@
"dOS" = (/obj/structure/toilet{dir = 1},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/sc/sd)
"dOT" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/window/northright,/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/sc/sd)
"dOU" = (/obj/machinery/door/firedoor/border_only,/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard)
-"dOV" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/crowbar,/obj/item/weapon/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/maintenance/thirddeck/aftstarboard)
+"dOV" = (/obj/structure/closet/crate,/obj/item/stack/cable_coil/random,/obj/item/stack/cable_coil/random,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wirecutters,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor,/area/maintenance/thirddeck/aftstarboard)
"dOW" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard)
"dOX" = (/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/obj/structure/cable/green,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
"dOY" = (/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftport)
@@ -10582,7 +10582,7 @@
"dVz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/station_map{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/apcenter)
"dVA" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/obj/machinery/station_map{dir = 8; pixel_x = 32},/turf/simulated/floor/tiled,/area/hallway/primary/seconddeck/aft)
"dVB" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/station_map{dir = 1; pixel_y = -32},/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/central)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/southern_cross/southern_cross-3.dmm b/maps/southern_cross/southern_cross-3.dmm
index a71ef934cbc..22059a006f5 100644
--- a/maps/southern_cross/southern_cross-3.dmm
+++ b/maps/southern_cross/southern_cross-3.dmm
@@ -47,7 +47,7 @@
"aU" = (/obj/structure/table/steel,/obj/machinery/cell_charger,/obj/item/weapon/cell/high,/obj/effect/floor_decal/corner/brown{dir = 5},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
"aV" = (/obj/structure/table/steel,/obj/machinery/recharger,/obj/effect/floor_decal/corner/brown/full{dir = 1},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/structure/cable/blue{d2 = 2; icon_state = "0-2"},/obj/item/clothing/head/hardhat/orange,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
"aW" = (/obj/structure/table/steel,/obj/item/weapon/storage/belt/utility,/obj/item/weapon/pickaxe,/obj/effect/floor_decal/corner/brown/full{dir = 8},/obj/item/device/gps/mining,/obj/item/device/gps/mining,/obj/item/device/gps/mining,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
-"aX" = (/obj/effect/floor_decal/corner/brown{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/structure/table/steel,/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
+"aX" = (/obj/effect/floor_decal/corner/brown{dir = 5},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_y = 21},/obj/structure/table/steel,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/toolbox/mechanical,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"aY" = (/obj/effect/floor_decal/corner/brown{dir = 5},/obj/structure/table/steel,/obj/item/stack/flag/green{pixel_x = -4; pixel_y = 0},/obj/item/stack/flag/red,/obj/item/stack/flag/yellow{pixel_x = 4},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"aZ" = (/obj/structure/closet/secure_closet/miner,/obj/item/clothing/shoes/boots/winter/mining,/obj/item/clothing/suit/storage/hooded/wintercoat/miner,/obj/effect/floor_decal/corner/brown{dir = 5},/obj/item/clothing/head/hardhat/orange,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"ba" = (/obj/structure/table/steel,/obj/item/weapon/mining_scanner,/obj/item/weapon/mining_scanner,/obj/item/weapon/mining_scanner,/obj/effect/floor_decal/corner/brown{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
@@ -98,8 +98,8 @@
"bT" = (/obj/structure/ore_box,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
"bU" = (/obj/structure/reagent_dispensers/watertank,/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
"bV" = (/obj/structure/reagent_dispensers/fueltank,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
-"bW" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe/hammer,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/shovel,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
-"bX" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe/hammer,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/shovel,/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
+"bW" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe/hammer,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar,/obj/item/weapon/shovel,/obj/effect/floor_decal/corner/brown{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
+"bX" = (/obj/structure/table/rack,/obj/item/weapon/pickaxe/hammer,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar,/obj/item/weapon/shovel,/obj/effect/floor_decal/corner/brown{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main/storage)
"bY" = (/obj/effect/floor_decal/corner/brown{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"bZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"ca" = (/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
@@ -117,7 +117,7 @@
"cm" = (/obj/machinery/gateway{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/gateway)
"cn" = (/obj/machinery/gateway{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/gateway)
"co" = (/obj/machinery/ai_status_display,/turf/simulated/wall,/area/surface/outpost/main/gateway)
-"cp" = (/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = 28},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/weapon/screwdriver,/obj/item/device/defib_kit/loaded,/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
+"cp" = (/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = 0; pixel_y = 28},/obj/structure/table/glass,/obj/machinery/recharger,/obj/item/weapon/tool/screwdriver,/obj/item/device/defib_kit/loaded,/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"cq" = (/obj/machinery/sleep_console{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"cr" = (/obj/machinery/sleeper{dir = 4},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"cs" = (/obj/structure/bed/roller,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
@@ -128,7 +128,7 @@
"cx" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"cy" = (/obj/machinery/portable_atmospherics/canister/oxygen,/obj/effect/floor_decal/corner/brown,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"cz" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
-"cA" = (/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/obj/machinery/light,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
+"cA" = (/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/obj/machinery/light,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"cB" = (/obj/machinery/mech_recharger,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"cC" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled,/area/surface/outpost/mining_main)
"cD" = (/turf/simulated/wall/r_wall,/area/surface/outpost/mining_main/refinery)
@@ -172,7 +172,7 @@
"dp" = (/obj/machinery/gateway{dir = 6},/obj/effect/landmark{name = "JoinLateGateway"},/turf/simulated/floor/tiled/techfloor,/area/surface/outpost/main/gateway)
"dq" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/atm{pixel_x = 30},/turf/simulated/floor/tiled/dark,/area/surface/outpost/main/gateway)
"dr" = (/obj/machinery/computer/crew,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
-"ds" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/table/glass,/obj/item/weapon/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
+"ds" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/structure/table/glass,/obj/item/weapon/tool/wrench,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = 7; pixel_y = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"dt" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"du" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"dv" = (/obj/random/maintenance/clean,/obj/random/maintenance/security,/obj/random/contraband,/obj/random/drinkbottle,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/storage)
@@ -248,7 +248,7 @@
"eN" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outside/path/plains)
"eO" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"eP" = (/obj/machinery/computer/security,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
-"eQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/device/flash,/obj/item/weapon/pen,/obj/item/weapon/crowbar,/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
+"eQ" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/device/flash,/obj/item/weapon/pen,/obj/item/weapon/tool/crowbar,/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"eR" = (/obj/structure/closet/crate,/obj/effect/floor_decal/borderfloor/corner{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"eS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
"eT" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/red/bordercorner,/turf/simulated/floor/tiled,/area/surface/outpost/main/security)
@@ -259,7 +259,7 @@
"eY" = (/obj/structure/closet/emcloset,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/storage/toolbox/emergency,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/blue,/turf/simulated/floor/tiled,/area/surface/outpost/main/gateway)
"eZ" = (/obj/structure/closet/l3closet/scientist,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloorwhite/corner{dir = 8},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"fa" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
-"fb" = (/obj/structure/table/glass,/obj/item/weapon/crowbar,/obj/item/bodybag,/obj/item/bodybag/cryobag,/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/paleblue/bordercorner,/obj/item/bodybag/cryobag,/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
+"fb" = (/obj/structure/table/glass,/obj/item/weapon/tool/crowbar,/obj/item/bodybag,/obj/item/bodybag/cryobag,/obj/effect/floor_decal/borderfloorwhite/corner,/obj/effect/floor_decal/corner/paleblue/bordercorner,/obj/item/bodybag/cryobag,/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"fc" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/adv{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/o2{pixel_x = 0; pixel_y = 0},/obj/machinery/light,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"fd" = (/obj/structure/table/glass,/obj/item/weapon/storage/firstaid/toxin{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/main/first_aid)
"fe" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
@@ -373,7 +373,7 @@
"hi" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"hj" = (/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/green/bordercorner,/turf/simulated/floor/tiled,/area/surface/outpost/main)
"hk" = (/obj/machinery/mech_recharger,/obj/structure/extinguisher_cabinet{pixel_x = -25},/obj/machinery/alarm{dir = 1; pixel_y = -22},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
-"hl" = (/obj/structure/table/steel,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
+"hl" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/storage/toolbox/mechanical,/obj/item/device/multitool,/obj/machinery/ai_status_display{pixel_y = -32},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
"hm" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/first_aid)
"hn" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/white/bordercorner2,/obj/structure/closet/secure_closet/medical_wall{name = "O- Blood Locker"; pixel_x = 0; pixel_y = -32},/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/iv_drip,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
"ho" = (/obj/structure/closet/secure_closet/sar,/obj/machinery/light,/obj/item/weapon/storage/box/bodybags,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/white/border,/obj/item/roller/adv,/obj/item/weapon/storage/pill_bottle/spaceacillin,/turf/simulated/floor/tiled,/area/surface/outpost/main/first_aid)
@@ -463,7 +463,7 @@
"iU" = (/obj/machinery/atmospherics/pipe/manifold/visible/cyan{ icon_state = "map"; dir = 4},/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"iV" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet/emcloset,/turf/simulated/floor/plating,/area/surface/outpost/mining_main/gen_room)
"iW" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/highsecurity{name = "Telecommunication Hub"; req_one_access = list(10,48,65)},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/techmaint,/area/surface/outpost/main/telecomms)
-"iX" = (/obj/structure/table/standard,/obj/item/weapon/crowbar/red,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/item/weapon/crowbar/red,/turf/simulated/floor/tiled,/area/surface/outpost/main/teleporter)
+"iX" = (/obj/structure/table/standard,/obj/item/weapon/tool/crowbar/red,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/item/weapon/tool/crowbar/red,/turf/simulated/floor/tiled,/area/surface/outpost/main/teleporter)
"iY" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/structure/cable/blue{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/turf/simulated/floor/tiled,/area/surface/outpost/main/teleporter)
"iZ" = (/obj/machinery/bluespace_beacon,/obj/item/device/radio/beacon,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/hologram/holopad,/obj/effect/floor_decal/industrial/outline/grey,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/teleporter)
"ja" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/machinery/camera/network/main_outpost{c_tag = "MO - Teleporter"; dir = 1},/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/tiled,/area/surface/outpost/main/teleporter)
@@ -552,7 +552,7 @@
"kF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/garage)
"kG" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/garage)
"kH" = (/obj/machinery/mech_recharger,/obj/effect/decal/mecha_wreckage/ripley,/obj/machinery/light,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main/garage)
-"kI" = (/obj/item/inflatable/door/torn,/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/surface/outpost/main/garage)
+"kI" = (/obj/item/inflatable/door/torn,/obj/item/weapon/tool/screwdriver,/turf/simulated/floor,/area/surface/outpost/main/garage)
"kJ" = (/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/plating,/area/surface/outpost/main/garage)
"kK" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/surface/outpost/main/garage)
"kL" = (/obj/structure/cable/heavyduty{icon_state = "1-2"},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outside/plains/outpost)
@@ -647,7 +647,7 @@
"mw" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
"mx" = (/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
"my" = (/obj/effect/floor_decal/borderfloor/corner{dir = 1},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
-"mz" = (/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/wrench,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
+"mz" = (/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/tool/wrench,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/tiled,/area/surface/outpost/main/gym)
"mA" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"mB" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/machinery/hologram/holopad,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/cable/blue{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"mC" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/surface/outpost/main)
@@ -658,7 +658,7 @@
"mH" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -21},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/main)
"mI" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/machinery/light,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/surface/outpost/main)
"mJ" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/effect/overlay/snow/floor,/turf/simulated/floor/tiled/steel/sif/planetuse,/area/surface/outpost/main)
-"mK" = (/obj/structure/closet/crate,/obj/item/weapon/crowbar/red,/obj/item/frame/light,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area)
+"mK" = (/obj/structure/closet/crate,/obj/item/weapon/tool/crowbar/red,/obj/item/frame/light,/obj/item/weapon/storage/box/lights/mixed,/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area)
"mL" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/surface/outpost/main/construction_area)
"mM" = (/obj/structure/cable/blue{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
"mN" = (/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/blue{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 22},/turf/simulated/floor/plating,/area/surface/outpost/main/gen_room/smes)
@@ -881,7 +881,7 @@
"qW" = (/obj/structure/closet/wardrobe/suit,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/suit/storage/hooded/wintercoat,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main)
"qX" = (/obj/structure/closet/wardrobe/grey,/obj/item/clothing/shoes/boots/winter,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/item/clothing/suit/storage/hooded/wintercoat,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main)
"qY" = (/obj/machinery/mech_recharger,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main)
-"qZ" = (/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/tiled,/area/surface/outpost/main)
+"qZ" = (/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/toolbox/mechanical,/obj/structure/table/steel,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -25},/turf/simulated/floor/tiled,/area/surface/outpost/main)
"ra" = (/obj/machinery/mech_recharger,/obj/machinery/light,/turf/simulated/floor/tiled/steel_grid,/area/surface/outpost/main)
"rb" = (/turf/simulated/wall,/area/surface/outpost/main)
"rc" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/turf/simulated/floor/tiled,/area/surface/outpost/main)
@@ -1277,7 +1277,7 @@
"yC" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/obj/structure/extinguisher_cabinet{pixel_x = -25},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora)
"yD" = (/obj/machinery/atmospherics/pipe/manifold/visible,/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora)
"yE" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 9},/obj/effect/floor_decal/industrial/warning{dir = 4},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoresearch/xenoflora)
-"yF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/crowbar,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
+"yF" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/closet/crate/hydroponics{desc = "All you need to start your own honey farm."; name = "beekeeping crate"},/obj/item/beehive_assembly,/obj/item/bee_smoker,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/honey_frame,/obj/item/bee_pack,/obj/item/weapon/tool/crowbar,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
"yG" = (/obj/effect/floor_decal/corner/green{dir = 6},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
"yH" = (/obj/effect/floor_decal/corner/green{dir = 9},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
"yI" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
@@ -1337,7 +1337,7 @@
"zK" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/door/window/brigdoor/westleft{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenobiology)
"zL" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio6"; name = "Containment Blast Doors"; opacity = 0},/obj/machinery/door/window/brigdoor/eastright{name = "Containment Pen"; req_access = list(47)},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology)
"zM" = (/obj/structure/extinguisher_cabinet{pixel_x = -25},/turf/simulated/floor/tiled/hydro,/area/surface/outpost/research/xenoresearch/xenoflora)
-"zN" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/obj/item/weapon/wrench,/turf/simulated/floor/tiled/hydro,/area/surface/outpost/research/xenoresearch/xenoflora)
+"zN" = (/obj/machinery/atmospherics/pipe/manifold/visible{dir = 8},/obj/machinery/meter,/obj/item/weapon/tool/wrench,/turf/simulated/floor/tiled/hydro,/area/surface/outpost/research/xenoresearch/xenoflora)
"zO" = (/obj/machinery/atmospherics/pipe/manifold4w/visible,/turf/simulated/floor/tiled/hydro,/area/surface/outpost/research/xenoresearch/xenoflora)
"zP" = (/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Isolation to Waste"},/obj/effect/floor_decal/industrial/warning/full,/obj/machinery/door/window/westright{name = "Xenoflora Containment"; req_access = list(55)},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoresearch/xenoflora)
"zQ" = (/obj/effect/floor_decal/corner/green{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
@@ -1430,7 +1430,7 @@
"Bz" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "xenobio5"; name = "Containment Blast Doors"; opacity = 0},/obj/effect/wingrille_spawn/reinforced,/obj/structure/window/reinforced/full,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoresearch/xenobiology)
"BA" = (/obj/structure/disposaloutlet{dir = 1},/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/reinforced,/area/surface/outpost/research/xenoresearch/xenobiology)
"BB" = (/obj/machinery/atmospherics/pipe/simple/visible{ icon_state = "intact"; dir = 5},/obj/machinery/meter,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
-"BC" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/item/weapon/wrench,/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
+"BC" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/item/weapon/tool/wrench,/obj/machinery/light,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
"BD" = (/obj/effect/floor_decal/corner/green{dir = 4},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
"BE" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/gloves{pixel_x = 4; pixel_y = 4},/obj/item/weapon/storage/box/syringes,/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
"BF" = (/obj/structure/table/glass,/obj/item/weapon/reagent_containers/glass/bucket,/obj/item/weapon/reagent_containers/glass/bucket,/obj/effect/floor_decal/corner/green/full{dir = 1},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoresearch/xenoflora)
@@ -1558,7 +1558,7 @@
"DX" = (/turf/unsimulated/wall/planetary/sif{icon_state = "rock-dark"},/area/surface/outpost/wall)
"DY" = (/obj/effect/step_trigger/teleporter/wild/to_wild,/turf/simulated/shuttle/floor/voidcraft/external,/area/surface/outpost/wall)
"DZ" = (/turf/simulated/shuttle/wall/voidcraft,/area/surface/outside/lake/romsele)
-
+
(1,1,1) = {"
aaaaaaaaaaaaaaaaababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababacadadadabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaeaeaeababababababababab
aaafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaiajajajahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahafafafafafafafafafafafafafafagafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafafakakakafafafafafafafafaa
diff --git a/maps/southern_cross/southern_cross-4.dmm b/maps/southern_cross/southern_cross-4.dmm
index 365cd32aaca..4688297ec47 100644
--- a/maps/southern_cross/southern_cross-4.dmm
+++ b/maps/southern_cross/southern_cross-4.dmm
@@ -60,7 +60,7 @@
"bh" = (/obj/effect/floor_decal/industrial/outline/grey,/obj/structure/closet/crate,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/longtermstorage)
"bi" = (/obj/effect/floor_decal/corner/purple{dir = 9},/obj/machinery/status_display{pixel_x = -32},/obj/machinery/floodlight,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bk" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bk" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bm" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bn" = (/obj/machinery/door/firedoor/border_only,/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/wingrille_spawn/reinforced,/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/exp_prep)
@@ -98,7 +98,7 @@
"bT" = (/obj/effect/floor_decal/corner/purple/full,/obj/machinery/suspension_gen,/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bU" = (/obj/machinery/suspension_gen,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/structure/extinguisher_cabinet{pixel_y = -30},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bV" = (/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/firealarm{dir = 1; pixel_x = 0; pixel_y = -24},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
-"bW" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Expedition Prep"; dir = 1},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
+"bW" = (/obj/item/weapon/storage/excavation,/obj/item/weapon/pickaxe,/obj/item/weapon/tool/wrench,/obj/item/device/measuring_tape,/obj/item/stack/flag/yellow,/obj/structure/table/steel,/obj/effect/floor_decal/corner/purple{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/camera/network/research_outpost{c_tag = "OPR - Expedition Prep"; dir = 1},/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = -27},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bX" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northleft,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bY" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/belt/archaeology,/obj/item/clothing/suit/space/anomaly,/obj/item/clothing/head/helmet/space/anomaly,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced,/obj/machinery/door/window/northright,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
"bZ" = (/obj/structure/table/steel,/obj/item/device/suit_cooling_unit,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = -24},/obj/structure/cable/blue,/obj/item/device/suit_cooling_unit,/obj/item/device/gps/science,/obj/item/device/gps/science,/obj/item/device/gps/science,/turf/simulated/floor/tiled/dark,/area/surface/outpost/research/xenoarcheology/exp_prep)
@@ -183,10 +183,10 @@
"dA" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/table/standard,/obj/structure/cable/blue{d2 = 8; icon_state = "0-8"},/obj/effect/floor_decal/corner/purple{dir = 6},/obj/item/weapon/storage/box/glasses/square{pixel_x = 1; pixel_y = 4},/obj/item/weapon/storage/box/cups,/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/neutral,/area/surface/outpost/research/xenoarcheology)
"dB" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_research{name = "Outpost Hallway"; req_access = list(47)},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology)
"dC" = (/obj/machinery/status_display,/turf/simulated/wall/r_wall,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dD" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dD" = (/obj/structure/table/steel,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
"dE" = (/obj/machinery/artifact_scanpad,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
"dF" = (/obj/machinery/artifact_analyser,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
-"dG" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/crowbar,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
+"dG" = (/obj/structure/table/standard,/obj/machinery/cell_charger,/obj/item/weapon/tool/screwdriver{pixel_y = 15},/obj/item/weapon/melee/baton/loaded,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
"dH" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/obj/effect/floor_decal/industrial/warning/full,/obj/structure/cable/blue{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/surface/outpost/research/xenoarcheology/anomaly)
"dI" = (/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/machinery/button/remote/blast_door{id = "xenoarch_cell2"; name = "Cell 2"; pixel_x = 26; pixel_y = 0},/turf/simulated/floor/tiled,/area/surface/outpost/research/xenoarcheology/anomaly)
"dJ" = (/turf/simulated/floor/plating{ icon_state = "asteroidplating2"},/area/surface/cave/explored/normal)
@@ -421,8 +421,8 @@
"ie" = (/turf/simulated/wall/dungeon,/area/surface/cave/unexplored/normal)
"if" = (/obj/item/stack/flag/green,/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
"ig" = (/obj/item/stack/flag/red{amount = 1},/turf/simulated/mineral/floor/ignore_mapgen/sif,/area/surface/cave/explored/normal)
+"ih" = (/obj/structure/table/standard,/obj/item/weapon/flame/lighter/random,/obj/item/weapon/tool/crowbar,/obj/machinery/atmospherics/pipe/manifold/hidden/yellow{dir = 8},/turf/simulated/floor/tiled/white,/area/surface/outpost/research/xenoarcheology/anomaly)
"ii" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/obj/machinery/floodlight,/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
-"il" = (/obj/structure/table/steel,/obj/item/weapon/screwdriver,/obj/item/weapon/crowbar,/obj/item/weapon/wrench,/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
"im" = (/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
"in" = (/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 8},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
"io" = (/obj/machinery/light/small{dir = 1},/obj/effect/floor_decal/industrial/warning/dust{ icon_state = "warning_dust"; dir = 4},/turf/simulated/floor/tiled/asteroid_steel,/area/surface/outpost/mining_main/cave)
@@ -676,9 +676,9 @@ adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeae
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbAaTbBbCbDbEbFbGbHbIbJbKbLbMbNbObNaNbPbQbRbSayafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapbTbUbVbWbXbYbZcacbcccdavcebMcfcgchaNayayayayayafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeafafafaeapapapapapapapapapcicjckavclcmcncncocpcqcrcsctcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecviigqgpiliicvafafafaecAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaecviigqgpdDiicvafafafaecAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcuafafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeinimimimimimioafafafaecAdadbdccEdddedfandgdhdiaxdjdkdkdldmdndodpdqdrcuafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
-adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafaeaecAdudvdwdxdydzdAamandBandCdDdEdFdGdHdIcucucucucudJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
+adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafaeaecAdudvdwdxdydzdAamandBandCdGdEdFihdHdIcucucucucudJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimimiqafafafaecAdKdLdMdNdOdPdQcIdRdSdTaxdUdVdWdXdYdZeaebecedeedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipirisirimitiqafafafeicAdNdNcAejekelemeneodSdTbKepbNbNeqereseteueveweedJafafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
adaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeipimimimimiuiqafafafeyanezeAaneBeBeCeDeEeFdSdTaxeGeHeIeJeKeLeMeNeOePeedJafafaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaeaegLgLgLaeaeaeaeaeaeaeaead
diff --git a/maps/southern_cross/southern_cross-5.dmm b/maps/southern_cross/southern_cross-5.dmm
index 8d343fbf8e6..11bfad0b0f6 100644
--- a/maps/southern_cross/southern_cross-5.dmm
+++ b/maps/southern_cross/southern_cross-5.dmm
@@ -39,6 +39,7 @@
"aM" = (/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"aN" = (/obj/structure/table/standard,/obj/item/device/analyzer,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"aO" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/white,/area/derelict/ship)
+"aP" = (/obj/structure/table/standard,/obj/item/weapon/tool/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"aS" = (/obj/machinery/door/window/northright,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"aT" = (/obj/item/weapon/bedsheet,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/bed/padded,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"aU" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
@@ -59,7 +60,6 @@
"bk" = (/obj/machinery/mass_driver{dir = 8; icon_state = "mass_driver"; id = "oldship_gun"},/turf/simulated/shuttle/plating,/area/derelict/ship)
"bl" = (/obj/machinery/door/airlock/glass{name = "Pod Bay"},/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"bm" = (/obj/machinery/computer/pod{id = "oldship_gun"},/turf/simulated/shuttle/floor/white,/area/derelict/ship)
-"bn" = (/obj/structure/table/standard,/obj/item/weapon/screwdriver,/obj/machinery/light,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"bo" = (/obj/structure/table/standard,/obj/item/device/radio/off,/turf/simulated/shuttle/floor/white,/area/derelict/ship)
"bp" = (/turf/simulated/mineral/vacuum,/area/mine/unexplored)
"bq" = (/turf/simulated/mineral/floor/ignore_mapgen/vacuum,/area/mine/explored)
@@ -209,7 +209,7 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaababababababacacacacacabacacacababalalaiajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabjbkazacacacacacacblacacababababalaiajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababbmacacacacacababababaaaaababaiajaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacbnboababababaaaaaaaaababawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababacaPboababababaaaaaaaaababawaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabababababababaaaaaaaaaaaaaaababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/southern_cross/southern_cross-6.dmm b/maps/southern_cross/southern_cross-6.dmm
index 374cee537c9..250cd4ca5df 100644
--- a/maps/southern_cross/southern_cross-6.dmm
+++ b/maps/southern_cross/southern_cross-6.dmm
@@ -292,7 +292,7 @@
"fF" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/item/clothing/accessory/holster/waist,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"fG" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/item/clothing/accessory/holster/hip,/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"fH" = (/obj/structure/table/rack,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/item/clothing/accessory/holster/armpit,/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
-"fI" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
+"fI" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"fJ" = (/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"fK" = (/obj/machinery/porta_turret{anchored = 0; check_records = 0; enabled = 0; req_one_access = list(103); use_power = 0},/obj/effect/floor_decal/industrial/outline/blue,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"fL" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops)
@@ -323,10 +323,10 @@
"gk" = (/obj/effect/floor_decal/corner/purple{dir = 6},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"gl" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/weapon/gun/energy/stunrevolver,/obj/item/device/flash,/obj/item/device/flash,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/obj/item/clothing/accessory/storage/brown_vest,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"gm" = (/obj/structure/table/rack,/obj/item/device/lightreplacer,/obj/item/device/lightreplacer,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
-"gn" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"gn" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"go" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/centcomm,/obj/item/weapon/pen,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"gp" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"gq" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/weapon/crowbar,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"gq" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/crowbar,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/radio/off,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/item/device/flashlight,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"gr" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"gs" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/specops)
"gt" = (/obj/effect/floor_decal/corner/yellow,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -394,7 +394,7 @@
"hD" = (/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/glass{amount = 50},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/steel{amount = 50; pixel_x = 2; pixel_y = 2},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/plasteel{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/stack/material/glass/reinforced{amount = 50},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/briefcase/inflatable{pixel_x = 3; pixel_y = 3},/obj/structure/table/steel_reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"hE" = (/obj/machinery/pipedispenser/orderable,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"hF" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/head/helmet/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/obj/item/clothing/suit/armor/vest/ert/engineer,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
-"hG" = (/obj/structure/table/reinforced,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
+"hG" = (/obj/structure/table/reinforced,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/obj/item/weapon/cell/high,/obj/item/weapon/cell/high,/obj/item/weapon/tool/screwdriver,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"hH" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/syringes{pixel_x = 2; pixel_y = 2},/obj/item/weapon/storage/box/syringes,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"hI" = (/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"hJ" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/autoinjectors,/obj/item/weapon/storage/box/beakers,/obj/item/weapon/storage/box/gloves,/obj/item/weapon/storage/box/masks,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -425,7 +425,7 @@
"ii" = (/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ij" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/clothing/gloves/yellow,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/obj/item/weapon/storage/belt/utility/full,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"ik" = (/obj/structure/table/rack,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
-"il" = (/obj/structure/table/reinforced,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/weapon/screwdriver,/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
+"il" = (/obj/structure/table/reinforced,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/obj/item/weapon/tool/crowbar,/obj/item/weapon/tool/screwdriver,/obj/item/weapon/tool/wrench,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"im" = (/obj/structure/table/reinforced,/obj/item/weapon/pinpointer/advpinpointer,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
"in" = (/turf/unsimulated/wall{desc = "That looks like it doesn't open easily."; dir = 8; icon = 'icons/obj/doors/rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/specops)
"io" = (/obj/machinery/shield_gen,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -676,7 +676,7 @@
"mZ" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/command)
"na" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "large_escape_pod_2_recovery_hatch"; locked = 1; name = "Recovery Shuttle Dock 02"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/centcom/evac)
"nb" = (/obj/machinery/computer/pod{id = "thunderdomehea"; name = "Thunderdome Heavy Supply"},/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
-"nc" = (/obj/item/weapon/wrench,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
+"nc" = (/obj/item/weapon/tool/wrench,/turf/unsimulated/floor{icon_state = "lino"},/area/tdome/tdomeadmin)
"nd" = (/obj/machinery/door/airlock/command{name = "Thunderdome Administration"; req_access = list(102)},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"ne" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 6},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"nf" = (/obj/machinery/atmospherics/pipe/vent{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
@@ -996,7 +996,7 @@
"th" = (/obj/structure/table/reinforced,/obj/item/frame/light,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"ti" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"tj" = (/obj/structure/table/rack,/obj/item/weapon/storage/toolbox/mechanical,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
-"tk" = (/obj/item/weapon/crowbar,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
+"tk" = (/obj/item/weapon/tool/crowbar,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/main_hall)
"tl" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tm" = (/obj/machinery/bodyscanner{dir = 8},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tn" = (/obj/machinery/body_scanconsole,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
@@ -1008,7 +1008,7 @@
"tt" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tu" = (/obj/machinery/iv_drip,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tv" = (/obj/structure/bed/roller,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
-"tw" = (/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
+"tw" = (/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/tool/wrench,/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tx" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"ty" = (/obj/machinery/atmospherics/pipe/manifold/visible,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tz" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
@@ -1034,7 +1034,7 @@
"tT" = (/obj/structure/toilet{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/shuttle/trade)
"tU" = (/turf/unsimulated/wall,/area/centcom/security)
"tV" = (/turf/unsimulated/wall,/area/centcom/medical)
-"tW" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/obj/structure/table/standard,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/obj/machinery/recharger,/obj/item/weapon/screwdriver,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
+"tW" = (/obj/machinery/vending/wallmed1{name = "Emergency NanoMed"; pixel_x = -30; pixel_y = 0},/obj/structure/table/standard,/obj/item/device/defib_kit,/obj/item/device/defib_kit,/obj/machinery/recharger,/obj/item/weapon/tool/screwdriver,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tX" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tY" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor/white,/area/centcom/evac)
"tZ" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "trade_shuttle_bay"; name = "shuttle bay controller"; pixel_x = 25; pixel_y = 0; tag_door = "trade_shuttle_bay_door"},/turf/unsimulated/floor{icon_state = "steel"},/area/shuttle/trade)
@@ -1480,7 +1480,7 @@
"Cx" = (/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Cy" = (/obj/structure/undies_wardrobe,/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Subversive Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/wizard_station)
"Cz" = (/turf/simulated/shuttle/wall/no_join,/area/shuttle/escape/centcom)
-"CA" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
+"CA" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/extinguisher,/obj/item/weapon/tool/crowbar,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"CB" = (/obj/structure/closet/emcloset,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"CC" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
"CD" = (/obj/structure/table/woodentable,/obj/item/device/paicard,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/wizard_station)
@@ -1574,7 +1574,7 @@
"En" = (/obj/machinery/atmospherics/unary/cryo_cell{layer = 3.3},/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"Eo" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"Ep" = (/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
-"Eq" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
+"Eq" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/tool/wrench,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"Er" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/obj/item/weapon/reagent_containers/blood/OMinus,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
"Es" = (/obj/item/robot_parts/r_arm,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station)
"Et" = (/obj/item/robot_parts/l_leg,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/wizard_station)
@@ -2054,7 +2054,7 @@
"Nz" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 5},/turf/simulated/shuttle/wall/voidcraft/red,/area/syndicate_station/start)
"NA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced/full,/obj/machinery/atmospherics/pipe/simple/visible{dir = 4},/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"NB" = (/obj/machinery/atmospherics/pipe/simple/visible{icon_state = "intact"; dir = 9},/turf/simulated/shuttle/wall/voidcraft/red,/area/syndicate_station/start)
-"NC" = (/obj/structure/table/steel,/obj/effect/spawner/newbomb/timer/syndicate,/obj/item/weapon/screwdriver,/obj/item/device/assembly/signaler{pixel_y = 2},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start)
+"NC" = (/obj/structure/table/steel,/obj/effect/spawner/newbomb/timer/syndicate,/obj/item/weapon/tool/screwdriver,/obj/item/device/assembly/signaler{pixel_y = 2},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start)
"ND" = (/obj/item/device/radio/intercom{desc = "Talk through this. Evilly"; frequency = 1213; name = "Syndicate Intercom"; pixel_x = 32; subspace_transmission = 1; syndie = 1},/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start)
"NE" = (/obj/machinery/light/small{dir = 8},/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start)
"NF" = (/obj/structure/frame/computer,/turf/simulated/shuttle/floor/voidcraft/dark,/area/syndicate_station/start)
@@ -2147,8 +2147,8 @@
"Po" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/light/small{dir = 4},/turf/simulated/shuttle/floor/skipjack,/area/skipjack_station/start)
"Pp" = (/obj/machinery/door/airlock/hatch{req_access = list(150)},/turf/simulated/shuttle/floor/white,/area/skipjack_station/start)
"Pq" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/shuttle/plating,/area/skipjack_station/start)
-"Pr" = (/obj/item/weapon/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
-"Ps" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/crowbar,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
+"Pr" = (/obj/item/weapon/tool/wrench,/obj/item/weapon/mop,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
+"Ps" = (/obj/machinery/atmospherics/pipe/simple/visible,/obj/item/weapon/tool/crowbar,/obj/item/device/suit_cooling_unit,/turf/simulated/shuttle/plating,/area/skipjack_station/start)
"Pt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "syndieshutters"; name = "Blast Shutters"; opacity = 0},/obj/structure/window/reinforced/full,/turf/simulated/shuttle/plating,/area/syndicate_station/start)
"Pu" = (/obj/structure/table/steel_reinforced,/obj/machinery/recharger,/turf/simulated/shuttle/floor/voidcraft,/area/syndicate_station/start)
"Pv" = (/obj/structure/bed/chair/comfy/red,/turf/simulated/shuttle/floor/voidcraft/light,/area/syndicate_station/start)
diff --git a/maps/southern_cross/southern_cross-8.dmm b/maps/southern_cross/southern_cross-8.dmm
index 13380f6c75b..1d136a9a6dd 100644
--- a/maps/southern_cross/southern_cross-8.dmm
+++ b/maps/southern_cross/southern_cross-8.dmm
@@ -55,7 +55,7 @@
"bc" = (/obj/structure/table/steel,/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
"bd" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
"be" = (/obj/structure/closet,/obj/random/maintenance/clean,/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
-"bf" = (/obj/structure/closet/crate,/obj/random/powercell,/obj/item/weapon/screwdriver,/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
+"bf" = (/obj/structure/closet/crate,/obj/random/powercell,/obj/item/weapon/tool/screwdriver,/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
"bg" = (/obj/random/junk,/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "mining_dock_1"; name = "shuttle bay controller"; pixel_x = 0; pixel_y = -26; tag_door = "mining_dock_1_door"},/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
"bh" = (/obj/machinery/space_heater,/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
"bi" = (/obj/item/weapon/banner/virgov,/turf/simulated/floor/plating/external,/area/surface/outside/path/wilderness)
@@ -329,3 +329,4 @@ aaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacac
aaacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacbqbrblbsbqacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaKaKaKacacacacacacacacaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabqbtbtbtbqaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabububuaaaaaaaaaaaaaaaaaa
"}
+
diff --git a/maps/southern_cross/structures/closets/misc.dm b/maps/southern_cross/structures/closets/misc.dm
index e4c93833d9f..69e8fcb431e 100644
--- a/maps/southern_cross/structures/closets/misc.dm
+++ b/maps/southern_cross/structures/closets/misc.dm
@@ -95,7 +95,7 @@
/obj/item/device/healthanalyzer,
/obj/item/device/radio/off,
/obj/random/medical,
- /obj/item/weapon/crowbar,
+ /obj/item/weapon/tool/crowbar,
/obj/item/weapon/extinguisher/mini,
/obj/item/weapon/storage/box/freezer,
/obj/item/clothing/accessory/storage/white_vest,
diff --git a/maps/submaps/surface_submaps/mountains/backup/IceCave1.dmm b/maps/submaps/surface_submaps/mountains/backup/IceCave1.dmm
deleted file mode 100644
index 5f78f87858e..00000000000
--- a/maps/submaps/surface_submaps/mountains/backup/IceCave1.dmm
+++ /dev/null
@@ -1,37 +0,0 @@
-"a" = (/turf/simulated/wall/dungeon/rock{block_tele = 0},/area/submap/cave/IceCave1)
-"b" = (/turf/template_noop,/area/submap/cave/IceCave1)
-"c" = (/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"d" = (/obj/machinery/crystal/ice,/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"e" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"f" = (/obj/machinery/crystal/ice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaabbbbbbbbbbaaaaaaaaaa
-aacccccdccccccccddaabbbbbbbbbbaaaeeffaaa
-aaccccccccccccccddaaabbbbbbbbaaaeeeefeaa
-aaccccccccccccccaaaaaaaaaaaaaaaaeeeeeeaa
-aaccccccccccdcccaaaaaaaaaaaaaaaeeeeeeeaa
-aadccccccccccccdaaaaaaccccdccffeeeeeeaaa
-aaccccccccccccccaaaaaaccccccceeeeeeefaaa
-aacccccccccccccceeeeeedccccccfffaaaaaaaa
-aacccccccccdcccceeeeeeccdcccdfffaaaaaaab
-aaccdcccccccccccaaaaaaddaaaaaaaaaaabbbbb
-aaccccdccccccccdaaaaaaddafeeeeeaaaabbbbb
-aaccccccdcccccccaaffeefdafeeeeeaabbbbbbb
-aaccccccccccccccaaeeeeefaaaeaefaabbbbbbb
-aaaaaadddddddddeeeeefeeeeeeeaeeaabbbbbbb
-aaaaaafffeeeeddddffffffeefeeaeeaabbbbbbb
-aafffeeeeeeeeeccaaaaaaaaeeefafeaabbbbbbb
-aafeeeeeeeeeeeccaaaaaaaaffffaeeaabbbbbbb
-aaaffeaaaaaaaaccaaaaaaaeeeeeeeeaabbbbbbb
-aaaaeeaaaaaaaaccaaaaaaaeeeeeeaaaabbbbbbb
-aaaaeefaaaaaaaccccccddaeeeeeeaaaabbbbbbb
-aaaaaeefaaaaaaccccccddaafeaaaaabbbbbbbbb
-aaaafeeeaaaaaaaaddcceeeeeeaaaaabbbbbbbbb
-aaaffaeeeaaaaaaaddcceeeeeeaabbbbbbbbbbbb
-eaaaaaeeefaaaaaaaaaaaaeeefaabbbbbbbbbbbb
-eeaaaafeeaaaaaaaaaaaaaffffaabbbbbbbbbbbb
-eeeeeeeeeaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-eeeeeeeeaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-"}
diff --git a/maps/submaps/surface_submaps/mountains/backup/IceCave1A.dmm b/maps/submaps/surface_submaps/mountains/backup/IceCave1A.dmm
deleted file mode 100644
index 4bc4a5c69ab..00000000000
--- a/maps/submaps/surface_submaps/mountains/backup/IceCave1A.dmm
+++ /dev/null
@@ -1,40 +0,0 @@
-"a" = (/turf/simulated/wall/solidrock{block_tele = 0},/area/submap/cave/IceCave1)
-"b" = (/turf/template_noop,/area/submap/cave/IceCave1)
-"c" = (/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"d" = (/obj/machinery/crystal/ice,/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"e" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"f" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"g" = (/obj/machinery/crystal/ice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"h" = (/obj/random/firstaid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"i" = (/obj/random/ammo,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaabbbbbbbbbbaaaaaaaaaa
-aacccccdccccccccddaabbbbbbbbbbaaaefggaaa
-aaccccccccccccccddaaabbbbbbbbaaagfffghaa
-aaccccccccccccccaaaaaaaaaaaaaaaafffffiaa
-aaccccccccccdcccaaaaaaaaaaaaaaaffffffeaa
-aadccccccccccccdaaaaaaccccdccggffffffaaa
-aaccccccccccccccaaaaaacccccccffffgefgaaa
-aaccccccccccccccffffffdccccccgggaaaaaaaa
-aacccccccccdccccffggffccdcccdgggaaaaaaab
-aaccdcccccccccccaaaaaaddaaaaaaaaaaabbbbb
-aaccccdccccccccdaaaaaaddageffffaaaabbbbb
-aaccccccdcccccccaaggffgdagfffffaabbbbbbb
-aaccccccccccccccaafffffgaaafafgaabbbbbbb
-aaaaaadddddddddfffffgfffffffaffaabbbbbbb
-aaaaaagggfffgddddggggggffgffaffaabbbbbbb
-aagggfffffffffccaaaaaaaafffgagfaabbbbbbb
-aagfffffffffffccaaaaaaaaggggaffaabbbbbbb
-aaaggfaaaaaaaaccaaaaaaagfffffffaabbbbbbb
-aaaaffaaaaaaaaccaaaaaaaffffffaaaabbbbbbb
-aaaaffgaaaaaaaccccccddafffffgaaaabbbbbbb
-aaaaaffgaaaaaaccccccddaagfaaaaabbbbbbbbb
-aaaagfffaaaaaaaaddccffgfffaaaaabbbbbbbbb
-aaaggafffaaaaaaaddccffffffaabbbbbbbbbbbb
-faaaaafffgaaaaaaaaaaaafffgaabbbbbbbbbbbb
-ffaaaagffaaaaaaaaaaaaaggggaabbbbbbbbbbbb
-fffffffffaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-ffffffffaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-"}
diff --git a/maps/submaps/surface_submaps/mountains/backup/IceCave1B.dmm b/maps/submaps/surface_submaps/mountains/backup/IceCave1B.dmm
deleted file mode 100644
index 4bc4a5c69ab..00000000000
--- a/maps/submaps/surface_submaps/mountains/backup/IceCave1B.dmm
+++ /dev/null
@@ -1,40 +0,0 @@
-"a" = (/turf/simulated/wall/solidrock{block_tele = 0},/area/submap/cave/IceCave1)
-"b" = (/turf/template_noop,/area/submap/cave/IceCave1)
-"c" = (/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"d" = (/obj/machinery/crystal/ice,/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"e" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"f" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"g" = (/obj/machinery/crystal/ice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"h" = (/obj/random/firstaid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"i" = (/obj/random/ammo,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaabbbbbbbbbbaaaaaaaaaa
-aacccccdccccccccddaabbbbbbbbbbaaaefggaaa
-aaccccccccccccccddaaabbbbbbbbaaagfffghaa
-aaccccccccccccccaaaaaaaaaaaaaaaafffffiaa
-aaccccccccccdcccaaaaaaaaaaaaaaaffffffeaa
-aadccccccccccccdaaaaaaccccdccggffffffaaa
-aaccccccccccccccaaaaaacccccccffffgefgaaa
-aaccccccccccccccffffffdccccccgggaaaaaaaa
-aacccccccccdccccffggffccdcccdgggaaaaaaab
-aaccdcccccccccccaaaaaaddaaaaaaaaaaabbbbb
-aaccccdccccccccdaaaaaaddageffffaaaabbbbb
-aaccccccdcccccccaaggffgdagfffffaabbbbbbb
-aaccccccccccccccaafffffgaaafafgaabbbbbbb
-aaaaaadddddddddfffffgfffffffaffaabbbbbbb
-aaaaaagggfffgddddggggggffgffaffaabbbbbbb
-aagggfffffffffccaaaaaaaafffgagfaabbbbbbb
-aagfffffffffffccaaaaaaaaggggaffaabbbbbbb
-aaaggfaaaaaaaaccaaaaaaagfffffffaabbbbbbb
-aaaaffaaaaaaaaccaaaaaaaffffffaaaabbbbbbb
-aaaaffgaaaaaaaccccccddafffffgaaaabbbbbbb
-aaaaaffgaaaaaaccccccddaagfaaaaabbbbbbbbb
-aaaagfffaaaaaaaaddccffgfffaaaaabbbbbbbbb
-aaaggafffaaaaaaaddccffffffaabbbbbbbbbbbb
-faaaaafffgaaaaaaaaaaaafffgaabbbbbbbbbbbb
-ffaaaagffaaaaaaaaaaaaaggggaabbbbbbbbbbbb
-fffffffffaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-ffffffffaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-"}
diff --git a/maps/submaps/surface_submaps/mountains/backup/IceCave1C.dmm b/maps/submaps/surface_submaps/mountains/backup/IceCave1C.dmm
deleted file mode 100644
index 4bc4a5c69ab..00000000000
--- a/maps/submaps/surface_submaps/mountains/backup/IceCave1C.dmm
+++ /dev/null
@@ -1,40 +0,0 @@
-"a" = (/turf/simulated/wall/solidrock{block_tele = 0},/area/submap/cave/IceCave1)
-"b" = (/turf/template_noop,/area/submap/cave/IceCave1)
-"c" = (/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"d" = (/obj/machinery/crystal/ice,/turf/simulated/floor/outdoors/ice{outdoors = 0},/area/submap/cave/IceCave1)
-"e" = (/obj/structure/loot_pile/surface/bones,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"f" = (/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"g" = (/obj/machinery/crystal/ice,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"h" = (/obj/random/firstaid,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-"i" = (/obj/random/ammo,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/IceCave1)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaabbbbbbbbbbbbaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaabbbbbbbbbbaaaaaaaaaa
-aacccccdccccccccddaabbbbbbbbbbaaaefggaaa
-aaccccccccccccccddaaabbbbbbbbaaagfffghaa
-aaccccccccccccccaaaaaaaaaaaaaaaafffffiaa
-aaccccccccccdcccaaaaaaaaaaaaaaaffffffeaa
-aadccccccccccccdaaaaaaccccdccggffffffaaa
-aaccccccccccccccaaaaaacccccccffffgefgaaa
-aaccccccccccccccffffffdccccccgggaaaaaaaa
-aacccccccccdccccffggffccdcccdgggaaaaaaab
-aaccdcccccccccccaaaaaaddaaaaaaaaaaabbbbb
-aaccccdccccccccdaaaaaaddageffffaaaabbbbb
-aaccccccdcccccccaaggffgdagfffffaabbbbbbb
-aaccccccccccccccaafffffgaaafafgaabbbbbbb
-aaaaaadddddddddfffffgfffffffaffaabbbbbbb
-aaaaaagggfffgddddggggggffgffaffaabbbbbbb
-aagggfffffffffccaaaaaaaafffgagfaabbbbbbb
-aagfffffffffffccaaaaaaaaggggaffaabbbbbbb
-aaaggfaaaaaaaaccaaaaaaagfffffffaabbbbbbb
-aaaaffaaaaaaaaccaaaaaaaffffffaaaabbbbbbb
-aaaaffgaaaaaaaccccccddafffffgaaaabbbbbbb
-aaaaaffgaaaaaaccccccddaagfaaaaabbbbbbbbb
-aaaagfffaaaaaaaaddccffgfffaaaaabbbbbbbbb
-aaaggafffaaaaaaaddccffffffaabbbbbbbbbbbb
-faaaaafffgaaaaaaaaaaaafffgaabbbbbbbbbbbb
-ffaaaagffaaaaaaaaaaaaaggggaabbbbbbbbbbbb
-fffffffffaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-ffffffffaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbb
-"}
diff --git a/maps/submaps/surface_submaps/mountains/backup/temple.dmm b/maps/submaps/surface_submaps/mountains/backup/temple.dmm
deleted file mode 100644
index 35a0478e3f8..00000000000
--- a/maps/submaps/surface_submaps/mountains/backup/temple.dmm
+++ /dev/null
@@ -1,69 +0,0 @@
-"a" = (/turf/template_noop,/area/submap/AbandonedTemple)
-"b" = (/turf/simulated/mineral/floor,/area/submap/AbandonedTemple)
-"c" = (/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"d" = (/turf/simulated/wall/sandstone,/area/submap/AbandonedTemple)
-"e" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"f" = (/obj/effect/decal/remains/mummy1,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"g" = (/turf/simulated/wall/sandstonediamond,/area/submap/AbandonedTemple)
-"h" = (/obj/item/weapon/flame/candle/everburn,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"i" = (/obj/item/weapon/ectoplasm,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"j" = (/obj/structure/table/wooden_reinforced,/obj/item/weapon/coin/diamond,/obj/item/weapon/coin/iron,/obj/item/weapon/coin/phoron,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/uranium,/obj/item/weapon/coin/diamond,/obj/item/weapon/coin/iron,/obj/item/weapon/coin/phoron,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/uranium,/obj/item/weapon/coin/diamond,/obj/item/weapon/coin/iron,/obj/item/weapon/coin/phoron,/obj/item/weapon/coin/platinum,/obj/item/weapon/coin/uranium,/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"k" = (/obj/structure/table/wooden_reinforced,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/gold,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/obj/item/weapon/coin/silver,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"l" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"m" = (/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"n" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"o" = (/obj/structure/loot_pile/maint/technical,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"p" = (/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"q" = (/obj/structure/table/woodentable,/obj/item/weapon/pen/red,/obj/item/weapon/flame/lighter/zippo/royal,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"r" = (/obj/effect/rune,/obj/effect/decal/remains/human,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"s" = (/obj/effect/decal/cleanable/blood,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"t" = (/obj/machinery/artifact,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"u" = (/obj/structure/bed/chair/comfy/brown{dir = 4},/obj/effect/decal/cleanable/blood,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"v" = (/obj/structure/table/woodentable,/obj/item/weapon/book/codex/lore/vir,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"w" = (/obj/effect/decal/cleanable/blood/xeno,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"x" = (/obj/effect/decal/cleanable/blood/xeno,/obj/effect/decal/remains/posi,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"y" = (/obj/structure/table/woodentable,/obj/item/weapon/flame/candle/candleabra/everburn,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"z" = (/obj/structure/simple_door/gold,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"A" = (/obj/effect/decal/remains/posi,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"B" = (/obj/machinery/crystal{icon_state = "crystal3"; light_color = "#f44256"; light_power = 3},/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/crystal1)
-"C" = (/obj/structure/flora/pottedplant/dead,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"D" = (/obj/machinery/crystal{icon_state = "crystal3"; light_color = "#f44256"; light_power = 3},/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"E" = (/obj/effect/decal/remains/human,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"F" = (/obj/effect/decal/cleanable/blood,/obj/effect/decal/remains/human,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"G" = (/obj/structure/table/woodentable,/obj/item/weapon/paper/alien{desc = ""; icon_state = "alienpaper_words"; info = "(On the screen of the tablet are several lines of characters written in a language you don't seem to recognize. At the end of each line is a set of numbers seperated by a colon. The screen flickers occasionally, as if damaged. Nothing about the tablet seems particularly interesting, but it does seem very, very old.)"},/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"H" = (/obj/effect/decal/cleanable/blood/xeno,/turf/simulated/floor/carpet/turcarpet,/area/submap/AbandonedTemple)
-"I" = (/obj/structure/table/bench/wooden,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"J" = (/obj/effect/decal/cleanable/cobweb,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"K" = (/obj/structure/table/bench/wooden,/obj/effect/decal/remains/xeno,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"L" = (/obj/structure/simple_door/sandstone,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"M" = (/obj/effect/decal/cleanable/cobweb,/obj/item/weapon/flame/candle/candleabra/everburn,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"N" = (/obj/effect/decal/cleanable/cobweb2,/obj/item/weapon/flame/candle/candleabra/everburn,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/AbandonedTemple)
-"O" = (/obj/effect/decal/cleanable/blood,/turf/simulated/mineral/floor,/area/submap/AbandonedTemple)
-
-(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaa
-aaabbbbbbbbbbbbbbbbbbaaaa
-aaccccccccccccccccccccaaa
-abcddddddddddddddddddcbaa
-abcdefghihgjkgclmgnodcbaa
-abcdpqgcrsgccgctcgccdcbaa
-abcduvghchgppgwccgcxdcbaa
-abcdpygzgggppgggzgncdcbaa
-abcdppgccccccccccgccdcbaa
-abcdppggggzggzggggcAdcbaa
-abcdwcgBCccccccCDgcndcbaa
-abcdcEgccwpFppcccgcldcbaa
-abcdcczcccpGyHlcczwndcbaa
-abcddsgccIIccIIccgnddcbaa
-abcmddgccccccccccgddJcbaa
-abbcmddccKIccIIcsddccbbaa
-abbbccddDccwsccDddccbbbaa
-abbbbccddddLLddddJcbbbbaa
-abbbbbccmdMccNdsccbbbbbaa
-abbbbbbbcdcwccdcbbbbbbbaa
-aabbbbbbcddLLddcbbbbbbaaa
-aaabbbbbsccccsccbbbbbaaaa
-aaaabbbbbbbbObbbbbbbaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaa
-"}
diff --git a/maps/submaps/surface_submaps/mountains/crashed_ufo.dmm b/maps/submaps/surface_submaps/mountains/crashed_ufo.dmm
index d98df500076..d9013d201b2 100644
--- a/maps/submaps/surface_submaps/mountains/crashed_ufo.dmm
+++ b/maps/submaps/surface_submaps/mountains/crashed_ufo.dmm
@@ -9,7 +9,7 @@
"ai" = (/obj/machinery/porta_turret/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aj" = (/obj/structure/loot_pile/surface/alien/engineering,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"ak" = (/obj/structure/prop/alien/computer,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
-"al" = (/obj/item/weapon/wrench/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
+"al" = (/obj/item/weapon/tool/wrench/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"am" = (/obj/structure/bed/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"an" = (/obj/structure/table/alien,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo)
"ao" = (/obj/structure/table/alien,/obj/item/clothing/head/helmet/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
@@ -25,8 +25,8 @@
"ay" = (/obj/structure/prop/alien/computer{ icon_state = "console-c"; dir = 4},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"az" = (/obj/machinery/door/airlock/alien/locked{welded = 1},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aA" = (/obj/structure/bed/alien,/obj/effect/decal/remains/xeno,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
-"aB" = (/obj/item/weapon/screwdriver/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
-"aC" = (/obj/item/weapon/wirecutters/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
+"aB" = (/obj/item/weapon/tool/screwdriver/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
+"aC" = (/obj/item/weapon/tool/wirecutters/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aD" = (/obj/structure/table/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aE" = (/obj/item/device/multitool/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aF" = (/obj/structure/prop/alien/computer/camera/flipped{ icon_state = "camera_flipped"; dir = 4},/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo)
@@ -34,7 +34,7 @@
"aH" = (/obj/machinery/porta_turret/alien,/turf/simulated/shuttle/floor/alien,/area/submap/cave/crashed_ufo)
"aI" = (/obj/machinery/door/airlock/alien/locked{p_open = 1},/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aJ" = (/obj/effect/decal/remains/robot,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
-"aK" = (/obj/item/weapon/crowbar/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
+"aK" = (/obj/item/weapon/tool/crowbar/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aL" = (/obj/item/stack/cable_coil/alien,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aM" = (/obj/structure/table/alien,/obj/item/prop/alien/junk,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
"aN" = (/obj/structure/table/alien,/obj/item/weapon/paper/alien{icon_state = "alienpaper_words"; info = "\[i]This tablet has a large collection of symbols that you've never seen before outside this ship. You have no hope of figuring out what any of the mean...\[/i]"},/obj/item/device/gps/internal/poi,/turf/simulated/shuttle/floor/alienplating,/area/submap/cave/crashed_ufo)
diff --git a/maps/submaps/surface_submaps/mountains/deadBeacon.dmm b/maps/submaps/surface_submaps/mountains/deadBeacon.dmm
index c94a76b9a5c..85eefad2c54 100644
--- a/maps/submaps/surface_submaps/mountains/deadBeacon.dmm
+++ b/maps/submaps/surface_submaps/mountains/deadBeacon.dmm
@@ -27,7 +27,7 @@
"A" = (/obj/item/weapon/circuitboard/broken,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/deadBeacon)
"B" = (/obj/structure/grille/broken,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
"C" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
-"D" = (/obj/item/weapon/cigbutt,/obj/item/weapon/wrench,/obj/machinery/light/built,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
+"D" = (/obj/item/weapon/cigbutt,/obj/item/weapon/tool/wrench,/obj/machinery/light/built,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"E" = (/obj/item/weapon/material/shard,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"F" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled/asteroid_steel,/area/submap/cave/deadBeacon)
"G" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/submap/cave/deadBeacon)
diff --git a/maps/submaps/surface_submaps/mountains/deadspy.dmm b/maps/submaps/surface_submaps/mountains/deadspy.dmm
index f22e0d3e612..15b57e5fcee 100644
--- a/maps/submaps/surface_submaps/mountains/deadspy.dmm
+++ b/maps/submaps/surface_submaps/mountains/deadspy.dmm
@@ -8,7 +8,7 @@
"h" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/random/landmine,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
"i" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/molten_item,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
"j" = (/obj/item/weapon/material/butterfly,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
-"k" = (/obj/effect/decal/remains/human,/obj/item/weapon/wrench,/obj/item/clothing/head/hardhat,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
+"k" = (/obj/effect/decal/remains/human,/obj/item/weapon/tool/wrench,/obj/item/clothing/head/hardhat,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
"l" = (/obj/item/weapon/flame/lighter/zippo,/obj/effect/decal/cleanable/liquid_fuel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
"m" = (/obj/effect/decal/remains/human,/obj/item/clothing/mask/balaclava,/obj/item/clothing/under/suit_jacket/really_black,/obj/effect/decal/cleanable/ash,/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/ash,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
"n" = (/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/liquid_fuel,/obj/effect/decal/cleanable/ash,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/deadspy)
diff --git a/maps/submaps/surface_submaps/mountains/digsite.dmm b/maps/submaps/surface_submaps/mountains/digsite.dmm
index 928a1a85ec9..f97910d431f 100644
--- a/maps/submaps/surface_submaps/mountains/digsite.dmm
+++ b/maps/submaps/surface_submaps/mountains/digsite.dmm
@@ -32,7 +32,7 @@
"F" = (/obj/structure/boulder,/obj/effect/decal/mecha_wreckage/ripley,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
"G" = (/obj/structure/boulder,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
"H" = (/obj/structure/loot_pile/maint/junk,/turf/simulated/floor/plating/external,/area/submap/cave/digsite)
-"I" = (/obj/structure/table/steel,/obj/item/weapon/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
+"I" = (/obj/structure/table/steel,/obj/item/weapon/tool/wrench,/obj/item/weapon/storage/box/samplebags,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
"J" = (/obj/structure/table/steel,/obj/item/stack/flag/yellow,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
"K" = (/obj/random/toolbox,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
"L" = (/obj/structure/closet/crate,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/digsite)
diff --git a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm
index b1610b1ec7e..565fac90bf2 100644
--- a/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm
+++ b/maps/submaps/surface_submaps/mountains/quarantineshuttle.dmm
@@ -64,7 +64,7 @@
"bl" = (/obj/structure/closet/crate/secure/science{icon_state = "scisecurecrateopen"; locked = 0; name = "Virus Samples - FRAGILE"; opened = 1},/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/obj/item/weapon/virusdish/random,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
"bm" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/obj/effect/decal/remains/human,/obj/item/clothing/under/mbill{desc = "A uniform belonging to Major Bill's Transportation, a shipping megacorporation. This looks at least a few decades out of date."; name = "\improper old Major Bill's uniform"},/obj/item/clothing/head/soft/mbill{desc = "It's a ballcap bearing the colors of Major Bill's Shipping. This one looks at least a few decades out of date."; name = "old shipping cap"},/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bn" = (/obj/structure/table/standard,/obj/item/device/taperecorder,/turf/simulated/shuttle/floor,/area/submap/cave/qShuttle)
-"bo" = (/obj/item/weapon/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
+"bo" = (/obj/item/weapon/tool/crowbar/red,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
"bp" = (/obj/item/trash/chips,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
"bq" = (/obj/structure/bed/chair,/turf/simulated/shuttle/floor{ icon_state = "floor_yellow"},/area/submap/cave/qShuttle)
"br" = (/obj/structure/bed/chair,/obj/effect/decal/cleanable/dirt,/turf/simulated/shuttle/floor{ icon_state = "floor_white"},/area/submap/cave/qShuttle)
@@ -112,7 +112,7 @@
"ch" = (/obj/structure/table/steel,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"ci" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/syringe/antiviral,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cj" = (/obj/structure/table/steel,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the 'Space' from Space Cleaner and written in Chemistry. Scrawled on the back is, 'Okay, whoever filled this with polytrinic acid, it was only funny the first time. It was hard enough replacing the CMO's first cat!'"; name = "Chemistry Cleaner"},/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
-"ck" = (/obj/structure/table/steel,/obj/item/weapon/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
+"ck" = (/obj/structure/table/steel,/obj/item/weapon/tool/crowbar/power,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cl" = (/obj/structure/table/rack,/obj/item/clothing/head/bio_hood,/obj/item/clothing/suit/bio_suit,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cm" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
"cn" = (/obj/structure/closet/crate/medical,/turf/simulated/mineral/floor/ignore_mapgen,/area/submap/cave/qShuttle)
diff --git a/maps/submaps/surface_submaps/plains/construction1.dmm b/maps/submaps/surface_submaps/plains/construction1.dmm
index 96dce1f425f..23577514eea 100644
--- a/maps/submaps/surface_submaps/plains/construction1.dmm
+++ b/maps/submaps/surface_submaps/plains/construction1.dmm
@@ -8,7 +8,7 @@
"h" = (/obj/structure/firedoor_assembly,/obj/structure/grille,/turf/simulated/floor/plating/external,/area/submap/construction1)
"i" = (/obj/item/clothing/gloves/black,/turf/simulated/floor/outdoors/rocks,/area/template_noop)
"j" = (/turf/simulated/floor/tiled/external,/area/submap/construction1)
-"k" = (/obj/item/weapon/wrench,/turf/simulated/floor/plating/external,/area/submap/construction1)
+"k" = (/obj/item/weapon/tool/wrench,/turf/simulated/floor/plating/external,/area/submap/construction1)
"l" = (/turf/simulated/wall,/area/submap/construction1)
"m" = (/obj/structure/loot_pile/maint/technical,/turf/simulated/floor/plating/external,/area/submap/construction1)
"n" = (/obj/item/weapon/pickaxe/drill,/turf/simulated/floor/outdoors/rocks,/area/template_noop)
@@ -27,7 +27,7 @@
"A" = (/obj/item/weapon/shovel,/turf/simulated/floor/plating/external,/area/submap/construction1)
"B" = (/obj/item/weapon/airlock_electronics,/turf/simulated/floor/plating/external,/area/submap/construction1)
"C" = (/obj/item/weapon/weldingtool/largetank,/turf/simulated/floor/tiled/external,/area/submap/construction1)
-"D" = (/obj/item/weapon/crowbar,/turf/simulated/floor/plating/external,/area/submap/construction1)
+"D" = (/obj/item/weapon/tool/crowbar,/turf/simulated/floor/plating/external,/area/submap/construction1)
"E" = (/obj/item/clothing/glasses/welding,/turf/simulated/floor/plating/external,/area/submap/construction1)
"F" = (/obj/item/clothing/suit/storage/hazardvest,/turf/simulated/floor/plating/external,/area/submap/construction1)
diff --git a/polaris.dme b/polaris.dme
index f350f40925e..0d0d11afc52 100644
--- a/polaris.dme
+++ b/polaris.dme
@@ -945,7 +945,6 @@
#include "code\game\objects\items\weapons\syndie.dm"
#include "code\game\objects\items\weapons\tape.dm"
#include "code\game\objects\items\weapons\teleportation.dm"
-#include "code\game\objects\items\weapons\tools.dm"
#include "code\game\objects\items\weapons\towels.dm"
#include "code\game\objects\items\weapons\traps.dm"
#include "code\game\objects\items\weapons\trays.dm"
@@ -1034,6 +1033,11 @@
#include "code\game\objects\items\weapons\tanks\jetpack.dm"
#include "code\game\objects\items\weapons\tanks\tank_types.dm"
#include "code\game\objects\items\weapons\tanks\tanks.dm"
+#include "code\game\objects\items\weapons\tools\crowbar.dm"
+#include "code\game\objects\items\weapons\tools\screwdriver.dm"
+#include "code\game\objects\items\weapons\tools\weldingtool.dm"
+#include "code\game\objects\items\weapons\tools\wirecutters.dm"
+#include "code\game\objects\items\weapons\tools\wrench.dm"
#include "code\game\objects\random\_random.dm"
#include "code\game\objects\random\guns_and_ammo.dm"
#include "code\game\objects\random\maintenance.dm"