diff --git a/code/__DEFINES/mobs.dm b/code/__DEFINES/mobs.dm index 75a033b684a..d343df9d04b 100644 --- a/code/__DEFINES/mobs.dm +++ b/code/__DEFINES/mobs.dm @@ -702,16 +702,6 @@ /// The layer above mutant body parts #define ABOVE_BODY_FRONT_LAYER (BODY_FRONT_LAYER-1) -//used by canUseTopic() -/// If silicons need to be next to the atom to use this -#define BE_CLOSE TRUE -/// If other mobs (monkeys, aliens, etc) can use this -#define NO_DEXTERITY TRUE // I had to change 20+ files because some non-dnd-playing fuckchumbis can't spell "dexterity" -// If telekinesis you can use it from a distance -#define NO_TK TRUE -/// If mobs can use this while resting -#define FLOOR_OKAY TRUE - /// The default mob sprite size (used for shrinking or enlarging the mob sprite to regular size) #define RESIZE_DEFAULT_SIZE 1 diff --git a/code/datums/components/gps.dm b/code/datums/components/gps.dm index 18cc08ccd97..af7d9c5fba7 100644 --- a/code/datums/components/gps.dm +++ b/code/datums/components/gps.dm @@ -91,7 +91,7 @@ GLOBAL_LIST_EMPTY(GPS_list) ///Toggles the tracking for the gps /datum/component/gps/item/proc/toggletracking(mob/user) - if(!user.canUseTopic(parent, BE_CLOSE)) + if(!user.canUseTopic(parent, be_close = TRUE)) return //user not valid to use gps if(emped) to_chat(user, span_warning("It's busted!")) diff --git a/code/datums/components/religious_tool.dm b/code/datums/components/religious_tool.dm index d66aee4c782..6b1fdf1126b 100644 --- a/code/datums/components/religious_tool.dm +++ b/code/datums/components/religious_tool.dm @@ -122,7 +122,7 @@ if(user.mind.holy_role != HOLY_ROLE_HIGHPRIEST) to_chat(user, "You are not the high priest, and therefore cannot select a religious sect.") return - if(!user.canUseTopic(parent, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(parent, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) to_chat(user,span_warning("You cannot select a sect at this time.")) return if(GLOB.religious_sect) @@ -152,7 +152,7 @@ if(performing_rite) to_chat(user, "There is a rite currently being performed here already.") return - if(!user.canUseTopic(parent, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(parent, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) to_chat(user,span_warning("You are not close enough to perform the rite.")) return performing_rite = new path(parent) diff --git a/code/datums/components/rotation.dm b/code/datums/components/rotation.dm index c3f675d0c68..389f074657f 100644 --- a/code/datums/components/rotation.dm +++ b/code/datums/components/rotation.dm @@ -119,7 +119,7 @@ AfterRotation.Invoke(user, degrees) /datum/component/simple_rotation/proc/CanUserRotate(mob/user, degrees) - if(isliving(user) && user.canUseTopic(parent, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(isliving(user) && user.canUseTopic(parent, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return TRUE if((rotation_flags & ROTATION_GHOSTS_ALLOWED) && isobserver(user) && CONFIG_GET(flag/ghost_interaction)) return TRUE diff --git a/code/datums/storage/subtypes/bag_of_holding.dm b/code/datums/storage/subtypes/bag_of_holding.dm index 84e94519ce8..0465e030ae2 100644 --- a/code/datums/storage/subtypes/bag_of_holding.dm +++ b/code/datums/storage/subtypes/bag_of_holding.dm @@ -18,7 +18,7 @@ return var/safety = tgui_alert(user, "Doing this will have extremely dire consequences for the station and its crew. Be sure you know what you're doing.", "Put in [to_insert.name]?", list("Proceed", "Abort")) - if(safety != "Proceed" || QDELETED(to_insert) || QDELETED(resolve_parent) || QDELETED(user) || !user.canUseTopic(resolve_parent, BE_CLOSE, iscarbon(user))) + if(safety != "Proceed" || QDELETED(to_insert) || QDELETED(resolve_parent) || QDELETED(user) || !user.canUseTopic(resolve_parent, be_close = TRUE, no_dexterity = iscarbon(user))) return var/turf/loccheck = get_turf(resolve_parent) diff --git a/code/game/machinery/camera/camera.dm b/code/game/machinery/camera/camera.dm index 20392d3cfc9..512cf624fd7 100644 --- a/code/game/machinery/camera/camera.dm +++ b/code/game/machinery/camera/camera.dm @@ -242,7 +242,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/camera/xray, 0) var/obj/item/choice = tgui_input_list(user, "Select a part to remove", "Part Removal", sort_names(droppable_parts)) if(isnull(choice)) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return to_chat(user, span_notice("You remove [choice] from [src].")) if(choice == assembly.xray_module) diff --git a/code/game/machinery/camera/camera_assembly.dm b/code/game/machinery/camera/camera_assembly.dm index 674b25213a3..8665e5f6fc2 100644 --- a/code/game/machinery/camera/camera_assembly.dm +++ b/code/game/machinery/camera/camera_assembly.dm @@ -203,7 +203,7 @@ var/obj/item/choice = tgui_input_list(user, "Select a part to remove", "Part Removal", sort_names(droppable_parts)) if(isnull(choice)) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return to_chat(user, span_notice("You remove [choice] from [src].")) drop_upgrade(choice) diff --git a/code/game/machinery/civilian_bounties.dm b/code/game/machinery/civilian_bounties.dm index 19f7ea8f703..921f83ba367 100644 --- a/code/game/machinery/civilian_bounties.dm +++ b/code/game/machinery/civilian_bounties.dm @@ -175,7 +175,7 @@ return if(!pad_ref?.resolve()) return - if(!usr.canUseTopic(src, BE_CLOSE) || (machine_stat & (NOPOWER|BROKEN))) + if(!usr.canUseTopic(src, be_close = TRUE) || (machine_stat & (NOPOWER|BROKEN))) return switch(action) if("recalc") diff --git a/code/game/machinery/computer/_computer.dm b/code/game/machinery/computer/_computer.dm index 0b328172f38..6e1174cde49 100644 --- a/code/game/machinery/computer/_computer.dm +++ b/code/game/machinery/computer/_computer.dm @@ -122,7 +122,7 @@ . = ..() if(!can_interact(user)) return - if(!user.canUseTopic(src, !issilicon(user)) || !is_operational) + if(!user.canUseTopic(src, be_close = !issilicon(user)) || !is_operational) return /obj/machinery/computer/ui_interact(mob/user, datum/tgui/ui) diff --git a/code/game/machinery/defibrillator_mount.dm b/code/game/machinery/defibrillator_mount.dm index 648e5ae15d8..e99d9de06b8 100644 --- a/code/game/machinery/defibrillator_mount.dm +++ b/code/game/machinery/defibrillator_mount.dm @@ -155,7 +155,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/defibrillator_mount, 28) return TRUE /obj/machinery/defibrillator_mount/AltClick(mob/living/carbon/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return if(!defib) to_chat(user, span_warning("It'd be hard to remove a defib unit from a mount that has none.")) diff --git a/code/game/machinery/deployable.dm b/code/game/machinery/deployable.dm index b5e833eb45a..1b3348aca73 100644 --- a/code/game/machinery/deployable.dm +++ b/code/game/machinery/deployable.dm @@ -170,7 +170,7 @@ . += span_notice("Alt-click to toggle modes.") /obj/item/grenade/barrier/AltClick(mob/living/carbon/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return toggle_mode(user) diff --git a/code/game/machinery/doors/poddoor.dm b/code/game/machinery/doors/poddoor.dm index e0a30a7be95..a72eaa066db 100644 --- a/code/game/machinery/doors/poddoor.dm +++ b/code/game/machinery/doors/poddoor.dm @@ -36,7 +36,7 @@ if (deconstruction != BLASTDOOR_FINISHED) return var/change_id = tgui_input_number(user, "Set the door controllers ID", "Door Controller ID", id, 100) - if(!change_id || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!change_id || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return id = change_id to_chat(user, span_notice("You change the ID to [id].")) diff --git a/code/game/machinery/fat_sucker.dm b/code/game/machinery/fat_sucker.dm index 48755ef34ff..47f11afc4f1 100644 --- a/code/game/machinery/fat_sucker.dm +++ b/code/game/machinery/fat_sucker.dm @@ -99,7 +99,7 @@ to_chat(user, span_warning("The safety hatch has been disabled!")) /obj/machinery/fat_sucker/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(user == occupant) to_chat(user, span_warning("You can't reach the controls from inside!")) diff --git a/code/game/machinery/iv_drip.dm b/code/game/machinery/iv_drip.dm index dcd224b288b..156d6412527 100644 --- a/code/game/machinery/iv_drip.dm +++ b/code/game/machinery/iv_drip.dm @@ -123,7 +123,7 @@ /obj/machinery/iv_drip/MouseDrop(mob/living/target) . = ..() - if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE) || !isliving(target)) + if(!ishuman(usr) || !usr.canUseTopic(src, be_close = TRUE) || !isliving(target)) return if(attached) diff --git a/code/game/machinery/launch_pad.dm b/code/game/machinery/launch_pad.dm index a0a7b3a7c3c..d73124d2657 100644 --- a/code/game/machinery/launch_pad.dm +++ b/code/game/machinery/launch_pad.dm @@ -287,7 +287,7 @@ /obj/machinery/launchpad/briefcase/MouseDrop(over_object, src_location, over_location) . = ..() if(over_object == usr) - if(!briefcase || !usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!briefcase || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return usr.visible_message(span_notice("[usr] starts closing [src]..."), span_notice("You start closing [src]...")) if(do_after(usr, 30, target = usr)) diff --git a/code/game/machinery/medical_kiosk.dm b/code/game/machinery/medical_kiosk.dm index d0f55d520a7..6ebea9f66fd 100644 --- a/code/game/machinery/medical_kiosk.dm +++ b/code/game/machinery/medical_kiosk.dm @@ -127,7 +127,7 @@ return ..() /obj/machinery/medical_kiosk/AltClick(mob/living/carbon/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return if(!scanner_wand) to_chat(user, span_warning("The scanner wand is currently removed from the machine.")) diff --git a/code/game/machinery/newscaster/newspaper.dm b/code/game/machinery/newscaster/newspaper.dm index eaf694b308a..ec4d1a35ba6 100644 --- a/code/game/machinery/newscaster/newspaper.dm +++ b/code/game/machinery/newscaster/newspaper.dm @@ -166,7 +166,7 @@ var/s = tgui_input_text(user, "Write something", "Newspaper") if (!s) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return scribble_page = curr_page scribble = s diff --git a/code/game/machinery/porta_turret/portable_turret_construct.dm b/code/game/machinery/porta_turret/portable_turret_construct.dm index d0616479d14..f652a30d423 100644 --- a/code/game/machinery/porta_turret/portable_turret_construct.dm +++ b/code/game/machinery/porta_turret/portable_turret_construct.dm @@ -182,7 +182,7 @@ var/choice = tgui_input_text(user, "Enter a new turret name", "Turret Classification", finish_name, MAX_NAME_LEN) if(!choice) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return finish_name = choice diff --git a/code/game/machinery/spaceheater.dm b/code/game/machinery/spaceheater.dm index d05cf0f4910..25ff812451d 100644 --- a/code/game/machinery/spaceheater.dm +++ b/code/game/machinery/spaceheater.dm @@ -415,7 +415,7 @@ /obj/machinery/space_heater/improvised_chem_heater/AltClick(mob/living/user) . = ..() - if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return replace_beaker(user) diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm index ab19b13520b..23e15d1206f 100644 --- a/code/game/machinery/syndicatebomb.dm +++ b/code/game/machinery/syndicatebomb.dm @@ -210,7 +210,7 @@ if(!user.canUseTopic(src, !issilicon(user)) || !user.can_interact_with(src)) return var/new_timer = tgui_input_number(user, "Set the timer", "Countdown", timer_set, maximum_timer, minimum_timer) - if(!new_timer || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!new_timer || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return timer_set = new_timer loc.visible_message(span_notice("[icon2html(src, viewers(src))] timer set for [timer_set] seconds.")) diff --git a/code/game/objects/items/AI_modules/freeform.dm b/code/game/objects/items/AI_modules/freeform.dm index 9b034ce28cd..a76f585fb80 100644 --- a/code/game/objects/items/AI_modules/freeform.dm +++ b/code/game/objects/items/AI_modules/freeform.dm @@ -34,7 +34,7 @@ /obj/item/ai_module/supplied/freeform/attack_self(mob/user) var/newpos = tgui_input_number(user, "Please enter the priority for your new law. Can only write to law sectors 15 and above.", "Law Priority ", lawpos, 50, 15) - if(!newpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!newpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return lawpos = newpos var/targName = tgui_input_text(user, "Enter a new law for the AI.", "Freeform Law Entry", laws[1], CONFIG_GET(number/max_law_len), TRUE) diff --git a/code/game/objects/items/AI_modules/repair.dm b/code/game/objects/items/AI_modules/repair.dm index 0e84d8a355a..c7265839fa3 100644 --- a/code/game/objects/items/AI_modules/repair.dm +++ b/code/game/objects/items/AI_modules/repair.dm @@ -12,7 +12,7 @@ /obj/item/ai_module/remove/attack_self(mob/user) lawpos = tgui_input_number(user, "Law to delete", "Law Removal", lawpos, 50) - if(!lawpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!lawpos || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return to_chat(user, span_notice("Law [lawpos] selected.")) ..() diff --git a/code/game/objects/items/RCD.dm b/code/game/objects/items/RCD.dm index f0b4e63ab9e..10d77a34209 100644 --- a/code/game/objects/items/RCD.dm +++ b/code/game/objects/items/RCD.dm @@ -370,7 +370,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) set category = "Object" set src in view(1) - if(!usr.canUseTopic(src, BE_CLOSE)) + if(!usr.canUseTopic(src, be_close = TRUE)) return toggle_window_glass(usr) @@ -380,7 +380,7 @@ GLOBAL_VAR_INIT(icon_holographic_window, init_holographic_window()) set category = "Object" set src in view(1) - if(!usr.canUseTopic(src, BE_CLOSE)) + if(!usr.canUseTopic(src, be_close = TRUE)) return toggle_window_size(usr) diff --git a/code/game/objects/items/RPD.dm b/code/game/objects/items/RPD.dm index cb926c5d9f5..32105310527 100644 --- a/code/game/objects/items/RPD.dm +++ b/code/game/objects/items/RPD.dm @@ -365,7 +365,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list( if(.) return - if(!usr.canUseTopic(src, BE_CLOSE)) + if(!usr.canUseTopic(src, be_close = TRUE)) return var/playeffect = TRUE switch(action) diff --git a/code/game/objects/items/cards_ids.dm b/code/game/objects/items/cards_ids.dm index 0f4d0c24cf0..95d4794ccfd 100644 --- a/code/game/objects/items/cards_ids.dm +++ b/code/game/objects/items/cards_ids.dm @@ -623,7 +623,7 @@ /obj/item/card/id/proc/alt_click_can_use_id(mob/living/user) if(!isliving(user)) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return return TRUE @@ -1239,7 +1239,7 @@ to_chat(user, "Restating prisoner ID to default parameters.") return var/choice = tgui_input_number(user, "Sentence time in seconds", "Sentencing") - if(!choice || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || loc != user) + if(!choice || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user) return FALSE time_to_assign = choice to_chat(user, "You set the sentence time to [time_to_assign] seconds.") @@ -1565,7 +1565,7 @@ assignment = target_occupation var/new_age = tgui_input_number(user, "Choose the ID's age", "Agent card age", AGE_MIN, AGE_MAX, AGE_MIN) - if(QDELETED(user) || QDELETED(src) || !user.canUseTopic(user, BE_CLOSE, NO_DEXTERITY, NO_TK)) + if(QDELETED(user) || QDELETED(src) || !user.canUseTopic(user, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE)) return if(new_age) registered_age = new_age diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm index 9d641b126cd..f9e707e6893 100644 --- a/code/game/objects/items/choice_beacon.dm +++ b/code/game/objects/items/choice_beacon.dm @@ -14,7 +14,7 @@ return list() /obj/item/choice_beacon/proc/canUseBeacon(mob/living/user) - if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE else playsound(src, 'sound/machines/buzz-sigh.ogg', 40, TRUE) @@ -29,7 +29,7 @@ return if(isnull(display_names[choice])) return - if(!M.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!M.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return spawn_option(display_names[choice],M) diff --git a/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 934e055292f..3b5eb9c3e29 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -752,7 +752,7 @@ /obj/item/circuitboard/machine/medical_kiosk/multitool_act(mob/living/user) . = ..() var/new_cost = tgui_input_number(user, "New cost for using this medical kiosk", "Pricing", custom_cost, 1000, 10) - if(!new_cost || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!new_cost || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(loc != user) to_chat(user, span_warning("You must hold the circuitboard to change its cost!")) diff --git a/code/game/objects/items/cosmetics.dm b/code/game/objects/items/cosmetics.dm index 4b555e4d9c6..731dc548660 100644 --- a/code/game/objects/items/cosmetics.dm +++ b/code/game/objects/items/cosmetics.dm @@ -138,7 +138,7 @@ if (H == user) to_chat(user, span_warning("You need a mirror to properly style your own facial hair!")) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return var/new_style = tgui_input_list(user, "Select a facial hairstyle", "Grooming", GLOB.facial_hairstyles_list) if(isnull(new_style)) @@ -186,7 +186,7 @@ if (H == user) to_chat(user, span_warning("You need a mirror to properly style your own hair!")) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return var/new_style = tgui_input_list(user, "Select a hairstyle", "Grooming", GLOB.hairstyles_list) if(isnull(new_style)) diff --git a/code/game/objects/items/crayons.dm b/code/game/objects/items/crayons.dm index d69452c108f..c8d7c75c805 100644 --- a/code/game/objects/items/crayons.dm +++ b/code/game/objects/items/crayons.dm @@ -162,7 +162,7 @@ ui.open() /obj/item/toy/crayon/spraycan/AltClick(mob/user) - if(has_cap && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(has_cap && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) is_capped = !is_capped to_chat(user, span_notice("The cap on [src] is now [is_capped ? "on" : "off"].")) update_appearance() diff --git a/code/game/objects/items/credit_holochip.dm b/code/game/objects/items/credit_holochip.dm index d7aecb345c2..803a8257c9b 100644 --- a/code/game/objects/items/credit_holochip.dm +++ b/code/game/objects/items/credit_holochip.dm @@ -99,13 +99,13 @@ qdel(H) /obj/item/holochip/AltClick(mob/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user))) return if(loc != user) to_chat(user, span_warning("You must be holding the holochip to continue!")) return FALSE var/split_amount = tgui_input_number(user, "How many credits do you want to extract from the holochip? (Max: [credits] cr)", "Holochip", max_value = credits) - if(!split_amount || QDELETED(user) || QDELETED(src) || issilicon(user) || !usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user)) || loc != user) + if(!split_amount || QDELETED(user) || QDELETED(src) || issilicon(user) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user)) || loc != user) return var/new_credits = spend(split_amount, TRUE) var/obj/item/holochip/H = new(user ? user : drop_location(), new_credits) diff --git a/code/game/objects/items/devices/beacon.dm b/code/game/objects/items/devices/beacon.dm index 1a14a6299c9..28ec184d476 100644 --- a/code/game/objects/items/devices/beacon.dm +++ b/code/game/objects/items/devices/beacon.dm @@ -34,7 +34,7 @@ /obj/item/beacon/attackby(obj/item/W, mob/user) if(istype(W, /obj/item/pen)) // needed for things that use custom names like the locator var/new_name = tgui_input_text(user, "What would you like the name to be?", "Beacon", max_length = MAX_NAME_LEN) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(new_name) name = new_name diff --git a/code/game/objects/items/devices/desynchronizer.dm b/code/game/objects/items/devices/desynchronizer.dm index 365473b14eb..10b5ed7133e 100644 --- a/code/game/objects/items/devices/desynchronizer.dm +++ b/code/game/objects/items/devices/desynchronizer.dm @@ -33,10 +33,10 @@ . += span_notice("Can be used again to interrupt the effect early. The recharge time is the same as the time spent in desync.") /obj/item/desynchronizer/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return var/new_duration = tgui_input_number(user, "Set the duration", "Desynchronizer", duration / 10, max_duration, 5) - if(!new_duration || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!new_duration || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return duration = new_duration to_chat(user, span_notice("You set the duration to [DisplayTimeText(duration)].")) diff --git a/code/game/objects/items/devices/geiger_counter.dm b/code/game/objects/items/devices/geiger_counter.dm index 999b8d1dfd5..4d4afa7b49c 100644 --- a/code/game/objects/items/devices/geiger_counter.dm +++ b/code/game/objects/items/devices/geiger_counter.dm @@ -110,7 +110,7 @@ to_chat(user, span_notice("[icon2html(src, user)] [isliving(target) ? "Subject" : "Target"] is free of radioactive contamination.")) /obj/item/geiger_counter/AltClick(mob/living/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return ..() if(!scanning) to_chat(usr, span_warning("[src] must be on to reset its radiation level!")) diff --git a/code/game/objects/items/devices/portable_chem_mixer.dm b/code/game/objects/items/devices/portable_chem_mixer.dm index 61a69a4f96f..ae846a01faf 100644 --- a/code/game/objects/items/devices/portable_chem_mixer.dm +++ b/code/game/objects/items/devices/portable_chem_mixer.dm @@ -80,7 +80,7 @@ /obj/item/storage/portable_chem_mixer/AltClick(mob/living/user) if(!atom_storage.locked) return ..() - if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return replace_beaker(user) update_appearance() diff --git a/code/game/objects/items/devices/quantum_keycard.dm b/code/game/objects/items/devices/quantum_keycard.dm index fef446a69e9..ddabad8beb7 100644 --- a/code/game/objects/items/devices/quantum_keycard.dm +++ b/code/game/objects/items/devices/quantum_keycard.dm @@ -18,7 +18,7 @@ . += span_notice("Insert [src] into an active quantum pad to link it.") /obj/item/quantum_keycard/AltClick(mob/living/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return to_chat(user, span_notice("You start pressing [src]'s unlink button...")) if(do_after(user, 40, target = src)) diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm index 36d7728831d..572c377b2da 100644 --- a/code/game/objects/items/devices/radio/headset.dm +++ b/code/game/objects/items/devices/radio/headset.dm @@ -81,7 +81,7 @@ GLOBAL_LIST_INIT(channel_tokens, list( /obj/item/radio/headset/MouseDrop(mob/over, src_location, over_location) var/mob/headset_user = usr - if((headset_user == over) && headset_user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if((headset_user == over) && headset_user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return attack_self(headset_user) return ..() diff --git a/code/game/objects/items/devices/scanners/gas_analyzer.dm b/code/game/objects/items/devices/scanners/gas_analyzer.dm index 01262eca005..851491f8bbf 100644 --- a/code/game/objects/items/devices/scanners/gas_analyzer.dm +++ b/code/game/objects/items/devices/scanners/gas_analyzer.dm @@ -38,7 +38,7 @@ /obj/item/analyzer/AltClick(mob/user) //Barometer output for measuring when the next storm happens ..() - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_read(src)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_read(src)) return if(cooldown) diff --git a/code/game/objects/items/devices/scanners/health_analyzer.dm b/code/game/objects/items/devices/scanners/health_analyzer.dm index bb859f9a3af..7963806421a 100644 --- a/code/game/objects/items/devices/scanners/health_analyzer.dm +++ b/code/game/objects/items/devices/scanners/health_analyzer.dm @@ -440,7 +440,7 @@ /obj/item/healthanalyzer/AltClick(mob/user) ..() - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_read(src) || user.is_blind()) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_read(src) || user.is_blind()) return mode = !mode diff --git a/code/game/objects/items/devices/scanners/sequence_scanner.dm b/code/game/objects/items/devices/scanners/sequence_scanner.dm index 3251245f864..a7c0aa3c199 100644 --- a/code/game/objects/items/devices/scanners/sequence_scanner.dm +++ b/code/game/objects/items/devices/scanners/sequence_scanner.dm @@ -80,7 +80,7 @@ var/answer = tgui_input_list(user, "Analyze Potential", "Sequence Analyzer", sort_list(options)) if(isnull(answer)) return - if(!ready || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || !user.can_read(src)) + if(!ready || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || !user.can_read(src)) return var/sequence diff --git a/code/game/objects/items/devices/swapper.dm b/code/game/objects/items/devices/swapper.dm index f01e8244be0..8592203d983 100644 --- a/code/game/objects/items/devices/swapper.dm +++ b/code/game/objects/items/devices/swapper.dm @@ -67,7 +67,7 @@ . += span_notice("Not Linked. Use on another quantum spin inverter to establish a quantum link.") /obj/item/swapper/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return to_chat(user, span_notice("You break the current quantum link.")) if(!QDELETED(linked_swapper)) diff --git a/code/game/objects/items/drug_items.dm b/code/game/objects/items/drug_items.dm index d1ea8ea86f6..1e31c8c932c 100644 --- a/code/game/objects/items/drug_items.dm +++ b/code/game/objects/items/drug_items.dm @@ -50,7 +50,7 @@ icon_state = base_icon_state /obj/item/reagent_containers/cup/blastoff_ampoule/attack_self(mob/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY) || spillable) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE) || spillable) return ..() reagent_flags |= OPENCONTAINER spillable = TRUE diff --git a/code/game/objects/items/dyekit.dm b/code/game/objects/items/dyekit.dm index 1007d9971e0..559554cf10f 100644 --- a/code/game/objects/items/dyekit.dm +++ b/code/game/objects/items/dyekit.dm @@ -24,18 +24,18 @@ return var/mob/living/carbon/human/human_target = target var/beard_or_hair = tgui_alert(user, "What do you want to dye?", "Character Preference", list("Hair", "Facial Hair")) - if(!beard_or_hair || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE)) + if(!beard_or_hair || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE)) return var/list/choices = beard_or_hair == "Hair" ? GLOB.hair_gradients_list : GLOB.facial_hair_gradients_list var/new_grad_style = tgui_input_list(user, "Choose a color pattern", "Character Preference", choices) if(isnull(new_grad_style)) return - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE)) return var/new_grad_color = input(user, "Choose a secondary hair color:", "Character Preference",human_target.grad_color) as color|null - if(!new_grad_color || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE) || !user.CanReach(target)) + if(!new_grad_color || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE) || !user.CanReach(target)) return to_chat(user, span_notice("You start applying the hair dye...")) diff --git a/code/game/objects/items/extinguisher.dm b/code/game/objects/items/extinguisher.dm index 3c70fb5856b..834c60e1e9c 100644 --- a/code/game/objects/items/extinguisher.dm +++ b/code/game/objects/items/extinguisher.dm @@ -234,7 +234,7 @@ source.delay = 3 /obj/item/extinguisher/AltClick(mob/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return if(!user.is_holding(src)) to_chat(user, span_notice("You must be holding the [src] in your hands do this!")) diff --git a/code/game/objects/items/flamethrower.dm b/code/game/objects/items/flamethrower.dm index ab2f9de8657..a7716e7f4f2 100644 --- a/code/game/objects/items/flamethrower.dm +++ b/code/game/objects/items/flamethrower.dm @@ -152,7 +152,7 @@ toggle_igniter(user) /obj/item/flamethrower/AltClick(mob/user) - if(ptank && isliving(user) && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(ptank && isliving(user) && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) user.put_in_hands(ptank) ptank = null to_chat(user, span_notice("You remove the plasma tank from [src]!")) diff --git a/code/game/objects/items/grenades/_grenade.dm b/code/game/objects/items/grenades/_grenade.dm index b779f33557b..3e10b6eceaf 100644 --- a/code/game/objects/items/grenades/_grenade.dm +++ b/code/game/objects/items/grenades/_grenade.dm @@ -181,7 +181,7 @@ var/newtime = tgui_input_list(user, "Please enter a new detonation time", "Detonation Timer", list("Instant", 3, 4, 5)) if (isnull(newtime)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(newtime == "Instant" && change_det_time(0)) to_chat(user, span_notice("You modify the time delay. It's set to be instantaneous.")) diff --git a/code/game/objects/items/grenades/chem_grenade.dm b/code/game/objects/items/grenades/chem_grenade.dm index cc386274ddb..a24bd1d8bd4 100644 --- a/code/game/objects/items/grenades/chem_grenade.dm +++ b/code/game/objects/items/grenades/chem_grenade.dm @@ -355,7 +355,7 @@ if (active) return var/newspread = tgui_input_number(user, "Please enter a new spread amount", "Grenade Spread", 5, 100, 5) - if(!newspread || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!newspread || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return unit_spread = newspread to_chat(user, span_notice("You set the time release to [unit_spread] units per detonation.")) diff --git a/code/game/objects/items/grenades/plastic.dm b/code/game/objects/items/grenades/plastic.dm index 0ad29d38817..cb961b9a2b2 100644 --- a/code/game/objects/items/grenades/plastic.dm +++ b/code/game/objects/items/grenades/plastic.dm @@ -77,7 +77,7 @@ /obj/item/grenade/c4/attack_self(mob/user) var/newtime = tgui_input_number(user, "Please set the timer", "C4 Timer", minimum_timer, maximum_timer, minimum_timer) - if(!newtime || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!newtime || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return det_time = newtime to_chat(user, "Timer set for [det_time] seconds.") diff --git a/code/game/objects/items/implants/implantcase.dm b/code/game/objects/items/implants/implantcase.dm index ea73b31e95d..bbaced216b5 100644 --- a/code/game/objects/items/implants/implantcase.dm +++ b/code/game/objects/items/implants/implantcase.dm @@ -28,7 +28,7 @@ if(!user.can_write(used_item)) return var/new_name = tgui_input_text(user, "What would you like the label to be?", name, max_length = MAX_NAME_LEN) - if((user.get_active_held_item() != used_item) || !user.canUseTopic(src, BE_CLOSE)) + if((user.get_active_held_item() != used_item) || !user.canUseTopic(src, be_close = TRUE)) return if(new_name) name = "implant case - '[new_name]'" diff --git a/code/game/objects/items/implants/implanter.dm b/code/game/objects/items/implants/implanter.dm index 77008fbb5a0..e8ab7ccdff1 100644 --- a/code/game/objects/items/implants/implanter.dm +++ b/code/game/objects/items/implants/implanter.dm @@ -54,7 +54,7 @@ var/new_name = tgui_input_text(user, "What would you like the label to be?", name, max_length = MAX_NAME_LEN) if(user.get_active_held_item() != I) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(new_name) name = "implanter ([new_name])" diff --git a/code/game/objects/items/implants/implantpad.dm b/code/game/objects/items/implants/implantpad.dm index cde4dd65147..08002278e40 100644 --- a/code/game/objects/items/implants/implantpad.dm +++ b/code/game/objects/items/implants/implantpad.dm @@ -34,7 +34,7 @@ /obj/item/implantpad/AltClick(mob/user) ..() - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(!case) to_chat(user, span_warning("There's no implant to remove from [src].")) @@ -60,7 +60,7 @@ return ..() /obj/item/implantpad/ui_interact(mob/user) - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) user.unset_machine(src) user << browse(null, "window=implantpad") return diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm index 812d56d9e03..5fb1763c333 100644 --- a/code/game/objects/items/inspector.dm +++ b/code/game/objects/items/inspector.dm @@ -75,7 +75,7 @@ return ..() /obj/item/inspector/CtrlClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)) || !cell_cover_open || !cell) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands= !iscyborg(user)) || !cell_cover_open || !cell) return ..() user.visible_message(span_notice("[user] removes \the [cell] from [src]!"), \ span_notice("You remove [cell].")) @@ -378,7 +378,7 @@ grind_results = list(/datum/reagent/water = 5) /obj/item/paper/fake_report/water/AltClick(mob/living/user, obj/item/I) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return var/datum/action/innate/origami/origami_action = locate() in user.actions if(origami_action?.active) //Origami masters can fold water diff --git a/code/game/objects/items/pet_carrier.dm b/code/game/objects/items/pet_carrier.dm index c1c5d9e6bd8..13deb2ab239 100644 --- a/code/game/objects/items/pet_carrier.dm +++ b/code/game/objects/items/pet_carrier.dm @@ -72,7 +72,7 @@ update_appearance() /obj/item/pet_carrier/AltClick(mob/living/user) - if(open || !user.canUseTopic(src, BE_CLOSE)) + if(open || !user.canUseTopic(src, be_close = TRUE)) return locked = !locked to_chat(user, span_notice("You flip the lock switch [locked ? "down" : "up"].")) @@ -157,7 +157,7 @@ /obj/item/pet_carrier/MouseDrop(atom/over_atom) . = ..() - if(isopenturf(over_atom) && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(usr)) && usr.Adjacent(over_atom) && open && occupants.len) + if(isopenturf(over_atom) && usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(usr)) && usr.Adjacent(over_atom) && open && occupants.len) usr.visible_message(span_notice("[usr] unloads [src]."), \ span_notice("You unload [src] onto [over_atom].")) for(var/V in occupants) diff --git a/code/game/objects/items/signs.dm b/code/game/objects/items/signs.dm index 6a107650442..d4af671465a 100644 --- a/code/game/objects/items/signs.dm +++ b/code/game/objects/items/signs.dm @@ -22,7 +22,7 @@ if(!user.can_write(writing_instrument)) return var/txt = tgui_input_text(user, "What would you like to write on the sign?", "Sign Label", max_length = 30) - if(txt && user.canUseTopic(src, BE_CLOSE)) + if(txt && user.canUseTopic(src, be_close = TRUE)) label = txt name = "[label] sign" desc = "It reads: [label]" diff --git a/code/game/objects/items/spear.dm b/code/game/objects/items/spear.dm index ed95660053d..8fa2c47cdb6 100644 --- a/code/game/objects/items/spear.dm +++ b/code/game/objects/items/spear.dm @@ -140,7 +140,7 @@ . += span_notice("Alt-click to set your war cry.") /obj/item/spear/explosive/AltClick(mob/user) - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE)) ..() if(istype(user) && loc == user) var/input = tgui_input_text(user, "What do you want your war cry to be? You will shout it when you hit someone in melee.", "War Cry", max_length = 50) diff --git a/code/game/objects/items/stacks/stack.dm b/code/game/objects/items/stacks/stack.dm index 4f86151d68f..2c04aa46fb0 100644 --- a/code/game/objects/items/stacks/stack.dm +++ b/code/game/objects/items/stacks/stack.dm @@ -655,13 +655,13 @@ if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(is_cyborg || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(is_cyborg || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return SECONDARY_ATTACK_CONTINUE_CHAIN if(is_zero_amount(delete_if_zero = TRUE)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN var/max = get_amount() var/stackmaterial = tgui_input_number(user, "How many sheets do you wish to take out of this stack?", "Stack Split", max_value = max) - if(!stackmaterial || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK, !iscyborg(user))) + if(!stackmaterial || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE, need_hands = !iscyborg(user))) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN split_stack(user, stackmaterial) to_chat(user, span_notice("You take [stackmaterial] sheets out of the stack.")) diff --git a/code/game/objects/items/stacks/wrap.dm b/code/game/objects/items/stacks/wrap.dm index f42d2cfc74d..b009c0f2d68 100644 --- a/code/game/objects/items/stacks/wrap.dm +++ b/code/game/objects/items/stacks/wrap.dm @@ -38,7 +38,7 @@ /obj/item/stack/wrapping_paper/attack_hand_secondary(mob/user, modifiers) var/new_base = input(user, "", "Select a base color", color) as color var/new_ribbon = input(user, "", "Select a ribbon color", color) as color - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return set_greyscale(colors = list(new_base, new_ribbon)) return TRUE diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm index 41c14344e73..c23c69750ee 100644 --- a/code/game/objects/items/storage/belt.dm +++ b/code/game/objects/items/storage/belt.dm @@ -796,7 +796,7 @@ . += span_notice("Alt-click it to quickly draw the blade.") /obj/item/storage/belt/sabre/AltClick(mob/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return if(length(contents)) var/obj/item/I = contents[1] diff --git a/code/game/objects/items/storage/lockbox.dm b/code/game/objects/items/storage/lockbox.dm index 12c453ce5a8..3a9fdfc80b0 100644 --- a/code/game/objects/items/storage/lockbox.dm +++ b/code/game/objects/items/storage/lockbox.dm @@ -109,7 +109,7 @@ . += span_notice("Alt-click to [open ? "close":"open"] it.") /obj/item/storage/lockbox/medal/AltClick(mob/user) - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE)) if(!atom_storage.locked) open = (open ? FALSE : TRUE) update_appearance() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index cd96ec67ea6..e3e13672e70 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -288,7 +288,7 @@ /obj/AltClick(mob/user) . = ..() - if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + if(unique_reskin && !current_skin && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE)) reskin_obj(user) /** diff --git a/code/game/objects/structures/beds_chairs/bed.dm b/code/game/objects/structures/beds_chairs/bed.dm index 2c2682f8d9b..7244cba3263 100644 --- a/code/game/objects/structures/beds_chairs/bed.dm +++ b/code/game/objects/structures/beds_chairs/bed.dm @@ -96,7 +96,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - if(!ishuman(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!ishuman(user) || !user.canUseTopic(src, be_close = TRUE)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN if(has_buckled_mobs()) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/game/objects/structures/beds_chairs/chair.dm b/code/game/objects/structures/beds_chairs/chair.dm index 1f9caf6fa0f..0761708e1fd 100644 --- a/code/game/objects/structures/beds_chairs/chair.dm +++ b/code/game/objects/structures/beds_chairs/chair.dm @@ -286,7 +286,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool, 0) if(over_object == usr && Adjacent(usr)) if(!item_chair || has_buckled_mobs() || src.flags_1 & NODECONSTRUCT_1) return - if(!usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return usr.visible_message(span_notice("[usr] grabs \the [src.name]."), span_notice("You grab \the [src.name].")) var/obj/item/C = new item_chair(loc) @@ -482,7 +482,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool/bar, 0) /obj/structure/chair/bronze/AltClick(mob/user) turns = 0 - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return if(!(datum_flags & DF_ISPROCESSING)) user.visible_message(span_notice("[user] spins [src] around, and the last vestiges of Ratvarian technology keeps it spinning FOREVER."), \ diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index cb6771c87ed..8e773674205 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -598,7 +598,7 @@ set category = "Object" set name = "Toggle Open" - if(!usr.canUseTopic(src, BE_CLOSE) || !isturf(loc)) + if(!usr.canUseTopic(src, be_close = TRUE) || !isturf(loc)) return if(iscarbon(usr) || issilicon(usr) || isdrone(usr)) @@ -661,7 +661,7 @@ /obj/structure/closet/attack_hand_secondary(mob/user, modifiers) . = ..() - if(!user.canUseTopic(src, BE_CLOSE) || !isturf(loc)) + if(!user.canUseTopic(src, be_close = TRUE) || !isturf(loc)) return if(!opened && secure) diff --git a/code/game/objects/structures/crates_lockers/closets/bodybag.dm b/code/game/objects/structures/crates_lockers/closets/bodybag.dm index cacc7dbc5a9..73dca291af4 100644 --- a/code/game/objects/structures/crates_lockers/closets/bodybag.dm +++ b/code/game/objects/structures/crates_lockers/closets/bodybag.dm @@ -49,7 +49,7 @@ var/t = tgui_input_text(user, "What would you like the label to be?", name, max_length = 53) if(user.get_active_held_item() != interact_tool) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return handle_tag("[t ? t : initial(name)]") return @@ -315,7 +315,7 @@ open() /obj/structure/closet/body_bag/environmental/prisoner/attack_hand_secondary(mob/user, modifiers) - if(!user.canUseTopic(src, BE_CLOSE) || !isturf(loc)) + if(!user.canUseTopic(src, be_close = TRUE) || !isturf(loc)) return togglelock(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/game/objects/structures/displaycase.dm b/code/game/objects/structures/displaycase.dm index cb200f3be8b..1ae5b6241c5 100644 --- a/code/game/objects/structures/displaycase.dm +++ b/code/game/objects/structures/displaycase.dm @@ -458,7 +458,7 @@ if(!payments_acc) to_chat(usr, span_notice("[src] hasn't been registered yet.")) return TRUE - if(!usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE if(!potential_acc) to_chat(usr, span_notice("No ID card detected.")) @@ -514,7 +514,7 @@ if(payments_acc != potential_acc.registered_account) to_chat(usr, span_warning("[src] rejects your new price.")) return - if(!usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) to_chat(usr, span_warning("You need to get closer!")) return sale_price = new_price_input diff --git a/code/game/objects/structures/divine.dm b/code/game/objects/structures/divine.dm index c2b66cfdea8..d59d83e320a 100644 --- a/code/game/objects/structures/divine.dm +++ b/code/game/objects/structures/divine.dm @@ -9,7 +9,7 @@ /obj/structure/sacrificealtar/AltClick(mob/living/user) ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return if(!has_buckled_mobs()) return diff --git a/code/game/objects/structures/extinguisher.dm b/code/game/objects/structures/extinguisher.dm index 4653227a1f2..f3eabad369b 100644 --- a/code/game/objects/structures/extinguisher.dm +++ b/code/game/objects/structures/extinguisher.dm @@ -110,7 +110,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/extinguisher_cabinet, 29) return attack_hand(user, modifiers) /obj/structure/extinguisher_cabinet/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return toggle_cabinet(user) diff --git a/code/game/objects/structures/gym.dm b/code/game/objects/structures/gym.dm index a6d594ccbda..a6b841b08ea 100644 --- a/code/game/objects/structures/gym.dm +++ b/code/game/objects/structures/gym.dm @@ -44,7 +44,7 @@ . = ..() if(.) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(obj_flags & IN_USE) to_chat(user, span_warning("It's already in use - wait a bit!")) diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index 6205d49326d..16593ecaa8e 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -167,7 +167,7 @@ playsound(src, 'sound/machines/click.ogg', 10, TRUE) /obj/item/plunger/AltClick(mob/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return var/new_layer = tgui_input_list(user, "Select a layer", "Layer", GLOB.plumbing_layers) diff --git a/code/game/objects/structures/maintenance.dm b/code/game/objects/structures/maintenance.dm index 21a568f4be4..33e9950b0e9 100644 --- a/code/game/objects/structures/maintenance.dm +++ b/code/game/objects/structures/maintenance.dm @@ -151,7 +151,7 @@ at the cost of risking a vicious bite.**/ switch(altar_result) if("Change Color") var/chosen_color = input(user, "", "Choose Color", pants_color) as color|null - if(!isnull(chosen_color) && user.canUseTopic(src, BE_CLOSE)) + if(!isnull(chosen_color) && user.canUseTopic(src, be_close = TRUE)) pants_color = chosen_color if("Create Artefact") if(!COOLDOWN_FINISHED(src, use_cooldown) || status != ALTAR_INACTIVE) diff --git a/code/game/objects/structures/mirror.dm b/code/game/objects/structures/mirror.dm index b6cefb8eb2c..9a736e3e27a 100644 --- a/code/game/objects/structures/mirror.dm +++ b/code/game/objects/structures/mirror.dm @@ -32,7 +32,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) var/new_style = tgui_input_list(user, "Select a facial hairstyle", "Grooming", GLOB.facial_hairstyles_list) if(isnull(new_style)) return TRUE - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE //no tele-grooming hairdresser.facial_hairstyle = new_style else @@ -42,7 +42,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) var/new_style = tgui_input_list(user, "Select a hairstyle", "Grooming", GLOB.hairstyles_list) if(isnull(new_style)) return TRUE - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE //no tele-grooming if(HAS_TRAIT(hairdresser, TRAIT_BALD)) to_chat(hairdresser, span_notice("If only growing back hair were that easy for you...")) @@ -153,7 +153,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) if(isnull(choice)) return TRUE - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE switch(choice) @@ -161,7 +161,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) var/newname = sanitize_name(tgui_input_text(amazed_human, "Who are we again?", "Name change", amazed_human.name, MAX_NAME_LEN), allow_numbers = TRUE) //It's magic so whatever. if(!newname) return TRUE - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE amazed_human.real_name = newname amazed_human.name = newname @@ -176,7 +176,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) return TRUE if(!selectable_races[racechoice]) return TRUE - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE var/datum/species/newrace = selectable_races[racechoice] @@ -190,7 +190,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) if(MUTCOLORS in amazed_human.dna.species.species_traits) var/new_mutantcolor = input(user, "Choose your skin color:", "Race change", amazed_human.dna.features["mcolor"]) as color|null - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE if(new_mutantcolor) var/temp_hsv = RGBtoHSV(new_mutantcolor) @@ -211,7 +211,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) return TRUE if(amazed_human.gender == "male") if(tgui_alert(amazed_human, "Become a Witch?", "Confirmation", list("Yes", "No")) == "Yes") - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE amazed_human.gender = FEMALE amazed_human.physique = FEMALE @@ -221,7 +221,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) else if(tgui_alert(amazed_human, "Become a Warlock?", "Confirmation", list("Yes", "No")) == "Yes") - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE amazed_human.gender = MALE amazed_human.physique = MALE @@ -234,13 +234,13 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) if("hair") var/hairchoice = tgui_alert(amazed_human, "Hairstyle or hair color?", "Change Hair", list("Style", "Color")) - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE if(hairchoice == "Style") //So you just want to use a mirror then? return ..() else var/new_hair_color = input(amazed_human, "Choose your hair color", "Hair Color",amazed_human.hair_color) as color|null - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE if(new_hair_color) amazed_human.hair_color = sanitize_hexcolor(new_hair_color) @@ -254,7 +254,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28) if(BODY_ZONE_PRECISE_EYES) var/new_eye_color = input(amazed_human, "Choose your eye color", "Eye Color", amazed_human.eye_color_left) as color|null - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return TRUE if(new_eye_color) amazed_human.eye_color_left = sanitize_hexcolor(new_eye_color) diff --git a/code/game/objects/structures/morgue.dm b/code/game/objects/structures/morgue.dm index 15aecb16bc8..a80dce523fd 100644 --- a/code/game/objects/structures/morgue.dm +++ b/code/game/objects/structures/morgue.dm @@ -90,7 +90,7 @@ GLOBAL_LIST_EMPTY(bodycontainers) //Let them act as spawnpoints for revenants an var/t = tgui_input_text(user, "What would you like the label to be?", text("[]", name), null) if (user.get_active_held_item() != P) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if (t) name = text("[]- '[]'", initial(name), t) diff --git a/code/game/objects/structures/reflector.dm b/code/game/objects/structures/reflector.dm index d530d4f2709..1a5b8428c19 100644 --- a/code/game/objects/structures/reflector.dm +++ b/code/game/objects/structures/reflector.dm @@ -162,13 +162,13 @@ to_chat(user, span_warning("The rotation is locked!")) return FALSE var/new_angle = tgui_input_number(user, "New angle for primary reflection face", "Reflector Angle", rotation_angle, 360) - if(isnull(new_angle) || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(isnull(new_angle) || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return FALSE set_angle(SIMPLIFY_DEGREES(new_angle)) return TRUE /obj/structure/reflector/AltClick(mob/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return else if(finished) rotate(user) diff --git a/code/game/objects/structures/safe.dm b/code/game/objects/structures/safe.dm index 5e5bf0da1a4..b525a86433c 100644 --- a/code/game/objects/structures/safe.dm +++ b/code/game/objects/structures/safe.dm @@ -131,7 +131,7 @@ FLOOR SAFES if(!ishuman(usr)) return var/mob/living/carbon/human/user = usr - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return var/canhear = FALSE diff --git a/code/game/objects/structures/training_machine.dm b/code/game/objects/structures/training_machine.dm index 76da32dc7e3..62526e2a258 100644 --- a/code/game/objects/structures/training_machine.dm +++ b/code/game/objects/structures/training_machine.dm @@ -176,7 +176,7 @@ /obj/structure/training_machine/AltClick(mob/user) . = ..() - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, FLOOR_OKAY)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, floor_okay = TRUE)) return if(has_buckled_mobs()) user_unbuckle_mob(buckled_mobs[1], user) diff --git a/code/modules/antagonists/revenant/revenant.dm b/code/modules/antagonists/revenant/revenant.dm index 5232966b79c..7331db795d4 100644 --- a/code/modules/antagonists/revenant/revenant.dm +++ b/code/modules/antagonists/revenant/revenant.dm @@ -98,7 +98,7 @@ RegisterSignal(src, COMSIG_LIVING_BANED, .proc/on_baned) random_revenant_name() -/mob/living/simple_animal/revenant/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE, no_hands = FALSE, floor_okay=FALSE) +/mob/living/simple_animal/revenant/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE, need_hands = FALSE, floor_okay=FALSE) return FALSE /mob/living/simple_animal/revenant/proc/random_revenant_name() diff --git a/code/modules/antagonists/wizard/equipment/artefact.dm b/code/modules/antagonists/wizard/equipment/artefact.dm index 8dca1d0a0dd..d3a409e064f 100644 --- a/code/modules/antagonists/wizard/equipment/artefact.dm +++ b/code/modules/antagonists/wizard/equipment/artefact.dm @@ -227,7 +227,7 @@ if(!istype(M)) return ..() - if(!istype(user) || !user.canUseTopic(M, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(M, be_close = TRUE)) return if(M.stat != DEAD) diff --git a/code/modules/art/paintings.dm b/code/modules/art/paintings.dm index 0793cb76b00..f927fdccc9d 100644 --- a/code/modules/art/paintings.dm +++ b/code/modules/art/paintings.dm @@ -210,7 +210,7 @@ return var/sniped_amount = painting_metadata.credit_value var/offer_amount = tgui_input_number(user, "How much do you want to offer?", "Patronage Amount", (painting_metadata.credit_value + 1), account.account_balance, painting_metadata.credit_value) - if(!offer_amount || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!offer_amount || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(sniped_amount != painting_metadata.credit_value) return @@ -327,7 +327,7 @@ if(painting_metadata.loaded_from_json) // No renaming old paintings return var/new_name = tgui_input_text(user, "What do you want to name the painting?", "Title Your Masterpiece") - if(new_name != painting_metadata.title && new_name && user.canUseTopic(src, BE_CLOSE)) + if(new_name != painting_metadata.title && new_name && user.canUseTopic(src, be_close = TRUE)) painting_metadata.title = new_name var/sign_choice = tgui_alert(user, "Do you want to sign it or remain anonymous?", "Sign painting?", list("Yes", "No")) if(sign_choice != "Yes") diff --git a/code/modules/assembly/doorcontrol.dm b/code/modules/assembly/doorcontrol.dm index b956851a223..d2f1b611fcb 100644 --- a/code/modules/assembly/doorcontrol.dm +++ b/code/modules/assembly/doorcontrol.dm @@ -15,7 +15,7 @@ /obj/item/assembly/control/multitool_act(mob/living/user) var/change_id = tgui_input_number(user, "Set the door controllers ID", "Door ID", id, 100) - if(!change_id || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!change_id || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return id = change_id to_chat(user, span_notice("You change the ID to [id].")) diff --git a/code/modules/atmospherics/machinery/portable/canister.dm b/code/modules/atmospherics/machinery/portable/canister.dm index 9e55560056e..3f2e521d471 100644 --- a/code/modules/atmospherics/machinery/portable/canister.dm +++ b/code/modules/atmospherics/machinery/portable/canister.dm @@ -742,7 +742,7 @@ GLOBAL_LIST_INIT(gas_id_to_canister, init_gas_id_to_canister()) timer_set = min(maximum_timer_set, timer_set + 10) if("input") var/user_input = tgui_input_number(usr, "Set time to valve toggle", "Canister Timer", timer_set, maximum_timer_set, minimum_timer_set) - if(isnull(user_input) || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, TRUE)) + if(isnull(user_input) || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return timer_set = user_input log_admin("[key_name(usr)] has activated a prototype valve timer") diff --git a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm index 1197cadd29d..0f7a6f76c81 100644 --- a/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm +++ b/code/modules/atmospherics/machinery/portable/portable_atmospherics.dm @@ -153,7 +153,7 @@ /obj/machinery/portable_atmospherics/AltClick(mob/living/user) . = ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)) || !can_interact(user)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user)) || !can_interact(user)) return if(!holding) return diff --git a/code/modules/cards/cardhand.dm b/code/modules/cards/cardhand.dm index 71c455d6df0..79ac240e7e4 100644 --- a/code/modules/cards/cardhand.dm +++ b/code/modules/cards/cardhand.dm @@ -61,7 +61,7 @@ return NONE /obj/item/toy/cards/cardhand/attack_self(mob/living/user) - if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK)) + if(!isliving(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE)) return var/list/handradial = list() diff --git a/code/modules/cards/cards.dm b/code/modules/cards/cards.dm index ce5e9c88a5f..80d4ba9798d 100644 --- a/code/modules/cards/cards.dm +++ b/code/modules/cards/cards.dm @@ -98,7 +98,7 @@ * * obj/item/toy/singlecard/card (optional) - The card drawn from the hand **/ /obj/item/toy/cards/proc/draw(mob/living/user, obj/item/toy/singlecard/card) - if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK)) + if(!isliving(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE)) return var/has_no_cards = !LAZYLEN(cards) diff --git a/code/modules/cards/deck/deck.dm b/code/modules/cards/deck/deck.dm index 7cb63c46c75..9d8852034a2 100644 --- a/code/modules/cards/deck/deck.dm +++ b/code/modules/cards/deck/deck.dm @@ -147,7 +147,7 @@ /obj/item/toy/cards/deck/attack_hand(mob/living/user, list/modifiers, flip_card = FALSE) - if(!ishuman(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user))) + if(!ishuman(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user))) return var/obj/item/toy/singlecard/card = draw(user) @@ -164,7 +164,7 @@ return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN /obj/item/toy/cards/deck/AltClick(mob/living/user) - if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user))) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user))) if(wielded) shuffle_cards(user) else diff --git a/code/modules/cards/singlecard.dm b/code/modules/cards/singlecard.dm index e0d9ced2b07..28f8fcc01aa 100644 --- a/code/modules/cards/singlecard.dm +++ b/code/modules/cards/singlecard.dm @@ -207,7 +207,7 @@ return var/cardtext = stripped_input(user, "What do you wish to write on the card?", "Card Writing", "", 50) - if(!cardtext || !user.canUseTopic(src, BE_CLOSE)) + if(!cardtext || !user.canUseTopic(src, be_close = TRUE)) return cardname = cardtext @@ -228,7 +228,7 @@ attack_self(user) /obj/item/toy/singlecard/attack_self(mob/living/carbon/human/user) - if(!ishuman(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user))) + if(!ishuman(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user))) return Flip() @@ -236,7 +236,7 @@ user.balloon_alert_to_viewers("flips a card") /obj/item/toy/singlecard/AltClick(mob/living/carbon/human/user) - if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, NO_TK, !iscyborg(user))) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = TRUE, need_hands = !iscyborg(user))) transform = turn(transform, 90) // use the simple_rotation component to make this turn with Alt+RMB & Alt+LMB at some point in the future - TimT return ..() diff --git a/code/modules/cargo/supplypod_beacon.dm b/code/modules/cargo/supplypod_beacon.dm index e1b3bcd71fa..d9ec5f6b3ae 100644 --- a/code/modules/cargo/supplypod_beacon.dm +++ b/code/modules/cargo/supplypod_beacon.dm @@ -92,7 +92,7 @@ var/new_beacon_name = tgui_input_text(user, "What would you like the tag to be?", "Beacon Tag", max_length = MAX_NAME_LEN) if(isnull(new_beacon_name)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return name += " ([tag])" diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm index 11d29e43cfa..5fe0b11929e 100644 --- a/code/modules/clothing/head/hardhat.dm +++ b/code/modules/clothing/head/hardhat.dm @@ -133,7 +133,7 @@ toggle_helmet_light(user) /obj/item/clothing/head/hardhat/weldhat/AltClick(mob/user) - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE)) toggle_welding_screen(user) /obj/item/clothing/head/hardhat/weldhat/ui_action_click(mob/user, actiontype) diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm index 4b4e220e529..fde86c5a7d6 100644 --- a/code/modules/clothing/head/jobs.dm +++ b/code/modules/clothing/head/jobs.dm @@ -113,7 +113,7 @@ /obj/item/clothing/head/fedora/det_hat/AltClick(mob/user) . = ..() - if(loc != user || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(loc != user || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return if(candy_cooldown < world.time) var/obj/item/food/candy_corn/CC = new /obj/item/food/candy_corn(src) diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm index 0d143a24175..c81fdcf0cfd 100644 --- a/code/modules/clothing/head/soft_caps.dm +++ b/code/modules/clothing/head/soft_caps.dm @@ -23,7 +23,7 @@ /obj/item/clothing/head/soft/AltClick(mob/user) ..() - if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) flip(user) diff --git a/code/modules/clothing/head/wig.dm b/code/modules/clothing/head/wig.dm index 9667b92d9f2..f379261a0d1 100644 --- a/code/modules/clothing/head/wig.dm +++ b/code/modules/clothing/head/wig.dm @@ -49,7 +49,7 @@ /obj/item/clothing/head/wig/attack_self(mob/user) var/new_style = tgui_input_list(user, "Select a hairstyle", "Wig Styling", GLOB.hairstyles_list - "Bald") var/newcolor = adjustablecolor ? input(usr,"","Choose Color",color) as color|null : null - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(new_style && new_style != hairstyle) hairstyle = new_style diff --git a/code/modules/clothing/masks/breath.dm b/code/modules/clothing/masks/breath.dm index 245364671eb..b4d26e64824 100644 --- a/code/modules/clothing/masks/breath.dm +++ b/code/modules/clothing/masks/breath.dm @@ -22,7 +22,7 @@ /obj/item/clothing/mask/breath/AltClick(mob/user) ..() - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) adjustmask(user) /obj/item/clothing/mask/breath/examine(mob/user) diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index 0c82fcf3922..02fb8c90931 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -171,13 +171,13 @@ /// Open the cell cover when ALT+Click on the suit /obj/item/clothing/suit/space/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return ..() toggle_spacesuit_cell(user) /// Remove the cell whent he cover is open on CTRL+Click /obj/item/clothing/suit/space/CtrlClick(mob/living/user) - if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) if(cell_cover_open && cell) remove_cell(user) return diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm index a60f9a1664d..55c96a6547d 100644 --- a/code/modules/clothing/spacesuits/plasmamen.dm +++ b/code/modules/clothing/spacesuits/plasmamen.dm @@ -75,7 +75,7 @@ . += span_notice("There's nothing placed on the helmet.") /obj/item/clothing/head/helmet/space/plasmaman/AltClick(mob/user) - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE)) toggle_welding_screen(user) /obj/item/clothing/head/helmet/space/plasmaman/ui_action_click(mob/user, action) diff --git a/code/modules/clothing/under/_under.dm b/code/modules/clothing/under/_under.dm index c115e10064f..b9b058948f5 100644 --- a/code/modules/clothing/under/_under.dm +++ b/code/modules/clothing/under/_under.dm @@ -289,7 +289,7 @@ if(.) return - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) return if(attached_accessory) remove_accessory(user) diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm index 7b0d9bd487e..34fef42caab 100755 --- a/code/modules/clothing/under/accessories.dm +++ b/code/modules/clothing/under/accessories.dm @@ -76,7 +76,7 @@ return /obj/item/clothing/accessory/attack_self_secondary(mob/user) - if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user))) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !iscyborg(user))) above_suit = !above_suit to_chat(user, "[src] will be worn [above_suit ? "above" : "below"] your suit.") return diff --git a/code/modules/economy/holopay.dm b/code/modules/economy/holopay.dm index 5e46a5ae02f..5efd0a52041 100644 --- a/code/modules/economy/holopay.dm +++ b/code/modules/economy/holopay.dm @@ -90,7 +90,7 @@ /// Exit sanity checks if(!cash_deposit) return TRUE - if(QDELETED(held_item) || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(QDELETED(held_item) || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return FALSE if(!chip.spend(cash_deposit, FALSE)) balloon_alert(user, "insufficient credits") @@ -260,7 +260,7 @@ /// If the user has enough money, ask them the amount or charge the force fee var/amount = force_fee || tgui_input_number(user, "How much? (Max: [payee.account_balance])", "Patronage", max_value = payee.account_balance) /// Exit checks in case the user cancelled or entered an invalid amount - if(!amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return FALSE if(!payee.adjust_money(-amount)) balloon_alert(user, "insufficient credits") diff --git a/code/modules/events/ghost_role/pirates.dm b/code/modules/events/ghost_role/pirates.dm index 590ef55f2f7..5013c695ebf 100644 --- a/code/modules/events/ghost_role/pirates.dm +++ b/code/modules/events/ghost_role/pirates.dm @@ -145,7 +145,7 @@ var/scramble_response = tgui_alert(user, "Turning the scrambler on will make the shuttle trackable by GPS. Are you sure you want to do it?", "Scrambler", list("Yes", "Cancel")) if(scramble_response != "Yes") return - if(active || !user.canUseTopic(src, BE_CLOSE)) + if(active || !user.canUseTopic(src, be_close = TRUE)) return toggle_on(user) update_appearance() diff --git a/code/modules/events/holiday/vday.dm b/code/modules/events/holiday/vday.dm index e5ba921ae72..6dd36099b42 100644 --- a/code/modules/events/holiday/vday.dm +++ b/code/modules/events/holiday/vday.dm @@ -74,7 +74,7 @@ return var/recipient = tgui_input_text(user, "Who is receiving this valentine?", "To:", max_length = MAX_NAME_LEN) var/sender = tgui_input_text(user, "Who is sending this valentine?", "From:", max_length = MAX_NAME_LEN) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(recipient && sender) name = "valentine - To: [recipient] From: [sender]" diff --git a/code/modules/fishing/aquarium/aquarium.dm b/code/modules/fishing/aquarium/aquarium.dm index 1442c0928e2..2773a75cb3d 100644 --- a/code/modules/fishing/aquarium/aquarium.dm +++ b/code/modules/fishing/aquarium/aquarium.dm @@ -101,7 +101,7 @@ . += span_notice("Alt-click to [panel_open ? "close" : "open"] the control panel.") /obj/structure/aquarium/AltClick(mob/user) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return ..() panel_open = !panel_open update_appearance() diff --git a/code/modules/food_and_drinks/machinery/coffeemaker.dm b/code/modules/food_and_drinks/machinery/coffeemaker.dm index 554c90d3580..53605efe03a 100644 --- a/code/modules/food_and_drinks/machinery/coffeemaker.dm +++ b/code/modules/food_and_drinks/machinery/coffeemaker.dm @@ -119,7 +119,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, no_tk = TRUE)) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN if(brewing) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/food_and_drinks/machinery/icecream_vat.dm b/code/modules/food_and_drinks/machinery/icecream_vat.dm index 437fd9b974c..ad699ffdf08 100644 --- a/code/modules/food_and_drinks/machinery/icecream_vat.dm +++ b/code/modules/food_and_drinks/machinery/icecream_vat.dm @@ -182,7 +182,7 @@ /obj/machinery/icecream_vat/AltClick(mob/living/user) . = ..() - if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return replace_beaker(user) diff --git a/code/modules/food_and_drinks/machinery/smartfridge.dm b/code/modules/food_and_drinks/machinery/smartfridge.dm index 0529c5bf313..334e5d746cf 100644 --- a/code/modules/food_and_drinks/machinery/smartfridge.dm +++ b/code/modules/food_and_drinks/machinery/smartfridge.dm @@ -219,7 +219,7 @@ if(!desired) return FALSE - if(QDELETED(src) || QDELETED(usr) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) // Sanity checkin' in case stupid stuff happens while we wait for input() + if(QDELETED(src) || QDELETED(usr) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) // Sanity checkin' in case stupid stuff happens while we wait for input() return FALSE for(var/obj/item/dispensed_item in src) diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index a7d5d460a1d..c208ab3a92b 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -151,7 +151,7 @@ return else bomb_timer = tgui_input_number(user, "Set the bomb timer", "Pizza Bomb", bomb_timer, bomb_timer_max, bomb_timer_min) - if(!bomb_timer || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!bomb_timer || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return bomb_defused = FALSE log_bomber(user, "has trapped a", src, "with [bomb] set to [bomb_timer] seconds") @@ -219,7 +219,7 @@ return var/obj/item/pizzabox/box = boxes.len ? boxes[boxes.len] : src box.boxtag += tgui_input_text(user, "Write on [box]'s tag:", box, max_length = 30) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return to_chat(user, span_notice("You write with [I] on [src].")) boxtag_set = TRUE diff --git a/code/modules/hydroponics/beekeeping/beebox.dm b/code/modules/hydroponics/beekeeping/beebox.dm index 1f3c43f17b5..207069b0535 100644 --- a/code/modules/hydroponics/beekeeping/beebox.dm +++ b/code/modules/hydroponics/beekeeping/beebox.dm @@ -213,7 +213,7 @@ visible_message(span_danger("[user] disturbs the [name] to no effect!")) else var/option = tgui_alert(user, "Which piece do you wish to remove?", "Apiary Adjustment", list("Honey Frame", "Queen Bee")) - if(!option || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE)) + if(!option || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE)) return switch(option) if("Honey Frame") diff --git a/code/modules/hydroponics/biogenerator.dm b/code/modules/hydroponics/biogenerator.dm index 6f324d8fd71..76f16a564c2 100644 --- a/code/modules/hydroponics/biogenerator.dm +++ b/code/modules/hydroponics/biogenerator.dm @@ -150,7 +150,7 @@ /obj/machinery/biogenerator/AltClick(mob/living/user) . = ..() - if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) && can_interact(user)) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) && can_interact(user)) eject_beaker(user) /** diff --git a/code/modules/hydroponics/grown/replicapod.dm b/code/modules/hydroponics/grown/replicapod.dm index 043d2c265b1..38229ed89be 100644 --- a/code/modules/hydroponics/grown/replicapod.dm +++ b/code/modules/hydroponics/grown/replicapod.dm @@ -164,7 +164,7 @@ return result // Make sure they can still interact with the parent hydroponics tray. - if(!user.canUseTopic(parent, BE_CLOSE)) + if(!user.canUseTopic(parent, be_close = TRUE)) to_chat(user, text = "You are no longer able to harvest the seeds from [parent]!", type = MESSAGE_TYPE_INFO) return result diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm index 47557e14034..70b694ba321 100644 --- a/code/modules/hydroponics/hydroitemdefines.dm +++ b/code/modules/hydroponics/hydroitemdefines.dm @@ -582,7 +582,7 @@ to_chat(trimmer, span_warning("[pod] [pod.p_do()]n't have a head!")) return if(location == BODY_ZONE_HEAD && !trimmer.combat_mode) - if(!trimmer.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!trimmer.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return var/new_style = tgui_input_list(trimmer, "Select a hairstyle", "Grooming", GLOB.pod_hair_list) if(isnull(new_style)) diff --git a/code/modules/hydroponics/hydroponics.dm b/code/modules/hydroponics/hydroponics.dm index f611879372d..902fa6d22c4 100644 --- a/code/modules/hydroponics/hydroponics.dm +++ b/code/modules/hydroponics/hydroponics.dm @@ -928,7 +928,7 @@ var/removed_trait = tgui_input_list(user, "Trait to remove from the [myseed.plantname]", "Plant Trait Removal", sort_list(current_traits)) if(isnull(removed_trait)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(!myseed) return @@ -1008,7 +1008,7 @@ return if(isnull(fresh_mut_list[locked_mutation])) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return myseed.mutatelist = list(fresh_mut_list[locked_mutation]) myseed.set_endurance(myseed.endurance/2) @@ -1051,7 +1051,7 @@ /obj/machinery/hydroponics/CtrlClick(mob/user) . = ..() - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(!powered()) to_chat(user, span_warning("[name] has no power.")) @@ -1073,7 +1073,7 @@ update_appearance() return FALSE var/warning = tgui_alert(user, "Are you sure you wish to empty the tray's nutrient beaker?","Empty Tray Nutrients?", list("Yes", "No")) - if(warning == "Yes" && user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(warning == "Yes" && user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) reagents.clear_reagents() to_chat(user, span_warning("You empty [src]'s nutrient tank.")) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/hydroponics/seeds.dm b/code/modules/hydroponics/seeds.dm index 17dea8467de..7076739a232 100644 --- a/code/modules/hydroponics/seeds.dm +++ b/code/modules/hydroponics/seeds.dm @@ -459,14 +459,14 @@ var/choice = tgui_input_list(usr, "What would you like to change?", "Seed Alteration", list("Plant Name", "Seed Description", "Product Description")) if(isnull(choice)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return switch(choice) if("Plant Name") var/newplantname = reject_bad_text(tgui_input_text(user, "Write a new plant name", "Plant Name", plantname, 20)) if(isnull(newplantname)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return name = "[lowertext(newplantname)]" plantname = newplantname @@ -474,7 +474,7 @@ var/newdesc = tgui_input_text(user, "Write a new seed description", "Seed Description", desc, 180) if(isnull(newdesc)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return desc = newdesc if("Product Description") @@ -483,7 +483,7 @@ var/newproductdesc = tgui_input_text(user, "Write a new product description", "Product Description", productdesc, 180) if(isnull(newproductdesc)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return productdesc = newproductdesc diff --git a/code/modules/instruments/songs/editor.dm b/code/modules/instruments/songs/editor.dm index 2e16eed4df5..7555ee09953 100644 --- a/code/modules/instruments/songs/editor.dm +++ b/code/modules/instruments/songs/editor.dm @@ -115,7 +115,7 @@ updateDialog(usr) // make sure updates when complete /datum/song/Topic(href, href_list) - if(!usr.canUseTopic(parent, TRUE, FALSE, FALSE, FALSE)) + if(!usr.canUseTopic(parent, be_close = TRUE, no_dexterity = FALSE, no_tk = FALSE, need_hands = FALSE)) usr << browse(null, "window=instrument") usr.unset_machine() return diff --git a/code/modules/library/book.dm b/code/modules/library/book.dm index a33f28b4238..e1d58a155d2 100644 --- a/code/modules/library/book.dm +++ b/code/modules/library/book.dm @@ -139,7 +139,7 @@ /obj/item/book/attackby(obj/item/I, mob/user, params) if(istype(I, /obj/item/pen)) - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return if(user.is_blind()) to_chat(user, span_warning("As you are trying to write on the book, you suddenly feel very stupid!")) @@ -151,12 +151,12 @@ var/choice = tgui_input_list(usr, "What would you like to change?", "Book Alteration", list("Title", "Contents", "Author", "Cancel")) if(isnull(choice)) return - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return switch(choice) if("Title") var/newtitle = reject_bad_text(tgui_input_text(user, "Write a new title", "Book Title", max_length = 30)) - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return if (length_char(newtitle) > 30) to_chat(user, span_warning("That title won't fit on the cover!")) @@ -168,7 +168,7 @@ book_data.set_title(html_decode(newtitle)) //Don't want to double encode here if("Contents") var/content = tgui_input_text(user, "Write your book's contents (HTML NOT allowed)", "Book Contents", multiline = TRUE) - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return if(!content) to_chat(user, span_warning("The content is invalid.")) @@ -176,7 +176,7 @@ book_data.set_content(html_decode(content)) if("Author") var/author = tgui_input_text(user, "Write the author's name", "Author Name") - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return if(!author) to_chat(user, span_warning("The name is invalid.")) diff --git a/code/modules/library/bookcase.dm b/code/modules/library/bookcase.dm index 4f3a505d512..463956fae29 100644 --- a/code/modules/library/bookcase.dm +++ b/code/modules/library/bookcase.dm @@ -123,10 +123,10 @@ to_chat(user, span_notice("You empty \the [I] into \the [src].")) update_appearance() else if(istype(I, /obj/item/pen)) - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return var/newname = tgui_input_text(user, "What would you like to title this bookshelf?", "Bookshelf Renaming", max_length = MAX_NAME_LEN) - if(!user.canUseTopic(src, BE_CLOSE) || !user.can_write(I)) + if(!user.canUseTopic(src, be_close = TRUE) || !user.can_write(I)) return if(!newname) return diff --git a/code/modules/mining/abandoned_crates.dm b/code/modules/mining/abandoned_crates.dm index ea3f4330df3..390e1dd2e0b 100644 --- a/code/modules/mining/abandoned_crates.dm +++ b/code/modules/mining/abandoned_crates.dm @@ -30,7 +30,7 @@ if(locked) to_chat(user, span_notice("The crate is locked with a Deca-code lock.")) var/input = input(usr, "Enter [codelen] digits. All digits must be unique.", "Deca-Code Lock", "") as text|null - if(user.canUseTopic(src, BE_CLOSE) && locked) + if(user.canUseTopic(src, be_close = TRUE) && locked) var/list/sanitised = list() var/sanitycheck = TRUE var/char = "" @@ -63,7 +63,7 @@ return ..() /obj/structure/closet/crate/secure/loot/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return return attack_hand(user) //this helps you not blow up so easily by overriding unlocking which results in an immediate boom. diff --git a/code/modules/mining/equipment/marker_beacons.dm b/code/modules/mining/equipment/marker_beacons.dm index d0e71c89d56..3c843eaf94c 100644 --- a/code/modules/mining/equipment/marker_beacons.dm +++ b/code/modules/mining/equipment/marker_beacons.dm @@ -60,12 +60,12 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list( transfer_fingerprints_to(M) /obj/item/stack/marker_beacon/AltClick(mob/living/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return var/input_color = tgui_input_list(user, "Choose a color", "Beacon Color", GLOB.marker_beacon_colors) if(isnull(input_color)) return - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return picked_color = input_color update_appearance() @@ -150,12 +150,12 @@ GLOBAL_LIST_INIT(marker_beacon_colors, sort_list(list( /obj/structure/marker_beacon/AltClick(mob/living/user) ..() - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return var/input_color = tgui_input_list(user, "Choose a color", "Beacon Color", GLOB.marker_beacon_colors) if(isnull(input_color)) return - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return picked_color = input_color update_appearance() diff --git a/code/modules/mining/equipment/regenerative_core.dm b/code/modules/mining/equipment/regenerative_core.dm index b16bf2055ee..7d17a29c934 100644 --- a/code/modules/mining/equipment/regenerative_core.dm +++ b/code/modules/mining/equipment/regenerative_core.dm @@ -97,7 +97,7 @@ applyto(target, user) /obj/item/organ/internal/regenerative_core/attack_self(mob/user) - if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) applyto(user, user) /obj/item/organ/internal/regenerative_core/Insert(mob/living/carbon/target_carbon, special = 0, drop_if_replaced = TRUE) diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index d7963681278..1d06baa0baa 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -189,7 +189,7 @@ /obj/machinery/mineral/ore_redemption/AltClick(mob/living/user) . = ..() - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(panel_open) input_dir = turn(input_dir, -90) @@ -288,7 +288,7 @@ desired = text2num(params["sheets"]) else desired = tgui_input_number(usr, "How many sheets would you like to smelt?", "Smelt", max_value = stored_amount) - if(!desired || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!desired || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return var/sheets_to_remove = round(min(desired,50,stored_amount)) @@ -336,7 +336,7 @@ desired = text2num(params["sheets"]) else desired = tgui_input_number(usr, "How many sheets would you like to smelt?", "Smelt", max_value = smelt_amount) - if(!desired || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!desired || QDELETED(usr) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return var/amount = round(min(desired,50,smelt_amount)) if(amount < 1) //no negative mats diff --git a/code/modules/mob/living/brain/posibrain.dm b/code/modules/mob/living/brain/posibrain.dm index c38c9b24c53..68b7ec552d8 100644 --- a/code/modules/mob/living/brain/posibrain.dm +++ b/code/modules/mob/living/brain/posibrain.dm @@ -73,12 +73,12 @@ GLOBAL_VAR(posibrain_notify_cooldown) addtimer(CALLBACK(src, .proc/check_success), ask_delay) /obj/item/mmi/posibrain/AltClick(mob/living/user) - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return var/input_seed = tgui_input_text(user, "Enter a personality seed", "Enter seed", ask_role, MAX_NAME_LEN) if(isnull(input_seed)) return - if(!istype(user) || !user.canUseTopic(src, BE_CLOSE)) + if(!istype(user) || !user.canUseTopic(src, be_close = TRUE)) return to_chat(user, span_notice("You set the personality seed to \"[input_seed]\".")) ask_role = input_seed diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 449aba7b4fc..95c84bde476 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -204,7 +204,7 @@ /mob/living/carbon/Topic(href, href_list) ..() - if(href_list["embedded_object"] && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + if(href_list["embedded_object"] && usr.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE)) var/obj/item/bodypart/L = locate(href_list["embedded_limb"]) in bodyparts if(!L) return diff --git a/code/modules/mob/living/simple_animal/friendly/mouse.dm b/code/modules/mob/living/simple_animal/friendly/mouse.dm index 63512172855..2fa83befd2f 100644 --- a/code/modules/mob/living/simple_animal/friendly/mouse.dm +++ b/code/modules/mob/living/simple_animal/friendly/mouse.dm @@ -119,7 +119,7 @@ if(HAS_TRAIT(src, TRAIT_HANDS_BLOCKED)) return . = ..() - if(istype(A, /obj/item/food/cheese) && canUseTopic(A, BE_CLOSE, NO_DEXTERITY)) + if(istype(A, /obj/item/food/cheese) && canUseTopic(A, be_close = TRUE, no_dexterity = TRUE)) if(health == maxHealth) to_chat(src,span_warning("You don't need to eat or heal.")) return diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 2edf7391e18..826fbaf4c25 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -972,7 +972,16 @@ return FALSE return ISINRANGE(their_turf.x, our_turf.x - interaction_range, our_turf.x + interaction_range) && ISINRANGE(their_turf.y, our_turf.y - interaction_range, our_turf.y + interaction_range) -///Can the mob use Topic to interact with machines +/** + * Whether the mob can use Topic to interact with machines + * + * Args: + * be_close - Whether you need to be next to/on top of M + * no_dexterity - Whether you need to be an ADVANCEDTOOLUSER + * no_tk - If be_close is TRUE, this will block Telekinesis from bypassing the requirement + * need_hands - Whether you need hands to use this + * floor_okay - Whether mobility flags should be checked for MOBILITY_UI to use. + */ /mob/proc/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE, need_hands = FALSE, floor_okay=FALSE) return diff --git a/code/modules/modular_computers/computers/item/computer.dm b/code/modules/modular_computers/computers/item/computer.dm index 8590014092e..fa22c4effb1 100644 --- a/code/modules/modular_computers/computers/item/computer.dm +++ b/code/modules/modular_computers/computers/item/computer.dm @@ -159,7 +159,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar if(issilicon(user)) return - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE)) var/obj/item/computer_hardware/card_slot/card_slot2 = all_components[MC_CARD2] var/obj/item/computer_hardware/card_slot/card_slot = all_components[MC_CARD] if(card_slot2?.try_eject(user) || card_slot?.try_eject(user)) @@ -272,7 +272,7 @@ GLOBAL_LIST_EMPTY(TabletMessengers) // a list of all active messengers, similar /obj/item/modular_computer/MouseDrop(obj/over_object, src_location, over_location) var/mob/M = usr - if((!istype(over_object, /atom/movable/screen)) && usr.canUseTopic(src, BE_CLOSE)) + if((!istype(over_object, /atom/movable/screen)) && usr.canUseTopic(src, be_close = TRUE)) return attack_self(M) return ..() diff --git a/code/modules/modular_computers/computers/item/laptop.dm b/code/modules/modular_computers/computers/item/laptop.dm index 51e9134b7bf..4154c56db22 100644 --- a/code/modules/modular_computers/computers/item/laptop.dm +++ b/code/modules/modular_computers/computers/item/laptop.dm @@ -87,7 +87,7 @@ return if(!isturf(loc) && !ismob(loc)) // No opening it in backpack. return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return toggle_open(user) diff --git a/code/modules/modular_computers/computers/item/tablet.dm b/code/modules/modular_computers/computers/item/tablet.dm index 798b0e84d2e..a0f39ac7a84 100644 --- a/code/modules/modular_computers/computers/item/tablet.dm +++ b/code/modules/modular_computers/computers/item/tablet.dm @@ -95,7 +95,7 @@ /obj/item/modular_computer/tablet/proc/remove_pen(mob/user) - if(issilicon(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) //TK doesn't work even with this removed but here for readability + if(issilicon(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) //TK doesn't work even with this removed but here for readability return if(inserted_item) diff --git a/code/modules/modular_computers/file_system/programs/ntmessenger.dm b/code/modules/modular_computers/file_system/programs/ntmessenger.dm index 0e6315e0fa6..8cfd24dac93 100644 --- a/code/modules/modular_computers/file_system/programs/ntmessenger.dm +++ b/code/modules/modular_computers/file_system/programs/ntmessenger.dm @@ -226,7 +226,7 @@ if (!t || !sending_and_receiving) return - if(!U.canUseTopic(computer, BE_CLOSE)) + if(!U.canUseTopic(computer, be_close = TRUE)) return return sanitize(t) @@ -381,7 +381,7 @@ if(computer.active_program != src) if(!computer.open_program(usr, src)) return - if(!href_list["close"] && usr.canUseTopic(computer, BE_CLOSE, FALSE, NO_TK)) + if(!href_list["close"] && usr.canUseTopic(computer, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) switch(href_list["choice"]) if("Message") send_message(usr, list(locate(href_list["target"]))) diff --git a/code/modules/modular_computers/hardware/virus_disk.dm b/code/modules/modular_computers/hardware/virus_disk.dm index 036899ed2c6..d89af44fbe4 100644 --- a/code/modules/modular_computers/hardware/virus_disk.dm +++ b/code/modules/modular_computers/hardware/virus_disk.dm @@ -58,10 +58,10 @@ var/original_host = holder var/fakename = sanitize_name(tgui_input_text(user, "Enter a name for the rigged message.", "Forge Message", max_length = MAX_NAME_LEN), allow_numbers = TRUE) - if(!fakename || holder != original_host || !user.canUseTopic(holder, BE_CLOSE)) + if(!fakename || holder != original_host || !user.canUseTopic(holder, be_close = TRUE)) return var/fakejob = sanitize_name(tgui_input_text(user, "Enter a job for the rigged message.", "Forge Message", max_length = MAX_NAME_LEN), allow_numbers = TRUE) - if(!fakejob || holder != original_host || !user.canUseTopic(holder, BE_CLOSE)) + if(!fakejob || holder != original_host || !user.canUseTopic(holder, be_close = TRUE)) return var/obj/item/computer_hardware/hard_drive/drive = holder.all_components[MC_HDD] diff --git a/code/modules/paperwork/folders.dm b/code/modules/paperwork/folders.dm index ac9a9c1941e..39bab876ade 100644 --- a/code/modules/paperwork/folders.dm +++ b/code/modules/paperwork/folders.dm @@ -38,7 +38,7 @@ if(!inputvalue) return - if(user.canUseTopic(src, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE)) name = "folder[(inputvalue ? " - '[inputvalue]'" : null)]" /obj/item/folder/proc/remove_item(obj/item/Item, mob/user) diff --git a/code/modules/paperwork/paperplane.dm b/code/modules/paperwork/paperplane.dm index 46f116c4254..27b75d5dbfd 100644 --- a/code/modules/paperwork/paperplane.dm +++ b/code/modules/paperwork/paperplane.dm @@ -113,7 +113,7 @@ . += span_notice("Alt-click [src] to fold it into a paper plane.") /obj/item/paper/AltClick(mob/living/user, obj/item/I) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return if(istype(src, /obj/item/paper/carbon)) var/obj/item/paper/carbon/Carbon = src diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm index 2284ba72706..444577dbc35 100644 --- a/code/modules/paperwork/pen.dm +++ b/code/modules/paperwork/pen.dm @@ -142,7 +142,7 @@ to_chat(user, span_warning("You must be holding the pen to continue!")) return var/deg = tgui_input_number(user, "What angle would you like to rotate the pen head to? (0-360)", "Rotate Pen Head", max_value = 360) - if(isnull(deg) || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || loc != user) + if(isnull(deg) || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user) return degrees = deg to_chat(user, span_notice("You rotate the top of the pen to [deg] degrees.")) @@ -163,12 +163,12 @@ //Changing name/description of items. Only works if they have the UNIQUE_RENAME object flag set if(isobj(O) && proximity && (O.obj_flags & UNIQUE_RENAME)) var/penchoice = tgui_input_list(user, "What would you like to edit?", "Pen Setting", list("Rename", "Description", "Reset")) - if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE)) + if(QDELETED(O) || !user.canUseTopic(O, be_close = TRUE)) return if(penchoice == "Rename") var/input = tgui_input_text(user, "What do you want to name [O]?", "Object Name", "[O.name]", MAX_NAME_LEN) var/oldname = O.name - if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE)) + if(QDELETED(O) || !user.canUseTopic(O, be_close = TRUE)) return if(input == oldname || !input) to_chat(user, span_notice("You changed [O] to... well... [O].")) @@ -184,7 +184,7 @@ if(penchoice == "Description") var/input = tgui_input_text(user, "Describe [O]", "Description", "[O.desc]", 140) var/olddesc = O.desc - if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE)) + if(QDELETED(O) || !user.canUseTopic(O, be_close = TRUE)) return if(input == olddesc || !input) to_chat(user, span_notice("You decide against changing [O]'s description.")) @@ -194,7 +194,7 @@ O.renamedByPlayer = TRUE if(penchoice == "Reset") - if(QDELETED(O) || !user.canUseTopic(O, BE_CLOSE)) + if(QDELETED(O) || !user.canUseTopic(O, be_close = TRUE)) return qdel(O.GetComponent(/datum/component/rename)) diff --git a/code/modules/paperwork/photocopier.dm b/code/modules/paperwork/photocopier.dm index 6c8b19dfd1f..4159e664f51 100644 --- a/code/modules/paperwork/photocopier.dm +++ b/code/modules/paperwork/photocopier.dm @@ -440,7 +440,7 @@ /obj/machinery/photocopier/MouseDrop_T(mob/target, mob/user) check_ass() //Just to make sure that you can re-drag somebody onto it after they moved off. - if(!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, BE_CLOSE) || target == ass || copier_blocked()) + if(!istype(target) || target.anchored || target.buckled || !Adjacent(target) || !user.canUseTopic(src, be_close = TRUE) || target == ass || copier_blocked()) return add_fingerprint(user) if(target == user) diff --git a/code/modules/photography/camera/camera.dm b/code/modules/photography/camera/camera.dm index d174324d1b3..61b915d337c 100644 --- a/code/modules/photography/camera/camera.dm +++ b/code/modules/photography/camera/camera.dm @@ -61,17 +61,17 @@ to_chat(user, span_warning("You must be holding the camera to continue!")) return FALSE var/desired_x = tgui_input_number(user, "How wide do you want the camera to shoot?", "Zoom", picture_size_x, picture_size_x_max, picture_size_x_min) - if(!desired_x || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || loc != user) + if(!desired_x || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user) return FALSE var/desired_y = tgui_input_number(user, "How high do you want the camera to shoot", "Zoom", picture_size_y, picture_size_y_max, picture_size_y_min) - if(!desired_y|| QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || loc != user) + if(!desired_y|| QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user) return FALSE picture_size_x = min(clamp(desired_x, picture_size_x_min, picture_size_x_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) picture_size_y = min(clamp(desired_y, picture_size_y_min, picture_size_y_max), CAMERA_PICTURE_SIZE_HARD_LIMIT) return TRUE /obj/item/camera/AltClick(mob/user) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return adjust_zoom(user) diff --git a/code/modules/photography/photos/photo.dm b/code/modules/photography/photos/photo.dm index 16c0d008b45..95b071c7dc6 100644 --- a/code/modules/photography/photos/photo.dm +++ b/code/modules/photography/photos/photo.dm @@ -71,7 +71,7 @@ if(!user.can_write(P)) return var/txt = tgui_input_text(user, "What would you like to write on the back?", "Photo Writing", max_length = 128) - if(txt && user.canUseTopic(src, BE_CLOSE)) + if(txt && user.canUseTopic(src, be_close = TRUE)) scribble = txt else return ..() diff --git a/code/modules/plumbing/plumbers/bottler.dm b/code/modules/plumbing/plumbers/bottler.dm index 98434ee060d..46a0e1d328d 100644 --- a/code/modules/plumbing/plumbers/bottler.dm +++ b/code/modules/plumbing/plumbers/bottler.dm @@ -63,7 +63,7 @@ to_chat(user, span_warning("A flashing notification on the screen reads: \"Output location error!\"")) return . var/new_amount = tgui_input_number(user, "Set Amount to Fill", "Desired Amount", max_value = 100) - if(!new_amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!new_amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return . wanted_amount = new_amount to_chat(user, span_notice(" The [src] will now fill for [wanted_amount]u.")) diff --git a/code/modules/plumbing/plumbers/plumbing_buffer.dm b/code/modules/plumbing/plumbers/plumbing_buffer.dm index 4ffd7fe0874..823573b98ee 100644 --- a/code/modules/plumbing/plumbers/plumbing_buffer.dm +++ b/code/modules/plumbing/plumbers/plumbing_buffer.dm @@ -78,7 +78,7 @@ . = SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN var/new_volume = tgui_input_number(user, "Enter new activation threshold", "Beepityboop", activation_volume, buffer) - if(!new_volume || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!new_volume || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return activation_volume = new_volume to_chat(user, span_notice("New activation threshold is now [activation_volume].")) diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm index 4130b687649..61b93f89ad1 100644 --- a/code/modules/power/pipecleaners.dm +++ b/code/modules/power/pipecleaners.dm @@ -162,7 +162,7 @@ By design, d1 is the smallest direction and d2 is the highest stored.update_appearance() /obj/structure/pipe_cleaner/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return cut_pipe_cleaner(user) diff --git a/code/modules/projectiles/gun.dm b/code/modules/projectiles/gun.dm index 527b90777e3..9cecfd0c708 100644 --- a/code/modules/projectiles/gun.dm +++ b/code/modules/projectiles/gun.dm @@ -440,7 +440,7 @@ . = ..() if(.) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(bayonet && can_bayonet) //if it has a bayonet, and the bayonet can be removed @@ -461,7 +461,7 @@ . = ..() if(.) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(pin && user.is_holding(src)) user.visible_message(span_warning("[user] attempts to remove [pin] from [src] with [I]."), @@ -478,7 +478,7 @@ . = ..() if(.) return - if(!user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return if(pin && user.is_holding(src)) user.visible_message(span_warning("[user] attempts to remove [pin] from [src] with [I]."), diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm index 0e1abd131d3..01f59fda95b 100644 --- a/code/modules/projectiles/guns/ballistic.dm +++ b/code/modules/projectiles/guns/ballistic.dm @@ -415,7 +415,7 @@ return ..() /obj/item/gun/ballistic/AltClick(mob/user) - if (unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + if (unique_reskin && !current_skin && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE)) reskin_obj(user) return if(loc == user) diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm index 376ad950071..6b365affeaf 100644 --- a/code/modules/projectiles/guns/ballistic/shotgun.dm +++ b/code/modules/projectiles/guns/ballistic/shotgun.dm @@ -113,7 +113,7 @@ to_chat(user, span_notice("You switch to tube A.")) /obj/item/gun/ballistic/shotgun/automatic/dual_tube/AltClick(mob/living/user) - if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE)) + if(!user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = TRUE)) return rack() @@ -265,7 +265,7 @@ /obj/item/gun/ballistic/shotgun/doublebarrel/AltClick(mob/user) . = ..() - if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + if(unique_reskin && !current_skin && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE)) reskin_obj(user) /obj/item/gun/ballistic/shotgun/doublebarrel/sawoff(mob/user) diff --git a/code/modules/projectiles/pins.dm b/code/modules/projectiles/pins.dm index 990073c255a..1f0fd50ff44 100644 --- a/code/modules/projectiles/pins.dm +++ b/code/modules/projectiles/pins.dm @@ -262,7 +262,7 @@ owned = FALSE return var/transaction_amount = tgui_input_number(user, "Insert valid deposit amount for gun purchase", "Money Deposit") - if(!transaction_amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!transaction_amount || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return pin_owner = id owned = TRUE @@ -285,7 +285,7 @@ if(credit_card_details && !active_prompt) var/license_request = tgui_alert(user, "Do you wish to pay [payment_amount] credit[( payment_amount > 1 ) ? "s" : ""] for [( multi_payment ) ? "each shot of [gun.name]" : "usage license of [gun.name]"]?", "Weapon Purchase", list("Yes", "No")) active_prompt = TRUE - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) active_prompt = FALSE return FALSE switch(license_request) diff --git a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm index 505de4cdc2e..af495dd4348 100644 --- a/code/modules/reagents/chemistry/machinery/chem_dispenser.dm +++ b/code/modules/reagents/chemistry/machinery/chem_dispenser.dm @@ -451,7 +451,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, no_tk = TRUE)) return replace_beaker(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/reagents/chemistry/machinery/chem_heater.dm b/code/modules/reagents/chemistry/machinery/chem_heater.dm index 8a6725f6249..16b6b8edbca 100644 --- a/code/modules/reagents/chemistry/machinery/chem_heater.dm +++ b/code/modules/reagents/chemistry/machinery/chem_heater.dm @@ -64,7 +64,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, no_tk = TRUE)) return replace_beaker(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm b/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm index 7fa2ce30fdc..5c0a0cd7f32 100644 --- a/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm +++ b/code/modules/reagents/chemistry/machinery/chem_mass_spec.dm @@ -125,7 +125,7 @@ This will not clean any inverted reagents. Inverted reagents will still be corre if(processing_reagents) to_chat(user, " The [src] is currently processing a batch!") return - if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return ..() replace_beaker(user, BEAKER1) @@ -134,7 +134,7 @@ This will not clean any inverted reagents. Inverted reagents will still be corre if(processing_reagents) to_chat(user, " The [src] is currently processing a batch!") return - if(!can_interact(user) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return replace_beaker(user, BEAKER2) diff --git a/code/modules/reagents/chemistry/machinery/chem_master.dm b/code/modules/reagents/chemistry/machinery/chem_master.dm index 2e357dd5880..c1273603567 100644 --- a/code/modules/reagents/chemistry/machinery/chem_master.dm +++ b/code/modules/reagents/chemistry/machinery/chem_master.dm @@ -143,7 +143,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, no_tk = TRUE)) return replace_beaker(user) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/reagents/chemistry/machinery/pandemic.dm b/code/modules/reagents/chemistry/machinery/pandemic.dm index 2816a0b3e73..d250c9f3ea7 100644 --- a/code/modules/reagents/chemistry/machinery/pandemic.dm +++ b/code/modules/reagents/chemistry/machinery/pandemic.dm @@ -61,7 +61,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, no_tk = TRUE)) return eject_beaker() return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN diff --git a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm index 24f048e48e8..db394497e4e 100644 --- a/code/modules/reagents/chemistry/machinery/reagentgrinder.dm +++ b/code/modules/reagents/chemistry/machinery/reagentgrinder.dm @@ -99,7 +99,7 @@ . = ..() if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return - if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, NO_TK)) + if(!can_interact(user) || !user.canUseTopic(src, !issilicon(user), FALSE, no_tk = TRUE)) return if(operating) return diff --git a/code/modules/reagents/reagent_containers/blood_pack.dm b/code/modules/reagents/reagent_containers/blood_pack.dm index 691edcc1e66..6c059cdaffc 100644 --- a/code/modules/reagents/reagent_containers/blood_pack.dm +++ b/code/modules/reagents/reagent_containers/blood_pack.dm @@ -73,7 +73,7 @@ if(!user.can_write(tool)) return var/custom_label = tgui_input_text(user, "What would you like to label the blood pack?", "Blood Pack", name, MAX_NAME_LEN) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(user.get_active_held_item() != tool) return diff --git a/code/modules/reagents/reagent_containers/chem_pack.dm b/code/modules/reagents/reagent_containers/chem_pack.dm index a710e55f12c..484fc83661a 100644 --- a/code/modules/reagents/reagent_containers/chem_pack.dm +++ b/code/modules/reagents/reagent_containers/chem_pack.dm @@ -13,7 +13,7 @@ possible_transfer_amounts = list() /obj/item/reagent_containers/chem_pack/AltClick(mob/living/user) - if(user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY) && !sealed) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE) && !sealed) if(iscarbon(user) && (HAS_TRAIT(user, TRAIT_CLUMSY) && prob(50))) to_chat(user, span_warning("Uh... whoops! You accidentally spill the content of the bag onto yourself.")) SplashReagents(user) diff --git a/code/modules/reagents/reagent_containers/hypospray.dm b/code/modules/reagents/reagent_containers/hypospray.dm index 8e438987681..9298cb7f881 100644 --- a/code/modules/reagents/reagent_containers/hypospray.dm +++ b/code/modules/reagents/reagent_containers/hypospray.dm @@ -131,7 +131,7 @@ update_appearance() /obj/item/reagent_containers/hypospray/medipen/attack_self(mob/user) - if(user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK, FALSE, FLOOR_OKAY)) + if(user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE, need_hands = FALSE, floor_okay = TRUE)) inject(user, user) /obj/item/reagent_containers/hypospray/medipen/update_icon_state() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 7867aaf92b0..4c3c33aadf3 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -397,7 +397,7 @@ "Blue" = "sprayer_med_blue") /obj/item/reagent_containers/spray/medical/AltClick(mob/user) - if(unique_reskin && !current_skin && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY)) + if(unique_reskin && !current_skin && user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE)) reskin_obj(user) /obj/item/reagent_containers/spray/medical/reskin_obj(mob/M) diff --git a/code/modules/recycling/conveyor.dm b/code/modules/recycling/conveyor.dm index 22f13ccdbb5..8eeb9fcc2d8 100644 --- a/code/modules/recycling/conveyor.dm +++ b/code/modules/recycling/conveyor.dm @@ -408,7 +408,7 @@ GLOBAL_LIST_EMPTY(conveyors_by_id) /obj/machinery/conveyor_switch/multitool_act(mob/living/user, obj/item/I) var/input_speed = tgui_input_number(user, "Set the speed of the conveyor belts in seconds", "Speed", conveyor_speed, 20, 0.2) - if(!input_speed || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, BE_CLOSE, FALSE, NO_TK)) + if(!input_speed || QDELETED(user) || QDELETED(src) || !usr.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE)) return conveyor_speed = input_speed to_chat(user, span_notice("You change the time between moves to [input_speed] seconds.")) diff --git a/code/modules/recycling/sortingmachinery.dm b/code/modules/recycling/sortingmachinery.dm index 80a42157642..e8d28714909 100644 --- a/code/modules/recycling/sortingmachinery.dm +++ b/code/modules/recycling/sortingmachinery.dm @@ -117,7 +117,7 @@ if(!user.can_write(item)) return var/str = tgui_input_text(user, "Label text?", "Set label", max_length = MAX_NAME_LEN) - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(!str || !length(str)) to_chat(user, span_warning("Invalid text!")) diff --git a/code/modules/research/xenobiology/crossbreeding/_misc.dm b/code/modules/research/xenobiology/crossbreeding/_misc.dm index 8f12d7c2733..edba2019b83 100644 --- a/code/modules/research/xenobiology/crossbreeding/_misc.dm +++ b/code/modules/research/xenobiology/crossbreeding/_misc.dm @@ -176,7 +176,7 @@ Slimecrossing Items if(M.mind) to_chat(user, span_notice("You offer the device to [M].")) if(tgui_alert(M, "Would you like to enter [user]'s capture device?", "Gold Capture Device", list("Yes", "No")) == "Yes") - if(user.canUseTopic(src, BE_CLOSE) && user.canUseTopic(M, BE_CLOSE)) + if(user.canUseTopic(src, be_close = TRUE) && user.canUseTopic(M, be_close = TRUE)) to_chat(user, span_notice("You store [M] in the capture device.")) to_chat(M, span_notice("The world warps around you, and you're suddenly in an endless void, with a window to the outside floating in front of you.")) store(M, user) diff --git a/code/modules/research/xenobiology/crossbreeding/charged.dm b/code/modules/research/xenobiology/crossbreeding/charged.dm index d96bc875353..b68fc67f24b 100644 --- a/code/modules/research/xenobiology/crossbreeding/charged.dm +++ b/code/modules/research/xenobiology/crossbreeding/charged.dm @@ -176,7 +176,7 @@ Charged extracts: if(isnull(racechoice)) to_chat(user, span_notice("You decide not to become a slime for now.")) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return human_user.set_species(choice_list[racechoice], icon_update=1) human_user.visible_message(span_warning("[human_user] suddenly shifts form as [src] dissolves into [human_user.p_their()] skin!")) diff --git a/code/modules/research/xenobiology/crossbreeding/stabilized.dm b/code/modules/research/xenobiology/crossbreeding/stabilized.dm index 0b4e5f00998..cf83ad88910 100644 --- a/code/modules/research/xenobiology/crossbreeding/stabilized.dm +++ b/code/modules/research/xenobiology/crossbreeding/stabilized.dm @@ -152,7 +152,7 @@ Stabilized extracts: var/choice = tgui_input_list(user, "Which do you want to reset?", "Familiar Adjustment", sort_list(list("Familiar Location", "Familiar Species", "Familiar Sentience", "Familiar Name"))) if(isnull(choice)) return - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(isliving(user)) var/mob/living/L = user diff --git a/code/modules/vehicles/mecha/mech_fabricator.dm b/code/modules/vehicles/mecha/mech_fabricator.dm index 3008b7d8460..f9a8d71b6a5 100644 --- a/code/modules/vehicles/mecha/mech_fabricator.dm +++ b/code/modules/vehicles/mecha/mech_fabricator.dm @@ -127,7 +127,7 @@ /obj/machinery/mecha_part_fabricator/AltClick(mob/user) . = ..() - if(!user.canUseTopic(src, BE_CLOSE)) + if(!user.canUseTopic(src, be_close = TRUE)) return if(panel_open) dir = turn(dir, -90) diff --git a/code/modules/vehicles/ridden.dm b/code/modules/vehicles/ridden.dm index b03229d283e..afe15da47fd 100644 --- a/code/modules/vehicles/ridden.dm +++ b/code/modules/vehicles/ridden.dm @@ -40,7 +40,7 @@ inserted_key = I /obj/vehicle/ridden/AltClick(mob/user) - if(!inserted_key || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !issilicon(user))) + if(!inserted_key || !user.canUseTopic(src, be_close = TRUE, no_dexterity = TRUE, no_tk = FALSE, need_hands = !issilicon(user))) return ..() if(!is_occupant(user)) to_chat(user, span_warning("You must be riding the [src] to remove [src]'s key!")) diff --git a/code/modules/vehicles/wheelchair.dm b/code/modules/vehicles/wheelchair.dm index 40aeb9741db..c3b8b3d04be 100644 --- a/code/modules/vehicles/wheelchair.dm +++ b/code/modules/vehicles/wheelchair.dm @@ -112,7 +112,7 @@ . = ..() if(over_object != usr || !Adjacent(usr) || !foldabletype) return FALSE - if(!ishuman(usr) || !usr.canUseTopic(src, BE_CLOSE)) + if(!ishuman(usr) || !usr.canUseTopic(src, be_close = TRUE)) return FALSE if(has_buckled_mobs()) return FALSE diff --git a/code/modules/vending/_vending.dm b/code/modules/vending/_vending.dm index 7e5a7c92295..04d02be8182 100644 --- a/code/modules/vending/_vending.dm +++ b/code/modules/vending/_vending.dm @@ -1439,7 +1439,7 @@ GLOBAL_LIST_EMPTY(vending_products) to_chat(user, span_warning("You must be holding the price tagger to continue!")) return var/chosen_price = tgui_input_number(user, "Set price", "Price", price) - if(!chosen_price || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, BE_CLOSE, FALSE, NO_TK) || loc != user) + if(!chosen_price || QDELETED(user) || QDELETED(src) || !user.canUseTopic(src, be_close = TRUE, no_dexterity = FALSE, no_tk = TRUE) || loc != user) return price = chosen_price to_chat(user, span_notice(" The [src] will now give things a [price] cr tag."))