Zombies tweaks (#5377)

After having our first zombie round, I saw some issues and came up with some solutions

-zombies can now devour their victims
-zombie transformation now properly removes people's languages
-trioxin will now revive the dead, allowing for people that were mudered by zombies to return back to life as a zombie
-attacking people already infected with the zombie transformation will send a message to the attacking zombie
This commit is contained in:
Alberyk
2018-10-07 14:43:45 -03:00
committed by Erki
parent 800ad1de64
commit d2c5fd74f0
4 changed files with 29 additions and 4 deletions
@@ -187,7 +187,11 @@
sprint_speed_factor = 0.3
exhaust_threshold = 0 //No oxyloss, so zero threshold
inherent_verbs = list(/mob/living/carbon/human/proc/darkness_eyes)
inherent_verbs = list(/mob/living/carbon/human/proc/darkness_eyes, /mob/living/proc/devour)
allowed_eat_types = TYPE_ORGANIC | TYPE_HUMANOID
gluttonous = TRUE
/datum/species/zombie/handle_post_spawn(var/mob/living/carbon/human/H)
H.mutations.Add(CLUMSY)
@@ -154,6 +154,10 @@
/datum/unarmed_attack/bite/infectious/apply_effects(var/mob/living/carbon/human/user,var/mob/living/carbon/human/target,var/armour,var/attack_damage,var/zone)
..()
if(target && target.stat == DEAD)
return
if(target.internal_organs_by_name["zombie"])
to_chat(user, "<span class='danger'>You feel that \the [target] has been already infected!</span>")
if(prob(25))
if(target.reagents)
target.reagents.add_reagent("trioxin", 10)
+3 -1
View File
@@ -251,9 +251,11 @@
if(prob(10))
if(!isundead(owner))
if(ishuman_species(owner))
for(var/datum/language/L in owner.languages)
owner.remove_language(L.name)
owner << "<span class='warning'>You feel life leaving your husk, but death rejects you...</span>"
playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1)
owner << "<font size='3'> <span class='cult'>All that is left is a cruel hunger for the flesh of the living, and the desire to spread this infection. You must consume all the living!</font></span>"
owner << "<font size='3'><span class='cult'>All that is left is a cruel hunger for the flesh of the living, and the desire to spread this infection. You must consume all the living!</font></span>"
owner.set_species("Zombie")
else
owner.adjustToxLoss(50)
@@ -793,14 +793,29 @@
taste_description = "old eggs"
metabolism = REM
unaffected_species = IS_DIONA | IS_MACHINE | IS_UNDEAD
affects_dead = TRUE
/datum/reagent/toxin/trioxin/affect_blood(var/mob/living/carbon/M, var/removed)
..()
if(istype(M,/mob/living/carbon/human))
var/mob/living/carbon/human/H = M
if(M.reagents.has_reagent("spaceacillin", 15))
if(H.reagents.has_reagent("spaceacillin", 15))
return
if(!H.internal_organs_by_name["zombie"] && prob(15))
var/obj/item/organ/external/affected = H.get_organ("chest")
var/obj/item/organ/parasite/zombie/infest = new()
infest.replaced(H, affected)
infest.replaced(H, affected)
if(ishuman_species(H))
if(!H.internal_organs_by_name["brain"]) //destroying the brain stops trioxin from bringing the dead back to life
return
for(var/datum/language/L in H.languages)
H.remove_language(L.name)
H.set_species("Zombie")
H.revive()
playsound(H.loc, 'sound/hallucinations/far_noise.ogg', 50, 1)
to_chat(H,"<font size='3'><span class='cult'>You return back to life as the undead, all that is left is the hunger to consume the living and the will to spread the infection.</font></span>")