diff --git a/code/game/machinery/constructable_frame.dm b/code/game/machinery/constructable_frame.dm index a7703f651ab..67ea1916828 100644 --- a/code/game/machinery/constructable_frame.dm +++ b/code/game/machinery/constructable_frame.dm @@ -30,6 +30,12 @@ var/obj/O = new path() req_component_names[tname] = O.name +/obj/machinery/constructable_frame/proc/get_req_components_amt() + var/amt = 0 + for(var/path in req_components) + amt += req_components[path] + return amt + // update description of required components remaining /obj/machinery/constructable_frame/proc/update_req_desc() if(!req_components || !req_component_names) @@ -151,6 +157,32 @@ qdel(src) return + if(istype(P, /obj/item/weapon/storage/part_replacer) && P.contents.len && get_req_components_amt()) + var/obj/item/weapon/storage/part_replacer/replacer = P + var/list/added_components = list() + var/list/part_list = list() + + //Assemble a list of current parts, then sort them by their rating! + for(var/obj/item/weapon/stock_parts/co in replacer) + part_list += co + + for(var/path in req_components) + while(req_components[path] > 0 && (locate(path) in part_list)) + var/obj/item/part = (locate(path) in part_list) + if(!part.crit_fail) + added_components[part] = path + replacer.remove_from_storage(part, src) + req_components[path]-- + part_list -= part + + for(var/obj/item/weapon/stock_parts/part in added_components) + components += part + user << "[part.name] applied." + replacer.play_rped_sound() + + update_req_desc() + return + if(istype(P, /obj/item)) var/success for(var/I in req_components) diff --git a/code/game/objects/items/weapons/stock_parts.dm b/code/game/objects/items/weapons/stock_parts.dm index debbe18d023..f7edba7e1c4 100644 --- a/code/game/objects/items/weapons/stock_parts.dm +++ b/code/game/objects/items/weapons/stock_parts.dm @@ -34,7 +34,6 @@ name = "bluespace rapid part exchange device" desc = "A version of the RPED that allows for replacement of parts and scanning from a distance, along with higher capacity for parts." icon_state = "BS_RPED" - item_state = "BS_RPED" w_class = 3 storage_slots = 400 max_w_class = 3