Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[MIRROR] [MIRROR] More techweb tweaks [NO GBP] [MDB IGNORE] #816

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
121 changes: 121 additions & 0 deletions code/__DEFINES/research/techweb_nodes.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
#define TECHWEB_NODE_AI "ai"
#define TECHWEB_NODE_AI_LAWS "ai_laws"
#define TECHWEB_NODE_ALIEN_ENGI "alien_engi"
#define TECHWEB_NODE_ALIEN_SURGERY "alien_surgery"
#define TECHWEB_NODE_ALIENTECH "alientech"
#define TECHWEB_NODE_ANOMALY_RESEARCH "anomaly_research"
#define TECHWEB_NODE_ANOMALY_SHELLS "anomaly_shells"
#define TECHWEB_NODE_APPLIED_BLUESPACE "applied_bluespace"
#define TECHWEB_NODE_ATMOS "atmos"
#define TECHWEB_NODE_AUGMENTATION "augmentation"
#define TECHWEB_NODE_AUS_SECURITY "aus_security"
#define TECHWEB_NODE_BASIC_ARMS "basic_arms"
#define TECHWEB_NODE_BCI "bci"
#define TECHWEB_NODE_BEAM_WEAPONS "beam_weapons"
#define TECHWEB_NODE_BIO_SCAN "bio_scan"
#define TECHWEB_NODE_BITRUNNING "bitrunning"
#define TECHWEB_NODE_BLUESPACE "bluespace"
#define TECHWEB_NODE_BLUESPACE_THEORY "bluespace_theory"
#define TECHWEB_NODE_BLUESPACE_TRAVEL "bluespace_travel"
#define TECHWEB_NODE_BORG_ENGI "borg_engi"
#define TECHWEB_NODE_BORG_MEDICAL "borg_medical"
#define TECHWEB_NODE_BORG_MINING "borg_mining"
#define TECHWEB_NODE_BORG_SERVICES "borg_services"
#define TECHWEB_NODE_BORG_UTILITY "borg_utility"
#define TECHWEB_NODE_BOTANY_EQUIP "botany_equip"
#define TECHWEB_NODE_CAFETERIA_EQUIP "cafeteria_equip"
#define TECHWEB_NODE_CHEM_SYNTHESIS "chem_synthesis"
#define TECHWEB_NODE_CIRCUIT_SHELLS "circuit_shells"
#define TECHWEB_NODE_COMBAT_IMPLANTS "combat_implants"
#define TECHWEB_NODE_CONSOLES "consoles"
#define TECHWEB_NODE_CONSTRUCTION "construction"
#define TECHWEB_NODE_CRYOSTASIS "cryostasis"
#define TECHWEB_NODE_CYBER_IMPLANTS "cyber_implants"
#define TECHWEB_NODE_CYBER_ORGANS "cyber_organs"
#define TECHWEB_NODE_CYBER_ORGANS_ADV "cyber_organs_adv"
#define TECHWEB_NODE_CYBER_ORGANS_UPGRADED "cyber_organs_upgraded"
#define TECHWEB_NODE_CYBERNETICS "cybernetics"
#define TECHWEB_NODE_CYTOLOGY "cytology"
#define TECHWEB_NODE_ELECTRIC_WEAPONS "electric_weapons"
#define TECHWEB_NODE_ENERGY_MANIPULATION "energy_manipulation"
#define TECHWEB_NODE_EXODRONE "exodrone"
#define TECHWEB_NODE_EXOTIC_AMMO "exotic_ammo"
#define TECHWEB_NODE_EXP_TOOLS "exp_tools"
#define TECHWEB_NODE_EXPLOSIVES "explosives"
#define TECHWEB_NODE_EXTREME_OFFICE "extreme_office"
#define TECHWEB_NODE_FISHING_EQUIP "fishing_equip"
#define TECHWEB_NODE_FISHING_EQUIP_ADV "fishing_equip_adv"
#define TECHWEB_NODE_FOOD_PROC "food_proc"
#define TECHWEB_NODE_FUNDIMENTAL_SCI "fundimental_sci"
#define TECHWEB_NODE_FUSION "fusion"
#define TECHWEB_NODE_GAMING "gaming"
#define TECHWEB_NODE_GAS_COMPRESSION "gas_compression"
#define TECHWEB_NODE_GENE_ENGINEERING "gene_engineering"
#define TECHWEB_NODE_HOLOGRAPHICS "holographics"
#define TECHWEB_NODE_HUD "hud"
#define TECHWEB_NODE_HYDROPONICS "hydroponics"
#define TECHWEB_NODE_INTERGRATED_TOOLSETS "intergrated_toolsets"
#define TECHWEB_NODE_INTERROGATION "interrogation"
#define TECHWEB_NODE_LIGHT_APPS "light_apps"
#define TECHWEB_NODE_LOW_PRESSURE_EXCAVATION "low_pressure_excavation"
#define TECHWEB_NODE_MARINE_UTIL "marine_util"
#define TECHWEB_NODE_MATERIAL_PROC "material_proc"
#define TECHWEB_NODE_MECH_ASSAULT "mech_assault"
#define TECHWEB_NODE_MECH_ASSEMBLY "mech_assembly"
#define TECHWEB_NODE_MECH_CLOWN "mech_clown"
#define TECHWEB_NODE_MECH_COMBAT "mech_combat"
#define TECHWEB_NODE_MECH_ENERGY_GUNS "mech_energy_guns"
#define TECHWEB_NODE_MECH_EQUIPMENT "mech_equipment"
#define TECHWEB_NODE_MECH_FIREARMS "mech_firearms"
#define TECHWEB_NODE_MECH_HEAVY "mech_heavy"
#define TECHWEB_NODE_MECH_HEAVY_ARMS "mech_heavy_arms"
#define TECHWEB_NODE_MECH_INFILTRATOR "mech_infiltrator"
#define TECHWEB_NODE_MECH_LIGHT "mech_light"
#define TECHWEB_NODE_MECH_MEDICAL "mech_medical"
#define TECHWEB_NODE_MECH_MINING "mech_mining"
#define TECHWEB_NODE_MEDBAY_EQUIP "medbay_equip"
#define TECHWEB_NODE_MEDBAY_EQUIP_ADV "medbay_equip_adv"
#define TECHWEB_NODE_MINING "mining"
#define TECHWEB_NODE_MINING_ADV "mining_adv"
#define TECHWEB_NODE_MOD_ANOMALY "mod_anomaly"
#define TECHWEB_NODE_MOD_ENGI "mod_engi"
#define TECHWEB_NODE_MOD_ENGI_ADV "mod_engi_adv"
#define TECHWEB_NODE_MOD_ENTERTAINMENT "mod_entertainment"
#define TECHWEB_NODE_MOD_EQUIP "mod_equip"
#define TECHWEB_NODE_MOD_EXPERIMENTAL "mod_experimental"
#define TECHWEB_NODE_MOD_MEDICAL "mod_medical"
#define TECHWEB_NODE_MOD_MEDICAL_ADV "mod_medical_adv"
#define TECHWEB_NODE_MOD_SECURITY "mod_security"
#define TECHWEB_NODE_MOD_SUIT "mod_suit"
#define TECHWEB_NODE_NIGHT_VISION "night_vision"
#define TECHWEB_NODE_OFFICE_EQUIP "office_equip"
#define TECHWEB_NODE_OLDSTATION_SURGERY "oldstation_surgery"
#define TECHWEB_NODE_PARTS "parts"
#define TECHWEB_NODE_PARTS_ADV "parts_adv"
#define TECHWEB_NODE_PARTS_BLUESPACE "parts_bluespace"
#define TECHWEB_NODE_PARTS_UPG "parts_upg"
#define TECHWEB_NODE_PASSIVE_IMPLANTS "passive_implants"
#define TECHWEB_NODE_PLASMA_CONTROL "plasma_control"
#define TECHWEB_NODE_PLASMA_MINING "plasma_mining"
#define TECHWEB_NODE_PLUMBING "plumbing"
#define TECHWEB_NODE_POSITRONIC_SPHERE "positronic_sphere"
#define TECHWEB_NODE_PROGRAMMED_ROBOT "programmed_robot"
#define TECHWEB_NODE_PROGRAMMED_SERVER "programmed_server"
#define TECHWEB_NODE_PROGRAMMING "programming"
#define TECHWEB_NODE_RCD_UPGRADE "rcd_upgrade"
#define TECHWEB_NODE_RIOT_SUPRESSION "riot_supression"
#define TECHWEB_NODE_ROBOTICS "robotics"
#define TECHWEB_NODE_SANITATION "sanitation"
#define TECHWEB_NODE_SEC_EQUIP "sec_equip"
#define TECHWEB_NODE_SELECTION "selection"
#define TECHWEB_NODE_SPEC_ENG "spec_eng"
#define TECHWEB_NODE_STICKY_ADVANCED "sticky_advanced"
#define TECHWEB_NODE_SURGERY "surgery"
#define TECHWEB_NODE_SURGERY_ADV "surgery_adv"
#define TECHWEB_NODE_SURGERY_EXP "surgery_exp"
#define TECHWEB_NODE_SURGERY_TOOLS "surgery_tools"
#define TECHWEB_NODE_SYNDICATE_BASIC "syndicate_basic"
#define TECHWEB_NODE_TACKLE_ADVANCED "tackle_advanced"
#define TECHWEB_NODE_TELECOMS "telecoms"
#define TECHWEB_NODE_UNREGULATED_BLUESPACE "unregulated_bluespace"
#define TECHWEB_NODE_XENOBIOLOGY "xenobiology"
9 changes: 9 additions & 0 deletions code/game/objects/items/clown_items.dm
Original file line number Diff line number Diff line change
Expand Up @@ -207,6 +207,15 @@
worn_icon_state = "horn_air"
sound_file = 'sound/items/airhorn2.ogg'

