From 1c5ca01daeeb7f5f7ce8b1bdcdefb69e2940ecb9 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 10 Jan 2015 02:30:27 -0500 Subject: [PATCH] Restricts Gibbingtons, Suicide, and Monkism syndromes Restricts Gibbingtons, Suicide, and Monkism syndromes from even greater diseases. Admins can still generate diseases with these syndromes through secrets. Fixes virus events potentially having people share the same virus datum. --- code/game/gamemodes/epidemic/epidemic.dm | 2 +- code/modules/admin/admin_verbs.dm | 16 +++++++++------- code/modules/events/viral_infection.dm | 9 +++++---- code/modules/virus2/disease2.dm | 19 ++++++++++--------- code/modules/virus2/effect.dm | 8 ++++---- code/modules/virus2/helpers.dm | 5 ++--- 6 files changed, 31 insertions(+), 28 deletions(-) diff --git a/code/game/gamemodes/epidemic/epidemic.dm b/code/game/gamemodes/epidemic/epidemic.dm index 4a0712c712..9964a37813 100644 --- a/code/game/gamemodes/epidemic/epidemic.dm +++ b/code/game/gamemodes/epidemic/epidemic.dm @@ -113,7 +113,7 @@ world.Reboot() var/datum/disease2/disease/lethal = new - lethal.makerandom(1) + lethal.makerandom(3) lethal.infectionchance = 5 // the more doctors, the more will be infected diff --git a/code/modules/admin/admin_verbs.dm b/code/modules/admin/admin_verbs.dm index 8d9e62cdcf..6548454789 100644 --- a/code/modules/admin/admin_verbs.dm +++ b/code/modules/admin/admin_verbs.dm @@ -608,12 +608,14 @@ var/list/admin_verbs_mentor = list( var/datum/disease2/disease/D = new /datum/disease2/disease() - var/greater = ((input("Is this a lesser or greater disease?", "Give Disease") in list("Lesser", "Greater")) == "Greater") - - D.makerandom(greater) - if (!greater) - D.infectionchance = 1 + var/severity = 1 + var/greater = input("Is this a lesser, greater, or badmin disease?", "Give Disease") in list("Lesser", "Greater", "Badmin") + switch(greater) + if ("Lesser") severity = 1 + if ("Greater") severity = 2 + if ("Badmin") severity = 99 + D.makerandom(severity) D.infectionchance = input("How virulent is this disease? (1-100)", "Give Disease", D.infectionchance) as num if(istype(T,/mob/living/carbon/human)) @@ -626,8 +628,8 @@ var/list/admin_verbs_mentor = list( infect_virus2(T,D,1) feedback_add_details("admin_verb","GD2") //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc! - log_admin("[key_name(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].") - message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [(greater)? "greater":"lesser"] disease2 with infection chance [D.infectionchance].", 1) + log_admin("[key_name(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].") + message_admins("\blue [key_name_admin(usr)] gave [key_name(T)] a [greater] disease2 with infection chance [D.infectionchance].", 1) /client/proc/make_sound(var/obj/O in world) // -- TLE set category = "Special Verbs" diff --git a/code/modules/events/viral_infection.dm b/code/modules/events/viral_infection.dm index 87c55460ce..29daed2773 100644 --- a/code/modules/events/viral_infection.dm +++ b/code/modules/events/viral_infection.dm @@ -10,10 +10,10 @@ datum/event/viral_infection/setup() 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 + var/strength = 1 //whether the disease is of the greater or lesser variety if (severity >= EVENT_LEVEL_MAJOR && prob(50)) - greater = 1 - D.makerandom(greater) + strength = 2 + D.makerandom(strength) viruses += D datum/event/viral_infection/announce() @@ -32,6 +32,7 @@ datum/event/viral_infection/start() severity = max(EVENT_LEVEL_MUNDANE, severity - 1) var/actual_severity = severity * rand(1, 3) while(actual_severity > 0 && candidates.len) - infect_mob(candidates[1], pick(viruses)) + var/datum/disease2/disease/D = pick(viruses) + infect_mob(candidates[1], D.getcopy()) candidates.Remove(candidates[1]) actual_severity-- diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index 09b6c80ee6..c7a9b8e375 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -16,20 +16,21 @@ uniqueID = rand(0,10000) ..() -/datum/disease2/disease/proc/makerandom(var/greater=0) +/datum/disease2/disease/proc/makerandom(var/severity=1) for(var/i=1 ; i <= max_stage ; i++ ) var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder holder.stage = i - if(greater) - holder.getrandomeffect(2) - else - holder.getrandomeffect() + holder.getrandomeffect(severity) effects += holder uniqueID = rand(0,10000) - if (greater) - infectionchance = rand(60,90) - else - infectionchance = 1 + switch(severity) + if(1) + infectionchance = 1 + if(2) + infectionchance = rand(10,50) + else + infectionchance = rand(60,90) + antigen |= text2num(pick(ANTIGENS)) antigen |= text2num(pick(ANTIGENS)) spreadtype = prob(70) ? "Airborne" : "Contact" diff --git a/code/modules/virus2/effect.dm b/code/modules/virus2/effect.dm index 82edfb8049..22d0a49e0a 100644 --- a/code/modules/virus2/effect.dm +++ b/code/modules/virus2/effect.dm @@ -33,7 +33,7 @@ multiplier = rand(1,effect.maxm) /datum/disease2/effectholder/proc/majormutate() - getrandomeffect(2) + getrandomeffect(3) //////////////////////////////////////////////////////////////// ////////////////////////EFFECTS///////////////////////////////// @@ -66,7 +66,7 @@ /datum/disease2/effect/gibbingtons name = "Gibbingtons Syndrome" stage = 4 - badness = 2 + badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) mob.gib() @@ -88,7 +88,7 @@ /datum/disease2/effect/monkey name = "Monkism Syndrome" stage = 4 - badness = 2 + badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) if(istype(mob,/mob/living/carbon/human)) var/mob/living/carbon/human/h = mob @@ -97,7 +97,7 @@ /datum/disease2/effect/suicide name = "Suicidal Syndrome" stage = 4 - badness = 2 + badness = 3 activate(var/mob/living/carbon/mob,var/multiplier) mob.suiciding = 1 //instead of killing them instantly, just put them at -175 health and let 'em gasp for a while diff --git a/code/modules/virus2/helpers.dm b/code/modules/virus2/helpers.dm index e3da0e5614..4ef8e3bbf4 100644 --- a/code/modules/virus2/helpers.dm +++ b/code/modules/virus2/helpers.dm @@ -104,14 +104,13 @@ proc/airborne_can_reach(turf/source, turf/target) //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 + D.makerandom(1) 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) + D.makerandom(2) infect_mob(M, D) //Fancy prob() function.