mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-22 20:48:56 +01:00
[MIRROR] Allow manual crafting of many atmos devices with the crafting menu [MDB IGNORE] (#9378)
* Allow manual crafting of many atmos devices with the crafting menu (#62676) * Allow manual crafting of many atmos devices with the crafting menu Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
This commit is contained in:
@@ -108,6 +108,7 @@
|
||||
#define CAT_ICE "Frozen"
|
||||
#define CAT_DRINK "Drinks"
|
||||
#define CAT_CHEMISTRY "Chemistry"
|
||||
#define CAT_ATMOSPHERIC "Atmospheric"
|
||||
|
||||
//rcd modes
|
||||
#define RCD_FLOORWALL 0
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
),
|
||||
CAT_DRINK = CAT_NONE,
|
||||
CAT_CLOTHING = CAT_NONE,
|
||||
CAT_ATMOSPHERIC = CAT_NONE,
|
||||
)
|
||||
|
||||
var/cur_category = CAT_NONE
|
||||
|
||||
@@ -45,6 +45,14 @@
|
||||
/datum/crafting_recipe/proc/on_craft_completion(mob/user, atom/result)
|
||||
return
|
||||
|
||||
///Check if the pipe used for atmospheric device crafting is the proper one
|
||||
/datum/crafting_recipe/proc/atmos_pipe_check(mob/user, list/collected_requirements)
|
||||
var/obj/item/pipe/required_pipe = collected_requirements[/obj/item/pipe][1]
|
||||
if(ispath(required_pipe.pipe_type, /obj/machinery/atmospherics/pipe/smart))
|
||||
return TRUE
|
||||
to_chat(user, span_boldwarning("You can't craft \a [name] without a pipe fitting!"))
|
||||
return FALSE
|
||||
|
||||
/datum/crafting_recipe/improv_explosive
|
||||
name = "IED"
|
||||
result = /obj/item/grenade/iedcasing
|
||||
@@ -1337,5 +1345,307 @@
|
||||
time = 40 SECONDS
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/pipe
|
||||
name = "Smart pipe fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH)
|
||||
result = /obj/item/pipe/quaternary
|
||||
reqs = list(/obj/item/stack/sheet/iron = 1)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/pipe/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/pipe/smart
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.p_init_dir = ALL_CARDINALS
|
||||
crafted_pipe.setDir(SOUTH)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/layer_adapter
|
||||
name = "Layer manifold fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/binary
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/layer_adapter/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/layer_adapter/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/pipe/layer_manifold
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/color_adapter
|
||||
name = "Color adapter fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/binary
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/color_adapter/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/color_adapter/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/pipe/color_adapter
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/he_pipe
|
||||
name = "H/E pipe fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/quaternary
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/he_pipe/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/he_pipe/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/pipe/heat_exchanging/manifold4w
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/he_junction
|
||||
name = "H/E junction fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/he_junction/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/he_junction/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/pipe/heat_exchanging/junction
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/pressure_pump
|
||||
name = "Pressure pump fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/binary
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/pressure_pump/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/pressure_pump/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/binary/pump
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/manual_valve
|
||||
name = "Manual valve fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/binary
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/manual_valve/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/manual_valve/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/binary/valve
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/vent
|
||||
name = "Vent pump fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/vent/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/vent/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/unary/vent_pump
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/scrubber
|
||||
name = "Scrubber fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/scrubber/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/scrubber/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/unary/vent_scrubber
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/filter
|
||||
name = "Filter fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/trinary/flippable
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/filter/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/filter/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/trinary/filter
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/mixer
|
||||
name = "Mixer fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/trinary/flippable
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/mixer/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/mixer/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/trinary/mixer
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/connector
|
||||
name = "Portable connector fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/connector/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/connector/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/unary/portables_connector
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/passive_vent
|
||||
name = "Passive vent fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/passive_vent/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/passive_vent/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/unary/passive_vent
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/injector
|
||||
name = "Outlet injector fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
/obj/item/stack/cable_coil = 5)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/injector/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/injector/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/unary/outlet_injector
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
/datum/crafting_recipe/he_exchanger
|
||||
name = "Heat exchanger fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER)
|
||||
result = /obj/item/pipe/directional
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/plasteel = 1)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/he_exchanger/check_requirements(mob/user, list/collected_requirements)
|
||||
return atmos_pipe_check(user, collected_requirements)
|
||||
|
||||
/datum/crafting_recipe/he_exchanger/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/pipe/crafted_pipe = result
|
||||
crafted_pipe.pipe_type = /obj/machinery/atmospherics/components/unary/heat_exchanger
|
||||
crafted_pipe.pipe_color = COLOR_VERY_LIGHT_GRAY
|
||||
crafted_pipe.setDir(user.dir)
|
||||
crafted_pipe.update()
|
||||
|
||||
#undef CRAFTING_MACHINERY_CONSUME
|
||||
#undef CRAFTING_MACHINERY_USE
|
||||
|
||||
@@ -299,6 +299,27 @@ Buildable meters
|
||||
C.blood_volume = 0
|
||||
return(OXYLOSS|BRUTELOSS)
|
||||
|
||||
/obj/item/pipe/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("The pipe layer is set to [piping_layer].")
|
||||
. += span_notice("You can change the pipe layer by Alt-Clicking the device.")
|
||||
. += span_notice("You can rotate it by using it in hand.")
|
||||
|
||||
/obj/item/pipe/AltClick(mob/user)
|
||||
. = ..()
|
||||
var/layer_to_set = (piping_layer >= PIPING_LAYER_MAX) ? PIPING_LAYER_MIN : (piping_layer + 1)
|
||||
set_piping_layer(layer_to_set)
|
||||
visible_message("You set the pipe layer to [piping_layer].")
|
||||
|
||||
/obj/item/pipe/trinary/flippable/examine(mob/user)
|
||||
. = ..()
|
||||
. += span_notice("You can flip the device by Ctrl-Clicking it.")
|
||||
|
||||
/obj/item/pipe/trinary/flippable/CtrlClick(mob/user)
|
||||
. = ..()
|
||||
do_a_flip()
|
||||
visible_message("You flip the device.")
|
||||
|
||||
/obj/item/pipe_meter
|
||||
name = "meter"
|
||||
desc = "A meter that can be wrenched on pipes, or attached to the floor with screws."
|
||||
|
||||
Reference in New Issue
Block a user