diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm
index 32bd167fbd6..6f4475460a1 100644
--- a/code/game/objects/items/RPD.dm
+++ b/code/game/objects/items/RPD.dm
@@ -1,8 +1,3 @@
-/*
-CONTAINS:
-RPD
-*/
-
#define ATMOS_CATEGORY 0
#define DISPOSALS_CATEGORY 1
#define TRANSIT_CATEGORY 2
@@ -210,7 +205,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
icon_state = "[icon_state]_preview"
/obj/item/pipe_dispenser
- name = "Rapid Pipe Dispenser (RPD)"
+ name = "Rapid Pipe Dispenser"
desc = "A device used to rapidly pipe things."
icon = 'icons/obj/tools.dmi'
icon_state = "rpd"
@@ -283,6 +278,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
first_transit = GLOB.transit_tube_recipes[GLOB.transit_tube_recipes[1]][1]
recipe = first_atmos
+ register_item_context()
/obj/item/pipe_dispenser/Destroy()
qdel(spark_system)
@@ -339,6 +335,14 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
return TRUE
return ..()
+/obj/item/pipe_dispenser/add_item_context(obj/item/source, list/context, atom/target, mob/living/user)
+ . = ..()
+ if(istype(target, /obj/machinery/atmospherics))
+ var/obj/machinery/atmospherics/atmos_target = target
+ if(atmos_target.pipe_color && atmos_target.piping_layer)
+ context[SCREENTIP_CONTEXT_RMB] = "Copy piping color and layer"
+ return CONTEXTUAL_SCREENTIP_SET
+
/**
* Installs an upgrade into the RPD
*
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
index f33eb7fc3bb..2550c37a8cd 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/passive_gate.dm
@@ -20,9 +20,20 @@ Passive gate is similar to the regular pump except:
///Set the target pressure the component should arrive to
var/target_pressure = ONE_ATMOSPHERE
+/obj/machinery/atmospherics/components/binary/passive_gate/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/machinery/atmospherics/components/binary/passive_gate/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize target pressure"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/binary/passive_gate/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
index a208bc9d3e6..93192073275 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pressure_valve.dm
@@ -12,9 +12,20 @@
///Check if the gas is moving from one pipenet to the other
var/is_gas_flowing = FALSE
+/obj/machinery/atmospherics/components/binary/pressure_valve/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/machinery/atmospherics/components/binary/pressure_valve/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize target pressure"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/binary/pressure_valve/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
index e71d4695338..006d9c95648 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/pump.dm
@@ -27,10 +27,18 @@
AddComponent(/datum/component/usb_port, list(
/obj/item/circuit_component/atmos_pump,
))
+ register_context()
+
+/obj/machinery/atmospherics/components/binary/pump/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize target pressure"
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/atmospherics/components/binary/pump/CtrlClick(mob/user)
if(can_interact(user))
set_on(!on)
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm
index b9295a4d2cd..eca182b9bf4 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_gate.dm
@@ -17,9 +17,20 @@
///Check if the gas is moving from one pipenet to the other
var/is_gas_flowing = FALSE
+/obj/machinery/atmospherics/components/binary/temperature_gate/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/machinery/atmospherics/components/binary/temperature_gate/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize target temperature"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/binary/temperature_gate/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm
index acdcfd90ac7..b33f8845d46 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/temperature_pump.dm
@@ -12,9 +12,20 @@
///Maximum allowed transfer percentage
var/max_heat_transfer_rate = 100
+/obj/machinery/atmospherics/components/binary/temperature_pump/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/machinery/atmospherics/components/binary/temperature_pump/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize transfer rate"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/binary/temperature_pump/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
index d7dc3867319..180f6d66c5e 100644
--- a/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
+++ b/code/modules/atmospherics/machinery/components/binary_devices/volume_pump.dm
@@ -36,6 +36,7 @@
/obj/machinery/atmospherics/components/binary/volume_pump/CtrlClick(mob/user)
if(can_interact(user))
set_on(!on)
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
@@ -103,9 +104,11 @@
/obj/machinery/atmospherics/components/binary/volume_pump/add_context(atom/source, list/context, obj/item/held_item, mob/user)
. = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize transfer rate"
if(held_item && held_item.tool_behaviour == TOOL_MULTITOOL)
context[SCREENTIP_CONTEXT_LMB] = "[overclocked ? "En" : "Dis"]able pressure limits"
- return CONTEXTUAL_SCREENTIP_SET
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/atmospherics/components/binary/volume_pump/ui_interact(mob/user, datum/tgui/ui)
ui = SStgui.try_update_ui(user, src, ui)
diff --git a/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm b/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm
index 89486599740..d314e7eb79b 100644
--- a/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm
+++ b/code/modules/atmospherics/machinery/components/electrolyzer/electrolyzer.dm
@@ -38,22 +38,19 @@
cell = new cell(src)
SSair.start_processing_machine(src)
update_appearance()
+ register_context()
- AddElement( \
- /datum/element/contextual_screentip_bare_hands, \
- rmb_text = "Toggle power", \
- )
-
- var/static/list/tool_behaviors = list(
- TOOL_SCREWDRIVER = list(
- SCREENTIP_CONTEXT_LMB = "Open hatch",
- ),
-
- TOOL_WRENCH = list(
- SCREENTIP_CONTEXT_LMB = "Anchor",
- ),
- )
- AddElement(/datum/element/contextual_screentip_tools, tool_behaviors)
+/obj/machinery/electrolyzer/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Turn [on ? "off" : "on"]"
+ if(!held_item)
+ return CONTEXTUAL_SCREENTIP_SET
+ switch(held_item.tool_behaviour)
+ if(TOOL_SCREWDRIVER)
+ context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel"
+ if(TOOL_WRENCH)
+ context[SCREENTIP_CONTEXT_LMB] = "[anchored ? "Unan" : "An"]chor"
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/electrolyzer/Destroy()
if(cell)
@@ -68,14 +65,15 @@
/obj/machinery/electrolyzer/examine(mob/user)
. = ..()
- . += "\The [src] is [on ? "on" : "off"], and the hatch is [panel_open ? "open" : "closed"]."
+ . += "\The [src] is [on ? "on" : "off"], and the panel is [panel_open ? "open" : "closed"]."
if(cell)
. += "The charge meter reads [cell ? round(cell.percent(), 1) : 0]%."
else
. += "There is no power cell installed."
if(in_range(user, src) || isobserver(user))
- . += span_notice("Right-click to toggle [on ? "off" : "on"].")
+ . += span_notice("Alt-click to toggle [on ? "off" : "on"].")
+ . += span_notice("Anchor to drain power from APC instead of cell")
. += span_notice("It will drain power from the [anchored ? "area's APC" : "internal power cell"].")
@@ -158,7 +156,7 @@
/obj/machinery/electrolyzer/screwdriver_act(mob/living/user, obj/item/tool)
tool.play_tool_sound(src, 50)
toggle_panel_open()
- user.visible_message(span_notice("\The [user] [panel_open ? "opens" : "closes"] the hatch on \the [src]."), span_notice("You [panel_open ? "open" : "close"] the hatch on \the [src]."))
+ balloon_alert(user, "[panel_open ? "opened" : "closed"] panel")
update_appearance()
return TRUE
@@ -174,34 +172,38 @@
add_fingerprint(user)
if(istype(I, /obj/item/stock_parts/cell))
if(!panel_open)
- to_chat(user, span_warning("The hatch must be open to insert a power cell!"))
+ balloon_alert(user, "open panel!")
return
if(cell)
- to_chat(user, span_warning("There is already a power cell inside!"))
+ balloon_alert(user, "cell inside!")
return
if(!user.transferItemToLoc(I, src))
return
cell = I
I.add_fingerprint(usr)
-
- user.visible_message(span_notice("\The [user] inserts a power cell into \the [src]."), span_notice("You insert the power cell into \the [src]."))
+ balloon_alert(user, "inserted cell")
SStgui.update_uis(src)
return
return ..()
-/obj/machinery/electrolyzer/attack_hand_secondary(mob/user, list/modifiers)
+/obj/machinery/electrolyzer/AltClick(mob/user)
+ . = ..()
+ if(panel_open)
+ balloon_alert(user, "close panel!")
+ return
if(!can_interact(user))
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+ return
toggle_power(user)
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
/obj/machinery/electrolyzer/proc/toggle_power(user)
+ if(!anchored && !cell)
+ balloon_alert(user, "insert cell or anchor!")
+ return
on = !on
mode = ELECTROLYZER_MODE_STANDBY
- if(!isnull(user))
- balloon_alert(user, "turned [on ? "on" : "off"]")
update_appearance()
+ balloon_alert(user, "turned [on ? "on" : "off"]")
if(on)
SSair.start_processing_machine(src)
diff --git a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm
index 56933324ad4..7cb547c0ba7 100644
--- a/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm
+++ b/code/modules/atmospherics/machinery/components/gas_recipe_machines/crystallizer.dm
@@ -39,6 +39,19 @@
/obj/machinery/atmospherics/components/binary/crystallizer/Initialize(mapload)
. = ..()
internal = new
+ register_context()
+
+/obj/machinery/atmospherics/components/binary/crystallizer/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ if(!held_item)
+ return CONTEXTUAL_SCREENTIP_SET
+ switch(held_item.tool_behaviour)
+ if(TOOL_SCREWDRIVER)
+ context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel"
+ if(TOOL_WRENCH)
+ context[SCREENTIP_CONTEXT_LMB] = "Rotate"
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/atmospherics/components/binary/crystallizer/attackby(obj/item/I, mob/user, params)
if(!on)
@@ -102,13 +115,18 @@
else
icon_state = "[base_icon_state]-off"
-/obj/machinery/atmospherics/components/binary/crystallizer/attackby_secondary(obj/item/tool, mob/user, params)
+/obj/machinery/atmospherics/components/binary/crystallizer/CtrlClick(mob/living/user)
if(!can_interact(user))
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+ return
+ if(panel_open)
+ balloon_alert(user, "close panel!")
+ return
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_icon()
- return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
+ return ..()
+
///Checks if the reaction temperature is inside the range of temperature + a little deviation
/obj/machinery/atmospherics/components/binary/crystallizer/proc/check_temp_requirements()
if(internal.temperature >= selected_recipe.min_temp * MIN_DEVIATION_RATE && internal.temperature <= selected_recipe.max_temp * MAX_DEVIATION_RATE)
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
index ec34d3d9a0a..7af7d33e111 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/filter.dm
@@ -14,9 +14,20 @@
///What gases are we filtering, by typepath
var/list/filter_type = list()
+/obj/machinery/atmospherics/components/trinary/filter/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/machinery/atmospherics/components/trinary/filter/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize transfer rate"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/trinary/filter/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
@@ -164,7 +175,7 @@
/obj/machinery/atmospherics/components/trinary/filter/can_unwrench(mob/user)
. = ..()
if(. && on && is_operational)
- to_chat(user, span_warning("You cannot unwrench [src], turn it off first!"))
+ balloon_alert(user, "turn off!")
return FALSE
// mapping
diff --git a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
index dd2fe39a9c1..b9fb506faf1 100644
--- a/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
+++ b/code/modules/atmospherics/machinery/components/trinary_devices/mixer.dm
@@ -17,9 +17,20 @@
var/node2_concentration = 0.5
//node 3 is the outlet, nodes 1 & 2 are intakes
+/obj/machinery/atmospherics/components/trinary/mixer/Initialize(mapload)
+ . = ..()
+ register_context()
+
+/obj/machinery/atmospherics/components/trinary/mixer/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize target pressure"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/trinary/mixer/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm b/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm
index f28abc7cb84..264ecd5ebf9 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/bluespace_sender.dm
@@ -46,6 +46,7 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component
GLOB.bluespace_senders += src
update_appearance()
+ register_context()
/obj/machinery/atmospherics/components/unary/bluespace_sender/Destroy()
if(bluespace_network.total_moles())
@@ -56,6 +57,24 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component
return ..()
+/obj/machinery/atmospherics/components/unary/bluespace_sender/examine(mob/user)
+ . = ..()
+ . += span_notice("With the panel open:")
+ . += span_notice(" -Use a wrench with left-click to rotate [src] and right-click to unanchor it.")
+
+/obj/machinery/atmospherics/components/unary/bluespace_sender/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ if(!held_item)
+ return CONTEXTUAL_SCREENTIP_SET
+ switch(held_item.tool_behaviour)
+ if(TOOL_SCREWDRIVER)
+ context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel"
+ if(TOOL_WRENCH)
+ context[SCREENTIP_CONTEXT_LMB] = "Rotate"
+ context[SCREENTIP_CONTEXT_RMB] = "[anchored ? "Unan" : "An"]chor"
+ return CONTEXTUAL_SCREENTIP_SET
+
/obj/machinery/atmospherics/components/unary/bluespace_sender/update_icon_state()
if(panel_open)
icon_state = "[base_icon_state]_open"
@@ -84,10 +103,10 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component
/obj/machinery/atmospherics/components/unary/bluespace_sender/screwdriver_act(mob/living/user, obj/item/tool)
if(on)
- to_chat(user, span_notice("You can't open [src] while it's on!"))
+ balloon_alert(user, "turn off!")
return TOOL_ACT_TOOLTYPE_SUCCESS
if(!anchored)
- to_chat(user, span_notice("Anchor [src] first!"))
+ balloon_alert(user, "anchor!")
return TOOL_ACT_TOOLTYPE_SUCCESS
if(default_deconstruction_screwdriver(user, "[base_icon_state]_open", "[base_icon_state]", tool))
change_pipe_connection(panel_open)
@@ -112,6 +131,7 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component
/obj/machinery/atmospherics/components/unary/bluespace_sender/wrench_act_secondary(mob/living/user, obj/item/tool)
if(!panel_open)
+ balloon_alert(user, "open panel!")
return
if(default_unfasten_wrench(user, tool))
return TOOL_ACT_TOOLTYPE_SUCCESS
@@ -129,6 +149,7 @@ GLOBAL_LIST_EMPTY_TYPED(bluespace_senders, /obj/machinery/atmospherics/component
if(!can_interact(user))
return
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
index 7319717b533..1be0cf135fa 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/cryo.dm
@@ -134,6 +134,7 @@
vis_contents += occupant_vis
if(airs[1])
airs[1].volume = CELL_VOLUME * 0.5
+ register_context()
/obj/machinery/atmospherics/components/unary/cryo_cell/on_changed_z_level(turf/old_turf, turf/new_turf, same_z_layer, notify_contents)
. = ..()
@@ -165,6 +166,20 @@
if(in_range(user, src) || isobserver(user))
. += span_notice("The status display reads: Efficiency at [efficiency*100]%.")
+/obj/machinery/atmospherics/components/unary/cryo_cell/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "[state_open ? "Close" : "Open"] door"
+ if(!held_item)
+ return CONTEXTUAL_SCREENTIP_SET
+ switch(held_item.tool_behaviour)
+ if(TOOL_SCREWDRIVER)
+ context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel"
+ if(TOOL_WRENCH)
+ context[SCREENTIP_CONTEXT_LMB] = "Rotate"
+ return CONTEXTUAL_SCREENTIP_SET
+
+
/obj/machinery/atmospherics/components/unary/cryo_cell/Destroy()
vis_contents.Cut()
@@ -534,11 +549,13 @@
/obj/machinery/atmospherics/components/unary/cryo_cell/CtrlClick(mob/user)
if(can_interact(user) && !state_open)
- set_on(!on)
+ if(set_on(!on))
+ balloon_alert(user, "turned [on ? "on" : "off"]")
return ..()
/obj/machinery/atmospherics/components/unary/cryo_cell/AltClick(mob/user)
if(can_interact(user))
+ balloon_alert(user, "[state_open ? "closing" : "opening"] door")
if(state_open)
close_machine()
else
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
index ad8cf8fafdd..bf79819e01b 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/outlet_injector.dm
@@ -28,6 +28,13 @@
)
)
AddElement(/datum/element/contextual_screentip_tools, tool_screentips)
+ register_context()
+
+/obj/machinery/atmospherics/components/unary/outlet_injector/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Maximize transfer rate"
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/atmospherics/components/unary/outlet_injector/examine(mob/user)
. = ..()
@@ -60,6 +67,7 @@
/obj/machinery/atmospherics/components/unary/outlet_injector/CtrlClick(mob/user)
if(can_interact(user))
on = !on
+ balloon_alert(user, "turned [on ? "on" : "off"]")
investigate_log("was turned [on ? "on" : "off"] by [key_name(user)]", INVESTIGATE_ATMOS)
update_appearance()
return ..()
diff --git a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
index 94b1fa4bb57..ae3d231b85c 100644
--- a/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
+++ b/code/modules/atmospherics/machinery/components/unary_devices/thermomachine.dm
@@ -43,6 +43,24 @@
. = ..()
RefreshParts()
update_appearance()
+ register_context()
+
+/obj/machinery/atmospherics/components/unary/thermomachine/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ . = ..()
+ context[SCREENTIP_CONTEXT_CTRL_LMB] = "Turn [on ? "off" : "on"]"
+ context[SCREENTIP_CONTEXT_ALT_LMB] = "Reset temperature"
+ if(!held_item)
+ return CONTEXTUAL_SCREENTIP_SET
+ switch(held_item.tool_behaviour)
+ if(TOOL_SCREWDRIVER)
+ context[SCREENTIP_CONTEXT_LMB] = "[panel_open ? "Close" : "Open"] panel"
+ if(TOOL_WRENCH)
+ context[SCREENTIP_CONTEXT_LMB] = "Rotate"
+ context[SCREENTIP_CONTEXT_RMB] = "[anchored ? "Unan" : "An"]chor"
+ if(TOOL_MULTITOOL)
+ context[SCREENTIP_CONTEXT_LMB] = "Change piping layer"
+ context[SCREENTIP_CONTEXT_RMB] = "Change piping color"
+ return CONTEXTUAL_SCREENTIP_SET
/obj/machinery/atmospherics/components/unary/thermomachine/is_connectable()
if(!anchored || panel_open)
@@ -126,6 +144,9 @@
. += span_notice("Temperature range [min_temperature]K - [max_temperature]K ([(T0C-min_temperature)*-1]C - [(T0C-max_temperature)*-1]C).")
/obj/machinery/atmospherics/components/unary/thermomachine/AltClick(mob/living/user)
+ if(panel_open)
+ balloon_alert(user, "close panel!")
+ return
if(!can_interact(user))
return
target_temperature = T20C
@@ -172,10 +193,10 @@
/obj/machinery/atmospherics/components/unary/thermomachine/screwdriver_act(mob/living/user, obj/item/tool)
if(on)
- to_chat(user, span_notice("You can't open [src] while it's on!"))
+ balloon_alert(user, "turn off!")
return TOOL_ACT_TOOLTYPE_SUCCESS
if(!anchored)
- to_chat(user, span_notice("Anchor [src] first!"))
+ balloon_alert(user, "anchor!")
return TOOL_ACT_TOOLTYPE_SUCCESS
if(default_deconstruction_screwdriver(user, "thermo-open", "thermo-0", tool))
change_pipe_connection(panel_open)
@@ -189,7 +210,8 @@
/obj/machinery/atmospherics/components/unary/thermomachine/multitool_act(mob/living/user, obj/item/multitool/multitool)
if(!panel_open)
- return
+ balloon_alert(user, "open panel!")
+ return TOOL_ACT_TOOLTYPE_SUCCESS
piping_layer = (piping_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (piping_layer + 1)
to_chat(user, span_notice("You change the circuitboard to layer [piping_layer]."))
update_appearance()
@@ -204,7 +226,8 @@
/obj/machinery/atmospherics/components/unary/thermomachine/multitool_act_secondary(mob/living/user, obj/item/tool)
if(!panel_open)
- return
+ balloon_alert(user, "open panel!")
+ return TOOL_ACT_TOOLTYPE_SUCCESS
color_index = (color_index >= GLOB.pipe_paint_colors.len) ? (color_index = 1) : (color_index = 1 + color_index)
set_pipe_color(GLOB.pipe_paint_colors[GLOB.pipe_paint_colors[color_index]])
visible_message(span_notice("[user] set [src]'s pipe color to [GLOB.pipe_color_name[pipe_color]]."), ignored_mobs = user)
@@ -286,6 +309,9 @@
update_appearance()
/obj/machinery/atmospherics/components/unary/thermomachine/CtrlClick(mob/living/user)
+ if(panel_open)
+ balloon_alert(user, "close panel!")
+ return
if(!panel_open)
if(!can_interact(user))
return
diff --git a/icons/obj/atmospherics/components/binary_devices.dmi b/icons/obj/atmospherics/components/binary_devices.dmi
index 44afed1e43a..407e9fc94f4 100644
Binary files a/icons/obj/atmospherics/components/binary_devices.dmi and b/icons/obj/atmospherics/components/binary_devices.dmi differ