From 2490a95089dce70dd1fcdab18f5821ddef5ce40f Mon Sep 17 00:00:00 2001 From: Adrer Date: Wed, 2 Dec 2020 19:40:31 +0100 Subject: [PATCH] Makes biodegrade dissolve legcuffs (#14858) * Makes biodegrade melts legcuffs * Changes timers to use SECONDS define * Replace dissolve procs with single generic dissolve_restrain proc --- .../gamemodes/changeling/powers/biodegrade.dm | 30 ++++++++++--------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/code/game/gamemodes/changeling/powers/biodegrade.dm b/code/game/gamemodes/changeling/powers/biodegrade.dm index c8a7721a5f5..12a2802a143 100644 --- a/code/game/gamemodes/changeling/powers/biodegrade.dm +++ b/code/game/gamemodes/changeling/powers/biodegrade.dm @@ -9,7 +9,7 @@ /datum/action/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)) + if(!user.restrained() && !user.legcuffed && !istype(user.loc, /obj/structure/closet) && !istype(user.loc, /obj/structure/spider/cocoon)) to_chat(user, "We are already free!") return FALSE @@ -19,7 +19,16 @@ return FALSE user.visible_message("[user] vomits a glob of acid on [user.p_their()] [O.name]!", \ "We vomit acidic ooze onto our restraints!") - addtimer(CALLBACK(src, .proc/dissolve_handcuffs, user, O), 30) + addtimer(CALLBACK(src, .proc/dissolve_restraint, user, O), 3 SECONDS) + 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.name]!", \ + "We vomit acidic ooze onto our leg restraints!") + addtimer(CALLBACK(src, .proc/dissolve_restraint, user, O), 3 SECONDS) used = TRUE if(user.wear_suit && user.wear_suit.breakouttime && !used) @@ -28,7 +37,7 @@ return FALSE user.visible_message("[user] vomits a glob of acid across the front of [user.p_their()] [S.name]!", \ "We vomit acidic ooze onto our straight jacket!") - addtimer(CALLBACK(src, .proc/dissolve_straightjacket, user, S), 30) + addtimer(CALLBACK(src, .proc/dissolve_restraint, user, S), 3 SECONDS) used = TRUE if(istype(user.loc, /obj/structure/closet) && !used) @@ -37,7 +46,7 @@ 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) + addtimer(CALLBACK(src, .proc/open_closet, user, C), 7 SECONDS) used = TRUE if(istype(user.loc, /obj/structure/spider/cocoon) && !used) @@ -46,27 +55,20 @@ 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 + addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 2.5 SECONDS) //Very short because it's just webs used = TRUE if(used) feedback_add_details("changeling_powers","BD") return TRUE -/datum/action/changeling/biodegrade/proc/dissolve_handcuffs(mob/living/carbon/human/user, obj/O) - if(O && user.handcuffed == O) +/datum/action/changeling/biodegrade/proc/dissolve_restraint(mob/living/carbon/human/user, obj/O) + if(O && (user.handcuffed == O || user.legcuffed == O || user.wear_suit == O)) user.unEquip(O) O.visible_message("[O] dissolves into a puddle of sizzling goop.") O.forceMove(get_turf(user)) qdel(O) -/datum/action/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) - /datum/action/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!")