From 19ee7f8bd2386ed8a50f3d0ea5441508de9798b6 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Wed, 19 Jul 2023 20:51:25 -0300 Subject: [PATCH 1/4] some hints --- code/datums/components/gps.dm | 12 +++++++++ code/datums/components/rotation.dm | 18 ++++++++++++- code/datums/elements/mob_holder.dm | 16 +++++++++-- code/game/machinery/ai_slipper.dm | 10 +++++++ code/game/machinery/doors/airlock.dm | 12 +++++++-- code/game/machinery/hologram.dm | 13 +++++++++ code/game/machinery/pipe/construction.dm | 7 +++++ .../machinery/porta_turret/portable_turret.dm | 8 ++++++ code/game/machinery/status_display.dm | 6 +++++ code/game/objects/items/dna_injector.dm | 16 +++++++++++ code/game/objects/structures/bedsheet_bin.dm | 7 +++++ .../atmospherics/machinery/airalarm.dm | 6 +++++ .../atmospherics/machinery/atmosmachinery.dm | 15 +++++++++++ code/modules/clothing/under/_under.dm | 20 ++++++++++++-- .../computers/item/tablet.dm | 11 ++++++++ code/modules/power/apc.dm | 7 +++++ .../reagents/reagent_containers/hypospray.dm | 27 +++++++++++++++++++ code/modules/surgery/tools.dm | 10 +++++++ 18 files changed, 214 insertions(+), 7 deletions(-) diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm index 38b6376716..d78bd799a2 100644 --- a/code/datums/components/gps.dm +++ b/code/datums/components/gps.dm @@ -44,6 +44,7 @@ GLOBAL_LIST_EMPTY(GPS_list) RegisterSignal(parent, COMSIG_ATOM_EMP_ACT, .proc/on_emp_act) RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/on_examine) RegisterSignal(parent, COMSIG_CLICK_ALT, .proc/on_AltClick) + RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, .proc/on_requesting_context_from_item) ///Called on COMSIG_ITEM_ATTACK_SELF /datum/component/gps/item/proc/interact(datum/source, mob/user) @@ -54,6 +55,17 @@ GLOBAL_LIST_EMPTY(GPS_list) /datum/component/gps/item/proc/on_examine(datum/source, mob/user, list/examine_list) examine_list += "Alt-click to switch it [tracking ? "off":"on"]." +/datum/component/gps/item/proc/on_requesting_context_from_item( + obj/source, + list/context, + obj/item/held_item, + mob/living/user, +) + SIGNAL_HANDLER + + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, tracking ? "Turn off" : "Turn on") + return CONTEXTUAL_SCREENTIP_SET + ///Called on COMSIG_ATOM_EMP_ACT /datum/component/gps/item/proc/on_emp_act(datum/source, severity) emped = TRUE diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index b8d629273b..4b0e58df18 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -44,6 +44,7 @@ RegisterSignal(parent, COMSIG_PARENT_EXAMINE, .proc/ExamineMessage) if(rotation_flags & ROTATION_WRENCH) RegisterSignal(parent, COMSIG_PARENT_ATTACKBY, .proc/WrenchRot) + RegisterSignal(parent, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, .proc/on_requesting_context_from_item) /datum/component/simple_rotation/proc/add_verbs() if(rotation_flags & ROTATION_VERBS) @@ -63,7 +64,7 @@ AM.verbs -= /atom/movable/proc/simple_rotate_counterclockwise /datum/component/simple_rotation/proc/remove_signals() - UnregisterSignal(parent, list(COMSIG_CLICK_ALT, COMSIG_PARENT_EXAMINE, COMSIG_PARENT_ATTACKBY)) + UnregisterSignal(parent, list(COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, COMSIG_CLICK_ALT, COMSIG_PARENT_EXAMINE, COMSIG_PARENT_ATTACKBY)) /datum/component/simple_rotation/RegisterWithParent() add_verbs() @@ -157,6 +158,21 @@ /datum/component/simple_rotation/proc/default_after_rotation(mob/user, rotation_type) to_chat(user,"You [rotation_type == ROTATION_FLIP ? "flip" : "rotate"] [parent].") +/datum/component/simple_rotation/proc/on_requesting_context_from_item( + obj/source, + list/context, + obj/item/held_item, + mob/living/user, +) + var/rotation = (rotation_flags & ROTATION_FLIP) ? "Flip" : "Rotate [rotation_flags & ROTATION_CLOCKWISE ? "clockwise" : "counter-clockwise"]" + + if(rotation_flags & ROTATION_ALTCLICK) + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, rotation) + . = CONTEXTUAL_SCREENTIP_SET + if(held_item?.tool_behaviour == TOOL_WRENCH && (rotation_flags & ROTATION_WRENCH)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, rotation) + . = CONTEXTUAL_SCREENTIP_SET + /atom/movable/proc/simple_rotate_clockwise() set name = "Rotate Clockwise" set category = "Object" diff --git a/code/datums/elements/mob_holder.dm b/code/datums/elements/mob_holder.dm index 0a56095437..5f57b4fce3 100644 --- a/code/datums/elements/mob_holder.dm +++ b/code/datums/elements/mob_holder.dm @@ -23,18 +23,30 @@ src.proctype = proctype src.escape_on_find = escape_on_find + RegisterSignal(target, COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, .proc/on_requesting_context_from_item) RegisterSignal(target, COMSIG_CLICK_ALT, .proc/mob_try_pickup) RegisterSignal(target, COMSIG_PARENT_EXAMINE, .proc/on_examine) /datum/element/mob_holder/Detach(datum/source, force) . = ..() - UnregisterSignal(source, COMSIG_CLICK_ALT) - UnregisterSignal(source, COMSIG_PARENT_EXAMINE) + UnregisterSignal(source, list(COMSIG_ATOM_REQUESTING_CONTEXT_FROM_ITEM, COMSIG_CLICK_ALT, COMSIG_PARENT_EXAMINE)) /datum/element/mob_holder/proc/on_examine(mob/living/source, mob/user, list/examine_list) if(ishuman(user) && !istype(source.loc, /obj/item/clothing/head/mob_holder)) examine_list += "Looks like [source.p_they(TRUE)] can be picked up with Alt+Click!" +/datum/element/mob_holder/proc/on_requesting_context_from_item( + obj/source, + list/context, + obj/item/held_item, + mob/living/user, +) + SIGNAL_HANDLER + + if(ishuman(user)) + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Pick up") + return CONTEXTUAL_SCREENTIP_SET + /datum/element/mob_holder/proc/mob_try_pickup(mob/living/source, mob/user) if(!ishuman(user) || !user.Adjacent(source) || user.incapacitated()) return FALSE diff --git a/code/game/machinery/ai_slipper.dm b/code/game/machinery/ai_slipper.dm index 80621e2bcd..b59e71d62e 100644 --- a/code/game/machinery/ai_slipper.dm +++ b/code/game/machinery/ai_slipper.dm @@ -13,6 +13,16 @@ var/cooldown_time = 100 req_access = list(ACCESS_AI_UPLOAD) +/obj/machinery/ai_slipper/Initialize(mapload) + . = ..() + register_context() + +/obj/machinery/ai_slipper/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(issilicon(user)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Dispense foam") + return CONTEXTUAL_SCREENTIP_SET + /obj/machinery/ai_slipper/examine(mob/user) . = ..() . += "It has [uses] uses of foam remaining." diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm index 0b31ecdf9f..d9d6f65e93 100644 --- a/code/game/machinery/doors/airlock.dm +++ b/code/game/machinery/doors/airlock.dm @@ -700,6 +700,14 @@ /obj/machinery/door/airlock/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) . = ..() + if(hasSiliconAccessInArea(user)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Open interface") + LAZYSET(context[SCREENTIP_CONTEXT_SHIFT_LMB], INTENT_ANY, density ? "Open" : "Close") + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, locked ? "Unbolt" : "Bolt") + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, secondsElectrified ? "Un-electrify" : "Electrify") + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_SHIFT_LMB], INTENT_ANY, emergency ? "Disable emergency access" : "Enable emergency access") + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/stack/sheet/plasteel)) LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Reinforce") return CONTEXTUAL_SCREENTIP_SET @@ -720,12 +728,12 @@ return CONTEXTUAL_SCREENTIP_SET if (TOOL_WELDER) - LAZYSET(context[SCREENTIP_CONTEXT_RMB], INTENT_ANY, "Weld shut") + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Weld shut") if (panel_open) switch (security_level) if (AIRLOCK_SECURITY_METAL, AIRLOCK_SECURITY_PLASTEEL_I, AIRLOCK_SECURITY_PLASTEEL_O) - LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Cut shielding") + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_HARM, "Cut shielding") return CONTEXTUAL_SCREENTIP_SET LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Repair") diff --git a/code/game/machinery/hologram.dm b/code/game/machinery/hologram.dm index 755894d906..cd87a858b8 100644 --- a/code/game/machinery/hologram.dm +++ b/code/game/machinery/hologram.dm @@ -80,6 +80,19 @@ Possible to do for anyone motivated enough: /// If we are currently calling another holopad var/calling = FALSE +/obj/machinery/holopad/Initialize(mapload) + . = ..() + register_context() + +/obj/machinery/holopad/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(isAI(user) && on_network) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Project yourself") + if(LAZYLEN(masters) && masters[user]) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Stop projecting") + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Stop projecting") + return CONTEXTUAL_SCREENTIP_SET + /obj/machinery/holopad/secure name = "secure holopad" desc = "It's a floor-mounted device for projecting holographic images. This one will refuse to auto-connect incoming calls." diff --git a/code/game/machinery/pipe/construction.dm b/code/game/machinery/pipe/construction.dm index 8a084353e4..f849d2f31b 100644 --- a/code/game/machinery/pipe/construction.dm +++ b/code/game/machinery/pipe/construction.dm @@ -52,8 +52,15 @@ Buildable meters update() pixel_x += rand(-5, 5) pixel_y += rand(-5, 5) + register_context() return ..() +/obj/item/pipe/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(held_item?.tool_behaviour == TOOL_WRENCH) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Fasten") + return CONTEXTUAL_SCREENTIP_SET + /obj/item/pipe/proc/make_from_existing(obj/machinery/atmospherics/make_from) setDir(make_from.dir) pipename = make_from.name diff --git a/code/game/machinery/porta_turret/portable_turret.dm b/code/game/machinery/porta_turret/portable_turret.dm index f4a82cb883..b94e51b813 100644 --- a/code/game/machinery/porta_turret/portable_turret.dm +++ b/code/game/machinery/porta_turret/portable_turret.dm @@ -930,6 +930,14 @@ DEFINE_BITFIELD(turret_flags, list( pixel_x = (dir & 3)? 0 : (dir == 4 ? -24 : 24) pixel_y = (dir & 3)? (dir ==1 ? -24 : 24) : 0 power_change() //Checks power and initial settings + register_context() + +/obj/machinery/turretid/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(issilicon(user) && !(stat & BROKEN)) + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, enabled ? "Disable" : "Enable") + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, lethal ? "Set to stun" : "Set to kill") + return CONTEXTUAL_SCREENTIP_SET /obj/machinery/turretid/Destroy() turrets.Cut() diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 5aaed2a808..2f2bfffcb0 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -299,6 +299,12 @@ /obj/machinery/status_display/Initialize(mapload, ndir, building) . = ..() update_appearance() + register_context() + +/obj/machinery/status_display/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(isAI(user)) + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Start streaming") // funny /obj/machinery/status_display/evac/Initialize(mapload) . = ..() diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm index f361e557d0..9366f5f935 100644 --- a/code/game/objects/items/dna_injector.dm +++ b/code/game/objects/items/dna_injector.dm @@ -16,6 +16,16 @@ var/used = 0 +/obj/item/dnainjector/Initialize(mapload) + . = ..() + register_item_context() + +/obj/item/dnainjector/add_item_context(obj/item/source, list/context, mob/living/target, mob/living/user) + . = ..() + if(isliving(target) && target.has_dna() && !used) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Inject") + return CONTEXTUAL_SCREENTIP_SET + /obj/item/dnainjector/attack_paw(mob/user) return attack_hand(user) @@ -524,6 +534,12 @@ var/research = FALSE //Set to true to get expended and filled injectors for chromosomes var/filled = FALSE +/obj/item/dnainjector/activator/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = ..() + if(istype(target, /obj/machinery/computer/scan_consolenew) && used) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Recycle") + return CONTEXTUAL_SCREENTIP_SET + /obj/item/dnainjector/activator/inject(mob/living/carbon/M, mob/user) if(M.has_dna() && !HAS_TRAIT_NOT_FROM(M, TRAIT_RADIMMUNE,BLOODSUCKER_TRAIT) && !HAS_TRAIT(M,TRAIT_NOCLONE)) M.radiation += rand(20/(damage_coeff ** 2),50/(damage_coeff ** 2)) diff --git a/code/game/objects/structures/bedsheet_bin.dm b/code/game/objects/structures/bedsheet_bin.dm index 1403eb999c..2c3b0545f8 100644 --- a/code/game/objects/structures/bedsheet_bin.dm +++ b/code/game/objects/structures/bedsheet_bin.dm @@ -65,6 +65,13 @@ GLOBAL_LIST_INIT(double_bedsheets, list(/obj/item/bedsheet/double, if(bedsheet_type == BEDSHEET_DOUBLE) stack_amount *= 2 dying_key = DYE_REGISTRY_DOUBLE_BEDSHEET + register_item_context() + +/obj/item/bedsheet/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = ..() + if(iscarbon(target)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Prepare Surgery") + return CONTEXTUAL_SCREENTIP_SET /obj/item/bedsheet/attack(mob/living/M, mob/user) if(!attempt_initiate_surgery(src, M, user)) diff --git a/code/modules/atmospherics/machinery/airalarm.dm b/code/modules/atmospherics/machinery/airalarm.dm index 90407264ad..19b94eb64e 100644 --- a/code/modules/atmospherics/machinery/airalarm.dm +++ b/code/modules/atmospherics/machinery/airalarm.dm @@ -233,6 +233,12 @@ power_change() set_frequency(frequency) + register_context() + +/obj/machinery/airalarm/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, locked ? "Unlock" : "Lock") + return CONTEXTUAL_SCREENTIP_SET /obj/machinery/airalarm/Destroy() SSradio.remove_object(src, frequency) diff --git a/code/modules/atmospherics/machinery/atmosmachinery.dm b/code/modules/atmospherics/machinery/atmosmachinery.dm index 49fc0322df..a59cd5b304 100644 --- a/code/modules/atmospherics/machinery/atmosmachinery.dm +++ b/code/modules/atmospherics/machinery/atmosmachinery.dm @@ -41,6 +41,10 @@ var/on = FALSE var/interacts_with_air = FALSE +/obj/machinery/atmospherics/Initialize(mapload) + . = ..() + register_context() + /obj/machinery/atmospherics/examine(mob/user) . = ..() if(is_type_in_list(src, GLOB.ventcrawl_machinery) && isliving(user)) @@ -48,6 +52,17 @@ if(SEND_SIGNAL(L, COMSIG_CHECK_VENTCRAWL)) . += "Alt-click to crawl through it." +/obj/machinery/atmospherics/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + + if(can_unwrench && held_item?.tool_behaviour == TOOL_WRENCH) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Unfasten") + . = CONTEXTUAL_SCREENTIP_SET + + if(is_type_in_list(src, GLOB.ventcrawl_machinery) && isliving(user) && SEND_SIGNAL(user, COMSIG_CHECK_VENTCRAWL)) + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Crawl into") + . = CONTEXTUAL_SCREENTIP_SET + /obj/machinery/atmospherics/New(loc, process = TRUE, setdir) if(!isnull(setdir)) setDir(setdir) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 2fc5270a6b..04a39ac8cf 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -99,12 +99,13 @@ has_sensor = BROKEN_SENSORS sensordamage = sensormaxintegrity -/obj/item/clothing/under/New() +/obj/item/clothing/under/Initialize(mapload) if(sensor_flags & SENSOR_RANDOM) //make the sensor mode favor higher levels, except coords. sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) sensor_mode_intended = sensor_mode - ..() + register_context() + return ..() /obj/item/clothing/under/equipped(mob/user, slot) ..() @@ -360,5 +361,20 @@ return TRUE +/obj/item/clothing/under/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if (!(item_flags & IN_INVENTORY)) + return + + if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user))) + return + + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Set to highest sensor") + if(attached_accessory) + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Remove [attached_accessory]") + else + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Adjust [src]") + return CONTEXTUAL_SCREENTIP_SET + /obj/item/clothing/under/rank dying_key = DYE_REGISTRY_UNDER diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 113a0b33fa..f495dadbf2 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -36,6 +36,17 @@ inserted_item = new inserted_item(src) else inserted_item = new /obj/item/pen(src) + register_context() + +/obj/item/modular_computer/tablet/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(can_have_pen) + if(inserted_item) + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Remove [inserted_item]") + . = CONTEXTUAL_SCREENTIP_SET + else if(is_type_in_list(held_item, contained_item)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Insert [held_item]") + . = CONTEXTUAL_SCREENTIP_SET /obj/item/modular_computer/tablet/proc/insert_pen(obj/item/pen) if(!usr.transferItemToLoc(pen, src)) diff --git a/code/modules/power/apc.dm b/code/modules/power/apc.dm index 5e7872b92e..9896cc4088 100644 --- a/code/modules/power/apc.dm +++ b/code/modules/power/apc.dm @@ -290,6 +290,13 @@ set_machine_stat(stat | MAINT) update_appearance() addtimer(CALLBACK(src, .proc/update), 5) + register_context() + +/obj/machinery/power/apc/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + if(operating) + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, locked ? "Unlock" : "Lock") + return CONTEXTUAL_SCREENTIP_SET /obj/machinery/power/apc/Destroy() GLOB.apcs_list -= src diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 75c9f3c117..8eff48a3f8 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -15,6 +15,16 @@ var/ignore_flags = 0 var/infinite = FALSE +/obj/item/reagent_containers/hypospray/Initialize(mapload, vol) + . = ..() + register_item_context() + +/obj/item/reagent_containers/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = ..() + if(iscarbon(target)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Inject") + return CONTEXTUAL_SCREENTIP_SET + /obj/item/reagent_containers/hypospray/attack_paw(mob/user) return attack_hand(user) @@ -378,6 +388,23 @@ if(start_vial) vial = new start_vial update_icon() + register_context() + register_item_context() + +/obj/item/hypospray/mkii/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + // Did you know that clicking something while you're holding it is the same as attack_self()? + if(vial && (held_item == src)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Remove [vial]") + LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Set to [mode ? "spray" : "inject"]") + LAZYSET(context[SCREENTIP_CONTEXT_ALT_LMB], INTENT_ANY, "Set transfer amount") + return CONTEXTUAL_SCREENTIP_SET + +/obj/item/hypospray/mkii/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = ..() + if(iscarbon(target)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, mode ? "Inject" : "Spray") + return CONTEXTUAL_SCREENTIP_SET /obj/item/hypospray/mkii/ComponentInitialize() . = ..() diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm index b193e5917a..f916180b4c 100644 --- a/code/modules/surgery/tools.dm +++ b/code/modules/surgery/tools.dm @@ -349,6 +349,16 @@ w_class = WEIGHT_CLASS_TINY attack_verb = list("slapped") +/obj/item/surgical_drapes/Initialize(mapload) + . = ..() + register_item_context() + +/obj/item/surgical_drapes/add_item_context(obj/item/source, list/context, atom/target, mob/living/user) + . = ..() + if(iscarbon(target)) + LAZYSET(context[SCREENTIP_CONTEXT_LMB], INTENT_ANY, "Prepare Surgery") + return CONTEXTUAL_SCREENTIP_SET + /obj/item/surgical_drapes/attack(mob/living/M, mob/user) if(!attempt_initiate_surgery(src, M, user)) ..() From 86cc2c0b0db7f1b19d4d52fe8b9091a162a8f376 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Wed, 19 Jul 2023 20:57:09 -0300 Subject: [PATCH 2/4] must return --- code/game/machinery/status_display.dm | 1 + 1 file changed, 1 insertion(+) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 2f2bfffcb0..c550f72946 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -305,6 +305,7 @@ . = ..() if(isAI(user)) LAZYSET(context[SCREENTIP_CONTEXT_CTRL_LMB], INTENT_ANY, "Start streaming") // funny + return CONTEXTUAL_SCREENTIP_SET /obj/machinery/status_display/evac/Initialize(mapload) . = ..() From 3645d00ec04a8194fcb34bf7df8dee6610ae3600 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Wed, 19 Jul 2023 21:15:52 -0300 Subject: [PATCH 3/4] alright then --- code/modules/clothing/under/_under.dm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 04a39ac8cf..4c872e5f83 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -99,13 +99,13 @@ has_sensor = BROKEN_SENSORS sensordamage = sensormaxintegrity -/obj/item/clothing/under/Initialize(mapload) +/obj/item/clothing/under/New() if(sensor_flags & SENSOR_RANDOM) //make the sensor mode favor higher levels, except coords. sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) sensor_mode_intended = sensor_mode register_context() - return ..() + ..() /obj/item/clothing/under/equipped(mob/user, slot) ..() From 994ff214d51ff47255738d953e2bf3a6f26255d0 Mon Sep 17 00:00:00 2001 From: SandPoot Date: Sun, 23 Jul 2023 15:06:20 -0300 Subject: [PATCH 4/4] ? --- code/modules/clothing/under/_under.dm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index 4c872e5f83..fc4cee1bed 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -104,9 +104,12 @@ //make the sensor mode favor higher levels, except coords. sensor_mode = pick(SENSOR_OFF, SENSOR_LIVING, SENSOR_LIVING, SENSOR_VITALS, SENSOR_VITALS, SENSOR_VITALS, SENSOR_COORDS, SENSOR_COORDS) sensor_mode_intended = sensor_mode - register_context() ..() +/obj/item/clothing/under/Initialize(mapload) + . = ..() + register_context() + /obj/item/clothing/under/equipped(mob/user, slot) ..() if(adjusted)