diff --git a/code/game/objects/items/weapons/garrote.dm b/code/game/objects/items/weapons/garrote.dm index 32ad45ba87c..1d1570344a2 100644 --- a/code/game/objects/items/weapons/garrote.dm +++ b/code/game/objects/items/weapons/garrote.dm @@ -88,8 +88,9 @@ U.swap_hand() if(G && istype(G)) - if(improvised) // Improvised garrotes start you off with a passive grab, but keep you stunned like an agressive grab. - M.Stun(2 SECONDS) + if(improvised) // Improvised garrotes start you off with a passive grab, but will lock you in place. A quick stun to drop items but not to make it unescapable + M.Stun(1 SECONDS) + M.Immobilize(2 SECONDS) else G.state = GRAB_NECK G.hud.icon_state = "kill" @@ -153,7 +154,7 @@ return if(G.state < GRAB_NECK) // Only possible with improvised garrotes, essentially this will stun people as if they were aggressively grabbed. Allows for resisting out if you're quick, but not running away. - strangling.Stun(6 SECONDS) + strangling.Immobilize(3 SECONDS) if(improvised) strangling.Stuttering(6 SECONDS) diff --git a/code/modules/mob/living/carbon/human/species/_species.dm b/code/modules/mob/living/carbon/human/species/_species.dm index 1ce648e41bf..33f874ff10b 100644 --- a/code/modules/mob/living/carbon/human/species/_species.dm +++ b/code/modules/mob/living/carbon/human/species/_species.dm @@ -642,7 +642,7 @@ target.Stun(0.5 SECONDS) else var/obj/item/active_hand = target.get_active_hand() - if(target.IsSlowed() && active_hand && !IS_HORIZONTAL(user) && !HAS_TRAIT(active_hand, TRAIT_WIELDED)) + if(target.IsSlowed() && active_hand && !IS_HORIZONTAL(user) && !HAS_TRAIT(active_hand, TRAIT_WIELDED) && !istype(active_hand, /obj/item/grab)) target.drop_item() add_attack_logs(user, target, "Disarmed object out of hand", ATKLOG_ALL) else diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm index 3a1dfe23296..050d4eb4fab 100644 --- a/code/modules/mob/living/living.dm +++ b/code/modules/mob/living/living.dm @@ -778,6 +778,8 @@ *///////////////////// /mob/living/proc/resist_grab() var/resisting = 0 + if(HAS_TRAIT(src, TRAIT_IMMOBILIZED)) + return TRUE //You can't move, so you can't resist for(var/X in grabbed_by) var/obj/item/grab/G = X resisting++ diff --git a/code/modules/mob/mob_movement.dm b/code/modules/mob/mob_movement.dm index 84f98dc5701..7b23d1f7b69 100644 --- a/code/modules/mob/mob_movement.dm +++ b/code/modules/mob/mob_movement.dm @@ -206,6 +206,8 @@ if(mob.grabbed_by.len) if(mob.incapacitated(FALSE, TRUE)) // Can't break out of grabs if you're incapacitated return TRUE + if(HAS_TRAIT(mob, TRAIT_IMMOBILIZED)) + return TRUE //You can't move, so you can't break it by trying to move. var/list/grabbing = list() if(istype(mob.l_hand, /obj/item/grab))