diff --git a/code/modules/virus2/centrifuge.dm b/code/modules/virus2/centrifuge.dm index 4cfb570a8d..47ad09a932 100644 --- a/code/modules/virus2/centrifuge.dm +++ b/code/modules/virus2/centrifuge.dm @@ -189,7 +189,7 @@ if(virus.len > 0) for (var/ID in virus) var/datum/disease2/disease/V = virus[ID] - P.info += "[V.name()]
" + P.info += "stamm #[add_zero("[V.uniqueID]", 4)]
" // CHOMPEdit - Making sure to not show the name at first! else P.info += "None
" diff --git a/code/modules/virus2/disease2.dm b/code/modules/virus2/disease2.dm index e8a275e838..9fb5ddf8d6 100644 --- a/code/modules/virus2/disease2.dm +++ b/code/modules/virus2/disease2.dm @@ -12,6 +12,7 @@ var/max_stage = 4 var/list/affected_species = list(SPECIES_HUMAN,SPECIES_UNATHI,SPECIES_SKRELL,SPECIES_TAJ) var/resistance = 10 // % chance a disease will resist cure, up to 100 + var/name // CHOMPEdit - For custom built diseases. /datum/disease2/disease/New() uniqueID = rand(0,10000) @@ -149,6 +150,7 @@ /datum/disease2/disease/proc/majormutate() uniqueID = rand(0,10000) + name = null // CHOMPEdit - Not the same one anymore. var/datum/disease2/effectholder/holder = pick(effects) var/list/exclude = list() for(var/datum/disease2/effectholder/D in effects) @@ -172,6 +174,7 @@ disease.stageprob = stageprob disease.antigen = antigen disease.uniqueID = uniqueID + disease.name = name // CHOMPEdit - Copy our name as well. disease.resistance = resistance disease.affected_species = affected_species.Copy() for(var/datum/disease2/effectholder/holder in effects) @@ -215,7 +218,10 @@ var/global/list/virusDB = list() /datum/disease2/disease/proc/name() - .= "stamm #[add_zero("[uniqueID]", 4)]" + if(name) // CHOMPEdit - Lets use our name + .= "[name]" + else // CHOMPEdit - ...unless we're an undiscovered disease. + .= "stamm #[add_zero("[uniqueID]", 4)]" if ("[uniqueID]" in virusDB) var/datum/data/record/V = virusDB["[uniqueID]"] .= V.fields["name"] diff --git a/modular_chomp/code/modules/event/event_container_ch.dm b/modular_chomp/code/modules/event/event_container_ch.dm index 1841f89ee0..44331fa67b 100644 --- a/modular_chomp/code/modules/event/event_container_ch.dm +++ b/modular_chomp/code/modules/event/event_container_ch.dm @@ -83,7 +83,7 @@ // Temporary power failure, but mitigatead by subgrids new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grid Check", /datum/event/grid_check, 0, list(ASSIGNMENT_SCIENTIST = 10, ASSIGNMENT_ENGINEER = 25), 1), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Grub Infestation", /datum/event/grub_infestation, -20, list(ASSIGNMENT_SECURITY = 40, ASSIGNMENT_ENGINEER = 40), 1), - new /datum/event_meta(EVENT_LEVEL_MODERATE, "Infected Room", /datum/event/infectedroom, -30, list(ASSIGNMENT_MEDICAL = 30, ASSIGNMENT_JANITOR = 10), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)), + new /datum/event_meta(EVENT_LEVEL_MODERATE, "Infected Room", /datum/event/infectedroom, -30, list(ASSIGNMENT_MEDICAL = 30, ASSIGNMENT_JANITOR = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)), // Pure RP fun, no mechanical effects. new /datum/event_meta(EVENT_LEVEL_MODERATE, "Ion Storm", /datum/event/ionstorm, 0, list(ASSIGNMENT_AI = 80, ASSIGNMENT_CYBORG = 50, ASSIGNMENT_ENGINEER = 15, ASSIGNMENT_SCIENTIST = 5), min_jobs = list(ASSIGNMENT_AI = 1)), new /datum/event_meta(EVENT_LEVEL_MODERATE, "Jellyfish School", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1), @@ -127,7 +127,7 @@ new /datum/event_meta(EVENT_LEVEL_MAJOR, "Carp Migration", /datum/event/carp_migration, -110, list(ASSIGNMENT_SECURITY = 50, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10), 1, min_jobs = list(ASSIGNMENT_SECURITY = 3)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Exotic Horde Infestation", /datum/event/highdangerinfestation, -50, list(ASSIGNMENT_ENGINEER = 20, ASSIGNMENT_SCIENCE = 5, ASSIGNMENT_ANY = 2)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Horde Infestation", /datum/event/horde_infestation, -60, list(ASSIGNMENT_SECURITY = 20, ASSIGNMENT_HOS = 10, ASSIGNMENT_WARDEN = 10, ASSIGNMENT_ANY = 3), 0), - new /datum/event_meta(EVENT_LEVEL_MAJOR, "Infected Room", /datum/event/infectedroom, -50, list(ASSIGNMENT_MEDICAL = 25, ASSIGNMENT_JANITOR = 10), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)), + new /datum/event_meta(EVENT_LEVEL_MAJOR, "Infected Room", /datum/event/infectedroom, -50, list(ASSIGNMENT_MEDICAL = 25, ASSIGNMENT_JANITOR = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_MEDICAL = 2)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Jellyfish Migration", /datum/event/jellyfish_migration, 5, list(ASSIGNMENT_ANY = 1, ASSIGNMENT_SECURITY = 5, ASSIGNMENT_MEDICAL = 3), 1), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meaty Ores Wave", /datum/event/meteor_wave/meatyores, -90, list(ASSIGNMENT_ENGINEER = 50, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), new /datum/event_meta(EVENT_LEVEL_MAJOR, "Meteor Wave", /datum/event/meteor_wave, -90, list(ASSIGNMENT_ENGINEER = 50, ASSIGNMENT_MEDICAL = 10, ASSIGNMENT_ANY = 1), 1, min_jobs = list(ASSIGNMENT_ENGINEER = 1)), diff --git a/modular_chomp/code/modules/event/infectedroom.dm b/modular_chomp/code/modules/event/infectedroom.dm index ef17dd22e8..32d6b9fc65 100644 --- a/modular_chomp/code/modules/event/infectedroom.dm +++ b/modular_chomp/code/modules/event/infectedroom.dm @@ -8,19 +8,56 @@ /area/shuttle, /area/crew_quarters, /area/holodeck, - /area/engineering/engine_room + /area/engineering/engine_room) + + var/commondisease = list( + "Friday Fever" = list( + /datum/disease2/effect/choreomania, + /datum/disease2/effect/spin, + /datum/disease2/effect/flip, + /datum/disease2/effect/scream), + "Common Cold" = list( + /datum/disease2/effect/sneeze, + /datum/disease2/effect/cough, + /datum/disease2/effect/fridge, + /datum/disease2/effect/drowsness), + "Brain Bloat" = list( + /datum/disease2/effect/invisible, + /datum/disease2/effect/headache, + /datum/disease2/effect/telepathic, + /datum/disease2/effect/nothing + ), + "Glutton's Gut" = list( + /datum/disease2/effect/drool, + /datum/disease2/effect/hungry, + /datum/disease2/effect/pica, + /datum/disease2/effect/nothing + ), + "Motor System Impairment" = list( + /datum/disease2/effect/twitch, + /datum/disease2/effect/jellylegs, + /datum/disease2/effect/spin, + /datum/disease2/effect/groan + ) ) /datum/event/infectedroom/setup() announceWhen = rand(0, 3000) endWhen = announceWhen + 1 var/list/area/affected_area = get_station_areas(excluded) + var/chosenvirus = pick(commondisease) if(severity == EVENT_LEVEL_MAJOR) - virus.makerandom(rand(2,3)) + if(prob(75)) + virus.makerandom(rand(2,3)) + else + virus.makedisease(commondisease[chosenvirus], rand(2,3), chosenvirus) infected_tiles = rand(4, 8) else if(severity == EVENT_LEVEL_MODERATE) - virus.makerandom(2) + if(prob(50)) + virus.makerandom(2) + else + virus.makedisease(commondisease[chosenvirus], 2, chosenvirus) infected_tiles = rand(3, 6) else virus.makerandom(1) diff --git a/modular_chomp/code/modules/virus2/disease2.dm b/modular_chomp/code/modules/virus2/disease2.dm new file mode 100644 index 0000000000..0f21c5097a --- /dev/null +++ b/modular_chomp/code/modules/virus2/disease2.dm @@ -0,0 +1,55 @@ + /* + To make a custom disease, make a list with 4 symptoms, give it the severity and a name if you wish. + This is mostly useful for mapping, events or some mobs. + Example custom virus: + + var/datum/disease2/disease/virus = new + + virus.makedisease(list( + /datum/disease2/effect/invisible, + /datum/disease2/effect/invisible, + /datum/disease2/effect/invisible, + /datum/disease2/effect/invisible + ), 2, "Invis") + + var/obj/effect/decal/cleanable/mucus/mapped/M + M.virus2[1] = virus.getcopy() + + This will create a disease without effects, mildly infectious and with "Invis" as name, + then added to some mucus on the ground for out dear explo team to step on it and get infected. + + */ +/datum/disease2/disease/proc/makedisease(symptom, severity, dname) + for(var/i in 1 to 4) + var/datum/disease2/effectholder/holder = new /datum/disease2/effectholder + var/Etype = symptom[i] + holder.stage = i + holder.effect = new Etype() + holder.effect.generate() + holder.chance = rand(0,holder.effect.chance_maxm) + holder.multiplier = rand(1,holder.effect.maxm) + effects += holder + + if(dname) + name = "[dname]" + + uniqueID = rand(0,10000) + + switch(severity) + if(1) + infectionchance = 1 + if(2) + infectionchance = rand(15,25) + else + infectionchance = rand(60,90) + + antigen = list(pick(ALL_ANTIGENS)) + antigen |= pick(ALL_ANTIGENS) + spreadtype = prob(70) ? "Airborne" : "Contact" + resistance = rand(15,70) + + if(severity >= 2 && prob(33)) + resistance += 10 + + if(GLOB.all_species.len) + affected_species = get_infectable_species() diff --git a/vorestation.dme b/vorestation.dme index d258b85685..b7680042c1 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -4940,6 +4940,7 @@ #include "modular_chomp\code\modules\tickets\tickets.dm" #include "modular_chomp\code\modules\tickets\tickets_player_ui.dm" #include "modular_chomp\code\modules\tickets\tickets_ui.dm" +#include "modular_chomp\code\modules\virus2\disease2.dm" #include "modular_chomp\code\modules\virus2\effect.dm" #include "modular_chomp\code\modules\vore\eating\exportpanel_ch.dm" #include "modular_chomp\code\modules\vore\resizing\resize.dm"