diff --git a/code/modules/antagonists/changeling/changeling.dm b/code/modules/antagonists/changeling/changeling.dm index 9c0b19cd83..843e5c6db2 100644 --- a/code/modules/antagonists/changeling/changeling.dm +++ b/code/modules/antagonists/changeling/changeling.dm @@ -125,6 +125,8 @@ /datum/antagonist/changeling/proc/remove_changeling_powers() if(ishuman(owner.current) || ismonkey(owner.current)) reset_properties() + QDEL_NULL(cellular_emporium) + QDEL_NULL(emporium_action) for(var/obj/effect/proc_holder/changeling/p in purchasedpowers) if(p.always_keep) continue @@ -139,6 +141,7 @@ /datum/antagonist/changeling/proc/reset_powers() if(purchasedpowers) remove_changeling_powers() + create_actions() //Repurchase free powers. for(var/path in all_powers) var/obj/effect/proc_holder/changeling/S = new path() @@ -225,7 +228,8 @@ /datum/antagonist/changeling/proc/regenerate() var/mob/living/carbon/the_ling = owner.current if(istype(the_ling)) - emporium_action.Grant(the_ling) + if(emporium_action) + emporium_action.Grant(the_ling) if(the_ling.stat == DEAD) chem_charges = min(max(0, chem_charges + chem_recharge_rate - chem_recharge_slowdown), (chem_storage*0.5)) geneticdamage = max(LING_DEAD_GENETICDAMAGE_HEAL_CAP,geneticdamage-1) diff --git a/code/modules/antagonists/changeling/powers/revive.dm b/code/modules/antagonists/changeling/powers/revive.dm index f193fb6736..3b78960ff1 100644 --- a/code/modules/antagonists/changeling/powers/revive.dm +++ b/code/modules/antagonists/changeling/powers/revive.dm @@ -11,6 +11,14 @@ //Revive from revival stasis /obj/effect/proc_holder/changeling/revive/sting_action(mob/living/carbon/user) + var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) + if(!changeling) + return + if(changeling.hostile_absorbed) + to_chat(user, "We cannot muster up the strength to revive ourselves!") + changeling.purchasedpowers -= src + src.action.Remove(user) + return user.cure_fakedeath("changeling") user.revive(full_heal = 1) var/list/missing = user.get_missing_limbs() @@ -27,7 +35,6 @@ user.regenerate_limbs(0, list(BODY_ZONE_HEAD)) user.regenerate_organs() to_chat(user, "We have revived ourselves.") - var/datum/antagonist/changeling/changeling = user.mind.has_antag_datum(/datum/antagonist/changeling) changeling.purchasedpowers -= src src.action.Remove(user) return TRUE