mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-24 05:30:05 +01:00
Organ Growing Kit | Coroner Cytology Cargo Content (1/2) (#92108)
Co-authored-by: MrMelbert <51863163+MrMelbert@users.noreply.github.com> Co-authored-by: SmArtKar <44720187+SmArtKar@users.noreply.github.com>
This commit is contained in:
co-authored by
MrMelbert
SmArtKar
parent
fc240dc1d1
commit
43fc75facb
@@ -5,15 +5,26 @@
|
||||
icon = 'icons/obj/science/vatgrowing.dmi'
|
||||
icon_state = "biopsy"
|
||||
worn_icon_state = "biopsy"
|
||||
base_icon_state = "biopsy"
|
||||
/// Whether or not we can swab objects
|
||||
var/can_swap_objects = FALSE
|
||||
|
||||
///Adds the swabbing component to the biopsy tool
|
||||
/obj/item/biopsy_tool/Initialize(mapload)
|
||||
. = ..()
|
||||
AddComponent(/datum/component/swabbing, FALSE, FALSE, TRUE, CALLBACK(src, PROC_REF(update_swab_icon)), max_items = 1)
|
||||
|
||||
AddComponent(/datum/component/swabbing, can_swap_objects, FALSE, TRUE, CALLBACK(src, PROC_REF(update_swab_icon)), max_items = 1)
|
||||
|
||||
/obj/item/biopsy_tool/proc/update_swab_icon(list/swabbed_items)
|
||||
if(LAZYLEN(swabbed_items))
|
||||
icon_state = "biopsy_full"
|
||||
icon_state = base_icon_state + "_full"
|
||||
else
|
||||
icon_state = "biopsy"
|
||||
icon_state = base_icon_state
|
||||
|
||||
/obj/item/biopsy_tool/organ
|
||||
name = "tissue biopsy tool"
|
||||
desc = "Used to retrieve cell lines from organ tissue and organisms. Don't worry, it won't sting."
|
||||
icon_state = "biopsy_organ"
|
||||
base_icon_state = "biopsy_organ"
|
||||
|
||||
can_swap_objects = TRUE
|
||||
|
||||
|
||||
@@ -120,6 +120,9 @@
|
||||
balloon_alert(user, "dish removed")
|
||||
return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN
|
||||
|
||||
/obj/structure/microscope/unanchored
|
||||
anchored = FALSE
|
||||
|
||||
/datum/crafting_recipe/microscope
|
||||
name = "Microscope"
|
||||
result = /obj/structure/microscope
|
||||
|
||||
@@ -112,6 +112,7 @@
|
||||
if(vat_creature.mutate())
|
||||
return
|
||||
mutate_color(thing)
|
||||
SEND_SIGNAL(vat.biological_sample, COMSIG_SAMPLE_DEPOSITED, thing)
|
||||
|
||||
///Overriden to show more info like needs, supplementary and supressive reagents and also growth.
|
||||
/datum/micro_organism/cell_line/get_details(show_details)
|
||||
@@ -137,23 +138,30 @@
|
||||
var/hue_shift = 1
|
||||
//This affix is added to the name of the atom, to help players understand and converse about the different rarity levels.
|
||||
var/rarity_affix = "glitched"
|
||||
// for adding some unique effects for subtypes, should you wish to do so
|
||||
var/strength_factor = 1
|
||||
|
||||
switch(rand(1, 100))
|
||||
if(1 to 35) //35% chance : painted
|
||||
hue_shift = 0.15
|
||||
rarity_affix = "painted"
|
||||
strength_factor = 1.2
|
||||
if(36 to 70) //35% chance : mutant
|
||||
hue_shift = 0.85 //this value is equivalent in distance as the painted tier, just in the other direction.
|
||||
rarity_affix = "mutant"
|
||||
strength_factor = 1.4
|
||||
if(71 to 83) //13% chance : rare
|
||||
hue_shift = 0.3
|
||||
rarity_affix = "rare"
|
||||
strength_factor = 1.6
|
||||
if(84 to 95) //12% chance : shiny
|
||||
hue_shift = 0.7
|
||||
rarity_affix = "shiny"
|
||||
strength_factor = 2
|
||||
if(96 to 100) //5% chance : mutant king
|
||||
hue_shift = 0.5 //Best in show, most extreme color change.
|
||||
rarity_affix = "mutant king" //The name is up to debate, since cyto is all about freaky creatures I thought it was good choice over something like "cosmic" or "regal".
|
||||
strength_factor = 2.5
|
||||
|
||||
var/list/mutant_shift_matrix = list(1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1, hue_shift,0,0,0) //matrix for our colour shifting.
|
||||
|
||||
@@ -163,3 +171,5 @@
|
||||
if(isliving(beautiful_mutant)) //update the real name var if it's actually a living mob
|
||||
var/mob/living/living_mutie = beautiful_mutant
|
||||
living_mutie.real_name = living_mutie.name
|
||||
|
||||
return strength_factor
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
/// Cell lines for organ cytology, letting you duplicate or grow new mutant strains!
|
||||
/datum/micro_organism/cell_line/organs
|
||||
desc = "dense tissue"
|
||||
growth_rate = 1
|
||||
consumption_rate = REAGENTS_METABOLISM
|
||||
|
||||
/datum/micro_organism/cell_line/organs/mutate_color(atom/beautiful_mutant)
|
||||
. = ..()
|
||||
|
||||
if(isorgan(beautiful_mutant))
|
||||
var/obj/item/organ/organ = beautiful_mutant
|
||||
// Rare affix organs get more health
|
||||
organ.maxHealth *= .
|
||||
|
||||
/datum/micro_organism/cell_line/organs/heart
|
||||
desc = "dense heart tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/love = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/toxin/mutagen = -2,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/heart
|
||||
|
||||
/datum/micro_organism/cell_line/organs/heart/evolved
|
||||
desc = "dense evolved heart tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/love = 6,
|
||||
/datum/reagent/toxin/mutagen = 4,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/heart/evolved
|
||||
|
||||
/datum/micro_organism/cell_line/organs/heart/sacred
|
||||
desc = "dense sacred heart tissue"
|
||||
growth_rate = parent_type::growth_rate * 0.5
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue, /datum/reagent/water/holywater)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/love = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/heart/evolved/sacred
|
||||
|
||||
/datum/micro_organism/cell_line/organs/heart/corrupt
|
||||
desc = "dense corrupted heart tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/hellwater = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/water/holywater = -3,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/heart/corrupt
|
||||
|
||||
/datum/micro_organism/cell_line/organs/lungs
|
||||
desc = "dense lung tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/medicine/salbutamol = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/toxin/mutagen = -2,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/lungs
|
||||
|
||||
/datum/micro_organism/cell_line/organs/lungs/evolved
|
||||
desc = "dense evolved lung tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/medicine/salbutamol = 6,
|
||||
/datum/reagent/toxin/mutagen = 4,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/lungs/evolved
|
||||
|
||||
/datum/micro_organism/cell_line/organs/liver
|
||||
desc = "dense liver tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/iron = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/toxin/mutagen = -2,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/liver
|
||||
|
||||
/datum/micro_organism/cell_line/organs/liver/evolved
|
||||
desc = "dense evolved liver tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/iron = 6,
|
||||
/datum/reagent/toxin/mutagen = 4,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/liver/evolved
|
||||
|
||||
/datum/micro_organism/cell_line/organs/liver/bloody
|
||||
desc = "spongy liver tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue, /datum/reagent/blood)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/iron = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/liver/bloody
|
||||
|
||||
/datum/micro_organism/cell_line/organs/liver/distillery
|
||||
desc = "alcoholic liver tissue"
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue, /datum/reagent/consumable/ethanol)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/iron = 6,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/water = -6, //are you trying to poison me or something?
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/liver/distillery
|
||||
|
||||
/datum/micro_organism/cell_line/organs/stomach
|
||||
desc = "dense stomach tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/consumable/nutriment/organ_tissue = 3,
|
||||
/datum/reagent/blood = 3,
|
||||
/datum/reagent/consumable/nutriment = 1,
|
||||
)
|
||||
|
||||
suppressive_reagents = list(
|
||||
/datum/reagent/toxin/mutagen = -2,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/stomach
|
||||
|
||||
/datum/micro_organism/cell_line/organs/stomach/evolved
|
||||
desc = "dense evolved stomach tissue"
|
||||
|
||||
required_reagents = list(/datum/reagent/consumable/nutriment/organ_tissue/stomach_lining)
|
||||
|
||||
supplementary_reagents = list(
|
||||
/datum/reagent/toxin/mutagen = 4,
|
||||
/datum/reagent/consumable/nutriment/organ_tissue = 3,
|
||||
/datum/reagent/consumable/nutriment = 3,
|
||||
/datum/reagent/blood = 3,
|
||||
)
|
||||
|
||||
resulting_atom = /obj/item/organ/stomach/evolved
|
||||
@@ -15,13 +15,16 @@
|
||||
var/datum/biological_sample/biological_sample
|
||||
///If the vat will restart the sample upon completion
|
||||
var/resampler_active = FALSE
|
||||
/// Whether or not to add the plumbing component and related stuff
|
||||
var/use_plumbing = TRUE
|
||||
|
||||
/obj/machinery/vatgrower/Initialize(mapload, bolt, layer)
|
||||
. = ..()
|
||||
create_reagents(reagent_volume, reagent_flags)
|
||||
|
||||
AddComponent(/datum/component/simple_rotation)
|
||||
AddComponent(/datum/component/plumbing/simple_demand)
|
||||
if(use_plumbing)
|
||||
AddComponent(/datum/component/simple_rotation)
|
||||
AddComponent(/datum/component/plumbing/simple_demand)
|
||||
|
||||
var/static/list/hovering_item_typechecks = list(
|
||||
/obj/item/petri_dish = list(
|
||||
@@ -136,9 +139,9 @@
|
||||
var/static/image/off_overlay
|
||||
var/static/image/emissive_overlay
|
||||
if(isnull(on_overlay))
|
||||
on_overlay = iconstate2appearance(icon, "growing_vat_on")
|
||||
off_overlay = iconstate2appearance(icon, "growing_vat_off")
|
||||
emissive_overlay = emissive_appearance(icon, "growing_vat_glow", src, alpha = src.alpha)
|
||||
on_overlay = iconstate2appearance(icon, "[icon_state]_on")
|
||||
off_overlay = iconstate2appearance(icon, "[icon_state]_off")
|
||||
emissive_overlay = emissive_appearance(icon, "[icon_state]_glow", src, alpha = src.alpha)
|
||||
. += emissive_overlay
|
||||
if(is_operational)
|
||||
if(resampler_active)
|
||||
@@ -148,11 +151,11 @@
|
||||
if(!reagents.total_volume)
|
||||
return
|
||||
var/reagentcolor = mix_color_from_reagents(reagents.reagent_list)
|
||||
var/mutable_appearance/base_overlay = mutable_appearance(icon, "vat_reagent", appearance_flags = RESET_COLOR|KEEP_APART)
|
||||
var/mutable_appearance/base_overlay = mutable_appearance(icon, "[icon_state]_reagent", appearance_flags = RESET_COLOR|KEEP_APART)
|
||||
base_overlay.color = reagentcolor
|
||||
. += base_overlay
|
||||
if(biological_sample && is_operational)
|
||||
var/mutable_appearance/bubbles_overlay = mutable_appearance(icon, "vat_bubbles")
|
||||
var/mutable_appearance/bubbles_overlay = mutable_appearance(icon, "[icon_state]_bubbles")
|
||||
. += bubbles_overlay
|
||||
|
||||
/obj/machinery/vatgrower/emag_act(mob/user, obj/item/card/emag/emag_card)
|
||||
@@ -170,6 +173,43 @@
|
||||
addtimer(CALLBACK(GLOBAL_PROC, GLOBAL_PROC_REF(playsound), get_turf(src), 'sound/effects/servostep.ogg', 100, 1), 1.5 SECONDS)
|
||||
biological_sample.reset_sample()
|
||||
else
|
||||
UnregisterSignal(biological_sample, COMSIG_SAMPLE_GROWTH_COMPLETED)
|
||||
QDEL_NULL(biological_sample)
|
||||
update_appearance()
|
||||
|
||||
/obj/machinery/vatgrower/small
|
||||
name = "small growing vat"
|
||||
desc = "Tastes just like the chef's soup. Fit for growing organ tissue samples."
|
||||
icon_state = "growing_vat_small"
|
||||
density = FALSE
|
||||
pass_flags_self = PASSMACHINE | LETPASSTHROW
|
||||
circuit = null
|
||||
|
||||
anchored_tabletop_offset = 4
|
||||
pass_flags = PASSTABLE
|
||||
use_plumbing = FALSE
|
||||
|
||||
reagent_volume = 50
|
||||
|
||||
/obj/machinery/vatgrower/small/emag_act(mob/user, obj/item/card/emag/emag_card)
|
||||
return
|
||||
|
||||
/obj/machinery/vatgrower/small/deposit_sample(mob/user, obj/item/petri_dish/petri)
|
||||
. = ..()
|
||||
|
||||
if(. != ITEM_INTERACT_SUCCESS)
|
||||
return
|
||||
|
||||
RegisterSignal(biological_sample, COMSIG_SAMPLE_DEPOSITED, PROC_REF(on_sample_deposited))
|
||||
|
||||
/obj/machinery/vatgrower/small/proc/on_sample_deposited(datum/biological_sample/sample, atom/thing)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if(isliving(thing))
|
||||
var/mob/living/living_type = thing
|
||||
if(living_type.mob_size > MOB_SIZE_SMALL)
|
||||
explosion(src, light_impact_range = 2, explosion_cause = "growing vat too small")
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/machinery/vatgrower/small/unanchored
|
||||
anchored = FALSE
|
||||
|
||||
Reference in New Issue
Block a user