From 5b8997fe68cf6802252e40f2e808b16d5db71f4d Mon Sep 17 00:00:00 2001 From: Profakos Date: Mon, 10 Apr 2017 00:40:37 +0200 Subject: [PATCH] Mech fabricators can now store bluespace mesh (#25927) * Allows bluespace polycrystal in the mech fabricator Fixes #24591 * Titanium and polycrystal sheet insert * You can now also insert single crystals * Check if the fabricator is not slated for deletion before removing the overlay --- code/game/mecha/mech_fabricator.dm | 69 ++++++++++++++++++++++------- icons/obj/robotics.dmi | Bin 5054 -> 4616 bytes 2 files changed, 54 insertions(+), 15 deletions(-) diff --git a/code/game/mecha/mech_fabricator.dm b/code/game/mecha/mech_fabricator.dm index f5a6e9fac49..35659803c46 100644 --- a/code/game/mecha/mech_fabricator.dm +++ b/code/game/mecha/mech_fabricator.dm @@ -37,7 +37,7 @@ /obj/machinery/mecha_part_fabricator/New() ..() files = new /datum/research(src) //Setup the research data holder. - materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM)) + materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE)) var/obj/item/weapon/circuitboard/machine/B = new /obj/item/weapon/circuitboard/machine/mechfab(null) B.apply_default_parts(src) @@ -430,22 +430,13 @@ return 1 if(istype(W, /obj/item/stack/sheet)) - if(panel_open) - to_chat(user, "You can't load [src] while it's opened!") - return 1 - if(being_built) - to_chat(user, "\The [src] is currently processing! Please wait until completion.") + + if(!is_insertion_ready(user)) return 1 var/material_amount = materials.get_item_material_amount(W) - if(!material_amount) - to_chat(user, "This object does not contain sufficient amounts of materials to be accepted by [src].") - return 1 - if(!materials.has_space(material_amount)) - to_chat(user, "\The [src] is full. Please remove some materials from [src] in order to insert more.") - return 1 - if(!user.temporarilyRemoveItemFromInventory(W)) - to_chat(user, "\The [W] is stuck to you and cannot be placed into [src].") + + if(!try_insert(user, W, material_amount)) return 1 var/inserted = materials.insert_item(W) @@ -457,7 +448,31 @@ var/mat_overlay = "fab-load-[material2name(W.materials[1])]" add_overlay(mat_overlay) sleep(10) - cut_overlay(mat_overlay) //No matter what the overlay shall still be deleted + if(!QDELETED(src)) + cut_overlay(mat_overlay) //No matter what the overlay shall still be deleted + + updateUsrDialog() + + else if(istype(W, /obj/item/weapon/ore/bluespace_crystal)) + + if(!is_insertion_ready(user)) + return 1 + + var/material_amount = materials.get_item_material_amount(W) + + if(!try_insert(user, W, material_amount)) + return 1 + + var/inserted = materials.insert_item(W) + if(inserted) + to_chat(user, "You add [W] to the [src].") + if(W && W.materials.len) + qdel(W) + var/mat_overlay = "fab-load-bluespace" + add_overlay(mat_overlay) + sleep(10) + if(!QDELETED(src)) + cut_overlay(mat_overlay) updateUsrDialog() @@ -466,3 +481,27 @@ /obj/machinery/mecha_part_fabricator/proc/material2name(ID) return copytext(ID,2) + +/obj/machinery/mecha_part_fabricator/proc/is_insertion_ready(mob/user) + if(panel_open) + to_chat(user, "You can't load [src] while it's opened!") + return FALSE + if(being_built) + to_chat(user, "\The [src] is currently processing! Please wait until completion.") + return FALSE + + return TRUE + + +/obj/machinery/mecha_part_fabricator/proc/try_insert(mob/user, obj/item/I, material_amount) + if(!material_amount) + to_chat(user, "This object does not contain sufficient amounts of materials to be accepted by [src].") + return FALSE + if(!materials.has_space(material_amount)) + to_chat(user, "\The [src] is full. Please remove some materials from [src] in order to insert more.") + return FALSE + if(!user.temporarilyRemoveItemFromInventory(I)) + to_chat(user, "\The [I] is stuck to you and cannot be placed into [src].") + return FALSE + + return TRUE \ No newline at end of file diff --git a/icons/obj/robotics.dmi b/icons/obj/robotics.dmi index c53e7823cab7da35300147d2b26fa7c85421cc7d..d59a4c8f8d2378ec497d000d486d3090e931807f 100644 GIT binary patch literal 4616 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 u*4*CaOT-0EtUR>g5RjDiHV;_-y%atuL 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