diff --git a/code/game/research/destructive_analyzer.dm b/code/game/research/destructive_analyzer.dm new file mode 100644 index 00000000000..2caf5e01710 --- /dev/null +++ b/code/game/research/destructive_analyzer.dm @@ -0,0 +1,44 @@ +/* +Destructive Analyzer + +It is used to destroy hand-held objects and advance technological research. Controls are in the linked R&D console. + +Note: Must be placed east/right of an R&D console to function. +*/ +/obj/machinery/destructive_analyzer + name = "Destructive Analyzer" + //icon_state = "d_analyzer" + icon_state = "autolathe" + var/obj/item/weapon/loaded_item = null + var/obj/machinery/computer/rdconsole/linked_console + anchored = 1 + density = 1 + + meteorhit() + del(src) + return + + attackby(var/obj/O as obj, var/mob/user as mob) + if (!linked_console) + user << "\The protolathe must be linked to an R&D console first!" + return + if (istype(O, /obj/item/weapon) && !loaded_item) + if (O.origin_tech.len == 0) + user << "\red You cannot deconstruct this item!" + return + loaded_item = O + user.drop_item() + O.loc = src + user << "\blue You add the [O.name] to the machine!" + + return + +//For testing purposes only. +/obj/item/weapon/deconstruction_test + name = "Test Item" + desc = "WTF?" + icon = 'weapons.dmi' + icon_state = "d20" + g_amt = 5000 + m_amt = 5000 + origin_tech = list("materials" = 4, "plasmatech" = 2, "syndicate" = 5) \ No newline at end of file diff --git a/code/game/research/protolathe.dm b/code/game/research/protolathe.dm new file mode 100644 index 00000000000..f9910e4c18a --- /dev/null +++ b/code/game/research/protolathe.dm @@ -0,0 +1,67 @@ +/* +Protolathe + +Similar to an autolathe, you load glass and metal sheets (but not other objects) into it to be used as raw materials for the stuff +it creates. All the menus and other manipulation commands are in the R&D console. + +Note: Must be placed west/left of and R&D console to function. + +*/ +/obj/machinery/protolathe + density = 1 + anchored = 1.0 + icon_state = "protolathe" + var/busy = 0 // + var/max_m_amount = 150000.0 + var/max_g_amount = 75000.0 + var/m_amount = 0.0 + var/g_amount = 0.0 + var/obj/machinery/computer/rdconsole/linked_console = null + +/obj/machinery/protolathe/attackby(var/obj/item/O as obj, var/mob/user as mob) + if (!linked_console) + user << "\The protolathe must be linked to an R&D console first!" + return 1 + if (!istype(O, /obj/item/stack)) + user << "\red You cannot insert this item into the protolathe!" + return 1 + if (stat) + return 1 + if (busy) + user << "\red The protolathe is busy. Please wait for completion of previous operation." + return 1 + if (src.m_amount + O.m_amt > max_m_amount) + user << "\red The protolathe is full. Please remove metal from the protolathe in order to insert more." + return 1 + if (src.g_amount + O.g_amt > max_g_amount) + user << "\red The protolathe is full. Please remove glass from the protolathe in order to insert more." + return 1 + if (O.m_amt == 0 && O.g_amt == 0) + user << "\red This object does not contain significant amounts of metal or glass, or cannot be accepted by the protolathe due to size or hazardous materials." + return 1 + + var/amount = 1 + var/obj/item/stack/stack + var/m_amt = O.m_amt + var/g_amt = O.g_amt + stack = O + amount = stack.amount + if (m_amt) + amount = min(amount, round((max_m_amount-src.m_amount)/m_amt)) + flick("protolathe_o",src)//plays metal insertion animation + if (g_amt) + amount = min(amount, round((max_g_amount-src.g_amount)/g_amt)) + flick("protolathe_r",src)//plays glass insertion animation + stack.use(amount) + icon_state = "protolathe" + busy = 1 + use_power(max(1000, (m_amt+g_amt)*amount/10)) + spawn(16) + icon_state = "protolathe" + flick("protolathe_o",src) + src.m_amount += m_amt * amount + src.g_amount += g_amt * amount + if (O && O.loc == src) + del(O) + busy = 0 + src.updateUsrDialog() \ No newline at end of file diff --git a/code/game/research/rd-readme.dm b/code/game/research/rd-readme.dm new file mode 100644 index 00000000000..1539eed1530 --- /dev/null +++ b/code/game/research/rd-readme.dm @@ -0,0 +1,29 @@ +/* +Research and Development System. (Designed specifically for the /tg/station 13 (Space Station 13) open source project) + +///////////////Overview/////////////////// +This system is a "tech tree" research and development system designed for SS13. It allows a "researcher" job (this document assumes +the "scientist" job is given this role) the tools necessiary to research new and better technologies. In general, the system works +by breaking existing technology and using what you learn from to advance your knowledge of SCIENCE! As your knowledge progresses, +you can build newer (and better?) devices (which you can also, eventually, deconstruct to advance your knowledge). + +A brief overview is below. For more details, see the related files. + +////////////Game Use///////////// +The major research and development is performed using a combination of four machines: +- R&D Console: A computer console that allows you to manipulate the other devices that are linked to it and view/manipulate the +technologies you have researched so far. +- Protolathe: Used to make new hand-held devices and parts for larger devices. Uses metal and glass as raw materials. +- Destructive Analyzer: You can put hand-held objects into it and it'll analyze them for technological advancements but it destroys +them in the process. Destroyed items will send their raw materials to a linked Protolathe (if any) +- Circuit Imprinter: Similar to the Protolathe, it allows for the construction of circuit boards. Uses glass and acid as the raw +materials. + +While researching you are dealing with two different types of information: Technology Paths and Device Designs. Technology Paths +are the "Tech Trees" of the game. You start out with a number of them at the game start and they are improved by using the +Destructive Analyzer. By themselves, they don't do a whole lot. However, they unlock Device Designs. This is the information used +by the circuit imprinter and the protolathe to produce objects. It also tracks the current reliability of that particular design. + +MORE STUFF HERE LATER. + +*/ \ No newline at end of file