mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-24 12:37:26 +01:00
Merge pull request #16720 from Qwertytoforty/grabbing-your-attention
Makes revive, biodegrade, and freedom break grabs
This commit is contained in:
@@ -1524,7 +1524,7 @@ GLOBAL_LIST_INIT(uplink_items, subtypesof(/datum/uplink_item))
|
||||
|
||||
/datum/uplink_item/implants/freedom
|
||||
name = "Freedom Implant"
|
||||
desc = "An implant injected into the body and later activated manually to break out of any restraints. Can be activated up to 4 times."
|
||||
desc = "An implant injected into the body and later activated manually to break out of any restraints or grabs. Can be activated up to 4 times."
|
||||
reference = "FI"
|
||||
item = /obj/item/implanter/freedom
|
||||
cost = 5
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/datum/action/changeling/biodegrade
|
||||
name = "Biodegrade"
|
||||
desc = "Dissolves restraints or other objects preventing free movement. Costs 30 chemicals."
|
||||
helptext = "This is obvious to nearby people, and can destroy standard restraints and closets."
|
||||
helptext = "This is obvious to nearby people, and can destroy standard restraints and closets, and break you out of grabs."
|
||||
button_icon_state = "biodegrade"
|
||||
chemical_cost = 30 //High cost to prevent spam
|
||||
dna_cost = 2
|
||||
@@ -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() && !user.legcuffed && !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) && !user.grabbed_by)
|
||||
to_chat(user, "<span class='warning'>We are already free!</span>")
|
||||
return FALSE
|
||||
|
||||
@@ -57,7 +57,15 @@
|
||||
to_chat(user, "<span class='warning'>We secrete acidic enzymes from our skin and begin melting our cocoon...</span>")
|
||||
addtimer(CALLBACK(src, .proc/dissolve_cocoon, user, C), 2.5 SECONDS) //Very short because it's just webs
|
||||
used = TRUE
|
||||
|
||||
for(var/obj/item/grab/G in user.grabbed_by)
|
||||
var/mob/living/carbon/M = G.assailant
|
||||
user.visible_message("<span class='warning'>[user] spits acid at [M]'s face and slips out of their grab!</span>")
|
||||
M.Stun(1) //Drops the grab
|
||||
M.apply_damage(5, BURN, "head", M.run_armor_check("head", "melee"))
|
||||
user.SetStunned(0) //This only triggers if they are grabbed, to have them break out of the grab, without the large stun time. If you use biodegrade as an antistun without being grabbed, it will not work
|
||||
user.SetWeakened(0)
|
||||
playsound(user.loc, 'sound/weapons/sear.ogg', 50, TRUE)
|
||||
used = TRUE
|
||||
if(used)
|
||||
SSblackbox.record_feedback("nested tally", "changeling_powers", 1, list("[name]"))
|
||||
return TRUE
|
||||
|
||||
@@ -8,6 +8,12 @@
|
||||
//Revive from regenerative stasis
|
||||
/datum/action/changeling/revive/sting_action(mob/living/carbon/user)
|
||||
REMOVE_TRAIT(user, TRAIT_FAKEDEATH, "changeling")
|
||||
for(var/obj/item/grab/G in user.grabbed_by)
|
||||
var/mob/living/carbon/M = G.assailant
|
||||
user.visible_message("<span class='warning'>[user] suddenly hits [M] in the face and slips out of their grab!</span>")
|
||||
M.Stun(1) //Drops the grab
|
||||
M.apply_damage(5, BRUTE, "head", M.run_armor_check("head", "melee"))
|
||||
playsound(user.loc, 'sound/weapons/punch1.ogg', 25, 1, -1)
|
||||
user.revive()
|
||||
user.updatehealth("revive sting")
|
||||
user.update_blind_effects()
|
||||
|
||||
@@ -13,6 +13,15 @@
|
||||
if(iscarbon(imp_in))
|
||||
var/mob/living/carbon/C_imp_in = imp_in
|
||||
C_imp_in.uncuff()
|
||||
for(var/obj/item/grab/G in C_imp_in.grabbed_by)
|
||||
var/mob/living/carbon/M = G.assailant
|
||||
C_imp_in.visible_message("<span class='warning'>[C_imp_in] suddenly shocks [M] from their wrists and slips out of their grab!</span>")
|
||||
M.Stun(1) //Drops the grab
|
||||
M.apply_damage(2, BURN, "r_hand", M.run_armor_check("r_hand", "energy"))
|
||||
M.apply_damage(2, BURN, "l_hand", M.run_armor_check("l_hand", "energy"))
|
||||
C_imp_in.SetStunned(0) //This only triggers if they are grabbed, to have them break out of the grab, without the large stun time.
|
||||
C_imp_in.SetWeakened(0)
|
||||
playsound(C_imp_in.loc, "sound/weapons/Egloves.ogg", 75, 1)
|
||||
if(!uses)
|
||||
qdel(src)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user