Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ports standardized CanUseTopic() refactor #12178

Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 4 additions & 1 deletion code/__DEFINES/traits/declarations.dm
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,10 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai
#define TRAIT_BADDNA "baddna"
#define TRAIT_CLUMSY "clumsy"
#define TRAIT_DUMB "dumb"
#define TRAIT_DISCOORDINATED "discoordinated" //sets IsAdvancedToolUser to FALSE on humans and monkies
//Whether a mob is dexterous enough to use machines and certain items or not.
#define TRAIT_ADVANCEDTOOLUSER "advancedtooluser"
//Antagonizes the above.
#define TRAIT_DISCOORDINATED "discoordinated"
#define TRAIT_PACIFISM "pacifism"
#define TRAIT_IGNORESLOWDOWN "ignoreslow"
#define TRAIT_IGNOREDAMAGESLOWDOWN "ignoredamageslowdown"
Expand Down
2 changes: 2 additions & 0 deletions code/__HELPERS/mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -866,3 +866,5 @@ GLOBAL_DATUM_INIT(dview_mob, /mob/dview, new)
#undef FACING_SAME_DIR
#undef FACING_EACHOTHER
#undef FACING_INIT_FACING_TARGET_TARGET_FACING_PERPENDICULAR

#define ISADVANCEDTOOLUSER(mob) (HAS_TRAIT(mob, TRAIT_ADVANCEDTOOLUSER) && !HAS_TRAIT(mob, TRAIT_DISCOORDINATED))
1 change: 1 addition & 0 deletions code/_globalvars/traits/_traits.dm
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ GLOBAL_LIST_INIT(traits_by_type, list(
"TRAIT_BADDNA" = TRAIT_BADDNA,
"TRAIT_CLUMSY" = TRAIT_CLUMSY,
"TRAIT_DUMB" = TRAIT_DUMB,
"TRAIT_ADVANCEDTOOLUSER" = TRAIT_ADVANCEDTOOLUSER,
"TRAIT_DISCOORDINATED" = TRAIT_DISCOORDINATED,
"TRAIT_PACIFISM" = TRAIT_PACIFISM,
"TRAIT_IGNORESLOWDOWN" = TRAIT_IGNORESLOWDOWN,
Expand Down
2 changes: 1 addition & 1 deletion code/_onclick/other_mobs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
/atom/proc/can_interact(mob/user)
if(!user.can_interact_with(src, interaction_flags_atom & INTERACT_ATOM_ALLOW_USER_LOCATION))
return FALSE
if((interaction_flags_atom & INTERACT_ATOM_REQUIRES_DEXTERITY) && !user.IsAdvancedToolUser())
if((interaction_flags_atom & INTERACT_ATOM_REQUIRES_DEXTERITY) && !ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return FALSE
if(!(interaction_flags_atom & INTERACT_ATOM_IGNORE_INCAPACITATED))
Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/embedded.dm
Original file line number Diff line number Diff line change
Expand Up @@ -237,7 +237,7 @@
/datum/component/embedded/proc/tryPullOutOther(mob/living/carbon/victim, mob/user)
SIGNAL_HANDLER

if(!user.IsAdvancedToolUser())
if(!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return

Expand Down
2 changes: 1 addition & 1 deletion code/datums/components/rotation.dm
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@
after_rotation.Invoke(user,rotation_type)

/datum/component/simple_rotation/proc/default_can_user_rotate(mob/living/user, rotation_type)
if(!istype(user) || !user.canUseTopic(parent, BE_CLOSE, NO_DEXTERITY))
if(!istype(user) || !user.canUseTopic(parent, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return FALSE
return TRUE

Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/computer/buildandrepair.dm
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@
..()

/obj/structure/frame/computer/AltClick(mob/user)
if(!isliving(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return

if(anchored)
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/dna_scanner.dm
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@
toggle_open(user)

/obj/machinery/dna_scannernew/MouseDrop_T(mob/target, mob/user)
if(user.stat != CONSCIOUS || HAS_TRAIT(user, TRAIT_UI_BLOCKED) || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser() || locked)
if(user.stat != CONSCIOUS || HAS_TRAIT(user, TRAIT_UI_BLOCKED) || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !ISADVANCEDTOOLUSER(user) || locked)
return
close_machine(target)

Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/fabricators/autolathe.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
var/obj/item/id_slot = usr.get_idcard(TRUE)
if((ACCESS_SECURITY in id_slot.GetAccess()) && !(obj_flags & EMAGGED))
security_interface_locked = FALSE
to_chat(usr, "<span class='warning'>You unlock the security controls of [src].</span>")
to_chat(usr, span_warning("You unlock the security controls of [src]."))
. = TRUE

/obj/machinery/modular_fabricator/autolathe/attackby(obj/item/O, mob/user, params)
Expand Down
4 changes: 1 addition & 3 deletions code/game/machinery/launch_pad.dm
Original file line number Diff line number Diff line change
Expand Up @@ -266,9 +266,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/machinery/launchpad/briefcase)
/obj/machinery/launchpad/briefcase/MouseDrop(over_object, src_location, over_location)
. = ..()
if(over_object == usr)
if(!briefcase || !usr.can_hold_items())
return
if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr)))
if(!briefcase || !usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
return
usr.visible_message(span_notice("[usr] starts closing [src]..."), span_notice("You start closing [src]..."))
if(do_after(usr, 30, target = usr))
Expand Down
2 changes: 1 addition & 1 deletion code/game/machinery/sleeper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@


/obj/machinery/sleeper/MouseDrop_T(mob/target, mob/user)
if(HAS_TRAIT(user, TRAIT_UI_BLOCKED) || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
if(HAS_TRAIT(user, TRAIT_UI_BLOCKED) || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !ISADVANCEDTOOLUSER(user))
return

close_machine(target)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -581,7 +581,7 @@ GLOBAL_VAR_INIT(rpg_loot_items, FALSE)
/obj/item/attack_alien(mob/user)
var/mob/living/carbon/alien/A = user

if(!A.has_fine_manipulation)
if(!user.can_hold_items(src))
if(src in A.contents) // To stop Aliens having items stuck in their pockets
A.dropItemToGround(src)
to_chat(user, span_warning("Your claws aren't capable of such fine manipulation!"))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/RPD.dm
Original file line number Diff line number Diff line change
Expand Up @@ -412,7 +412,7 @@ GLOBAL_LIST_INIT(transit_tube_recipes, list(
return TRUE

/obj/item/pipe_dispenser/pre_attack(atom/atom_to_attack, mob/user, params)
if(!user.IsAdvancedToolUser() || istype(atom_to_attack, /turf/open/space/transit))
if(!ISADVANCEDTOOLUSER(user) || istype(atom_to_attack, /turf/open/space/transit))
return ..()

if(istype(atom_to_attack, /obj/item/rpd_upgrade))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/crab17.dm
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
var/activated = FALSE

/obj/item/suspiciousphone/attack_self(mob/user)
if(!ishuman(user))
if(!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("This device is too advanced for you!"))
return
if(activated)
Expand Down
11 changes: 5 additions & 6 deletions code/game/objects/items/crayons.dm
Original file line number Diff line number Diff line change
Expand Up @@ -153,12 +153,11 @@
ui.open()

/obj/item/toy/crayon/spraycan/AltClick(mob/user)
if(user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(has_cap)
is_capped = !is_capped
to_chat(user, span_notice("The cap on [src] is now [is_capped ? "on" : "off"]."))
update_icon()
ui_update()
if(has_cap && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
is_capped = !is_capped
to_chat(user, span_notice("The cap on [src] is now [is_capped ? "on" : "off"]."))
update_icon()
ui_update()

/obj/item/toy/crayon/proc/staticDrawables()

Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/credit_holochip.dm
Original file line number Diff line number Diff line change
Expand Up @@ -84,10 +84,10 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/item/holochip)
qdel(H)

/obj/item/holochip/AltClick(mob/user)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return
var/split_amount = round(input(user,"How many credits do you want to extract from the holochip?") as null|num)
if(split_amount == null || split_amount <= 0 || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(split_amount == null || split_amount <= 0 || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return
else
var/new_credits = spend(split_amount, TRUE)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/desynchronizer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
. += 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(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return
var/new_duration = input(user, "Set the duration (5-300):", "Desynchronizer", duration / 10) as null|num
if(new_duration)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/flashlight.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
if((HAS_TRAIT(user, TRAIT_CLUMSY) || HAS_TRAIT(user, TRAIT_DUMB)) && prob(50)) //too dumb to use flashlight properly
return ..() //just hit them in the head

if(!user.IsAdvancedToolUser())
if(!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/laserpointer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@
if (!diode)
to_chat(user, span_notice("You point [src] at [target], but nothing happens!"))
return
if (!user.IsAdvancedToolUser())
if (!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return
if(HAS_TRAIT(user, TRAIT_NOGUNS))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/quantum_keycard.dm
Original file line number Diff line number Diff line change
Expand Up @@ -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, ismonkey(user)))
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return
to_chat(user, span_notice("You start pressing [src]'s unlink button..."))
if(do_after(user, 40, target = src))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/devices/swapper.dm
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@
. += span_notice("<b>Not Linked.</b> Use on another quantum spin inverter to establish a quantum link.")

/obj/item/swapper/AltClick(mob/living/user)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return
to_chat(user, span_notice("You break the current quantum link."))
if(!QDELETED(linked_swapper))
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/dna_injector.dm
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@
return FALSE

/obj/item/dnainjector/attack(mob/living/target, mob/living/user)
if(!user.IsAdvancedToolUser())
if(!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return
if(used)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/flamethrower.dm
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@
toggle_igniter(user)

/obj/item/flamethrower/AltClick(mob/user)
if(ptank && isliving(user) && user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(ptank && isliving(user) && user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
user.put_in_hands(ptank)
ptank = null
to_chat(user, span_notice("You remove the plasma tank from [src]!"))
Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/implants/implantchair.dm
Original file line number Diff line number Diff line change
Expand Up @@ -140,14 +140,14 @@
to_chat(user, span_warning("[src]'s door won't budge!"))

/obj/machinery/implantchair/MouseDrop_T(mob/target, mob/user)
if(user.stat || !Adjacent(user) || !user.Adjacent(target) || !isliving(target) || !user.IsAdvancedToolUser())
if(user.stat || !Adjacent(user) || !user.Adjacent(target) || !isliving(target) || !ISADVANCEDTOOLUSER(user))
return
if(isliving(user))
var/mob/living/L = user
if(L.body_position == LYING_DOWN)
return
close_machine(target)


/obj/machinery/implantchair/close_machine(mob/living/user)
if((isnull(user) || istype(user)) && state_open)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/inducer.dm
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@
return ..()

/obj/item/inducer/proc/cantbeused(mob/user)
if(!user.IsAdvancedToolUser())
if(!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to use [src]!"))
return TRUE

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/pet_carrier.dm
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@

/obj/item/pet_carrier/MouseDrop(atom/over_atom)
. = ..()
if(isopenturf(over_atom) && usr.canUseTopic(src, BE_CLOSE, ismonkey(usr)) && usr.Adjacent(over_atom) && open && occupants.len)
if(isopenturf(over_atom) && usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !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)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/storage/belt.dm
Original file line number Diff line number Diff line change
Expand Up @@ -901,7 +901,7 @@
. += span_notice("Alt-click it to quickly draw the blade.")

/obj/item/storage/belt/sabre/AltClick(mob/user)
if(!iscarbon(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
return
if(length(contents))
var/obj/item/I = contents[1]
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/storage/book.dm
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@

/obj/item/storage/book/bible/attack(mob/living/M, mob/living/carbon/human/user, heal_mode = TRUE)

if (!user.IsAdvancedToolUser())
if (!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return

Expand Down
4 changes: 2 additions & 2 deletions code/game/objects/items/storage/fancy.dm
Original file line number Diff line number Diff line change
Expand Up @@ -186,8 +186,8 @@
if(L)
. += span_notice("There seems to be a lighter inside. Ctrl-click to pull it out.")

/obj/item/storage/fancy/cigarettes/AltClick(mob/living/carbon/user)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
/obj/item/storage/fancy/cigarettes/AltClick(mob/user)
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
return
var/obj/item/I = locate(/obj/item) in contents
if(I && contents.len > 0)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/items/toys.dm
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@
. = ..()
if (flag)
return
if (!user.IsAdvancedToolUser())
if (!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return
add_fingerprint(user)
Expand Down
6 changes: 3 additions & 3 deletions code/game/objects/structures/beds_chairs/chair.dm
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
var/mob/living/L = user

if(istype(L))
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return FALSE
else
return TRUE
Expand Down Expand Up @@ -395,9 +395,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/chair/stool, 0)
/obj/structure/chair/MouseDrop(over_object, src_location, over_location)
. = ..()
if(over_object == usr && Adjacent(usr))
if(!item_chair || !usr.can_hold_items() || has_buckled_mobs() || src.flags_1 & NODECONSTRUCT_1)
if(!item_chair || has_buckled_mobs() || src.flags_1 & NODECONSTRUCT_1)
return
if(!usr.canUseTopic(src, BE_CLOSE, ismonkey(usr)))
if(!usr.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, 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)
Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/extinguisher.dm
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ CREATION_TEST_IGNORE_SUBTYPES(/obj/structure/extinguisher_cabinet)
return attack_hand(user)

/obj/structure/extinguisher_cabinet/AltClick(mob/living/user)
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, TRUE))
return
toggle_cabinet(user)

Expand Down
2 changes: 1 addition & 1 deletion code/game/objects/structures/reflector.dm
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@
to_chat(user, span_warning("The rotation is locked!"))
return FALSE
var/new_angle = input(user, "Input a new angle for primary reflection face.", "Reflector Angle", rotation_angle) as null|num
if(!user.canUseTopic(src, BE_CLOSE, ismonkey(user)))
if(!user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)))
return
if(!isnull(new_angle))
set_angle(SIMPLIFY_DEGREES(new_angle))
Expand Down
2 changes: 1 addition & 1 deletion code/game/turfs/closed/minerals.dm
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@


/turf/closed/mineral/attackby(obj/item/I, mob/user, params)
if (!user.IsAdvancedToolUser())
if (!ISADVANCEDTOOLUSER(user))
to_chat(usr, span_warning("You don't have the dexterity to do this!"))
return

Expand Down
2 changes: 1 addition & 1 deletion code/game/turfs/turf_integrity.dm
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@
take_damage(I.force, I.damtype, MELEE, 1)

/turf/attackby(obj/item/W, mob/user, params)
if (!user.IsAdvancedToolUser())
if (!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return

Expand Down
2 changes: 1 addition & 1 deletion code/modules/antagonists/revenant/revenant.dm
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@
if(beacon)
qdel(beacon)

/mob/living/simple_animal/revenant/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE)
/mob/living/simple_animal/revenant/canUseTopic(atom/movable/M, be_close=FALSE, no_dexterity=FALSE, no_tk=FALSE, no_hands = FALSE, floor_okay=FALSE)
return FALSE

/mob/living/simple_animal/revenant/proc/random_revenant_name()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -326,7 +326,7 @@
. += "[src] seems empty."

/obj/machinery/cryo_cell/MouseDrop_T(mob/target, mob/user)
if(user.incapacitated() || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !user.IsAdvancedToolUser())
if(user.incapacitated() || !Adjacent(user) || !user.Adjacent(target) || !iscarbon(target) || !ISADVANCEDTOOLUSER(user))
return
if(isliving(target))
var/mob/living/L = target
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@

/obj/machinery/portable_atmospherics/AltClick(mob/living/user)
. = ..()
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, !ismonkey(user)) || !can_interact(user))
if(!istype(user) || !user.canUseTopic(src, BE_CLOSE, NO_DEXTERITY, FALSE, !iscyborg(user)) || !can_interact(user))
return
if(!holding)
return
Expand Down
2 changes: 1 addition & 1 deletion code/modules/clothing/ears/_ears.dm
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@
balloon_alert(owner, "Music is now [headphones_on? "on" : "off"]")

/obj/item/clothing/ears/headphones/attack_self(mob/user)
if(!user.IsAdvancedToolUser())
if(!ISADVANCEDTOOLUSER(user))
to_chat(user, span_warning("You don't have the dexterity to do this!"))
return TRUE
interact(user)
Expand Down
Loading
Loading