mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-08-29 15:08:34 +01:00
Fixes major virus event generating lesser viruses, makes lesser viruses actually less severe
Makes more of a distinction between lesser and greater viruses by restricting lesser viruses to only have the "Nil" syndrome for stage 4.
This commit is contained in:
@@ -1,11 +1,27 @@
|
||||
datum/event/viral_infection
|
||||
var/list/viruses = list()
|
||||
|
||||
datum/event/viral_infection/setup()
|
||||
announceWhen = rand(0, 3000)
|
||||
endWhen = announceWhen + 1
|
||||
|
||||
//generate 1-3 viruses. This way there's an upper limit on how many individual diseases need to be cured if many people are initially infected
|
||||
var/num_diseases = rand(1,3)
|
||||
for (var/i=0, i < num_diseases, i++)
|
||||
var/datum/disease2/disease/D = new /datum/disease2/disease
|
||||
|
||||
var/greater = 0 //whether the disease is of the greater or lesser variety
|
||||
if (severity >= EVENT_LEVEL_MAJOR && prob(50))
|
||||
greater = 1
|
||||
D.makerandom(greater)
|
||||
viruses += D
|
||||
|
||||
datum/event/viral_infection/announce()
|
||||
command_announcement.Announce("Confirmed outbreak of level five biohazard aboard [station_name()]. All personnel must contain the outbreak.", "Biohazard Alert", new_sound = 'sound/AI/outbreak5.ogg')
|
||||
|
||||
datum/event/viral_infection/start()
|
||||
if(!viruses.len) return
|
||||
|
||||
var/list/candidates = list() //list of candidate keys
|
||||
for(var/mob/living/carbon/human/G in player_list)
|
||||
if(G.client && G.stat != DEAD)
|
||||
@@ -13,9 +29,9 @@ datum/event/viral_infection/start()
|
||||
if(!candidates.len) return
|
||||
candidates = shuffle(candidates)//Incorporating Donkie's list shuffle
|
||||
|
||||
severity = severity == 1 ? 1 : severity - 1
|
||||
severity = max(EVENT_LEVEL_MUNDANE, severity - 1)
|
||||
var/actual_severity = severity * rand(1, 3)
|
||||
while(actual_severity > 0 && candidates.len)
|
||||
infect_mob_random_lesser(candidates[1])
|
||||
infect_mob(candidates[1], pick(viruses))
|
||||
candidates.Remove(candidates[1])
|
||||
actual_severity--
|
||||
|
||||
@@ -26,7 +26,10 @@
|
||||
holder.getrandomeffect()
|
||||
effects += holder
|
||||
uniqueID = rand(0,10000)
|
||||
infectionchance = rand(60,90)
|
||||
if (greater)
|
||||
infectionchance = rand(60,90)
|
||||
else
|
||||
infectionchance = 1
|
||||
antigen |= text2num(pick(ANTIGENS))
|
||||
antigen |= text2num(pick(ANTIGENS))
|
||||
spreadtype = prob(70) ? "Airborne" : "Contact"
|
||||
|
||||
@@ -56,6 +56,13 @@
|
||||
|
||||
////////////////////////STAGE 4/////////////////////////////////
|
||||
|
||||
/datum/disease2/effect/nothing
|
||||
name = "Nil Syndrome"
|
||||
stage = 4
|
||||
badness = 1
|
||||
activate()
|
||||
return
|
||||
|
||||
/datum/disease2/effect/gibbingtons
|
||||
name = "Gibbingtons Syndrome"
|
||||
stage = 4
|
||||
@@ -67,12 +74,14 @@
|
||||
name = "Radian's Syndrome"
|
||||
stage = 4
|
||||
maxm = 3
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.radiation += (2*multiplier)
|
||||
|
||||
/datum/disease2/effect/deaf
|
||||
name = "Dead Ear Syndrome"
|
||||
stage = 4
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.ear_deaf += 20
|
||||
|
||||
@@ -101,12 +110,14 @@
|
||||
/datum/disease2/effect/killertoxins
|
||||
name = "Toxification Syndrome"
|
||||
stage = 4
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.adjustToxLoss(15*multiplier)
|
||||
|
||||
/datum/disease2/effect/dna
|
||||
name = "Reverse Pattern Syndrome"
|
||||
stage = 4
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.bodytemperature = max(mob.bodytemperature, 350)
|
||||
scramble(0,mob,10)
|
||||
@@ -115,6 +126,7 @@
|
||||
/datum/disease2/effect/organs
|
||||
name = "Shutdown Syndrome"
|
||||
stage = 4
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if(istype(mob, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = mob
|
||||
@@ -140,6 +152,7 @@
|
||||
/datum/disease2/effect/immortal
|
||||
name = "Longevity Syndrome"
|
||||
stage = 4
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if(istype(mob, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = mob
|
||||
@@ -157,11 +170,10 @@
|
||||
var/backlash_amt = 5*multiplier
|
||||
mob.apply_damages(backlash_amt,backlash_amt,backlash_amt,backlash_amt)
|
||||
|
||||
////////////////////////STAGE 3/////////////////////////////////
|
||||
|
||||
/datum/disease2/effect/bones
|
||||
name = "Fragile Bones Syndrome"
|
||||
stage = 4
|
||||
badness = 2
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
if(istype(mob, /mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = mob
|
||||
@@ -174,6 +186,8 @@
|
||||
for (var/datum/organ/external/E in H.organs)
|
||||
E.min_broken_damage = initial(E.min_broken_damage)
|
||||
|
||||
////////////////////////STAGE 3/////////////////////////////////
|
||||
|
||||
/datum/disease2/effect/toxins
|
||||
name = "Hyperacidity"
|
||||
stage = 3
|
||||
@@ -239,7 +253,6 @@
|
||||
activate(var/mob/living/carbon/mob,var/multiplier)
|
||||
mob.apply_damage(2, CLONE)
|
||||
|
||||
|
||||
/datum/disease2/effect/groan
|
||||
name = "Groaning Syndrome"
|
||||
stage = 3
|
||||
|
||||
@@ -96,20 +96,23 @@ proc/airborne_can_reach(turf/source, turf/target)
|
||||
M.virus2["[D.uniqueID]"] = D
|
||||
M.hud_updateflag |= 1 << STATUS_HUD
|
||||
|
||||
//Infects mob M with disease D
|
||||
/proc/infect_mob(var/mob/living/carbon/M, var/datum/disease2/disease/D)
|
||||
infect_virus2(M,D,1)
|
||||
M.hud_updateflag |= 1 << STATUS_HUD
|
||||
|
||||
//Infects mob M with random lesser disease, if he doesn't have one
|
||||
/proc/infect_mob_random_lesser(var/mob/living/carbon/M)
|
||||
var/datum/disease2/disease/D = new /datum/disease2/disease
|
||||
D.makerandom()
|
||||
D.infectionchance = 1
|
||||
infect_virus2(M,D,1)
|
||||
M.hud_updateflag |= 1 << STATUS_HUD
|
||||
infect_mob(M, D)
|
||||
|
||||
//Infects mob M with random greated disease, if he doesn't have one
|
||||
/proc/infect_mob_random_greater(var/mob/living/carbon/M)
|
||||
var/datum/disease2/disease/D = new /datum/disease2/disease
|
||||
D.makerandom(1)
|
||||
infect_virus2(M,D,1)
|
||||
M.hud_updateflag |= 1 << STATUS_HUD
|
||||
infect_mob(M, D)
|
||||
|
||||
//Fancy prob() function.
|
||||
/proc/dprob(var/p)
|
||||
|
||||
Reference in New Issue
Block a user