diff --git a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
index 3095e805be6a..e54383a07b9d 100644
--- a/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
+++ b/code/modules/mob/living/carbon/xenomorph/Xenomorph.dm
@@ -1011,22 +1011,21 @@
SPAN_NOTICE("We extinguish ourselves."), null, 5)
/mob/living/carbon/xenomorph/resist_restraints()
+ if(!legcuffed)
+ return
var/breakouttime = legcuffed.breakouttime
- next_move = world.time + 100
- last_special = world.time + 10
+ next_move = world.time + 10 SECONDS
+ last_special = world.time + 1 SECONDS
var/displaytime = max(1, round(breakouttime / 600)) //Minutes
- to_chat(src, SPAN_WARNING("We attempt to remove [legcuffed]. (This will take around [displaytime] minute(s) and we must stand still)"))
- for(var/mob/O in viewers(src))
- O.show_message(SPAN_DANGER("[usr] attempts to remove [legcuffed]!"), SHOW_MESSAGE_VISIBLE)
- if(!do_after(src, breakouttime, INTERRUPT_NO_NEEDHAND^INTERRUPT_RESIST, BUSY_ICON_HOSTILE))
+ visible_message(SPAN_DANGER("[src] attempts to remove [legcuffed]!"),
+ SPAN_WARNING("We attempt to remove [legcuffed]. (This will take around [displaytime] minute\s and we must stand still)"))
+ if(!do_after(src, breakouttime, INTERRUPT_NO_NEEDHAND ^ INTERRUPT_RESIST, BUSY_ICON_HOSTILE))
return
if(!legcuffed || buckled)
- return // time leniency for lag which also might make this whole thing pointless but the server
- for(var/mob/O in viewers(src))// lags so hard that 40s isn't lenient enough - Quarxink
- O.show_message(SPAN_DANGER("[src] manages to remove [legcuffed]!"), SHOW_MESSAGE_VISIBLE)
- to_chat(src, SPAN_NOTICE(" We successfully remove [legcuffed]."))
+ return
+ visible_message(SPAN_DANGER("[src] manages to remove [legcuffed]!"), SPAN_NOTICE("We successfully remove [legcuffed]."))
drop_inv_item_on_ground(legcuffed)
/mob/living/carbon/xenomorph/IgniteMob()
diff --git a/code/modules/mob/living/living_verbs.dm b/code/modules/mob/living/living_verbs.dm
index 3a97725a6fc4..3f5f5403818a 100644
--- a/code/modules/mob/living/living_verbs.dm
+++ b/code/modules/mob/living/living_verbs.dm
@@ -170,25 +170,16 @@
return
//breaking out of handcuffs & putting out fires
- if(!is_mob_incapacitated(TRUE))
+ if(mobility_flags & MOBILITY_MOVE)
if(on_fire)
resist_fire()
-
- var/on_acid = FALSE
- for(var/datum/effects/acid/A in effects_list)
- on_acid = TRUE
- break
- if(on_acid)
+ if(is_type_in_list(/datum/effects/acid, effects_list))
resist_acid()
+ if(last_special <= world.time)
+ resist_restraints()
SEND_SIGNAL(src, COMSIG_MOB_RESISTED)
- if(!iscarbon(src))
- return
- var/mob/living/carbon/C = src
- if((C.handcuffed || C.legcuffed) && (C.mobility_flags & MOBILITY_MOVE) && (C.last_special <= world.time))
- resist_restraints()
-
/mob/living/proc/resist_buckle()
buckled.manual_unbuckle(src)