mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2026-08-22 04:22:39 +01:00
Fix runtime qdeleted organs (#18013)
* Atomization * sd --------- Co-authored-by: FluffyGhost <FluffyGhost>
This commit is contained in:
co-authored by
FluffyGhost <FluffyGhost>
parent
96f44634e6
commit
d2179ffb2b
@@ -31,15 +31,17 @@
|
||||
/mob/living/carbon/human/adjustBrainLoss(var/amount)
|
||||
if(status_flags & GODMODE)
|
||||
return 0 //godmode
|
||||
if(should_have_organ(BP_BRAIN))
|
||||
|
||||
if(should_have_organ(BP_BRAIN) && internal_organs_by_name)
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[BP_BRAIN]
|
||||
if(sponge)
|
||||
sponge.take_internal_damage(amount)
|
||||
|
||||
/mob/living/carbon/human/setBrainLoss(var/amount)
|
||||
/mob/living/carbon/human/setBrainLoss(amount)
|
||||
if(status_flags & GODMODE)
|
||||
return 0 //godmode
|
||||
if(should_have_organ(BP_BRAIN))
|
||||
|
||||
if(should_have_organ(BP_BRAIN) && internal_organs_by_name)
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[BP_BRAIN]
|
||||
if(sponge)
|
||||
sponge.damage = min(max(amount, 0),sponge.species.total_health)
|
||||
@@ -48,8 +50,15 @@
|
||||
/mob/living/carbon/human/getBrainLoss()
|
||||
if(status_flags & GODMODE)
|
||||
return 0 //godmode
|
||||
|
||||
|
||||
if(should_have_organ(BP_BRAIN))
|
||||
var/obj/item/organ/internal/brain/sponge = internal_organs_by_name[BP_BRAIN]
|
||||
|
||||
//Get the brain organ, if it's there
|
||||
var/obj/item/organ/internal/brain/sponge = null
|
||||
if(internal_organs_by_name)
|
||||
sponge = internal_organs_by_name[BP_BRAIN]
|
||||
|
||||
if(sponge)
|
||||
if(sponge.status & ORGAN_DEAD)
|
||||
return sponge.species.total_health
|
||||
@@ -148,7 +157,12 @@
|
||||
if(!need_breathe())
|
||||
return 0
|
||||
else
|
||||
var/obj/item/organ/internal/lungs/breathe_organ = internal_organs_by_name[species.breathing_organ]
|
||||
|
||||
//Get the breathe organ, if it's there
|
||||
var/obj/item/organ/internal/lungs/breathe_organ = null
|
||||
if(internal_organs_by_name)
|
||||
breathe_organ = internal_organs_by_name[species.breathing_organ]
|
||||
|
||||
if(!breathe_organ)
|
||||
return maxHealth/2
|
||||
return breathe_organ.get_oxygen_deprivation()
|
||||
@@ -163,7 +177,11 @@
|
||||
if(!need_breathe())
|
||||
return
|
||||
var/heal = amount < 0
|
||||
var/obj/item/organ/internal/lungs/breathe_organ = internal_organs_by_name[species.breathing_organ]
|
||||
|
||||
var/obj/item/organ/internal/lungs/breathe_organ = null
|
||||
if(internal_organs_by_name)
|
||||
breathe_organ = internal_organs_by_name[species.breathing_organ]
|
||||
|
||||
if(breathe_organ)
|
||||
if(heal)
|
||||
breathe_organ.remove_oxygen_deprivation(abs(amount))
|
||||
@@ -198,21 +216,29 @@
|
||||
var/list/pick_organs = shuffle(internal_organs.Copy())
|
||||
|
||||
// Prioritize damaging our filtration organs first.
|
||||
var/obj/item/organ/internal/kidneys/kidneys = internal_organs_by_name[BP_KIDNEYS]
|
||||
if(kidneys)
|
||||
pick_organs -= kidneys
|
||||
pick_organs.Insert(1, kidneys)
|
||||
var/obj/item/organ/internal/liver/liver = internal_organs_by_name[BP_LIVER]
|
||||
if(liver)
|
||||
pick_organs -= liver
|
||||
pick_organs.Insert(1, liver)
|
||||
var/obj/item/organ/internal/kidneys/kidneys = null
|
||||
if(internal_organs_by_name)
|
||||
kidneys = internal_organs_by_name[BP_KIDNEYS]
|
||||
if(kidneys)
|
||||
pick_organs -= kidneys
|
||||
pick_organs.Insert(1, kidneys)
|
||||
|
||||
|
||||
var/obj/item/organ/internal/liver/liver = null
|
||||
if(internal_organs_by_name)
|
||||
liver = internal_organs_by_name[BP_LIVER]
|
||||
if(liver)
|
||||
pick_organs -= liver
|
||||
pick_organs.Insert(1, liver)
|
||||
|
||||
// Move the brain to the very end since damage to it is vastly more dangerous
|
||||
// (and isn't technically counted as toxloss) than general organ damage.
|
||||
var/obj/item/organ/internal/brain/brain = internal_organs_by_name[BP_BRAIN]
|
||||
if(brain)
|
||||
pick_organs -= brain
|
||||
pick_organs += brain
|
||||
var/obj/item/organ/internal/brain/brain = null
|
||||
if(internal_organs_by_name)
|
||||
brain = internal_organs_by_name[BP_BRAIN]
|
||||
if(brain)
|
||||
pick_organs -= brain
|
||||
pick_organs += brain
|
||||
|
||||
for(var/internal in pick_organs)
|
||||
var/obj/item/organ/internal/I = internal
|
||||
|
||||
Reference in New Issue
Block a user