diff --git a/code/_onclick/telekinesis.dm b/code/_onclick/telekinesis.dm index d319a8c34c7..1e0f4e2b3e1 100644 --- a/code/_onclick/telekinesis.dm +++ b/code/_onclick/telekinesis.dm @@ -181,11 +181,9 @@ /proc/tkMaxRangeCheck(mob/user, atom/target) - if (istype(target, /atom/movable/screen)) - return var/d = get_dist(user, target) if(d > TK_MAXRANGE) - to_chat(user, span_warning("Your mind won't reach that far.")) + user.balloon_alert(user, "can't TK, too far!") return return TRUE diff --git a/code/datums/mutations/telekinesis.dm b/code/datums/mutations/telekinesis.dm index a28ec3d437a..7f10a091e76 100644 --- a/code/datums/mutations/telekinesis.dm +++ b/code/datums/mutations/telekinesis.dm @@ -7,6 +7,8 @@ text_gain_indication = "You feel smarter!" limb_req = BODY_ZONE_HEAD instability = 30 + ///Typecache of atoms that TK shouldn't interact with + var/static/list/blacklisted_atoms = typecacheof(list(/atom/movable/screen)) /datum/mutation/human/telekinesis/New(class_ = MUT_OTHER, timer, datum/mutation/human/copymut) ..() @@ -31,8 +33,9 @@ ///Triggers on COMSIG_MOB_ATTACK_RANGED. Usually handles stuff like picking up items at range. /datum/mutation/human/telekinesis/proc/on_ranged_attack(mob/source, atom/target) SIGNAL_HANDLER + if(is_type_in_typecache(target, blacklisted_atoms)) + return if(!tkMaxRangeCheck(source, target) || source.z != target.z) - source.balloon_alert(source, "can't TK, too far!") return return target.attack_tk(source)