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

Nanites #152

Closed
wants to merge 4 commits into from
Closed
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
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#define SPELLBOOK_CATEGORY_OFFENSIVE "Offensive"
// Offensive wizard spells

datum/spellbook_entry/testicular_torsion
/datum/spellbook_entry/testicular_torsion
name = "Testicular Torsion"
desc = "A dark spell capable of exploding victim's balls."
spell_type = /datum/action/cooldown/spell/touch/testicular_torsion
Expand Down
20 changes: 20 additions & 0 deletions massmeta/features/nanites/code/Z_edits/hud_edits.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
/mob/New()
// add our nanite huds to everyone so they can (if possible) actually see nanites.
hud_possible += list(NANITE_HUD, DIAG_NANITE_FULL_HUD)
return ..()

/datum/atom_hud/data/human/medical/New()
. = ..()
hud_icons += list(NANITE_HUD)

/datum/atom_hud/data/human/security/advanced/New()
. = ..()
hud_icons += list(NANITE_HUD)

/datum/atom_hud/data/diagnostic/basic/New()
. = ..()
hud_icons += list(DIAG_NANITE_FULL_HUD)

/datum/atom_hud/data/diagnostic/advanced/New()
. = ..()
hud_icons += list(DIAG_NANITE_FULL_HUD)
3 changes: 3 additions & 0 deletions massmeta/features/nanites/code/Z_edits/research_edits.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
/datum/controller/subsystem/research/Initialize()
. = ..()
point_types += list(TECHWEB_POINT_TYPE_NANITES = "Nanite Res.")
4 changes: 4 additions & 0 deletions massmeta/features/nanites/code/areas.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
/area/station/science/nanite
name = "Nanite Lab"
icon = 'massmeta/features/nanites/icons/areas.dmi'
icon_state = "nanite_lab"
38 changes: 38 additions & 0 deletions massmeta/features/nanites/code/circuitboards.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/obj/item/circuitboard/computer/nanite_chamber_control
name = "Nanite Chamber Control"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/computer/nanite_chamber_control

/obj/item/circuitboard/computer/nanite_cloud_controller
name = "Nanite Cloud Control"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/computer/nanite_cloud_controller

/obj/item/circuitboard/machine/nanite_chamber
name = "Nanite Chamber"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/nanite_chamber
req_components = list(
/obj/item/stock_parts/micro_laser = 2,
/obj/item/stock_parts/scanning_module = 1,
/obj/item/stock_parts/servo = 1,
)

/obj/item/circuitboard/machine/nanite_program_hub
name = "Nanite Program Hub"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/nanite_program_hub
req_components = list(
/obj/item/stock_parts/matter_bin = 1,
/obj/item/stock_parts/servo = 1,
)

