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
This commit is contained in:
ATH1909
2019-09-16 16:36:13 +12:00
committed by oranges
parent 19bcb6ab8b
commit 21909e2733
2 changed files with 7 additions and 2 deletions
@@ -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)
+6 -1
View File
@@ -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()