From 21909e27331dad641cf1237e26789fd6d227ab8f Mon Sep 17 00:00:00 2001 From: ATH1909 <42606352+ATH1909@users.noreply.github.com> Date: Sun, 15 Sep 2019 23:36:13 -0500 Subject: [PATCH] Makes borg buckling conflict less with inventory searching (#46364) About The Pull Request This PR finally splits up the ways that borgs are supposed to initiate inventory checks of a mobs and initiate attempts to buckle mobs to themselves (formerly, they would both happen upon click+dragging a mob onto yourself as a borg). Now a borg will only try to buckle a mob to themself if they ARE NOT on harm intent when they finish click+dragging said mob onto themself, and will only try to check a mob's inventory if they ARE on harm intent when they finish click+dragging said mob onto themself. An outsider can still buckle someone (even themself) to a borg who's on harm intent; the borg just can't do it themself. Why It's Good For The Game This issue is incredibly annoying to deal with as a borg (especially if you're in an area or situation where *spinning someone off of you could be risky), and I'm really surprised that it's taken this long for this control conflict to be fixed. Changelog cl ATHATH tweak: If a cyborg click+drags someone onto themself, they will only try to buckle that person to themself if they (the cyborg) ARE NOT on harm intent. Attempts made by non-cyborgs to buckle themselves to cyborgs by click+dragging themselves onto said cyborgs should be unaffected by this change, even if those cyborgs are on harm intent. tweak: If a cyborg click+drags someone onto themself, they will only attempt to check that person's inventory if they (the cyborg) ARE on harm intent. /cl --- code/modules/mob/living/silicon/robot/robot.dm | 2 +- code/modules/mob/mob.dm | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/silicon/robot/robot.dm b/code/modules/mob/living/silicon/robot/robot.dm index 97ccec018a8..205ad70abe4 100644 --- a/code/modules/mob/living/silicon/robot/robot.dm +++ b/code/modules/mob/living/silicon/robot/robot.dm @@ -1133,7 +1133,7 @@ /mob/living/silicon/robot/MouseDrop_T(mob/living/M, mob/living/user) . = ..() - if(!(M in buckled_mobs) && isliving(M)) + if(!(M in buckled_mobs) && isliving(M) && ((user!=src)||(src.a_intent != INTENT_HARM))) buckle_mob(M) /mob/living/silicon/robot/buckle_mob(mob/living/M, force = FALSE, check_loc = TRUE) diff --git a/code/modules/mob/mob.dm b/code/modules/mob/mob.dm index 1892754d0a4..50aadd090bb 100644 --- a/code/modules/mob/mob.dm +++ b/code/modules/mob/mob.dm @@ -680,7 +680,12 @@ . = ..() if(ismob(dropping) && dropping != user) var/mob/M = dropping - M.show_inv(user) + if(ismob(user)) + var/mob/U = user + if(!iscyborg(U) || U.a_intent == INTENT_HARM) + M.show_inv(U) + else + M.show_inv(user) ///Is the mob muzzled (default false) /mob/proc/is_muzzled()