diff --git a/code/_onclick/click.dm b/code/_onclick/click.dm index 86390718b6ca..98792d1c59f6 100644 --- a/code/_onclick/click.dm +++ b/code/_onclick/click.dm @@ -126,12 +126,18 @@ if (!isturf(loc)) return + var/adjacent = A.Adjacent(src) + + if(adjacent && src.a_intent == INTENT_GRAB && !W) + click_adjacent(A, W, mods) + return + if (world.time <= next_move && A.loc != src) // Attack click cooldown check return next_move = world.time // If standing next to the atom clicked. - if(A.Adjacent(src)) + if(adjacent) click_adjacent(A, W, mods) return @@ -157,7 +163,7 @@ W.afterattack(A, src, 1, mods) else - if(!isitem(A) && !issurface(A)) + if(!isitem(A) && !issurface(A) && src.a_intent != INTENT_GRAB) next_move += 4 UnarmedAttack(A, 1, mods) @@ -210,7 +216,7 @@ return TRUE if (mods["ctrl"]) - if (Adjacent(user) && user.next_move < world.time) + if (Adjacent(user)) user.start_pulling(src) return TRUE return FALSE diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm index 90c22e19c483..5c9a0f025c0e 100644 --- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm +++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm @@ -759,8 +759,6 @@ return FALSE var/atom/A = AM.handle_barriers(src) if(A != AM) - A.attack_alien(src) - xeno_attack_delay(src) return FALSE return ..() diff --git a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm index 25f6108c14f6..2c5a7df71a23 100644 --- a/code/modules/mob/living/carbon/xenomorph/attack_alien.dm +++ b/code/modules/mob/living/carbon/xenomorph/attack_alien.dm @@ -39,6 +39,7 @@ if(Adjacent(M)) //Logic! M.start_pulling(src) + return XENO_NO_DELAY_ACTION if(INTENT_HARM) if(M.can_not_harm(src))