/datum/crafting_recipe/airhorn
name = "Air Horn"
result = /obj/item/bikehorn/airhorn
reqs = list(
/obj/item/bikehorn = 1,
/obj/item/toy/crayon/spraycan = 1,
)
category = CAT_ENTERTAINMENT

//golden bikehorn
/obj/item/bikehorn/golden
name = "golden bike horn"
Expand Down
107 changes: 106 additions & 1 deletion code/modules/experisci/experiment/experiments.dm
Original file line number Diff line number Diff line change
Expand Up @@ -327,7 +327,6 @@
description = "Your exosuit fabricators allow for rapid production on a small scale, but the structural integrity of created parts is inferior to more traditional means."
exp_tag = "Scan"
possible_types = list(/obj/vehicle/sealed/mecha)
total_requirement = 1
///Damage percent that each mech needs to be at for a scan to work.
var/damage_percent

Expand All @@ -337,6 +336,21 @@
possible_types = list(/obj/vehicle/sealed/mecha)
total_requirement = 2

/// Scan a person with any mutation
/datum/experiment/scanning/people/mutant
name = "Human Field Research: Genetic Mutations"
description = "Our new research assistants have been drinking random chemicals for science, when one of them mastered telekinesis and another started shooting lasers from the eyes. This could be useful for our studies. Repeat the experiment by making assistants drink unstable mutagen, scan them and report the results."
performance_hint = "Scan a person with a random mutation."
required_traits_desc = "random mutation"

