diff --git a/code/modules/mining/machine_redemption.dm b/code/modules/mining/machine_redemption.dm index 4a54d3e954c..4327a4f9418 100644 --- a/code/modules/mining/machine_redemption.dm +++ b/code/modules/mining/machine_redemption.dm @@ -47,11 +47,13 @@ var/datum/research/files /// The currently inserted design disk. var/obj/item/disk/design_disk/inserted_disk + var/datum/component/material_container/mat_container + var/invalid_material /obj/machinery/mineral/ore_redemption/Initialize(mapload) . = ..() - AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLATINUM, MAT_IRIDIUM, MAT_PALLADIUM), INFINITY, FALSE, /obj/item/stack, null, CALLBACK(src, PROC_REF(on_material_insert))) + mat_container = AddComponent(/datum/component/material_container, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TRANQUILLITE, MAT_TITANIUM, MAT_BLUESPACE, MAT_PLATINUM, MAT_IRIDIUM, MAT_PALLADIUM), INFINITY, FALSE, /obj/item/stack, null, CALLBACK(src, PROC_REF(on_material_insert))) ore_buffer = list() files = new /datum/research/smelter(src) // Stock parts @@ -145,6 +147,17 @@ ore_buffer |= O O.forceMove(src) CHECK_TICK + for(var/obj/item/stack/stack in input) + if(QDELETED(stack)) + return + if(!mat_container.insert_stack(stack, stack.amount)) + stack.forceMove(get_step(src, output_dir)) + invalid_material = TRUE + CHECK_TICK + if(invalid_material) + playsound(src, 'sound/machines/scanbuzz.ogg', 25, TRUE, SILENCED_SOUND_EXTRARANGE) + atom_say("ERROR - Spitting out invalid materials.") + invalid_material = FALSE // Process it if(length(ore_buffer)) message_sent = FALSE