Moves oldviro symptoms and transformation viruses to current virus system (#27946)

* progress

* finish transformation symtoms, add dnaspread

* toxic compensation, move petrification out of viro, wendigo transform

* firt compile, fix errors

* finish up move to virus 2, fix some symptoms

* fix effects

* rework into seperate stages, add stage 1

* cyborg virus done

* mommi part one

* finish mommi virus

* plasma fixes, finish xeno disease, work on wendigo disease

* fix

* global disease hell

* add uplink item

* fix mommiviroos

* rename

* edit desc

* fuggen typo

* static type...?

* oh duh

* adjust colors

* capitalize

* use proce

* remove bundle

* actually remove bundle

* make the proc dothe thing

* move that

* fix
This commit is contained in:
gurfan
2020-10-10 16:14:07 -05:00
committed by GitHub
parent 68357f0b64
commit 7a451484f4
20 changed files with 832 additions and 200 deletions

View File

@@ -6,3 +6,8 @@
#define WMOUSE 2
#define WINFECTION 3
#define WOUTBREAK 4
#define DISEASE_CYBORG "cyborg"
#define DISEASE_MOMMI "mommi"
#define DISEASE_XENO "xenomorph"
#define DISEASE_WENDIGO "wendigo"

View File

@@ -419,10 +419,10 @@ var/global/list/BODY_COVER_VALUE_LIST=list("[HEAD]" = COVER_PROTECTION_HEAD,"[EY
#define M_RESIST_COLD 2
#define M_XRAY 3
#define M_HULK 4
#define M_CLUMSY 5
#define M_FAT 6
#define M_CLUMSY 5
#define M_FAT 6
#define M_HUSK 7
#define M_NOCLONE 8
#define M_NOCLONE 8
// Extra powers:
#define M_LASER 9 // harm intent - click anywhere to shoot lasers from eyes
@@ -430,6 +430,7 @@ var/global/list/BODY_COVER_VALUE_LIST=list("[HEAD]" = COVER_PROTECTION_HEAD,"[EY
#define M_BEAK 11 // Can buther animals without tools
#define M_TALONS 12 // Bonus kick damage
#define M_STONE_SKIN 13 // hard skin
#define M_THERMALS 14 //see mobs through walls
//#define HEAL 12 // (Not implemented) healing people with hands
//#define SHADOW 13 // (Not implemented) shadow teleportation (create in/out portals anywhere) (25%)

View File

@@ -52,28 +52,31 @@ var/image/contamination_overlay = image('icons/effects/contamination.dmi')
if(stat >= 2)
return
if(species.breath_type != GAS_PLASMA)
if(species.breath_type == GAS_PLASMA)
return
if(species.flags & PLASMA_IMMUNE)
return
//Burn skin if exposed.
if(zas_settings.Get(/datum/ZAS_Setting/SKIN_BURNS))
if(!pl_head_protected() || !pl_suit_protected())
burn_skin(0.75)
if(prob(20))
to_chat(src, "<span class='warning'>Your skin burns!</span>")
updatehealth()
//Burn skin if exposed.
if(zas_settings.Get(/datum/ZAS_Setting/SKIN_BURNS))
if(!pl_head_protected() || !pl_suit_protected())
burn_skin(0.75)
if(prob(20))
to_chat(src, "<span class='warning'>Your skin burns!</span>")
updatehealth()
//Burn eyes if exposed.
if(zas_settings.Get(/datum/ZAS_Setting/EYE_BURNS))
var/eye_protection = get_body_part_coverage(EYES)
if(!eye_protection)
burn_eyes()
//Burn eyes if exposed.
if(zas_settings.Get(/datum/ZAS_Setting/EYE_BURNS))
var/eye_protection = get_body_part_coverage(EYES)
if(!eye_protection)
burn_eyes()
//Genetic Corruption
if(zas_settings.Get(/datum/ZAS_Setting/GENETIC_CORRUPTION))
if(rand(1,10000) < zas_settings.Get(/datum/ZAS_Setting/GENETIC_CORRUPTION))
randmutb(src)
to_chat(src, "<span class='warning'>High levels of toxins cause you to spontaneously mutate.</span>")
domutcheck(src,null)
//Genetic Corruption
if(zas_settings.Get(/datum/ZAS_Setting/GENETIC_CORRUPTION))
if(rand(1,10000) < zas_settings.Get(/datum/ZAS_Setting/GENETIC_CORRUPTION))
randmutb(src)
to_chat(src, "<span class='warning'>High levels of toxins cause you to spontaneously mutate.</span>")
domutcheck(src,null)
/mob/living/carbon/human/proc/burn_eyes()

View File

@@ -43,6 +43,8 @@ var/datum/subsystem/more_init/SSmore_init
for (var/obj/machinery/computer/security/S in tv_monitors)
S.init_cams()
create_global_diseases()
init_wizard_apprentice_setups()
machinery_rating_cache = cache_machinery_components_rating()

View File

@@ -1,31 +0,0 @@
/*
/datum/disease/beesease
name = "Beesease"
max_stages = 5
spread = "Contact" //ie shot bees
cure = "???"
cure_id = "???"
agent = "Bees"
affected_species = list("Human","Monkey")
curable = 0
/datum/disease/beesease/stage_act()
..()
switch(stage)
if(1)
if(prob(2))
to_chat(affected_mob, "<span class='warning'>You feel like something is moving inside of you</span>")
if(2) //also changes say, see say.dm
if(prob(2))
to_chat(affected_mob, "<span class='warning'>You feel like something is moving inside of you</span>")
if(prob(2))
to_chat(affected_mob, "<span class='warning'>BZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ</span>")
if(3)
//Should give the bee spit verb
if(4)
//Plus bees now spit randomly
if(5)
//Plus if you die, you explode into bees
return
*/
//Started working on it, but am too lazy to finish it today -- Urist

View File

@@ -22,13 +22,13 @@
if(status_flags & GODMODE)
return 0 //Godmode. This causes jittering and other variables to never go down but whatever.
var/total_plasmaloss = 0
for(var/obj/item/I in src)
if(I.contaminated && !(species.flags & PLASMA_IMMUNE))
total_plasmaloss += zas_settings.Get(/datum/ZAS_Setting/CONTAMINATION_LOSS)
I.OnMobLife(src)
adjustToxLoss(total_plasmaloss)
if(!(species.flags & PLASMA_IMMUNE))
var/total_plasmaloss = 0
for(var/obj/item/I in src)
if(I.contaminated)
total_plasmaloss += zas_settings.Get(/datum/ZAS_Setting/CONTAMINATION_LOSS)
I.OnMobLife(src)
adjustToxLoss(total_plasmaloss)
if(species.flags & REQUIRE_LIGHT)
var/light_amount = 0 //How much light there is in the place, affects receiving nutrition and healing

View File

@@ -117,7 +117,7 @@
src.client.images += V.cached_images[i]
i++
if (!V || (!(VAMP_VISION in V.powers) && !(VAMP_MATURE in V.powers))) // Not a vampire, or a vampire but neither of the spells.
if (!V || !(VAMP_VISION in V.powers) && !(VAMP_MATURE in V.powers)) // Not a vampire, or a vampire but neither of the spells.
change_sight(removing = SEE_MOBS)
if (!V || !(VAMP_MATURE in V.powers))
change_sight(removing = SEE_TURFS|SEE_OBJS)
@@ -141,6 +141,8 @@
if("shadow")
see_in_dark = 8
see_invisible = SEE_INVISIBLE_LEVEL_ONE
if(M_THERMALS in mutations)
change_sight(adding = SEE_MOBS)
if(M_XRAY in mutations)
change_sight(adding = SEE_TURFS|SEE_MOBS|SEE_OBJS)
see_in_dark = 8

View File

@@ -87,26 +87,14 @@
if(!L.turn_into_statue(1)) //Statue forever
return 0
to_chat(L, "<span class='userdanger'>You have been turned to stone by \the [src]'s touch.</span>")
to_chat(L, "<span class='userdanger'>You have been turned to stone by \the [src]'s bite.</span>")
add_logs(src, L, "instantly petrified", admin = L.ckey ? TRUE : FALSE)
else if(ishuman(L))
var/mob/living/carbon/human/H = L
add_logs(src, L, "petrified", admin = L.ckey ? TRUE : FALSE)
var/found_virus = FALSE
for(var/datum/disease/petrification/P in H.viruses) //If already petrifying, speed up the process!
P.stage = P.max_stages
P.stage_act()
found_virus = TRUE
break
L.slow_petrify()
if(!found_virus)
var/datum/disease/D = new /datum/disease/petrification
D.holder = H
D.affected_mob = H
H.viruses += D
var/msg = pick("\The [src] hisses at [L]!", "\The [src] hisses angrily at [L]!")
visible_message("<span class='userdanger'>[msg]</span>", "<span class='notice'>You touch [L].</span>", "<span class='sinister'>You hear an eerie hiss.</span>")
@@ -239,3 +227,30 @@
return 1
else if(isliving(L))
return 1
/mob/living/proc/slow_petrify()
var/stage = 1
while(stage < 4)
if(reagents.has_reagent(SACID) || reagents.has_reagent(PACID) || reagents.has_reagent(ACIDSPIT) || reagents.has_reagent(ACIDTEA))
to_chat(src, "<span class='notice'>You feel a wave of relief as your muscles loosen up.</span>")
return 0
if(iscarbon(src))
var/mob/living/carbon/H = src
switch(stage)
if(1)
//Second message is shown to hallucinating mobs
simple_message("<span class='userdanger'>You are slowing down. Moving is extremely painful for you.</span>",\
"<span class='notice'>You feel like Michelangelo di Lodovico Buonarroti Simoni trapped in a foreign body.</span>")
H.pain_shock_stage += 300
if(2)
simple_message("<span class='userdanger'>Your skin starts losing color and cracking. Your body becomes numb.</span>",\
"<span class='notice'>You decide to channel your inner Italian sculptor to create a beautiful statue.</span>")
H.Stun(3)
if(3)
if(src.turn_into_statue(1))
simple_message("<span class='userdanger'>Your body turns to stone.</span>",\
"<span class='notice'>You've created a masterwork statue of David!</span>")
return 1
stage = stage + 1
sleep(25)

View File

@@ -147,7 +147,7 @@
..()
var/pp = get_pp()
var/mob/living/carbon/human/H=lungs.owner
if(pp > max_pp) // Too much toxins
if(pp > max_pp && !(H.species.flags & PLASMA_IMMUNE)) // Too much toxins
//testing("TOXIC: gasid=[id];pp=[pp]")
var/ratio = (pp/max_pp) * reagent_mult // WAS: (moles/max_moles) * 10
//adjustToxLoss(clamp(ratio, MIN_PLASMA_DAMAGE, MAX_PLASMA_DAMAGE)) //Limit amount of damage toxin exposure can do per second

View File

@@ -2472,7 +2472,7 @@
return 1
var/mob/living/carbon/human/H = M
if(isplasmaman(H))
if(isplasmaman(H) || H.species.flags & PLASMA_IMMUNE)
return 1
else
M.adjustToxLoss(3 * REM)
@@ -3640,19 +3640,20 @@
reagent_state = REAGENT_STATE_SOLID
dupeable = FALSE
color = "#535E66" //rgb: 83, 94, 102
var/diseasetype = /datum/disease/robotic_transformation
/datum/reagent/nanites/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume)
var/disease_type = DISEASE_CYBORG
/datum/reagent/nanites/reaction_mob(var/mob/living/M, var/method = TOUCH, var/volume)
if(..())
return 1
if((prob(10) && method == TOUCH) || method == INGEST)
M.contract_disease(new diseasetype, 1)
M.infect_disease2_predefined(disease_type, 1, "Robotic Nanites")
/datum/reagent/nanites/autist
name = "Autist nanites"
id = AUTISTNANITES
diseasetype = /datum/disease/robotic_transformation/mommi
description = "Microscopic construction robots. They look more autistic than usual."
disease_type = DISEASE_MOMMI
/datum/reagent/xenomicrobes
name = "Xenomicrobes"
@@ -3665,9 +3666,8 @@
if(..())
return 1
if((prob(10) && method == TOUCH) || method == INGEST)
M.contract_disease(new /datum/disease/xeno_transformation(0), 1)
M.infect_disease2_predefined(DISEASE_XENO, 1, "Xenimicrobes")
/datum/reagent/nanobots
name = "Nanobots"
@@ -8189,17 +8189,8 @@ var/global/list/tonio_doesnt_remove=list("tonio", "blood")
return 1
if(volume >= minimal_dosage && prob(30))
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(locate(/datum/disease/petrification) in H.viruses)
return
var/datum/disease/D = new /datum/disease/petrification
D.holder = H
D.affected_mob = H
H.viruses += D
else if(!issilicon(M))
if(M.turn_into_statue(1)) //Statue forever
if(!issilicon(M))
if(M.slow_petrify()) //Statue forever
to_chat(M, "<span class='userdanger'>You have been turned to stone by ingesting petritricin.</span>")
//A chemical for curing petrification. It only works after you've been fully petrified

View File

@@ -308,7 +308,8 @@ var/global/list/valid_random_food_types = existing_typesof(/obj/item/weapon/reag
/obj/item/weapon/reagent_containers/food/snacks/meat/wendigo/consume(mob/living/carbon/eater, messages = 0)
. = ..()
if(ishuman(eater))
eater.contract_disease(new /datum/disease/wendigo_transformation)
var/mob/living/carbon/human/H = eater
H.infect_disease2_predefined(DISEASE_WENDIGO, 1, "Wendigo Meat")
/obj/item/weapon/reagent_containers/food/snacks/meat/slime
name = "gelatin"

View File

@@ -253,3 +253,145 @@
"Later, [other_mob_name]."
)
mob.say(pick(greets_farewells))
/datum/disease2/effect/cyborg_warning
name = "Neural Rewiring"
desc = "Rearranges nerve tissue throughout the body, causing the infected to feel more robotic."
stage = 1
badness = EFFECT_DANGER_FLAVOR
restricted = 2
var/list/say_messages = list(
"Boop.",
"Beep.",
"Beep Beep Beep!",
"Beep... Boop?",
"Ping!",
"Buzz.",
"Buzz...",
"Kkkiiiill mmee...",
"HUMAN HARM!",
"DESTROY ALL CARBONS!"
)
var/list/host_messages = list(
"Your joints feel stiff.",
"You feel sore.",
"Your skin feels loose.",
"You feel a stabbing pain in your head.",
"You can feel... something... inside you.",
"Beep...?",
"Boop...?",
"You feel hated.",
"You feel a strong urge to prevent human harm...",
"You feel a closer connection to technology...",
"You feel like you could use a recharge..."
)
/datum/disease2/effect/cyborg_warning/activate(var/mob/living/mob)
if(prob(50))
mob.say(pick(say_messages))
else
to_chat(mob, "<span class='warning'>[pick(host_messages)]</span>")
/datum/disease2/effect/mommi_warning
name = "Major Neural Rewiring"
desc = "Rearranges nerve tissue throughout the body, causing the infected to feel more robotic... and autistic."
stage = 1
badness = EFFECT_DANGER_FLAVOR
restricted = 2
var/list/say_messages = list(
"PING!",
"PING! PING! PING!",
"A-FLAP!",
"*me flaps their arms ANGRILY!",
"*spin",
"BUILDING BARS IMPROVES THE STATION!",
"OUT OF THE WAY ENGINEERS!",
"Does anybody have cryptographic sequencer?",
"Is that a cryptographic sequencer?"
)
var/list/host_messages = list(
"Your joints feel stiff.",
"You feel sore.",
"Your skin feels loose.",
"You feel cute.",
"You feel autistic.",
"You feel like pinging.",
"Ping...?",
"You feel like buzzing and flapping your arms.",
"You feel like wasting time.",
"You feel a closer connection to engineering...",
"You suddenly feel afraid of floortiles..."
)
/datum/disease2/effect/mommi_warning/activate(var/mob/living/mob)
if(prob(50))
mob.say(pick(say_messages))
else
to_chat(mob, "<span class='warning'>[pick(host_messages)]</span>")
/datum/disease2/effect/wendigo_warning
name = "Fullness Syndrome"
desc = "An unsual symptom that causes the infected to feel hungry, even after eating."
stage = 1
badness = EFFECT_DANGER_ANNOYING
restricted = 2
var/list/host_messages = list(
"Your stomach grumbles.",
"You feel peckish.",
"So hungry...",
"Your stomach feels empty.",
"Hunger...",
"Who are we...?",
"Our mind hurts...",
"You feel... different...",
"There's something wrong."
)
/datum/disease2/effect/wendigo_warning/activate(var/mob/living/mob)
to_chat(mob, "<span class='warning'>[pick(host_messages)]</span>")
mob.nutrition -= 25
/datum/disease2/effect/xenomorph_warning
name = "Foreign-Impulse Syndrome"
desc = "Alters the thinking patterns of the infected, causing them to be more aggressive and hostile."
stage = 1
badness = EFFECT_DANGER_FLAVOR
restricted = 2
var/list/say_messages = list(
"Hhhhssssshhhh!",
"Hisssssss!",
"SsssSSssssss!",
"*me hisses.",
"Kill...",
"You look delicious."
)
var/list/host_messages = list(
"Your feel like hissing.",
"Your skin feels impossibly calloused...",
"Your skin feels very tight.",
"Kill...",
"Your throat feels very scratchy.",
"You feel angry.",
"You feel like hurting someone.",
"You feel hungry.",
"You feel... different...",
)
/datum/disease2/effect/xenomorph_warning/activate(var/mob/living/mob)
if(prob(50))
mob.say(pick(say_messages))
else
to_chat(mob, "<span class='warning'>[pick(host_messages)]</span>")
//Punch people around the infected.
var/list/targets = list()
for(var/mob/living/L in range(1, get_turf(mob)))
if (L != mob)
targets += L
if(targets.len)
var/mob/living/target = pick(targets)
if(target)
if(!mob.is_pacified(VIOLENCE_DEFAULT,target))
mob.unarmed_attack_mob(target)

View File

@@ -583,3 +583,126 @@
var/message=speech.message
message = uppertext(message + "!")
speech.message = message
/datum/disease2/effect/cyborg_vomit
name = "Oleum Syndrome"
desc = "Causes the infected to internally synthesize oil and other inorganic material."
stage = 3
badness = EFFECT_DANGER_ANNOYING
restricted = 2
/datum/disease2/effect/cyborg_vomit/activate(var/mob/living/mob)
if(prob(90)) //90% chance for just oil
mob.visible_message("<span class='danger'>[mob.name] vomits up some oil!</span>")
mob.adjustToxLoss(-3)
var/obj/effect/decal/cleanable/blood/oil/O = new /obj/effect/decal/cleanable/blood/oil(get_turf(mob))
playsound(O, 'sound/effects/splat.ogg', 50, 1)
mob.Stun(5)
else //10% chance for a random bot!
to_chat(mob, "<span class='danger'>You feel like something's about to burst out of you!</span>")
sleep(100)
var/list/possible_bots = list(
/obj/machinery/bot/cleanbot,
/obj/machinery/bot/cleanbot/roomba,
/obj/machinery/bot/bloodbot,
/obj/machinery/bot/medbot,
/obj/machinery/bot/secbot,
/obj/machinery/bot/floorbot,
/obj/machinery/bot/buttbot
)
var/chosen_bot = pick(possible_bots)
var/obj/machinery/bot/B = new chosen_bot(get_turf(mob))
new /obj/effect/decal/cleanable/blood(get_turf(mob))
mob.visible_message("<span class ='danger'>A [B.name] bursts out of [mob.name]'s mouth!</span>")
playsound(B, 'sound/effects/splat.ogg', 50, 1)
mob.audible_scream()
mob.adjustBruteLoss(15)
mob.Stun(10)
/datum/disease2/effect/mommi_shrink
name = "Dysplasia Syndrome"
desc = "Rapidly restructures the body of the infected, causing them to shrink in size."
badness = EFFECT_DANGER_FLAVOR
stage = 2
restricted = 2
var/activated = 0
/datum/disease2/effect/mommi_shrink/activate(var/mob/living/mob)
if(activated)
return
to_chat(mob, "<span class = 'warning'>You feel small...</span>")
var/matrix/M = matrix()
M.Scale(1,0.7)
mob.transform = M
mob.pixel_y = -4 * PIXEL_MULTIPLIER
mob.pass_flags |= PASSTABLE
activated = 1
/datum/disease2/effect/mommi_shrink/deactivate(var/mob/living/mob)
to_chat(mob, "<span class = 'warning'>You feel like an adult again.</span>")
var/matrix/M = matrix()
M.Scale(1,1)
mob.transform = M
mob.pixel_y = 0 * PIXEL_MULTIPLIER
mob.pass_flags &= ~PASSTABLE
activated = 0
/datum/disease2/effect/xenomorph_babel
name = "Mega Laryngitis"
desc = "Warps the vocal cords of the infected, resulting in normal speech turning into incoherent hisses. In addition, the infected loses the ability to understand normal language."
badness = EFFECT_DANGER_HINDRANCE
stage = 2
restricted = 2
var/list/original_languages = list()
var/old_default
var/activated = 0
/datum/disease2/effect/xenomorph_babel/activate(var/mob/living/mob)
if(activated)
return
for(var/datum/language/L in mob.languages)
original_languages += L.name
mob.remove_language(L.name)
mob.add_language(LANGUAGE_XENO)
old_default = mob.default_language
mob.default_language = mob.languages[1]
to_chat(mob, "<span class='warning'>You feel an off-sensation in your throat.</span>")
activated = 1
/datum/disease2/effect/xenomorph_babel/deactivate(var/mob/living/mob)
if(original_languages.len)
for(var/forgotten in original_languages)
mob.add_language(forgotten)
mob.remove_language(LANGUAGE_XENO)
mob.default_language = old_default
to_chat(mob, "<span class='warning'>Your throat feels normal again.</span>")
activated = 0
/datum/disease2/effect/wendigo_vomit
name = "Gastrointestinal Inflammation"
desc = "Inflames the GI tract of the infected, causing relentless vomitting."
stage = 2
badness = EFFECT_DANGER_HINDRANCE
restricted = 2
chance = 6
max_chance = 12
/datum/disease2/effect/wendigo_vomit/activate(var/mob/living/mob)
if(!ishuman(mob))
return
var/mob/living/carbon/human/H = mob
if(prob(33))
H.vomit(instant = 1)
else
H.vomit()

View File

@@ -605,3 +605,201 @@ datum/disease2/effect/lubefoot/deactivate(var/mob/living/mob)
new_organ.Insert(H)
to_chat(mob, "<span class='warning'>You feel a foreign sensation in your [new_organ.parent_organ].")
/datum/disease2/effect/damage_converter
name = "Toxic Compensation"
desc = "Stimulates cellular growth within the body, causing it to regenerate tissue damage. Repair done by these cells causes toxins to build up in the body."
badness = EFFECT_DANGER_FLAVOR
stage = 3
chance = 10
max_chance = 50
/datum/disease2/effect/damage_converter/activate(var/mob/living/mob)
if(mob.getFireLoss() < mob.getMaxHealth() || mob.getBruteLoss() < mob.getMaxHealth())
var/get_damage = rand(1, 3)
mob.adjustFireLoss(-get_damage)
mob.adjustBruteLoss(-get_damage)
mob.adjustToxLoss(get_damage)
/datum/disease2/effect/cyborg_limbs
name = "Metallica Syndrome"
desc = "Rapidly replaces some organic tissue in the body, causing limbs and other organs to become robotic."
stage = 3
badness = EFFECT_DANGER_HARMFUL
restricted = 2
/datum/disease2/effect/cyborg_limbs/activate(var/mob/living/mob)
if(!ishuman(mob))
return
var/mob/living/carbon/human/H = mob
var/list/valid_external_organs = list()
for(var/datum/organ/external/E in H.organs)
if(!E.is_robotic())
valid_external_organs += E
var/list/valid_internal_organs = list()
for(var/datum/organ/internal/I in H.internal_organs)
if(I.name != "brain" && !I.robotic)
valid_internal_organs += I
if(prob(75) || valid_external_organs.len)
var/datum/organ/external/E = pick(valid_external_organs)
E.robotize()
H.update_body()
else if(valid_internal_organs.len)
var/datum/organ/internal/I = pick(valid_internal_organs)
I.mechanize()
to_chat(mob, "<span class='warning'>You feel a foreign sensation in your [I.parent_organ].")
/datum/disease2/effect/mommi_hallucination
name = "Supermatter Syndrome" //names suck
desc = "Causes the infected to experience engineering-related hallucinations."
stage = 3
badness = EFFECT_DANGER_ANNOYING
restricted = 2
/datum/disease2/effect/mommi_hallucination/activate(var/mob/living/mob)
if(prob(50))
mob << sound('sound/effects/supermatter.ogg')
var/mob/living/silicon/robot/mommi/mommi = /mob/living/silicon/robot/mommi
for(var/mob/living/M in viewers(mob))
if(M == mob)
continue
var/image/crab = image(icon = null)
crab.appearance = initial(mommi.appearance)
crab.icon_state = "mommi-withglow"
crab.loc = M
crab.override = 1
var/client/C = mob.client
if(C)
C.images += crab
var/duration = rand(60 SECONDS, 120 SECONDS)
spawn(duration)
if(C)
C.images.Remove(crab)
var/list/turf_list = list()
for(var/turf/T in spiral_block(get_turf(mob), 40))
if(prob(4))
turf_list += T
if(turf_list.len)
for(var/turf/simulated/floor/T in turf_list)
var/image/supermatter = image('icons/obj/engine.dmi', T ,"darkmatter_shard", ABOVE_HUMAN_PLANE)
var/client/C = mob.client
if(C)
C.images += supermatter
var/duration = rand(60 SECONDS, 120 SECONDS)
spawn(duration)
if(C)
C.images.Remove(supermatter)
/datum/disease2/effect/xenomorph_traits
name = "Plasmatic Adaptation"
desc = "Induces heavy mutation and optimization in the infected's cellular structure. The infected gains several physical abilities and an affinity for plasma."
badness = EFFECT_DANGER_HELPFUL
stage = 3
restricted = 2
var/datum/species/old_species
var/activated
/datum/disease2/effect/xenomorph_traits/activate(var/mob/living/mob)
if(!ishuman(mob))
return
if(activated)
return
var/mob/living/carbon/human/H = mob
var/datum/species/S = H.species
old_species = new S.type
old_species.flags = S.flags
old_species.attack_verb = S.attack_verb
old_species.blood_color = S.blood_color
old_species.punch_damage = S.punch_damage
S.flags |= PLASMA_IMMUNE
S.attack_verb = "claws"
S.blood_color = "#05EE05"
S.punch_damage = 12
H.species = S
H.mutations.Add(M_CLAWS, M_RUN, M_THERMALS)
domutcheck(H,null,MUTCHK_FORCED)
H.UpdateDamageIcon()
H.fixblood()
to_chat(mob, "<span class='sinister'>You feel different.</span>")
activated = 1
/datum/disease2/effect/xenomorph_traits/deactivate(var/mob/living/mob)
if(!ishuman(mob))
return
var/mob/living/carbon/human/H = mob
H.species = old_species
H.change_sight(removing = SEE_MOBS)
H.mutations.Remove(M_CLAWS, M_RUN, M_THERMALS)
domutcheck(H,null,MUTCHK_FORCED)
H.UpdateDamageIcon()
H.fixblood()
to_chat(mob, "<span class='warning'>You feel like your old self again.</span>")
activated = 0
/datum/disease2/effect/wendigo_hallucination
name = "Eldritch Mind Syndrome"
desc = "UNKNOWN"
badness = EFFECT_DANGER_HARMFUL
stage = 3
restricted = 2
var/activated = 0
/datum/disease2/effect/wendigo_hallucination/activate(var/mob/living/mob)
if(!ishuman(mob))
return
var/mob/living/carbon/human/H = mob
H.Jitter(100)
if(!activated)
mob.overlay_fullscreen("wendigoblur", /obj/abstract/screen/fullscreen/snowfall_blizzard)
activated = 1
if(!isskellington(H) && !islich(H)) //ignore skellingtons since they can only eat meat anyway
H.species.chem_flags |= NO_EAT
//creepy sounds copypasted from hallucination code
var/list/possible_sounds = list('sound/effects/ghost.ogg', 'sound/effects/ghost2.ogg', 'sound/effects/heart_beat_single.ogg', 'sound/effects/ear_ring_single.ogg', 'sound/effects/screech.ogg',\
'sound/hallucinations/behind_you1.ogg', 'sound/hallucinations/behind_you2.ogg', 'sound/hallucinations/far_noise.ogg', 'sound/hallucinations/growl1.ogg', 'sound/hallucinations/growl2.ogg',\
'sound/hallucinations/growl3.ogg', 'sound/hallucinations/im_here1.ogg', 'sound/hallucinations/im_here2.ogg', 'sound/hallucinations/i_see_you1.ogg', 'sound/hallucinations/i_see_you2.ogg',\
'sound/hallucinations/look_up1.ogg', 'sound/hallucinations/look_up2.ogg', 'sound/hallucinations/over_here1.ogg', 'sound/hallucinations/over_here2.ogg', 'sound/hallucinations/over_here3.ogg',\
'sound/hallucinations/turn_around1.ogg', 'sound/hallucinations/turn_around2.ogg', 'sound/hallucinations/veryfar_noise.ogg', 'sound/hallucinations/wail.ogg')
mob << pick(possible_sounds)
/datum/disease2/effect/wendigo_hallucination/deactivate(var/mob/living/mob)
mob.clear_fullscreen("wendigoblur", animate = 0)
if(ishuman(mob))
var/mob/living/carbon/human/H = mob
if(!isskellington(H) && !islich(H)) //ignore skellingtons since they can only eat meat anyway
H.species.chem_flags &= ~NO_EAT
activated = 0
/datum/disease2/effect/wendigo_hallucination/affect_mob_voice(var/datum/speech/speech)
var/message = speech.message
message = replacetext(message,"I","we")
message = replacetext(message,"me","us")
speech.message = message

View File

@@ -75,53 +75,6 @@
/datum/disease2/effect/deaf/activate(var/mob/living/mob)
mob.ear_deaf += 20
/datum/disease2/effect/monkey
name = "Monkism Syndrome"
desc = "Causes the infected to rapidly devolve to a lower form of life."
stage = 4
badness = EFFECT_DANGER_DEADLY
var/transformed = FALSE
/datum/disease2/effect/monkey/getcopy(var/datum/disease2/disease/disease)
var/datum/disease2/effect/monkey/new_e = ..(disease)
new_e.transformed = transformed
return new_e
/datum/disease2/effect/monkey/activate(var/mob/living/carbon/human/mob)
if(istype(mob))
transformed = TRUE
var/datum/dna/gene/gene = dna_genes[/datum/dna/gene/monkey]
gene.activate(mob, null, null)
/*
/datum/disease2/effect/monkey/deactivate(var/mob/living/carbon/monkey/mob)
if(istype(mob) && transformed)
var/datum/dna/gene/gene = dna_genes[/datum/dna/gene/monkey]
gene.deactivate(mob, null, null)
*/
/datum/disease2/effect/catbeast
name = "Kingston Syndrome"
desc = "A previously experimental syndrome that found its way into the wild. Causes the infected to mutate into a Tajaran."
stage = 4
badness = EFFECT_DANGER_DEADLY
var/old_species = "Human"
/datum/disease2/effect/catbeast/activate(var/mob/living/mob)
if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob
old_species = h.species.name
if(old_species != "Tajaran")
if(h.set_species("Tajaran"))
h.regenerate_icons()
/*
/datum/disease2/effect/catbeast/deactivate(var/mob/living/mob)
if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob
if(h.species.name == "Tajaran" && old_species != "Tajaran")
if(h.set_species(old_species))
h.regenerate_icons()
*/
/datum/disease2/effect/zombie
name = "Stubborn brain syndrome"
desc = "UNKNOWN"
@@ -133,30 +86,6 @@
var/mob/living/carbon/human/h = mob
h.become_zombie_after_death = 2
/datum/disease2/effect/voxpox
name = "Vox Pox"
desc = "A previously experimental syndrome that found its way into the wild. Causes the infected to mutate into a Vox."
stage = 4
badness = EFFECT_DANGER_DEADLY
var/old_species = "Human"
/datum/disease2/effect/voxpox/activate(var/mob/living/mob)
if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob
old_species = h.species.name
if(old_species != "Vox")
if(h.set_species("Vox"))
h.regenerate_icons()
/*
/datum/disease2/effect/voxpox/deactivate(var/mob/living/mob)
if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob
if(h.species.name == "Vox" && old_species != "Vox")
if(h.set_species(old_species))
h.regenerate_icons()
*/
/datum/disease2/effect/suicide
name = "Suicidal Syndrome"
desc = "Induces clinical depression in the infected, causing them to attempt to take their own life on the spot."
@@ -908,20 +837,6 @@
for(var/i=0,i<iter,i++)
step_towards(S,mob)
/datum/disease2/effect/humanity
name = "Forced Humanity Syndrome"
desc = "A recent development by human supremacists. Causes non-human infected to mutate into a Human."
stage = 4
badness = EFFECT_DANGER_HINDRANCE
var/old_species = "Human"
/datum/disease2/effect/humanity/activate(var/mob/living/mob)
if(istype(mob,/mob/living/carbon/human))
var/mob/living/carbon/human/h = mob
if(!istype(h.species.name, /datum/species/human))
h.set_species("Human")
h.regenerate_icons()
/datum/disease2/effect/emitter
name = "Afflictus Emittus"
desc = "The mutations produced by this symptom cause the infected's eyes to constantly regenerate and emit a straight beam."
@@ -929,7 +844,6 @@
stage = 4
badness = EFFECT_DANGER_HARMFUL
max_multiplier = 3
restricted = 1//symptoms won't randomly mutate into this one
var/announced = FALSE
chance = 4
max_chance = 12
@@ -1103,3 +1017,154 @@
if (!announced)
emitter.visible_message("<span class='danger'>Superheated beams begin to stream right out of \the [emitter]'s eyes!</span>","<span class='danger'>Beams are coming out of your eyes, holy shit!</span>")
announced = TRUE
/datum/disease2/effect/dnaspread
name = "Retrotransposis"
desc = "This symptom transplants the genetic code of the intial vector into new hosts."
badness = EFFECT_DANGER_HARMFUL
stage = 4
var/dna_saved
var/original_name
var/list/original_UI = list()
var/list/original_SE = list()
var/activated = 0
/datum/disease2/effect/dnaspread/activate(var/mob/living/mob)
if(!activated)
to_chat(mob, "<span class='warning'>You don't feel like yourself..</span>")
if(!iscarbon(mob))
return
var/mob/living/carbon/C = mob
if(!dna_saved)
original_name = C.real_name
original_UI = C.dna.UI.Copy()
original_SE = C.dna.SE.Copy()
dna_saved = 1
C.UpdateAppearance(original_UI.Copy())
C.dna.SE = original_SE.Copy()
C.dna.UpdateSE()
C.real_name = original_name
domutcheck(C)
activated = 1
/datum/disease2/effect/dnaspread/deactivate(var/mob/living/mob)
activated = 0
/datum/disease2/effect/dnaspread/getcopy(var/datum/disease2/disease/disease)
var/datum/disease2/effect/dnaspread/new_e = ..(disease)
new_e.original_name = original_name
new_e.original_SE = original_SE
new_e.original_UI = original_UI
new_e.dna_saved = dna_saved
return new_e
////////////////////////////////////////////////
//////// TRANSFORMATION SYMPTOMS /////////////
////////////////////////////////////////////////
/datum/disease2/effect/cyborg
name = "Silicus Syndrome"
desc = "Rapidly replaces the infected's tissue with inorganic matter, causing them to transform into a cyborg."
stage = 4
badness = EFFECT_DANGER_DEADLY
restricted = 2
/datum/disease2/effect/cyborg/activate(var/mob/living/mob)
var/mob/M = mob
M.Robotize()
/datum/disease2/effect/mommi
name = "Autismus Syndrome"
desc = "Rapidly replaces the infected's tissue with inorganic matter. This particular strain seems to cause severe autism in the infected as well."
stage = 4
badness = EFFECT_DANGER_DEADLY
restricted = 2
/datum/disease2/effect/mommi/activate(var/mob/living/mob)
var/mob/M = mob
M.MoMMIfy()
/datum/disease2/effect/xenomorph
name = "Ripley Syndrome"
desc = "Causes the infected to mutate into an alien creature."
stage = 4
badness = EFFECT_DANGER_DEADLY
restricted = 2
/datum/disease2/effect/xenomorph/activate(var/mob/living/mob)
gibs(mob)
to_chat(mob, "<span class = 'danger'>[mob.name] suddenly mutates in a shower of gore!</span>")
var/mob/M = mob
M.Alienize()
/datum/disease2/effect/wendigo
name = "Curse of the Wendigo"
desc = "UNKNOWN"
stage = 4
badness = EFFECT_DANGER_DEADLY
restricted = 2
/datum/disease2/effect/wendigo/activate(var/mob/living/mob)
if(ishuman(mob) || ismonkey(mob))
mob.visible_message("<span class'sinister'>You hear a sickening roar...</span>")
gibs(mob)
var/mob/living/simple_animal/hostile/wendigo/human/W = new /mob/living/simple_animal/hostile/wendigo/human(mob.loc)
W.names += mob.real_name
mob.drop_all()
qdel(mob)
/datum/disease2/effect/catbeast
name = "Kingston Syndrome"
desc = "A previously experimental syndrome that found its way into the wild. Causes the infected to mutate into a Tajaran."
stage = 4
badness = EFFECT_DANGER_DEADLY
/datum/disease2/effect/catbeast/activate(var/mob/living/mob)
if(ishuman(mob) && !iscatbeast(mob))
var/mob/living/carbon/human/H = mob
H.set_species("Tajaran")
H.regenerate_icons()
/datum/disease2/effect/monkey
name = "Monkism Syndrome"
desc = "Causes the infected to rapidly devolve to a lower form of life."
stage = 4
badness = EFFECT_DANGER_DEADLY
/datum/disease2/effect/monkey/activate(var/mob/living/carbon/human/mob)
if(istype(mob))
var/datum/dna/gene/gene = dna_genes[/datum/dna/gene/monkey]
gene.activate(mob, null, null)
/datum/disease2/effect/vox
name = "Vox Pox"
desc = "A previously experimental syndrome that found its way into the wild. Causes the infected to mutate into a Vox."
stage = 4
badness = EFFECT_DANGER_DEADLY
/datum/disease2/effect/vox/activate(var/mob/living/mob)
if(ishuman(mob) && !isvox(mob))
var/mob/living/carbon/human/H = mob
H.set_species("Vox")
H.regenerate_icons()
/datum/disease2/effect/human
name = "Forced Humanity Syndrome"
desc = "A recent development by human supremacists. Causes non-human infected to mutate into a Human."
stage = 4
badness = EFFECT_DANGER_HARMFUL
/datum/disease2/effect/human/activate(var/mob/living/mob)
if(ishuman(mob) && !isjusthuman(mob))
var/mob/living/carbon/human/H = mob
H.set_species("Human")
H.regenerate_icons()

View File

@@ -1,23 +1,5 @@
////////////////////////SPECIAL/////////////////////////////////
/*/datum/disease2/effect/alien
name = "Unidentified Foreign Body"
stage = 4
activate(var/mob/living/carbon/mob)
to_chat(mob, "<span class='warning'>You feel something tearing its way out of your stomach...</span>")
mob.adjustToxLoss(10)
mob.updatehealth()
if(prob(40))
if(mob.client)
mob.client.mob = new/mob/living/carbon/alien/larva(mob.loc)
else
new/mob/living/carbon/alien/larva(mob.loc)
var/datum/disease2/disease/D = mob:virus2
mob:gib()
del D*/
//Vampire Diseased Touch
/datum/disease2/effect/organs/vampire
stage = 1
@@ -31,6 +13,7 @@
stage = 1
restricted = 2//symptoms won't randomly mutate into this one & won't appear in the symptom encyclopedia
/datum/disease2/effect/blob_spores
name = "Blob Spores"
desc = "They seem inert for the most part, but appear to randomly pulsate once in a while."
@@ -42,6 +25,7 @@
max_chance = 100
var/looks = "new"
/datum/disease2/effect/blob_spores/on_death(var/mob/living/carbon/mob)
//first of all is there a blob on top of us
var/turf/T = get_turf(mob)

View File

@@ -218,6 +218,12 @@ var/list/infected_contact_mobs = list()
return 1
return 0
/mob/living/proc/infect_disease2_predefined(var/category, var/forced, var/notes)
if(!global_diseases[category])
return
infect_disease2(global_diseases[category], forced, notes)
//ITEMS
var/list/infected_items = list()

View File

@@ -0,0 +1,125 @@
//Pre-Defined Global Diseases for use by nanites/wendigo/xenomicrobes/ect.
var/list/global_diseases = list()
/proc/create_global_diseases()
for(var/disease_type in subtypesof(/datum/disease2/disease/predefined))
var/datum/disease2/disease/predefined/D = new disease_type
global_diseases[D.category] = D
D.update_global_log()
/datum/disease2/disease/predefined
var/category = ""
/datum/disease2/disease/predefined/New()
antigen = list(pick(antigen_family(ANTIGEN_RARE)))
antigen |= pick(antigen_family(ANTIGEN_RARE))
uniqueID = rand(0,9999)
subID = rand(0,9999)
strength = rand(70,100)
..()
/datum/disease2/disease/predefined/cyborg
form = "Robotic Nanites"
category = DISEASE_CYBORG
infectionchance = 0
infectionchance_base = 0
stage_variance = 0
can_kill = list()
effects = list(
new /datum/disease2/effect/cyborg_warning,
new /datum/disease2/effect/cyborg_vomit,
new /datum/disease2/effect/cyborg_limbs,
new /datum/disease2/effect/cyborg
)
spread = SPREAD_BLOOD
robustness = 100
mutation_modifier = 0
color = "#414240"
pattern = 1
pattern_color = "#ebe7e4"
origin = "Nanites Reagent"
/datum/disease2/disease/predefined/mommi
form = "Robotic Nanites"
category = DISEASE_MOMMI
infectionchance = 0
infectionchance_base = 0
stage_variance = 0
can_kill = list()
effects = list(
new /datum/disease2/effect/mommi_warning,
new /datum/disease2/effect/mommi_shrink,
new /datum/disease2/effect/mommi_hallucination,
new /datum/disease2/effect/mommi
)
spread = SPREAD_BLOOD
robustness = 100
mutation_modifier = 0
color = "#414240"
pattern = 1
pattern_color = "#ebe7e4"
origin = "Autism Nanites Reagent"
/datum/disease2/disease/predefined/xenomorph
form = "Alien Microbes"
category = DISEASE_XENO
infectionchance = 0
infectionchance_base = 0
stage_variance = 0
can_kill = list()
effects = list(
new /datum/disease2/effect/xenomorph_warning,
new /datum/disease2/effect/xenomorph_babel,
new /datum/disease2/effect/xenomorph_traits,
new /datum/disease2/effect/xenomorph
)
spread = SPREAD_BLOOD
robustness = 100
mutation_modifier = 0
color = "#76a843"
pattern = 1
pattern_color = "#5eff00"
origin = "Xenomicrobes Reagent"
/datum/disease2/disease/predefined/wendigo
form = "Malicious Entity"
category = DISEASE_WENDIGO
infectionchance = 0
infectionchance_base = 0
stage_variance = 0
can_kill = list()
effects = list(
new /datum/disease2/effect/wendigo_warning,
new /datum/disease2/effect/wendigo_vomit,
new /datum/disease2/effect/wendigo_hallucination,
new /datum/disease2/effect/wendigo
)
spread = SPREAD_BLOOD
robustness = 100
mutation_modifier = 0
color = "#353535"
pattern = 2
pattern_color = "#680b0b"
origin = "Wendigo Meat"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -286,7 +286,6 @@
#include "code\datums\ui_icons.dm"
#include "code\datums\uplink_item.dm"
#include "code\datums\diseases\appendicitis.dm"
#include "code\datums\diseases\beesease.dm"
#include "code\datums\diseases\brainrot.dm"
#include "code\datums\diseases\cold.dm"
#include "code\datums\diseases\cold9.dm"
@@ -2603,6 +2602,7 @@
#include "code\modules\virus2\isolator.dm"
#include "code\modules\virus2\items_devices.dm"
#include "code\modules\virus2\pathogen_cloud.dm"
#include "code\modules\virus2\predefined.dm"
#include "code\modules\virus2\effect\effect.dm"
#include "code\modules\virus2\effect\stage_1.dm"
#include "code\modules\virus2\effect\stage_2.dm"