diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm index b44d51c9b30..0ab094b55fd 100644 --- a/code/game/machinery/autolathe.dm +++ b/code/game/machinery/autolathe.dm @@ -129,17 +129,26 @@ if(stat) return 1 - if(istype(O, /obj/item/weapon/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 = 1 - var/obj/item/weapon/disk/design_disk/D = O - if(do_after(user, 14.4, target = src)) - files.AddDesign2Known(D.blueprint) - - busy = 0 - return + // Disks in general + if(istype(O, /obj/item/weapon/disk)) + if(istype(O, /obj/item/weapon/disk/design_disk)) + var/obj/item/weapon/disk/design_disk/D = O + if(D.blueprint) + 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.") + playsound(get_turf(src), "sound/goonstation/machines/printer_dotmatrix.ogg", 50, 1) + busy = 1 + if(do_after(user, 14.4, target = src)) + files.AddDesign2Known(D.blueprint) + busy = 0 + else + to_chat(user, "That disk does not have a design on it!") + return 1 + else + // So that people who are bad at computers don't shred their disks + to_chat(user, "This is not the correct type of disk for the autolathe!") + return 1 var/material_amount = materials.get_item_material_amount(O) if(!material_amount) diff --git a/code/modules/research/rdconsole.dm b/code/modules/research/rdconsole.dm index 7debbe2bd3d..c59e6bf99a6 100644 --- a/code/modules/research/rdconsole.dm +++ b/code/modules/research/rdconsole.dm @@ -234,7 +234,7 @@ proc/CallMaterialName(ID) else if(href_list["clear_tech"]) //Erase data on the technology disk. if(t_disk) - t_disk.stored = null + t_disk.wipe_tech() else if(href_list["eject_tech"]) //Eject the technology disk. if(t_disk) @@ -246,7 +246,7 @@ proc/CallMaterialName(ID) else if(href_list["copy_tech"]) //Copy some technology data from the research holder to the disk. for(var/datum/tech/T in files.known_tech) if(href_list["copy_tech_ID"] == T.id) - t_disk.stored = T + t_disk.load_tech(T) break menu = 2 submenu = 0 @@ -261,7 +261,7 @@ proc/CallMaterialName(ID) else if(href_list["clear_design"]) //Erases data on the design disk. if(d_disk) - d_disk.blueprint = null + d_disk.wipe_blueprint() else if(href_list["eject_design"]) //Eject the design disk. if(d_disk) @@ -284,7 +284,7 @@ proc/CallMaterialName(ID) if(D.build_type & (AUTOLATHE|PROTOLATHE|CRAFTLATHE)) // Specifically excludes circuit imprinter and mechfab D.build_type = autolathe_friendly ? (D.build_type | AUTOLATHE) : D.build_type D.category |= "Imported" - d_disk.blueprint = D + d_disk.load_blueprint(D) break menu = 2 submenu = 0 diff --git a/code/modules/research/research.dm b/code/modules/research/research.dm index 927dbaa936b..2fc3b59f085 100644 --- a/code/modules/research/research.dm +++ b/code/modules/research/research.dm @@ -187,7 +187,7 @@ datum/tech/materials datum/tech/engineering name = "Engineering Research" - desc = "Development of new and improved engineering parts and." + desc = "Development of new and improved engineering parts and methods." id = "engineering" max_level = 5 @@ -206,7 +206,7 @@ datum/tech/powerstorage datum/tech/bluespace name = "'Blue-space' Research" - desc = "Research into the sub-reality known as 'blue-space'" + desc = "Research into the sub-reality known as 'blue-space'." id = "bluespace" max_level = 6 rare = 2 @@ -293,7 +293,7 @@ datum/tech/robotics return cost /obj/item/weapon/disk/tech_disk - name = "Technology Disk" + name = "\improper Technology Disk" desc = "A disk for storing technology data for further research." icon = 'icons/obj/cloning.dmi' icon_state = "datadisk2" @@ -301,13 +301,27 @@ datum/tech/robotics w_class = 1 materials = list(MAT_METAL=30, MAT_GLASS=10) var/datum/tech/stored + var/default_name = "\improper Technology Disk" + var/default_desc = "A disk for storing technology data for further research." /obj/item/weapon/disk/tech_disk/New() src.pixel_x = rand(-5.0, 5) src.pixel_y = rand(-5.0, 5) +/obj/item/weapon/disk/tech_disk/proc/load_tech(datum/tech/T) + name = "[default_name] \[[T]\]" + desc = T.desc + " Level: '[T.level]'" + // NOTE: This is just a reference to the tech on the system it grabbed it from + // This seems highly fragile + stored = T + +/obj/item/weapon/disk/tech_disk/proc/wipe_tech() + name = default_name + desc = default_desc + stored = null + /obj/item/weapon/disk/design_disk - name = "Component Design Disk" + name = "\improper Component Design Disk" desc = "A disk for storing device design data for construction in lathes." icon = 'icons/obj/cloning.dmi' icon_state = "datadisk2" @@ -315,7 +329,23 @@ datum/tech/robotics w_class = 1 materials = list(MAT_METAL=30, MAT_GLASS=10) var/datum/design/blueprint + // I'm doing this so that disk paths with pre-loaded designs don't get weird names + // Otherwise, I'd use "initial()" + var/default_name = "\improper Component Design Disk" + var/default_desc = "A disk for storing device design data for construction in lathes." /obj/item/weapon/disk/design_disk/New() src.pixel_x = rand(-5.0, 5) - src.pixel_y = rand(-5.0, 5) \ No newline at end of file + src.pixel_y = rand(-5.0, 5) + +/obj/item/weapon/disk/design_disk/proc/load_blueprint(datum/design/D) + name = "[default_name] \[[D]\]" + desc = D.desc + // NOTE: This is just a reference to the design on the system it grabbed it from + // This seems highly fragile + blueprint = D + +/obj/item/weapon/disk/design_disk/proc/wipe_blueprint() + name = default_name + desc = default_desc + blueprint = null