diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm index 9ae8fb80db..60538b479b 100644 --- a/code/game/objects/items/handcuffs.dm +++ b/code/game/objects/items/handcuffs.dm @@ -1,6 +1,8 @@ /obj/item/restraints breakouttime = 600 var/demoralize_criminals = TRUE // checked on carbon/carbon.dm to decide wheter to apply the handcuffed negative moodlet or not. + /// allow movement at all during breakout + var/allow_breakout_movement = FALSE /obj/item/restraints/suicide_act(mob/living/carbon/user) user.visible_message("[user] is strangling [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!") @@ -243,6 +245,7 @@ throwforce = 0 w_class = WEIGHT_CLASS_NORMAL slowdown = 7 + allow_breakout_movement = TRUE breakouttime = 300 //Deciseconds = 30s = 0.5 minute /obj/item/restraints/legcuffs/proc/on_removed() @@ -312,7 +315,7 @@ trap_damage = 0 item_flags = DROPDEL flags_1 = NONE - breakouttime = 25 + breakouttime = 50 /obj/item/restraints/legcuffs/beartrap/energy/New() ..() @@ -328,7 +331,7 @@ . = ..() /obj/item/restraints/legcuffs/beartrap/energy/cyborg - breakouttime = 20 // Cyborgs shouldn't have a strong restraint + breakouttime = 40 // Cyborgs shouldn't have a strong restraint /obj/item/restraints/legcuffs/bola name = "bola" @@ -379,7 +382,7 @@ icon_state = "ebola" hitsound = 'sound/weapons/taserhit.ogg' w_class = WEIGHT_CLASS_SMALL - breakouttime = 25 + breakouttime = 50 /obj/item/restraints/legcuffs/bola/energy/on_removed() do_sparks(1, TRUE, src) diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index e4d6f5253e..6ad821b5e0 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -358,7 +358,7 @@ return I.item_flags |= BEING_REMOVED breakouttime = I.breakouttime - var/datum/cuffbreak_checker/cuffbreak_checker = new(get_turf(src)) + var/datum/cuffbreak_checker/cuffbreak_checker = new(get_turf(src), istype(I, /obj/item/restraints)? I : null) if(!cuff_break) visible_message("[src] attempts to remove [I]!") to_chat(src, "You attempt to remove [I]... (This will take around [DisplayTimeText(breakouttime)] and you need to stand still.)") @@ -384,16 +384,22 @@ /datum/cuffbreak_checker var/turf/last + var/obj/item/restraints/cuffs -/datum/cuffbreak_checker/New(turf/initial_turf) +/datum/cuffbreak_checker/New(turf/initial_turf, obj/item/restraints/R) last = initial_turf + if(R) + cuffs = R /datum/cuffbreak_checker/proc/check_movement(atom/user, delay, atom/target, time_left, do_after_flags, required_mobility_flags, required_combat_flags, mob_redirect, stage, initially_held_item, tool, list/passed_in) if(get_turf(user) != last) last = get_turf(user) passed_in[1] = 0.5 + if(cuffs && !cuffs.allow_breakout_movement) + return DO_AFTER_STOP else passed_in[1] = 1 + return DO_AFTER_CONTINUE /mob/living/carbon/proc/uncuff() if (handcuffed)