diff --git a/aurorastation.dme b/aurorastation.dme index 0acdce0a63c..a5fdc07014e 100644 --- a/aurorastation.dme +++ b/aurorastation.dme @@ -1690,7 +1690,7 @@ #include "code\modules\mob\living\carbon\human\species\species_attack.dm" #include "code\modules\mob\living\carbon\human\species\species_hud.dm" #include "code\modules\mob\living\carbon\human\species\outsider\shadow.dm" -#include "code\modules\mob\living\carbon\human\species\outsider\skeleton.dm" +#include "code\modules\mob\living\carbon\human\species\outsider\undead.dm" #include "code\modules\mob\living\carbon\human\species\outsider\vox.dm" #include "code\modules\mob\living\carbon\human\species\station\golem.dm" #include "code\modules\mob\living\carbon\human\species\station\human_subspecies.dm" diff --git a/code/modules/cargo/randomstock.dm b/code/modules/cargo/randomstock.dm index fc4e1220852..7510db70d0f 100644 --- a/code/modules/cargo/randomstock.dm +++ b/code/modules/cargo/randomstock.dm @@ -1099,7 +1099,7 @@ var/list/global/random_stock_large = list( if("chempack") var/total = rand(2,6) var/list/chems = SSchemistry.chemical_reagents.Copy() - var/list/exclusion = list("drink", "reagent", "adminordrazine", "beer2", "azoth", "elixir_life", "liquid_fire", "philosopher_stone", "undead_ichor", "love", "shapesand", "usolve", "sglue", "black_matter") + var/list/exclusion = list("drink", "reagent", "adminordrazine", "beer2", "azoth", "elixir_life", "liquid_fire", "philosopher_stone", "undead_ichor", "love", "shapesand", "usolve", "sglue", "black_matter", "lightning", "trioxin") chems -= exclusion for (var/i=0,iYour mind suddenly grows dark as the unity of the Hive is torn from you." removed_langs = 0 ..() + +/obj/item/organ/parasite/zombie + name = "black tumor" + icon = 'icons/obj/surgery.dmi' + icon_state = "blacktumor" + dead_icon = "blacktumor" + + organ_tag = "zombie" + + parent_organ = "chest" + stage_interval = 150 + +/obj/item/organ/parasite/zombie/process() + ..() + + if (!owner) + return + + if(prob(10) && !(owner.species.flags & NO_PAIN)) + owner << "You feel a burning sensation on your skin!" + owner.make_jittery(10) + + else if(prob(10)) + owner.emote("moan") + + if(stage >= 2) + if(prob(15)) + owner.emote("scream") + if(!isundead(owner)) + owner.adjustBrainLoss(2, 55) + + else if(prob(10)) + if(!isundead(owner)) + owner << "You feel sick." + owner.adjustToxLoss(5) + owner.delayed_vomit() + + if(stage >= 3) + if(prob(10)) + if(isundead(owner)) + owner.adjustBruteLoss(-30) + owner.adjustFireLoss(-30) + else + owner << "You feel an insatiable hunger." + owner.nutrition = -1 + + if(stage >= 4) + if(prob(10)) + if(!isundead(owner)) + if(ishuman_species(owner)) + owner << "You feel life leaving your husk, but death rejects you..." + playsound(src.loc, 'sound/hallucinations/far_noise.ogg', 50, 1) + owner << " 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!" + owner.set_species("Zombie") + else + owner.adjustToxLoss(50) \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 2c3d13987dc..0a482d8b38a 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -451,19 +451,19 @@ /datum/reagent/estus/affect_blood(var/mob/living/carbon/M, var/removed) if (!modifier) modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN) - if(isskeleton(M)) + if(isundead(M)) M.heal_organ_damage(10 * removed, 15 * removed) /datum/reagent/estus/affect_ingest(var/mob/living/carbon/M, var/removed) if (!modifier) modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN) - if(isskeleton(M)) + if(isundead(M)) M.heal_organ_damage(10 * removed, 15 * removed) /datum/reagent/estus/affect_touch(var/mob/living/carbon/M, var/removed) if (!modifier) modifier = M.add_modifier(/datum/modifier/luminous, MODIFIER_REAGENT, src, _strength = 4, override = MODIFIER_OVERRIDE_STRENGTHEN) - if(isskeleton(M)) + if(isundead(M)) M.heal_organ_damage(10 * removed, 15 * removed) /datum/reagent/liquid_fire diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm index 7d9ee09fe56..9f7406a83f2 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Toxins.dm @@ -270,7 +270,7 @@ taste_description = "salty dirt" metabolism = REM * 10 breathe_mul = 0 - + /datum/reagent/toxin/fertilizer/monoammoniumphosphate/touch_turf(var/turf/simulated/T) if(!istype(T)) return @@ -780,4 +780,26 @@ ..() M.hallucination = max(M.hallucination, 50) if(prob(10)) - M.see_invisible = SEE_INVISIBLE_CULT \ No newline at end of file + M.see_invisible = SEE_INVISIBLE_CULT + +/datum/reagent/toxin/trioxin + name = "Trioxin" + id = "trioxin" + description = "A synthetic compound of unknown origins, designated originally as a performance enhancing substance." + reagent_state = LIQUID + color = "#E7E146" + strength = 1 + taste_description = "old eggs" + metabolism = REM + unaffected_species = IS_DIONA | IS_MACHINE | IS_UNDEAD + +/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)) + 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) \ No newline at end of file diff --git a/code/modules/spells/targeted/cleric_spells.dm b/code/modules/spells/targeted/cleric_spells.dm index 9c1fe8686dc..2e3e8878139 100644 --- a/code/modules/spells/targeted/cleric_spells.dm +++ b/code/modules/spells/targeted/cleric_spells.dm @@ -135,7 +135,7 @@ /spell/targeted/mend/cast(list/targets, mob/user) ..() for(var/mob/living/target in targets) - if(isskeleton(target)) + if(isundead(target)) user << "This spell can't affect the undead." return 0 @@ -217,7 +217,7 @@ user << "\The [target] is still alive!" return 0 - if(isskeleton(target)) + if(isundead(target)) user << "This spell can't affect the undead." return 0 diff --git a/code/modules/spells/targeted/necromancer_spells.dm b/code/modules/spells/targeted/necromancer_spells.dm index 820810942ef..97227959f97 100644 --- a/code/modules/spells/targeted/necromancer_spells.dm +++ b/code/modules/spells/targeted/necromancer_spells.dm @@ -91,7 +91,7 @@ user << "This spell can't affect the living." return 0 - if(isskeleton(target)) + if(isundead(target)) user << "This spell can't affect the undead." return 0 @@ -144,7 +144,7 @@ /spell/targeted/lichdom/cast(mob/target,var/mob/living/carbon/human/user as mob) - if(isskeleton(user)) + if(isundead(user)) user << "You have no soul or life to offer." return 0 diff --git a/html/changelogs/alberyk-brains.yml b/html/changelogs/alberyk-brains.yml new file mode 100644 index 00000000000..7b05c74bb9e --- /dev/null +++ b/html/changelogs/alberyk-brains.yml @@ -0,0 +1,6 @@ +author: Alberyk + +delete-after: True + +changes: + - rscadd: "Added zombies." diff --git a/icons/mob/human_races/r_zombie.dmi b/icons/mob/human_races/r_zombie.dmi new file mode 100644 index 00000000000..93af5161deb Binary files /dev/null and b/icons/mob/human_races/r_zombie.dmi differ diff --git a/icons/obj/surgery.dmi b/icons/obj/surgery.dmi index 2b46198461f..5d9d85e6060 100644 Binary files a/icons/obj/surgery.dmi and b/icons/obj/surgery.dmi differ