diff --git a/code/__DEFINES/construction.dm b/code/__DEFINES/construction.dm index b3a9a05119..8d77c39740 100644 --- a/code/__DEFINES/construction.dm +++ b/code/__DEFINES/construction.dm @@ -91,6 +91,7 @@ #define MAT_BANANIUM "$bananium" #define MAT_TITANIUM "$titanium" #define MAT_BIOMASS "$biomass" +#define MAT_PLASTIC "$plastic" //The amount of materials you get from a sheet of mineral like iron/diamond/glass etc #define MINERAL_MATERIAL_AMOUNT 2000 //The maximum size of a stack object. @@ -125,4 +126,4 @@ #define RCD_FLOORWALL 1 #define RCD_AIRLOCK 2 #define RCD_DECONSTRUCT 3 -#define RCD_WINDOWGRILLE 4 \ No newline at end of file +#define RCD_WINDOWGRILLE 4 diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index 4ac48b7d4f..4665bd3b1e 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -29,6 +29,7 @@ #define BIOGENERATOR 32 //Uses biomass #define LIMBGROWER 64 //Uses synthetic flesh #define SMELTER 128 //uses various minerals +#define AUTOYLATHE 256 //Uses glass/metal/Plastic //Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. //Modular computer/NTNet defines @@ -86,4 +87,4 @@ #define SUPERMATTER_DELAMINATING 6 // Pretty obvious. //R&D Snowflakes -#define RD_CONSOLE_LOCKED_SCREEN 0.2 \ No newline at end of file +#define RD_CONSOLE_LOCKED_SCREEN 0.2 diff --git a/code/citadel/cit_guns.dm b/code/citadel/cit_guns.dm index abd54a7520..da1171bb26 100644 --- a/code/citadel/cit_guns.dm +++ b/code/citadel/cit_guns.dm @@ -189,15 +189,6 @@ w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY -/datum/design/foam_x9 - name = "Foam Force X9 Rifle" - id = "foam_x9" - build_type = AUTOLATHE - materials = list(MAT_METAL = 24000, MAT_GLASS = 14000) - build_path = /obj/item/gun/ballistic/automatic/x9/toy - category = list("hacked", "Misc") - - ////////XCOM2 Magpistol///////// //////projectiles////// @@ -352,22 +343,6 @@ ammo_type = /obj/item/ammo_casing/caseless/foam_dart/mag max_ammo = 42 -/datum/design/magfoam_dart - name = "Box of MagFoam Darts" - id = "magfoam_dart" - build_type = AUTOLATHE - materials = list(MAT_METAL = 300, MAT_GLASS = 200) - build_path = /obj/item/ammo_box/foambox/mag - category = list("initial", "Misc") - -/datum/design/foam_magpistol - name = "Foam Force Magpistol" - id = "magfoam_launcher" - build_type = AUTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 1000) - build_path = /obj/item/gun/ballistic/shotgun/toy/mag - category = list("hacked", "Misc") - //////Magrifle////// ///projectiles/// @@ -502,14 +477,6 @@ w_class = WEIGHT_CLASS_BULKY weapon_weight = WEAPON_HEAVY -/datum/design/foam_magrifle - name = "Foam Force MagRifle" - id = "foam_magrifle" - build_type = AUTOLATHE - materials = list(MAT_METAL = 15000, MAT_GLASS = 7500) - build_path = /obj/item/gun/ballistic/automatic/magrifle/toy - category = list("hacked", "Misc") - /* // TECHWEBS IMPLEMENTATION */ @@ -648,14 +615,6 @@ name = "toy mag burst rifle power supply" maxcharge = 4000 -/datum/design/foam_hyperburst - name = "MagTag Hyper Rifle" - id = "foam_hyperburst" - build_type = AUTOLATHE - materials = list(MAT_METAL = 35000, MAT_GLASS = 25000) - build_path = /obj/item/gun/energy/laser/practice/hyperburst - category = list("hacked", "Misc") - /* made redundant by reskinnable stetchkins //////Stealth Pistol////// @@ -708,15 +667,6 @@ cut_overlays() icon_state = "[initial(icon_state)][chambered ? "" : "-e"]" -/datum/design/foam_sp - name = "Foam Force Stealth Pistol" - id = "foam_sp" - build_type = AUTOLATHE - materials = list(MAT_METAL = 30000, MAT_GLASS = 15000) - build_path = /obj/item/gun/ballistic/automatic/toy/pistol/stealth - category = list("hacked", "Misc") - - //////10mm soporific bullets////// obj/item/projectile/bullet/c10mm/soporific @@ -923,14 +873,6 @@ obj/item/projectile/bullet/c10mm/soporific ammo_type = list(/obj/item/ammo_casing/energy/laser/raytag) selfcharge = TRUE -/datum/design/toyray - name = "RayTag Gun" - id = "toyray" - build_type = AUTOLATHE - materials = list(MAT_METAL = 7500, MAT_GLASS = 1000) - build_path = /obj/item/gun/energy/laser/practice/raygun - category = list("hacked", "Misc") - /*///////////////////////////////////////////////////////////////////////////////////////////// The Recolourable Gun *////////////////////////////////////////////////////////////////////////////////////////////// @@ -1179,15 +1121,6 @@ obj/item/projectile/bullet/c10mm/soporific can_suppress = FALSE actions_types = list(/datum/action/item_action/pick_color) -/datum/design/foam_p37 - name = "Foam Force Mk.37F" - id = "foam_p37" - build_type = AUTOLATHE - materials = list(MAT_METAL = 15000, MAT_GLASS = 10000) - build_path = /obj/item/gun/ballistic/automatic/pistol/p37/foam - category = list("hacked", "Misc") - - /*///////////////////////////////////////////////////////////////////////////////////////////// The Recolourable Energy Gun *////////////////////////////////////////////////////////////////////////////////////////////// @@ -1311,11 +1244,3 @@ obj/item/gun/energy/e_gun/cx/worn_overlays(isinhands, icon_file) w_class = WEIGHT_CLASS_NORMAL burst_size = 4 //Shh. fire_delay = 1 - -/datum/design/am4c - name = "Foam Force AM4-C Rifle" - id = "foam_am4c" - build_type = AUTOLATHE - materials = list(MAT_METAL = 24000, MAT_GLASS = 14000) - build_path = /obj/item/gun/ballistic/automatic/AM4C - category = list("hacked", "Misc") diff --git a/code/datums/components/material_container.dm b/code/datums/components/material_container.dm index 830f2d9a42..e3f0685ebb 100644 --- a/code/datums/components/material_container.dm +++ b/code/datums/components/material_container.dm @@ -350,3 +350,8 @@ /datum/material/biomass name = "Biomass" id = MAT_BIOMASS + +/datum/material/plastic + name = "Plastic" + id = MAT_PLASTIC + sheet_type = /obj/item/stack/sheet/plastic diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index 91b3ebeb55..e5468675e2 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -458,6 +458,7 @@ GLOBAL_LIST_INIT(plastic_recipes, list( desc = "Compress dinosaur over millions of years, then refine, split and mold, and voila! You have plastic." singular_name = "plastic sheet" icon_state = "sheet-plastic" + materials = list(MAT_PLASTIC=MINERAL_MATERIAL_AMOUNT) throwforce = 7 merge_type = /obj/item/stack/sheet/plastic diff --git a/code/game/objects/items/toys.dm b/code/game/objects/items/toys.dm index 8350fce2b5..4bad63b5ee 100644 --- a/code/game/objects/items/toys.dm +++ b/code/game/objects/items/toys.dm @@ -42,7 +42,6 @@ icon_state = "waterballoon-e" item_state = "balloon-empty" - /obj/item/toy/balloon/New() create_reagents(10) ..() @@ -287,7 +286,6 @@ w_class = WEIGHT_CLASS_SMALL resistance_flags = FLAMMABLE - /obj/item/toy/windupToolbox name = "windup toolbox" desc = "A replica toolbox that rumbles when you turn the key." @@ -334,7 +332,7 @@ /obj/item/toy/katana name = "replica katana" - desc = "Woefully underpowered in D20." + desc = "Woefully underpowered in D20. Almost has a sharp edge." icon = 'icons/obj/items_and_weapons.dmi' icon_state = "katana" item_state = "katana" diff --git a/modular_citadel/code/datums/wires/autoylathe.dm b/modular_citadel/code/datums/wires/autoylathe.dm new file mode 100644 index 0000000000..736c9551ec --- /dev/null +++ b/modular_citadel/code/datums/wires/autoylathe.dm @@ -0,0 +1,48 @@ +/datum/wires/autoylathe + holder_type = /obj/machinery/autoylathe + proper_name = "Autoylathe" + +/datum/wires/autoylathe/New(atom/holder) + wires = list( + WIRE_HACK, WIRE_DISABLE, + WIRE_SHOCK, WIRE_ZAP + ) + add_duds(6) + ..() + +/datum/wires/autoylathe/interactable(mob/user) + var/obj/machinery/autoylathe/A = holder + if(A.panel_open) + return TRUE + +/datum/wires/autoylathe/get_status() + var/obj/machinery/autoylathe/A = holder + var/list/status = list() + status += "The red light is [A.disabled ? "on" : "off"]." + status += "The blue light is [A.hacked ? "on" : "off"]." + return status + +/datum/wires/autoylathe/on_pulse(wire) + var/obj/machinery/autoylathe/A = holder + switch(wire) + if(WIRE_HACK) + A.adjust_hacked(!A.hacked) + addtimer(CALLBACK(A, /obj/machinery/autoylathe.proc/reset, wire), 60) + if(WIRE_SHOCK) + A.shocked = !A.shocked + addtimer(CALLBACK(A, /obj/machinery/autoylathe.proc/reset, wire), 60) + if(WIRE_DISABLE) + A.disabled = !A.disabled + addtimer(CALLBACK(A, /obj/machinery/autoylathe.proc/reset, wire), 60) + +/datum/wires/autoylathe/on_cut(wire, mend) + var/obj/machinery/autoylathe/A = holder + switch(wire) + if(WIRE_HACK) + A.adjust_hacked(!mend) + if(WIRE_HACK) + A.shocked = !mend + if(WIRE_DISABLE) + A.disabled = !mend + if(WIRE_ZAP) + A.shock(usr, 50) diff --git a/modular_citadel/code/game/machinery/toylathe.dm b/modular_citadel/code/game/machinery/toylathe.dm new file mode 100644 index 0000000000..903235c763 --- /dev/null +++ b/modular_citadel/code/game/machinery/toylathe.dm @@ -0,0 +1,379 @@ +#define AUTOYLATHE_MAIN_MENU 1 +#define AUTOYLATHE_CATEGORY_MENU 2 +#define AUTOYLATHE_SEARCH_MENU 3 + +/obj/machinery/autoylathe + name = "autoylathe" + desc = "It produces items using plastic, metal and glass." + icon_state = "autolathe" + density = TRUE + anchored = TRUE + use_power = IDLE_POWER_USE + idle_power_usage = 10 + active_power_usage = 100 + circuit = /obj/item/circuitboard/machine/autoylathe + var/hacked = FALSE + var/disabled = FALSE + var/shocked = FALSE + var/busy = FALSE + var/prod_coeff = 1 + var/datum/design/being_built + var/datum/techweb/stored_research + var/list/datum/design/matching_designs + var/selected_category + var/screen = 1 + var/list/categories = list( + "Toys", + "Figurines", + "Pistols", + "Rifles", + "Heavy", + "Melee", + "Armor", + "Adult", + "Misc", + "Imported" + ) + +/obj/machinery/autoylathe/Initialize() + . = ..() + AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_PLASTIC), 0, TRUE, null, null, CALLBACK(src, .proc/AfterMaterialInsert)) + + wires = new /datum/wires/autoylathe(src) + stored_research = new /datum/techweb/specialized/autounlocking/autoylathe + matching_designs = list() + +/obj/machinery/autoylathe/Destroy() + QDEL_NULL(wires) + return ..() + +/obj/machinery/autoylathe/interact(mob/user) + if(!is_operational()) + return + + if(shocked && !(stat & NOPOWER)) + shock(user,50) + + var/dat + + switch(screen) + if(AUTOYLATHE_MAIN_MENU) + dat = main_win(user) + if(AUTOYLATHE_CATEGORY_MENU) + dat = category_win(user,selected_category) + if(AUTOYLATHE_SEARCH_MENU) + dat = search_win(user) + + var/datum/browser/popup = new(user, "Autoylathe", name, 400, 500) + popup.set_content(dat) + popup.open() + +/obj/machinery/autoylathe/on_deconstruction() + GET_COMPONENT(materials, /datum/component/material_container) + materials.retrieve_all() + +/obj/machinery/autoylathe/attackby(obj/item/O, mob/user, params) + if (busy) + to_chat(user, "The autoylathe is busy. Please wait for completion of previous operation.") + return TRUE + + if(default_deconstruction_screwdriver(user, "autolathe_t", "autolathe", O)) + updateUsrDialog() + return TRUE + + if(exchange_parts(user, O)) + return TRUE + + if(default_deconstruction_crowbar(O)) + return TRUE + + if(panel_open && is_wire_tool(O)) + wires.interact(user) + return TRUE + + if(user.a_intent == INTENT_HARM) //so we can hit the machine + return ..() + + if(stat) + return TRUE + + if(istype(O, /obj/item/disk/design_disk)) + user.visible_message("[user] begins to load \the [O] in \the [src]...", + "You begin to load a design from \the [O]...", + "You hear the chatter of a floppy drive.") + busy = TRUE + var/obj/item/disk/design_disk/D = O + if(do_after(user, 14.4, target = src)) + for(var/B in D.blueprints) + if(B) + stored_research.add_design(B) + busy = FALSE + return TRUE + + return ..() + +/obj/machinery/autoylathe/proc/AfterMaterialInsert(type_inserted, id_inserted, amount_inserted) + if(ispath(type_inserted, /obj/item/stack/ore/bluespace_crystal)) + use_power(amount_inserted / 10) + else + switch(id_inserted) + if (MAT_METAL) + flick("autolathe_o",src)//plays metal insertion animation + if (MAT_GLASS) + flick("autolathe_r",src)//plays glass insertion animation + if (MAT_PLASTIC) + flick("autolathe_o",src)//plays metal insertion animation + use_power(amount_inserted / 10) + updateUsrDialog() + +/obj/machinery/autoylathe/Topic(href, href_list) + if(..()) + return + if (!busy) + if(href_list["menu"]) + screen = text2num(href_list["menu"]) + updateUsrDialog() + + if(href_list["category"]) + selected_category = href_list["category"] + updateUsrDialog() + + if(href_list["make"]) + + ///////////////// + //href protection + being_built = stored_research.isDesignResearchedID(href_list["make"]) + if(!being_built) + return + + var/multiplier = text2num(href_list["multiplier"]) + var/is_stack = ispath(being_built.build_path, /obj/item/stack) + + ///////////////// + + var/coeff = (is_stack ? 1 : prod_coeff) //stacks are unaffected by production coefficient + var/metal_cost = being_built.materials[MAT_METAL] + var/glass_cost = being_built.materials[MAT_GLASS] + var/plastic_cost = being_built.materials[MAT_PLASTIC] + var/power = max(2000, (metal_cost+glass_cost+plastic_cost)*multiplier/5) + + GET_COMPONENT(materials, /datum/component/material_container) + if((materials.amount(MAT_METAL) >= metal_cost*multiplier*coeff) && (materials.amount(MAT_GLASS) >= glass_cost*multiplier*coeff) && (materials.amount(MAT_PLASTIC) >= plastic_cost*multiplier*coeff)) + busy = TRUE + use_power(power) + icon_state = "autolathe_n" + var/time = is_stack ? 32 : 32*coeff*multiplier + addtimer(CALLBACK(src, .proc/make_item, power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack), time) + + if(href_list["search"]) + matching_designs.Cut() + + for(var/v in stored_research.researched_designs) + var/datum/design/D = stored_research.researched_designs[v] + if(findtext(D.name,href_list["to_search"])) + matching_designs.Add(D) + updateUsrDialog() + else + to_chat(usr, "The autoylathe is busy. Please wait for completion of previous operation.") + + updateUsrDialog() + + return + +/obj/machinery/autoylathe/proc/make_item(power, metal_cost, glass_cost, plastic_cost, multiplier, coeff, is_stack) + GET_COMPONENT(materials, /datum/component/material_container) + var/atom/A = drop_location() + use_power(power) + var/list/materials_used = list(MAT_METAL=metal_cost*coeff*multiplier, MAT_GLASS=glass_cost*coeff*multiplier, MAT_PLASTIC=plastic_cost*coeff*multiplier) + materials.use_amount(materials_used) + + if(is_stack) + var/obj/item/stack/N = new being_built.build_path(A, multiplier) + N.update_icon() + N.autoylathe_crafted(src) + else + for(var/i=1, i<=multiplier, i++) + var/obj/item/new_item = new being_built.build_path(A) + for(var/mat in materials_used) + new_item.materials[mat] = materials_used[mat] / multiplier + new_item.autoylathe_crafted(src) + icon_state = "autolathe" + busy = FALSE + updateDialog() + +/obj/machinery/autoylathe/RefreshParts() + var/T = 0 + for(var/obj/item/stock_parts/matter_bin/MB in component_parts) + T += MB.rating*75000 + GET_COMPONENT(materials, /datum/component/material_container) + materials.max_amount = T + T=1.2 + for(var/obj/item/stock_parts/manipulator/M in component_parts) + T -= M.rating*0.2 + prod_coeff = CLAMP(T,1,0) // Coeff going 1 -> 0,8 -> 0,6 -> 0,4 + +/obj/machinery/autoylathe/proc/main_win(mob/user) + var/dat = "

