diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/game/gamemodes/changeling/powers/biodegrade.dm
new file mode 100644
index 00000000000..5e4b0e7fa12
--- /dev/null
+++ b/code/game/gamemodes/changeling/powers/biodegrade.dm
@@ -0,0 +1,82 @@
+/obj/effect/proc_holder/changeling/biodegrade
+ name = "Biodegrade"
+ desc = "Dissolves restraints or other objects preventing free movement."
+ helptext = "This is obvious to nearby people, and can destroy standard restraints and closets."
+ chemical_cost = 30 //High cost to prevent spam
+ dna_cost = 2
+ req_human = 1
+
+/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() && !istype(user.loc, /obj/structure/closet) && !istype(user.loc, /obj/structure/spider/cocoon))
+ to_chat(user, "We are already free!")
+ return FALSE
+
+ if(user.handcuffed)
+ var/obj/O = user.get_item_by_slot(slot_handcuffed)
+ if(!istype(O))
+ return FALSE
+ user.visible_message("[user] vomits a glob of acid on \his [O]!", \
+ "We vomit acidic ooze onto our restraints!")
+ addtimer(src, "dissolve_handcuffs", 30, FALSE, user, O)
+ 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 FALSE
+ user.visible_message("[user] vomits a glob of acid across the front of \his [S]!", \
+ "We vomit acidic ooze onto our straight jacket!")
+ addtimer(src, "dissolve_straightjacket", 30, FALSE, user, S)
+ used = TRUE
+
+
+ if(istype(user.loc, /obj/structure/closet) && !used)
+ var/obj/structure/closet/C = user.loc
+ if(!istype(C))
+ 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(src, "open_closet", 70, FALSE, user, C)
+ used = TRUE
+
+ if(istype(user.loc, /obj/structure/spider/cocoon) && !used)
+ var/obj/structure/spider/cocoon/C = user.loc
+ if(!istype(C))
+ 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(src, "dissolve_cocoon", 25, FALSE, user, C) //Very short because it's just webs
+ used = TRUE
+
+ if(used)
+ feedback_add_details("changeling_powers","BD")
+ return TRUE
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_handcuffs(mob/living/carbon/human/user, obj/O)
+ if(O && user.handcuffed == O)
+ user.unEquip(O)
+ O.visible_message("[O] dissolves into a puddle of sizzling goop.")
+ O.forceMove(get_turf(user))
+ 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.unEquip(S)
+ S.visible_message("[S] dissolves into a puddle of sizzling goop.")
+ S.forceMove(get_turf(user))
+ qdel(S)
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/open_closet(mob/living/carbon/human/user, obj/structure/closet/C)
+ if(C && user.loc == C)
+ C.visible_message("[C]'s door breaks and opens!")
+ C.welded = FALSE
+ C.locked = FALSE
+ C.broken = TRUE
+ C.open()
+ to_chat(user, "We open the container restraining us!")
+
+/obj/effect/proc_holder/changeling/biodegrade/proc/dissolve_cocoon(mob/living/carbon/human/user, obj/structure/spider/cocoon/C)
+ if(C && user.loc == C)
+ qdel(C) //The cocoon's destroy will move the changeling outside of it without interference
+ to_chat(user, "We dissolve the cocoon!")
diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm
index d5b966c7d98..e989cea7e85 100644
--- a/code/game/objects/structures/crates_lockers/closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets.dm
@@ -8,6 +8,8 @@
var/icon_opened = "open"
var/opened = 0
var/welded = 0
+ var/locked = 0
+ var/broken = 0
var/wall_mounted = 0 //never solid (You can always pass over it)
var/health = 100
var/lastbang
diff --git a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
index aeb8101fc75..5baef28f262 100644
--- a/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
+++ b/code/game/objects/structures/crates_lockers/closets/fireaxe.dm
@@ -11,7 +11,7 @@
var/localopened = 0 //Setting this to keep it from behaviouring like a normal closet and obstructing movement in the map. -Agouri
opened = 1
var/hitstaken = 0
- var/locked = 1
+ locked = 1
var/smashed = 0
attackby(var/obj/item/O as obj, var/mob/living/user as mob) //Marker -Agouri
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
index 19dc1622ffe..72ef10a5cde 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/secure_closets.dm
@@ -5,8 +5,8 @@
icon_state = "secure1"
density = 1
opened = 0
- var/locked = 1
- var/broken = 0
+ locked = 1
+ broken = 0
var/large = 1
icon_closed = "secure"
var/icon_locked = "secure1"
diff --git a/code/game/objects/structures/crates_lockers/crates.dm b/code/game/objects/structures/crates_lockers/crates.dm
index 5396ac46e6b..66132aa9b8b 100644
--- a/code/game/objects/structures/crates_lockers/crates.dm
+++ b/code/game/objects/structures/crates_lockers/crates.dm
@@ -242,8 +242,8 @@
var/greenlight = "securecrateg"
var/sparks = "securecratesparks"
var/emag = "securecrateemag"
- var/broken = 0
- var/locked = 1
+ broken = 0
+ locked = 1
health = 1000
/obj/structure/closet/crate/secure/update_icon()
diff --git a/paradise.dme b/paradise.dme
index ca07f96d54f..96e55cfe1cd 100644
--- a/paradise.dme
+++ b/paradise.dme
@@ -408,6 +408,7 @@
#include "code\game\gamemodes\changeling\traitor_chan.dm"
#include "code\game\gamemodes\changeling\powers\absorb.dm"
#include "code\game\gamemodes\changeling\powers\augmented_eyesight.dm"
+#include "code\game\gamemodes\changeling\powers\biodegrade.dm"
#include "code\game\gamemodes\changeling\powers\chameleon_skin.dm"
#include "code\game\gamemodes\changeling\powers\digitalcamo.dm"
#include "code\game\gamemodes\changeling\powers\epinephrine.dm"
@@ -417,6 +418,7 @@
#include "code\game\gamemodes\changeling\powers\hivemind.dm"
#include "code\game\gamemodes\changeling\powers\humanform.dm"
#include "code\game\gamemodes\changeling\powers\lesserform.dm"
+#include "code\game\gamemodes\changeling\powers\linglink.dm"
#include "code\game\gamemodes\changeling\powers\mimic_voice.dm"
#include "code\game\gamemodes\changeling\powers\mutations.dm"
#include "code\game\gamemodes\changeling\powers\panacea.dm"