/datum/experiment/scanning/people/mutant/is_valid_scan_target(mob/living/carbon/human/check, datum/component/experiment_handler/experiment_handler)
. = ..()
if (!.)
return
if(!check.dna.mutations.len)
return FALSE
return TRUE

/// Scan for organs you didn't start the round with
/datum/experiment/scanning/people/novel_organs
name = "Human Field Research: Divergent Biology"
Expand Down Expand Up @@ -376,3 +390,94 @@
continue
return TRUE
return FALSE
<<<<<<< HEAD

Check failure on line 393 in code/modules/experisci/experiment/experiments.dm

View workflow job for this annotation

GitHub Actions / Run Linters

got '<<', expected one of: newline, '/', identifier
=======

/// Scan for cybernetic organs
/datum/experiment/scanning/people/augmented_organs
name = "Human Field Research: Augmented Organs"
description = "We need to gather data on how cybernetic vital organs integrate with human biology. Conduct a scan on a human with these implants to help us understand their compatibility"
performance_hint = "Perform an organ manipulation surgery to replace one of the vital organs with a cybernetic variant."
required_traits_desc = "augmented vital organs"
required_count = 1

/datum/experiment/scanning/people/augmented_organs/is_valid_scan_target(mob/living/carbon/human/check)
. = ..()
if (!.)
return
var/static/list/vital_organ_slots = list(
ORGAN_SLOT_HEART,
ORGAN_SLOT_LUNGS,
ORGAN_SLOT_EYES,
ORGAN_SLOT_EARS,
ORGAN_SLOT_LIVER,
ORGAN_SLOT_STOMACH,
)

for (var/obj/item/organ/organ as anything in check.organs)
if (IS_ORGANIC_ORGAN(organ))
continue
if (!(organ.slot in vital_organ_slots))
continue
return TRUE
return FALSE

/// Scan for skillchips
/datum/experiment/scanning/people/skillchip
name = "Human Field Research: Skill Chip Implants"
description = "Before sticking programmed circuits into human brain, we need to know how it handles simple ones. Scan a live person with a skill chip implant in their brain."
performance_hint = "Perform a skill chip implantation with a skill station."
required_traits_desc = "skill chip implant"

/datum/experiment/scanning/people/skillchip/is_valid_scan_target(mob/living/carbon/human/check, datum/component/experiment_handler/experiment_handler)
. = ..()
if (!.)
return
var/obj/item/organ/internal/brain/scanned_brain = check.get_organ_slot(ORGAN_SLOT_BRAIN)
if (isnull(scanned_brain))
experiment_handler.announce_message("Subject is brainless!")
return FALSE
if (scanned_brain.get_used_skillchip_slots() == 0)
experiment_handler.announce_message("No skill chips found!")
return FALSE
return TRUE