Autoylathe Menu:


" + dat += materials_printout() + + dat += "
\ + \ + \ + \ + \ + \ +

" + + var/line_length = 1 + dat += "" + + for(var/C in categories) + if(line_length > 2) + dat += "" + line_length = 1 + + dat += "" + line_length++ + + dat += "
[C]
" + return dat + +/obj/machinery/autoylathe/proc/category_win(mob/user,selected_category) + var/dat = "Return to main menu" + dat += "

Browsing [selected_category]:


" + dat += materials_printout() + + for(var/v in stored_research.researched_designs) + var/datum/design/D = stored_research.researched_designs[v] + if(!(selected_category in D.category)) + continue + + if(disabled || !can_build(D)) + dat += "[D.name]" + else + dat += "[D.name]" + + if(ispath(D.build_path, /obj/item/stack)) + GET_COMPONENT(materials, /datum/component/material_container) + var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) + if (max_multiplier>10 && !disabled) + dat += " x10" + if (max_multiplier>25 && !disabled) + dat += " x25" + if(max_multiplier > 0 && !disabled) + dat += " x[max_multiplier]" + else + if(!disabled && can_build(D, 5)) + dat += " x5" + if(!disabled && can_build(D, 10)) + dat += " x10" + + dat += "[get_design_cost(D)]
" + + dat += "
" + return dat + +/obj/machinery/autoylathe/proc/search_win(mob/user) + var/dat = "Return to main menu" + dat += "

