From 5ff8be0faa4a3141c1c6198c2cd724b13fd24588 Mon Sep 17 00:00:00 2001 From: Ghommie Date: Thu, 4 Jul 2019 22:42:51 +0200 Subject: [PATCH] Ports "Adds safer helper for alt-click turf listing" --- code/_onclick/click.dm | 14 +++++++++----- code/_onclick/observer.dm | 2 +- .../antagonists/revenant/revenant_abilities.dm | 12 ++++++++++-- 3 files changed, 20 insertions(+), 8 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 3d6de49a6a..22210bfd08 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -366,11 +366,15 @@ SEND_SIGNAL(src, COMSIG_CLICK_ALT, user) var/turf/T = get_turf(src) if(T && user.TurfAdjacent(T)) - if(user.listed_turf == T) - user.listed_turf = null - else - user.listed_turf = T - user.client.statpanel = T.name + user.listed_turf = T + user.client.statpanel = T.name + +// Use this instead of /mob/proc/AltClickOn(atom/A) where you only want turf content listing without additional atom alt-click interaction +/atom/proc/AltClickNoInteract(mob/user, atom/A) + var/turf/T = get_turf(A) + if(T && user.TurfAdjacent(T)) + user.listed_turf = T + user.client.statpanel = T.name /mob/proc/TurfAdjacent(turf/T) return T.Adjacent(src) diff --git a/code/_onclick/observer.dm b/code/_onclick/observer.dm index 6cacc90fcb..299d7f64f8 100644 --- a/code/_onclick/observer.dm +++ b/code/_onclick/observer.dm @@ -31,7 +31,7 @@ ShiftClickOn(A) return if(modifiers["alt"]) - AltClickOn(A) + AltClickNoInteract(src, A) return if(modifiers["ctrl"]) CtrlClickOn(A) diff --git a/code/modules/antagonists/revenant/revenant_abilities.dm b/code/modules/antagonists/revenant/revenant_abilities.dm index 4056ac1cea..112a31f44d 100644 --- a/code/modules/antagonists/revenant/revenant_abilities.dm +++ b/code/modules/antagonists/revenant/revenant_abilities.dm @@ -1,13 +1,21 @@ -//Harvest; activated ly clicking the target, will try to drain their essence. /mob/living/simple_animal/revenant/ClickOn(atom/A, params) //revenants can't interact with the world directly. - A.examine(src) + var/list/modifiers = params2list(params) + if(modifiers["shift"]) + ShiftClickOn(A) + return + if(modifiers["alt"]) + AltClickNoInteract(src, A) + return + if(ishuman(A)) if(A in drained_mobs) to_chat(src, "[A]'s soul is dead and empty." ) else if(in_range(src, A)) Harvest(A) + +//Harvest; activated ly clicking the target, will try to drain their essence. /mob/living/simple_animal/revenant/proc/Harvest(mob/living/carbon/human/target) if(!castcheck(0)) return