diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index 5c054c0bb4..d015547ac4 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -16752,7 +16752,7 @@ }, /area/centcom/holding) "Nf" = ( -/obj/machinery/autoylathe, +/obj/machinery/autolathe/toy, /turf/open/indestructible/hotelwood, /area/centcom/holding) "Ni" = ( diff --git a/code/__DEFINES/machines.dm b/code/__DEFINES/machines.dm index eee0676dec..5a26feb624 100644 --- a/code/__DEFINES/machines.dm +++ b/code/__DEFINES/machines.dm @@ -22,14 +22,14 @@ //used in design to specify which machine can build it #define IMPRINTER (1<<0) //For circuits. Uses glass/chemicals. -#define PROTOLATHE (1<<1) //New stuff. Uses glass/metal/chemicals -#define AUTOLATHE (1<<2) //Uses glass/metal only. -#define CRAFTLATHE (1<<3) //Uses fuck if I know. For use eventually. -#define MECHFAB (1<<4) //Remember, objects utilising this flag should have construction_time and construction_cost vars. -#define BIOGENERATOR (1<<5) //Uses biomass -#define LIMBGROWER (1<<6) //Uses synthetic flesh -#define SMELTER (1<<7) //uses various minerals -#define AUTOYLATHE (1<<8) // CITADEL ADD +#define PROTOLATHE (1<<1) //New stuff. Uses materials/chemicals +#define AUTOLATHE (1<<2) //Uses materials only. +#define TOYLATHE (1<<3) //Glass/metal/plastic. Meant for toys. +#define NO_PUBLIC_LATHE (1<<4) //prevents the design from being auto-unlocked by public auto(y)lathes. +#define MECHFAB (1<<5) //Remember, objects utilising this flag should have construction_time and construction_cost vars. +#define BIOGENERATOR (1<<6) //Uses biomass +#define LIMBGROWER (1<<7) //Uses synthetic flesh +#define SMELTER (1<<8) //uses various minerals #define NANITE_COMPILER (1<<9) //Prints nanite disks #define AUTOBOTTLER (1<<10) //Uses booze, for printing //Note: More then one of these can be added to a design but imprinter and lathe designs are incompatable. diff --git a/code/datums/wires/autoylathe.dm b/code/datums/wires/autoylathe.dm deleted file mode 100644 index 736c9551ec..0000000000 --- a/code/datums/wires/autoylathe.dm +++ /dev/null @@ -1,48 +0,0 @@ -/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/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index 64704d4771..edb31e9dbd 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -28,11 +28,11 @@ 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/datum/techweb/stored_research = /datum/techweb/specialized/autounlocking/autolathe var/list/categories = list( "Tools", "Electronics", @@ -45,9 +45,7 @@ "Dinnerware", "Imported" ) - -/obj/machinery/autolathe/Initialize() - var/static/list/allowed_types = list( + var/list/allowed_materials = list( /datum/material/iron, /datum/material/glass, /datum/material/gold, @@ -63,10 +61,12 @@ /datum/material/adamantine, /datum/material/mythril ) - AddComponent(/datum/component/material_container, allowed_types, _show_on_examine=TRUE, _after_insert=CALLBACK(src, .proc/AfterMaterialInsert)) + +/obj/machinery/autolathe/Initialize() + AddComponent(/datum/component/material_container, allowed_materials, _show_on_examine=TRUE, _after_insert=CALLBACK(src, .proc/AfterMaterialInsert)) . = ..() wires = new /datum/wires/autolathe(src) - stored_research = new /datum/techweb/specialized/autounlocking/autolathe + stored_research = new stored_research matching_designs = list() /obj/machinery/autolathe/Destroy() @@ -91,7 +91,7 @@ if(AUTOLATHE_SEARCH_MENU) dat = search_win(user) - var/datum/browser/popup = new(user, "autolathe", name, 400, 500) + var/datum/browser/popup = new(user, name, name, 400, 500) popup.set_content(dat) popup.open() @@ -439,3 +439,32 @@ desc = "An autolathe reprogrammed with security protocols to prevent hacking." hackable = FALSE circuit = /obj/item/circuitboard/machine/autolathe/secure + stored_research = /datum/techweb/specialized/autounlocking/autolathe/public + +/obj/machinery/autolathe/toy + name = "autoylathe" + desc = "It produces toys using plastic, metal and glass." + circuit = /obj/item/circuitboard/machine/autolathe/toy + + stored_research = /datum/techweb/specialized/autounlocking/autolathe/toy + categories = list( + "Toys", + "Figurines", + "Pistols", + "Rifles", + "Heavy", + "Melee", + "Armor", + "Adult", + "Misc", + "Imported" + ) + allowed_materials = list( + /datum/material/iron, + /datum/material/glass, + /datum/material/plastic + ) + +/obj/machinery/autolathe/toy/hacked/Initialize() + . = ..() + adjust_hacked(TRUE) diff --git a/code/game/machinery/toylathe.dm b/code/game/machinery/toylathe.dm deleted file mode 100644 index 4e039d304c..0000000000 --- a/code/game/machinery/toylathe.dm +++ /dev/null @@ -1,415 +0,0 @@ -#define AUTOYLATHE_MAIN_MENU 1 -#define AUTOYLATHE_CATEGORY_MENU 2 -#define AUTOYLATHE_SEARCH_MENU 3 - -/obj/machinery/autoylathe - name = "autoylathe" - desc = "It produces toys using plastic, metal and glass." - icon_state = "autolathe" - density = TRUE - use_power = IDLE_POWER_USE - idle_power_usage = 10 - active_power_usage = 100 - circuit = /obj/item/circuitboard/machine/autoylathe - layer = BELOW_OBJ_LAYER - - var/operating = FALSE - var/list/L = list() - var/list/LL = list() - var/hacked = FALSE - var/disabled = 0 - var/shocked = FALSE - var/hack_wire - var/disable_wire - var/shock_wire - - 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() - var/static/list/allowed_materials = list( - /datum/material/iron, - /datum/material/glass, - /datum/material/plastic - ) - AddComponent(/datum/component/material_container, allowed_materials, 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/ui_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() - var/datum/component/material_container/materials = GetComponent(/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(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(obj/item/item_inserted, id_inserted, amount_inserted) - if(item_inserted.custom_materials?.len && item_inserted.custom_materials[SSmaterials.GetMaterialRef(/datum/material/glass)]) - flick("autolathe_r",src)//plays glass insertion animation by default otherwise - else - flick("autolathe_o",src)//plays metal insertion animation - - use_power(min(1000, amount_inserted / 100)) - 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) - multiplier = clamp(multiplier,1,50) - - ///////////////// - - var/coeff = (is_stack ? 1 : prod_coeff) //stacks are unaffected by production coefficient - var/total_amount = 0 - for(var/MAT in being_built.materials) - total_amount += being_built.materials[MAT] - var/power = max(2000, (total_amount)*multiplier/5) //Change this to use all materials - - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - - var/list/materials_used = list() - var/list/custom_materials = list() //These will apply their material effect, This should usually only be one. - - for(var/MAT in being_built.materials) - var/datum/material/used_material = MAT - var/amount_needed = being_built.materials[MAT] * coeff * multiplier - if(istext(used_material)) //This means its a category - var/list/list_to_show = list() - for(var/i in SSmaterials.materials_by_category[used_material]) - if(materials.materials[i] > 0) - list_to_show += i - - used_material = input("Choose [used_material]", "Custom Material") as null|anything in list_to_show - if(!used_material) - return //Didn't pick any material, so you can't build shit either. - custom_materials[used_material] += amount_needed - - materials_used[used_material] = amount_needed - - if(materials.has_materials(materials_used)) - busy = TRUE - use_power(power) - icon_state = "autolathe_n" - var/time = is_stack ? 32 : 32*coeff*multiplier - addtimer(CALLBACK(src, .proc/make_item, power, materials_used, custom_materials, multiplier, coeff, is_stack), time) - else - to_chat(usr, "Not enough materials for this operation.") - - if(href_list["search"]) - matching_designs.Cut() - - for(var/v in stored_research.researched_designs) - var/datum/design/D = SSresearch.techweb_design_by_id(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, list/materials_used, list/picked_materials, multiplier, coeff, is_stack) - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/atom/A = drop_location() - use_power(power) - materials.use_materials(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) - new_item.autoylathe_crafted(src) - if(length(picked_materials)) - new_item.set_custom_materials(picked_materials, 1 / multiplier) //Ensure we get the non multiplied amount - 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 - var/datum/component/material_container/materials = GetComponent(/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 = SSresearch.techweb_design_by_id(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)) - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/max_multiplier - for(var/datum/material/mat in D.materials) - max_multiplier = min(D.maxstack, round(materials.get_material_amount(mat)/D.materials[mat])) - 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)) - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - var/max_multiplier - for(var/datum/material/mat in D.materials) - max_multiplier = min(D.maxstack, round(materials.get_material_amount(mat)/D.materials[mat])) - 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() - var/datum/component/material_container/materials = GetComponent(/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 = mat_id - var/mineral_amount = materials.materials[mat_id] - if(mineral_amount > 0) - dat += "[M.name] amount: [mineral_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) - - var/list/required_materials = list() - - for(var/i in D.materials) - required_materials[i] = D.materials[i] * coeff * amount - - var/datum/component/material_container/materials = GetComponent(/datum/component/material_container) - - return materials.has_materials(required_materials) - -/obj/machinery/autoylathe/proc/get_design_cost(datum/design/D) - var/coeff = (ispath(D.build_path, /obj/item/stack) ? 1 : prod_coeff) - var/dat - for(var/i in D.materials) - if(istext(i)) //Category handling - dat += "[D.materials[i] * coeff] [i]" - else - var/datum/material/M = i - dat += "[D.materials[i] * coeff] [M.name] " - 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/code/game/objects/items/circuitboards/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machine_circuitboards.dm index 57638060f3..b788c3fcba 100644 --- a/code/game/objects/items/circuitboards/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machine_circuitboards.dm @@ -1054,9 +1054,9 @@ build_path = /obj/machinery/vending/kink req_components = list(/obj/item/vending_refill/kink = 1) -/obj/item/circuitboard/machine/autoylathe +/obj/item/circuitboard/machine/autolathe/toy name = "Autoylathe (Machine Board)" - build_path = /obj/machinery/autoylathe + build_path = /obj/machinery/autolathe/toy req_components = list( /obj/item/stock_parts/matter_bin = 3, /obj/item/stock_parts/manipulator = 1, diff --git a/code/modules/research/designs/autoylathe_designs.dm b/code/modules/research/designs/autoylathe_designs.dm index 7811cfdaad..0e572fee7a 100644 --- a/code/modules/research/designs/autoylathe_designs.dm +++ b/code/modules/research/designs/autoylathe_designs.dm @@ -1,5 +1,5 @@ /datum/design/autoylathe - build_type = AUTOYLATHE + build_type = TOYLATHE /datum/design/autoylathe/mech category = list("initial", "Figurines") @@ -558,7 +558,7 @@ /datum/design/foam_x9 name = "Foam Force X9 Rifle" id = "foam_x9" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/x9/toy category = list("initial", "Rifles") @@ -566,7 +566,7 @@ /datum/design/foam_dart name = "Box of Foam Darts" id = "foam_dart" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 500, /datum/material/iron = 100) build_path = /obj/item/ammo_box/foambox category = list("initial", "Misc") @@ -574,7 +574,7 @@ /datum/design/foam_magpistol name = "Foam Force Magpistol" id = "magfoam_launcher" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/shotgun/toy/mag category = list("initial", "Pistols") @@ -582,7 +582,7 @@ /datum/design/foam_magrifle name = "Foam Force MagRifle" id = "foam_magrifle" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/toy/magrifle category = list("initial", "Rifles") @@ -590,7 +590,7 @@ /datum/design/foam_hyperburst name = "MagTag Hyper Rifle" id = "foam_hyperburst" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 2000, /datum/material/glass = 1000) build_path = /obj/item/gun/energy/laser/practice/hyperburst category = list("initial", "Rifles") @@ -598,7 +598,7 @@ /datum/design/foam_sp name = "Foam Force Stealth Pistol" id = "foam_sp" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 1000) build_path = /obj/item/gun/ballistic/automatic/toy/pistol/stealth category = list("initial", "Pistols") @@ -606,7 +606,7 @@ /datum/design/toyray name = "RayTag Gun" id = "toyray" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 1000, /datum/material/glass = 1000) build_path = /obj/item/gun/energy/laser/practice/raygun category = list("initial", "Pistols") @@ -614,7 +614,7 @@ /datum/design/am4c name = "Foam Force AM4-C Rifle" id = "foam_am4c" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/AM4C category = list("initial", "Rifles") @@ -622,7 +622,7 @@ /datum/design/foam_f3 name = "Replica F3 Justicar" id = "foam_f3" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/toy/gun/justicar category = list("initial", "Pistols") @@ -630,7 +630,7 @@ /datum/design/toy_blaster name = "pump-action plastic blaster" id = "toy_blaster" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 750, /datum/material/glass = 1000) build_path = /obj/item/gun/energy/pumpaction/toy category = list("initial", "Rifles") @@ -638,7 +638,7 @@ /datum/design/capammo name = "Box of Caps" id = "capammo" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/iron = 10, /datum/material/glass = 10) build_path = /obj/item/toy/ammo/gun category = list("initial", "Misc") @@ -646,7 +646,7 @@ /datum/design/foam_smg name = "Foam Force SMG" id = "foam_smg" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/automatic/toy/unrestricted category = list("initial", "Pistols") @@ -654,7 +654,7 @@ /datum/design/foam_pistol name = "Foam Force Pistol" id = "foam_pistol" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/automatic/toy/pistol/unrestricted category = list("initial", "Pistols") @@ -662,7 +662,7 @@ /datum/design/foam_shotgun name = "Foam Force Shotgun" id = "foam_shotgun" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/shotgun/toy/unrestricted category = list("initial", "Rifles") @@ -670,7 +670,7 @@ /datum/design/foam_dartred name = "Box of Lastag Red Foam Darts" id = "redfoam_dart" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 500, /datum/material/iron = 100) build_path = /obj/item/ammo_box/foambox/tag/red category = list("initial", "Misc") @@ -678,7 +678,7 @@ /datum/design/foam_dartblue name = "Box of Lastag Blue Foam Darts" id = "bluefoam_dart" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 500, /datum/material/iron = 100) build_path = /obj/item/ammo_box/foambox/tag/blue category = list("initial", "Misc") @@ -686,7 +686,7 @@ /datum/design/foam_bow name = "Foam Force Crossbow" id = "foam_bow" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 2000, /datum/material/iron = 250) build_path = /obj/item/gun/ballistic/shotgun/toy/crossbow category = list("initial", "Pistols") @@ -694,7 +694,7 @@ /datum/design/foam_c20 name = "Donksoft C20R" id = "foam_c20" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/c20r/toy/unrestricted category = list("hacked", "Rifles") @@ -702,7 +702,7 @@ /datum/design/foam_l6 name = "Donksoft LMG" id = "foam_LMG" - build_type = AUTOYLATHE + build_type = TOYLATHE materials = list(/datum/material/plastic = 4000, /datum/material/iron = 500) build_path = /obj/item/gun/ballistic/automatic/l6_saw/toy/unrestricted category = list("hacked", "Rifles") diff --git a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm index 6d63df7d4b..06cdef5ecc 100644 --- a/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm +++ b/code/modules/research/designs/machine_desings/machine_designs_all_misc.dm @@ -111,6 +111,6 @@ name = "Machine Design (Autoylathe)" desc = "The circuit board for an autoylathe." id = "autoylathe" - build_path = /obj/item/circuitboard/machine/autoylathe + build_path = /obj/item/circuitboard/machine/autolathe/toy departmental_flags = DEPARTMENTAL_FLAG_ALL category = list("Misc. Machinery") diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 4c29d72987..9bef00d5bf 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -1038,7 +1038,7 @@ Nothing else in the console has ID requirements. autolathe_friendly = FALSE D.category -= "Imported" - if(D.build_type & (AUTOLATHE|PROTOLATHE|CRAFTLATHE)) // Specifically excludes circuit imprinter and mechfab + if(D.build_type & (AUTOLATHE|PROTOLATHE|TOYLATHE)) // Specifically excludes circuit imprinter and mechfab D.build_type = autolathe_friendly ? (D.build_type | AUTOLATHE) : D.build_type D.category |= "Imported" d_disk.blueprints[slot] = D diff --git a/code/modules/research/techweb/_techweb.dm b/code/modules/research/techweb/_techweb.dm index 388fa3785c..ddf6edc9f9 100644 --- a/code/modules/research/techweb/_techweb.dm +++ b/code/modules/research/techweb/_techweb.dm @@ -344,6 +344,7 @@ /datum/techweb/specialized/autounlocking var/design_autounlock_buildtypes = NONE + var/design_autounlock_skip_types = NONE var/design_autounlock_categories = list("initial") //if a design has a buildtype that matches the abovea and either has a category in this or this is null, unlock it. var/node_autounlock_ids = list() //autounlock nodes of this type. @@ -356,7 +357,7 @@ research_node_id(id, TRUE, FALSE) for(var/id in SSresearch.techweb_designs) var/datum/design/D = SSresearch.techweb_design_by_id(id) - if(D.build_type & design_autounlock_buildtypes) + if(D.build_type & (design_autounlock_buildtypes & allowed_buildtypes) && !(D.build_type & design_autounlock_skip_types)) for(var/i in D.category) if(i in design_autounlock_categories) add_design_by_id(D.id) @@ -364,7 +365,16 @@ /datum/techweb/specialized/autounlocking/autolathe design_autounlock_buildtypes = AUTOLATHE - allowed_buildtypes = AUTOLATHE + allowed_buildtypes = AUTOLATHE|TOYLATHE + +/datum/techweb/specialized/autounlocking/autolathe/public + design_autounlock_skip_types = NO_PUBLIC_LATHE + +/datum/techweb/specialized/autounlocking/autolathe/toy + design_autounlock_buildtypes = TOYLATHE + +/datum/techweb/specialized/autounlocking/autolathe/toy/public + design_autounlock_skip_types = NO_PUBLIC_LATHE /datum/techweb/specialized/autounlocking/limbgrower design_autounlock_buildtypes = LIMBGROWER @@ -381,10 +391,6 @@ /datum/techweb/specialized/autounlocking/exofab allowed_buildtypes = MECHFAB -/datum/techweb/specialized/autounlocking/autoylathe - design_autounlock_buildtypes = AUTOYLATHE - allowed_buildtypes = AUTOYLATHE - /datum/techweb/specialized/autounlocking/autobottler design_autounlock_buildtypes = AUTOBOTTLER allowed_buildtypes = AUTOBOTTLER \ No newline at end of file diff --git a/tgstation.dme b/tgstation.dme index b5714a1077..9aa47506d3 100755 --- a/tgstation.dme +++ b/tgstation.dme @@ -596,7 +596,6 @@ #include "code\datums\wires\airlock.dm" #include "code\datums\wires\apc.dm" #include "code\datums\wires\autolathe.dm" -#include "code\datums\wires\autoylathe.dm" #include "code\datums\wires\emitter.dm" #include "code\datums\wires\explosive.dm" #include "code\datums\wires\microwave.dm" @@ -733,7 +732,6 @@ #include "code\game\machinery\syndicatebeacon.dm" #include "code\game\machinery\syndicatebomb.dm" #include "code\game\machinery\teleporter.dm" -#include "code\game\machinery\toylathe.dm" #include "code\game\machinery\transformer.dm" #include "code\game\machinery\turnstile.dm" #include "code\game\machinery\washing_machine.dm"