diff --git a/code/game/gamemodes/changeling/changeling_power.dm b/code/game/gamemodes/changeling/changeling_power.dm index a94b5bb707b..69a3d4abfa8 100644 --- a/code/game/gamemodes/changeling/changeling_power.dm +++ b/code/game/gamemodes/changeling/changeling_power.dm @@ -15,7 +15,8 @@ var/req_stat = CONSCIOUS // CONSCIOUS, UNCONSCIOUS or DEAD var/genetic_damage = 0 // genetic damage caused by using the sting. Nothing to do with cloneloss. var/max_genetic_damage = 100 // hard counter for spamming abilities. Not used/balanced much yet. - var/always_keep = 0 // important for abilities like regenerate that screw you if you lose them. + var/always_keep = 0 // important for abilities like revive that screw you if you lose them. + var/ignores_fakedeath = FALSE // usable with the FAKEDEATH flag /obj/effect/proc_holder/changeling/proc/on_purchase(mob/user) @@ -56,16 +57,16 @@ user << "We cannot do that in this form!" return 0 var/datum/changeling/c = user.mind.changeling - if(c.chem_chargesWe require at least [chemical_cost] unit\s of chemicals to do that!" return 0 - if(c.absorbedcountWe require at least [req_dna] sample\s of compatible DNA." return 0 if(req_stat < user.stat) user << "We are incapacitated." return 0 - if((user.status_flags & FAKEDEATH) && name != "Regenerate") + if((user.status_flags & FAKEDEATH) && (!ignores_fakedeath)) user << "We are incapacitated." return 0 if(c.geneticdamage > max_genetic_damage) diff --git a/code/game/gamemodes/changeling/powers/fakedeath.dm b/code/game/gamemodes/changeling/powers/fakedeath.dm index 07968704a0a..4b371a28d33 100644 --- a/code/game/gamemodes/changeling/powers/fakedeath.dm +++ b/code/game/gamemodes/changeling/powers/fakedeath.dm @@ -1,5 +1,5 @@ /obj/effect/proc_holder/changeling/fakedeath - name = "Regenerative Stasis" + name = "Reviving Stasis" desc = "We fall into a stasis, allowing us to regenerate and trick our enemies." chemical_cost = 15 dna_cost = 0 @@ -25,12 +25,12 @@ /obj/effect/proc_holder/changeling/fakedeath/proc/ready_to_regenerate(mob/user) if(user && user.mind && user.mind.changeling && user.mind.changeling.purchasedpowers) - user << "We are ready to regenerate." + user << "We are ready to revive." user.mind.changeling.purchasedpowers += new /obj/effect/proc_holder/changeling/revive(null) /obj/effect/proc_holder/changeling/fakedeath/can_sting(mob/user) if(user.status_flags & FAKEDEATH) - user << "We are already regenerating." + user << "We are already reviving." return if(!user.stat) //Confirmation for living changelings if they want to fake their death switch(alert("Are we sure we wish to fake our own death?",,"Yes", "No")) diff --git a/code/game/gamemodes/changeling/powers/regenerate.dm b/code/game/gamemodes/changeling/powers/regenerate.dm index e66d4f429ec..f1977252622 100644 --- a/code/game/gamemodes/changeling/powers/regenerate.dm +++ b/code/game/gamemodes/changeling/powers/regenerate.dm @@ -5,8 +5,8 @@ blood volume." helptext = "Will alert nearby crew if any external limbs are \ regenerated. Can be used while unconscious." - chemical_cost = 20 - dna_cost = 1 + chemical_cost = 10 + dna_cost = 0 req_stat = UNCONSCIOUS /obj/effect/proc_holder/changeling/regenerate/sting_action(mob/living/user) diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 9b25ce4564f..9f9e93bd9c8 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -1,16 +1,28 @@ /obj/effect/proc_holder/changeling/revive name = "Revive" desc = "We regenerate, healing all damage from our form." - helptext = "Does not regrow lost organs or limbs." + helptext = "Does not regrow lost organs or a missing head." req_stat = DEAD - always_keep = 1 + always_keep = TRUE + ignores_fakedeath = TRUE //Revive from revival stasis /obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user) user.status_flags &= ~(FAKEDEATH) user.tod = null user.revive(full_heal = 1) - // Does not restore limbs, + var/list/missing = user.get_missing_limbs() + missing -= "head" // headless changelings are funny + if(missing.len) + playsound(user, 'sound/magic/Demon_consume.ogg', 50, 1) + user.visible_message("[user]'s missing limbs \ + reform, making a loud, grotesque sound!", + "Your limbs regrow, making a \ + loud, crunchy sound and giving you great pain!", + "You hear organic matter ripping \ + and tearing!") + user.emote("scream") + user.regenerate_limbs(0, list("head")) user << "We have revived ourselves." user.mind.changeling.purchasedpowers -= src feedback_add_details("changeling_powers","CR") diff --git a/code/modules/surgery/bodyparts/bodyparts.dm b/code/modules/surgery/bodyparts/bodyparts.dm index 8194bcc4a7d..82952e7b157 100644 --- a/code/modules/surgery/bodyparts/bodyparts.dm +++ b/code/modules/surgery/bodyparts/bodyparts.dm @@ -78,6 +78,8 @@ /obj/item/bodypart/throw_impact(atom/hit_atom) ..() playsound(get_turf(src), 'sound/misc/splort.ogg', 50, 1, -1) + pixel_x = rand(-3, 3) + pixel_y = rand(-3, 3) /obj/item/bodypart/proc/drop_organs(mob/user) var/turf/T = get_turf(src)