mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
Replace slime extract experiments, required for biotech, with dissection surgery (#63033)
About The Pull Request Adds back dissection surgery for the purposes of performing experiments. Replaces the existing slime extract fetch quests with dissection surgery for biotech, and adds xenomorph dissection as an extra discount (though I would like to see a node require it some day). Why It's Good For The Game Science has no incentive to actually scan slime extracts for biotech, as the primary consumer is medical. In practice, this means that the grey slime extract experiment, which can be done round-start, is frequently left unperformed. This lets medical have some level of control over their research, while still leaving the actual act of researching the node into the hands of the science department, or heads of staff. Changelog cl add: Added back dissection surgery, which can be used with an operating computer to perform experiments for research. add: Biological technology's requirement has been changed from scanning one grey slime extract to performing a dissection surgery. add: Advanced biotech's requirement has been changed from scanning three slime extracts to performing a dissection surgery on a nonhuman. add: Xeno-organ biology and Alien Biological Tools' now have additional discounts for performing a dissection surgery on a xenomorph. /cl
This commit is contained in:
@@ -2,29 +2,6 @@
|
||||
name = "Base Slime Experiment"
|
||||
required_points = 1
|
||||
|
||||
/datum/experiment/scanning/points/slime/calibration
|
||||
name = "Slime Sample Test"
|
||||
description = "Let's see if our scanners can pick up the genetic data from a simple slime extract."
|
||||
required_atoms = list(/obj/item/slime_extract/grey = 1)
|
||||
|
||||
/datum/experiment/scanning/points/slime/easy
|
||||
name = "Easy Slime Survey"
|
||||
description = "A wealthy client has requested that we provide samples of data from several basic slime cores."
|
||||
required_points = 3
|
||||
required_atoms = list(/obj/item/slime_extract/orange = 1,
|
||||
/obj/item/slime_extract/purple = 1,
|
||||
/obj/item/slime_extract/blue = 1,
|
||||
/obj/item/slime_extract/metal = 1)
|
||||
|
||||
/datum/experiment/scanning/points/slime/moderate
|
||||
name = "Moderate Slime Survey"
|
||||
description = "Central Command has asked that you collect data from several common slime cores."
|
||||
required_points = 5
|
||||
required_atoms = list(/obj/item/slime_extract/yellow = 1,
|
||||
/obj/item/slime_extract/darkpurple = 1,
|
||||
/obj/item/slime_extract/darkblue = 1,
|
||||
/obj/item/slime_extract/silver = 1)
|
||||
|
||||
/datum/experiment/scanning/points/slime/hard
|
||||
name = "Challenging Slime Survey"
|
||||
description = "Another station has challenged your research team to collect several challenging slime cores, \
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
RegisterSignal(parent, COMSIG_DOPPLER_ARRAY_EXPLOSION_DETECTED, .proc/try_run_doppler_experiment)
|
||||
if(istype(parent, /obj/machinery/destructive_scanner))
|
||||
RegisterSignal(parent, COMSIG_MACHINERY_DESTRUCTIVE_SCAN, .proc/try_run_destructive_experiment)
|
||||
if(istype(parent, /obj/machinery/computer/operating))
|
||||
RegisterSignal(parent, COMSIG_OPERATING_COMPUTER_DISSECTION_COMPLETE, .proc/try_run_dissection_experiment)
|
||||
|
||||
// Determine UI display mode
|
||||
switch(config_mode)
|
||||
@@ -173,6 +175,16 @@
|
||||
playsound(src, 'sound/machines/buzz-sigh.ogg', 25)
|
||||
our_array.say("Insufficient explosion to contribute to current experiment.")
|
||||
|
||||
/// Hooks on a successful dissection experiment
|
||||
/datum/component/experiment_handler/proc/try_run_dissection_experiment(obj/source, mob/living/target)
|
||||
SIGNAL_HANDLER
|
||||
|
||||
if (action_experiment(source, target))
|
||||
playsound(source, 'sound/machines/ping.ogg', 25)
|
||||
else
|
||||
playsound(source, 'sound/machines/buzz-sigh.ogg', 25)
|
||||
source.say("The dissection did not result in anything, either prior dissections have not been complete, or this one has already been researched.")
|
||||
|
||||
/**
|
||||
* Announces a message to all experiment handlers
|
||||
*
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
/datum/experiment/dissection
|
||||
name = "Dissection Experiment"
|
||||
description = "An experiment requiring a dissection surgery to progress"
|
||||
exp_tag = "Dissection"
|
||||
performance_hint = "Perform a dissection surgery while connected to an operating computer."
|
||||
|
||||
/datum/experiment/dissection/is_complete()
|
||||
return completed
|
||||
|
||||
/datum/experiment/dissection/perform_experiment_actions(datum/component/experiment_handler/experiment_handler, mob/target)
|
||||
if (is_valid_dissection(target))
|
||||
completed = TRUE
|
||||
return TRUE
|
||||
else
|
||||
return FALSE
|
||||
|
||||
/datum/experiment/dissection/proc/is_valid_dissection(mob/target)
|
||||
return TRUE
|
||||
|
||||
/datum/experiment/dissection/human
|
||||
name = "Human Dissection Experiment"
|
||||
description = "We don't want to invest in a station that doesn't know their coccyx from their cochlea. Send us back data dissecting a human to receive more funding."
|
||||
|
||||
/datum/experiment/dissection/human/is_valid_dissection(mob/target)
|
||||
return ishumanbasic(target)
|
||||
|
||||
/datum/experiment/dissection/nonhuman
|
||||
name = "Non-human Dissection Experiment"
|
||||
description = "When we asked for a tail bone, we didn't mean...look, just send us back data from something OTHER than a human. It could be a monkey for all we care, just send us research."
|
||||
|
||||
/datum/experiment/dissection/nonhuman/is_valid_dissection(mob/target)
|
||||
return ishuman(target) && !ishumanbasic(target)
|
||||
|
||||
/datum/experiment/dissection/xenomorph
|
||||
name = "Xenomorph Dissection Experiment"
|
||||
description = "Our understanding of the xenomorph only scratches the surface. Send us research from dissecting a xenomorph."
|
||||
|
||||
/datum/experiment/dissection/xenomorph/is_valid_dissection(mob/target)
|
||||
return isalien(target)
|
||||
Reference in New Issue
Block a user