diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 9425580a44c..ac60ce1a351 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -9330,12 +9330,12 @@ /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/administration) "GV" = ( -/obj/item/rcl/pre_loaded, -/obj/item/rcl/pre_loaded, -/obj/item/rcl/pre_loaded, -/obj/item/rcl/pre_loaded, -/obj/item/rcl/pre_loaded, -/obj/item/rcl/pre_loaded, +/obj/item/rcl, +/obj/item/rcl, +/obj/item/rcl, +/obj/item/rcl, +/obj/item/rcl, +/obj/item/rcl, /obj/structure/shelf/engineering, /turf/simulated/floor/plasteel/dark, /area/centcom/specops) diff --git a/_maps/map_files/stations/boxstation.dmm b/_maps/map_files/stations/boxstation.dmm index fec16adddc3..47652584299 100644 --- a/_maps/map_files/stations/boxstation.dmm +++ b/_maps/map_files/stations/boxstation.dmm @@ -38372,6 +38372,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 }, +/obj/item/rcl, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "cRR" = ( diff --git a/_maps/map_files/stations/cerestation.dmm b/_maps/map_files/stations/cerestation.dmm index d9dd1b8f755..17bb7566e2f 100644 --- a/_maps/map_files/stations/cerestation.dmm +++ b/_maps/map_files/stations/cerestation.dmm @@ -20046,6 +20046,7 @@ /obj/effect/turf_decal/tiles/department/engineering/side{ dir = 8 }, +/obj/item/rcl, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) "dfG" = ( @@ -40934,10 +40935,10 @@ /area/station/security/execution) "hMv" = ( /obj/structure/table, -/obj/item/storage/fancy/cigarettes/cigpack_robust, /obj/structure/cable/yellow{ icon_state = "4-8" }, +/obj/item/rcl, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) "hMA" = ( @@ -62077,6 +62078,10 @@ /obj/structure/cable{ icon_state = "4-8" }, +/obj/item/storage/fancy/cigarettes/cigpack_robust{ + pixel_x = -8; + pixel_y = 11 + }, /turf/simulated/floor/plasteel, /area/station/engineering/break_room) "mkh" = ( diff --git a/_maps/map_files/stations/deltastation.dmm b/_maps/map_files/stations/deltastation.dmm index dc2a3bc8c14..876a947d379 100644 --- a/_maps/map_files/stations/deltastation.dmm +++ b/_maps/map_files/stations/deltastation.dmm @@ -52482,6 +52482,12 @@ }, /turf/simulated/floor/plasteel, /area/station/security/permabrig) +"foI" = ( +/obj/structure/table/reinforced, +/obj/effect/turf_decal/tiles/neutral, +/obj/item/rcl, +/turf/simulated/floor/plasteel, +/area/station/engineering/break_room) "foU" = ( /obj/structure/table/reinforced, /obj/item/radio/intercom{ @@ -124261,7 +124267,7 @@ bwX bIA bIA bEV -xbY +foI ttF bQp bIA diff --git a/_maps/map_files/stations/emeraldstation.dmm b/_maps/map_files/stations/emeraldstation.dmm index 3f1289891ae..7f32ff1617f 100644 --- a/_maps/map_files/stations/emeraldstation.dmm +++ b/_maps/map_files/stations/emeraldstation.dmm @@ -40363,6 +40363,7 @@ pixel_x = -3; pixel_y = 3 }, +/obj/item/rcl, /turf/simulated/floor/plasteel, /area/station/engineering/equipmentstorage) "idP" = ( diff --git a/_maps/map_files/stations/metastation.dmm b/_maps/map_files/stations/metastation.dmm index 475c39f6203..22990c84e84 100644 --- a/_maps/map_files/stations/metastation.dmm +++ b/_maps/map_files/stations/metastation.dmm @@ -71554,10 +71554,10 @@ /area/station/engineering/atmos) "rxV" = ( /obj/structure/table/reinforced, -/obj/effect/spawner/random/trash, /obj/effect/turf_decal/tiles/department/engineering/side{ dir = 8 }, +/obj/item/rcl, /turf/simulated/floor/plasteel/dark, /area/station/engineering/equipmentstorage) "rye" = ( diff --git a/code/__DEFINES/construction_defines.dm b/code/__DEFINES/construction_defines.dm index 70b09adcc0b..509116e9702 100644 --- a/code/__DEFINES/construction_defines.dm +++ b/code/__DEFINES/construction_defines.dm @@ -91,3 +91,5 @@ #define MAX_STACK_SIZE 50 /// maximum amount of cable in a coil #define MAXCOIL 30 +/// maximum amount of cable in a RCL spool +#define RCL_MAX_SPOOL_SIZE 90 diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm index 5b504446ad8..5113276a52c 100644 --- a/code/game/objects/items/RCL.dm +++ b/code/game/objects/items/RCL.dm @@ -1,49 +1,67 @@ /obj/item/rcl name = "rapid cable layer (RCL)" - desc = "A device used to rapidly deploy cables. It has screws on the side which can be removed to slide off the cables." - icon = 'icons/obj/tools.dmi' - icon_state = "rcl-0" - inhand_icon_state = "rcl-0" - force = 5 //Plastic is soft + desc = "An electrician's best friend, this plastic spool can hold a large amount of cable and rapidly lay it down." + icon = 'icons/obj/rcl.dmi' + icon_state = "rcl" + inhand_icon_state = "rcl" throwforce = 5 - throw_speed = 1 origin_tech = "engineering=4;materials=2" materials = list(MAT_METAL = 5000) - var/max_amount = 90 var/active = FALSE - var/obj/structure/cable/last = null - var/obj/item/stack/cable_coil/loaded = null + var/obj/structure/cable/last + var/obj/item/stack/cable_coil/random/rcl_spool/loaded new_attack_chain = TRUE /obj/item/rcl/Initialize(mapload) . = ..() + loaded = new() AddComponent(/datum/component/two_handed) + update_icon(UPDATE_ICON_STATE|UPDATE_OVERLAYS) + +/obj/item/rcl/examine(mob/user) + . = ..() + if(loaded.amount) + . += SPAN_NOTICE("It contains [loaded.amount]/[RCL_MAX_SPOOL_SIZE] cables.") + else + . += SPAN_WARNING("It's empty!") + . += SPAN_NOTICE("Use in-hand to swap to [active ? "standard" : "Rapid Cable Laying"] mode.") /obj/item/rcl/item_interaction(mob/living/user, obj/item/used, list/modifiers) if(!istype(used, /obj/item/stack/cable_coil)) return ..() var/obj/item/stack/cable_coil/coil = used - if(!loaded) - if(!user.transfer_item_to(coil, src)) - to_chat(user, SPAN_WARNING("[coil] is stuck to your hand!")) - return ITEM_INTERACT_COMPLETE - loaded = coil - loaded.max_amount = max_amount //We store a lot. - else - if(loaded.amount >= max_amount) - to_chat(user, SPAN_WARNING("You cannot fit any more cable on [src]!")) - return ITEM_INTERACT_COMPLETE - - var/amount = min(loaded.amount + coil.get_amount(), max_amount) - coil.use(amount - loaded.amount) - loaded.amount = amount - refresh_icon(user) - to_chat(user, SPAN_NOTICE("You add the cables to [src]. It now contains [loaded.amount].")) + if(loaded.amount >= RCL_MAX_SPOOL_SIZE) + to_chat(user, SPAN_WARNING("You cannot fit any more cable on [src]!")) return ITEM_INTERACT_COMPLETE + // When loading an empty cable spool, turn it into either standard or heavy based on what we're loading. + if(!loaded.amount) + loaded.color = coil.color + loaded.cable_type = coil.cable_type + loaded.cable_merge_id = coil.cable_merge_id + else if(loaded.cable_merge_id != coil.cable_merge_id) + to_chat(user, SPAN_WARNING("These coils are of different types!")) + return ITEM_INTERACT_COMPLETE + + var/amount = min(loaded.amount + coil.get_amount(), RCL_MAX_SPOOL_SIZE) + coil.use(amount - loaded.amount) + loaded.amount = amount + refresh_icon(user) + to_chat(user, SPAN_NOTICE("You add the cables to [src]. It now contains [loaded.amount].")) + return ITEM_INTERACT_COMPLETE + +/obj/item/rcl/interact_with_atom(atom/target, mob/living/user, list/modifiers) + if(istype(target, /obj/item/stack/cable_coil)) + var/obj/item/stack/cable_coil/C = target + C.melee_attack_chain(user, src, list2params(modifiers)) + return ITEM_INTERACT_COMPLETE + + loaded.melee_attack_chain(user, target, list2params(modifiers)) + return ITEM_INTERACT_COMPLETE + /obj/item/rcl/proc/refresh_icon(mob/user) - update_icon(UPDATE_ICON_STATE) + update_icon(UPDATE_ICON_STATE|UPDATE_OVERLAYS) user.update_inv_l_hand() user.update_inv_r_hand() @@ -55,57 +73,64 @@ if(!I.use_tool(src, user, FALSE, volume = I.tool_volume)) return to_chat(user, SPAN_NOTICE("You loosen the securing screws on the side, allowing you to lower the guiding edge and retrieve the wires.")) - while(loaded.amount > 30) //There are only two kinds of situations: "nodiff" (60,90), or "diff" (31-59, 61-89) - var/diff = loaded.amount % 30 - if(diff) + while(loaded.amount) + var/diff = 30 + if(loaded.amount < 30) + diff = loaded.amount + if(loaded.cable_merge_id == CABLE_LOW_POWER) + var/obj/item/stack/cable_coil/dropped_coil = new /obj/item/stack/cable_coil(user.loc, diff) + dropped_coil.color = loaded.color loaded.use(diff) - new /obj/item/stack/cable_coil(user.loc, diff) else - loaded.use(30) - new /obj/item/stack/cable_coil(user.loc, 30) - loaded.max_amount = initial(loaded.max_amount) - loaded.forceMove(user.loc) - user.put_in_hands(loaded) - loaded = null + new /obj/item/stack/cable_coil/extra_insulated(user.loc, diff) + loaded.use(diff) refresh_icon(user) -/obj/item/rcl/examine(mob/user) - . = ..() - if(loaded) - . += SPAN_NOTICE("It contains [loaded.amount]/[max_amount] cables.") - else - . += SPAN_WARNING("It's empty!") - /obj/item/rcl/Destroy() QDEL_NULL(loaded) last = null active = FALSE return ..() -/obj/item/rcl/update_icon_state() - if(!loaded) - icon_state = "rcl-0" - inhand_icon_state = "rcl-0" +/obj/item/rcl/update_overlays() + . = ..() + overlays.Cut() + if(!loaded.amount) return + + var/coil_size switch(loaded.amount) if(61 to INFINITY) - icon_state = "rcl-30" + coil_size = "full" if(31 to 60) - icon_state = "rcl-20" + coil_size = "mid" if(1 to 30) - icon_state = "rcl-10" - else - icon_state = "rcl-0" - inhand_icon_state = "rcl[loaded.amount ? "" : "-0"]" + coil_size = "low" + + if(loaded.cable_merge_id == CABLE_LOW_POWER) + var/image/cable_overlay = image('icons/obj/rcl.dmi', icon_state = "rcl_[coil_size]") + cable_overlay.color = loaded.color + overlays += cable_overlay + else if(loaded.cable_type == /obj/structure/cable/extra_insulated) + overlays += "rcl_[coil_size]_hd" + else + overlays += "rcl_[coil_size]_hd_connected" + + +/obj/item/rcl/update_icon_state() + . = ..() + if(loaded.cable_merge_id == CABLE_LOW_POWER) + inhand_icon_state = "rcl[loaded.amount ? "_[loaded.color]" : null]" + else if(loaded.cable_type == /obj/structure/cable/extra_insulated) + inhand_icon_state = "rcl[loaded.amount ? "_hd" : null]" + else + inhand_icon_state = "rcl[loaded.amount ? "_hd_connected" : null]" /obj/item/rcl/proc/is_empty(mob/user, loud = 1) refresh_icon(user) - if(!loaded || !loaded.amount) + if(!loaded.amount) if(loud) to_chat(user, SPAN_WARNING("The last of the cables unreel from [src]!")) - if(loaded) - qdel(loaded) - loaded = null return TRUE return FALSE @@ -118,7 +143,10 @@ if(..()) return FINISH_ATTACK - active = HAS_TRAIT(src, TRAIT_WIELDED) + if(iscarbon(user)) + active = HAS_TRAIT(src, TRAIT_WIELDED) + else + active = !active if(!active) last = null else if(!last) @@ -127,6 +155,8 @@ last = C break + to_chat(user, SPAN_NOTICE("You [active ? "prepare to rapidly lay cable" : "stop rapidly laying cable"].")) + /obj/item/rcl/on_mob_move(direct, mob/user) if(active && isturf(user.loc)) trigger(user) @@ -153,9 +183,64 @@ last = loaded.place_turf(get_turf(loc), user, turn(user.dir, 180)) is_empty(user) //If we've run out, display message -/obj/item/rcl/pre_loaded/Initialize(mapload) // Comes preloaded with cable, for testing stuff +/obj/item/rcl/empty/Initialize(mapload) + ..() + loaded.use(RCL_MAX_SPOOL_SIZE, FALSE) + update_icon(UPDATE_ICON_STATE|UPDATE_OVERLAYS) + +/obj/item/rcl/robot + name = "robotic rapid cable layer (RRCL)" + desc = "A Rapid Cable Layer used to hold a spool of cable for engineering and construction robots." + /// Tells us if we're laying basic or insulated cable. + var/heavy_mode = FALSE + +/obj/item/rcl/robot/examine(mob/user) . = ..() - loaded = new() - loaded.max_amount = max_amount - loaded.amount = max_amount - update_icon(UPDATE_ICON_STATE) + . += SPAN_NOTICE("[src] is currently dispensing [heavy_mode ? "heavy duty cable" : "standard cable"].") + . += SPAN_NOTICE("Alt-Click to swap between laying standard and heavy duty cable.") + . += SPAN_NOTICE("Ctrl-Click to [heavy_mode ? "toggle cable connectivity" : "select cable color"].") + +/obj/item/rcl/robot/screwdriver_act(mob/user, obj/item/I) + return + +/obj/item/rcl/robot/AltClick(mob/user, modifiers) + if(..()) + return ITEM_INTERACT_COMPLETE + + if(heavy_mode) + loaded.cable_type = /obj/structure/cable + loaded.cable_merge_id = CABLE_LOW_POWER + loaded.color = "red" + else + loaded.cable_type = /obj/structure/cable/extra_insulated + loaded.cable_merge_id = CABLE_HIGH_POWER + loaded.color = null + heavy_mode = !heavy_mode + to_chat(user, SPAN_NOTICE("You start dispensing [heavy_mode ? "heavy-duty cable" : "standard cable"].")) + update_icon(UPDATE_ICON_STATE|UPDATE_OVERLAYS) + +/obj/item/rcl/robot/CtrlClick(mob/user, modifiers) + if(!heavy_mode) + var/new_cable_color = tgui_input_list(user, "Pick a cable color.", "Cable Color", list("white","red","orange","yellow","green","blue","cyan","pink")) + if(!new_cable_color) + return + + to_chat(user, SPAN_NOTICE("[src] is now dispensing [new_cable_color] cable.")) + // For reasons beyond my comprehension, BYOND cannot comprehend the fact that green is equal to itself unless you explicitly tell it so. + if(new_cable_color == "green") + new_cable_color = COLOR_GREEN + loaded.cable_color(new_cable_color) + else + if(loaded.cable_type == /obj/structure/cable/extra_insulated/pre_connect) + loaded.cable_type = /obj/structure/cable/extra_insulated + to_chat(user, SPAN_NOTICE("[src] is now dispensing closed-connection heavy duty cable")) + else + loaded.cable_type = /obj/structure/cable/extra_insulated/pre_connect + to_chat(user, SPAN_NOTICE("[src] is now dispensing open-connection heavy duty cable")) + + update_icon(UPDATE_ICON_STATE|UPDATE_OVERLAYS) + +/obj/item/stack/cable_coil/random/rcl_spool + rcl_spool = TRUE + max_amount = RCL_MAX_SPOOL_SIZE + amount = RCL_MAX_SPOOL_SIZE diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm index 30149f2fc53..2016a8feebc 100644 --- a/code/game/objects/items/weapons/storage/belt.dm +++ b/code/game/objects/items/weapons/storage/belt.dm @@ -95,7 +95,8 @@ /obj/item/robotanalyzer, /obj/item/rpd/bluespace, /obj/item/hammer, - /obj/item/melee/sickly_blade/lock + /obj/item/rcl, + /obj/item/melee/sickly_blade/lock, ) /obj/item/storage/belt/utility/full/populate_contents() @@ -134,6 +135,7 @@ name = "advanced toolbelt" desc = "Holds tools, looks snazzy, and fits nicely into a bag." icon_state = "utility_ce" + max_combined_w_class = 20 storable = TRUE /obj/item/storage/belt/utility/chief/full/populate_contents() @@ -141,7 +143,7 @@ new /obj/item/crowbar/power(src) new /obj/item/weldingtool/experimental(src)//This can be changed if this is too much new /obj/item/multitool(src) - new /obj/item/stack/cable_coil/random(src, 30) + new /obj/item/rcl(src) new /obj/item/extinguisher/mini(src) new /obj/item/analyzer(src) update_icon() diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm index cb407277c39..d2206599d4a 100644 --- a/code/modules/mob/living/silicon/robot/robot_modules.dm +++ b/code/modules/mob/living/silicon/robot/robot_modules.dm @@ -23,7 +23,7 @@ var/list/malf_modules = list() /// A list of modules that require special recharge handling. Examples include things like flashes, sprays and welding tools. var/list/special_rechargables = list() - /// A list of all "energy stacks", i.e cables, brute kits, splints, etc. + /// A list of all "energy stacks", i.e rods, brute kits, splints, etc. var/list/storages = list() /// A list of all "material stacks", i.e. metal, glass, and reinforced glass var/list/material_storages = list() @@ -470,8 +470,7 @@ /obj/item/stack/rods/cyborg, /obj/item/stack/tile/plasteel/cyborg, /obj/item/stack/tile/catwalk/cyborg, - /obj/item/stack/cable_coil/cyborg, - /obj/item/stack/cable_coil/extra_insulated/cyborg, + /obj/item/rcl/robot, /obj/item/stack/sheet/glass/cyborg, /obj/item/stack/sheet/rglass/cyborg, /obj/item/inflatable/cyborg, @@ -767,8 +766,7 @@ /obj/item/stack/rods/cyborg, /obj/item/stack/tile/plasteel/cyborg, /obj/item/stack/tile/catwalk/cyborg, - /obj/item/stack/cable_coil/cyborg, - /obj/item/stack/cable_coil/extra_insulated/cyborg, + /obj/item/rcl/robot, /obj/item/stack/sheet/glass/cyborg/drone, /obj/item/stack/sheet/rglass/cyborg/drone, /obj/item/stack/sheet/wood/cyborg, @@ -878,7 +876,7 @@ /obj/item/stack/sheet/metal/cyborg, /obj/item/stack/rods/cyborg, /obj/item/stack/tile/plasteel/cyborg, - /obj/item/stack/cable_coil/cyborg, + /obj/item/rcl/robot, /obj/item/stack/sheet/glass/cyborg, /obj/item/stack/sheet/rglass/cyborg ) @@ -1052,10 +1050,6 @@ statpanel_name = "Wooden tiles" max_amount = 60 -/datum/robot_storage/energy/cable - name = "Cable Synthesizer" - statpanel_name = "Cable" - // For the medical stacks, even though the recharge rate is 0, it will be set to 1 by default because of a `max()` proc. // It will always take ~12 seconds to fully recharge these stacks beacuse of this. This time does not apply to the syndicate storages. /datum/robot_storage/energy/medical diff --git a/code/modules/power/cables/cable_coil.dm b/code/modules/power/cables/cable_coil.dm index c219137c60f..c9d34f91394 100644 --- a/code/modules/power/cables/cable_coil.dm +++ b/code/modules/power/cables/cable_coil.dm @@ -24,6 +24,8 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain slot_flags = ITEM_SLOT_BELT attack_verb = list("whipped", "lashed", "disciplined", "flogged") usesound = 'sound/items/deconstruct.ogg' + /// Used for RCL cable spools to stop the stack from being eaten. + var/rcl_spool = FALSE /// Type of cable this coil makes var/cable_type = /obj/structure/cable /// Bitflag of the types of cable we can add cable to with this coil. @@ -66,7 +68,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain /obj/item/stack/cable_coil/examine(mob/user) . = ..() - if(!in_range(user, src) || is_cyborg) + if(!in_range(user, src)) return if(get_amount() == 1) . += "A short piece of power cable." @@ -125,7 +127,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain else break while(cable_used <= MAXCABLEPERHEAL && E.burn_dam && amount >= 1) - use(1) + use(1, rcl_spool) cable_used += 1 E.heal_damage(0, HEALPERCABLE, 0, TRUE) H.UpdateDamageIcon() @@ -215,7 +217,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain if(IS_DIR_DIAGONAL(C.d2))// if the cable is layed diagonally, check the others 2 possible directions C.merge_diagonal_networks(C.d2) - use(1) + use(1, rcl_spool) if(C.shock(user, 50)) if(prob(50)) //fail @@ -281,7 +283,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain if(IS_DIR_DIAGONAL(NC.d2)) // if the cable is layed diagonally, check the others 2 possible directions NC.merge_diagonal_networks(NC.d2) - use(1) + use(1, rcl_spool) if(NC.shock(user, 50)) if(prob(50)) //fail @@ -327,7 +329,7 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain if(C.d2 & (C.d2 - 1))// if the cable is layed diagonally, check the others 2 possible directions C.merge_connected_networks(C.d2) - use(1) + use(1, rcl_spool) if(C.shock(user, 50)) if(prob(50)) //fail @@ -428,28 +430,5 @@ GLOBAL_LIST_INIT(cable_coil_recipes, list (new/datum/stack_recipe/cable_restrain update_appearance(UPDATE_NAME|UPDATE_ICON_STATE) update_wclass() -/obj/item/stack/cable_coil/cyborg - energy_type = /datum/robot_storage/energy/cable - is_cyborg = TRUE - -/obj/item/stack/cable_coil/cyborg/update_icon_state() - return // icon_state should always be a full cable - -/obj/item/stack/cable_coil/cyborg/attack_self__legacy__attackchain(mob/user) - var/cablecolor = tgui_input_list(usr, "Pick a cable color.", "Cable Color", list("red","yellow","green","blue","pink","orange","cyan","white")) - cable_color(cablecolor) - update_icon() - -/obj/item/stack/cable_coil/extra_insulated/cyborg - energy_type = /datum/robot_storage/energy/cable - is_cyborg = TRUE - -/obj/item/stack/cable_coil/extra_insulated/cyborg/attack_self__legacy__attackchain(mob/user) - toggle_connection(user) - update_icon() - -/obj/item/stack/cable_coil/extra_insulated/cyborg/update_icon_state() - return // icon_state should always be a full cable - #undef HEALPERCABLE #undef MAXCABLEPERHEAL diff --git a/code/modules/research/designs/autolathe_designs.dm b/code/modules/research/designs/autolathe_designs.dm index 159601b2981..a95a34d5d9b 100644 --- a/code/modules/research/designs/autolathe_designs.dm +++ b/code/modules/research/designs/autolathe_designs.dm @@ -830,7 +830,7 @@ id = "rcl" build_type = AUTOLATHE materials = list(MAT_METAL = 5000) - build_path = /obj/item/rcl + build_path = /obj/item/rcl/empty category = list("initial", "Construction") //hacked autolathe recipes diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index b4c199debda..b23f728169a 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index d18662385a2..9597990a09d 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/rcl.dmi b/icons/obj/rcl.dmi new file mode 100644 index 00000000000..f59c1e00817 Binary files /dev/null and b/icons/obj/rcl.dmi differ