mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-12 07:33:34 +01:00
Rejuvenation Fix/Refactor Pass 1
This commit is contained in:
@@ -1255,6 +1255,45 @@
|
||||
else
|
||||
germ_level += n
|
||||
|
||||
/mob/living/carbon/human/proc/check_and_regenerate_organs(var/mob/living/carbon/human/H) //Regenerates missing limbs/organs.
|
||||
var/datum/species/S = H.species
|
||||
var/list/species_organs = S.has_organ
|
||||
var/list/species_limbs = S.has_limbs
|
||||
var/list/types_of_int_organs = list()
|
||||
for(var/obj/item/organ/internal/I in H.internal_organs)
|
||||
types_of_int_organs |= I.type
|
||||
|
||||
//Removing stumps.
|
||||
for(var/obj/item/organ/organ in H.contents)
|
||||
if(istype(organ, /obj/item/organ/external/stump)) //Get rid of all stumps.
|
||||
qdel(organ)
|
||||
H.contents -= organ //Making sure the list entry is removed.
|
||||
for(var/obj/item/organ/organ in H.organs)
|
||||
if(istype(organ, /obj/item/organ/external/stump))
|
||||
qdel(organ)
|
||||
H.organs -= organ //Making sure the list entry is removed.
|
||||
for(var/organ_name in H.organs_by_name)
|
||||
var/obj/item/organ/organ = H.organs_by_name[organ_name]
|
||||
if(istype(organ, /obj/item/organ/external/stump) || !organ) //The !organ is for IPC limb losses, since those are handled in a way that creates null list entries instead of stumps.
|
||||
qdel(organ)
|
||||
H.organs_by_name -= organ_name //Making sure the list entry is removed.
|
||||
|
||||
//Replacing lost limbs with the species default.
|
||||
for(var/limb_type in species_limbs)
|
||||
if(!(limb_type in H.organs_by_name))
|
||||
var/list/organ_data = species_limbs[limb_type]
|
||||
var/limb_path = organ_data["path"]
|
||||
var/obj/item/organ/external/O = new limb_path(H)
|
||||
O.owner = H
|
||||
H.organs |= H.organs_by_name[O.limb_name]
|
||||
|
||||
//Replacing lost organs with the species default.
|
||||
for(var/index in species_organs)
|
||||
var/organ = species_organs[index]
|
||||
if(!(organ in types_of_int_organs))
|
||||
var/obj/item/organ/internal/I = new organ(H)
|
||||
I.insert(H)
|
||||
|
||||
/mob/living/carbon/human/revive()
|
||||
|
||||
if(species && !(species.flags & NO_BLOOD))
|
||||
@@ -1262,9 +1301,9 @@
|
||||
vessel.add_reagent(blood_reagent, max_blood-vessel.total_volume)
|
||||
fixblood()
|
||||
|
||||
// Fix up all organs.
|
||||
// This will ignore any prosthetics in the prefs currently.
|
||||
species.create_organs(src)
|
||||
//Fix up all organs and replace lost ones.
|
||||
restore_all_organs()
|
||||
check_and_regenerate_organs(src)
|
||||
|
||||
if(!client || !key) //Don't boot out anyone already in the mob.
|
||||
for (var/obj/item/organ/internal/brain/H in world)
|
||||
|
||||
@@ -320,7 +320,6 @@
|
||||
|
||||
/mob/living/proc/revive()
|
||||
rejuvenate()
|
||||
buckled = initial(src.buckled)
|
||||
if(iscarbon(src))
|
||||
var/mob/living/carbon/C = src
|
||||
|
||||
@@ -380,7 +379,13 @@
|
||||
fire_stacks = 0
|
||||
on_fire = 0
|
||||
suiciding = 0
|
||||
buckled = initial(src.buckled)
|
||||
if(buckled)
|
||||
buckled.buckled_mob = null
|
||||
buckled = null
|
||||
anchored = initial(src.anchored)
|
||||
update_canmove()
|
||||
clear_alert("buckled")
|
||||
post_buckle_mob(src)
|
||||
|
||||
if(iscarbon(src))
|
||||
var/mob/living/carbon/C = src
|
||||
|
||||
@@ -308,7 +308,7 @@ This function completely restores a damaged organ to perfect condition.
|
||||
*/
|
||||
/obj/item/organ/external/rejuvenate()
|
||||
damage_state = "00"
|
||||
if(status & 128) //Robotic organs stay robotic. Fix because right click rejuvinate makes IPC's organs organic.
|
||||
if(status & 128) //Robotic organs stay robotic. Fix because right click rejuvinate makes IPC's organs organic.
|
||||
status = 128
|
||||
else
|
||||
status = 0
|
||||
@@ -316,6 +316,7 @@ This function completely restores a damaged organ to perfect condition.
|
||||
perma_injury = 0
|
||||
brute_dam = 0
|
||||
burn_dam = 0
|
||||
wounds = list() //Clears all wounds! Good as new.
|
||||
|
||||
// handle internal organs
|
||||
for(var/obj/item/organ/internal/current_organ in internal_organs)
|
||||
|
||||
Reference in New Issue
Block a user