Search results:


" + dat += materials_printout() + + for(var/v in matching_designs) + var/datum/design/D = v + if(disabled || !can_build(D)) + dat += "[D.name]" + else + dat += "[D.name]" + + if(ispath(D.build_path, /obj/item/stack)) + GET_COMPONENT(materials, /datum/component/material_container) + var/max_multiplier = min(D.maxstack, D.materials[MAT_METAL] ?round(materials.amount(MAT_METAL)/D.materials[MAT_METAL]):INFINITY,D.materials[MAT_GLASS] ?round(materials.amount(MAT_GLASS)/D.materials[MAT_GLASS]):INFINITY,D.materials[MAT_PLASTIC] ?round(materials.amount(MAT_PLASTIC)/D.materials[MAT_PLASTIC]):INFINITY) + if (max_multiplier>10 && !disabled) + dat += " x10" + if (max_multiplier>25 && !disabled) + dat += " x25" + if(max_multiplier > 0 && !disabled) + dat += " x[max_multiplier]" + + dat += "[get_design_cost(D)]
" + + dat += "
" + return dat + +/obj/machinery/autoylathe/proc/materials_printout() + GET_COMPONENT(materials, /datum/component/material_container) + var/dat = "Total amount: [materials.total_amount] / [materials.max_amount] cm3
" + for(var/mat_id in materials.materials) + var/datum/material/M = materials.materials[mat_id] + dat += "[M.name] amount: [M.amount] cm3
" + return dat + +/obj/machinery/autoylathe/proc/can_build(datum/design/D, amount = 1) + if(D.make_reagents.len) + return FALSE + + var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) + + GET_COMPONENT(materials, /datum/component/material_container) + if(D.materials[MAT_METAL] && (materials.amount(MAT_METAL) < (D.materials[MAT_METAL] * coeff * amount))) + return FALSE + if(D.materials[MAT_GLASS] && (materials.amount(MAT_GLASS) < (D.materials[MAT_GLASS] * coeff * amount))) + return FALSE + if(D.materials[MAT_PLASTIC] && (materials.amount(MAT_PLASTIC) < (D.materials[MAT_PLASTIC] * coeff * amount))) + return FALSE + return TRUE + +/obj/machinery/autoylathe/proc/get_design_cost(datum/design/D) + var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) + var/dat + if(D.materials[MAT_METAL]) + dat += "[D.materials[MAT_METAL] * coeff] metal " + if(D.materials[MAT_GLASS]) + dat += "[D.materials[MAT_GLASS] * coeff] glass " + if(D.materials[MAT_PLASTIC]) + dat += "[D.materials[MAT_PLASTIC] * coeff] plastic" + return dat + +/obj/machinery/autoylathe/proc/reset(wire) + switch(wire) + if(WIRE_HACK) + if(!wires.is_cut(wire)) + adjust_hacked(FALSE) + if(WIRE_SHOCK) + if(!wires.is_cut(wire)) + shocked = FALSE + if(WIRE_DISABLE) + if(!wires.is_cut(wire)) + disabled = FALSE + +/obj/machinery/autoylathe/proc/shock(mob/user, prb) + if(stat & (BROKEN|NOPOWER)) // unpowered, no shock + return FALSE + if(!prob(prb)) + return FALSE + var/datum/effect_system/spark_spread/s = new /datum/effect_system/spark_spread + s.set_up(5, 1, src) + s.start() + if (electrocute_mob(user, get_area(src), src, 0.7, TRUE)) + return TRUE + else + return FALSE + +/obj/machinery/autoylathe/proc/adjust_hacked(state) + hacked = state + for(var/id in SSresearch.techweb_designs) + var/datum/design/D = SSresearch.techweb_designs[id] + if((D.build_type & AUTOYLATHE) && ("hacked" in D.category)) + if(hacked) + stored_research.add_design(D) + else + stored_research.remove_design(D) + +/obj/machinery/autoylathe/hacked/Initialize() + . = ..() + adjust_hacked(TRUE) + +//Called when the object is constructed by an autoylathe +//Has a reference to the autoylathe so you can do !!FUN!! things with hacked lathes +/obj/item/proc/autoylathe_crafted(obj/machinery/autoylathe/A) + return diff --git a/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm index e0abfbb574..812f26748f 100644 --- a/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/modular_citadel/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1,4 +1,12 @@ /obj/item/circuitboard/machine/kinkmate name = "Kinkmate Vendor (Machine Board)" build_path = /obj/machinery/vending/kink - req_components = list(/obj/item/vending_refill/kink) \ No newline at end of file + req_components = list(/obj/item/vending_refill/kink) + +/obj/item/circuitboard/machine/autoylathe + name = "Autoylathe (Machine Board)" + build_path = /obj/machinery/autoylathe + req_components = list( + /obj/item/stock_parts/matter_bin = 3, + /obj/item/stock_parts/manipulator = 1, + /obj/item/stack/sheet/glass = 1) diff --git a/modular_citadel/code/modules/research/designs/autoylathe_designs.dm b/modular_citadel/code/modules/research/designs/autoylathe_designs.dm new file mode 100644 index 0000000000..a257513e96 --- /dev/null +++ b/modular_citadel/code/modules/research/designs/autoylathe_designs.dm @@ -0,0 +1,626 @@ +/datum/design/autoylathe + build_type = AUTOYLATHE + +/datum/design/autoylathe/mech + category = list("initial", "Figurines") + +/datum/design/autoylathe/mech/contraband + category = list("hacked", "Figurines") + +/datum/design/autoylathe/figure + category = list("initial", "Figurines") + +/datum/design/autoylathe/balloon + name = "Empty Water balloon" + id = "waterballoon" + materials = list(MAT_PLASTIC = 50) + build_path = /obj/item/toy/balloon + category = list("initial", "Toys") + +/datum/design/autoylathe/spinningtoy + name = "Toy Singularity" + id = "singuloutoy" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/spinningtoy + category = list("initial", "Toys") + +/datum/design/autoylathe/capgun + name = "Cap Gun" + id = "capgun" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/gun + category = list("initial", "Pistols") + +/datum/design/autoylathe/capgunammo + name = "Capgun Ammo" + id = "capgunammo" + materials = list(MAT_PLASTIC = 50) + build_path = /obj/item/toy/ammo/gun + category = list("initial", "misc") + +/datum/design/autoylathe/toysword + name = "Toy Sword" + id = "toysword" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/sword + category = list("initial", "Melee") + +/datum/design/autoylathe/foamblade + name = "Foam Armblade" + id = "foamblade" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/foamblade + category = list("initial", "Melee") + +/datum/design/autoylathe/windupbox + name = "Wind Up Toolbox" + id = "windupbox" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/windupToolbox + category = list("initial", "Toys") + +/datum/design/autoylathe/toydualsword + name = "Double-Bladed Toy Sword" + id = "dbtoysword" + materials = list(MAT_PLASTIC = 1000) + build_path = /obj/item/twohanded/dualsaber/toy + category = list("initial", "Melee") + +/datum/design/autoylathe/toykatana + name = "Replica Katana" + id = "toykatana" + materials = list(MAT_PLASTIC = 50, MAT_METAL = 450) + build_path = /obj/item/toy/katana + category = list("initial", "Melee") + +/datum/design/autoylathe/snappop + name = "Snap Pop" + id = "snappop_phoenix" + materials = list(MAT_PLASTIC = 50) + build_path = /obj/item/toy/snappop + category = list("initial", "Toys") + +/datum/design/autoylathe/mech/model1 + name = "Toy Ripley" + id = "toymech1" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/ripley + +/datum/design/autoylathe/mech/model2 + name = "Toy Firefighter Ripley" + id = "toymech2" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/fireripley + +/datum/design/autoylathe/mech/contraband/model3 + name = "Toy Deathsquad fireripley " + id = "toymech3" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/deathripley + +/datum/design/autoylathe/mech/model4 + name = "Toy Gygax" + id = "toymech4" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/gygax + +/datum/design/autoylathe/mech/model5 + name = "Toy Durand" + id = "toymech5" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/durand + +/datum/design/autoylathe/mech/contraband/model6 + name = "Toy H.O.N.K." + id = "toymech6" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/honk + +/datum/design/autoylathe/mech/contraband/model7 + name = "Toy Marauder" + id = "toymech7" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/marauder + +/datum/design/autoylathe/mech/contraband/model8 + name = "Toy Seraph" + id = "toymech8" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/seraph + +/datum/design/autoylathe/mech/contraband/model9 + name = "Toy Mauler" + id = "toymech9" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/mauler + +/datum/design/autoylathe/mech/model10 + name = "Toy Odysseus" + id = "toymech10" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/odysseus + +/datum/design/autoylathe/mech/model11 + name = "Toy Phazon" + id = "toymech11" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/phazon + +/datum/design/autoylathe/mech/contraband/model12 + name = "Toy Reticence" + id = "toymech12" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/prize/reticence + category = list("hacked", "Figurines") + +/datum/design/autoylathe/talking/AI + name = "Toy AI" + id = "ToyAICore" + materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + build_path = /obj/item/toy/talking/AI + category = list("initial", "Toys") + +/datum/design/autoylathe/talking/codex_gigas + name = "Toy Codex Gigas" + id = "ToyCodex" + materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + build_path = /obj/item/toy/talking/codex_gigas + category = list("initial", "Toys") + +/datum/design/autoylathe/talking/owl + name = "Owl Action Figure" + id = "owlactionfig" + materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + build_path = /obj/item/toy/talking/owl + +/datum/design/autoylathe/talking/griffin + name = "Griffon Action Figure" + id = "griffinactionfig" + materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + build_path = /obj/item/toy/talking/griffin + +/datum/design/autoylathe/cards + name = "Deck of Cards" + id = "carddeck" + materials = list(MAT_PLASTIC = 250) + build_path = /obj/item/toy/cards/deck + category = list("initial", "Toys") + +/datum/design/autoylathe/nuke + name = "Nuclear Fission Explosive Toy" + id = "nuketoy" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/nuke + category = list("initial", "Toys") + +/datum/design/autoylathe/minimeteor + name = "Mini-Meteor" + id = "meattoy" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/minimeteor + category = list("hacked", "Misc") + +/datum/design/autoylathe/redbutton + name = "Big Red Button" + id = "redbutton" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/redbutton + category = list("initial", "Toys") + +/datum/design/autoylathe/beach_ball + name = "Beach Ball" + id = "beachball" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/beach_ball + category = list("initial", "Toys") + +/datum/design/autoylathe/clockwork_watch + name = "Clockwork Watch" + id = "clockwatch" + materials = list(MAT_PLASTIC = 1000) + build_path = /obj/item/toy/clockwork_watch + category = list("initial", "misc") + +/datum/design/autoylathe/dagger + name = "Toy Dagger" + id = "toydagger" + materials = list(MAT_PLASTIC = 1000) + build_path = /obj/item/toy/toy_dagger + category = list("initial", "Melee") + +/datum/design/autoylathe/xeno + name = "Xenomorph" + id = "xenomorph" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/toy_xeno + +/datum/design/autoylathe/cattoy + name = "Toy Mouse" + id = "cattoy" + materials = list(MAT_PLASTIC = 500) + build_path = /obj/item/toy/cattoy + category = list("initial", "Toys") + +/datum/design/autoylathe/figure/assistant + name = "Assistant" + id = "assfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/assistant + +/datum/design/autoylathe/figure/atmos + name = "Atmos Tech" + id = "atmfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/atmos + +/datum/design/autoylathe/figure/bartender + name = "Bartender" + id = "barfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/bartender + +/datum/design/autoylathe/figure/botanist + name = "Botanist" + id = "botfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/botanist + +/datum/design/autoylathe/figure/captain + name = "Captain" + id = "capfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/captain + +/datum/design/autoylathe/figure/cargotech + name = "Cargo Technician" + id = "carfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/cargotech + +/datum/design/autoylathe/figure/ce + name = "Chief Engineer" + id = "cefigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/ce + +/datum/design/autoylathe/figure/chaplain + name = "Chaplain" + id = "chafigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/chaplain + +/datum/design/autoylathe/figure/chef + name = "Chef" + id = "chefigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/chef + +/datum/design/autoylathe/figure/chemist + name = "Chemist" + id = "chmfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/chemist + +/datum/design/autoylathe/figure/clown + name = "Clown" + id = "clnfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/clown + +/datum/design/autoylathe/figure/cmo + name = "Chief Medical Officer" + id = "cmofigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/cmo + +/datum/design/autoylathe/figure/curator + name = "Curator" + id = "curfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/curator + +/datum/design/autoylathe/figure/borg + name = "Cyborg" + id = "cybfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/borg + +/datum/design/autoylathe/figure/detective + name = "Detective" + id = "detfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/detective + +/datum/design/autoylathe/figure/engineer + name = "Engineer" + id = "engfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/engineer + +/datum/design/autoylathe/figure/geneticist + name = "Geneticist" + id = "genfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/geneticist + +/datum/design/autoylathe/figure/hop + name = "Head of Personnel" + id = "hopfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/hop + +/datum/design/autoylathe/figure/hos + name = "Head of Security" + id = "hosfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/hos + +/datum/design/autoylathe/figure/janitor + name = "Janitor" + id = "janfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/janitor + +/datum/design/autoylathe/figure/lawyer + name = "Lawyer" + id = "lawfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/lawyer + +/datum/design/autoylathe/figure/md + name = "Medical Doctor" + id = "medfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/md + +/datum/design/autoylathe/figure/mime + name = "Mime" + id = "mimfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/mime + +/datum/design/autoylathe/figure/miner + name = "Miner" + id = "minfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/miner + +/datum/design/autoylathe/figure/rd + name = "Research Director" + id = "rdfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/rd + +/datum/design/autoylathe/figure/robotocist + name = "Robotocist" + id = "robfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/roboticist + +/datum/design/autoylathe/figure/qm + name = "Quartermaster" + id = "qtmfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/qm + +/datum/design/autoylathe/figure/scientist + name = "Scientist" + id = "scifigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/scientist + +/datum/design/autoylathe/figure/secofficer + name = "Security Officer" + id = "secfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/secofficer + +/datum/design/autoylathe/figure/virologist + name = "Virologist" + id = "virfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/virologist + +/datum/design/autoylathe/figure/warden + name = "Warden" + id = "warfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/warden + +/datum/design/autoylathe/figure/dsquad + name = "Deathsquad" + id = "dsqfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/dsquad + category = list("hacked", "Figurines") + +/datum/design/autoylathe/figure/ian + name = "Ian" + id = "ianfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/ian + category = list("hacked", "Figurines") + +/datum/design/autoylathe/figure/ninja + name = "Ninja" + id = "ninfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/ninja + category = list("hacked", "Figurines") + +/datum/design/autoylathe/figure/syndie + name = "Nuclear Operative" + id = "nucfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/syndie + category = list("hacked", "Figurines") + +/datum/design/autoylathe/figure/wizard + name = "Wizard" + id = "wizfigure" + materials = list(MAT_PLASTIC = 500, MAT_METAL = 50) + build_path = /obj/item/toy/figure/wizard + category = list("hacked", "Figurines") + +/datum/design/autoylathe/dildo + name = "Customizable Dildo" + id = "dildo" + materials = list(MAT_PLASTIC = 2000) + build_path = /obj/item/dildo/custom + category = list("initial", "Adult") + +/datum/design/autoylathe/collar + name = "Collar" + id = "collar" + materials = list(MAT_PLASTIC = 250, MAT_METAL = 50) + build_path = /obj/item/clothing/neck/petcollar + category = list("initial", "Adult") + +/datum/design/autoylathe/lastag/blue/gun + name = "Blue Lasertag Rifle" + id = "lastagrifleblue" + materials = list(MAT_PLASTIC = 2000, MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/gun/energy/laser/bluetag + category = list("initial", "Rifles") + +/datum/design/autoylathe/lastag/red/gun + name = "Red Lasertag Rifle" + id = "lastagriflered" + materials = list(MAT_PLASTIC = 2000, MAT_METAL = 500, MAT_GLASS = 500) + build_path = /obj/item/gun/energy/laser/redtag + category = list("initial", "Rifles") + +/datum/design/autoylathe/lastag/blue/hat + name = "Blue Lasertag Helmet" + id = "lastaghatblue" + materials = list(MAT_PLASTIC = 4000, MAT_METAL = 1000, MAT_GLASS = 500) + build_path = /obj/item/clothing/head/helmet/bluetaghelm + category = list("initial", "Armor") + +/datum/design/autoylathe/lastag/blue/armor + name = "Blue Lasertag Armor" + id = "lastagarmorblue" + materials = list(MAT_PLASTIC = 8000, MAT_METAL = 2000, MAT_GLASS = 100) + build_path = /obj/item/clothing/suit/bluetag + category = list("initial", "Armor") + +/datum/design/autoylathe/lastag/red/hat + name = "Red Lasertag Helmet" + id = "lastaghelmetred" + materials = list(MAT_PLASTIC = 4000, MAT_METAL = 1000, MAT_GLASS = 500) + build_path = /obj/item/clothing/head/helmet/redtaghelm + category = list("initial", "Armor") + +/datum/design/autoylathe/lastag/red/armor + name = "Red Lasertag Armor" + id = "lastagarmorred" + materials = list(MAT_PLASTIC = 8000, MAT_METAL = 2000, MAT_GLASS = 1000) + build_path = /obj/item/clothing/suit/redtag + category = list("initial", "Armor") + +//because why not make a boxed kit with all of the lastag shit? +/obj/item/storage/box/blueteam + name = "Blue Team Kit" +/obj/item/storage/box/blueteam/PopulateContents() + new /obj/item/clothing/head/helmet/bluetaghelm(src) + new /obj/item/clothing/suit/bluetag(src) + new /obj/item/gun/energy/laser/bluetag(src) + new /obj/item/clothing/gloves/color/blue(src) + new /obj/item/clothing/shoes/sneakers/blue(src) + new /obj/item/clothing/under/color/blue(src) + +/obj/item/storage/box/redteam + name = "Red Team Kit" +/obj/item/storage/box/redteam/PopulateContents() + new /obj/item/clothing/head/helmet/redtaghelm(src) + new /obj/item/clothing/suit/redtag(src) + new /obj/item/gun/energy/laser/redtag(src) + new /obj/item/clothing/gloves/color/red(src) + new /obj/item/clothing/shoes/sneakers/red(src) + new /obj/item/clothing/under/color/red(src) + +/datum/design/autoylathe/lastag/blue + name = "Blue Lasertag Kit" + id = "lastagkitblue" + materials = list(MAT_PLASTIC = 16000, MAT_METAL = 4000, MAT_GLASS = 2000) + build_path = /obj/item/storage/box/blueteam + category = list("initial", "Misc") + +/datum/design/autoylathe/lastag/red + name = "Red Lasertag Kit" + id = "lastagkitred" + materials = list(MAT_PLASTIC = 16000, MAT_METAL = 4000, MAT_GLASS = 2000) + build_path = /obj/item/storage/box/redteam + category = list("initial", "Misc") + +/datum/design/foam_x9 + name = "Foam Force X9 Rifle" + id = "foam_x9" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + build_path = /obj/item/gun/ballistic/automatic/x9/toy + category = list("initial", "Rifles") + +/datum/design/magfoam_dart + name = "Box of MagFoam Darts" + id = "magfoam_dart" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 500, MAT_METAL = 100) + build_path = /obj/item/ammo_box/foambox/mag + category = list("initial", "Misc") + +/datum/design/foam_magpistol + name = "Foam Force Magpistol" + id = "magfoam_launcher" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 2000, MAT_METAL = 250) + build_path = /obj/item/gun/ballistic/shotgun/toy/mag + category = list("initial", "Pistols") + +/datum/design/foam_magrifle + name = "Foam Force MagRifle" + id = "foam_magrifle" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + build_path = /obj/item/gun/ballistic/automatic/magrifle/toy + category = list("initial", "Rifles") + +/datum/design/foam_hyperburst + name = "MagTag Hyper Rifle" + id = "foam_hyperburst" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 4000, MAT_METAL = 2000, MAT_GLASS = 1000) + build_path = /obj/item/gun/energy/laser/practice/hyperburst + category = list("initial", "Rifles") + +/datum/design/foam_sp + name = "Foam Force Stealth Pistol" + id = "foam_sp" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000) + build_path = /obj/item/gun/ballistic/automatic/toy/pistol/stealth + category = list("initial", "Pistols") + +/datum/design/toyray + name = "RayTag Gun" + id = "toyray" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000, MAT_GLASS = 1000) + build_path = /obj/item/gun/energy/laser/practice/raygun + category = list("initial", "Pistols") + +/datum/design/foam_p37 + name = "Foam Force Mk.37F" + id = "foam_p37" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 2000, MAT_METAL = 1000, MAT_GLASS = 250) + build_path = /obj/item/gun/ballistic/automatic/pistol/p37/foam + category = list("initial", "Pistols") + +/datum/design/am4c + name = "Foam Force AM4-C Rifle" + id = "foam_am4c" + build_type = AUTOYLATHE + materials = list(MAT_PLASTIC = 4000, MAT_METAL = 500) + build_path = /obj/item/gun/ballistic/automatic/AM4C + category = list("initial", "Rifles") diff --git a/modular_citadel/code/modules/research/designs/machine_designs.dm b/modular_citadel/code/modules/research/designs/machine_designs.dm new file mode 100644 index 0000000000..6a1331dddc --- /dev/null +++ b/modular_citadel/code/modules/research/designs/machine_designs.dm @@ -0,0 +1,6 @@ +/datum/design/board/autoylathe + name = "Machine Design (Autoylathe)" + desc = "The circuit board for an autoylathe." + id = "autoylathe" + build_path = /obj/item/circuitboard/machine/autoylathe + category = list("Misc. Machinery") diff --git a/modular_citadel/code/modules/research/techweb/_techweb.dm b/modular_citadel/code/modules/research/techweb/_techweb.dm new file mode 100644 index 0000000000..1c96229594 --- /dev/null +++ b/modular_citadel/code/modules/research/techweb/_techweb.dm @@ -0,0 +1,3 @@ +/datum/techweb/specialized/autounlocking/autoylathe + design_autounlock_buildtypes = AUTOYLATHE + allowed_buildtypes = AUTOYLATHE diff --git a/modular_citadel/code/modules/research/techweb/all_nodes.dm b/modular_citadel/code/modules/research/techweb/all_nodes.dm new file mode 100644 index 0000000000..d8babf011b --- /dev/null +++ b/modular_citadel/code/modules/research/techweb/all_nodes.dm @@ -0,0 +1,8 @@ +/datum/techweb_node/computer_board_gaming + id = "computer_board_gaming" + display_name = "Games and Toys" + description = "For the slackers on the station." + prereq_ids = list("comptech") + design_ids = list("arcade_battle", "arcade_orion", "slotmachine", "autoylathe") + research_cost = 1000 + export_price = 5000 diff --git a/tgstation.dme b/tgstation.dme index e8054cfceb..7f467630a8 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -2524,9 +2524,11 @@ #include "modular_citadel\code\controllers\subsystem\shuttle.dm" #include "modular_citadel\code\datums\uplink_items_cit.dm" #include "modular_citadel\code\datums\mutations\hulk.dm" +#include "modular_citadel\code\datums\wires\autoylathe.dm" #include "modular_citadel\code\game\gamemodes\miniantags\bot_swarm\swarmer_event.dm" #include "modular_citadel\code\game\machinery\cryopod.dm" #include "modular_citadel\code\game\machinery\Sleeper.dm" +#include "modular_citadel\code\game\machinery\toylathe.dm" #include "modular_citadel\code\game\machinery\vending.dm" #include "modular_citadel\code\game\objects\ids.dm" #include "modular_citadel\code\game\objects\items\handcuffs.dm" @@ -2585,5 +2587,9 @@ #include "modular_citadel\code\modules\mob\living\silicon\robot\robot_modules.dm" #include "modular_citadel\code\modules\mob\living\simple_animal\banana_spider.dm" #include "modular_citadel\code\modules\mob\living\simple_animal\kiwi.dm" +#include "modular_citadel\code\modules\research\designs\autoylathe_designs.dm" +#include "modular_citadel\code\modules\research\designs\machine_designs.dm" +#include "modular_citadel\code\modules\research\techweb\_techweb.dm" +#include "modular_citadel\code\modules\research\techweb\all_nodes.dm" #include "modular_citadel\interface\skin.dmf" // END_INCLUDE