From 6e9aa2f7df3e29d2815c04b60c8c2ba8de069ef4 Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Sun, 30 Aug 2020 23:05:22 -0700 Subject: [PATCH] Adds swab for netherworld critters (#53201) Adds netherworld critters as a swab. They take primarily maintenance, lavaland, and bartending reagents, they're supplemented by all geyser chems and minorly chemistry, and they are suppressed by any kind of generic growing meat (liquid gibs, nutriment, protein and peptides) The abberant cells randomly pick a netherworld mob every time they are created. the big jackpot here is migo for the reasonable health and high damage, and the whiff are blank bodies for having good health but awful damage. Why It's Good For The Game Players love migos and other netherworld critters are aight. They're fairly strong, and so have a medium amount of reagents. Tried to get funky with it since they're supposed to be odd creatures. (New swab for netherworld critters! Make sure you put them into a different vat system than your other ones, as they do not react well with normal reagents!) Co-authored-by: Jared-Fogle <35135081+Jared-Fogle@users.noreply.github.com> Co-authored-by: LemonInTheDark <58055496+LemonInTheDark@users.noreply.github.com> --- code/__DEFINES/research.dm | 1 + code/_globalvars/lists/xenobiology.dm | 1 + .../objects/structures/lavaland/geyser.dm | 4 +++ .../simple_animal/hostile/netherworld.dm | 4 +++ .../vatgrowing/samples/cell_lines/common.dm | 29 +++++++++++++++++++ 5 files changed, 39 insertions(+) diff --git a/code/__DEFINES/research.dm b/code/__DEFINES/research.dm index c385e467e8c..fa5f74f3ad1 100644 --- a/code/__DEFINES/research.dm +++ b/code/__DEFINES/research.dm @@ -115,6 +115,7 @@ #define CELL_LINE_TABLE_SLIME "cell_line_slime_table" #define CELL_LINE_TABLE_SNAKE "cell_line_snake_table" #define CELL_LINE_TABLE_VATBEAST "cell_line_vatbeast_table" +#define CELL_LINE_TABLE_NETHER "cell_line_nether_table" ///All cell virus types #define CELL_VIRUS_TABLE_GENERIC "cell_virus_generic_table" diff --git a/code/_globalvars/lists/xenobiology.dm b/code/_globalvars/lists/xenobiology.dm index 496107dc5ed..59460fe6693 100644 --- a/code/_globalvars/lists/xenobiology.dm +++ b/code/_globalvars/lists/xenobiology.dm @@ -24,6 +24,7 @@ GLOBAL_LIST_INIT_TYPED(cell_line_tables, /list, list( CELL_LINE_TABLE_SLIME = list(/datum/micro_organism/cell_line/slime = 1), CELL_LINE_TABLE_SNAKE = list(/datum/micro_organism/cell_line/snake = 1), CELL_LINE_TABLE_VATBEAST = list(/datum/micro_organism/cell_line/vat_beast = 1), + CELL_LINE_TABLE_NETHER = list(/datum/micro_organism/cell_line/netherworld = 1), CELL_LINE_TABLE_CLOWN = list(/datum/micro_organism/cell_line/clown/bananaclown = 1, /datum/micro_organism/cell_line/clown/fleshclown = 1, /datum/micro_organism/cell_line/clown/longclown = 1) )) diff --git a/code/game/objects/structures/lavaland/geyser.dm b/code/game/objects/structures/lavaland/geyser.dm index eb4e3b90164..96d3bd24f16 100644 --- a/code/game/objects/structures/lavaland/geyser.dm +++ b/code/game/objects/structures/lavaland/geyser.dm @@ -14,6 +14,10 @@ var/max_volume = 500 var/start_volume = 50 +/obj/structure/geyser/Initialize(mapload) //if xenobio wants to bother, nethermobs are around geysers. + . = ..() + AddElement(/datum/element/swabable, CELL_LINE_TABLE_NETHER, CELL_VIRUS_TABLE_GENERIC, 1, 5) + /obj/structure/geyser/proc/start_chemming() activated = TRUE create_reagents(max_volume, DRAINABLE) diff --git a/code/modules/mob/living/simple_animal/hostile/netherworld.dm b/code/modules/mob/living/simple_animal/hostile/netherworld.dm index 209eebe5bc4..6f370179463 100644 --- a/code/modules/mob/living/simple_animal/hostile/netherworld.dm +++ b/code/modules/mob/living/simple_animal/hostile/netherworld.dm @@ -27,6 +27,10 @@ if(phaser) teleport = new teleport.Grant(src) + add_cell_sample() + +/mob/living/simple_animal/hostile/netherworld/add_cell_sample() + AddElement(/datum/element/swabable, CELL_LINE_TABLE_NETHER, CELL_VIRUS_TABLE_GENERIC_MOB, 1, 0) /datum/action/innate/creature background_icon_state = "bg_default" diff --git a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm index fe8ec9f28d8..0203790c3ac 100644 --- a/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm +++ b/code/modules/research/xenobiology/vatgrowing/samples/cell_lines/common.dm @@ -374,6 +374,35 @@ . = ..() qdel(vat) +//randomizes from the netherworld pool! +/datum/micro_organism/cell_line/netherworld + desc = "Aberrant residue" + required_reagents = list(//theme here: very odd requirements + /datum/reagent/water/hollowwater,//geyser reagent, so plentiful when found + /datum/reagent/consumable/ethanol/wizz_fizz, //EZ bartender drink, like brainless + /datum/reagent/yuck) //since the other two are easy to make tons of, this is kind of a limiter + + supplementary_reagents = list( //all of these are just geyser stuff, rated by their rarity + /datum/reagent/wittel = 10, //stupid rare + /datum/reagent/medicine/omnizine/protozine = 5, + /datum/reagent/plasma_oxide = 3, + /datum/reagent/clf3 = 1)//since this is also chemistry it's worth near nothing + + suppressive_reagents = list(//generics you would regularly put in a vat kill abberant residue + /datum/reagent/consumable/nutriment/peptides = -6, + /datum/reagent/consumable/nutriment/protein = -4, + /datum/reagent/consumable/nutriment = -3, + /datum/reagent/liquidgibs = -2 + ) + virus_suspectibility = 0 + resulting_atoms = list(/mob/living/simple_animal/hostile/netherworld = 1) + +/datum/micro_organism/cell_line/netherworld/succeed_growing(obj/machinery/plumbing/growing_vat/vat) + var/random_result = pick(typesof(/mob/living/simple_animal/hostile/netherworld)) //i looked myself, pretty much all of them are reasonably strong and somewhat on the same level. except migo is the jackpot and the blank body is whiff. + resulting_atoms = list() + resulting_atoms[random_result] = 1 + return ..() + /datum/micro_organism/cell_line/clown/fuck_up_growing(var/obj/machinery/plumbing/growing_vat/vat) vat.visible_message("The biological sample in [vat] seems to have created something horrific!") QDEL_NULL(vat.biological_sample) //Kill off the sample, we're done