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