diff --git a/code/game/gamemodes/changeling/powers/regenerate.dm b/code/game/gamemodes/changeling/powers/regenerate.dm index 6d38a58cc47..c7e79c6c143 100644 --- a/code/game/gamemodes/changeling/powers/regenerate.dm +++ b/code/game/gamemodes/changeling/powers/regenerate.dm @@ -26,6 +26,7 @@ and tearing!") C.emote("scream") C.regenerate_limbs(1) + C.regenerate_organs() if(ishuman(user)) var/mob/living/carbon/human/H = user H.restore_blood() diff --git a/code/game/gamemodes/changeling/powers/revive.dm b/code/game/gamemodes/changeling/powers/revive.dm index 9f9e93bd9c8..7dec246990b 100644 --- a/code/game/gamemodes/changeling/powers/revive.dm +++ b/code/game/gamemodes/changeling/powers/revive.dm @@ -23,6 +23,7 @@ and tearing!") user.emote("scream") user.regenerate_limbs(0, list("head")) + user.regenerate_organs() user << "We have revived ourselves." user.mind.changeling.purchasedpowers -= src feedback_add_details("changeling_powers","CR") diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm index 18318df5fd0..514fe6e4cc0 100644 --- a/code/modules/mob/living/carbon/carbon.dm +++ b/code/modules/mob/living/carbon/carbon.dm @@ -688,6 +688,7 @@ D.cure(0) if(admin_revive) regenerate_limbs() + regenerate_organs() handcuffed = initial(handcuffed) for(var/obj/item/weapon/restraints/R in contents) //actually remove cuffs from inventory qdel(R) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 82a9ab43bbf..40ad2ba1d6e 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -823,31 +823,9 @@ hud_used.healthdoll.icon_state = "healthdoll_DEAD" /mob/living/carbon/human/fully_heal(admin_revive = 0) - if(admin_revive) regenerate_limbs() - - if(!(NOBREATH in dna.species.species_traits) && !getorganslot("lungs")) - var/obj/item/organ/lungs/L = new() - L.Insert(src) - - if(!(NOBLOOD in dna.species.species_traits) && !getorganslot("heart")) - var/obj/item/organ/heart/H = new() - H.Insert(src) - - if(!getorganslot("tongue")) - var/obj/item/organ/tongue/T - - for(var/tongue_type in dna.species.mutant_organs) - if(ispath(tongue_type, /obj/item/organ/tongue)) - T = new tongue_type() - T.Insert(src) - - // if they have no mutant tongues, give them a regular one - if(!T) - T = new() - T.Insert(src) - + regenerate_organs() remove_all_embedded_objects() drunkenness = 0 for(var/datum/mutation/human/HM in dna.mutations) diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm index 524c7872c64..e18e15f53ef 100644 --- a/code/modules/projectiles/guns/magic/wand.dm +++ b/code/modules/projectiles/guns/magic/wand.dm @@ -91,6 +91,7 @@ if(iscarbon(user)) var/mob/living/carbon/C = user C.regenerate_limbs() + C.regenerate_organs() user << "You feel great!" charges-- ..() diff --git a/code/modules/projectiles/projectile/magic.dm b/code/modules/projectiles/projectile/magic.dm index 787aaffa5b6..2065289d85c 100644 --- a/code/modules/projectiles/projectile/magic.dm +++ b/code/modules/projectiles/projectile/magic.dm @@ -79,6 +79,7 @@ if(iscarbon(target)) var/mob/living/carbon/C = target C.regenerate_limbs() + C.regenerate_organs() if(target.revive(full_heal = 1)) target.grab_ghost(force = TRUE) // even suicides target << "You rise with a start, \ diff --git a/code/modules/surgery/bodyparts/dismemberment.dm b/code/modules/surgery/bodyparts/dismemberment.dm index 4ec5dd2890f..6653a114ba6 100644 --- a/code/modules/surgery/bodyparts/dismemberment.dm +++ b/code/modules/surgery/bodyparts/dismemberment.dm @@ -311,7 +311,6 @@ for(var/Z in limb_list) . += regenerate_limb(Z, noheal) - /mob/living/proc/regenerate_limb(limb_zone, noheal) return diff --git a/code/modules/surgery/organs/organ_internal.dm b/code/modules/surgery/organs/organ_internal.dm index a3c5a4668c5..e1e282372e4 100644 --- a/code/modules/surgery/organs/organ_internal.dm +++ b/code/modules/surgery/organs/organ_internal.dm @@ -693,3 +693,28 @@ if(inflamed) S.reagents.add_reagent("????", 5) return S + +/mob/living/proc/regenerate_organs() + return 0 + +/mob/living/carbon/regenerate_organs() + if(!(NOBREATH in dna.species.species_traits) && !getorganslot("lungs")) + var/obj/item/organ/lungs/L = new() + L.Insert(src) + + if(!(NOBLOOD in dna.species.species_traits) && !getorganslot("heart")) + var/obj/item/organ/heart/H = new() + H.Insert(src) + + if(!getorganslot("tongue")) + var/obj/item/organ/tongue/T + + for(var/tongue_type in dna.species.mutant_organs) + if(ispath(tongue_type, /obj/item/organ/tongue)) + T = new tongue_type() + T.Insert(src) + + // if they have no mutant tongues, give them a regular one + if(!T) + T = new() + T.Insert(src)