diff --git a/code/game/machinery/bioprinter.dm b/code/game/machinery/bioprinter.dm index 0a43acb172..f66b580c52 100644 --- a/code/game/machinery/bioprinter.dm +++ b/code/game/machinery/bioprinter.dm @@ -13,27 +13,29 @@ idle_power_usage = 40 active_power_usage = 300 - var/stored_matter = 0 - var/max_stored_matter = 0 + var/obj/item/weapon/reagent_containers/container = null // This is the beaker that holds all of the biomass + var/print_delay = 100 + var/base_print_delay = 100 // For Adminbus reasons var/printing var/loaded_dna //Blood sample for DNA hashing. // These should be subtypes of /obj/item/organ + // Costs roughly 20u Phoron (1 sheet) per internal organ, limbs are 60u for limb and extremity var/list/products = list( - "Heart" = list(/obj/item/organ/internal/heart, 25), - "Lungs" = list(/obj/item/organ/internal/lungs, 25), + "Heart" = list(/obj/item/organ/internal/heart, 20), + "Lungs" = list(/obj/item/organ/internal/lungs, 20), "Kidneys" = list(/obj/item/organ/internal/kidneys,20), "Eyes" = list(/obj/item/organ/internal/eyes, 20), - "Liver" = list(/obj/item/organ/internal/liver, 25), - "Arm, Left" = list(/obj/item/organ/external/arm, 65), - "Arm, Right" = list(/obj/item/organ/external/arm/right, 65), - "Leg, Left" = list(/obj/item/organ/external/leg, 65), - "Leg, Right" = list(/obj/item/organ/external/leg/right, 65), - "Foot, Left" = list(/obj/item/organ/external/foot, 40), - "Foot, Right" = list(/obj/item/organ/external/foot/right, 40), - "Hand, Left" = list(/obj/item/organ/external/hand, 40), - "Hand, Right" = list(/obj/item/organ/external/hand/right, 40) + "Liver" = list(/obj/item/organ/internal/liver, 20), + "Arm, Left" = list(/obj/item/organ/external/arm, 40), + "Arm, Right" = list(/obj/item/organ/external/arm/right, 40), + "Leg, Left" = list(/obj/item/organ/external/leg, 40), + "Leg, Right" = list(/obj/item/organ/external/leg/right, 40), + "Foot, Left" = list(/obj/item/organ/external/foot, 20), + "Foot, Right" = list(/obj/item/organ/external/foot/right, 20), + "Hand, Left" = list(/obj/item/organ/external/hand, 20), + "Hand, Right" = list(/obj/item/organ/external/hand/right, 20) ) /obj/machinery/organ_printer/attackby(var/obj/item/O, var/mob/user) @@ -57,25 +59,27 @@ /obj/machinery/organ_printer/New() ..() + component_parts = list() - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) - component_parts += new /obj/item/weapon/stock_parts/matter_bin(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) component_parts += new /obj/item/weapon/stock_parts/manipulator(src) RefreshParts() /obj/machinery/organ_printer/examine(var/mob/user) . = ..() - to_chat(user, "It is loaded with [stored_matter]/[max_stored_matter] matter units.") + var/biomass = get_biomass_volume() + if(biomass) + to_chat(user, "It is loaded with [biomass] units of biomass.") + else + to_chat(user, "It is not loaded with any biomass.") /obj/machinery/organ_printer/RefreshParts() - print_delay = initial(print_delay) - max_stored_matter = 0 - for(var/obj/item/weapon/stock_parts/matter_bin/bin in component_parts) - max_stored_matter += bin.rating * 100 + // Print Delay updating + print_delay = base_print_delay for(var/obj/item/weapon/stock_parts/manipulator/manip in component_parts) print_delay -= (manip.rating-1)*10 print_delay = max(0,print_delay) + . = ..() /obj/machinery/organ_printer/attack_hand(mob/user) @@ -91,6 +95,14 @@ to_chat(user, "\The [src] is busy!") return + if(container) + var/response = alert(user, "What do you want to do?", "Bioprinter Menu", "Print Limbs", "Cancel") + if(response == "Print Limbs") + printing_menu(user) + else + to_chat(user, "\The [src] can't operate without a reagent reservoir!") + +/obj/machinery/organ_printer/proc/printing_menu(mob/user) var/choice = input("What would you like to print?") as null|anything in products if(!choice || printing || (stat & (BROKEN|NOPOWER))) @@ -99,7 +111,7 @@ if(!can_print(choice)) return - stored_matter -= products[choice][2] + container.reagents.remove_reagent("biomass", products[choice][2]) use_power = 2 printing = 1 @@ -118,9 +130,42 @@ print_organ(choice) + return + +/obj/machinery/organ_printer/verb/eject_beaker() + set name = "Eject Beaker" + set category = "Object" + set src in oview(1) + + if(usr.stat != 0) + return + add_fingerprint(usr) + remove_beaker() + return + +// Does exactly what it says it does +// Returns 1 if it succeeds, 0 if it fails. Added in case someone wants to add messages to the user. +/obj/machinery/organ_printer/proc/remove_beaker() + if(container) + container.forceMove(get_turf(src)) + container = null + return 1 + return 0 + +// Checks for reagents, then reports how much biomass it has in it +/obj/machinery/organ_printer/proc/get_biomass_volume() + var/biomass_count = 0 + if(container && container.reagents) + for(var/datum/reagent/R in container.reagents.reagent_list) + if(R.id == "biomass") + biomass_count += R.volume + + return biomass_count + /obj/machinery/organ_printer/proc/can_print(var/choice) - if(stored_matter < products[choice][2]) - visible_message("\The [src] displays a warning: 'Not enough matter. [stored_matter] stored and [products[choice][2]] needed.'") + var/biomass = get_biomass_volume() + if(biomass < products[choice][2]) + visible_message("\The [src] displays a warning: 'Not enough biomass. [biomass] stored and [products[choice][2]] needed.'") return 0 if(!loaded_dna || !loaded_dna["donor"]) @@ -162,6 +207,59 @@ /obj/item/weapon/stock_parts/matter_bin = 2, /obj/item/weapon/stock_parts/manipulator = 2) +// FLESH ORGAN PRINTER +/obj/machinery/organ_printer/flesh + name = "bioprinter" + desc = "It's a machine that prints replacement organs." + icon_state = "bioprinter" + circuit = /obj/item/weapon/circuitboard/bioprinter + +/obj/machinery/organ_printer/flesh/full/New() + . = ..() + container = new /obj/item/weapon/reagent_containers/glass/bottle/biomass(src) + +/obj/machinery/organ_printer/flesh/dismantle() + var/turf/T = get_turf(src) + if(T) + if(container) + container.forceMove(T) + container = null + return ..() + +/obj/machinery/organ_printer/flesh/print_organ(var/choice) + var/obj/item/organ/O = ..() + + playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) + visible_message("\The [src] dings, then spits out \a [O].") + return O + +/obj/machinery/organ_printer/flesh/attackby(obj/item/weapon/W, mob/user) + // DNA sample from syringe. + if(istype(W,/obj/item/weapon/reagent_containers/syringe)) //TODO: Make this actually empty the syringe + var/obj/item/weapon/reagent_containers/syringe/S = W + var/datum/reagent/blood/injected = locate() in S.reagents.reagent_list //Grab some blood + if(injected && injected.data) + loaded_dna = injected.data + S.reagents.remove_reagent("blood", injected.volume) + to_chat(user, "You scan the blood sample into the bioprinter.") + return + else if(istype(W,/obj/item/weapon/reagent_containers/glass)) + var/obj/item/weapon/reagent_containers/glass/G = W + if(container) + to_chat(user, "\The [src] already has a container loaded!") + return + else if(do_after(user, 1 SECOND)) + user.visible_message("[user] has loaded \the [G] into \the [src].", "You load \the [G] into \the [src].") + container = G + user.drop_item() + G.forceMove(src) + return + + return ..() +// END FLESH ORGAN PRINTER + + +/* Roboprinter is made obsolete by the system already in place and mapped into Robotics /obj/item/weapon/circuitboard/roboprinter name = "roboprinter circuit" build_path = /obj/machinery/organ_printer/robot @@ -224,53 +322,4 @@ return return ..() // END ROBOT ORGAN PRINTER - -// FLESH ORGAN PRINTER -/obj/machinery/organ_printer/flesh - name = "bioprinter" - desc = "It's a machine that prints replacement organs." - icon_state = "bioprinter" - circuit = /obj/item/weapon/circuitboard/bioprinter - - var/amount_per_slab = 50 - -/obj/machinery/organ_printer/flesh/full/New() - . = ..() - stored_matter = max_stored_matter - -/obj/machinery/organ_printer/flesh/dismantle() - var/turf/T = get_turf(src) - if(T) - while(stored_matter >= amount_per_slab) - stored_matter -= amount_per_slab - new /obj/item/weapon/reagent_containers/food/snacks/meat(T) - return ..() - -/obj/machinery/organ_printer/flesh/print_organ(var/choice) - var/obj/item/organ/O = ..() - - playsound(src.loc, 'sound/machines/ding.ogg', 50, 1) - visible_message("\The [src] dings, then spits out \a [O].") - return O - -/obj/machinery/organ_printer/flesh/attackby(obj/item/weapon/W, mob/user) - // Load with matter for printing. - if(istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat)) - if((max_stored_matter - stored_matter) < amount_per_slab) - to_chat(user, "\The [src] is too full.") - return - stored_matter += amount_per_slab - user.drop_item() - to_chat(user, "\The [src] processes \the [W]. Levels of stored biomass now: [stored_matter]") - qdel(W) - return - // DNA sample from syringe. - else if(istype(W,/obj/item/weapon/reagent_containers/syringe)) //TODO: Make this actually empty the syringe - var/obj/item/weapon/reagent_containers/syringe/S = W - var/datum/reagent/blood/injected = locate() in S.reagents.reagent_list //Grab some blood - if(injected && injected.data) - loaded_dna = injected.data - to_chat(user, "You scan the blood sample into the bioprinter.") - return - return ..() -// END FLESH ORGAN PRINTER \ No newline at end of file +*/ \ No newline at end of file diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 4e1d015033..c25ec8dbbd 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -23,7 +23,7 @@ break return selected -#define CLONE_BIOMASS 150 +#define CLONE_BIOMASS 60 /obj/machinery/clonepod name = "cloning pod" @@ -33,17 +33,18 @@ circuit = /obj/item/weapon/circuitboard/clonepod icon = 'icons/obj/cloning.dmi' icon_state = "pod_0" - req_access = list(access_genetics) //For premature unlocking. + req_access = list(access_genetics) // For premature unlocking. var/mob/living/occupant - var/heal_level = 20 //The clone is released once its health reaches this level. + var/heal_level = 20 // The clone is released once its health reaches this level. var/heal_rate = 1 - var/notoxin = 0 var/locked = 0 var/obj/machinery/computer/cloning/connected = null //So we remember the connected clone machine. - var/mess = 0 //Need to clean out it if it's full of exploded clone. - var/attempting = 0 //One clone attempt at a time thanks - var/eject_wait = 0 //Don't eject them as soon as they are created fuckkk - var/biomass = CLONE_BIOMASS * 3 + var/mess = 0 // Need to clean out it if it's full of exploded clone. + var/attempting = 0 // One clone attempt at a time thanks + var/eject_wait = 0 // Don't eject them as soon as they are created fuckkk + + var/list/containers = list() // Beakers for our liquid biomass + var/container_limit = 3 // How many beakers can the machine hold? /obj/machinery/clonepod/New() ..() @@ -68,11 +69,9 @@ return if((!isnull(occupant)) && (occupant.stat != 2)) var/completion = (100 * ((occupant.health + 50) / (heal_level + 100))) // Clones start at -150 health - user << "Current clone cycle is [round(completion)]% complete." + to_chat(user, "Current clone cycle is [round(completion)]% complete.") return -//Clonepod - //Start growing a human clone in the pod! /obj/machinery/clonepod/proc/growclone(var/datum/dna2/record/R) if(mess || attempting) @@ -98,6 +97,9 @@ if(istype(modifier_type, /datum/modifier/no_clone)) return 0 + // Remove biomass when the cloning is started, rather than when the guy pops out + remove_biomass(CLONE_BIOMASS) + attempting = 1 //One at a time!! locked = 1 @@ -164,6 +166,7 @@ for(var/datum/language/L in R.languages) H.add_language(L.name) + H.flavor_texts = R.flavor.Copy() H.suiciding = 0 attempting = 0 @@ -171,16 +174,6 @@ //Grow clones to maturity then kick them out. FREELOADERS /obj/machinery/clonepod/process() - - var/visible_message = 0 - for(var/obj/item/weapon/reagent_containers/food/snacks/meat/meat in range(1, src)) - qdel(meat) - biomass += 50 - visible_message = 1 // Prevent chatspam when multiple meat are near - - if(visible_message) - visible_message("[src] sucks in and processes the nearby biomass.") - if(stat & NOPOWER) //Autoeject if power is lost if(occupant) locked = 0 @@ -240,25 +233,34 @@ return if(istype(W, /obj/item/weapon/card/id)||istype(W, /obj/item/device/pda)) if(!check_access(W)) - user << "Access Denied." + to_chat(user, "Access Denied.") return if((!locked) || (isnull(occupant))) return if((occupant.health < -20) && (occupant.stat != 2)) - user << "Access Refused." + to_chat(user, "Access Refused.") return else locked = 0 - user << "System unlocked." - else if(istype(W, /obj/item/weapon/reagent_containers/food/snacks/meat)) - user << "\The [src] processes \the [W]." - biomass += 50 - user.drop_item() - qdel(W) - return + to_chat(user, "System unlocked.") + else if(istype(W,/obj/item/weapon/reagent_containers/glass)) + var/obj/item/weapon/reagent_containers/glass/G = W + if(LAZYLEN(containers)) + if(containers.len >= container_limit) + to_chat(user, "\The [src] has too many containers loaded!") + return + else if(do_after(user, 1 SECOND)) + user.visible_message("[user] has loaded \the [G] into \the [src].", "You load \the [G] into \the [src].") + containers += G + user.drop_item() + G.forceMove(src) + return + else + to_chat(user, "\The [src] doesn't have room for \the [G.name].") + return else if(istype(W, /obj/item/weapon/wrench)) if(locked && (anchored || occupant)) - user << "Can not do that while [src] is in use." + to_chat(user, "Can not do that while [src] is in use.") else if(anchored) anchored = 0 @@ -274,7 +276,7 @@ else if(istype(W, /obj/item/device/multitool)) var/obj/item/device/multitool/M = W M.connecting = src - user << "You load connection data from [src] to [M]." + to_chat(user, "You load connection data from [src] to [M].") M.update_icon() return else @@ -283,7 +285,7 @@ /obj/machinery/clonepod/emag_act(var/remaining_charges, var/mob/user) if(isnull(occupant)) return - user << "You force an emergency ejection." + to_chat(user, "You force an emergency ejection.") locked = 0 go_out() return 1 @@ -308,10 +310,6 @@ heal_level = rating * 10 - 20 heal_rate = round(rating / 4) - if(rating >= 8) - notoxin = 1 - else - notoxin = 0 /obj/machinery/clonepod/verb/eject() set name = "Eject Cloner" @@ -348,10 +346,66 @@ domutcheck(occupant) //Waiting until they're out before possible transforming. occupant = null - biomass -= CLONE_BIOMASS update_icon() return +// Returns the total amount of biomass reagent in all of the pod's stored containers +/obj/machinery/clonepod/proc/get_biomass() + var/biomass_count = 0 + if(LAZYLEN(containers)) + for(var/obj/item/weapon/reagent_containers/glass/G in containers) + for(var/datum/reagent/R in G.reagents.reagent_list) + if(R.id == "biomass") + biomass_count += R.volume + + return biomass_count + +// Removes [amount] biomass, spread across all containers. Doesn't have any check that you actually HAVE enough biomass, though. +/obj/machinery/clonepod/proc/remove_biomass(var/amount = CLONE_BIOMASS) //Just in case it doesn't get passed a new amount, assume one clone + var/to_remove = 0 // Tracks how much biomass has been found so far + if(LAZYLEN(containers)) + for(var/obj/item/weapon/reagent_containers/glass/G in containers) + if(to_remove < amount) //If we have what we need, we can stop. Checked every time we switch beakers + for(var/datum/reagent/R in G.reagents.reagent_list) + if(R.id == "biomass") // Finds Biomass + var/need_remove = max(0, amount - to_remove) //Figures out how much biomass is in this container + if(R.volume >= need_remove) //If we have more than enough in this beaker, only take what we need + R.remove_self(need_remove) + to_remove = amount + else //Otherwise, take everything and move on + to_remove += R.volume + R.remove_self(R.volume) + else + continue + else + return 1 + return 0 + +// Empties all of the beakers from the cloning pod, used to refill it +/obj/machinery/clonepod/verb/empty_beakers() + set name = "Eject Beakers" + set category = "Object" + set src in oview(1) + + if(usr.stat != 0) + return + + add_fingerprint(usr) + drop_beakers() + return + +// Actually does all of the beaker dropping +// Returns 1 if it succeeds, 0 if it fails. Added in case someone wants to add messages to the user. +/obj/machinery/clonepod/proc/drop_beakers() + if(LAZYLEN(containers)) + var/turf/T = get_turf(src) + if(T) + for(var/obj/item/weapon/reagent_containers/glass/G in containers) + G.forceMove(T) + containers -= G + return 1 + return 0 + /obj/machinery/clonepod/proc/malfunction() if(occupant) connected_message("Critical Error!") @@ -406,6 +460,12 @@ else if(mess) icon_state = "pod_g" + +/obj/machinery/clonepod/full/New() + ..() + for(var/i = 1 to container_limit) + containers += new /obj/item/weapon/reagent_containers/glass/bottle/biomass(src) + //Health Tracker Implant /obj/item/weapon/implant/health @@ -475,11 +535,11 @@ /obj/item/weapon/disk/data/attack_self(mob/user as mob) read_only = !read_only - user << "You flip the write-protect tab to [read_only ? "protected" : "unprotected"]." + to_chat(user, "You flip the write-protect tab to [read_only ? "protected" : "unprotected"].") /obj/item/weapon/disk/data/examine(mob/user) ..(user) - user << text("The write-protect tab is set to [read_only ? "protected" : "unprotected"].") + to_chat(user, text("The write-protect tab is set to [read_only ? "protected" : "unprotected"].")) return /* diff --git a/code/game/machinery/computer/cloning.dm b/code/game/machinery/computer/cloning.dm index 4935a2a552..9660eca8bc 100644 --- a/code/game/machinery/computer/cloning.dm +++ b/code/game/machinery/computer/cloning.dm @@ -67,7 +67,7 @@ user.drop_item() W.loc = src diskette = W - user << "You insert [W]." + to_chat(user, "You insert [W].") updateUsrDialog() return else if(istype(W, /obj/item/device/multitool)) @@ -77,7 +77,7 @@ pods += P P.connected = src P.name = "[initial(P.name)] #[pods.len]" - user << "You connect [P] to [src]." + to_chat(user, "You connect [P] to [src].") else if (menu == 4 && (istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))) if(check_access(W)) @@ -116,7 +116,7 @@ var/pods_list_ui[0] for(var/obj/machinery/clonepod/pod in pods) - pods_list_ui[++pods_list_ui.len] = list("pod" = pod, "biomass" = pod.biomass) + pods_list_ui[++pods_list_ui.len] = list("pod" = pod, "biomass" = pod.get_biomass()) if(pods) data["pods"] = pods_list_ui @@ -244,7 +244,7 @@ //Look for that player! They better be dead! if(istype(C)) //Can't clone without someone to clone. Or a pod. Or if the pod is busy. Or full of gibs. - if(!pods.len) + if(!LAZYLEN(pods)) temp = "Error: No clone pods detected." else var/obj/machinery/clonepod/pod = pods[1] @@ -252,13 +252,12 @@ pod = input(usr,"Select a cloning pod to use", "Pod selection") as anything in pods if(pod.occupant) temp = "Error: Clonepod is currently occupied." - else if(pod.biomass < CLONE_BIOMASS) + else if(pod.get_biomass() < CLONE_BIOMASS) temp = "Error: Not enough biomass." else if(pod.mess) temp = "Error: Clonepod malfunction." else if(!config.revival_cloning) temp = "Error: Unable to initiate cloning cycle." - else if(pod.growclone(C)) temp = "Initiating cloning cycle..." records.Remove(C) diff --git a/code/game/machinery/computer3/laptop.dm b/code/game/machinery/computer3/laptop.dm index 38db574200..9a8ba02b00 100644 --- a/code/game/machinery/computer3/laptop.dm +++ b/code/game/machinery/computer3/laptop.dm @@ -28,6 +28,9 @@ var/obj/machinery/computer3/laptop/stored_computer = null +/obj/item/device/laptop/get_cell() + return stored_computer.battery + /obj/item/device/laptop/verb/open_computer() set name = "Open Laptop" set category = "Object" diff --git a/code/game/machinery/recharger.dm b/code/game/machinery/recharger.dm index 85f97f49aa..b51edaf189 100644 --- a/code/game/machinery/recharger.dm +++ b/code/game/machinery/recharger.dm @@ -41,35 +41,12 @@ obj/machinery/recharger return if(istype(G, /obj/item/weapon/gun/energy)) var/obj/item/weapon/gun/energy/E = G - if(!E.power_supply) - to_chat(user, "Your gun has no power cell.") - return if(E.self_recharge) to_chat(user, "Your gun has no recharge port.") return - if(istype(G, /obj/item/weapon/gun/energy/staff)) + if(!G.get_cell()) + to_chat(user, "This device does not have a battery installed.") return - if(istype(G, /obj/item/device/flashlight)) - var/obj/item/device/flashlight/F = G - if(!F.power_use) - return - if(!F.cell) - return - if(istype(G, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = G - if(!L.stored_computer.battery) - user << "There's no battery in it!" - return - if(istype(G, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/assembly = G - if(!assembly.battery) - to_chat(user, "The assembly doesn't have a power cell.") - return - if(istype(G, /obj/item/weapon/weldingtool/electric)) - var/obj/item/weapon/weldingtool/electric/welder = G - if(!welder.power_supply) - to_chat(user, "Your welder has no power cell.") - return user.drop_item() G.loc = src @@ -109,71 +86,8 @@ obj/machinery/recharger update_use_power(1) icon_state = icon_state_idle else - if(istype(charging, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = charging - if(!E.power_supply.fully_charged()) - icon_state = icon_state_charging - E.power_supply.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/gun/magnetic)) - var/obj/item/weapon/gun/magnetic/M = charging - if(!M.cell.fully_charged()) - icon_state = icon_state_charging - M.cell.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/melee/baton)) - var/obj/item/weapon/melee/baton/B = charging - if(B.bcell) - if(!B.bcell.fully_charged()) - icon_state = icon_state_charging - B.bcell.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - else - icon_state = icon_state_idle - update_use_power(1) - return - - if(istype(charging, /obj/item/device/laptop)) - var/obj/item/device/laptop/L = charging - if(!L.stored_computer.battery.fully_charged()) - icon_state = icon_state_charging - L.stored_computer.battery.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return - - if(istype(charging, /obj/item/device/flashlight)) - var/obj/item/device/flashlight/F = charging - if(F.cell) - if(!F.cell.fully_charged()) - icon_state = icon_state_charging - F.cell.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - else - icon_state = icon_state_idle - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/cell)) - var/obj/item/weapon/cell/C = charging + var/obj/item/weapon/cell/C = charging.get_cell() + if(istype(C)) if(!C.fully_charged()) icon_state = icon_state_charging C.give(active_power_usage*CELLRATE) @@ -181,48 +95,17 @@ obj/machinery/recharger else icon_state = icon_state_charged update_use_power(1) - return - - if(istype(charging, /obj/item/device/electronic_assembly)) - var/obj/item/device/electronic_assembly/assembly = charging - if(assembly.battery) - if(!assembly.battery.fully_charged()) - icon_state = icon_state_charging - assembly.battery.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - else - icon_state = icon_state_idle - update_use_power(1) - return - - if(istype(charging, /obj/item/weapon/weldingtool/electric)) - var/obj/item/weapon/weldingtool/electric/C = charging - if(!C.power_supply.fully_charged()) - icon_state = icon_state_charging - C.power_supply.give(active_power_usage*CELLRATE) - update_use_power(2) - else - icon_state = icon_state_charged - update_use_power(1) - return /obj/machinery/recharger/emp_act(severity) if(stat & (NOPOWER|BROKEN) || !anchored) ..(severity) return - if(istype(charging, /obj/item/weapon/gun/energy)) - var/obj/item/weapon/gun/energy/E = charging - if(E.power_supply) - E.power_supply.emp_act(severity) + if(charging) + var/obj/item/weapon/cell/C = charging.get_cell() + if(istype(C)) + C.emp_act(severity) - else if(istype(charging, /obj/item/weapon/melee/baton)) - var/obj/item/weapon/melee/baton/B = charging - if(B.bcell) - B.bcell.charge = 0 ..(severity) /obj/machinery/recharger/update_icon() //we have an update_icon() in addition to the stuff in process to make it feel a tiny bit snappier. @@ -231,7 +114,6 @@ obj/machinery/recharger else icon_state = icon_state_idle - /obj/machinery/recharger/wallcharger name = "wall recharger" icon = 'icons/obj/stationobjs.dmi' diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm index d69c2c9d92..44d3c98c8c 100644 --- a/code/game/objects/items/devices/flashlight.dm +++ b/code/game/objects/items/devices/flashlight.dm @@ -41,6 +41,9 @@ processing_objects -= src return ..() +/obj/item/device/flashlight/get_cell() + return cell + /obj/item/device/flashlight/verb/toggle() set name = "Toggle Flashlight Brightness" set category = "Object" diff --git a/code/game/objects/items/devices/radio/jammer.dm b/code/game/objects/items/devices/radio/jammer.dm index 680b5e2b37..868f90251c 100644 --- a/code/game/objects/items/devices/radio/jammer.dm +++ b/code/game/objects/items/devices/radio/jammer.dm @@ -38,6 +38,9 @@ var/global/list/active_radio_jammers = list() qdel_null(power_source) return ..() +/obj/item/device/radio_jammer/get_cell() + return power_source + /obj/item/device/radio_jammer/proc/turn_off(mob/user) if(user) to_chat(user,"\The [src] deactivates.") diff --git a/code/game/objects/items/weapons/stunbaton.dm b/code/game/objects/items/weapons/stunbaton.dm index 268a8d5ad7..e37b2f9977 100644 --- a/code/game/objects/items/weapons/stunbaton.dm +++ b/code/game/objects/items/weapons/stunbaton.dm @@ -19,16 +19,19 @@ var/obj/item/weapon/cell/bcell = null var/hitcost = 240 -/obj/item/weapon/melee/baton/suicide_act(mob/user) - var/datum/gender/TU = gender_datums[user.get_visible_gender()] - user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.") - return (FIRELOSS) - /obj/item/weapon/melee/baton/New() ..() update_icon() return +/obj/item/weapon/melee/baton/get_cell() + return bcell + +/obj/item/weapon/melee/baton/suicide_act(mob/user) + var/datum/gender/TU = gender_datums[user.get_visible_gender()] + user.visible_message("\The [user] is putting the live [name] in [TU.his] mouth! It looks like [TU.he] [TU.is] trying to commit suicide.") + return (FIRELOSS) + /obj/item/weapon/melee/baton/MouseDrop(obj/over_object as obj) if(!canremove) return diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm index 7cd6925f8d..0ee916a162 100644 --- a/code/game/objects/items/weapons/tools.dm +++ b/code/game/objects/items/weapons/tools.dm @@ -775,6 +775,9 @@ acti_sound = 'sound/effects/sparks4.ogg' deac_sound = 'sound/effects/sparks4.ogg' +/obj/item/weapon/weldingtool/electric/unloaded/New() + cell_type = null + /obj/item/weapon/weldingtool/electric/New() ..() if(cell_type == null) @@ -785,8 +788,8 @@ power_supply = new /obj/item/weapon/cell/device(src) update_icon() -/obj/item/weapon/weldingtool/electric/unloaded/New() - cell_type = null +/obj/item/weapon/weldingtool/electric/get_cell() + return power_supply /obj/item/weapon/weldingtool/electric/examine(mob/user) if(get_dist(src, user) > 1) diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 3835b2a24b..0facb97eac 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -163,3 +163,6 @@ /obj/proc/show_message(msg, type, alt, alt_type)//Message, type of message (1 or 2), alternative message, alt message type (1 or 2) return + +/obj/proc/get_cell() + return \ No newline at end of file diff --git a/code/modules/integrated_electronics/core/device.dm b/code/modules/integrated_electronics/core/device.dm index 6b89a299a4..91243aefab 100644 --- a/code/modules/integrated_electronics/core/device.dm +++ b/code/modules/integrated_electronics/core/device.dm @@ -19,6 +19,9 @@ else ..() +/obj/item/device/electronic_assembly/get_cell() + return battery + /obj/item/device/assembly/electronic_assembly/proc/toggle_open(mob/user) playsound(get_turf(src), 'sound/items/Crowbar.ogg', 50, 1) opened = !opened diff --git a/code/modules/mob/_modifiers/aura.dm b/code/modules/mob/_modifiers/aura.dm new file mode 100644 index 0000000000..f72ca67d1a --- /dev/null +++ b/code/modules/mob/_modifiers/aura.dm @@ -0,0 +1,18 @@ +/* +'Aura' modifiers are semi-permanent, in that they do not have a set duration, but will expire if out of range of the 'source' of the aura. +Note: The source is defined as an argument in New(), and if not specified, it is assumed the holder is the source, +making it not expire ever, which is likely not what you want. +*/ + +/datum/modifier/aura + var/aura_max_distance = 5 // If more than this many tiles away from the source, the modifier expires next tick. + +/datum/modifier/aura/check_if_valid() + if(!origin) + expire() + var/atom/A = origin.resolve() + if(istype(A)) // Make sure we're not null. + if(get_dist(holder, A) > aura_max_distance) + expire() + else + expire() // Source got deleted or something. \ No newline at end of file diff --git a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm index 2ada79408d..3e783f9193 100644 --- a/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm +++ b/code/modules/mob/living/simple_mob/subtypes/mechanical/hivebot/ranged_damage.dm @@ -130,36 +130,9 @@ desc = "A large robot capable of irradiating a large area from afar." projectiletype = /obj/item/projectile/arc/radioactive -/obj/item/projectile/arc/radioactive - name = "radiation blast" - icon_state = "green_pellet" - icon_scale = 2 - var/rad_power = 50 - -/obj/item/projectile/arc/radioactive/on_impact(turf/T) - radiation_repository.radiate(T, rad_power) - // Essentially a long ranged frag grenade. /mob/living/simple_mob/mechanical/hivebot/ranged_damage/siege/fragmentation name = "anti-personnel artillery hivebot" desc = "A large robot capable of delivering fragmentation shells to rip apart their fleshy enemies." - projectiletype = /obj/item/projectile/arc/fragmentation - -/obj/item/projectile/arc/fragmentation - name = "fragmentation shot" - icon_state = "shell" - var/list/fragment_types = list( - /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment, \ - /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong - ) - var/fragment_amount = 63 // Same as a grenade. - var/spread_range = 7 - -/obj/item/projectile/arc/fragmentation/on_impact(turf/T) - fragmentate(T, fragment_amount, spread_range, fragment_types) - - - - - + projectiletype = /obj/item/projectile/arc/fragmentation \ No newline at end of file diff --git a/code/modules/organs/organ_icon.dm b/code/modules/organs/organ_icon.dm index b76b52e1c0..1f5f583324 100644 --- a/code/modules/organs/organ_icon.dm +++ b/code/modules/organs/organ_icon.dm @@ -4,13 +4,13 @@ var/global/list/limb_icon_cache = list() return /obj/item/organ/external/proc/compile_icon() - overlays.Cut() + cut_overlays() // This is a kludge, only one icon has more than one generation of children though. for(var/obj/item/organ/external/organ in contents) if(organ.children && organ.children.len) for(var/obj/item/organ/external/child in organ.children) overlays += child.mob_icon - overlays += organ.mob_icon + add_overlay(organ.mob_icon) /obj/item/organ/external/proc/sync_colour_to_human(var/mob/living/carbon/human/human) s_tone = null @@ -94,7 +94,7 @@ var/global/list/limb_icon_cache = list() mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons icon_cache_key += "[M][markings[M]["color"]]" - overlays |= get_hair_icon() + add_overlay(get_hair_icon()) return mob_icon @@ -107,7 +107,7 @@ var/global/list/limb_icon_cache = list() var/icon/facial_s = new/icon("icon" = facial_hair_style.icon, "icon_state" = "[facial_hair_style.icon_state]_s") if(facial_hair_style.do_colouration) facial_s.Blend(rgb(owner.r_facial, owner.g_facial, owner.b_facial), ICON_ADD) - res.overlays |= facial_s + res.add_overlay(facial_s) //Head hair if(owner.h_style && !(owner.head && (owner.head.flags_inv & BLOCKHEADHAIR))) @@ -122,7 +122,7 @@ var/global/list/limb_icon_cache = list() if(hair_style.do_colouration && islist(h_col) && h_col.len >= 3) hair_s.Blend(rgb(h_col[1], h_col[2], h_col[3]), ICON_MULTIPLY) hair_s.Blend(hair_s_add, ICON_ADD) - res.overlays |= hair_s + res.add_overlay(hair_s) return res @@ -164,7 +164,7 @@ var/global/list/limb_icon_cache = list() var/datum/sprite_accessory/marking/mark_style = markings[M]["datum"] var/icon/mark_s = new/icon("icon" = mark_style.icon, "icon_state" = "[mark_style.icon_state]-[organ_tag]") mark_s.Blend(markings[M]["color"], ICON_ADD) - overlays |= mark_s //So when it's not on your body, it has icons + add_overlay(mark_s) //So when it's not on your body, it has icons mob_icon.Blend(mark_s, ICON_OVERLAY) //So when it's on your body, it has icons icon_cache_key += "[M][markings[M]["color"]]" @@ -258,7 +258,7 @@ var/list/robot_hud_colours = list("#CFCFCF","#AFAFAF","#8F8F8F","#6F6F6F","#4F4F var/b = 0.11 * R.health_hud_intensity temp.color = list(r, r, r, g, g, g, b, b, b) hud_damage_image = image(null) - hud_damage_image.overlays += temp + hud_damage_image.add_overlay(temp) // Calculate the required color index. var/dam_state = min(1,((brute_dam+burn_dam)/max_damage)) diff --git a/code/modules/power/cell.dm b/code/modules/power/cell.dm index 4db4d40c4c..f9fca6222f 100644 --- a/code/modules/power/cell.dm +++ b/code/modules/power/cell.dm @@ -41,6 +41,9 @@ processing_objects -= src return ..() +/obj/item/weapon/cell/get_cell() + return src + /obj/item/weapon/cell/process() if(self_recharge) if(world.time >= last_use + charge_delay) diff --git a/code/modules/projectiles/guns/energy.dm b/code/modules/projectiles/guns/energy.dm index c87c37a085..9cfd0d152a 100644 --- a/code/modules/projectiles/guns/energy.dm +++ b/code/modules/projectiles/guns/energy.dm @@ -23,17 +23,6 @@ var/battery_lock = 0 //If set, weapon cannot switch batteries -/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) - ..() - -/obj/item/weapon/gun/energy/switch_firemodes(mob/user) - if(..()) - update_icon() - -/obj/item/weapon/gun/energy/emp_act(severity) - ..() - update_icon() - /obj/item/weapon/gun/energy/New() ..() if(self_recharge) @@ -52,6 +41,9 @@ processing_objects.Remove(src) return ..() +/obj/item/weapon/gun/energy/get_cell() + return power_supply + /obj/item/weapon/gun/energy/process() if(self_recharge) //Every [recharge_time] ticks, recharge a shot for the battery if(world.time > last_shot + charge_delay) //Doesn't work if you've fired recently @@ -75,6 +67,17 @@ charge_tick = 0 return 1 +/obj/item/weapon/gun/energy/attackby(var/obj/item/A as obj, mob/user as mob) + ..() + +/obj/item/weapon/gun/energy/switch_firemodes(mob/user) + if(..()) + update_icon() + +/obj/item/weapon/gun/energy/emp_act(severity) + ..() + update_icon() + /obj/item/weapon/gun/energy/consume_next_projectile() if(!power_supply) return null if(!ispath(projectile_type)) return null diff --git a/code/modules/projectiles/guns/energy/phase.dm b/code/modules/projectiles/guns/energy/phase.dm new file mode 100644 index 0000000000..3e5f8cb186 --- /dev/null +++ b/code/modules/projectiles/guns/energy/phase.dm @@ -0,0 +1,56 @@ +// Phase weapons go here + +/obj/item/weapon/gun/energy/phasegun + name = "phase carbine" + desc = "The NT EW26 Artemis is a downsized energy weapon, specifically designed for use against wildlife." + icon_state = "phasecarbine" + wielded_item_state = "phasecarbine-wielded" + slot_flags = SLOT_BACK|SLOT_BELT + charge_cost = 240 + projectile_type = /obj/item/projectile/energy/phase + one_handed_penalty = 15 + +/obj/item/weapon/gun/energy/phasegun/pistol + name = "phase pistol" + desc = "The NT EW15 Apollo is an energy handgun, specifically designed for self-defense against aggressive wildlife." + icon_state = "phase" + item_state = "taser" //I don't have an in-hand sprite, taser will be fine + w_class = ITEMSIZE_NORMAL + slot_flags = SLOT_BELT|SLOT_HOLSTER + charge_cost = 300 + projectile_type = /obj/item/projectile/energy/phase/light + one_handed_penalty = 0 + +/obj/item/weapon/gun/energy/phasegun/pistol/mounted + name = "mounted phase pistol" + self_recharge = 1 + use_external_power = 1 + +/obj/item/weapon/gun/energy/phasegun/pistol/mounted/cyborg + charge_cost = 400 + recharge_time = 7 + +obj/item/weapon/gun/energy/phasegun/rifle + name = "phase rifle" + desc = "The NT EW31 Orion is a specialist energy weapon, intended for use against hostile wildlife." + icon_state = "phaserifle" + item_state = "phaserifle" + wielded_item_state = "phaserifle-wielded" + slot_flags = SLOT_BACK + charge_cost = 150 + projectile_type = /obj/item/projectile/energy/phase/heavy + accuracy = 15 + one_handed_penalty = 30 + +/obj/item/weapon/gun/energy/phasegun/cannon + name = "phase cannon" + desc = "The NT EW50 Gaia is a massive energy weapon, purpose-built for clearing land. You feel dirty just looking at it." + icon_state = "phasecannon" + item_state = "phasecannon" + wielded_item_state = "phasecannon-wielded" //TODO: New Sprites + w_class = ITEMSIZE_HUGE // This thing is big. + slot_flags = SLOT_BACK + charge_cost = 100 + projectile_type = /obj/item/projectile/energy/phase/heavy/cannon + accuracy = 15 + one_handed_penalty = 65 \ No newline at end of file diff --git a/code/modules/projectiles/guns/energy/special.dm b/code/modules/projectiles/guns/energy/special.dm index 8f18f2f64c..f1e20b169b 100644 --- a/code/modules/projectiles/guns/energy/special.dm +++ b/code/modules/projectiles/guns/energy/special.dm @@ -25,15 +25,6 @@ charge_cost = 480 projectile_type = /obj/item/projectile/ion/pistol -/obj/item/weapon/gun/energy/phasegun - name = "phase pistol" - desc = "The NT Mk26 EW Apollo is an energy handgun, specifically designed for use against wildlife." - icon_state = "phase" - item_state = "taser" //I don't have an in-hand sprite, taser will be fine - slot_flags = SLOT_BELT|SLOT_HOLSTER - charge_cost = 300 - projectile_type = /obj/item/projectile/energy/phase - /obj/item/weapon/gun/energy/decloner name = "biological demolecularisor" desc = "A gun that discharges high amounts of controlled radiation to slowly break a target into component elements." diff --git a/code/modules/projectiles/guns/magnetic/magnetic.dm b/code/modules/projectiles/guns/magnetic/magnetic.dm index cbce1a7aa1..a34db52887 100644 --- a/code/modules/projectiles/guns/magnetic/magnetic.dm +++ b/code/modules/projectiles/guns/magnetic/magnetic.dm @@ -36,6 +36,9 @@ qdel_null(capacitor) . = ..() +/obj/item/weapon/gun/magnetic/get_cell() + return cell + /obj/item/weapon/gun/magnetic/process() if(capacitor) if(cell) diff --git a/code/modules/projectiles/projectile/arc.dm b/code/modules/projectiles/projectile/arc.dm index d80b738e9c..6e434b1e99 100644 --- a/code/modules/projectiles/projectile/arc.dm +++ b/code/modules/projectiles/projectile/arc.dm @@ -78,8 +78,6 @@ // Update our shadow. shadow.forceMove(loc) - - /obj/effect/projectile_shadow name = "shadow" desc = "You better avoid the thing coming down!" @@ -87,7 +85,50 @@ icon_state = "arc_shadow" anchored = TRUE +////////////// +// Subtypes +////////////// -// Subtypes +// Generic, Hivebot related +/obj/item/projectile/arc/blue_energy + name = "energy missile" + icon_state = "force_missile" + damage = 15 + damage_type = BURN +// Fragmentation arc shot +/obj/item/projectile/arc/fragmentation + name = "fragmentation shot" + icon_state = "shell" + var/list/fragment_types = list( + /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment, \ + /obj/item/projectile/bullet/pellet/fragment, /obj/item/projectile/bullet/pellet/fragment/strong + ) + var/fragment_amount = 63 // Same as a grenade. + var/spread_range = 7 +/obj/item/projectile/arc/fragmentation/on_impact(turf/T) + fragmentate(T, fragment_amount, spread_range, fragment_types) + +// EMP arc shot +/obj/item/projectile/arc/emp_blast + name = "emp blast" + icon_state = "bluespace" + +/obj/item/projectile/arc/emp_blast/on_impact(turf/T) + empulse(T, 2, 4, 7, 10) // Normal EMP grenade. + return ..() + +/obj/item/projectile/arc/emp_blast/weak/on_impact(turf/T) + empulse(T, 1, 2, 3, 4) // Sec EMP grenade. + return ..() + +// Radiation arc shot +/obj/item/projectile/arc/radioactive + name = "radiation blast" + icon_state = "green_pellet" + icon_scale = 2 + var/rad_power = 50 + +/obj/item/projectile/arc/radioactive/on_impact(turf/T) + radiation_repository.radiate(T, rad_power) \ No newline at end of file diff --git a/code/modules/projectiles/projectile/energy.dm b/code/modules/projectiles/projectile/energy.dm index d5bae0dc22..3448c2a9e9 100644 --- a/code/modules/projectiles/projectile/energy.dm +++ b/code/modules/projectiles/projectile/energy.dm @@ -212,7 +212,22 @@ muzzle_type = /obj/effect/projectile/pulse/muzzle /obj/item/projectile/energy/phase - kill_count = 4 + name = "phase wave" + icon_state = "phase" + kill_count = 6 damage = 5 - SA_bonus_damage = 55 // 60 total on animals. - SA_vulnerability = SA_ANIMAL \ No newline at end of file + SA_bonus_damage = 45 // 50 total on animals + SA_vulnerability = SA_ANIMAL + +/obj/item/projectile/energy/phase/light + kill_count = 4 + SA_bonus_damage = 35 // 40 total on animals + +/obj/item/projectile/energy/phase/heavy + kill_count = 8 + SA_bonus_damage = 55 // 60 total on animals + +/obj/item/projectile/energy/phase/heavy/cannon + kill_count = 10 + damage = 15 + SA_bonus_damage = 60 // 75 total on animals \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm index 6c83b0e26d..53ce37b3ef 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm @@ -482,3 +482,11 @@ /datum/reagent/luminol/touch_mob(var/mob/living/L) L.reveal_blood() + +/datum/reagent/nutriment/biomass + name = "Biomass" + id = "biomass" + description = "A slurry of compounds that contains the basic requirements for life." + taste_description = "salty meat" + reagent_state = LIQUID + color = "#DF9FBF" \ No newline at end of file diff --git a/code/modules/reagents/Chemistry-Recipes.dm b/code/modules/reagents/Chemistry-Recipes.dm index 6e79670459..5d46650c3f 100644 --- a/code/modules/reagents/Chemistry-Recipes.dm +++ b/code/modules/reagents/Chemistry-Recipes.dm @@ -501,6 +501,7 @@ id = "ammonia" result = "ammonia" required_reagents = list("hydrogen" = 3, "nitrogen" = 1) + inhibitors = list("phoron" = 1) // Messes with lexorin result_amount = 3 /datum/chemical_reaction/diethylamine @@ -2239,4 +2240,12 @@ id = "qerr_quem" result = "qerr_quem" required_reagents = list("nicotine" = 1, "carbon" = 1, "sugar" = 2) - result_amount = 4 \ No newline at end of file + result_amount = 4 + +// Biomass, for cloning and bioprinters +/datum/chemical_reaction/biomass + name = "Biomass" + id = "biomass" + result = "biomass" + required_reagents = list("protein" = 1, "sugar" = 1, "phoron" = 1) + result_amount = 1 // Roughly 20u per phoron sheet \ No newline at end of file diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 26e88caec0..159ac6acf3 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -55,7 +55,6 @@ var/image/lid = image(icon, src, "lid_bottle") overlays += lid - /obj/item/weapon/reagent_containers/glass/bottle/inaprovaline name = "inaprovaline bottle" desc = "A small bottle. Contains inaprovaline - used to stabilize patients." @@ -63,7 +62,6 @@ icon_state = "bottle-4" prefill = list("inaprovaline" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/toxin name = "toxin bottle" desc = "A small bottle of toxins. Do not drink, it is poisonous." @@ -71,7 +69,6 @@ icon_state = "bottle-3" prefill = list("toxin" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/cyanide name = "cyanide bottle" desc = "A small bottle of cyanide. Bitter almonds?" @@ -79,7 +76,6 @@ icon_state = "bottle-3" prefill = list("cyanide" = 30) //volume changed to match chloral - /obj/item/weapon/reagent_containers/glass/bottle/stoxin name = "soporific bottle" desc = "A small bottle of soporific. Just the fumes make you sleepy." @@ -87,15 +83,13 @@ icon_state = "bottle-3" prefill = list("stoxin" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/chloralhydrate - name = "Chloral Hydrate Bottle" + name = "chloral hydrate bottle" desc = "A small bottle of Choral Hydrate. Mickey's Favorite!" icon = 'icons/obj/chemical.dmi' icon_state = "bottle-3" prefill = list("chloralhydrate" = 30) //Intentionally low since it is so strong. Still enough to knock someone out. - /obj/item/weapon/reagent_containers/glass/bottle/antitoxin name = "dylovene bottle" desc = "A small bottle of dylovene. Counters poisons, and repairs damage. A wonder drug." @@ -103,7 +97,6 @@ icon_state = "bottle-4" prefill = list("anti_toxin" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/mutagen name = "unstable mutagen bottle" desc = "A small bottle of unstable mutagen. Randomly changes the DNA structure of whoever comes in contact." @@ -111,7 +104,6 @@ icon_state = "bottle-1" prefill = list("mutagen" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/ammonia name = "ammonia bottle" desc = "A small bottle." @@ -119,7 +111,6 @@ icon_state = "bottle-1" prefill = list("ammonia" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/eznutrient name = "\improper EZ NUtrient bottle" desc = "A small bottle." @@ -127,7 +118,6 @@ icon_state = "bottle-4" prefill = list("eznutrient" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/left4zed name = "\improper Left-4-Zed bottle" desc = "A small bottle." @@ -135,7 +125,6 @@ icon_state = "bottle-4" prefill = list("left4zed" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/robustharvest name = "\improper Robust Harvest" desc = "A small bottle." @@ -143,7 +132,6 @@ icon_state = "bottle-4" prefill = list("robustharvest" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/diethylamine name = "diethylamine bottle" desc = "A small bottle." @@ -152,32 +140,36 @@ prefill = list("diethylamine" = 60) /obj/item/weapon/reagent_containers/glass/bottle/pacid - name = "Polytrinic Acid Bottle" + name = "polytrinic acid bottle" desc = "A small bottle. Contains a small amount of Polytrinic Acid" icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" prefill = list("pacid" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/adminordrazine - name = "Adminordrazine Bottle" + name = "adminordrazine bottle" desc = "A small bottle. Contains the liquid essence of the gods." icon = 'icons/obj/drinks.dmi' icon_state = "holyflask" prefill = list("adminordrazine" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/capsaicin - name = "Capsaicin Bottle" + name = "capsaicin bottle" desc = "A small bottle. Contains hot sauce." icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" prefill = list("capsaicin" = 60) - /obj/item/weapon/reagent_containers/glass/bottle/frostoil - name = "Frost Oil Bottle" + name = "frost oil bottle" desc = "A small bottle. Contains cold sauce." icon = 'icons/obj/chemical.dmi' icon_state = "bottle-4" prefill = list("frostoil" = 60) + +/obj/item/weapon/reagent_containers/glass/bottle/biomass + name = "biomass bottle" + desc = "A bottle of raw biomass! Gross!" + icon = 'icons/obj/chemical.dmi' + icon_state = "bottle-3" + prefill = list("biomass" = 60) \ No newline at end of file diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm index ca5a88db4b..106c655ae2 100644 --- a/code/modules/research/designs.dm +++ b/code/modules/research/designs.dm @@ -79,1828 +79,4 @@ other types of metals and chemistry for reagents). req_tech = list(TECH_DATA = 1) materials = list(DEFAULT_WALL_MATERIAL = 30, "glass" = 10) build_path = /obj/item/weapon/disk/tech_disk - sort_string = "GAAAB" - -/datum/design/item/stock_part - build_type = PROTOLATHE - -/datum/design/item/stock_part/AssembleDesignName() - ..() - name = "Component design ([item_name])" - -/datum/design/item/stock_part/AssembleDesignDesc() - if(!desc) - desc = "A stock part used in the construction of various devices." - -/datum/design/item/stock_part/basic_capacitor - id = "basic_capacitor" - req_tech = list(TECH_POWER = 1) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - build_path = /obj/item/weapon/stock_parts/capacitor - sort_string = "CAAAA" - -/datum/design/item/stock_part/adv_capacitor - id = "adv_capacitor" - req_tech = list(TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - build_path = /obj/item/weapon/stock_parts/capacitor/adv - sort_string = "CAAAB" - -/datum/design/item/stock_part/super_capacitor - id = "super_capacitor" - req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, "gold" = 20) - build_path = /obj/item/weapon/stock_parts/capacitor/super - sort_string = "CAAAC" - -/datum/design/item/stock_part/micro_mani - id = "micro_mani" - req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1) - materials = list(DEFAULT_WALL_MATERIAL = 30) - build_path = /obj/item/weapon/stock_parts/manipulator - sort_string = "CAABA" - -/datum/design/item/stock_part/nano_mani - id = "nano_mani" - req_tech = list(TECH_MATERIAL = 3, TECH_DATA = 2) - materials = list(DEFAULT_WALL_MATERIAL = 30) - build_path = /obj/item/weapon/stock_parts/manipulator/nano - sort_string = "CAABB" - -/datum/design/item/stock_part/pico_mani - id = "pico_mani" - req_tech = list(TECH_MATERIAL = 5, TECH_DATA = 2) - materials = list(DEFAULT_WALL_MATERIAL = 30) - build_path = /obj/item/weapon/stock_parts/manipulator/pico - sort_string = "CAABC" - -/datum/design/item/stock_part/basic_matter_bin - id = "basic_matter_bin" - req_tech = list(TECH_MATERIAL = 1) - materials = list(DEFAULT_WALL_MATERIAL = 80) - build_path = /obj/item/weapon/stock_parts/matter_bin - sort_string = "CAACA" - -/datum/design/item/stock_part/adv_matter_bin - id = "adv_matter_bin" - req_tech = list(TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 80) - build_path = /obj/item/weapon/stock_parts/matter_bin/adv - sort_string = "CAACB" - -/datum/design/item/stock_part/super_matter_bin - id = "super_matter_bin" - req_tech = list(TECH_MATERIAL = 5) - materials = list(DEFAULT_WALL_MATERIAL = 80) - build_path = /obj/item/weapon/stock_parts/matter_bin/super - sort_string = "CAACC" - -/datum/design/item/stock_part/basic_micro_laser - id = "basic_micro_laser" - req_tech = list(TECH_MAGNET = 1) - materials = list(DEFAULT_WALL_MATERIAL = 10, "glass" = 20) - build_path = /obj/item/weapon/stock_parts/micro_laser - sort_string = "CAADA" - -/datum/design/item/stock_part/high_micro_laser - id = "high_micro_laser" - req_tech = list(TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 10, "glass" = 20) - build_path = /obj/item/weapon/stock_parts/micro_laser/high - sort_string = "CAADB" - -/datum/design/item/stock_part/ultra_micro_laser - id = "ultra_micro_laser" - req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5) - materials = list(DEFAULT_WALL_MATERIAL = 10, "glass" = 20, "uranium" = 10) - build_path = /obj/item/weapon/stock_parts/micro_laser/ultra - sort_string = "CAADC" - -/datum/design/item/stock_part/basic_sensor - id = "basic_sensor" - req_tech = list(TECH_MAGNET = 1) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) - build_path = /obj/item/weapon/stock_parts/scanning_module - sort_string = "CAAEA" - -/datum/design/item/stock_part/adv_sensor - id = "adv_sensor" - req_tech = list(TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) - build_path = /obj/item/weapon/stock_parts/scanning_module/adv - sort_string = "CAAEB" - -/datum/design/item/stock_part/phasic_sensor - id = "phasic_sensor" - req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20, "silver" = 10) - build_path = /obj/item/weapon/stock_parts/scanning_module/phasic - sort_string = "CAAEC" - -/datum/design/item/stock_part/RPED - name = "Rapid Part Exchange Device" - desc = "Special mechanical module made to store, sort, and apply standard machine parts." - id = "rped" - req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 15000, "glass" = 5000) - build_path = /obj/item/weapon/storage/part_replacer - sort_string = "CBAAA" - -/datum/design/item/powercell - build_type = PROTOLATHE | MECHFAB - -/datum/design/item/powercell/AssembleDesignName() - name = "Power Cell Model ([item_name])" - -/datum/design/item/powercell/AssembleDesignDesc() - if(build_path) - var/obj/item/weapon/cell/C = build_path - desc = "Allows the construction of power cells that can hold [initial(C.maxcharge)] units of energy." - -/datum/design/item/powercell/Fabricate() - var/obj/item/weapon/cell/C = ..() - C.charge = 0 //shouldn't produce power out of thin air. - return C - -/datum/design/item/powercell/basic - name = "basic" - build_type = PROTOLATHE | MECHFAB - id = "basic_cell" - req_tech = list(TECH_POWER = 1) - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) - build_path = /obj/item/weapon/cell - category = "Misc" - sort_string = "DAAAA" - -/datum/design/item/powercell/high - name = "high-capacity" - build_type = PROTOLATHE | MECHFAB - id = "high_cell" - req_tech = list(TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 60) - build_path = /obj/item/weapon/cell/high - category = "Misc" - sort_string = "DAAAB" - -/datum/design/item/powercell/super - name = "super-capacity" - id = "super_cell" - req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 70) - build_path = /obj/item/weapon/cell/super - category = "Misc" - sort_string = "DAAAC" - -/datum/design/item/powercell/hyper - name = "hyper-capacity" - id = "hyper_cell" - req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4) - materials = list(DEFAULT_WALL_MATERIAL = 400, "gold" = 150, "silver" = 150, "glass" = 70) - build_path = /obj/item/weapon/cell/hyper - category = "Misc" - sort_string = "DAAAD" - -/datum/design/item/powercell/device - name = "device" - build_type = PROTOLATHE - id = "device" - materials = list(DEFAULT_WALL_MATERIAL = 350, "glass" = 25) - build_path = /obj/item/weapon/cell/device - category = "Misc" - sort_string = "DAABA" - -/datum/design/item/powercell/weapon - name = "weapon" - build_type = PROTOLATHE - id = "weapon" - materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) - build_path = /obj/item/weapon/cell/device/weapon - category = "Misc" - sort_string = "DAABB" - -/datum/design/item/hud - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - -/datum/design/item/hud/AssembleDesignName() - ..() - name = "HUD glasses prototype ([item_name])" - -/datum/design/item/hud/AssembleDesignDesc() - desc = "Allows for the construction of \a [item_name] HUD glasses." - -/datum/design/item/hud/health - name = "health scanner" - id = "health_hud" - req_tech = list(TECH_BIO = 2, TECH_MAGNET = 3) - build_path = /obj/item/clothing/glasses/hud/health - sort_string = "GAAAA" - -/datum/design/item/hud/security - name = "security records" - id = "security_hud" - req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2) - build_path = /obj/item/clothing/glasses/hud/security - sort_string = "GAAAB" - -/datum/design/item/hud/mesons - name = "Optical meson scanners design" - desc = "Using the meson-scanning technology those glasses allow you to see through walls, floor or anything else." - id = "mesons" - req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - build_path = /obj/item/clothing/glasses/meson - sort_string = "GAAAC" - -/datum/design/item/weapon/mining/AssembleDesignName() - ..() - name = "Mining equipment design ([item_name])" - -/datum/design/item/weapon/mining/jackhammer - id = "jackhammer" - req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "silver" = 500) - build_path = /obj/item/weapon/pickaxe/jackhammer - sort_string = "KAAAA" - -/datum/design/item/weapon/mining/drill - id = "drill" - req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1000) //expensive, but no need for miners. - build_path = /obj/item/weapon/pickaxe/drill - sort_string = "KAAAB" - -/datum/design/item/weapon/mining/plasmacutter - id = "plasmacutter" - req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 500, "gold" = 500, "phoron" = 500) - build_path = /obj/item/weapon/pickaxe/plasmacutter - sort_string = "KAAAC" - -/datum/design/item/weapon/mining/pick_diamond - id = "pick_diamond" - req_tech = list(TECH_MATERIAL = 6) - materials = list("diamond" = 3000) - build_path = /obj/item/weapon/pickaxe/diamond - sort_string = "KAAAD" - -/datum/design/item/weapon/mining/drill_diamond - id = "drill_diamond" - req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 4) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000, "diamond" = 2000) - build_path = /obj/item/weapon/pickaxe/diamonddrill - sort_string = "KAAAE" - -/datum/design/item/device/depth_scanner - desc = "Used to check spatial depth and density of rock outcroppings." - id = "depth_scanner" - req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 1000) - build_path = /obj/item/device/depth_scanner - sort_string = "KAAAF" - -/////////////////////////////////// -/////////Shield Generators///////// -/////////////////////////////////// -/datum/design/circuit/shield - req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) - materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$gold" = 10000) - -/datum/design/item/medical - materials = list(DEFAULT_WALL_MATERIAL = 30, "glass" = 20) - -/datum/design/item/medical/AssembleDesignName() - ..() - name = "Biotech device prototype ([item_name])" - -/datum/design/item/medical/robot_scanner - desc = "A hand-held scanner able to diagnose robotic injuries." - id = "robot_scanner" - req_tech = list(TECH_MAGNET = 3, TECH_BIO = 2, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 200) - build_path = /obj/item/device/robotanalyzer - sort_string = "MACFA" - -/datum/design/item/medical/mass_spectrometer - desc = "A device for analyzing chemicals in blood." - id = "mass_spectrometer" - req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2) - build_path = /obj/item/device/mass_spectrometer - sort_string = "MACAA" - -/datum/design/item/medical/adv_mass_spectrometer - desc = "A device for analyzing chemicals in blood and their quantities." - id = "adv_mass_spectrometer" - req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4) - build_path = /obj/item/device/mass_spectrometer/adv - sort_string = "MACAB" - -/datum/design/item/medical/reagent_scanner - desc = "A device for identifying chemicals." - id = "reagent_scanner" - req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2) - build_path = /obj/item/device/reagent_scanner - sort_string = "MACBA" - -/datum/design/item/medical/adv_reagent_scanner - desc = "A device for identifying chemicals and their proportions." - id = "adv_reagent_scanner" - req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4) - build_path = /obj/item/device/reagent_scanner/adv - sort_string = "MACBB" - -/datum/design/item/beaker/AssembleDesignName() - name = "Beaker prototype ([item_name])" - -/datum/design/item/beaker/noreact - name = "cryostasis" - desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." - id = "splitbeaker" - req_tech = list(TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000) - build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact - sort_string = "MADAA" - -/datum/design/item/beaker/bluespace - name = TECH_BLUESPACE - desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." - id = "bluespacebeaker" - req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 6) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "phoron" = 3000, "diamond" = 500) - build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace - sort_string = "MADAB" - -/datum/design/item/medical/nanopaste - desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery." - id = "nanopaste" - req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000) - build_path = /obj/item/stack/nanopaste - sort_string = "MBAAA" - -/datum/design/item/medical/scalpel_laser1 - name = "Basic Laser Scalpel" - desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." - id = "scalpel_laser1" - req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500) - build_path = /obj/item/weapon/surgical/scalpel/laser1 - sort_string = "MBBAA" - -/datum/design/item/medical/scalpel_laser2 - name = "Improved Laser Scalpel" - desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." - id = "scalpel_laser2" - req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4) - materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2500) - build_path = /obj/item/weapon/surgical/scalpel/laser2 - sort_string = "MBBAB" - -/datum/design/item/medical/scalpel_laser3 - name = "Advanced Laser Scalpel" - desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" - id = "scalpel_laser3" - req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 5) - materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2000, "gold" = 1500) - build_path = /obj/item/weapon/surgical/scalpel/laser3 - sort_string = "MBBAC" - -/datum/design/item/medical/scalpel_manager - name = "Incision Management System" - desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." - id = "scalpel_manager" - req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_DATA = 4) - materials = list (DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 1500, "gold" = 1500, "diamond" = 750) - build_path = /obj/item/weapon/surgical/scalpel/manager - sort_string = "MBBAD" - -/datum/design/item/medical/bone_clamp - name = "Bone Clamp" - desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel." - id = "bone_clamp" - req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4) - materials = list (DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2500) - build_path = /obj/item/weapon/surgical/bone_clamp - sort_string = "MBBAE" - -/datum/design/item/medical/advanced_roller - name = "advanced roller bed" - desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system." - id = "roller_bed" - req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "phoron" = 2000) - build_path = /obj/item/roller/adv - sort_string = "MBBAF" - -/datum/design/item/medical/improved_analyzer - name = "improved health analyzer" - desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels." - id = "improved_analyzer" - req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 1500) - build_path = /obj/item/device/healthanalyzer/improved - sort_string = "MBBAG" - -/datum/design/item/implant - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - -/datum/design/item/implant/AssembleDesignName() - ..() - name = "Implantable biocircuit design ([item_name])" - -/datum/design/item/implant/chemical - name = "chemical" - id = "implant_chem" - req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3) - build_path = /obj/item/weapon/implantcase/chem - sort_string = "MFAAA" - -/datum/design/item/implant/freedom - name = "freedom" - id = "implant_free" - req_tech = list(TECH_ILLEGAL = 2, TECH_BIO = 3) - build_path = /obj/item/weapon/implantcase/freedom - sort_string = "MFAAB" - -/datum/design/item/weapon/AssembleDesignName() - ..() - name = "Weapon prototype ([item_name])" - -/datum/design/item/weapon/AssembleDesignDesc() - if(!desc) - if(build_path) - var/obj/item/I = build_path - desc = initial(I.desc) - ..() - -/datum/design/item/weapon/stunrevolver - id = "stunrevolver" - req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 4000) - build_path = /obj/item/weapon/gun/energy/stunrevolver - sort_string = "TAAAA" - -/datum/design/item/weapon/nuclear_gun - id = "nuclear_gun" - req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "uranium" = 500) - build_path = /obj/item/weapon/gun/energy/gun/nuclear - sort_string = "TAAAB" - -/datum/design/item/weapon/lasercannon - desc = "The lasing medium of this prototype is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core." - id = "lasercannon" - req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1000, "diamond" = 2000) - build_path = /obj/item/weapon/gun/energy/lasercannon - sort_string = "TAAAC" - -/datum/design/item/weapon/phoronpistol - id = "ppistol" - req_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "phoron" = 3000) - build_path = /obj/item/weapon/gun/energy/toxgun - sort_string = "TAAAD" - -/datum/design/item/weapon/decloner - id = "decloner" - req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6) - materials = list("gold" = 5000,"uranium" = 10000) - build_path = /obj/item/weapon/gun/energy/decloner - sort_string = "TAAAE" - -/datum/design/item/weapon/smg - id = "smg" - req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 8000, "silver" = 2000, "diamond" = 1000) - build_path = /obj/item/weapon/gun/projectile/automatic - sort_string = "TAABA" - -/datum/design/item/weapon/ammo_9mm - id = "ammo_9mm" - req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100) - build_path = /obj/item/ammo_magazine/box/c9mm - sort_string = "TAACA" - -/datum/design/item/weapon/stunshell - desc = "A stunning shell for a shotgun." - id = "stunshell" - req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) - materials = list(DEFAULT_WALL_MATERIAL = 4000) - build_path = /obj/item/ammo_casing/a12g/stunshell - sort_string = "TAACB" - -/datum/design/item/weapon/chemsprayer - desc = "An advanced chem spraying device." - id = "chemsprayer" - req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000) - build_path = /obj/item/weapon/reagent_containers/spray/chemsprayer - sort_string = "TABAA" - -/datum/design/item/weapon/rapidsyringe - id = "rapidsyringe" - req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000) - build_path = /obj/item/weapon/gun/launcher/syringe/rapid - sort_string = "TABAB" - -/datum/design/item/weapon/temp_gun - desc = "A gun that shoots high-powered glass-encased energy temperature bullets." - id = "temp_gun" - req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 500, "silver" = 3000) - build_path = /obj/item/weapon/gun/energy/temperature - sort_string = "TABAC" - -/datum/design/item/weapon/large_grenade - id = "large_Grenade" - req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 3000) - build_path = /obj/item/weapon/grenade/chem_grenade/large - sort_string = "TACAA" - -/datum/design/item/weapon/dartgun - desc = "A gun that fires small hollow chemical-payload darts." - id = "dartgun_r" - req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_BIO = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 1) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "gold" = 5000, "silver" = 2500, "glass" = 750) - build_path = /obj/item/weapon/gun/projectile/dartgun/research - sort_string = "TACAB" - -/datum/design/item/weapon/dartgunmag_small - id = "dartgun_mag_s" - req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) - materials = list(DEFAULT_WALL_MATERIAL = 300, "gold" = 100, "silver" = 100, "glass" = 300) - build_path = /obj/item/ammo_magazine/chemdart/small - sort_string = "TACAC" - -/datum/design/item/weapon/dartgun_ammo_small - id = "dartgun_ammo_s" - req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) - materials = list(DEFAULT_WALL_MATERIAL = 50, "gold" = 30, "silver" = 30, "glass" = 50) - build_path = /obj/item/ammo_casing/chemdart/small - sort_string = "TACAD" - -/datum/design/item/weapon/dartgunmag_med - id = "dartgun_mag_m" - req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) - materials = list(DEFAULT_WALL_MATERIAL = 500, "gold" = 150, "silver" = 150, "diamond" = 200, "glass" = 400) - build_path = /obj/item/ammo_magazine/chemdart - sort_string = "TACAE" - -/datum/design/item/weapon/dartgun_ammo_med - id = "dartgun_ammo_m" - req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) - materials = list(DEFAULT_WALL_MATERIAL = 80, "gold" = 40, "silver" = 40, "glass" = 60) - build_path = /obj/item/ammo_casing/chemdart - sort_string = "TACAF" - -/datum/design/item/weapon/fuelrod - id = "fuelrod_gun" - req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5) - materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "gold" = 500, "silver" = 500, "uranium" = 1000, "phoron" = 3000, "diamond" = 1000) - build_path = /obj/item/weapon/gun/magnetic/fuelrod - sort_string = "TACBA" - -/datum/design/item/weapon/flora_gun - id = "flora_gun" - req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "uranium" = 500) - build_path = /obj/item/weapon/gun/energy/floragun - sort_string = "TBAAA" - -/datum/design/item/weapon/slimebation - id = "slimebation" - req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3) - materials = list(DEFAULT_WALL_MATERIAL = 5000) - build_path = /obj/item/weapon/melee/baton/slime - sort_string = "TBAAB" - -/datum/design/item/weapon/slimetaser - id = "slimetaser" - req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4) - materials = list(DEFAULT_WALL_MATERIAL = 5000) - build_path = /obj/item/weapon/gun/energy/taser/xeno - sort_string = "TBAAC" - -/datum/design/item/stock_part/subspace_ansible - id = "s-ansible" - req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 80, "silver" = 20) - build_path = /obj/item/weapon/stock_parts/subspace/ansible - sort_string = "UAAAA" - -/datum/design/item/stock_part/hyperwave_filter - id = "s-filter" - req_tech = list(TECH_DATA = 3, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 40, "silver" = 10) - build_path = /obj/item/weapon/stock_parts/subspace/sub_filter - sort_string = "UAAAB" - -/datum/design/item/stock_part/subspace_amplifier - id = "s-amplifier" - req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 10, "gold" = 30, "uranium" = 15) - build_path = /obj/item/weapon/stock_parts/subspace/amplifier - sort_string = "UAAAC" - -/datum/design/item/stock_part/subspace_treatment - id = "s-treatment" - req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 10, "silver" = 20) - build_path = /obj/item/weapon/stock_parts/subspace/treatment - sort_string = "UAAAD" - -/datum/design/item/stock_part/subspace_analyzer - id = "s-analyzer" - req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 10, "gold" = 15) - build_path = /obj/item/weapon/stock_parts/subspace/analyzer - sort_string = "UAAAE" - -/datum/design/item/stock_part/subspace_crystal - id = "s-crystal" - req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) - materials = list("glass" = 1000, "silver" = 20, "gold" = 20) - build_path = /obj/item/weapon/stock_parts/subspace/crystal - sort_string = "UAAAF" - -/datum/design/item/stock_part/subspace_transmitter - id = "s-transmitter" - req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5, TECH_BLUESPACE = 3) - materials = list("glass" = 100, "silver" = 10, "uranium" = 15) - build_path = /obj/item/weapon/stock_parts/subspace/transmitter - sort_string = "UAAAG" - -/datum/design/item/device/ano_scanner - name = "Alden-Saraspova counter" - id = "ano_scanner" - desc = "Aids in triangulation of exotic particles." - req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 5000) - build_path = /obj/item/device/ano_scanner - sort_string = "UAAAH" - -/datum/design/item/light_replacer - name = "Light replacer" - desc = "A device to automatically replace lights. Refill with working lightbulbs." - id = "light_replacer" - req_tech = list(TECH_MAGNET = 3, TECH_MATERIAL = 4) - materials = list(DEFAULT_WALL_MATERIAL = 1500, "silver" = 150, "glass" = 3000) - build_path = /obj/item/device/lightreplacer - sort_string = "VAAAH" - -datum/design/item/laserpointer - name = "laser pointer" - desc = "Don't shine it in your eyes!" - id = "laser_pointer" - req_tech = list(TECH_MAGNET = 3) - materials = list(DEFAULT_WALL_MATERIAL = 100, "glass" = 50) - build_path = /obj/item/device/laser_pointer - sort_string = "VAAAI" - -/datum/design/item/paicard - name = "'pAI', personal artificial intelligence device" - id = "paicard" - req_tech = list(TECH_DATA = 2) - materials = list("glass" = 500, DEFAULT_WALL_MATERIAL = 500) - build_path = /obj/item/device/paicard - sort_string = "VABAI" - -/datum/design/item/communicator - name = "Communicator" - id = "communicator" - req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) - build_path = /obj/item/device/communicator - sort_string = "VABAJ" - -/datum/design/item/intellicard - name = "'intelliCore', AI preservation and transportation system" - desc = "Allows for the construction of an intelliCore." - id = "intellicore" - req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) - materials = list("glass" = 1000, "gold" = 200) - build_path = /obj/item/device/aicard - sort_string = "VACAA" - -/datum/design/item/dronebrain - name = "Robotic intelligence circuit" - id = "dronebrain" - req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_DATA = 4) - build_type = PROTOLATHE | PROSFAB - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500) - build_path = /obj/item/device/mmi/digital/robot - category = "Misc" - sort_string = "VACAC" - -/datum/design/item/posibrain - name = "Positronic brain" - id = "posibrain" - req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4) - build_type = PROTOLATHE | PROSFAB - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500, "phoron" = 500, "diamond" = 100) - build_path = /obj/item/device/mmi/digital/posibrain - category = "Misc" - sort_string = "VACAB" - -/datum/design/item/mmi - name = "Man-machine interface" - id = "mmi" - req_tech = list(TECH_DATA = 2, TECH_BIO = 3) - build_type = PROTOLATHE | PROSFAB - materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500) - build_path = /obj/item/device/mmi - category = "Misc" - sort_string = "VACBA" - -/datum/design/item/beacon - name = "Bluespace tracking beacon design" - id = "beacon" - req_tech = list(TECH_BLUESPACE = 1) - materials = list (DEFAULT_WALL_MATERIAL = 20, "glass" = 10) - build_path = /obj/item/device/radio/beacon - sort_string = "VADAA" - -/datum/design/item/gps - name = "Triangulating device design" - desc = "Triangulates approximate co-ordinates using a nearby satellite network." - id = "gps" - req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500) - build_path = /obj/item/device/gps - sort_string = "VADAB" - -/datum/design/item/beacon_locator - name = "Beacon tracking pinpointer" - desc = "Used to scan and locate signals on a particular frequency." - id = "beacon_locator" - req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) - materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500) - build_path = /obj/item/device/beacon_locator - sort_string = "VADAC" - -/datum/design/item/bag_holding - name = "'Bag of Holding', an infinite capacity bag prototype" - desc = "Using localized pockets of bluespace this bag prototype offers incredible storage capacity with the contents weighting nothing. It's a shame the bag itself is pretty heavy." - id = "bag_holding" - req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6) - materials = list("gold" = 3000, "diamond" = 1500, "uranium" = 250) - build_path = /obj/item/weapon/storage/backpack/holding - sort_string = "VAEAA" - -/datum/design/item/dufflebag_holding - name = "'DuffleBag of Holding', an infinite capacity dufflebag prototype" - desc = "A minaturized prototype of the popular Bag of Holding, the Dufflebag of Holding is, functionally, identical to the bag of holding, but comes in a more stylish and compact form." - id = "dufflebag_holding" - req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6) - materials = list("gold" = 3000, "diamond" = 1500, "uranium" = 250) - build_path = /obj/item/weapon/storage/backpack/holding/duffle - sort_string = "VAEAB" - -/datum/design/item/binaryencrypt - name = "Binary encryption key" - desc = "Allows for deciphering the binary channel on-the-fly." - id = "binaryencrypt" - req_tech = list(TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 300, "glass" = 300) - build_path = /obj/item/device/encryptionkey/binary - sort_string = "VASAA" - -/datum/design/item/chameleon - name = "Holographic equipment kit" - desc = "A kit of dangerous, high-tech equipment with changeable looks." - id = "chameleon" - req_tech = list(TECH_ILLEGAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500) - build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon - sort_string = "VASBA" - -/datum/design/item/experimental_welder - name = "Experimental welding tool" - desc = "A welding tool that generate fuel for itself." - id = "expwelder" - req_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3, TECH_MATERIAL = 4) - materials = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120, "phoron" = 100) - build_path = /obj/item/weapon/weldingtool/experimental - sort_string = "VASCA" - -/datum/design/item/hand_drill - name = "Hand drill" - desc = "A simple powered hand drill." - id = "handdrill" - req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100) - build_path = /obj/item/weapon/screwdriver/power - sort_string = "VASDA" - -/datum/design/item/jaws_life - name = "Jaws of life" - desc = "A set of jaws of life, compressed through the magic of science." - id = "jawslife" - req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100) - build_path = /obj/item/weapon/crowbar/power - sort_string = "VASEA" - -/datum/design/item/device/t_scanner_upg - name = "Upgraded T-ray Scanner" - desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." - id = "upgradedtscanner" - req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 2) - materials = list(DEFAULT_WALL_MATERIAL = 500, "phoron" = 150) - build_path = /obj/item/device/t_scanner/upgraded - sort_string = "VASSA" - - -/datum/design/item/device/t_scanner_adv - name = "Advanced T-ray Scanner" - desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." - id = "advancedtscanner" - req_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6, TECH_MATERIAL = 6) - materials = list(DEFAULT_WALL_MATERIAL = 1250, "phoron" = 500, "silver" = 50) - build_path = /obj/item/device/t_scanner/advanced - sort_string = "VASSB" -/* -CIRCUITS BELOW -*/ - -/datum/design/circuit - build_type = IMPRINTER - req_tech = list(TECH_DATA = 2) - materials = list("glass" = 2000) - chemicals = list("sacid" = 20) - time = 5 - -/datum/design/circuit/AssembleDesignName() - ..() - if(build_path) - var/obj/item/weapon/circuitboard/C = build_path - if(initial(C.board_type) == "machine") - name = "Machine circuit design ([item_name])" - else if(initial(C.board_type) == "computer") - name = "Computer circuit design ([item_name])" - else - name = "Circuit design ([item_name])" - -/datum/design/circuit/AssembleDesignDesc() - if(!desc) - desc = "Allows for the construction of \a [item_name] circuit board." - -/datum/design/circuit/arcademachine - name = "battle arcade machine" - id = "arcademachine" - req_tech = list(TECH_DATA = 1) - build_path = /obj/item/weapon/circuitboard/arcade/battle - sort_string = "MAAAA" - -/datum/design/circuit/oriontrail - name = "orion trail arcade machine" - id = "oriontrail" - req_tech = list(TECH_DATA = 1) - build_path = /obj/item/weapon/circuitboard/arcade/orion_trail - sort_string = "MAAAA" - -/datum/design/circuit/jukebox - name = "jukebox" - id = "jukebox" - req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1) - build_path = /obj/item/weapon/circuitboard/jukebox - sort_string = "MAAAB" - -/datum/design/circuit/seccamera - name = "security camera monitor" - id = "seccamera" - build_path = /obj/item/weapon/circuitboard/security - sort_string = "DAAAA" - -/datum/design/circuit/secdata - name = "security records console" - id = "sec_data" - build_path = /obj/item/weapon/circuitboard/secure_data - sort_string = "DABAA" - -/datum/design/circuit/prisonmanage - name = "prisoner management console" - id = "prisonmanage" - build_path = /obj/item/weapon/circuitboard/prisoner - sort_string = "DACAA" - -/datum/design/circuit/med_data - name = "medical records console" - id = "med_data" - build_path = /obj/item/weapon/circuitboard/med_data - sort_string = "FAAAA" - -/datum/design/circuit/operating - name = "patient monitoring console" - id = "operating" - build_path = /obj/item/weapon/circuitboard/operating - sort_string = "FACAA" - -/datum/design/circuit/scan_console - name = "DNA machine" - id = "scan_console" - build_path = /obj/item/weapon/circuitboard/scan_consolenew - sort_string = "FAGAA" - -/datum/design/circuit/clonecontrol - name = "cloning control console" - id = "clonecontrol" - req_tech = list(TECH_DATA = 3, TECH_BIO = 3) - build_path = /obj/item/weapon/circuitboard/cloning - sort_string = "FAGAC" - -/datum/design/circuit/clonepod - name = "clone pod" - id = "clonepod" - req_tech = list(TECH_DATA = 3, TECH_BIO = 3) - build_path = /obj/item/weapon/circuitboard/clonepod - sort_string = "FAGAE" - -/datum/design/circuit/clonescanner - name = "cloning scanner" - id = "clonescanner" - req_tech = list(TECH_DATA = 3, TECH_BIO = 3) - build_path = /obj/item/weapon/circuitboard/clonescanner - sort_string = "FAGAG" - -/datum/design/circuit/crewconsole - name = "crew monitoring console" - id = "crewconsole" - req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_BIO = 2) - build_path = /obj/item/weapon/circuitboard/crew - sort_string = "FAGAI" - -/datum/design/circuit/teleconsole - name = "teleporter control console" - id = "teleconsole" - req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2) - build_path = /obj/item/weapon/circuitboard/teleporter - sort_string = "HAAAA" - -/datum/design/circuit/robocontrol - name = "robotics control console" - id = "robocontrol" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/robotics - sort_string = "HAAAB" - -/datum/design/circuit/mechacontrol - name = "exosuit control console" - id = "mechacontrol" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/circuitboard/mecha_control - sort_string = "HAAAC" - -/datum/design/circuit/rdconsole - name = "R&D control console" - id = "rdconsole" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/rdconsole - sort_string = "HAAAE" - -/datum/design/circuit/aifixer - name = "AI integrity restorer" - id = "aifixer" - req_tech = list(TECH_DATA = 3, TECH_BIO = 2) - build_path = /obj/item/weapon/circuitboard/aifixer - sort_string = "HAAAF" - -/datum/design/circuit/comm_monitor - name = "telecommunications monitoring console" - id = "comm_monitor" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/circuitboard/comm_monitor - sort_string = "HAACA" - -/datum/design/circuit/comm_server - name = "telecommunications server monitoring console" - id = "comm_server" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/circuitboard/comm_server - sort_string = "HAACB" - -/datum/design/circuit/message_monitor - name = "messaging monitor console" - id = "message_monitor" - req_tech = list(TECH_DATA = 5) - build_path = /obj/item/weapon/circuitboard/message_monitor - sort_string = "HAACC" - -/datum/design/circuit/aiupload - name = "AI upload console" - id = "aiupload" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/aiupload - sort_string = "HAABA" - -/datum/design/circuit/borgupload - name = "cyborg upload console" - id = "borgupload" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/borgupload - sort_string = "HAABB" - -/datum/design/circuit/destructive_analyzer - name = "destructive analyzer" - id = "destructive_analyzer" - req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/destructive_analyzer - sort_string = "HABAA" - -/datum/design/circuit/protolathe - name = "protolathe" - id = "protolathe" - req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/protolathe - sort_string = "HABAB" - -/datum/design/circuit/circuit_imprinter - name = "circuit imprinter" - id = "circuit_imprinter" - req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/circuit_imprinter - sort_string = "HABAC" - -/datum/design/circuit/autolathe - name = "autolathe board" - id = "autolathe" - req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/autolathe - sort_string = "HABAD" - -/datum/design/circuit/rdservercontrol - name = "R&D server control console" - id = "rdservercontrol" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/circuitboard/rdservercontrol - sort_string = "HABBA" - -/datum/design/circuit/rdserver - name = "R&D server" - id = "rdserver" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/circuitboard/rdserver - sort_string = "HABBB" - -/datum/design/circuit/mechfab - name = "exosuit fabricator" - id = "mechfab" - req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) - build_path = /obj/item/weapon/circuitboard/mechfab - sort_string = "HABAE" - -/datum/design/circuit/prosfab - name = "prosthetics fabricator" - id = "prosfab" - req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) - build_path = /obj/item/weapon/circuitboard/prosthetics - sort_string = "HABAF" - -/datum/design/circuit/mech_recharger - name = "mech recharger" - id = "mech_recharger" - req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/mech_recharger - sort_string = "HACAA" - -/datum/design/circuit/recharge_station - name = "cyborg recharge station" - id = "recharge_station" - req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/recharge_station - sort_string = "HACAC" - -/datum/design/circuit/atmosalerts - name = "atmosphere alert console" - id = "atmosalerts" - build_path = /obj/item/weapon/circuitboard/atmos_alert - sort_string = "JAAAA" - -/datum/design/circuit/air_management - name = "atmosphere monitoring console" - id = "air_management" - build_path = /obj/item/weapon/circuitboard/air_management - sort_string = "JAAAB" - -/datum/design/circuit/rcon_console - name = "RCON remote control console" - id = "rcon_console" - req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5) - build_path = /obj/item/weapon/circuitboard/rcon_console - sort_string = "JAAAC" - -/datum/design/circuit/dronecontrol - name = "drone control console" - id = "dronecontrol" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/drone_control - sort_string = "JAAAD" - -/datum/design/circuit/powermonitor - name = "power monitoring console" - id = "powermonitor" - build_path = /obj/item/weapon/circuitboard/powermonitor - sort_string = "JAAAE" - -/datum/design/circuit/solarcontrol - name = "solar control console" - id = "solarcontrol" - build_path = /obj/item/weapon/circuitboard/solar_control - sort_string = "JAAAF" - -/datum/design/circuit/pacman - name = "PACMAN-type generator" - id = "pacman" - req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3) - build_path = /obj/item/weapon/circuitboard/pacman - sort_string = "JBAAA" - -/datum/design/circuit/superpacman - name = "SUPERPACMAN-type generator" - id = "superpacman" - req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4) - build_path = /obj/item/weapon/circuitboard/pacman/super - sort_string = "JBAAB" - -/datum/design/circuit/mrspacman - name = "MRSPACMAN-type generator" - id = "mrspacman" - req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5) - build_path = /obj/item/weapon/circuitboard/pacman/mrs - sort_string = "JBAAC" - -/datum/design/circuit/batteryrack - name = "cell rack PSU" - id = "batteryrack" - req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/batteryrack - sort_string = "JBABA" - -/datum/design/circuit/smes_cell - name = "'SMES' superconductive magnetic energy storage" - desc = "Allows for the construction of circuit boards used to build a SMES." - id = "smes_cell" - req_tech = list(TECH_POWER = 7, TECH_ENGINEERING = 5) - build_path = /obj/item/weapon/circuitboard/smes - sort_string = "JBABB" - -/datum/design/circuit/grid_checker - name = "power grid checker" - desc = "Allows for the construction of circuit boards used to build a grid checker." - id = "grid_checker" - req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3) - build_path = /obj/item/weapon/circuitboard/grid_checker - sort_string = "JBABC" - -/datum/design/circuit/breakerbox - name = "breaker box" - desc = "Allows for the construction of circuit boards used to build a breaker box." - id = "breakerbox" - req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) - build_path = /obj/item/weapon/circuitboard/breakerbox - sort_string = "JBABD" - -/datum/design/circuit/gas_heater - name = "gas heating system" - id = "gasheater" - req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1) - build_path = /obj/item/weapon/circuitboard/unary_atmos/heater - sort_string = "JCAAA" - -/datum/design/circuit/gas_cooler - name = "gas cooling system" - id = "gascooler" - req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) - build_path = /obj/item/weapon/circuitboard/unary_atmos/cooler - sort_string = "JCAAB" - -/datum/design/circuit/secure_airlock - name = "secure airlock electronics" - desc = "Allows for the construction of a tamper-resistant airlock electronics." - id = "securedoor" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/airlock_electronics/secure - sort_string = "JDAAA" - -/datum/design/circuit/ordercomp - name = "supply ordering console" - id = "ordercomp" - build_path = /obj/item/weapon/circuitboard/ordercomp - sort_string = "KAAAA" - -/datum/design/circuit/supplycomp - name = "supply control console" - id = "supplycomp" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/circuitboard/supplycomp - sort_string = "KAAAB" - -/datum/design/circuit/biogenerator - name = "biogenerator" - id = "biogenerator" - req_tech = list(TECH_DATA = 2) - build_path = /obj/item/weapon/circuitboard/biogenerator - sort_string = "KBAAA" - -/datum/design/circuit/miningdrill - name = "mining drill head" - id = "mining drill head" - req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) - build_path = /obj/item/weapon/circuitboard/miningdrill - sort_string = "KCAAA" - -/datum/design/circuit/miningdrillbrace - name = "mining drill brace" - id = "mining drill brace" - req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) - build_path = /obj/item/weapon/circuitboard/miningdrillbrace - sort_string = "KCAAB" - -/datum/design/circuit/comconsole - name = "communications console" - id = "comconsole" - build_path = /obj/item/weapon/circuitboard/communications - sort_string = "LAAAA" - -/datum/design/circuit/idcardconsole - name = "ID card modification console" - id = "idcardconsole" - build_path = /obj/item/weapon/circuitboard/card - sort_string = "LAAAB" - -/datum/design/circuit/emp_data - name = "employment records console" - id = "emp_data" - build_path = /obj/item/weapon/circuitboard/skills - sort_string = "LAAAC" - -/datum/design/circuit/mecha - req_tech = list(TECH_DATA = 3) - -/datum/design/circuit/mecha/AssembleDesignName() - name = "Exosuit module circuit design ([name])" -/datum/design/circuit/mecha/AssembleDesignDesc() - desc = "Allows for the construction of \a [name] module." - -/datum/design/circuit/mecha/ripley_main - name = "APLU 'Ripley' central control" - id = "ripley_main" - build_path = /obj/item/weapon/circuitboard/mecha/ripley/main - sort_string = "NAAAA" - -/datum/design/circuit/mecha/ripley_peri - name = "APLU 'Ripley' peripherals control" - id = "ripley_peri" - build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals - sort_string = "NAAAB" - -/datum/design/circuit/mecha/odysseus_main - name = "'Odysseus' central control" - id = "odysseus_main" - req_tech = list(TECH_DATA = 3,TECH_BIO = 2) - build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main - sort_string = "NAABA" - -/datum/design/circuit/mecha/odysseus_peri - name = "'Odysseus' peripherals control" - id = "odysseus_peri" - req_tech = list(TECH_DATA = 3,TECH_BIO = 2) - build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals - sort_string = "NAABB" - -/datum/design/circuit/mecha/gygax_main - name = "'Gygax' central control" - id = "gygax_main" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/mecha/gygax/main - sort_string = "NAACA" - -/datum/design/circuit/mecha/gygax_peri - name = "'Gygax' peripherals control" - id = "gygax_peri" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals - sort_string = "NAACB" - -/datum/design/circuit/mecha/gygax_targ - name = "'Gygax' weapon control and targeting" - id = "gygax_targ" - req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) - build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting - sort_string = "NAACC" - -/datum/design/circuit/mecha/durand_main - name = "'Durand' central control" - id = "durand_main" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/mecha/durand/main - sort_string = "NAADA" - -/datum/design/circuit/mecha/durand_peri - name = "'Durand' peripherals control" - id = "durand_peri" - req_tech = list(TECH_DATA = 4) - build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals - sort_string = "NAADB" - -/datum/design/circuit/mecha/durand_targ - name = "'Durand' weapon control and targeting" - id = "durand_targ" - req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) - build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting - sort_string = "NAADC" - -/datum/design/circuit/tcom - req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) - -/datum/design/circuit/tcom/AssembleDesignName() - name = "Telecommunications machinery circuit design ([name])" -/datum/design/circuit/tcom/AssembleDesignDesc() - desc = "Allows for the construction of a telecommunications [name] circuit board." - -/datum/design/circuit/tcom/server - name = "server mainframe" - id = "tcom-server" - build_path = /obj/item/weapon/circuitboard/telecomms/server - sort_string = "PAAAA" - -/datum/design/circuit/tcom/processor - name = "processor unit" - id = "tcom-processor" - build_path = /obj/item/weapon/circuitboard/telecomms/processor - sort_string = "PAAAB" - -/datum/design/circuit/tcom/bus - name = "bus mainframe" - id = "tcom-bus" - build_path = /obj/item/weapon/circuitboard/telecomms/bus - sort_string = "PAAAC" - -/datum/design/circuit/tcom/hub - name = "hub mainframe" - id = "tcom-hub" - build_path = /obj/item/weapon/circuitboard/telecomms/hub - sort_string = "PAAAD" - -/datum/design/circuit/tcom/relay - name = "relay mainframe" - id = "tcom-relay" - req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3) - build_path = /obj/item/weapon/circuitboard/telecomms/relay - sort_string = "PAAAE" - -/datum/design/circuit/tcom/broadcaster - name = "subspace broadcaster" - id = "tcom-broadcaster" - req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2) - build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster - sort_string = "PAAAF" - -/datum/design/circuit/tcom/receiver - name = "subspace receiver" - id = "tcom-receiver" - req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2) - build_path = /obj/item/weapon/circuitboard/telecomms/receiver - sort_string = "PAAAG" - -/datum/design/circuit/tcom/exonet_node - name = "exonet node" - id = "tcom-exonet_node" - req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) - build_path = /obj/item/weapon/circuitboard/telecomms/exonet_node - sort_string = "PAAAH" - -/datum/design/circuit/shield - req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) - materials = list("glass" = 2000, "gold" = 1000) - -/datum/design/circuit/shield/AssembleDesignName() - name = "Shield generator circuit design ([name])" -/datum/design/circuit/shield/AssembleDesignDesc() - if(!desc) - desc = "Allows for the construction of \a [name] shield generator." - -/datum/design/circuit/shield/bubble - name = "bubble" - id = "shield_gen" - build_path = /obj/item/weapon/circuitboard/shield_gen - sort_string = "VAAAA" - -/datum/design/circuit/shield/hull - name = "hull" - id = "shield_gen_ex" - build_path = /obj/item/weapon/circuitboard/shield_gen_ex - sort_string = "VAAAB" - -/datum/design/circuit/shield/capacitor - name = "capacitor" - desc = "Allows for the construction of a shield capacitor circuit board." - id = "shield_cap" - req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4) - build_path = /obj/item/weapon/circuitboard/shield_cap - sort_string = "VAAAC" - -/datum/design/circuit/aicore - name = "AI core" - id = "aicore" - req_tech = list(TECH_DATA = 4, TECH_BIO = 3) - build_path = /obj/item/weapon/circuitboard/aicore - sort_string = "XAAAA" - -/datum/design/aimodule - build_type = IMPRINTER - materials = list("glass" = 2000, "gold" = 100) - -/datum/design/aimodule/AssembleDesignName() - name = "AI module design ([name])" - -/datum/design/aimodule/AssembleDesignDesc() - desc = "Allows for the construction of \a '[name]' AI module." - -/datum/design/aimodule/safeguard - name = "Safeguard" - id = "safeguard" - req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4) - build_path = /obj/item/weapon/aiModule/safeguard - sort_string = "XABAA" - -/datum/design/aimodule/onehuman - name = "OneCrewMember" - id = "onehuman" - req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) - build_path = /obj/item/weapon/aiModule/oneHuman - sort_string = "XABAB" - -/datum/design/aimodule/protectstation - name = "ProtectStation" - id = "protectstation" - req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) - build_path = /obj/item/weapon/aiModule/protectStation - sort_string = "XABAC" - -/datum/design/aimodule/notele - name = "TeleporterOffline" - id = "notele" - req_tech = list(TECH_DATA = 3) - build_path = /obj/item/weapon/aiModule/teleporterOffline - sort_string = "XABAD" - -/datum/design/aimodule/quarantine - name = "Quarantine" - id = "quarantine" - req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4) - build_path = /obj/item/weapon/aiModule/quarantine - sort_string = "XABAE" - -/datum/design/aimodule/oxygen - name = "OxygenIsToxicToHumans" - id = "oxygen" - req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4) - build_path = /obj/item/weapon/aiModule/oxygen - sort_string = "XABAF" - -/datum/design/aimodule/freeform - name = "Freeform" - id = "freeform" - req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) - build_path = /obj/item/weapon/aiModule/freeform - sort_string = "XABAG" - -/datum/design/aimodule/reset - name = "Reset" - id = "reset" - req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) - build_path = /obj/item/weapon/aiModule/reset - sort_string = "XAAAA" - -/datum/design/aimodule/purge - name = "Purge" - id = "purge" - req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) - build_path = /obj/item/weapon/aiModule/purge - sort_string = "XAAAB" - -// Core modules -/datum/design/aimodule/core - req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) - -/datum/design/aimodule/core/AssembleDesignName() - name = "AI core module design ([name])" - -/datum/design/aimodule/core/AssembleDesignDesc() - desc = "Allows for the construction of \a '[name]' AI core module." - -/datum/design/aimodule/core/freeformcore - name = "Freeform" - id = "freeformcore" - build_path = /obj/item/weapon/aiModule/freeformcore - sort_string = "XACAA" - -/datum/design/aimodule/core/asimov - name = "Asimov" - id = "asimov" - build_path = /obj/item/weapon/aiModule/asimov - sort_string = "XACAB" - -/datum/design/aimodule/core/paladin - name = "P.A.L.A.D.I.N." - id = "paladin" - build_path = /obj/item/weapon/aiModule/paladin - sort_string = "XACAC" - -/datum/design/aimodule/core/tyrant - name = "T.Y.R.A.N.T." - id = "tyrant" - req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 6) - build_path = /obj/item/weapon/aiModule/tyrant - sort_string = "XACAD" - -/datum/design/item/pda - name = "PDA design" - desc = "Cheaper than whiny non-digital assistants." - id = "pda" - req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - build_path = /obj/item/device/pda - sort_string = "VAAAA" - -// Cartridges -/datum/design/item/pda_cartridge - req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) - -/datum/design/item/pda_cartridge/AssembleDesignName() - ..() - name = "PDA accessory ([item_name])" - -/datum/design/item/pda_cartridge/cart_basic - id = "cart_basic" - build_path = /obj/item/weapon/cartridge - sort_string = "VBAAA" - -/datum/design/item/pda_cartridge/engineering - id = "cart_engineering" - build_path = /obj/item/weapon/cartridge/engineering - sort_string = "VBAAB" - -/datum/design/item/pda_cartridge/atmos - id = "cart_atmos" - build_path = /obj/item/weapon/cartridge/atmos - sort_string = "VBAAC" - -/datum/design/item/pda_cartridge/medical - id = "cart_medical" - build_path = /obj/item/weapon/cartridge/medical - sort_string = "VBAAD" - -/datum/design/item/pda_cartridge/chemistry - id = "cart_chemistry" - build_path = /obj/item/weapon/cartridge/chemistry - sort_string = "VBAAE" - -/datum/design/item/pda_cartridge/security - id = "cart_security" - build_path = /obj/item/weapon/cartridge/security - sort_string = "VBAAF" - -/datum/design/item/pda_cartridge/janitor - id = "cart_janitor" - build_path = /obj/item/weapon/cartridge/janitor - sort_string = "VBAAG" - -/datum/design/item/pda_cartridge/science - id = "cart_science" - build_path = /obj/item/weapon/cartridge/signal/science - sort_string = "VBAAH" - -/datum/design/item/pda_cartridge/quartermaster - id = "cart_quartermaster" - build_path = /obj/item/weapon/cartridge/quartermaster - sort_string = "VBAAI" - -/datum/design/item/pda_cartridge/hop - id = "cart_hop" - build_path = /obj/item/weapon/cartridge/hop - sort_string = "VBAAJ" - -/datum/design/item/pda_cartridge/hos - id = "cart_hos" - build_path = /obj/item/weapon/cartridge/hos - sort_string = "VBAAK" - -/datum/design/item/pda_cartridge/ce - id = "cart_ce" - build_path = /obj/item/weapon/cartridge/ce - sort_string = "VBAAL" - -/datum/design/item/pda_cartridge/cmo - id = "cart_cmo" - build_path = /obj/item/weapon/cartridge/cmo - sort_string = "VBAAM" - -/datum/design/item/pda_cartridge/rd - id = "cart_rd" - build_path = /obj/item/weapon/cartridge/rd - sort_string = "VBAAN" - -/datum/design/item/pda_cartridge/captain - id = "cart_captain" - build_path = /obj/item/weapon/cartridge/captain - sort_string = "VBAAO" - - - -/datum/design/item/wirer - name = "Custom wirer tool" - id = "wirer" - req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500) - build_path = /obj/item/device/integrated_electronics/wirer - sort_string = "VBVAA" - -/datum/design/item/debugger - name = "Custom circuit debugger tool" - id = "debugger" - req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500) - build_path = /obj/item/device/integrated_electronics/debugger - sort_string = "VBVAB" - - - -/datum/design/item/custom_circuit_assembly - name = "Small custom assembly" - desc = "A customizable assembly for simple, small devices." - id = "assembly-small" - req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 10000) - build_path = /obj/item/device/electronic_assembly - sort_string = "VCAAA" - -/datum/design/item/custom_circuit_assembly/medium - name = "Medium custom assembly" - desc = "A customizable assembly suited for more ambitious mechanisms." - id = "assembly-medium" - req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 3) - materials = list(DEFAULT_WALL_MATERIAL = 20000) - build_path = /obj/item/device/electronic_assembly/medium - sort_string = "VCAAB" - -/datum/design/item/custom_circuit_assembly/drone - name = "Drone custom assembly" - desc = "A customizable assembly optimized for autonomous devices." - id = "assembly-drone" - req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4, TECH_POWER = 4) - materials = list(DEFAULT_WALL_MATERIAL = 30000) - build_path = /obj/item/device/electronic_assembly/drone - sort_string = "VCAAC" - -/datum/design/item/custom_circuit_assembly/large - name = "Large custom assembly" - desc = "A customizable assembly for large machines." - id = "assembly-large" - req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4) - materials = list(DEFAULT_WALL_MATERIAL = 40000) - build_path = /obj/item/device/electronic_assembly/large - sort_string = "VCAAD" - -/datum/design/item/custom_circuit_assembly/implant - name = "Implant custom assembly" - desc = "An customizable assembly for very small devices, implanted into living entities." - id = "assembly-implant" - req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 3, TECH_BIO = 5) - materials = list(DEFAULT_WALL_MATERIAL = 2000) - build_path = /obj/item/weapon/implant/integrated_circuit - sort_string = "VCAAE" - -/datum/design/item/custom_circuit_assembly/device - name = "Device custom assembly" - desc = "An customizable assembly designed to interface with other devices." - id = "assembly-device" - req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2) - materials = list(DEFAULT_WALL_MATERIAL = 5000) - build_path = /obj/item/device/assembly/electronic_assembly - sort_string = "VCAAF" - -/datum/design/item/custom_circuit_printer - name = "Portable integrated circuit printer" - desc = "A portable(ish) printer for modular machines." - id = "ic_printer" - req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_DATA = 5) - materials = list(DEFAULT_WALL_MATERIAL = 10000) - build_path = /obj/item/device/integrated_circuit_printer - sort_string = "VCAAG" - -/datum/design/item/custom_circuit_printer_upgrade - name = "Integrated circuit printer upgrade - advanced designs" - desc = "Allows the integrated circuit printer to create advanced circuits" - id = "ic_printer_upgrade_adv" - req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4) - materials = list(DEFAULT_WALL_MATERIAL = 2000) - build_path = /obj/item/weapon/disk/integrated_circuit/upgrade/advanced - sort_string = "VCAAH" - -/datum/design/item/translator - name = "handheld translator" - id = "translator" - req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) - materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 3000) - build_path = /obj/item/device/universal_translator - sort_string = "HABQA" - -/datum/design/item/ear_translator - name = "earpiece translator" - id = "ear_translator" - req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) //It's been hella miniaturized. - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "gold" = 1000) - build_path = /obj/item/device/universal_translator/ear - sort_string = "HABQB" - -/datum/design/item/xenoarch_multi_tool - name = "xenoarcheology multitool" - id = "xenoarch_multitool" - req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3) - build_path = /obj/item/device/xenoarch_multi_tool - materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "uranium" = 500, "phoron" = 500) - sort_string = "HABQC" - -/datum/design/item/excavationdrill - name = "Excavation Drill" - id = "excavationdrill" - req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) - build_type = PROTOLATHE - materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) - build_path = /obj/item/weapon/pickaxe/excavationdrill - sort_string = "HABQD" - -/* Uncomment if someone makes these buildable -/datum/design/circuit/general_alert - name = "general alert console" - id = "general_alert" - build_path = /obj/item/weapon/circuitboard/general_alert - -// Removal of loyalty implants. Can't think of a way to add this to the config option. -/datum/design/item/implant/loyalty - name = "loyalty" - id = "implant_loyal" - req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3) - materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000) - build_path = /obj/item/weapon/implantcase/loyalty" - -/datum/design/rust_core_control - name = "Circuit Design (RUST core controller)" - desc = "Allows for the construction of circuit boards used to build a core control console for the RUST fusion engine." - id = "rust_core_control" - req_tech = list("programming" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list("glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rust_core_control" - -datum/design/rust_fuel_control - name = "Circuit Design (RUST fuel controller)" - desc = "Allows for the construction of circuit boards used to build a fuel injector control console for the RUST fusion engine." - id = "rust_fuel_control" - req_tech = list("programming" = 4, "engineering" = 4) - build_type = IMPRINTER - materials = list("glass" = 2000, "sacid" = 20) - build_path = "/obj/item/weapon/circuitboard/rust_fuel_control" - -datum/design/rust_fuel_port - name = "Internal circuitry (RUST fuel port)" - desc = "Allows for the construction of circuit boards used to build a fuel injection port for the RUST fusion engine." - id = "rust_fuel_port" - req_tech = list("engineering" = 4, "materials" = 5) - build_type = IMPRINTER - materials = list("glass" = 2000, "sacid" = 20, "uranium" = 3000) - build_path = "/obj/item/weapon/module/rust_fuel_port" - -datum/design/rust_fuel_compressor - name = "Circuit Design (RUST fuel compressor)" - desc = "Allows for the construction of circuit boards used to build a fuel compressor of the RUST fusion engine." - id = "rust_fuel_compressor" - req_tech = list("materials" = 6, "phorontech" = 4) - build_type = IMPRINTER - materials = list("glass" = 2000, "sacid" = 20, "phoron" = 3000, "diamond" = 1000) - build_path = "/obj/item/weapon/module/rust_fuel_compressor" - -datum/design/rust_core - name = "Internal circuitry (RUST tokamak core)" - desc = "The circuit board that for a RUST-pattern tokamak fusion core." - id = "pacman" - req_tech = list(bluespace = 3, phorontech = 4, magnets = 5, powerstorage = 6) - build_type = IMPRINTER - materials = list("glass" = 2000, "sacid" = 20, "phoron" = 3000, "diamond" = 2000) - build_path = "/obj/item/weapon/circuitboard/rust_core" - -datum/design/rust_injector - name = "Internal circuitry (RUST tokamak core)" - desc = "The circuit board that for a RUST-pattern particle accelerator." - id = "pacman" - req_tech = list(powerstorage = 3, engineering = 4, phorontech = 4, materials = 6) - build_type = IMPRINTER - materials = list("glass" = 2000, "sacid" = 20, "phoron" = 3000, "uranium" = 2000) - build_path = "/obj/item/weapon/circuitboard/rust_core" -*/ + sort_string = "GAAAB" \ No newline at end of file diff --git a/code/modules/research/designs/ai_modules.dm b/code/modules/research/designs/ai_modules.dm new file mode 100644 index 0000000000..eae26ea386 --- /dev/null +++ b/code/modules/research/designs/ai_modules.dm @@ -0,0 +1,117 @@ +/datum/design/aimodule + build_type = IMPRINTER + materials = list("glass" = 2000, "gold" = 100) + +/datum/design/aimodule/AssembleDesignName() + name = "AI module design ([name])" + +/datum/design/aimodule/AssembleDesignDesc() + desc = "Allows for the construction of \a '[name]' AI module." + +/datum/design/aimodule/safeguard + name = "Safeguard" + id = "safeguard" + req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 4) + build_path = /obj/item/weapon/aiModule/safeguard + sort_string = "XABAA" + +/datum/design/aimodule/onehuman + name = "OneCrewMember" + id = "onehuman" + req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) + build_path = /obj/item/weapon/aiModule/oneHuman + sort_string = "XABAB" + +/datum/design/aimodule/protectstation + name = "ProtectStation" + id = "protectstation" + req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) + build_path = /obj/item/weapon/aiModule/protectStation + sort_string = "XABAC" + +/datum/design/aimodule/notele + name = "TeleporterOffline" + id = "notele" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/aiModule/teleporterOffline + sort_string = "XABAD" + +/datum/design/aimodule/quarantine + name = "Quarantine" + id = "quarantine" + req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4) + build_path = /obj/item/weapon/aiModule/quarantine + sort_string = "XABAE" + +/datum/design/aimodule/oxygen + name = "OxygenIsToxicToHumans" + id = "oxygen" + req_tech = list(TECH_DATA = 3, TECH_BIO = 2, TECH_MATERIAL = 4) + build_path = /obj/item/weapon/aiModule/oxygen + sort_string = "XABAF" + +/datum/design/aimodule/freeform + name = "Freeform" + id = "freeform" + req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) + build_path = /obj/item/weapon/aiModule/freeform + sort_string = "XABAG" + +/datum/design/aimodule/reset + name = "Reset" + id = "reset" + req_tech = list(TECH_DATA = 3, TECH_MATERIAL = 6) + build_path = /obj/item/weapon/aiModule/reset + sort_string = "XAAAZ" // Duplicate string, really need to redo this whole thing + +/datum/design/aimodule/purge + name = "Purge" + id = "purge" + req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) + build_path = /obj/item/weapon/aiModule/purge + sort_string = "XAAAB" + +// Core modules +/datum/design/aimodule/core + req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 6) + +/datum/design/aimodule/core/AssembleDesignName() + name = "AI core module design ([name])" + +/datum/design/aimodule/core/AssembleDesignDesc() + desc = "Allows for the construction of \a '[name]' AI core module." + +/datum/design/aimodule/core/freeformcore + name = "Freeform" + id = "freeformcore" + build_path = /obj/item/weapon/aiModule/freeformcore + sort_string = "XACAA" + +/datum/design/aimodule/core/asimov + name = "Asimov" + id = "asimov" + build_path = /obj/item/weapon/aiModule/asimov + sort_string = "XACAB" + +/datum/design/aimodule/core/paladin + name = "P.A.L.A.D.I.N." + id = "paladin" + build_path = /obj/item/weapon/aiModule/paladin + sort_string = "XACAC" + +/datum/design/aimodule/core/tyrant + name = "T.Y.R.A.N.T." + id = "tyrant" + req_tech = list(TECH_DATA = 4, TECH_ILLEGAL = 2, TECH_MATERIAL = 6) + build_path = /obj/item/weapon/aiModule/tyrant + sort_string = "XACAD" + +// AI file, AI tool +/datum/design/item/intellicard + name = "'intelliCore', AI preservation and transportation system" + desc = "Allows for the construction of an intelliCore." + id = "intellicore" + req_tech = list(TECH_DATA = 4, TECH_MATERIAL = 4) + materials = list("glass" = 1000, "gold" = 200) + build_path = /obj/item/device/aicard + sort_string = "VACAA" \ No newline at end of file diff --git a/code/modules/research/designs/circuit_assembly.dm b/code/modules/research/designs/circuit_assembly.dm new file mode 100644 index 0000000000..9f20032445 --- /dev/null +++ b/code/modules/research/designs/circuit_assembly.dm @@ -0,0 +1,89 @@ +/datum/design/item/wirer + name = "Custom wirer tool" + id = "wirer" + req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500) + build_path = /obj/item/device/integrated_electronics/wirer + sort_string = "VBVAA" + +/datum/design/item/debugger + name = "Custom circuit debugger tool" + id = "debugger" + req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 2500) + build_path = /obj/item/device/integrated_electronics/debugger + sort_string = "VBVAB" + + + +/datum/design/item/custom_circuit_assembly + name = "Small custom assembly" + desc = "A customizable assembly for simple, small devices." + id = "assembly-small" + req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 2, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 10000) + build_path = /obj/item/device/electronic_assembly + sort_string = "VCAAA" + +/datum/design/item/custom_circuit_assembly/medium + name = "Medium custom assembly" + desc = "A customizable assembly suited for more ambitious mechanisms." + id = "assembly-medium" + req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 20000) + build_path = /obj/item/device/electronic_assembly/medium + sort_string = "VCAAB" + +/datum/design/item/custom_circuit_assembly/drone + name = "Drone custom assembly" + desc = "A customizable assembly optimized for autonomous devices." + id = "assembly-drone" + req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 4, TECH_POWER = 4) + materials = list(DEFAULT_WALL_MATERIAL = 30000) + build_path = /obj/item/device/electronic_assembly/drone + sort_string = "VCAAC" + +/datum/design/item/custom_circuit_assembly/large + name = "Large custom assembly" + desc = "A customizable assembly for large machines." + id = "assembly-large" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 4) + materials = list(DEFAULT_WALL_MATERIAL = 40000) + build_path = /obj/item/device/electronic_assembly/large + sort_string = "VCAAD" + +/datum/design/item/custom_circuit_assembly/implant + name = "Implant custom assembly" + desc = "An customizable assembly for very small devices, implanted into living entities." + id = "assembly-implant" + req_tech = list(TECH_MATERIAL = 5, TECH_ENGINEERING = 4, TECH_POWER = 3, TECH_BIO = 5) + materials = list(DEFAULT_WALL_MATERIAL = 2000) + build_path = /obj/item/weapon/implant/integrated_circuit + sort_string = "VCAAE" + +/datum/design/item/custom_circuit_assembly/device + name = "Device custom assembly" + desc = "An customizable assembly designed to interface with other devices." + id = "assembly-device" + req_tech = list(TECH_MATERIAL = 2, TECH_ENGINEERING = 2, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000) + build_path = /obj/item/device/assembly/electronic_assembly + sort_string = "VCAAF" + +/datum/design/item/custom_circuit_printer + name = "Portable integrated circuit printer" + desc = "A portable(ish) printer for modular machines." + id = "ic_printer" + req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 4, TECH_DATA = 5) + materials = list(DEFAULT_WALL_MATERIAL = 10000) + build_path = /obj/item/device/integrated_circuit_printer + sort_string = "VCAAG" + +/datum/design/item/custom_circuit_printer_upgrade + name = "Integrated circuit printer upgrade - advanced designs" + desc = "Allows the integrated circuit printer to create advanced circuits" + id = "ic_printer_upgrade_adv" + req_tech = list(TECH_ENGINEERING = 3, TECH_DATA = 4) + materials = list(DEFAULT_WALL_MATERIAL = 2000) + build_path = /obj/item/weapon/disk/integrated_circuit/upgrade/advanced + sort_string = "VCAAH" \ No newline at end of file diff --git a/code/modules/research/designs/circuits.dm b/code/modules/research/designs/circuits.dm new file mode 100644 index 0000000000..e00a47786d --- /dev/null +++ b/code/modules/research/designs/circuits.dm @@ -0,0 +1,597 @@ +/* +CIRCUITS BELOW +*/ + +/datum/design/circuit + build_type = IMPRINTER + req_tech = list(TECH_DATA = 2) + materials = list("glass" = 2000) + chemicals = list("sacid" = 20) + time = 5 + +/datum/design/circuit/AssembleDesignName() + ..() + if(build_path) + var/obj/item/weapon/circuitboard/C = build_path + if(initial(C.board_type) == "machine") + name = "Machine circuit design ([item_name])" + else if(initial(C.board_type) == "computer") + name = "Computer circuit design ([item_name])" + else + name = "Circuit design ([item_name])" + +/datum/design/circuit/AssembleDesignDesc() + if(!desc) + desc = "Allows for the construction of \a [item_name] circuit board." + +/datum/design/circuit/arcademachine + name = "battle arcade machine" + id = "arcademachine" + req_tech = list(TECH_DATA = 1) + build_path = /obj/item/weapon/circuitboard/arcade/battle + sort_string = "MAAAA" + +/datum/design/circuit/oriontrail + name = "orion trail arcade machine" + id = "oriontrail" + req_tech = list(TECH_DATA = 1) + build_path = /obj/item/weapon/circuitboard/arcade/orion_trail + sort_string = "MAAAZ" // Duplicate string, really need to redo this whole thing + +/datum/design/circuit/jukebox + name = "jukebox" + id = "jukebox" + req_tech = list(TECH_MAGNET = 2, TECH_DATA = 1) + build_path = /obj/item/weapon/circuitboard/jukebox + sort_string = "MAAAB" + +/datum/design/circuit/seccamera + name = "security camera monitor" + id = "seccamera" + build_path = /obj/item/weapon/circuitboard/security + sort_string = "DAAAZ" // Duplicate string, really need to redo this whole thing + +/datum/design/circuit/secdata + name = "security records console" + id = "sec_data" + build_path = /obj/item/weapon/circuitboard/secure_data + sort_string = "DABAA" + +/datum/design/circuit/prisonmanage + name = "prisoner management console" + id = "prisonmanage" + build_path = /obj/item/weapon/circuitboard/prisoner + sort_string = "DACAA" + +/datum/design/circuit/med_data + name = "medical records console" + id = "med_data" + build_path = /obj/item/weapon/circuitboard/med_data + sort_string = "FAAAA" + +/datum/design/circuit/operating + name = "patient monitoring console" + id = "operating" + build_path = /obj/item/weapon/circuitboard/operating + sort_string = "FACAA" + +/datum/design/circuit/scan_console + name = "DNA machine" + id = "scan_console" + build_path = /obj/item/weapon/circuitboard/scan_consolenew + sort_string = "FAGAA" + +/datum/design/circuit/clonecontrol + name = "cloning control console" + id = "clonecontrol" + req_tech = list(TECH_DATA = 3, TECH_BIO = 3) + build_path = /obj/item/weapon/circuitboard/cloning + sort_string = "FAGAC" + +/datum/design/circuit/clonepod + name = "clone pod" + id = "clonepod" + req_tech = list(TECH_DATA = 3, TECH_BIO = 3) + build_path = /obj/item/weapon/circuitboard/clonepod + sort_string = "FAGAE" + +/datum/design/circuit/clonescanner + name = "cloning scanner" + id = "clonescanner" + req_tech = list(TECH_DATA = 3, TECH_BIO = 3) + build_path = /obj/item/weapon/circuitboard/clonescanner + sort_string = "FAGAG" + +/datum/design/circuit/crewconsole + name = "crew monitoring console" + id = "crewconsole" + req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_BIO = 2) + build_path = /obj/item/weapon/circuitboard/crew + sort_string = "FAGAI" + +/datum/design/circuit/teleconsole + name = "teleporter control console" + id = "teleconsole" + req_tech = list(TECH_DATA = 3, TECH_BLUESPACE = 2) + build_path = /obj/item/weapon/circuitboard/teleporter + sort_string = "HAAAA" + +/datum/design/circuit/robocontrol + name = "robotics control console" + id = "robocontrol" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/robotics + sort_string = "HAAAB" + +/datum/design/circuit/mechacontrol + name = "exosuit control console" + id = "mechacontrol" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/circuitboard/mecha_control + sort_string = "HAAAC" + +/datum/design/circuit/rdconsole + name = "R&D control console" + id = "rdconsole" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/rdconsole + sort_string = "HAAAE" + +/datum/design/circuit/aifixer + name = "AI integrity restorer" + id = "aifixer" + req_tech = list(TECH_DATA = 3, TECH_BIO = 2) + build_path = /obj/item/weapon/circuitboard/aifixer + sort_string = "HAAAF" + +/datum/design/circuit/comm_monitor + name = "telecommunications monitoring console" + id = "comm_monitor" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/circuitboard/comm_monitor + sort_string = "HAACA" + +/datum/design/circuit/comm_server + name = "telecommunications server monitoring console" + id = "comm_server" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/circuitboard/comm_server + sort_string = "HAACB" + +/datum/design/circuit/message_monitor + name = "messaging monitor console" + id = "message_monitor" + req_tech = list(TECH_DATA = 5) + build_path = /obj/item/weapon/circuitboard/message_monitor + sort_string = "HAACC" + +/datum/design/circuit/aiupload + name = "AI upload console" + id = "aiupload" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/aiupload + sort_string = "HAABA" + +/datum/design/circuit/borgupload + name = "cyborg upload console" + id = "borgupload" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/borgupload + sort_string = "HAABB" + +/datum/design/circuit/destructive_analyzer + name = "destructive analyzer" + id = "destructive_analyzer" + req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/destructive_analyzer + sort_string = "HABAA" + +/datum/design/circuit/protolathe + name = "protolathe" + id = "protolathe" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/protolathe + sort_string = "HABAB" + +/datum/design/circuit/circuit_imprinter + name = "circuit imprinter" + id = "circuit_imprinter" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/circuit_imprinter + sort_string = "HABAC" + +/datum/design/circuit/autolathe + name = "autolathe board" + id = "autolathe" + req_tech = list(TECH_DATA = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/autolathe + sort_string = "HABAD" + +/datum/design/circuit/rdservercontrol + name = "R&D server control console" + id = "rdservercontrol" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/circuitboard/rdservercontrol + sort_string = "HABBA" + +/datum/design/circuit/rdserver + name = "R&D server" + id = "rdserver" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/circuitboard/rdserver + sort_string = "HABBB" + +/datum/design/circuit/mechfab + name = "exosuit fabricator" + id = "mechfab" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/mechfab + sort_string = "HABAE" + +/datum/design/circuit/prosfab + name = "prosthetics fabricator" + id = "prosfab" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/prosthetics + sort_string = "HABAF" + +/datum/design/circuit/mech_recharger + name = "mech recharger" + id = "mech_recharger" + req_tech = list(TECH_DATA = 2, TECH_POWER = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/mech_recharger + sort_string = "HACAA" + +/datum/design/circuit/recharge_station + name = "cyborg recharge station" + id = "recharge_station" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/recharge_station + sort_string = "HACAC" + +/datum/design/circuit/atmosalerts + name = "atmosphere alert console" + id = "atmosalerts" + build_path = /obj/item/weapon/circuitboard/atmos_alert + sort_string = "JAAAA" + +/datum/design/circuit/air_management + name = "atmosphere monitoring console" + id = "air_management" + build_path = /obj/item/weapon/circuitboard/air_management + sort_string = "JAAAB" + +/datum/design/circuit/rcon_console + name = "RCON remote control console" + id = "rcon_console" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_POWER = 5) + build_path = /obj/item/weapon/circuitboard/rcon_console + sort_string = "JAAAC" + +/datum/design/circuit/dronecontrol + name = "drone control console" + id = "dronecontrol" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/drone_control + sort_string = "JAAAD" + +/datum/design/circuit/powermonitor + name = "power monitoring console" + id = "powermonitor" + build_path = /obj/item/weapon/circuitboard/powermonitor + sort_string = "JAAAE" + +/datum/design/circuit/solarcontrol + name = "solar control console" + id = "solarcontrol" + build_path = /obj/item/weapon/circuitboard/solar_control + sort_string = "JAAAF" + +/datum/design/circuit/pacman + name = "PACMAN-type generator" + id = "pacman" + req_tech = list(TECH_DATA = 3, TECH_PHORON = 3, TECH_POWER = 3, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/pacman + sort_string = "JBAAA" + +/datum/design/circuit/superpacman + name = "SUPERPACMAN-type generator" + id = "superpacman" + req_tech = list(TECH_DATA = 3, TECH_POWER = 4, TECH_ENGINEERING = 4) + build_path = /obj/item/weapon/circuitboard/pacman/super + sort_string = "JBAAB" + +/datum/design/circuit/mrspacman + name = "MRSPACMAN-type generator" + id = "mrspacman" + req_tech = list(TECH_DATA = 3, TECH_POWER = 5, TECH_ENGINEERING = 5) + build_path = /obj/item/weapon/circuitboard/pacman/mrs + sort_string = "JBAAC" + +/datum/design/circuit/batteryrack + name = "cell rack PSU" + id = "batteryrack" + req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/batteryrack + sort_string = "JBABA" + +/datum/design/circuit/smes_cell + name = "'SMES' superconductive magnetic energy storage" + desc = "Allows for the construction of circuit boards used to build a SMES." + id = "smes_cell" + req_tech = list(TECH_POWER = 7, TECH_ENGINEERING = 5) + build_path = /obj/item/weapon/circuitboard/smes + sort_string = "JBABB" + +/datum/design/circuit/grid_checker + name = "power grid checker" + desc = "Allows for the construction of circuit boards used to build a grid checker." + id = "grid_checker" + req_tech = list(TECH_POWER = 4, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/grid_checker + sort_string = "JBABC" + +/datum/design/circuit/breakerbox + name = "breaker box" + desc = "Allows for the construction of circuit boards used to build a breaker box." + id = "breakerbox" + req_tech = list(TECH_POWER = 3, TECH_ENGINEERING = 3) + build_path = /obj/item/weapon/circuitboard/breakerbox + sort_string = "JBABD" + +/datum/design/circuit/gas_heater + name = "gas heating system" + id = "gasheater" + req_tech = list(TECH_POWER = 2, TECH_ENGINEERING = 1) + build_path = /obj/item/weapon/circuitboard/unary_atmos/heater + sort_string = "JCAAA" + +/datum/design/circuit/gas_cooler + name = "gas cooling system" + id = "gascooler" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + build_path = /obj/item/weapon/circuitboard/unary_atmos/cooler + sort_string = "JCAAB" + +/datum/design/circuit/secure_airlock + name = "secure airlock electronics" + desc = "Allows for the construction of a tamper-resistant airlock electronics." + id = "securedoor" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/airlock_electronics/secure + sort_string = "JDAAA" + +/datum/design/circuit/ordercomp + name = "supply ordering console" + id = "ordercomp" + build_path = /obj/item/weapon/circuitboard/ordercomp + sort_string = "KAAAY" // Duplicate string, really need to redo this whole thing + +/datum/design/circuit/supplycomp + name = "supply control console" + id = "supplycomp" + req_tech = list(TECH_DATA = 3) + build_path = /obj/item/weapon/circuitboard/supplycomp + sort_string = "KAAAZ" // Duplicate string, really need to redo this whole thing + +/datum/design/circuit/biogenerator + name = "biogenerator" + id = "biogenerator" + req_tech = list(TECH_DATA = 2) + build_path = /obj/item/weapon/circuitboard/biogenerator + sort_string = "KBAAA" + +/datum/design/circuit/miningdrill + name = "mining drill head" + id = "mining drill head" + req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) + build_path = /obj/item/weapon/circuitboard/miningdrill + sort_string = "KCAAA" + +/datum/design/circuit/miningdrillbrace + name = "mining drill brace" + id = "mining drill brace" + req_tech = list(TECH_DATA = 1, TECH_ENGINEERING = 1) + build_path = /obj/item/weapon/circuitboard/miningdrillbrace + sort_string = "KCAAB" + +/datum/design/circuit/comconsole + name = "communications console" + id = "comconsole" + build_path = /obj/item/weapon/circuitboard/communications + sort_string = "LAAAA" + +/datum/design/circuit/idcardconsole + name = "ID card modification console" + id = "idcardconsole" + build_path = /obj/item/weapon/circuitboard/card + sort_string = "LAAAB" + +/datum/design/circuit/emp_data + name = "employment records console" + id = "emp_data" + build_path = /obj/item/weapon/circuitboard/skills + sort_string = "LAAAC" + +/datum/design/circuit/mecha + req_tech = list(TECH_DATA = 3) + +/datum/design/circuit/mecha/AssembleDesignName() + name = "Exosuit module circuit design ([name])" +/datum/design/circuit/mecha/AssembleDesignDesc() + desc = "Allows for the construction of \a [name] module." + +/datum/design/circuit/mecha/ripley_main + name = "APLU 'Ripley' central control" + id = "ripley_main" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/main + sort_string = "NAAAA" + +/datum/design/circuit/mecha/ripley_peri + name = "APLU 'Ripley' peripherals control" + id = "ripley_peri" + build_path = /obj/item/weapon/circuitboard/mecha/ripley/peripherals + sort_string = "NAAAB" + +/datum/design/circuit/mecha/odysseus_main + name = "'Odysseus' central control" + id = "odysseus_main" + req_tech = list(TECH_DATA = 3,TECH_BIO = 2) + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/main + sort_string = "NAABA" + +/datum/design/circuit/mecha/odysseus_peri + name = "'Odysseus' peripherals control" + id = "odysseus_peri" + req_tech = list(TECH_DATA = 3,TECH_BIO = 2) + build_path = /obj/item/weapon/circuitboard/mecha/odysseus/peripherals + sort_string = "NAABB" + +/datum/design/circuit/mecha/gygax_main + name = "'Gygax' central control" + id = "gygax_main" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/mecha/gygax/main + sort_string = "NAACA" + +/datum/design/circuit/mecha/gygax_peri + name = "'Gygax' peripherals control" + id = "gygax_peri" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/mecha/gygax/peripherals + sort_string = "NAACB" + +/datum/design/circuit/mecha/gygax_targ + name = "'Gygax' weapon control and targeting" + id = "gygax_targ" + req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) + build_path = /obj/item/weapon/circuitboard/mecha/gygax/targeting + sort_string = "NAACC" + +/datum/design/circuit/mecha/durand_main + name = "'Durand' central control" + id = "durand_main" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/mecha/durand/main + sort_string = "NAADA" + +/datum/design/circuit/mecha/durand_peri + name = "'Durand' peripherals control" + id = "durand_peri" + req_tech = list(TECH_DATA = 4) + build_path = /obj/item/weapon/circuitboard/mecha/durand/peripherals + sort_string = "NAADB" + +/datum/design/circuit/mecha/durand_targ + name = "'Durand' weapon control and targeting" + id = "durand_targ" + req_tech = list(TECH_DATA = 4, TECH_COMBAT = 2) + build_path = /obj/item/weapon/circuitboard/mecha/durand/targeting + sort_string = "NAADC" + +/datum/design/circuit/tcom + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4) + +/datum/design/circuit/tcom/AssembleDesignName() + name = "Telecommunications machinery circuit design ([name])" +/datum/design/circuit/tcom/AssembleDesignDesc() + desc = "Allows for the construction of a telecommunications [name] circuit board." + +/datum/design/circuit/tcom/server + name = "server mainframe" + id = "tcom-server" + build_path = /obj/item/weapon/circuitboard/telecomms/server + sort_string = "PAAAA" + +/datum/design/circuit/tcom/processor + name = "processor unit" + id = "tcom-processor" + build_path = /obj/item/weapon/circuitboard/telecomms/processor + sort_string = "PAAAB" + +/datum/design/circuit/tcom/bus + name = "bus mainframe" + id = "tcom-bus" + build_path = /obj/item/weapon/circuitboard/telecomms/bus + sort_string = "PAAAC" + +/datum/design/circuit/tcom/hub + name = "hub mainframe" + id = "tcom-hub" + build_path = /obj/item/weapon/circuitboard/telecomms/hub + sort_string = "PAAAD" + +/datum/design/circuit/tcom/relay + name = "relay mainframe" + id = "tcom-relay" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 4, TECH_BLUESPACE = 3) + build_path = /obj/item/weapon/circuitboard/telecomms/relay + sort_string = "PAAAE" + +/datum/design/circuit/tcom/broadcaster + name = "subspace broadcaster" + id = "tcom-broadcaster" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 4, TECH_BLUESPACE = 2) + build_path = /obj/item/weapon/circuitboard/telecomms/broadcaster + sort_string = "PAAAF" + +/datum/design/circuit/tcom/receiver + name = "subspace receiver" + id = "tcom-receiver" + req_tech = list(TECH_DATA = 4, TECH_ENGINEERING = 3, TECH_BLUESPACE = 2) + build_path = /obj/item/weapon/circuitboard/telecomms/receiver + sort_string = "PAAAG" + +/datum/design/circuit/tcom/exonet_node + name = "exonet node" + id = "tcom-exonet_node" + req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5, TECH_BLUESPACE = 4) + build_path = /obj/item/weapon/circuitboard/telecomms/exonet_node + sort_string = "PAAAH" + +/datum/design/circuit/shield + req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) + materials = list("glass" = 2000, "gold" = 1000) + +/datum/design/circuit/shield/AssembleDesignName() + name = "Shield generator circuit design ([name])" +/datum/design/circuit/shield/AssembleDesignDesc() + if(!desc) + desc = "Allows for the construction of \a [name] shield generator." + +/datum/design/circuit/shield/bubble + name = "bubble" + id = "shield_gen" + build_path = /obj/item/weapon/circuitboard/shield_gen + sort_string = "VAAAZ" // Duplicate string, really need to redo this whole thing + +/datum/design/circuit/shield/hull + name = "hull" + id = "shield_gen_ex" + build_path = /obj/item/weapon/circuitboard/shield_gen_ex + sort_string = "VAAAB" + +/datum/design/circuit/shield/capacitor + name = "capacitor" + desc = "Allows for the construction of a shield capacitor circuit board." + id = "shield_cap" + req_tech = list(TECH_MAGNET = 3, TECH_POWER = 4) + build_path = /obj/item/weapon/circuitboard/shield_cap + sort_string = "VAAAC" + +/datum/design/circuit/aicore + name = "AI core" + id = "aicore" + req_tech = list(TECH_DATA = 4, TECH_BIO = 3) + build_path = /obj/item/weapon/circuitboard/aicore + sort_string = "XAAAA" + + +/* I have no idea how this was even running before, but it doesn't seem to be necessary. +/////////////////////////////////// +/////////Shield Generators///////// +/////////////////////////////////// +/datum/design/circuit/shield + req_tech = list(TECH_BLUESPACE = 4, TECH_PHORON = 3) + materials = list("$glass" = 2000, "sacid" = 20, "$phoron" = 10000, "$diamond" = 5000, "$gold" = 10000) +*/ \ No newline at end of file diff --git a/code/modules/research/designs/illegal.dm b/code/modules/research/designs/illegal.dm new file mode 100644 index 0000000000..1542e929b6 --- /dev/null +++ b/code/modules/research/designs/illegal.dm @@ -0,0 +1,19 @@ +// Yeah yeah, vague file name. Basically a misc folder for antag things that RnD can make. + +/datum/design/item/binaryencrypt + name = "Binary encryption key" + desc = "Allows for deciphering the binary channel on-the-fly." + id = "binaryencrypt" + req_tech = list(TECH_ILLEGAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 300, "glass" = 300) + build_path = /obj/item/device/encryptionkey/binary + sort_string = "VASAA" + +/datum/design/item/chameleon + name = "Holographic equipment kit" + desc = "A kit of dangerous, high-tech equipment with changeable looks." + id = "chameleon" + req_tech = list(TECH_ILLEGAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 500) + build_path = /obj/item/weapon/storage/box/syndie_kit/chameleon + sort_string = "VASBA" \ No newline at end of file diff --git a/code/modules/research/designs/medical.dm b/code/modules/research/designs/medical.dm new file mode 100644 index 0000000000..8e821fe0fe --- /dev/null +++ b/code/modules/research/designs/medical.dm @@ -0,0 +1,186 @@ +/datum/design/item/medical + materials = list(DEFAULT_WALL_MATERIAL = 30, "glass" = 20) + +/datum/design/item/medical/AssembleDesignName() + ..() + name = "Biotech device prototype ([item_name])" + +/datum/design/item/medical/robot_scanner + desc = "A hand-held scanner able to diagnose robotic injuries." + id = "robot_scanner" + req_tech = list(TECH_MAGNET = 3, TECH_BIO = 2, TECH_ENGINEERING = 3) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 200) + build_path = /obj/item/device/robotanalyzer + sort_string = "MACFA" + +/datum/design/item/medical/mass_spectrometer + desc = "A device for analyzing chemicals in blood." + id = "mass_spectrometer" + req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2) + build_path = /obj/item/device/mass_spectrometer + sort_string = "MACAA" + +/datum/design/item/medical/adv_mass_spectrometer + desc = "A device for analyzing chemicals in blood and their quantities." + id = "adv_mass_spectrometer" + req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4) + build_path = /obj/item/device/mass_spectrometer/adv + sort_string = "MACAB" + +/datum/design/item/medical/reagent_scanner + desc = "A device for identifying chemicals." + id = "reagent_scanner" + req_tech = list(TECH_BIO = 2, TECH_MAGNET = 2) + build_path = /obj/item/device/reagent_scanner + sort_string = "MACBA" + +/datum/design/item/medical/adv_reagent_scanner + desc = "A device for identifying chemicals and their proportions." + id = "adv_reagent_scanner" + req_tech = list(TECH_BIO = 2, TECH_MAGNET = 4) + build_path = /obj/item/device/reagent_scanner/adv + sort_string = "MACBB" + +/datum/design/item/beaker/AssembleDesignName() + name = "Beaker prototype ([item_name])" + +/datum/design/item/beaker/noreact + name = "cryostasis" + desc = "A cryostasis beaker that allows for chemical storage without reactions. Can hold up to 50 units." + id = "splitbeaker" + req_tech = list(TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 3000) + build_path = /obj/item/weapon/reagent_containers/glass/beaker/noreact + sort_string = "MADAA" + +/datum/design/item/beaker/bluespace + name = TECH_BLUESPACE + desc = "A bluespace beaker, powered by experimental bluespace technology and Element Cuban combined with the Compound Pete. Can hold up to 300 units." + id = "bluespacebeaker" + req_tech = list(TECH_BLUESPACE = 2, TECH_MATERIAL = 6) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "phoron" = 3000, "diamond" = 500) + build_path = /obj/item/weapon/reagent_containers/glass/beaker/bluespace + sort_string = "MADAB" + +/datum/design/item/medical/nanopaste + desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery." + id = "nanopaste" + req_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3) + materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000) + build_path = /obj/item/stack/nanopaste + sort_string = "MBAAA" + +/datum/design/item/medical/scalpel_laser1 + name = "Basic Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks basic and could be improved." + id = "scalpel_laser1" + req_tech = list(TECH_BIO = 2, TECH_MATERIAL = 2, TECH_MAGNET = 2) + materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500) + build_path = /obj/item/weapon/surgical/scalpel/laser1 + sort_string = "MBBAA" + +/datum/design/item/medical/scalpel_laser2 + name = "Improved Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks somewhat advanced." + id = "scalpel_laser2" + req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 4, TECH_MAGNET = 4) + materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2500) + build_path = /obj/item/weapon/surgical/scalpel/laser2 + sort_string = "MBBAB" + +/datum/design/item/medical/scalpel_laser3 + name = "Advanced Laser Scalpel" + desc = "A scalpel augmented with a directed laser, for more precise cutting without blood entering the field. This one looks to be the pinnacle of precision energy cutlery!" + id = "scalpel_laser3" + req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 6, TECH_MAGNET = 5) + materials = list(DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2000, "gold" = 1500) + build_path = /obj/item/weapon/surgical/scalpel/laser3 + sort_string = "MBBAC" + +/datum/design/item/medical/scalpel_manager + name = "Incision Management System" + desc = "A true extension of the surgeon's body, this marvel instantly and completely prepares an incision allowing for the immediate commencement of therapeutic steps." + id = "scalpel_manager" + req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 7, TECH_MAGNET = 5, TECH_DATA = 4) + materials = list (DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 1500, "gold" = 1500, "diamond" = 750) + build_path = /obj/item/weapon/surgical/scalpel/manager + sort_string = "MBBAD" + +/datum/design/item/medical/bone_clamp + name = "Bone Clamp" + desc = "A miracle of modern science, this tool rapidly knits together bone, without the need for bone gel." + id = "bone_clamp" + req_tech = list(TECH_BIO = 4, TECH_MATERIAL = 5, TECH_MAGNET = 4, TECH_DATA = 4) + materials = list (DEFAULT_WALL_MATERIAL = 12500, "glass" = 7500, "silver" = 2500) + build_path = /obj/item/weapon/surgical/bone_clamp + sort_string = "MBBAE" + +/datum/design/item/medical/advanced_roller + name = "advanced roller bed" + desc = "A more advanced version of the regular roller bed, with inbuilt surgical stabilisers and an improved folding system." + id = "roller_bed" + req_tech = list(TECH_BIO = 3, TECH_MATERIAL = 3, TECH_MAGNET = 3) + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 2000, "phoron" = 2000) + build_path = /obj/item/roller/adv + sort_string = "MBBAF" + +/datum/design/item/medical/improved_analyzer + name = "improved health analyzer" + desc = "A prototype version of the regular health analyzer, able to distinguish the location of more serious injuries as well as accurately determine radiation levels." + id = "improved_analyzer" + req_tech = list(TECH_MAGNET = 5, TECH_BIO = 6) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 1500) + build_path = /obj/item/device/healthanalyzer/improved + sort_string = "MBBAG" + +/datum/design/item/implant + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + +/datum/design/item/implant/AssembleDesignName() + ..() + name = "Implantable biocircuit design ([item_name])" + +/datum/design/item/implant/chemical + name = "chemical" + id = "implant_chem" + req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3) + build_path = /obj/item/weapon/implantcase/chem + sort_string = "MFAAA" + +/datum/design/item/implant/freedom + name = "freedom" + id = "implant_free" + req_tech = list(TECH_ILLEGAL = 2, TECH_BIO = 3) + build_path = /obj/item/weapon/implantcase/freedom + sort_string = "MFAAB" + +// These are in here because Robotics is close enough to Medical and I don't want to make a new brains.dm file +/datum/design/item/dronebrain + name = "Robotic intelligence circuit" + id = "dronebrain" + req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 5, TECH_DATA = 4) + build_type = PROTOLATHE | PROSFAB + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500) + build_path = /obj/item/device/mmi/digital/robot + category = "Misc" + sort_string = "VACAC" + +/datum/design/item/posibrain + name = "Positronic brain" + id = "posibrain" + req_tech = list(TECH_ENGINEERING = 4, TECH_MATERIAL = 6, TECH_BLUESPACE = 2, TECH_DATA = 4) + build_type = PROTOLATHE | PROSFAB + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "silver" = 1000, "gold" = 500, "phoron" = 500, "diamond" = 100) + build_path = /obj/item/device/mmi/digital/posibrain + category = "Misc" + sort_string = "VACAB" + +/datum/design/item/mmi + name = "Man-machine interface" + id = "mmi" + req_tech = list(TECH_DATA = 2, TECH_BIO = 3) + build_type = PROTOLATHE | PROSFAB + materials = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 500) + build_path = /obj/item/device/mmi + category = "Misc" + sort_string = "VACBA" \ No newline at end of file diff --git a/code/modules/research/designs/mining_toys.dm b/code/modules/research/designs/mining_toys.dm new file mode 100644 index 0000000000..f9b76032cb --- /dev/null +++ b/code/modules/research/designs/mining_toys.dm @@ -0,0 +1,48 @@ +// Assorted Mining-related items + +/datum/design/item/weapon/mining/AssembleDesignName() + ..() + name = "Mining equipment design ([item_name])" + +/datum/design/item/weapon/mining/jackhammer + id = "jackhammer" + req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "silver" = 500) + build_path = /obj/item/weapon/pickaxe/jackhammer + sort_string = "KAAAA" + +/datum/design/item/weapon/mining/drill + id = "drill" + req_tech = list(TECH_MATERIAL = 2, TECH_POWER = 3, TECH_ENGINEERING = 2) + materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1000) //expensive, but no need for miners. + build_path = /obj/item/weapon/pickaxe/drill + sort_string = "KAAAB" + +/datum/design/item/weapon/mining/plasmacutter + id = "plasmacutter" + req_tech = list(TECH_MATERIAL = 4, TECH_PHORON = 3, TECH_ENGINEERING = 3) + materials = list(DEFAULT_WALL_MATERIAL = 1500, "glass" = 500, "gold" = 500, "phoron" = 500) + build_path = /obj/item/weapon/pickaxe/plasmacutter + sort_string = "KAAAC" + +/datum/design/item/weapon/mining/pick_diamond + id = "pick_diamond" + req_tech = list(TECH_MATERIAL = 6) + materials = list("diamond" = 3000) + build_path = /obj/item/weapon/pickaxe/diamond + sort_string = "KAAAD" + +/datum/design/item/weapon/mining/drill_diamond + id = "drill_diamond" + req_tech = list(TECH_MATERIAL = 6, TECH_POWER = 4, TECH_ENGINEERING = 4) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 1000, "diamond" = 2000) + build_path = /obj/item/weapon/pickaxe/diamonddrill + sort_string = "KAAAE" + +/datum/design/item/device/depth_scanner + desc = "Used to check spatial depth and density of rock outcroppings." + id = "depth_scanner" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 2) + materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 1000) + build_path = /obj/item/device/depth_scanner + sort_string = "KAAAF" \ No newline at end of file diff --git a/code/modules/research/designs/misc.dm b/code/modules/research/designs/misc.dm new file mode 100644 index 0000000000..ab420d142f --- /dev/null +++ b/code/modules/research/designs/misc.dm @@ -0,0 +1,203 @@ +/* +// +// THIS IS GOING TO GET REAL DAMN BLOATED, SO LET'S TRY TO AVOID THAT IF POSSIBLE +// +*/ + +/datum/design/item/hud + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + +/datum/design/item/hud/AssembleDesignName() + ..() + name = "HUD glasses prototype ([item_name])" + +/datum/design/item/hud/AssembleDesignDesc() + desc = "Allows for the construction of \a [item_name] HUD glasses." + +/datum/design/item/hud/health + name = "health scanner" + id = "health_hud" + req_tech = list(TECH_BIO = 2, TECH_MAGNET = 3) + build_path = /obj/item/clothing/glasses/hud/health + sort_string = "GAAAA" + +/datum/design/item/hud/security + name = "security records" + id = "security_hud" + req_tech = list(TECH_MAGNET = 3, TECH_COMBAT = 2) + build_path = /obj/item/clothing/glasses/hud/security + sort_string = "GAAAB" + +/datum/design/item/hud/mesons + name = "Optical meson scanners design" + desc = "Using the meson-scanning technology those glasses allow you to see through walls, floor or anything else." + id = "mesons" + req_tech = list(TECH_MAGNET = 2, TECH_ENGINEERING = 2) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + build_path = /obj/item/clothing/glasses/meson + sort_string = "GAAAC" + +/datum/design/item/device/ano_scanner + name = "Alden-Saraspova counter" + id = "ano_scanner" + desc = "Aids in triangulation of exotic particles." + req_tech = list(TECH_BLUESPACE = 3, TECH_MAGNET = 3) + materials = list(DEFAULT_WALL_MATERIAL = 10000,"glass" = 5000) + build_path = /obj/item/device/ano_scanner + sort_string = "UAAAH" + +/datum/design/item/light_replacer + name = "Light replacer" + desc = "A device to automatically replace lights. Refill with working lightbulbs." + id = "light_replacer" + req_tech = list(TECH_MAGNET = 3, TECH_MATERIAL = 4) + materials = list(DEFAULT_WALL_MATERIAL = 1500, "silver" = 150, "glass" = 3000) + build_path = /obj/item/device/lightreplacer + sort_string = "VAAAH" + +datum/design/item/laserpointer + name = "laser pointer" + desc = "Don't shine it in your eyes!" + id = "laser_pointer" + req_tech = list(TECH_MAGNET = 3) + materials = list(DEFAULT_WALL_MATERIAL = 100, "glass" = 50) + build_path = /obj/item/device/laser_pointer + sort_string = "VAAAI" + +/datum/design/item/paicard + name = "'pAI', personal artificial intelligence device" + id = "paicard" + req_tech = list(TECH_DATA = 2) + materials = list("glass" = 500, DEFAULT_WALL_MATERIAL = 500) + build_path = /obj/item/device/paicard + sort_string = "VABAI" + +/datum/design/item/communicator + name = "Communicator" + id = "communicator" + req_tech = list(TECH_DATA = 2, TECH_MAGNET = 2) + materials = list(DEFAULT_WALL_MATERIAL = 500, "glass" = 500) + build_path = /obj/item/device/communicator + sort_string = "VABAJ" + +/datum/design/item/beacon + name = "Bluespace tracking beacon design" + id = "beacon" + req_tech = list(TECH_BLUESPACE = 1) + materials = list (DEFAULT_WALL_MATERIAL = 20, "glass" = 10) + build_path = /obj/item/device/radio/beacon + sort_string = "VADAA" + +/datum/design/item/gps + name = "Triangulating device design" + desc = "Triangulates approximate co-ordinates using a nearby satellite network." + id = "gps" + req_tech = list(TECH_MATERIAL = 2, TECH_DATA = 2, TECH_BLUESPACE = 2) + materials = list(DEFAULT_WALL_MATERIAL = 500) + build_path = /obj/item/device/gps + sort_string = "VADAB" + +/datum/design/item/beacon_locator + name = "Beacon tracking pinpointer" + desc = "Used to scan and locate signals on a particular frequency." + id = "beacon_locator" + req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) + materials = list(DEFAULT_WALL_MATERIAL = 1000,"glass" = 500) + build_path = /obj/item/device/beacon_locator + sort_string = "VADAC" + +/datum/design/item/bag_holding + name = "'Bag of Holding', an infinite capacity bag prototype" + desc = "Using localized pockets of bluespace this bag prototype offers incredible storage capacity with the contents weighting nothing. It's a shame the bag itself is pretty heavy." + id = "bag_holding" + req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6) + materials = list("gold" = 3000, "diamond" = 1500, "uranium" = 250) + build_path = /obj/item/weapon/storage/backpack/holding + sort_string = "VAEAA" + +/datum/design/item/dufflebag_holding + name = "'DuffleBag of Holding', an infinite capacity dufflebag prototype" + desc = "A minaturized prototype of the popular Bag of Holding, the Dufflebag of Holding is, functionally, identical to the bag of holding, but comes in a more stylish and compact form." + id = "dufflebag_holding" + req_tech = list(TECH_BLUESPACE = 4, TECH_MATERIAL = 6) + materials = list("gold" = 3000, "diamond" = 1500, "uranium" = 250) + build_path = /obj/item/weapon/storage/backpack/holding/duffle + sort_string = "VAEAB" + +/datum/design/item/experimental_welder + name = "Experimental welding tool" + desc = "A welding tool that generate fuel for itself." + id = "expwelder" + req_tech = list(TECH_ENGINEERING = 4, TECH_PHORON = 3, TECH_MATERIAL = 4) + materials = list(DEFAULT_WALL_MATERIAL = 70, "glass" = 120, "phoron" = 100) + build_path = /obj/item/weapon/weldingtool/experimental + sort_string = "VASCA" + +/datum/design/item/hand_drill + name = "Hand drill" + desc = "A simple powered hand drill." + id = "handdrill" + req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100) + build_path = /obj/item/weapon/screwdriver/power + sort_string = "VASDA" + +/datum/design/item/jaws_life + name = "Jaws of life" + desc = "A set of jaws of life, compressed through the magic of science." + id = "jawslife" + req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 300, "silver" = 100) + build_path = /obj/item/weapon/crowbar/power + sort_string = "VASEA" + +/datum/design/item/device/t_scanner_upg + name = "Upgraded T-ray Scanner" + desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." + id = "upgradedtscanner" + req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 4, TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 500, "phoron" = 150) + build_path = /obj/item/device/t_scanner/upgraded + sort_string = "VASSA" + +/datum/design/item/device/t_scanner_adv + name = "Advanced T-ray Scanner" + desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes." + id = "advancedtscanner" + req_tech = list(TECH_MAGNET = 6, TECH_ENGINEERING = 6, TECH_MATERIAL = 6) + materials = list(DEFAULT_WALL_MATERIAL = 1250, "phoron" = 500, "silver" = 50) + build_path = /obj/item/device/t_scanner/advanced + sort_string = "VASSB" + +/datum/design/item/translator + name = "handheld translator" + id = "translator" + req_tech = list(TECH_DATA = 3, TECH_ENGINEERING = 3) + materials = list(DEFAULT_WALL_MATERIAL = 3000, "glass" = 3000) + build_path = /obj/item/device/universal_translator + sort_string = "HABQA" + +/datum/design/item/ear_translator + name = "earpiece translator" + id = "ear_translator" + req_tech = list(TECH_DATA = 5, TECH_ENGINEERING = 5) //It's been hella miniaturized. + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 2000, "gold" = 1000) + build_path = /obj/item/device/universal_translator/ear + sort_string = "HABQB" + +/datum/design/item/xenoarch_multi_tool + name = "xenoarcheology multitool" + id = "xenoarch_multitool" + req_tech = list(TECH_MAGNET = 3, TECH_ENGINEERING = 3, TECH_BLUESPACE = 3) + build_path = /obj/item/device/xenoarch_multi_tool + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 1000, "uranium" = 500, "phoron" = 500) + sort_string = "HABQC" + +/datum/design/item/excavationdrill + name = "Excavation Drill" + id = "excavationdrill" + req_tech = list(TECH_MATERIAL = 3, TECH_POWER = 2, TECH_ENGINEERING = 2, TECH_BLUESPACE = 3) + build_type = PROTOLATHE + materials = list(DEFAULT_WALL_MATERIAL = 4000, "glass" = 4000) + build_path = /obj/item/weapon/pickaxe/excavationdrill + sort_string = "HABQD" diff --git a/code/modules/research/designs/pdas.dm b/code/modules/research/designs/pdas.dm new file mode 100644 index 0000000000..4aca3062b9 --- /dev/null +++ b/code/modules/research/designs/pdas.dm @@ -0,0 +1,92 @@ +/datum/design/item/pda + name = "PDA design" + desc = "Cheaper than whiny non-digital assistants." + id = "pda" + req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + build_path = /obj/item/device/pda + sort_string = "VAAAA" + +// Cartridges +/datum/design/item/pda_cartridge + req_tech = list(TECH_ENGINEERING = 2, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + +/datum/design/item/pda_cartridge/AssembleDesignName() + ..() + name = "PDA accessory ([item_name])" + +/datum/design/item/pda_cartridge/cart_basic + id = "cart_basic" + build_path = /obj/item/weapon/cartridge + sort_string = "VBAAA" + +/datum/design/item/pda_cartridge/engineering + id = "cart_engineering" + build_path = /obj/item/weapon/cartridge/engineering + sort_string = "VBAAB" + +/datum/design/item/pda_cartridge/atmos + id = "cart_atmos" + build_path = /obj/item/weapon/cartridge/atmos + sort_string = "VBAAC" + +/datum/design/item/pda_cartridge/medical + id = "cart_medical" + build_path = /obj/item/weapon/cartridge/medical + sort_string = "VBAAD" + +/datum/design/item/pda_cartridge/chemistry + id = "cart_chemistry" + build_path = /obj/item/weapon/cartridge/chemistry + sort_string = "VBAAE" + +/datum/design/item/pda_cartridge/security + id = "cart_security" + build_path = /obj/item/weapon/cartridge/security + sort_string = "VBAAF" + +/datum/design/item/pda_cartridge/janitor + id = "cart_janitor" + build_path = /obj/item/weapon/cartridge/janitor + sort_string = "VBAAG" + +/datum/design/item/pda_cartridge/science + id = "cart_science" + build_path = /obj/item/weapon/cartridge/signal/science + sort_string = "VBAAH" + +/datum/design/item/pda_cartridge/quartermaster + id = "cart_quartermaster" + build_path = /obj/item/weapon/cartridge/quartermaster + sort_string = "VBAAI" + +/datum/design/item/pda_cartridge/hop + id = "cart_hop" + build_path = /obj/item/weapon/cartridge/hop + sort_string = "VBAAJ" + +/datum/design/item/pda_cartridge/hos + id = "cart_hos" + build_path = /obj/item/weapon/cartridge/hos + sort_string = "VBAAK" + +/datum/design/item/pda_cartridge/ce + id = "cart_ce" + build_path = /obj/item/weapon/cartridge/ce + sort_string = "VBAAL" + +/datum/design/item/pda_cartridge/cmo + id = "cart_cmo" + build_path = /obj/item/weapon/cartridge/cmo + sort_string = "VBAAM" + +/datum/design/item/pda_cartridge/rd + id = "cart_rd" + build_path = /obj/item/weapon/cartridge/rd + sort_string = "VBAAN" + +/datum/design/item/pda_cartridge/captain + id = "cart_captain" + build_path = /obj/item/weapon/cartridge/captain + sort_string = "VBAAO" \ No newline at end of file diff --git a/code/modules/research/designs/powercells.dm b/code/modules/research/designs/powercells.dm new file mode 100644 index 0000000000..1ae3a3c361 --- /dev/null +++ b/code/modules/research/designs/powercells.dm @@ -0,0 +1,71 @@ +/datum/design/item/powercell + build_type = PROTOLATHE | MECHFAB + +/datum/design/item/powercell/AssembleDesignName() + name = "Power Cell Model ([item_name])" + +/datum/design/item/powercell/AssembleDesignDesc() + if(build_path) + var/obj/item/weapon/cell/C = build_path + desc = "Allows the construction of power cells that can hold [initial(C.maxcharge)] units of energy." + +/datum/design/item/powercell/Fabricate() + var/obj/item/weapon/cell/C = ..() + C.charge = 0 //shouldn't produce power out of thin air. + return C + +/datum/design/item/powercell/basic + name = "basic" + build_type = PROTOLATHE | MECHFAB + id = "basic_cell" + req_tech = list(TECH_POWER = 1) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) + build_path = /obj/item/weapon/cell + category = "Misc" + sort_string = "DAAAA" + +/datum/design/item/powercell/high + name = "high-capacity" + build_type = PROTOLATHE | MECHFAB + id = "high_cell" + req_tech = list(TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 60) + build_path = /obj/item/weapon/cell/high + category = "Misc" + sort_string = "DAAAB" + +/datum/design/item/powercell/super + name = "super-capacity" + id = "super_cell" + req_tech = list(TECH_POWER = 3, TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 70) + build_path = /obj/item/weapon/cell/super + category = "Misc" + sort_string = "DAAAC" + +/datum/design/item/powercell/hyper + name = "hyper-capacity" + id = "hyper_cell" + req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4) + materials = list(DEFAULT_WALL_MATERIAL = 400, "gold" = 150, "silver" = 150, "glass" = 70) + build_path = /obj/item/weapon/cell/hyper + category = "Misc" + sort_string = "DAAAD" + +/datum/design/item/powercell/device + name = "device" + build_type = PROTOLATHE + id = "device" + materials = list(DEFAULT_WALL_MATERIAL = 350, "glass" = 25) + build_path = /obj/item/weapon/cell/device + category = "Misc" + sort_string = "DAABA" + +/datum/design/item/powercell/weapon + name = "weapon" + build_type = PROTOLATHE + id = "weapon" + materials = list(DEFAULT_WALL_MATERIAL = 700, "glass" = 50) + build_path = /obj/item/weapon/cell/device/weapon + category = "Misc" + sort_string = "DAABB" \ No newline at end of file diff --git a/code/modules/research/designs/stock_parts.dm b/code/modules/research/designs/stock_parts.dm new file mode 100644 index 0000000000..fb629e7ad7 --- /dev/null +++ b/code/modules/research/designs/stock_parts.dm @@ -0,0 +1,178 @@ +/* + Various Stock Parts +*/ + +/datum/design/item/stock_part + build_type = PROTOLATHE + +/datum/design/item/stock_part/AssembleDesignName() + ..() + name = "Component design ([item_name])" + +/datum/design/item/stock_part/AssembleDesignDesc() + if(!desc) + desc = "A stock part used in the construction of various devices." + +/datum/design/item/stock_part/basic_capacitor + id = "basic_capacitor" + req_tech = list(TECH_POWER = 1) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + build_path = /obj/item/weapon/stock_parts/capacitor + sort_string = "CAAAA" + +/datum/design/item/stock_part/adv_capacitor + id = "adv_capacitor" + req_tech = list(TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50) + build_path = /obj/item/weapon/stock_parts/capacitor/adv + sort_string = "CAAAB" + +/datum/design/item/stock_part/super_capacitor + id = "super_capacitor" + req_tech = list(TECH_POWER = 5, TECH_MATERIAL = 4) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50, "gold" = 20) + build_path = /obj/item/weapon/stock_parts/capacitor/super + sort_string = "CAAAC" + +/datum/design/item/stock_part/micro_mani + id = "micro_mani" + req_tech = list(TECH_MATERIAL = 1, TECH_DATA = 1) + materials = list(DEFAULT_WALL_MATERIAL = 30) + build_path = /obj/item/weapon/stock_parts/manipulator + sort_string = "CAABA" + +/datum/design/item/stock_part/nano_mani + id = "nano_mani" + req_tech = list(TECH_MATERIAL = 3, TECH_DATA = 2) + materials = list(DEFAULT_WALL_MATERIAL = 30) + build_path = /obj/item/weapon/stock_parts/manipulator/nano + sort_string = "CAABB" + +/datum/design/item/stock_part/pico_mani + id = "pico_mani" + req_tech = list(TECH_MATERIAL = 5, TECH_DATA = 2) + materials = list(DEFAULT_WALL_MATERIAL = 30) + build_path = /obj/item/weapon/stock_parts/manipulator/pico + sort_string = "CAABC" + +/datum/design/item/stock_part/basic_matter_bin + id = "basic_matter_bin" + req_tech = list(TECH_MATERIAL = 1) + materials = list(DEFAULT_WALL_MATERIAL = 80) + build_path = /obj/item/weapon/stock_parts/matter_bin + sort_string = "CAACA" + +/datum/design/item/stock_part/adv_matter_bin + id = "adv_matter_bin" + req_tech = list(TECH_MATERIAL = 3) + materials = list(DEFAULT_WALL_MATERIAL = 80) + build_path = /obj/item/weapon/stock_parts/matter_bin/adv + sort_string = "CAACB" + +/datum/design/item/stock_part/super_matter_bin + id = "super_matter_bin" + req_tech = list(TECH_MATERIAL = 5) + materials = list(DEFAULT_WALL_MATERIAL = 80) + build_path = /obj/item/weapon/stock_parts/matter_bin/super + sort_string = "CAACC" + +/datum/design/item/stock_part/basic_micro_laser + id = "basic_micro_laser" + req_tech = list(TECH_MAGNET = 1) + materials = list(DEFAULT_WALL_MATERIAL = 10, "glass" = 20) + build_path = /obj/item/weapon/stock_parts/micro_laser + sort_string = "CAADA" + +/datum/design/item/stock_part/high_micro_laser + id = "high_micro_laser" + req_tech = list(TECH_MAGNET = 3) + materials = list(DEFAULT_WALL_MATERIAL = 10, "glass" = 20) + build_path = /obj/item/weapon/stock_parts/micro_laser/high + sort_string = "CAADB" + +/datum/design/item/stock_part/ultra_micro_laser + id = "ultra_micro_laser" + req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5) + materials = list(DEFAULT_WALL_MATERIAL = 10, "glass" = 20, "uranium" = 10) + build_path = /obj/item/weapon/stock_parts/micro_laser/ultra + sort_string = "CAADC" + +/datum/design/item/stock_part/basic_sensor + id = "basic_sensor" + req_tech = list(TECH_MAGNET = 1) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) + build_path = /obj/item/weapon/stock_parts/scanning_module + sort_string = "CAAEA" + +/datum/design/item/stock_part/adv_sensor + id = "adv_sensor" + req_tech = list(TECH_MAGNET = 3) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20) + build_path = /obj/item/weapon/stock_parts/scanning_module/adv + sort_string = "CAAEB" + +/datum/design/item/stock_part/phasic_sensor + id = "phasic_sensor" + req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 3) + materials = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 20, "silver" = 10) + build_path = /obj/item/weapon/stock_parts/scanning_module/phasic + sort_string = "CAAEC" + +/datum/design/item/stock_part/subspace_ansible + id = "s-ansible" + req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) + materials = list(DEFAULT_WALL_MATERIAL = 80, "silver" = 20) + build_path = /obj/item/weapon/stock_parts/subspace/ansible + sort_string = "UAAAA" + +/datum/design/item/stock_part/hyperwave_filter + id = "s-filter" + req_tech = list(TECH_DATA = 3, TECH_MAGNET = 3) + materials = list(DEFAULT_WALL_MATERIAL = 40, "silver" = 10) + build_path = /obj/item/weapon/stock_parts/subspace/sub_filter + sort_string = "UAAAB" + +/datum/design/item/stock_part/subspace_amplifier + id = "s-amplifier" + req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) + materials = list(DEFAULT_WALL_MATERIAL = 10, "gold" = 30, "uranium" = 15) + build_path = /obj/item/weapon/stock_parts/subspace/amplifier + sort_string = "UAAAC" + +/datum/design/item/stock_part/subspace_treatment + id = "s-treatment" + req_tech = list(TECH_DATA = 3, TECH_MAGNET = 2, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) + materials = list(DEFAULT_WALL_MATERIAL = 10, "silver" = 20) + build_path = /obj/item/weapon/stock_parts/subspace/treatment + sort_string = "UAAAD" + +/datum/design/item/stock_part/subspace_analyzer + id = "s-analyzer" + req_tech = list(TECH_DATA = 3, TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) + materials = list(DEFAULT_WALL_MATERIAL = 10, "gold" = 15) + build_path = /obj/item/weapon/stock_parts/subspace/analyzer + sort_string = "UAAAE" + +/datum/design/item/stock_part/subspace_crystal + id = "s-crystal" + req_tech = list(TECH_MAGNET = 4, TECH_MATERIAL = 4, TECH_BLUESPACE = 2) + materials = list("glass" = 1000, "silver" = 20, "gold" = 20) + build_path = /obj/item/weapon/stock_parts/subspace/crystal + sort_string = "UAAAF" + +/datum/design/item/stock_part/subspace_transmitter + id = "s-transmitter" + req_tech = list(TECH_MAGNET = 5, TECH_MATERIAL = 5, TECH_BLUESPACE = 3) + materials = list("glass" = 100, "silver" = 10, "uranium" = 15) + build_path = /obj/item/weapon/stock_parts/subspace/transmitter + sort_string = "UAAAG" + +// RPED lives here because it handles stock parts +/datum/design/item/stock_part/RPED + name = "Rapid Part Exchange Device" + desc = "Special mechanical module made to store, sort, and apply standard machine parts." + id = "rped" + req_tech = list(TECH_ENGINEERING = 3, TECH_MATERIAL = 3) + materials = list(DEFAULT_WALL_MATERIAL = 15000, "glass" = 5000) + build_path = /obj/item/weapon/storage/part_replacer + sort_string = "CBAAA" \ No newline at end of file diff --git a/code/modules/research/designs/uncommented.dm b/code/modules/research/designs/uncommented.dm new file mode 100644 index 0000000000..7bbf53571a --- /dev/null +++ b/code/modules/research/designs/uncommented.dm @@ -0,0 +1,69 @@ + +/* Uncomment if someone makes these buildable +/datum/design/circuit/general_alert + name = "general alert console" + id = "general_alert" + build_path = /obj/item/weapon/circuitboard/general_alert + +// Removal of loyalty implants. Can't think of a way to add this to the config option. +/datum/design/item/implant/loyalty + name = "loyalty" + id = "implant_loyal" + req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3) + materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 7000) + build_path = /obj/item/weapon/implantcase/loyalty" + +/datum/design/rust_core_control + name = "Circuit Design (RUST core controller)" + desc = "Allows for the construction of circuit boards used to build a core control console for the RUST fusion engine." + id = "rust_core_control" + req_tech = list("programming" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list("glass" = 2000, "sacid" = 20) + build_path = "/obj/item/weapon/circuitboard/rust_core_control" + +datum/design/rust_fuel_control + name = "Circuit Design (RUST fuel controller)" + desc = "Allows for the construction of circuit boards used to build a fuel injector control console for the RUST fusion engine." + id = "rust_fuel_control" + req_tech = list("programming" = 4, "engineering" = 4) + build_type = IMPRINTER + materials = list("glass" = 2000, "sacid" = 20) + build_path = "/obj/item/weapon/circuitboard/rust_fuel_control" + +datum/design/rust_fuel_port + name = "Internal circuitry (RUST fuel port)" + desc = "Allows for the construction of circuit boards used to build a fuel injection port for the RUST fusion engine." + id = "rust_fuel_port" + req_tech = list("engineering" = 4, "materials" = 5) + build_type = IMPRINTER + materials = list("glass" = 2000, "sacid" = 20, "uranium" = 3000) + build_path = "/obj/item/weapon/module/rust_fuel_port" + +datum/design/rust_fuel_compressor + name = "Circuit Design (RUST fuel compressor)" + desc = "Allows for the construction of circuit boards used to build a fuel compressor of the RUST fusion engine." + id = "rust_fuel_compressor" + req_tech = list("materials" = 6, "phorontech" = 4) + build_type = IMPRINTER + materials = list("glass" = 2000, "sacid" = 20, "phoron" = 3000, "diamond" = 1000) + build_path = "/obj/item/weapon/module/rust_fuel_compressor" + +datum/design/rust_core + name = "Internal circuitry (RUST tokamak core)" + desc = "The circuit board that for a RUST-pattern tokamak fusion core." + id = "pacman" + req_tech = list(bluespace = 3, phorontech = 4, magnets = 5, powerstorage = 6) + build_type = IMPRINTER + materials = list("glass" = 2000, "sacid" = 20, "phoron" = 3000, "diamond" = 2000) + build_path = "/obj/item/weapon/circuitboard/rust_core" + +datum/design/rust_injector + name = "Internal circuitry (RUST tokamak core)" + desc = "The circuit board that for a RUST-pattern particle accelerator." + id = "pacman" + req_tech = list(powerstorage = 3, engineering = 4, phorontech = 4, materials = 6) + build_type = IMPRINTER + materials = list("glass" = 2000, "sacid" = 20, "phoron" = 3000, "uranium" = 2000) + build_path = "/obj/item/weapon/circuitboard/rust_core" +*/ diff --git a/code/modules/research/designs/weapons.dm b/code/modules/research/designs/weapons.dm new file mode 100644 index 0000000000..ddf64473eb --- /dev/null +++ b/code/modules/research/designs/weapons.dm @@ -0,0 +1,192 @@ +/datum/design/item/weapon/AssembleDesignName() + ..() + name = "Weapon prototype ([item_name])" + +/datum/design/item/weapon/AssembleDesignDesc() + if(!desc) + if(build_path) + var/obj/item/I = build_path + desc = initial(I.desc) + ..() + +/datum/design/item/weapon/stunrevolver + id = "stunrevolver" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 4000) + build_path = /obj/item/weapon/gun/energy/stunrevolver + sort_string = "TAAAA" + +/datum/design/item/weapon/nuclear_gun + id = "nuclear_gun" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 5, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "uranium" = 500) + build_path = /obj/item/weapon/gun/energy/gun/nuclear + sort_string = "TAAAB" + +/datum/design/item/weapon/lasercannon + desc = "The lasing medium of this prototype is enclosed in a tube lined with uranium-235 and subjected to high neutron flux in a nuclear reactor core." + id = "lasercannon" + req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 1000, "diamond" = 2000) + build_path = /obj/item/weapon/gun/energy/lasercannon + sort_string = "TAAAC" + +/datum/design/item/weapon/phoronpistol + id = "ppistol" + req_tech = list(TECH_COMBAT = 5, TECH_PHORON = 4) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000, "phoron" = 3000) + build_path = /obj/item/weapon/gun/energy/toxgun + sort_string = "TAAAD" + +/datum/design/item/weapon/decloner + id = "decloner" + req_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 7, TECH_BIO = 5, TECH_POWER = 6) + materials = list("gold" = 5000,"uranium" = 10000) + build_path = /obj/item/weapon/gun/energy/decloner + sort_string = "TAAAE" + +/datum/design/item/weapon/smg + id = "smg" + req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) + materials = list(DEFAULT_WALL_MATERIAL = 8000, "silver" = 2000, "diamond" = 1000) + build_path = /obj/item/weapon/gun/projectile/automatic + sort_string = "TAABA" + +/datum/design/item/weapon/ammo_9mm + id = "ammo_9mm" + req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3) + materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100) + build_path = /obj/item/ammo_magazine/box/c9mm + sort_string = "TAACA" + +/datum/design/item/weapon/stunshell + desc = "A stunning shell for a shotgun." + id = "stunshell" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3) + materials = list(DEFAULT_WALL_MATERIAL = 4000) + build_path = /obj/item/ammo_casing/a12g/stunshell + sort_string = "TAACB" + +/datum/design/item/weapon/chemsprayer + desc = "An advanced chem spraying device." + id = "chemsprayer" + req_tech = list(TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000) + build_path = /obj/item/weapon/reagent_containers/spray/chemsprayer + sort_string = "TABAA" + +/datum/design/item/weapon/rapidsyringe + id = "rapidsyringe" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3, TECH_ENGINEERING = 3, TECH_BIO = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 1000) + build_path = /obj/item/weapon/gun/launcher/syringe/rapid + sort_string = "TABAB" + +/datum/design/item/weapon/temp_gun + desc = "A gun that shoots high-powered glass-encased energy temperature bullets." + id = "temp_gun" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 4, TECH_POWER = 3, TECH_MAGNET = 2) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 500, "silver" = 3000) + build_path = /obj/item/weapon/gun/energy/temperature + sort_string = "TABAC" + +/datum/design/item/weapon/large_grenade + id = "large_Grenade" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2) + materials = list(DEFAULT_WALL_MATERIAL = 3000) + build_path = /obj/item/weapon/grenade/chem_grenade/large + sort_string = "TACAA" + +/datum/design/item/weapon/dartgun + desc = "A gun that fires small hollow chemical-payload darts." + id = "dartgun_r" + req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_BIO = 4, TECH_MAGNET = 3, TECH_ILLEGAL = 1) + materials = list(DEFAULT_WALL_MATERIAL = 5000, "gold" = 5000, "silver" = 2500, "glass" = 750) + build_path = /obj/item/weapon/gun/projectile/dartgun/research + sort_string = "TACAB" + +/datum/design/item/weapon/dartgunmag_small + id = "dartgun_mag_s" + req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) + materials = list(DEFAULT_WALL_MATERIAL = 300, "gold" = 100, "silver" = 100, "glass" = 300) + build_path = /obj/item/ammo_magazine/chemdart/small + sort_string = "TACAC" + +/datum/design/item/weapon/dartgun_ammo_small + id = "dartgun_ammo_s" + req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) + materials = list(DEFAULT_WALL_MATERIAL = 50, "gold" = 30, "silver" = 30, "glass" = 50) + build_path = /obj/item/ammo_casing/chemdart/small + sort_string = "TACAD" + +/datum/design/item/weapon/dartgunmag_med + id = "dartgun_mag_m" + req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) + materials = list(DEFAULT_WALL_MATERIAL = 500, "gold" = 150, "silver" = 150, "diamond" = 200, "glass" = 400) + build_path = /obj/item/ammo_magazine/chemdart + sort_string = "TACAE" + +/datum/design/item/weapon/dartgun_ammo_med + id = "dartgun_ammo_m" + req_tech = list(TECH_COMBAT = 7, TECH_MATERIAL = 2, TECH_BIO = 2, TECH_MAGNET = 1, TECH_ILLEGAL = 1) + materials = list(DEFAULT_WALL_MATERIAL = 80, "gold" = 40, "silver" = 40, "glass" = 60) + build_path = /obj/item/ammo_casing/chemdart + sort_string = "TACAF" + +/datum/design/item/weapon/fuelrod + id = "fuelrod_gun" + req_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 4, TECH_PHORON = 4, TECH_ILLEGAL = 5, TECH_MAGNET = 5) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "gold" = 500, "silver" = 500, "uranium" = 1000, "phoron" = 3000, "diamond" = 1000) + build_path = /obj/item/weapon/gun/magnetic/fuelrod + sort_string = "TACBA" + +/datum/design/item/weapon/flora_gun + id = "flora_gun" + req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 3, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 2000, "glass" = 500, "uranium" = 500) + build_path = /obj/item/weapon/gun/energy/floragun + sort_string = "TBAAA" + +// Xenobio Tools +/datum/design/item/weapon/slimebation + id = "slimebation" + req_tech = list(TECH_MATERIAL = 2, TECH_BIO = 2, TECH_POWER = 3, TECH_COMBAT = 3) + materials = list(DEFAULT_WALL_MATERIAL = 5000) + build_path = /obj/item/weapon/melee/baton/slime + sort_string = "TBAAB" + +/datum/design/item/weapon/slimetaser + id = "slimetaser" + req_tech = list(TECH_MATERIAL = 3, TECH_BIO = 3, TECH_POWER = 4, TECH_COMBAT = 4) + materials = list(DEFAULT_WALL_MATERIAL = 5000) + build_path = /obj/item/weapon/gun/energy/taser/xeno + sort_string = "TBAAC" + +// Phase Weapons +/datum/design/item/weapon/phase_pistol + id = "phasepistol" + req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 2, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 4000) + build_path = /obj/item/weapon/gun/energy/phasegun/pistol + sort_string = "TPAAA" + +/datum/design/item/weapon/phase_carbine + id = "phasecarbine" + req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_POWER = 2) + materials = list(DEFAULT_WALL_MATERIAL = 6000, "glass" = 1500) + build_path = /obj/item/weapon/gun/energy/phasegun + sort_string = "TPAAB" + +/datum/design/item/weapon/phase_rifle + id = "phaserifle" + req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3, TECH_POWER = 3) + materials = list(DEFAULT_WALL_MATERIAL = 7000, "glass" = 2000, "silver" = 500) + build_path = /obj/item/weapon/gun/energy/phasegun/rifle + sort_string = "TPAAC" + +/datum/design/item/weapon/phase_cannon + id = "phasecannon" + req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 4, TECH_POWER = 4) + materials = list(DEFAULT_WALL_MATERIAL = 10000, "glass" = 2000, "silver" = 1000, "diamond" = 750) + build_path = /obj/item/weapon/gun/energy/phasegun/cannon + sort_string = "TPAAD" \ No newline at end of file diff --git a/code/modules/shieldgen/handheld_defuser.dm b/code/modules/shieldgen/handheld_defuser.dm index a2909fa7e6..d65a0060a8 100644 --- a/code/modules/shieldgen/handheld_defuser.dm +++ b/code/modules/shieldgen/handheld_defuser.dm @@ -7,11 +7,6 @@ var/obj/item/weapon/cell/device/cell var/enabled = 0 -/obj/item/weapon/shield_diffuser/update_icon() - if(enabled) - icon_state = "hdiffuser_on" - else - icon_state = "hdiffuser_off" /obj/item/weapon/shield_diffuser/New() cell = new(src) @@ -24,6 +19,9 @@ processing_objects.Remove(src) . = ..() +/obj/item/weapon/shield_diffuser/get_cell() + return cell + /obj/item/weapon/shield_diffuser/process() if(!enabled) return @@ -34,6 +32,12 @@ if(istype(S) && cell.checked_use(10 KILOWATTS * CELLRATE)) qdel(S) +/obj/item/weapon/shield_diffuser/update_icon() + if(enabled) + icon_state = "hdiffuser_on" + else + icon_state = "hdiffuser_off" + /obj/item/weapon/shield_diffuser/attack_self() enabled = !enabled update_icon() diff --git a/html/changelogs/Anewbe - Biomass.yml b/html/changelogs/Anewbe - Biomass.yml new file mode 100644 index 0000000000..ccf35e17ad --- /dev/null +++ b/html/changelogs/Anewbe - Biomass.yml @@ -0,0 +1,38 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# wip (For works in progress) +# tweak +# soundadd +# sounddel +# rscadd (general adding of nice things) +# rscdel (general deleting of nice things) +# imageadd +# imagedel +# maptweak +# spellcheck (typo fixes) +# experiment +################################# + +# Your name. +author: Anewbe + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries. +# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog. +changes: + - rscadd: "Added a biomass reagent, made from protein, sugar, and phoron." + - tweak: "Cloners and bioprinters now use the biomass reagent. Both can be refilled or have their capacity increased by replacing the bottles they spawn with." + - experiment: "Mapped in a bioprinter, for further testing." \ No newline at end of file diff --git a/icons/mob/back.dmi b/icons/mob/back.dmi index b5d549fbc5..b3b9a852c9 100644 Binary files a/icons/mob/back.dmi and b/icons/mob/back.dmi differ diff --git a/icons/mob/belt.dmi b/icons/mob/belt.dmi index 54b20e0165..1ed8e7cf12 100644 Binary files a/icons/mob/belt.dmi and b/icons/mob/belt.dmi differ diff --git a/icons/mob/belt_mirror.dmi b/icons/mob/belt_mirror.dmi index d8e8291a80..3712f83039 100644 Binary files a/icons/mob/belt_mirror.dmi and b/icons/mob/belt_mirror.dmi differ diff --git a/icons/mob/items/lefthand_guns.dmi b/icons/mob/items/lefthand_guns.dmi index 1a830a6e49..3dce22596f 100644 Binary files a/icons/mob/items/lefthand_guns.dmi and b/icons/mob/items/lefthand_guns.dmi differ diff --git a/icons/mob/items/righthand_guns.dmi b/icons/mob/items/righthand_guns.dmi index 8a7c74bf3d..f13fb1c997 100644 Binary files a/icons/mob/items/righthand_guns.dmi and b/icons/mob/items/righthand_guns.dmi differ diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi index 3ea938e4ee..4354fad0c7 100644 Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ diff --git a/icons/obj/projectiles.dmi b/icons/obj/projectiles.dmi index e58dc7028e..efc1184dd5 100644 Binary files a/icons/obj/projectiles.dmi and b/icons/obj/projectiles.dmi differ diff --git a/maps/southern_cross/datums/supplypacks/munitions.dm b/maps/southern_cross/datums/supplypacks/munitions.dm index 819e96d428..5b88cc698c 100644 --- a/maps/southern_cross/datums/supplypacks/munitions.dm +++ b/maps/southern_cross/datums/supplypacks/munitions.dm @@ -4,13 +4,32 @@ */ /datum/supply_packs/munitions/bolt_rifles_explorer - name = "Weapons - Surplus explorer rifles" + name = "Weapons - Surplus Hunting Rifles" contains = list( - /obj/item/weapon/gun/projectile/shotgun/pump/rifle = 4, - /obj/item/ammo_magazine/clip/c762 = 4, - /obj/item/ammo_magazine/clip/c762/hunter = 8 + /obj/item/weapon/gun/projectile/shotgun/pump/rifle = 2, + /obj/item/ammo_magazine/clip/c762/hunter = 6 ) cost = 50 containertype = /obj/structure/closet/crate/secure/weapon - containername = "Explorer weapons crate" + containername = "Hunting Rifle crate" access = access_explorer + +/datum/supply_packs/munitions/phase_carbines_explorer + name = "Weapons - Surplus Phase Carbines" + contains = list( + /obj/item/weapon/gun/energy/phasegun = 2, + ) + cost = 25 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Phase Carbine crate" + access = access_explorer + +/datum/supply_packs/munitions/phase_rifles_explorer + name = "Weapons - Phase Rifles" + contains = list( + /obj/item/weapon/gun/energy/phasegun/rifle = 2, + ) + cost = 50 + containertype = /obj/structure/closet/crate/secure/weapon + containername = "Phase Rifle crate" + access = access_explorer \ No newline at end of file diff --git a/maps/southern_cross/southern_cross-1.dmm b/maps/southern_cross/southern_cross-1.dmm index 60cb0cd7ac..cec11cbaa6 100644 --- a/maps/southern_cross/southern_cross-1.dmm +++ b/maps/southern_cross/southern_cross-1.dmm @@ -7685,8 +7685,8 @@ "cRO" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{pixel_x = 11; pixel_y = 24},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "cRP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 4},/obj/effect/floor_decal/corner/purple/bordercorner2{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "cRQ" = (/obj/item/device/radio/intercom/department/medbay{dir = 2; pixel_x = 0; pixel_y = 21},/obj/machinery/camera/network/medbay{c_tag = "MED - Cloning"; dir = 2},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) -"cRR" = (/obj/structure/table/standard,/obj/item/weapon/storage/box/bodybags{pixel_x = 1; pixel_y = 2},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) -"cRS" = (/obj/structure/table/standard,/obj/item/weapon/storage/laundry_basket,/obj/machinery/firealarm{pixel_y = 24},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) +"cRR" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/obj/machinery/organ_printer/flesh/full,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) +"cRS" = (/obj/structure/table/standard,/obj/item/weapon/storage/laundry_basket,/obj/machinery/firealarm{pixel_y = 24},/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/purple/border{dir = 1},/obj/item/weapon/storage/box/bodybags,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "cRT" = (/obj/structure/filingcabinet/chestdrawer{desc = "A large drawer filled with autopsy reports."; name = "Autopsy Reports"},/obj/machinery/alarm{dir = 4; pixel_x = -22; pixel_y = 0},/obj/effect/floor_decal/borderfloor/corner{dir = 1},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 1},/turf/simulated/floor/tiled,/area/medical/morgue) "cRU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/medical/morgue) "cRV" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/bodybags,/obj/item/weapon/storage/box/bodybags,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 24},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 36; pixel_y = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/medical/morgue) @@ -7803,7 +7803,7 @@ "cUc" = (/obj/structure/closet/wardrobe/medic_white,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/ward) "cUd" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/obj/structure/curtain/open/privacy,/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/turf/simulated/floor/tiled/white,/area/medical/ward) "cUe" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/medical,/obj/machinery/newscaster{pixel_x = 30; pixel_y = 0},/obj/structure/curtain/open/privacy,/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/ward) -"cUf" = (/obj/machinery/clonepod{biomass = 600},/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/purple/border{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) +"cUf" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/purple/border{dir = 10},/obj/machinery/clonepod/full,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "cUg" = (/obj/machinery/computer/cloning,/obj/machinery/light,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/purple/border,/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "cUh" = (/obj/machinery/dna_scannernew,/obj/effect/floor_decal/borderfloorwhite/corner{dir = 8},/obj/effect/floor_decal/corner/purple/bordercorner{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) "cUi" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/genetics_cloning) @@ -10577,7 +10577,7 @@ "dVu" = (/obj/machinery/atmospherics/pipe/simple/visible/universal,/obj/structure/table/rack{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/cash,/turf/simulated/floor/plating,/area/maintenance/thirddeck/foreport) "dVv" = (/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/cash,/turf/simulated/floor/plating,/area/maintenance/thirddeck/aftstarboard) "dVw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 4},/obj/machinery/light{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden{icon_state = "intact"; dir = 4},/turf/simulated/floor/tiled,/area/hallway/primary/thirddeck/starboard) - + (1,1,1) = {" aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa @@ -11351,4 +11351,3 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa dUOaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa "} - diff --git a/polaris.dme b/polaris.dme index 6639df0b4e..2293f8f361 100644 --- a/polaris.dme +++ b/polaris.dme @@ -1708,7 +1708,7 @@ #include "code\modules\mob\transform_procs.dm" #include "code\modules\mob\typing_indicator.dm" #include "code\modules\mob\update_icons.dm" -#include "code\modules\mob\_modifiers\auras.dm" +#include "code\modules\mob\_modifiers\aura.dm" #include "code\modules\mob\_modifiers\cloning.dm" #include "code\modules\mob\_modifiers\modifiers.dm" #include "code\modules\mob\_modifiers\modifiers_misc.dm" @@ -2161,6 +2161,7 @@ #include "code\modules\projectiles\guns\vox.dm" #include "code\modules\projectiles\guns\energy\laser.dm" #include "code\modules\projectiles\guns\energy\nuclear.dm" +#include "code\modules\projectiles\guns\energy\phase.dm" #include "code\modules\projectiles\guns\energy\pulse.dm" #include "code\modules\projectiles\guns\energy\special.dm" #include "code\modules\projectiles\guns\energy\stun.dm" @@ -2282,6 +2283,17 @@ #include "code\modules\research\rdmachines.dm" #include "code\modules\research\research.dm" #include "code\modules\research\server.dm" +#include "code\modules\research\designs\ai_modules.dm" +#include "code\modules\research\designs\circuit_assembly.dm" +#include "code\modules\research\designs\circuits.dm" +#include "code\modules\research\designs\illegal.dm" +#include "code\modules\research\designs\medical.dm" +#include "code\modules\research\designs\mining_toys.dm" +#include "code\modules\research\designs\misc.dm" +#include "code\modules\research\designs\pdas.dm" +#include "code\modules\research\designs\powercells.dm" +#include "code\modules\research\designs\stock_parts.dm" +#include "code\modules\research\designs\weapons.dm" #include "code\modules\scripting\Errors.dm" #include "code\modules\scripting\IDE.dm" #include "code\modules\scripting\Options.dm" @@ -2492,7 +2504,7 @@ #include "code\ZAS\Zone.dm" #include "interface\interface.dm" #include "interface\skin.dmf" -#include "maps\example\example.dm" +#include "maps\southern_cross\southern_cross.dm" #include "maps\submaps\_readme.dm" #include "maps\submaps\space_submaps\space.dm" #include "maps\submaps\surface_submaps\mountains\mountains.dm"