mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-16 01:23:41 +01:00
Adds Zombies (Admin-spawn) (#25381)
* fuck it good enough * Apply suggestions from code review Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Signed-off-by: Contrabang <91113370+Contrabang@users.noreply.github.com> * TRIPLE-REVIEW * this should do it * wow * bruh * FIX * fix * yeah * sirryan review * aaaaa * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: Contrabang <91113370+Contrabang@users.noreply.github.com> --------- Signed-off-by: Contrabang <91113370+Contrabang@users.noreply.github.com> Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
This commit is contained in:
@@ -120,7 +120,7 @@
|
||||
if(owner)
|
||||
owner.adjustBrainLoss(amount)
|
||||
|
||||
/obj/item/organ/internal/brain/necrotize(update_sprite = TRUE) //Brain also has special handling for when it necrotizes
|
||||
/obj/item/organ/internal/brain/necrotize(update_sprite = TRUE, ignore_vital_death = FALSE) //Brain also has special handling for when it necrotizes
|
||||
damage = max_damage
|
||||
status |= ORGAN_DEAD
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
blood_DNA = list()
|
||||
blood_DNA[dna.unique_enzymes] = dna.blood_type
|
||||
|
||||
/obj/item/organ/proc/necrotize(update_sprite = TRUE)
|
||||
/obj/item/organ/proc/necrotize(update_sprite = TRUE, ignore_vital_death = FALSE)
|
||||
damage = max_damage
|
||||
status |= ORGAN_DEAD
|
||||
STOP_PROCESSING(SSobj, src)
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
|
||||
var/splinted_count = 0 //Time when this organ was last splinted
|
||||
|
||||
/obj/item/organ/external/necrotize(update_sprite=TRUE)
|
||||
/obj/item/organ/external/necrotize(update_sprite=TRUE, ignore_vital_death = FALSE)
|
||||
if(status & (ORGAN_ROBOT|ORGAN_DEAD))
|
||||
return
|
||||
status |= ORGAN_DEAD
|
||||
@@ -72,7 +72,7 @@
|
||||
if(owner)
|
||||
to_chat(owner, "<span class='notice'>You can't feel your [name] anymore...</span>")
|
||||
owner.update_body()
|
||||
if(vital)
|
||||
if(vital && !ignore_vital_death)
|
||||
owner.death()
|
||||
|
||||
/obj/item/organ/external/Destroy()
|
||||
@@ -384,13 +384,16 @@ This function completely restores a damaged organ to perfect condition.
|
||||
surgeryize()
|
||||
if(is_robotic()) //Robotic organs stay robotic.
|
||||
status = ORGAN_ROBOT
|
||||
else if(HAS_TRAIT(owner, TRAIT_I_WANT_BRAINS))
|
||||
status = ORGAN_DEAD
|
||||
else
|
||||
status = 0
|
||||
germ_level = 0
|
||||
perma_injury = 0
|
||||
brute_dam = 0
|
||||
burn_dam = 0
|
||||
open = ORGAN_CLOSED //Closing all wounds.
|
||||
if(!HAS_TRAIT(owner, TRAIT_I_WANT_BRAINS)) // zombies's wounds don't close. Because thats cool.
|
||||
open = ORGAN_CLOSED //Closing all wounds.
|
||||
|
||||
// handle internal organs
|
||||
for(var/obj/item/organ/internal/current_organ in internal_organs)
|
||||
@@ -666,9 +669,10 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
playsound(loc, 'sound/weapons/slice.ogg', 50, 1, -1)
|
||||
user.visible_message("<span class='warning'>[user] begins to cut open [src].</span>",\
|
||||
"<span class='notice'>You begin to cut open [src]...</span>")
|
||||
if(do_after(user, 54, target = src))
|
||||
if(do_after(user, 5.4 SECONDS, target = src))
|
||||
drop_organs(user)
|
||||
drop_embedded_objects()
|
||||
open = ORGAN_ORGANIC_VIOLENT_OPEN
|
||||
else
|
||||
return ..()
|
||||
|
||||
@@ -817,6 +821,8 @@ Note that amputating the affected organ does in fact remove the infection from t
|
||||
/obj/item/organ/external/proc/is_usable()
|
||||
if((is_robotic() && get_damage() >= max_damage) && !tough) //robot limbs just become inoperable at max damage
|
||||
return
|
||||
if(owner && HAS_TRAIT(owner, TRAIT_I_WANT_BRAINS))
|
||||
return TRUE
|
||||
return !(status & (ORGAN_MUTATED|ORGAN_DEAD))
|
||||
|
||||
/obj/item/organ/external/proc/is_malfunctioning()
|
||||
|
||||
@@ -73,10 +73,10 @@
|
||||
mob_icon = new /icon(icon_file, new_icon_state)
|
||||
if(!skeletal && !is_robotic())
|
||||
if(status & ORGAN_DEAD)
|
||||
mob_icon.ColorTone(rgb(10,50,0))
|
||||
mob_icon.ColorTone(COLORTONE_DEAD_EXT_ORGAN)
|
||||
mob_icon.SetIntensity(0.7)
|
||||
|
||||
if(!isnull(s_tone))
|
||||
else if(!isnull(s_tone)) // we use an else here because it fucks with shit. It would be nice to fix this someday so that colors affect dead limbs
|
||||
if(s_tone >= 0)
|
||||
mob_icon.Blend(rgb(s_tone, s_tone, s_tone), ICON_ADD)
|
||||
else
|
||||
|
||||
@@ -142,7 +142,7 @@
|
||||
/obj/item/organ/internal/replaced(mob/living/carbon/human/target)
|
||||
insert(target)
|
||||
|
||||
/obj/item/organ/internal/necrotize(update_sprite)
|
||||
/obj/item/organ/internal/necrotize(update_sprite, ignore_vital_death = FALSE)
|
||||
for(var/organ_tag in organ_datums) // let the organ datums handle first
|
||||
var/datum/organ/dead_organ = organ_datums[organ_tag]
|
||||
dead_organ.on_necrotize()
|
||||
|
||||
@@ -187,7 +187,7 @@
|
||||
|
||||
. = ..()
|
||||
|
||||
/obj/item/organ/external/hand/necrotize(update_sprite)
|
||||
/obj/item/organ/external/hand/necrotize(update_sprite, ignore_vital_death = FALSE)
|
||||
. = ..()
|
||||
update_hand_missing()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user