From 7cc1ecfa1e56d068efe1a307dc427569e8e75aee Mon Sep 17 00:00:00 2001 From: SandPoot Date: Thu, 6 Apr 2023 18:49:21 -0300 Subject: [PATCH] (i'm being shot by those red arrows help) --- code/_onclick/click.dm | 6 +++--- code/modules/mob/mob.dm | 22 ++++++++++++++++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index b3a75c024c..9a1e2cc514 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -54,7 +54,7 @@ var/list/modifiers = params2list(params) if(modifiers["shift"] && modifiers["middle"]) - return ShiftMiddleClickOn(A) + return ShiftMiddleClickOn(A, params) if(modifiers["shift"] && modifiers["ctrl"]) return CtrlShiftClickOn(A) if(modifiers["middle"]) @@ -402,8 +402,8 @@ return A.CtrlShiftClick(src) -/mob/proc/ShiftMiddleClickOn(atom/A) - src.pointed(A) +/mob/proc/ShiftMiddleClickOn(atom/A, params) + pointed(A, params) return /atom/proc/CtrlShiftClick(mob/user) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 8794f2f9a3..98a12ae8a4 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -404,7 +404,7 @@ * * overridden here and in /mob/dead/observer for different point span classes and sanity checks */ -/mob/verb/pointed(atom/A as mob|obj|turf in fov_view()) +/mob/verb/pointed(atom/A as mob|obj|turf in fov_view(), params = "" as text) set name = "Point To" set category = "Object" @@ -419,7 +419,25 @@ var/turf/our_tile = get_turf(src) var/obj/visual = new /obj/effect/temp_visual/point(our_tile, invisibility) - animate(visual, pixel_x = (tile.x - our_tile.x) * world.icon_size + A.pixel_x, pixel_y = (tile.y - our_tile.y) * world.icon_size + A.pixel_y, time = 1.7, easing = EASE_OUT) + + /// Set position + var/final_x = (tile.x - our_tile.x) * world.icon_size + A.pixel_x + var/final_y = (tile.y - our_tile.y) * world.icon_size + A.pixel_y + var/list/click_params = params2list(params) + if(length(click_params) && click_params["screen-loc"]) + var/list/actual_view = getviewsize(client ? client.view : world.view) + var/list/split_coords = splittext(click_params["screen-loc"], ",") + final_x = (text2num(splittext(split_coords[1], ":")[1]) - actual_view[1] / 2) * world.icon_size + (text2num(splittext(split_coords[1], ":")[2]) - world.icon_size) + final_y = (text2num(splittext(split_coords[2], ":")[1]) - actual_view[2] / 2) * world.icon_size + (text2num(splittext(split_coords[2], ":")[2]) - world.icon_size) + // + + /// Set rotation + var/matrix/rotated_matrix = new() + rotated_matrix.TurnTo(0, Get_Pixel_Angle(-final_y, -final_x)) + visual.transform = rotated_matrix + // + + animate(visual, pixel_x = final_x, pixel_y = final_y, time = 1.7, easing = EASE_OUT) SEND_SIGNAL(src, COMSIG_MOB_POINTED, A) return TRUE