/obj/item/circuitboard/machine/nanite_programmer
name = "Nanite Programmer"
greyscale_colors = CIRCUIT_COLOR_SCIENCE
build_path = /obj/machinery/nanite_programmer
req_components = list(
/obj/item/stock_parts/servo = 2,
/obj/item/stock_parts/micro_laser = 2,
/obj/item/stock_parts/scanning_module = 1,
)
11 changes: 11 additions & 0 deletions massmeta/features/nanites/code/designs/_nanite.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/datum/design/nanites
name = "None"
desc = "Warn a coder if you see this."
id = "default_nanites"
build_type = NONE
construction_time = 50
category = list()
research_icon = 'massmeta/features/nanites/icons/nanite_device.dmi'
research_icon_state = "nanite_program"
///The nanite program researching this will unlock.
var/program_type = /datum/nanite_program
63 changes: 63 additions & 0 deletions massmeta/features/nanites/code/designs/_tools.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/datum/design/nanite_remote
name = "Nanite Remote"
desc = "Allows for the construction of a nanite remote."
id = "nanite_remote"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
build_path = /obj/item/nanite_remote
category = list(RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/nanite_comm_remote
name = "Nanite Communication Remote"
desc = "Allows for the construction of a nanite communication remote."
id = "nanite_comm_remote"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
build_path = /obj/item/nanite_remote/comm
category = list(RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/nanite_scanner
name = "Nanite Scanner"
desc = "Allows for the construction of a nanite scanner."
id = "nanite_scanner"
build_type = PROTOLATHE
materials = list(/datum/material/glass = 500, /datum/material/iron = 500)
build_path = /obj/item/nanite_scanner
category = list(RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/nanite_disk
name = "Nanite Program Disk"
desc = "Stores nanite programs."
id = "nanite_disk"
build_type = PROTOLATHE
materials = list(/datum/material/iron = 300, /datum/material/glass = 100)
build_path = /obj/item/disk/nanite_program
category = list(RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_ELECTRONICS)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/board/nanite_chamber
name = "Machine Design (Nanite Chamber Board)"
desc = "The circuit board for a Nanite Chamber."
id = "nanite_chamber"
build_path = /obj/item/circuitboard/machine/nanite_chamber
category = list(RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/board/nanite_programmer
name = "Machine Design (Nanite Programmer Board)"
desc = "The circuit board for a Nanite Programmer."
id = "nanite_programmer"
build_path = /obj/item/circuitboard/machine/nanite_programmer
category = list(RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE

/datum/design/board/nanite_program_hub
name = "Machine Design (Nanite Program Hub Board)"
desc = "The circuit board for a Nanite Program Hub."
id = "nanite_program_hub"
build_path = /obj/item/circuitboard/machine/nanite_program_hub
category = list(RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_RESEARCH)
departmental_flags = DEPARTMENT_BITFLAG_SCIENCE
48 changes: 48 additions & 0 deletions massmeta/features/nanites/code/designs/nanite_augmentation.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/datum/design/nanites/nervous
name = "Nerve Support"
desc = "The nanites act as a secondary nervous system, reducing the amount of time the host is stunned."
id = "nervous_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/nervous

/datum/design/nanites/hardening
name = "Dermal Hardening"
desc = "The nanites form a mesh under the host's skin, protecting them from melee and bullet impacts."
id = "hardening_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/hardening

/datum/design/nanites/refractive
name = "Dermal Refractive Surface"
desc = "The nanites form a membrane above the host's skin, reducing the effect of laser and energy impacts."
id = "refractive_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/refractive

/datum/design/nanites/coagulating
name = "Rapid Coagulation"
desc = "The nanites induce rapid coagulation when the host is wounded, dramatically reducing bleeding rate."
id = "coagulating_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/coagulating

/datum/design/nanites/conductive
name = "Electric Conduction"
desc = "The nanites act as a grounding rod for electric shocks, protecting the host. Shocks can still damage the nanites themselves."
id = "conductive_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/conductive

/datum/design/nanites/adrenaline
name = "Adrenaline Burst"
desc = "The nanites cause a burst of adrenaline when triggered, waking the host from stuns and temporarily increasing their speed."
id = "adrenaline_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/adrenaline

/datum/design/nanites/mindshield
name = "Mental Barrier"
desc = "The nanites form a protective membrane around the host's brain, shielding them from abnormal influences while they're active."
id = "mindshield_nanites"
category = list(NANITES_CATEGORY_AUGMENTATION)
program_type = /datum/nanite_program/mindshield
55 changes: 55 additions & 0 deletions massmeta/features/nanites/code/designs/nanite_defective.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/datum/design/nanites/glitch
name = "Glitch"
desc = "A heavy software corruption that causes nanites to gradually break down."
id = "glitch_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/glitch

/datum/design/nanites/necrotic
name = "Necrosis"
desc = "The nanites attack internal tissues indiscriminately, causing widespread damage."
id = "necrotic_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/necrotic

/datum/design/nanites/toxic
name = "Toxin Buildup"
desc = "The nanites cause a slow but constant toxin buildup inside the host."
id = "toxic_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/toxic

/datum/design/nanites/suffocating
name = "Hypoxemia"
desc = "The nanites prevent the host's blood from absorbing oxygen efficiently."
id = "suffocating_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/suffocating

/datum/design/nanites/brain_misfire
name = "Brain Misfire"
desc = "The nanites interfere with neural pathways, causing minor psychological disturbances."
id = "brainmisfire_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/brain_misfire

/datum/design/nanites/skin_decay
name = "Dermalysis"
desc = "The nanites attack skin cells, causing irritation, rashes, and minor damage."
id = "skindecay_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/skin_decay

/datum/design/nanites/nerve_decay
name = "Nerve Decay"
desc = "The nanites attack the host's nerves, causing lack of coordination and short bursts of paralysis."
id = "nervedecay_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/nerve_decay

/datum/design/nanites/brain_decay
name = "Brain-Eating Nanites"
desc = "Damages brain cells, gradually decreasing the host's cognitive functions."
id = "braindecay_nanites"
category = list(NANITES_CATEGORY_DEFECTIVE)
program_type = /datum/nanite_program/brain_decay
71 changes: 71 additions & 0 deletions massmeta/features/nanites/code/designs/nanite_medical.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,71 @@
/datum/design/nanites/regenerative
name = "Accelerated Regeneration"
desc = "The nanites boost the host's natural regeneration, increasing their healing speed."
id = "regenerative_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/regenerative

/datum/design/nanites/regenerative_advanced
name = "Bio-Reconstruction"
desc = "The nanites manually repair and replace organic cells, acting much faster than normal regeneration. \
However, this program cannot detect the difference between harmed and unharmed, causing it to consume nanites even if it has no effect."
id = "regenerative_plus_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/regenerative_advanced

/datum/design/nanites/temperature
name = "Temperature Adjustment"
desc = "The nanites adjust the host's internal temperature to an ideal level."
id = "temperature_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/temperature

/datum/design/nanites/purging
name = "Blood Purification"
desc = "The nanites purge toxins and chemicals from the host's bloodstream."
id = "purging_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/purging

/datum/design/nanites/purging_advanced
name = "Selective Blood Purification"
desc = "The nanites purge toxins and dangerous chemicals from the host's bloodstream, while ignoring beneficial chemicals. \
The added processing power required to analyze the chemicals severely increases the nanite consumption rate."
id = "purging_plus_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/purging_advanced

/datum/design/nanites/brain_heal
name = "Neural Regeneration"
desc = "The nanites fix neural connections in the host's brain, reversing brain damage and minor traumas."
id = "brainheal_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/brain_heal

/datum/design/nanites/brain_heal_advanced
name = "Neural Reimaging"
desc = "The nanites are able to backup and restore the host's neural connections, potentially replacing entire chunks of missing or damaged brain matter."
id = "brainheal_plus_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/brain_heal_advanced

/datum/design/nanites/blood_restoring
name = "Blood Regeneration"
desc = "The nanites stimulate and boost blood cell production in the host."
id = "bloodheal_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/blood_restoring

/datum/design/nanites/repairing
name = "Mechanical Repair"
desc = "The nanites fix damage in the host's mechanical limbs."
id = "repairing_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/repairing

/datum/design/nanites/defib
name = "Defibrillation"
desc = "The nanites, when triggered, send a defibrillating shock to the host's heart."
id = "defib_nanites"
category = list(NANITE_CATEGORY_MEDICAL)
program_type = /datum/nanite_program/defib
56 changes: 56 additions & 0 deletions massmeta/features/nanites/code/designs/nanite_protocols.dm
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
/datum/design/nanites/kickstart
name = "Kickstart Protocol"
desc = "Replication Protocol: the nanites focus on early growth, heavily boosting replication rate for a few minutes after the initial implantation."
id = "kickstart_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/kickstart

/datum/design/nanites/factory
name = "Factory Protocol"
desc = "Replication Protocol: the nanites build a factory matrix within the host, gradually increasing replication speed over time. The factory decays if the protocol is not active."
id = "factory_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/factory

/datum/design/nanites/tinker
name = "Tinker Protocol"
desc = "Replication Protocol: the nanites learn to use metallic material in the host's bloodstream to speed up the replication process."
id = "tinker_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/tinker

/datum/design/nanites/offline
name = "Offline Production Protocol"
desc = "Replication Protocol: while the host is asleep or otherwise unconcious, the nanites exploit the reduced interference to replicate more quickly."
id = "offline_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/offline

/datum/design/nanites/hive
name = "Hive Protocol"
desc = "Storage Protocol: the nanites use a more efficient grid arrangment for volume storage, increasing maximum volume in a host."
id = "hive_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/hive

/datum/design/nanites/zip
name = "Zip Protocol"
desc = "Storage Protocol: the nanites are disassembled and compacted when unused, greatly increasing the maximum volume while in a host. However, the process slows down the replication rate slightly."
id = "zip_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/zip

/datum/design/nanites/free_range
name = "Free-range Protocol"
desc = "Storage Protocol: the nanites discard their default storage protocols in favour of a cheaper and more organic approach. Reduces maximum volume, but increases the replication rate."
id = "free_range_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/free_range

/datum/design/nanites/unsafe_storage
name = "S.L.O. Protocol"
desc = "Storage Protocol: 'S.L.O.P.', or Storage Level Override Protocol, completely disables the safety measures normally present in nanites,\
allowing them to reach much higher saturation levels, but at the risk of causing internal damage to the host."
id = "unsafe_storage_nanites"
category = list(NANITES_CATEGORY_PROTOCOLS)
program_type = /datum/nanite_program/protocol/unsafe_storage
Loading
Loading