/datum/experiment/scanning/reagent/cryostylane
name = "Pure Cryostylane Scan"
description = "It appears that the Cryostylane reagent can potentially halt all physiological processes in the human body. Produce Cryostylane with at least 99% purity and scan the beaker."
required_reagent = /datum/reagent/cryostylane
min_purity = 0.99

/datum/experiment/scanning/points/bluespace_crystal
name = "Bluespace Crystal Sampling"
description = "Investigate the properties of bluespace crystals by scanning either an artificial or naturally occurring variant. This will help us deepen our understanding of bluespace phenomena."
required_points = 1
required_atoms = list(
/obj/item/stack/ore/bluespace_crystal = 1,
/obj/item/stack/sheet/bluespace_crystal = 1
)

/datum/experiment/scanning/points/anomalies
name = "Neutralized Anomaly Analysis"
description = "We have the power to deal with the anomalies now. Neutralize them with an anomaly neutralizer or refine the raw cores in the refinery and scan the results."
required_points = 4
required_atoms = list(/obj/item/assembly/signaler/anomaly = 1)

/datum/experiment/scanning/points/machinery_tiered_scan/tier2_any
name = "Upgraded Stock Parts Benchmark"
description = "Our newly-designed machinery components require practical application tests for hints at possible further advancements, as well as a general confirmation that we didn't actually design worse parts somehow. Scan any machinery with Upgraded Parts and report the results."
required_points = 6
required_atoms = list(
/obj/machinery = 1
)
required_tier = 2

/datum/experiment/scanning/points/machinery_tiered_scan/tier3_any
name = "Advanced Stock Parts Benchmark"
description = "Our newly-designed machinery components require practical application tests for hints at possible further advancements, as well as a general confirmation that we didn't actually design worse parts somehow. Scan any machinery with Advanced Parts and report the results."
required_points = 6
required_atoms = list(
/obj/machinery = 1
)
required_tier = 3
>>>>>>> 0bc28149e8e... [MIRROR] More techweb tweaks [NO GBP] [MDB IGNORE] (#3538)
21 changes: 15 additions & 6 deletions code/modules/experisci/experiment/types/scanning_vatgrown.dm
Original file line number Diff line number Diff line change
@@ -1,14 +1,23 @@
/datum/experiment/scanning/random/cytology
/datum/experiment/scanning/cytology
name = "Cytology Scanning Experiment"
description = "Base experiment for scanning atoms that were vatgrown"
exp_tag = "Cytology Scan"
<<<<<<< HEAD
total_requirement = 1
possible_types = list(/mob/living/basic/cockroach)
traits = EXPERIMENT_TRAIT_DESTRUCTIVE
=======
>>>>>>> 0bc28149e8e... [MIRROR] More techweb tweaks [NO GBP] [MDB IGNORE] (#3538)

/datum/experiment/scanning/random/cytology/final_contributing_index_checks(datum/component/experiment_handler/experiment_handler, atom/target, typepath)
/datum/experiment/scanning/cytology/final_contributing_index_checks(datum/component/experiment_handler/experiment_handler, atom/target, typepath)
return ..() && HAS_TRAIT(target, TRAIT_VATGROWN)

/datum/experiment/scanning/random/cytology/serialize_progress_stage(atom/target, list/seen_instances)
return EXPERIMENT_PROG_INT("Scan samples of \a vat-grown [initial(target.name)]", \
traits & EXPERIMENT_TRAIT_DESTRUCTIVE ? scanned[target] : seen_instances.len, required_atoms[target])
/datum/experiment/scanning/cytology/serialize_progress_stage(atom/target, list/seen_instances)
return EXPERIMENT_PROG_INT("Scan samples of \a vat-grown [initial(target.name)]", seen_instances.len, required_atoms[target])

/datum/experiment/scanning/cytology/slime
name = "Vat-Grown Slime Scan"
description = "Seen the slimes in the xenobiology pens? They spawned when our researchers donked a moldy bread slice into the vat. Cultivate another one and report the results."
performance_hint = "Swab the slime cell lines from a moldy bread or take a biopsy sample of existing slime. And grow it in the vat."
required_atoms = list(/mob/living/basic/slime = 1)


12 changes: 0 additions & 12 deletions code/modules/research/designs/misc_designs.dm
Original file line number Diff line number Diff line change
Expand Up @@ -166,18 +166,6 @@
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE

/datum/design/air_horn
name = "Air Horn"
desc = "Damn son, where'd you find this?"
id = "air_horn"
build_type = PROTOLATHE | AWAY_LATHE
materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*2, /datum/material/bananium =HALF_SHEET_MATERIAL_AMOUNT)
build_path = /obj/item/bikehorn/airhorn
category = list(
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_SERVICE
)
departmental_flags = DEPARTMENT_BITFLAG_SERVICE

/datum/design/clown_firing_pin
name = "Hilarious Firing Pin"
id = "clown_firing_pin"
Expand Down
Loading
Loading