diff --git a/code/modules/antagonists/changeling/powers/biodegrade.dm b/code/modules/antagonists/changeling/powers/biodegrade.dm
index db4e47aa78..8b3b1659d1 100644
--- a/code/modules/antagonists/changeling/powers/biodegrade.dm
+++ b/code/modules/antagonists/changeling/powers/biodegrade.dm
@@ -12,24 +12,34 @@
/obj/effect/proc_holder/changeling/biodegrade/sting_action(mob/living/carbon/human/user)
var/used = FALSE // only one form of shackles removed per use
- if(!user.restrained() && isopenturf(user.loc))
+ if(!user.restrained() && !user.legcuffed && isopenturf(user.loc))
to_chat(user, "We are already free!")
- return 0
+ return FALSE
if(user.handcuffed)
var/obj/O = user.get_item_by_slot(SLOT_HANDCUFFED)
if(!istype(O))
- return 0
+ return FALSE
user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \
"We vomit acidic ooze onto our restraints!")
addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30)
used = TRUE
+ if(user.legcuffed)
+ var/obj/O = user.get_item_by_slot(SLOT_LEGCUFFED)
+ if(!istype(O))
+ return FALSE
+ user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O]!", \
+ "We vomit acidic ooze onto our restraints!")
+
+ addtimer(CALLBACK(src, .proc/dissolve_legcuffs, user, O), 30)
+ used = TRUE
+
if(user.wear_suit && user.wear_suit.breakouttime && !used)
var/obj/item/clothing/suit/S = user.get_item_by_slot(SLOT_WEAR_SUIT)
if(!istype(S))
- return 0
+ return FALSE
user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S]!", \
"We vomit acidic ooze onto our straight jacket!")
addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30)
@@ -39,7 +49,7 @@
if(istype(user.loc, /obj/structure/closet) && !used)
var/obj/structure/closet/C = user.loc
if(!istype(C))
- return 0
+ return FALSE
C.visible_message("[C]'s hinges suddenly begin to melt and run!")
to_chat(user, "We vomit acidic goop onto the interior of [C]!")
addtimer(CALLBACK(src, .proc/open_closet, user, C), 70)
@@ -48,7 +58,7 @@
if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
var/obj/structure/spider/cocoon/C = user.loc
if(!istype(C))
- return 0
+ return FALSE
C.visible_message("[src] shifts and starts to fall apart!")
to_chat(user, "We secrete acidic enzymes from our skin and begin melting our cocoon...")
addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 25) //Very short because it's just webs
@@ -62,6 +72,12 @@
new /obj/effect/decal/cleanable/greenglow(O.drop_location())
qdel(O)
+/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_legcuffs(mob/living/carbon/human/user, obj/O)
+ if(O && user.legcuffed == O)
+ user.visible_message("[O] dissolve[O.gender==PLURAL?"":"s"] into a puddle of sizzling goop.")
+ new /obj/effect/decal/cleanable/greenglow(O.drop_location())
+ qdel(O)
+
/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_straightjacket(mob/living/carbon/human/user, obj/S)
if(S && user.wear_suit == S)
user.visible_message("[S] dissolves into a puddle of sizzling goop.")