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:
Contrabang
2024-05-30 22:17:31 -04:00
committed by GitHub
parent 247e24ba9f
commit bc0c8344cf
62 changed files with 1326 additions and 148 deletions
+1 -1
View File
@@ -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)
+1 -1
View File
@@ -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)
+10 -4
View File
@@ -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()
+2 -2
View File
@@ -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()