mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-28 23:58:07 +01:00
Crafting fireaxe cabinets, mech removal cabinets, and mirrors (#72856)
## About The Pull Request Breaking down #72371 because it's... unreasonably large. So this PR splits the crafting recipe file, and adds 3 new recipes for fireaxe cabinets, mech removal cabinets, and mirrors. ## Why It's Good For The Game Wallening compliance, and more of me on my shit breaking down long files. ## Changelog 🆑 Tattle qol: fireaxe cabinets, mech removal cabinets, and mirrors can now all be crafted /🆑 Co-authored-by: tattle <article.disaster@gmail.com>
This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
///If the machine is used/deleted in the crafting process
|
||||
#define CRAFTING_MACHINERY_CONSUME 1
|
||||
///If the machine is only "used" i.e. it checks to see if it's nearby and allows crafting, but doesn't delete it
|
||||
#define CRAFTING_MACHINERY_USE 0
|
||||
|
||||
/datum/crafting_recipe
|
||||
///in-game display name
|
||||
var/name
|
||||
///type paths of items consumed associated with how many are needed
|
||||
var/list/reqs = list()
|
||||
///type paths of items explicitly not allowed as an ingredient
|
||||
var/list/blacklist = list()
|
||||
///type path of item resulting from this craft
|
||||
var/result
|
||||
/// String defines of items needed but not consumed. Lazy list.
|
||||
var/list/tool_behaviors
|
||||
/// Type paths of items needed but not consumed. Lazy list.
|
||||
var/list/tool_paths
|
||||
///time in seconds. Remember to use the SECONDS define!
|
||||
var/time = 3 SECONDS
|
||||
///type paths of items that will be placed in the result
|
||||
var/list/parts = list()
|
||||
///like tool_behaviors but for reagents
|
||||
var/list/chem_catalysts = list()
|
||||
///where it shows up in the crafting UI
|
||||
var/category
|
||||
///Set to FALSE if it needs to be learned first.
|
||||
var/always_available = TRUE
|
||||
/// Additonal requirements text shown in UI
|
||||
var/additional_req_text
|
||||
///Required machines for the craft, set the assigned value of the typepath to CRAFTING_MACHINERY_CONSUME or CRAFTING_MACHINERY_USE. Lazy associative list: type_path key -> flag value.
|
||||
var/list/machinery
|
||||
///Should only one object exist on the same turf?
|
||||
var/one_per_turf = FALSE
|
||||
/// Steps needed to achieve the result
|
||||
var/list/steps
|
||||
/// Whether the result can be crafted with a crafting menu button
|
||||
var/non_craftable
|
||||
/// Chemical reaction described in the recipe
|
||||
var/datum/chemical_reaction/reaction
|
||||
/// Resulting amount (for stacks only)
|
||||
var/result_amount
|
||||
|
||||
/datum/crafting_recipe/New()
|
||||
if(!(result in reqs))
|
||||
blacklist += result
|
||||
if(tool_behaviors)
|
||||
tool_behaviors = string_list(tool_behaviors)
|
||||
if(tool_paths)
|
||||
tool_paths = string_list(tool_paths)
|
||||
|
||||
/datum/crafting_recipe/stack/New(obj/item/stack/material, datum/stack_recipe/stack_recipe)
|
||||
if(!material || !stack_recipe || !stack_recipe.result_type)
|
||||
stack_trace("Invalid stack recipe [stack_recipe]")
|
||||
return
|
||||
..()
|
||||
|
||||
src.name = stack_recipe.title
|
||||
src.time = stack_recipe.time
|
||||
src.result = stack_recipe.result_type
|
||||
src.result_amount = stack_recipe.res_amount
|
||||
src.reqs[material] = stack_recipe.req_amount
|
||||
src.category = stack_recipe.category || CAT_MISC
|
||||
|
||||
/**
|
||||
* Run custom pre-craft checks for this recipe, don't add feedback messages in this because it will spam the client
|
||||
*
|
||||
* user: The /mob that initiated the crafting
|
||||
* collected_requirements: A list of lists of /obj/item instances that satisfy reqs. Top level list is keyed by requirement path.
|
||||
*/
|
||||
/datum/crafting_recipe/proc/check_requirements(mob/user, list/collected_requirements)
|
||||
return TRUE
|
||||
|
||||
/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
|
||||
return FALSE
|
||||
@@ -0,0 +1,351 @@
|
||||
/datum/crafting_recipe/bluespace_vendor_mount
|
||||
name = "Bluespace Vendor Wall Mount"
|
||||
result = /obj/item/wallframe/bluespace_vendor_mount
|
||||
time = 6 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 15,
|
||||
/obj/item/stack/sheet/glass = 10,
|
||||
/obj/item/stack/cable_coil = 10,
|
||||
)
|
||||
category = CAT_ATMOSPHERIC
|
||||
|
||||
/datum/crafting_recipe/pipe
|
||||
name = "Smart pipe fitting"
|
||||
tool_behaviors = list(TOOL_WRENCH)
|
||||
result = /obj/item/pipe/quaternary/pipe
|
||||
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/layer_adapter
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/color_adapter
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/he_pipe
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/he_junction
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 1 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/pressure_pump
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/manual_valve
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/vent
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/scrubber
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/filter
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/mixer
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/connector
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/passive_vent
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/injector
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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/he_exchanger
|
||||
reqs = list(
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/stack/sheet/plasteel = 1,
|
||||
)
|
||||
time = 2 SECONDS
|
||||
category = CAT_ATMOSPHERIC
|
||||
additional_req_text = " smart pipe fitting"
|
||||
|
||||
/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()
|
||||
|
||||
/datum/crafting_recipe/steam_vent
|
||||
name = "Steam Vent"
|
||||
result = /obj/structure/steam_vent
|
||||
time = 0.8 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 2,
|
||||
/obj/item/stack/tile/iron = 1,
|
||||
/obj/item/stock_parts/water_recycler = 1,
|
||||
)
|
||||
category = CAT_ATMOSPHERIC
|
||||
@@ -0,0 +1,157 @@
|
||||
/datum/crafting_recipe/improv_explosive
|
||||
name = "IED"
|
||||
result = /obj/item/grenade/iedcasing
|
||||
reqs = list(
|
||||
/datum/reagent/fuel = 50,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/reagent_containers/cup/soda_cans = 1,
|
||||
)
|
||||
parts = list(/obj/item/reagent_containers/cup/soda_cans = 1)
|
||||
time = 1.5 SECONDS
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/molotov
|
||||
name = "Molotov"
|
||||
result = /obj/item/reagent_containers/cup/glass/bottle/molotov
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/cup/rag = 1,
|
||||
/obj/item/reagent_containers/cup/glass/bottle = 1,
|
||||
)
|
||||
parts = list(/obj/item/reagent_containers/cup/glass/bottle = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/chemical_payload
|
||||
name = "Chemical Payload (C4)"
|
||||
result = /obj/item/bombcore/chemical
|
||||
reqs = list(
|
||||
/obj/item/stock_parts/matter_bin = 1,
|
||||
/obj/item/grenade/c4 = 1,
|
||||
/obj/item/grenade/chem_grenade = 2
|
||||
)
|
||||
parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2)
|
||||
time = 3 SECONDS
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/chemical_payload2
|
||||
name = "Chemical Payload (Gibtonite)"
|
||||
result = /obj/item/bombcore/chemical
|
||||
reqs = list(
|
||||
/obj/item/stock_parts/matter_bin = 1,
|
||||
/obj/item/gibtonite = 1,
|
||||
/obj/item/grenade/chem_grenade = 2,
|
||||
)
|
||||
parts = list(/obj/item/stock_parts/matter_bin = 1, /obj/item/grenade/chem_grenade = 2)
|
||||
time = 5 SECONDS
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/alcohol_burner
|
||||
name = "Burner (Ethanol)"
|
||||
result = /obj/item/burner
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/cup/beaker = 1,
|
||||
/datum/reagent/consumable/ethanol = 15,
|
||||
/obj/item/paper = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/oil_burner
|
||||
name = "Burner (Oil)"
|
||||
result = /obj/item/burner/oil
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/cup/beaker = 1,
|
||||
/datum/reagent/fuel/oil = 15,
|
||||
/obj/item/paper = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/fuel_burner
|
||||
name = "Burner (Fuel)"
|
||||
result = /obj/item/burner/fuel
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/cup/beaker = 1,
|
||||
/datum/reagent/fuel = 15,
|
||||
/obj/item/paper = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/thermometer
|
||||
name = "Thermometer"
|
||||
tool_behaviors = list(TOOL_WELDER)
|
||||
result = /obj/item/thermometer
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/datum/reagent/mercury = 5,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/thermometer_alt
|
||||
name = "Thermometer"
|
||||
result = /obj/item/thermometer/pen
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/datum/reagent/mercury = 5,
|
||||
/obj/item/pen = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/ph_booklet
|
||||
name = "pH booklet"
|
||||
result = /obj/item/ph_booklet
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/datum/reagent/universal_indicator = 5,
|
||||
/obj/item/paper = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/dropper //Maybe make a glass pipette icon?
|
||||
name = "Dropper"
|
||||
result = /obj/item/reagent_containers/dropper
|
||||
tool_behaviors = list(TOOL_WELDER)
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/improvised_chem_heater
|
||||
name = "Improvised chem heater"
|
||||
result = /obj/machinery/space_heater/improvised_chem_heater
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WIRECUTTER)
|
||||
time = 15 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/stack/sheet/glass = 2,
|
||||
/obj/item/stack/sheet/iron = 2,
|
||||
/datum/reagent/water = 50,
|
||||
/obj/item/thermometer = 1,
|
||||
)
|
||||
machinery = list(/obj/machinery/space_heater = CRAFTING_MACHINERY_CONSUME)
|
||||
category = CAT_CHEMISTRY
|
||||
|
||||
/datum/crafting_recipe/improvised_chem_heater/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/stock_parts/cell/cell = locate(/obj/item/stock_parts/cell) in range(1)
|
||||
if(!cell)
|
||||
return
|
||||
var/obj/machinery/space_heater/improvised_chem_heater/heater = result
|
||||
var/turf/turf = get_turf(cell)
|
||||
heater.forceMove(turf)
|
||||
heater.attackby(cell, user) //puts it into the heater
|
||||
|
||||
/datum/crafting_recipe/improvised_coolant
|
||||
name = "Improvised cooling spray"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/extinguisher/crafted
|
||||
time = 10 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/toy/crayon/spraycan = 1,
|
||||
/datum/reagent/water = 20,
|
||||
/datum/reagent/consumable/ice = 10,
|
||||
)
|
||||
category = CAT_CHEMISTRY
|
||||
@@ -0,0 +1,45 @@
|
||||
/datum/crafting_recipe/papersack
|
||||
name = "Paper Sack"
|
||||
result = /obj/item/storage/box/papersack
|
||||
time = 1 SECONDS
|
||||
reqs = list(/obj/item/paper = 5)
|
||||
category = CAT_CONTAINERS
|
||||
|
||||
/datum/crafting_recipe/sillycup
|
||||
name = "Paper Cup"
|
||||
result = /obj/item/reagent_containers/cup/glass/sillycup
|
||||
time = 1 SECONDS
|
||||
reqs = list(/obj/item/paper = 2)
|
||||
category = CAT_CONTAINERS
|
||||
|
||||
/datum/crafting_recipe/boh
|
||||
name = "Bag of Holding"
|
||||
reqs = list(
|
||||
/obj/item/bag_of_holding_inert = 1,
|
||||
/obj/item/assembly/signaler/anomaly/bluespace = 1,
|
||||
)
|
||||
result = /obj/item/storage/backpack/holding
|
||||
category = CAT_CONTAINERS
|
||||
|
||||
/datum/crafting_recipe/underwater_basket
|
||||
name = "Underwater Basket (Bamboo)"
|
||||
reqs = list(/obj/item/stack/sheet/mineral/bamboo = 20)
|
||||
result = /obj/item/storage/basket
|
||||
category = CAT_CONTAINERS
|
||||
additional_req_text = " being underwater, underwater basketweaving mastery"
|
||||
|
||||
/datum/crafting_recipe/underwater_basket/check_requirements(mob/user, list/collected_requirements)
|
||||
. = ..()
|
||||
if(!HAS_TRAIT(user,TRAIT_UNDERWATER_BASKETWEAVING_KNOWLEDGE))
|
||||
return FALSE
|
||||
var/turf/T = get_turf(user)
|
||||
if(istype(T, /turf/open/water))
|
||||
return TRUE
|
||||
var/obj/machinery/shower/S = locate() in T
|
||||
if(S?.actually_on)
|
||||
return TRUE
|
||||
|
||||
//Same but with wheat
|
||||
/datum/crafting_recipe/underwater_basket/wheat
|
||||
name = "Underwater Basket (Wheat)"
|
||||
reqs = list(/obj/item/food/grown/wheat = 50)
|
||||
@@ -0,0 +1,25 @@
|
||||
/datum/crafting_recipe/shutters
|
||||
name = "Shutters"
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/plasteel = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/electronics/airlock = 1,
|
||||
)
|
||||
result = /obj/machinery/door/poddoor/shutters/preopen
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WIRECUTTER, TOOL_WELDER)
|
||||
time = 10 SECONDS
|
||||
category = CAT_DOORS
|
||||
one_per_turf = TRUE
|
||||
|
||||
/datum/crafting_recipe/blast_doors
|
||||
name = "Blast Door"
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/plasteel = 15,
|
||||
/obj/item/stack/cable_coil = 15,
|
||||
/obj/item/electronics/airlock = 1,
|
||||
)
|
||||
result = /obj/machinery/door/poddoor/preopen
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WIRECUTTER, TOOL_WELDER)
|
||||
time = 30 SECONDS
|
||||
category = CAT_DOORS
|
||||
one_per_turf = TRUE
|
||||
@@ -0,0 +1,193 @@
|
||||
/datum/crafting_recipe/mothplush
|
||||
name = "Moth Plushie"
|
||||
result = /obj/item/toy/plush/moth
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/animalhide/mothroach = 1,
|
||||
/obj/item/organ/internal/heart = 1,
|
||||
/obj/item/stack/sheet/cloth = 3,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/mixedbouquet
|
||||
name = "Mixed bouquet"
|
||||
result = /obj/item/bouquet
|
||||
reqs = list(
|
||||
/obj/item/food/grown/poppy/lily = 2,
|
||||
/obj/item/food/grown/sunflower = 2,
|
||||
/obj/item/food/grown/poppy/geranium = 2,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/sunbouquet
|
||||
name = "Sunflower bouquet"
|
||||
result = /obj/item/bouquet/sunflower
|
||||
reqs = list(/obj/item/food/grown/sunflower = 6)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/poppybouquet
|
||||
name = "Poppy bouquet"
|
||||
result = /obj/item/bouquet/poppy
|
||||
reqs = list (/obj/item/food/grown/poppy = 6)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/rosebouquet
|
||||
name = "Rose bouquet"
|
||||
result = /obj/item/bouquet/rose
|
||||
reqs = list(/obj/item/food/grown/rose = 6)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/spooky_camera
|
||||
name = "Camera Obscura"
|
||||
result = /obj/item/camera/spooky
|
||||
time = 1.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/camera = 1,
|
||||
/datum/reagent/water/holywater = 10,
|
||||
)
|
||||
parts = list(/obj/item/camera = 1)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
|
||||
/datum/crafting_recipe/skateboard
|
||||
name = "Skateboard"
|
||||
result = /obj/vehicle/ridden/scooter/skateboard/improvised
|
||||
time = 6 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/rods = 10,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/scooter
|
||||
name = "Scooter"
|
||||
result = /obj/vehicle/ridden/scooter
|
||||
time = 6.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/rods = 12,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/headpike
|
||||
name = "Spike Head (Glass Spear)"
|
||||
time = 6.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/spear = 1,
|
||||
/obj/item/bodypart/head = 1,
|
||||
)
|
||||
parts = list(
|
||||
/obj/item/bodypart/head = 1,
|
||||
/obj/item/spear = 1,
|
||||
)
|
||||
blacklist = list(
|
||||
/obj/item/spear/explosive,
|
||||
/obj/item/spear/bonespear,
|
||||
/obj/item/spear/bamboospear,
|
||||
)
|
||||
result = /obj/structure/headpike
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/headpikebone
|
||||
name = "Spike Head (Bone Spear)"
|
||||
time = 6.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/spear/bonespear = 1,
|
||||
/obj/item/bodypart/head = 1,
|
||||
)
|
||||
parts = list(
|
||||
/obj/item/bodypart/head = 1,
|
||||
/obj/item/spear/bonespear = 1,
|
||||
)
|
||||
result = /obj/structure/headpike/bone
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/headpikebamboo
|
||||
name = "Spike Head (Bamboo Spear)"
|
||||
time = 6.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/spear/bamboospear = 1,
|
||||
/obj/item/bodypart/head = 1,
|
||||
)
|
||||
parts = list(
|
||||
/obj/item/bodypart/head = 1,
|
||||
/obj/item/spear/bamboospear = 1,
|
||||
)
|
||||
result = /obj/structure/headpike/bamboo
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/guillotine
|
||||
name = "Guillotine"
|
||||
result = /obj/structure/guillotine
|
||||
time = 15 SECONDS // Building a functioning guillotine takes time
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/plasteel = 3,
|
||||
/obj/item/stack/sheet/mineral/wood = 20,
|
||||
/obj/item/stack/cable_coil = 10,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER)
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/toiletbong
|
||||
name = "Toiletbong"
|
||||
result = /obj/structure/toiletbong
|
||||
time = 5 SECONDS
|
||||
tool_behaviors = list(TOOL_WRENCH)
|
||||
reqs = list(/obj/item/flamethrower = 1)
|
||||
machinery = list(/obj/structure/toilet)
|
||||
additional_req_text = " plasma tank (on flamethrower), toilet"
|
||||
category = CAT_ENTERTAINMENT
|
||||
|
||||
/datum/crafting_recipe/toiletbong/check_requirements(mob/user, list/collected_requirements)
|
||||
if((locate(/obj/structure/toilet) in range(1, user.loc)) == null)
|
||||
return FALSE
|
||||
var/obj/item/flamethrower/flamethrower = collected_requirements[/obj/item/flamethrower][1]
|
||||
if(flamethrower.ptank == null)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/datum/crafting_recipe/toiletbong/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/structure/toiletbong/toiletbong = result
|
||||
var/obj/structure/toilet/toilet = locate(/obj/structure/toilet) in range(1, user.loc)
|
||||
for (var/obj/item/cistern_item in toilet.contents)
|
||||
cistern_item.forceMove(user.loc)
|
||||
to_chat(user, span_warning("[cistern_item] falls out of the toilet!"))
|
||||
toiletbong.dir = toilet.dir
|
||||
toiletbong.loc = toilet.loc
|
||||
qdel(toilet)
|
||||
to_chat(user, span_notice("[user] attaches the flamethrower to the repurposed toilet."))
|
||||
|
||||
/datum/crafting_recipe/punching_bag
|
||||
name = "Punching Bag"
|
||||
result = /obj/structure/punching_bag
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 2,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/pillow = 1,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
time = 10 SECONDS
|
||||
|
||||
/datum/crafting_recipe/stacklifter
|
||||
name = "Chest Press"
|
||||
result = /obj/structure/weightmachine/stacklifter
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/rods = 2,
|
||||
/obj/item/chair = 1,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
time = 10 SECONDS
|
||||
|
||||
/datum/crafting_recipe/weightlifter
|
||||
name = "Bench Press"
|
||||
result = /obj/structure/weightmachine/weightlifter
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/rods = 2,
|
||||
/obj/item/chair = 1,
|
||||
)
|
||||
category = CAT_ENTERTAINMENT
|
||||
time = 10 SECONDS
|
||||
@@ -0,0 +1,190 @@
|
||||
/datum/crafting_recipe/strobeshield
|
||||
name = "Strobe Shield"
|
||||
result = /obj/item/shield/riot/flash
|
||||
reqs = list(
|
||||
/obj/item/wallframe/flasher = 1,
|
||||
/obj/item/assembly/flash/handheld = 1,
|
||||
/obj/item/shield/riot = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/strobeshield/New()
|
||||
..()
|
||||
blacklist |= subtypesof(/obj/item/shield/riot)
|
||||
|
||||
/datum/crafting_recipe/radiogloves
|
||||
name = "Radio Gloves"
|
||||
result = /obj/item/clothing/gloves/radio
|
||||
time = 1.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/clothing/gloves/color/black = 1,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/radio = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WIRECUTTER)
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/radiogloves/New()
|
||||
..()
|
||||
blacklist |= typesof(/obj/item/radio/headset)
|
||||
blacklist |= typesof(/obj/item/radio/intercom)
|
||||
|
||||
/datum/crafting_recipe/wheelchair
|
||||
name = "Wheelchair"
|
||||
result = /obj/vehicle/ridden/wheelchair
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 4,
|
||||
/obj/item/stack/rods = 6,
|
||||
)
|
||||
time = 10 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/motorized_wheelchair
|
||||
name = "Motorized Wheelchair"
|
||||
result = /obj/vehicle/ridden/wheelchair/motorized
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 10,
|
||||
/obj/item/stack/rods = 8,
|
||||
/obj/item/stock_parts/manipulator = 2,
|
||||
/obj/item/stock_parts/capacitor = 1,
|
||||
)
|
||||
parts = list(
|
||||
/obj/item/stock_parts/manipulator = 2,
|
||||
/obj/item/stock_parts/capacitor = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH)
|
||||
time = 20 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/trapdoor_kit
|
||||
name = "Trapdoor Construction Kit"
|
||||
result = /obj/item/trapdoor_kit
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 4,
|
||||
/obj/item/stack/rods = 4,
|
||||
/obj/item/stack/cable_coil = 10,
|
||||
/obj/item/stock_parts/manipulator = 2,
|
||||
/obj/item/assembly/signaler = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER)
|
||||
time = 10 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/trapdoor_remote
|
||||
name = "Trapdoor Remote"
|
||||
result = /obj/item/trapdoor_remote/preloaded // since its useless without its assembly just require an assembly to craft it
|
||||
reqs = list(
|
||||
/obj/item/compact_remote = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/assembly/trapdoor = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
time = 5 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/mousetrap
|
||||
name = "Mouse Trap"
|
||||
result = /obj/item/assembly/mousetrap
|
||||
time = 1 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/cardboard = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/flashlight_eyes
|
||||
name = "Flashlight Eyes"
|
||||
result = /obj/item/organ/internal/eyes/robotic/flashlight
|
||||
time = 10
|
||||
reqs = list(
|
||||
/obj/item/flashlight = 2,
|
||||
/obj/item/restraints/handcuffs/cable = 1
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/extendohand_r
|
||||
name = "Extendo-Hand (Right Arm)"
|
||||
reqs = list(
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
/obj/item/clothing/gloves/boxing = 1,
|
||||
)
|
||||
result = /obj/item/extendohand
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/extendohand_l
|
||||
name = "Extendo-Hand (Left Arm)"
|
||||
reqs = list(
|
||||
/obj/item/bodypart/arm/left/robot = 1,
|
||||
/obj/item/clothing/gloves/boxing = 1,
|
||||
)
|
||||
result = /obj/item/extendohand
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/ore_sensor
|
||||
name = "Ore Sensor"
|
||||
time = 3 SECONDS
|
||||
reqs = list(
|
||||
/datum/reagent/brimdust = 15,
|
||||
/obj/item/stack/sheet/bone = 1,
|
||||
/obj/item/stack/sheet/sinew = 1,
|
||||
)
|
||||
result = /obj/item/ore_sensor
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/pressureplate
|
||||
name = "Pressure Plate"
|
||||
result = /obj/item/pressure_plate
|
||||
time = 0.5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
/obj/item/stack/tile/iron = 1,
|
||||
/obj/item/stack/cable_coil = 2,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/rcl
|
||||
name = "Makeshift Rapid Pipe Cleaner Layer"
|
||||
result = /obj/item/rcl/ghetto
|
||||
time = 4 SECONDS
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH)
|
||||
reqs = list(/obj/item/stack/sheet/iron = 15)
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/datum/crafting_recipe/ghettojetpack
|
||||
name = "Improvised Jetpack"
|
||||
result = /obj/item/tank/jetpack/improvised
|
||||
time = 30
|
||||
reqs = list(
|
||||
/obj/item/tank/internals/oxygen = 2,
|
||||
/obj/item/extinguisher = 1,
|
||||
/obj/item/pipe = 3,
|
||||
/obj/item/stack/cable_coil = MAXCOIL,
|
||||
)
|
||||
category = CAT_EQUIPMENT
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER)
|
||||
|
||||
/datum/crafting_recipe/gripperoffbrand
|
||||
name = "Improvised Gripper Gloves"
|
||||
reqs = list(
|
||||
/obj/item/clothing/gloves/fingerless = 1,
|
||||
/obj/item/stack/sticky_tape = 1,
|
||||
)
|
||||
result = /obj/item/clothing/gloves/tackler/offbrand
|
||||
category = CAT_EQUIPMENT
|
||||
|
||||
/**
|
||||
* Recipe used for upgrading fake N-spect scanners to bananium HONK-spect scanners
|
||||
*/
|
||||
/datum/crafting_recipe/clown_scanner_upgrade
|
||||
name = "Bananium HONK-spect scanner"
|
||||
result = /obj/item/inspector/clown/bananium
|
||||
reqs = list(
|
||||
/obj/item/inspector/clown = 1,
|
||||
/obj/item/stack/sticky_tape = 3,
|
||||
/obj/item/stack/sheet/mineral/bananium = 5,
|
||||
) //the chainsaw of prank tools
|
||||
tool_paths = list(/obj/item/bikehorn)
|
||||
time = 40 SECONDS
|
||||
category = CAT_EQUIPMENT
|
||||
@@ -0,0 +1,38 @@
|
||||
/datum/crafting_recipe/curtain
|
||||
name = "Curtains"
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/cloth = 4,
|
||||
/obj/item/stack/rods = 1,
|
||||
)
|
||||
result = /obj/structure/curtain/cloth
|
||||
category = CAT_FURNITURE
|
||||
|
||||
/datum/crafting_recipe/showercurtain
|
||||
name = "Shower Curtains"
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/cloth = 2,
|
||||
/obj/item/stack/sheet/plastic = 2,
|
||||
/obj/item/stack/rods = 1,
|
||||
)
|
||||
result = /obj/structure/curtain
|
||||
category = CAT_FURNITURE
|
||||
|
||||
/datum/crafting_recipe/aquarium
|
||||
name = "Aquarium"
|
||||
result = /obj/structure/aquarium
|
||||
time = 10 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 15,
|
||||
/obj/item/stack/sheet/glass = 10,
|
||||
/obj/item/aquarium_kit = 1,
|
||||
)
|
||||
category = CAT_FURNITURE
|
||||
|
||||
/datum/crafting_recipe/mirror
|
||||
name = "Mirror"
|
||||
result = /obj/item/wallframe/mirror
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/glass = 5,
|
||||
/obj/item/stack/sheet/mineral/silver = 2,
|
||||
)
|
||||
category = CAT_FURNITURE
|
||||
@@ -0,0 +1,132 @@
|
||||
/datum/crafting_recipe/stunprod
|
||||
name = "Stunprod"
|
||||
result = /obj/item/melee/baton/security/cattleprod
|
||||
reqs = list(
|
||||
/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/teleprod
|
||||
name = "Teleprod"
|
||||
result = /obj/item/melee/baton/security/cattleprod/teleprod
|
||||
reqs = list(
|
||||
/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/stack/ore/bluespace_crystal = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/tailclub
|
||||
name = "Tail Club"
|
||||
result = /obj/item/tailclub
|
||||
reqs = list(
|
||||
/obj/item/organ/external/tail/lizard = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
)
|
||||
blacklist = list(/obj/item/organ/external/tail/lizard/fake)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/tailwhip
|
||||
name = "Liz O' Nine Tails"
|
||||
result = /obj/item/melee/chainofcommand/tailwhip
|
||||
reqs = list(
|
||||
/obj/item/organ/external/tail/lizard = 1,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
)
|
||||
blacklist = list(/obj/item/organ/external/tail/lizard/fake)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/catwhip
|
||||
name = "Cat O' Nine Tails"
|
||||
result = /obj/item/melee/chainofcommand/tailwhip/kitty
|
||||
reqs = list(
|
||||
/obj/item/organ/external/tail/cat = 1,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/chainsaw
|
||||
name = "Chainsaw"
|
||||
result = /obj/item/chainsaw
|
||||
reqs = list(
|
||||
/obj/item/circular_saw = 1,
|
||||
/obj/item/stack/cable_coil = 3,
|
||||
/obj/item/stack/sheet/plasteel = 5,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/spear
|
||||
name = "Spear"
|
||||
result = /obj/item/spear
|
||||
reqs = list(
|
||||
/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/shard = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
)
|
||||
parts = list(/obj/item/shard = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/toysword
|
||||
name = "Toy Sword"
|
||||
reqs = list(
|
||||
/obj/item/light/bulb = 1,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/stack/sheet/plastic = 4,
|
||||
)
|
||||
result = /obj/item/toy/sword
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/bonedagger
|
||||
name = "Bone Dagger"
|
||||
result = /obj/item/knife/combat/bone
|
||||
time = 2 SECONDS
|
||||
reqs = list(/obj/item/stack/sheet/bone = 2)
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/bonespear
|
||||
name = "Bone Spear"
|
||||
result = /obj/item/spear/bonespear
|
||||
time = 3 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 4,
|
||||
/obj/item/stack/sheet/sinew = 1,
|
||||
)
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/boneaxe
|
||||
name = "Bone Axe"
|
||||
result = /obj/item/fireaxe/boneaxe
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 6,
|
||||
/obj/item/stack/sheet/sinew = 3,
|
||||
)
|
||||
category = CAT_WEAPON_MELEE
|
||||
|
||||
/datum/crafting_recipe/house_edge
|
||||
name = "House Edge"
|
||||
result = /obj/item/house_edge
|
||||
always_available = FALSE
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_SCREWDRIVER, TOOL_WELDER)
|
||||
reqs = list(
|
||||
/obj/item/v8_engine = 1,
|
||||
/obj/item/weaponcrafting/receiver = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/stack/sheet/iron = 2,
|
||||
/obj/item/knife = 1,
|
||||
/obj/item/weldingtool = 1,
|
||||
/obj/item/roulette_wheel_beacon = 1,
|
||||
)
|
||||
time = 10 SECONDS
|
||||
category = CAT_WEAPON_MELEE
|
||||
@@ -0,0 +1,25 @@
|
||||
/datum/crafting_recipe/naturalpaper
|
||||
name = "Hand-Pressed Paper"
|
||||
time = 3 SECONDS
|
||||
reqs = list(/datum/reagent/water = 50, /obj/item/stack/sheet/mineral/wood = 1)
|
||||
tool_paths = list(/obj/item/hatchet)
|
||||
result = /obj/item/paper_bin/bundlenatural
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/skeleton_key
|
||||
name = "Skeleton Key"
|
||||
time = 3 SECONDS
|
||||
reqs = list(/obj/item/stack/sheet/bone = 5)
|
||||
result = /obj/item/skeleton_key
|
||||
always_available = FALSE
|
||||
category = CAT_MISC
|
||||
|
||||
/datum/crafting_recipe/coffee_cartridge
|
||||
name = "Bootleg Coffee Cartridge"
|
||||
result = /obj/item/coffee_cartridge/bootleg
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/blank_coffee_cartridge = 1,
|
||||
/datum/reagent/toxin/coffeepowder = 10,
|
||||
)
|
||||
category = CAT_MISC
|
||||
@@ -0,0 +1,255 @@
|
||||
/datum/crafting_recipe/bola
|
||||
name = "Bola"
|
||||
result = /obj/item/restraints/legcuffs/bola
|
||||
reqs = list(
|
||||
/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/sheet/iron = 6,
|
||||
)
|
||||
time = 2 SECONDS //faster than crafting them by hand!
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/gonbola
|
||||
name = "Gonbola"
|
||||
result = /obj/item/restraints/legcuffs/bola/gonbola
|
||||
reqs = list(
|
||||
/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/stack/sheet/iron = 6,
|
||||
/obj/item/stack/sheet/animalhide/gondola = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/reciever
|
||||
name = "Modular Rifle Reciever"
|
||||
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_SAW)
|
||||
result = /obj/item/weaponcrafting/receiver
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 5,
|
||||
/obj/item/stack/sticky_tape = 1,
|
||||
/obj/item/screwdriver = 1,
|
||||
/obj/item/assembly/mousetrap = 1,
|
||||
)
|
||||
time = 10 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/riflestock
|
||||
name = "Wooden Rifle Stock"
|
||||
tool_paths = list(/obj/item/hatchet)
|
||||
result = /obj/item/weaponcrafting/stock
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/mineral/wood = 8,
|
||||
/obj/item/stack/sticky_tape = 1,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/advancedegun
|
||||
name = "Advanced Energy Gun"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/e_gun/nuclear
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/e_gun = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/nuclear = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/advancedegun/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/e_gun)
|
||||
|
||||
/datum/crafting_recipe/tempgun
|
||||
name = "Temperature Gun"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/temperature
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/e_gun = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/temperature = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/tempgun/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/e_gun)
|
||||
|
||||
/datum/crafting_recipe/beam_rifle
|
||||
name = "Particle Acceleration Rifle"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/beam_rifle
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/e_gun = 1,
|
||||
/obj/item/assembly/signaler/anomaly/flux = 1,
|
||||
/obj/item/assembly/signaler/anomaly/grav = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/beam_rifle = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/beam_rifle/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/e_gun)
|
||||
|
||||
/datum/crafting_recipe/ebow
|
||||
name = "Energy Crossbow"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/recharge/ebow/large
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/recharge/kinetic_accelerator = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/ebow = 1,
|
||||
/datum/reagent/uranium/radium = 15,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/xraylaser
|
||||
name = "X-ray Laser Gun"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/xray
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/laser = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/xray = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/xraylaser/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/laser)
|
||||
|
||||
/datum/crafting_recipe/hellgun
|
||||
name = "Hellfire Laser Gun"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/laser/hellgun
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/laser = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/hellgun = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/hellgun/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/laser)
|
||||
|
||||
/datum/crafting_recipe/ioncarbine
|
||||
name = "Ion Carbine"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/ionrifle/carbine
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/laser = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/ion = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/ioncarbine/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/laser)
|
||||
|
||||
/datum/crafting_recipe/decloner
|
||||
name = "Biological Demolecularisor"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/decloner
|
||||
reqs = list(
|
||||
/obj/item/gun/energy/laser = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/decloner = 1,
|
||||
/datum/reagent/baldium = 30,
|
||||
/datum/reagent/toxin/mutagen = 4,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/decloner/New()
|
||||
..()
|
||||
blacklist += subtypesof(/obj/item/gun/energy/laser)
|
||||
|
||||
/datum/crafting_recipe/teslacannon
|
||||
name = "Tesla Cannon"
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_WIRECUTTER)
|
||||
result = /obj/item/gun/energy/tesla_cannon
|
||||
reqs = list(
|
||||
/obj/item/assembly/signaler/anomaly/flux = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/weaponcrafting/gunkit/tesla = 1,
|
||||
)
|
||||
time = 20 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/improvised_pneumatic_cannon //Pretty easy to obtain but
|
||||
name = "Pneumatic Cannon"
|
||||
result = /obj/item/pneumatic_cannon/ghetto
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_WRENCH)
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 4,
|
||||
/obj/item/stack/package_wrap = 8,
|
||||
/obj/item/pipe/quaternary = 2,
|
||||
)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/flamethrower
|
||||
name = "Flamethrower"
|
||||
result = /obj/item/flamethrower
|
||||
reqs = list(
|
||||
/obj/item/weldingtool = 1,
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/stack/rods = 1,
|
||||
)
|
||||
parts = list(
|
||||
/obj/item/assembly/igniter = 1,
|
||||
/obj/item/weldingtool = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 1 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/pipegun
|
||||
name = "Pipegun"
|
||||
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun
|
||||
reqs = list(/obj/item/weaponcrafting/receiver = 1,
|
||||
/obj/item/pipe = 1,
|
||||
/obj/item/weaponcrafting/stock = 1,
|
||||
/obj/item/stack/sticky_tape = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 5 SECONDS
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/pipegun_prime
|
||||
name = "Regal Pipegun"
|
||||
always_available = FALSE
|
||||
result = /obj/item/gun/ballistic/rifle/boltaction/pipegun/prime
|
||||
reqs = list(
|
||||
/obj/item/gun/ballistic/rifle/boltaction/pipegun = 1,
|
||||
/obj/item/food/deadmouse = 1,
|
||||
/datum/reagent/consumable/grey_bull = 20,
|
||||
/obj/item/spear = 1,
|
||||
/obj/item/storage/toolbox = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
tool_paths = list(/obj/item/clothing/gloves/color/yellow, /obj/item/clothing/mask/gas, /obj/item/melee/baton/security/cattleprod)
|
||||
time = 30 SECONDS //contemplate for a bit
|
||||
category = CAT_WEAPON_RANGED
|
||||
|
||||
/datum/crafting_recipe/trash_cannon
|
||||
name = "Trash Cannon"
|
||||
always_available = FALSE
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER)
|
||||
result = /obj/structure/cannon/trash
|
||||
reqs = list(
|
||||
/obj/item/melee/skateboard/improvised = 1,
|
||||
/obj/item/tank/internals/oxygen = 1,
|
||||
/datum/reagent/drug/maint/tar = 15,
|
||||
/obj/item/restraints/handcuffs/cable = 1,
|
||||
/obj/item/storage/toolbox = 1,
|
||||
)
|
||||
category = CAT_WEAPON_RANGED
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,214 @@
|
||||
/datum/crafting_recipe/ed209
|
||||
name = "ED209"
|
||||
result = /mob/living/simple_animal/bot/secbot/ed209
|
||||
reqs = list(
|
||||
/obj/item/robot_suit = 1,
|
||||
/obj/item/clothing/head/helmet = 1,
|
||||
/obj/item/clothing/suit/armor/vest = 1,
|
||||
/obj/item/bodypart/leg/left/robot = 1,
|
||||
/obj/item/bodypart/leg/right/robot = 1,
|
||||
/obj/item/stack/sheet/iron = 1,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/obj/item/gun/energy/disabler = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER)
|
||||
time = 6 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/secbot
|
||||
name = "Secbot"
|
||||
result = /mob/living/simple_animal/bot/secbot
|
||||
reqs = list(
|
||||
/obj/item/assembly/signaler = 1,
|
||||
/obj/item/clothing/head/helmet/sec = 1,
|
||||
/obj/item/melee/baton/security/ = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER)
|
||||
time = 6 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/cleanbot
|
||||
name = "Cleanbot"
|
||||
result = /mob/living/simple_animal/bot/cleanbot
|
||||
reqs = list(
|
||||
/obj/item/reagent_containers/cup/bucket = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
)
|
||||
parts = list(/obj/item/reagent_containers/cup/bucket = 1)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/floorbot
|
||||
name = "Floorbot"
|
||||
result = /mob/living/simple_animal/bot/floorbot
|
||||
reqs = list(
|
||||
/obj/item/storage/toolbox = 1,
|
||||
/obj/item/stack/tile/iron = 10,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/medbot
|
||||
name = "Medbot"
|
||||
result = /mob/living/simple_animal/bot/medbot
|
||||
reqs = list(
|
||||
/obj/item/healthanalyzer = 1,
|
||||
/obj/item/storage/medkit = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
)
|
||||
parts = list(
|
||||
/obj/item/storage/medkit = 1,
|
||||
/obj/item/healthanalyzer = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/medbot/on_craft_completion(mob/user, atom/result)
|
||||
var/mob/living/simple_animal/bot/medbot/bot = result
|
||||
var/obj/item/storage/medkit/medkit = bot.contents[3]
|
||||
bot.medkit_type = medkit
|
||||
bot.healthanalyzer = bot.contents[4]
|
||||
|
||||
if (istype(medkit, /obj/item/storage/medkit/fire))
|
||||
bot.skin = "ointment"
|
||||
else if (istype(medkit, /obj/item/storage/medkit/toxin))
|
||||
bot.skin = "tox"
|
||||
else if (istype(medkit, /obj/item/storage/medkit/o2))
|
||||
bot.skin = "o2"
|
||||
else if (istype(medkit, /obj/item/storage/medkit/brute))
|
||||
bot.skin = "brute"
|
||||
else if (istype(medkit, /obj/item/storage/medkit/advanced))
|
||||
bot.skin = "advanced"
|
||||
|
||||
bot.damagetype_healer = initial(medkit.damagetype_healed) ? initial(medkit.damagetype_healed) : BRUTE
|
||||
bot.update_appearance()
|
||||
|
||||
/datum/crafting_recipe/honkbot
|
||||
name = "Honkbot"
|
||||
result = /mob/living/simple_animal/bot/secbot/honkbot
|
||||
reqs = list(
|
||||
/obj/item/storage/box/clown = 1,
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/bikehorn = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/firebot
|
||||
name = "Firebot"
|
||||
result = /mob/living/simple_animal/bot/firebot
|
||||
reqs = list(
|
||||
/obj/item/extinguisher = 1,
|
||||
/obj/item/bodypart/arm/right/robot = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/clothing/head/utility/hardhat/red = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/vibebot
|
||||
name = "Vibebot"
|
||||
result = /mob/living/simple_animal/bot/vibebot
|
||||
reqs = list(
|
||||
/obj/item/light/bulb = 2,
|
||||
/obj/item/bodypart/head/robot = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
/obj/item/toy/crayon = 1,
|
||||
)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/hygienebot
|
||||
name = "Hygienebot"
|
||||
result = /mob/living/simple_animal/bot/hygienebot
|
||||
reqs = list(
|
||||
/obj/item/bot_assembly/hygienebot = 1,
|
||||
/obj/item/stack/ducts = 1,
|
||||
/obj/item/assembly/prox_sensor = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_WELDER)
|
||||
time = 4 SECONDS
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/vim
|
||||
name = "Vim"
|
||||
result = /obj/vehicle/sealed/car/vim
|
||||
reqs = list(
|
||||
/obj/item/clothing/head/helmet/space/eva = 1,
|
||||
/obj/item/bodypart/leg/left/robot = 1,
|
||||
/obj/item/bodypart/leg/right/robot = 1,
|
||||
/obj/item/flashlight = 1,
|
||||
/obj/item/assembly/voice = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 6 SECONDS //Has a four second do_after when building manually
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/aitater
|
||||
name = "intelliTater"
|
||||
result = /obj/item/aicard/aitater
|
||||
time = 3 SECONDS
|
||||
tool_behaviors = list(TOOL_WIRECUTTER)
|
||||
reqs = list(
|
||||
/obj/item/aicard = 1,
|
||||
/obj/item/food/grown/potato = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
parts = list(/obj/item/aicard = 1)
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/aitater/aispook
|
||||
name = "intelliLantern"
|
||||
result = /obj/item/aicard/aispook
|
||||
reqs = list(
|
||||
/obj/item/aicard = 1,
|
||||
/obj/item/food/grown/pumpkin = 1,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
)
|
||||
|
||||
/datum/crafting_recipe/aitater/on_craft_completion(mob/user, atom/result)
|
||||
var/obj/item/aicard/new_card = result
|
||||
var/obj/item/aicard/base_card = result.contents[1]
|
||||
var/mob/living/silicon/ai = base_card.AI
|
||||
|
||||
if(ai)
|
||||
base_card.AI = null
|
||||
ai.forceMove(new_card)
|
||||
new_card.AI = ai
|
||||
new_card.update_appearance()
|
||||
qdel(base_card)
|
||||
|
||||
/datum/crafting_recipe/mod_core_standard
|
||||
name = "MOD core (Standard)"
|
||||
result = /obj/item/mod/core/standard
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 10 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/stack/rods = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/organ/internal/heart/ethereal = 1,
|
||||
)
|
||||
category = CAT_ROBOT
|
||||
|
||||
/datum/crafting_recipe/mod_core_ethereal
|
||||
name = "MOD core (Ethereal)"
|
||||
result = /obj/item/mod/core/ethereal
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 10 SECONDS
|
||||
reqs = list(
|
||||
/datum/reagent/consumable/liquidelectricity = 5,
|
||||
/obj/item/stack/cable_coil = 5,
|
||||
/obj/item/stack/rods = 2,
|
||||
/obj/item/stack/sheet/glass = 1,
|
||||
/obj/item/reagent_containers/syringe = 1,
|
||||
)
|
||||
category = CAT_ROBOT
|
||||
@@ -0,0 +1,62 @@
|
||||
/datum/crafting_recipe/paperframes
|
||||
name = "Paper Frames"
|
||||
time = 1 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/mineral/wood = 5,
|
||||
/obj/item/paper = 20,
|
||||
)
|
||||
result = /obj/item/stack/sheet/paperframes
|
||||
result_amount = 5
|
||||
category = CAT_STRUCTURE
|
||||
|
||||
/datum/crafting_recipe/rib
|
||||
name = "Colossal Rib"
|
||||
always_available = FALSE
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 10,
|
||||
/datum/reagent/fuel/oil = 5,
|
||||
)
|
||||
result = /obj/structure/statue/bone/rib
|
||||
category = CAT_STRUCTURE
|
||||
|
||||
/datum/crafting_recipe/skull
|
||||
name = "Skull Carving"
|
||||
always_available = FALSE
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 6,
|
||||
/datum/reagent/fuel/oil = 5,
|
||||
)
|
||||
result = /obj/structure/statue/bone/skull
|
||||
category = CAT_STRUCTURE
|
||||
|
||||
/datum/crafting_recipe/halfskull
|
||||
name = "Cracked Skull Carving"
|
||||
always_available = FALSE
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 3,
|
||||
/datum/reagent/fuel/oil = 5,
|
||||
)
|
||||
result = /obj/structure/statue/bone/skull/half
|
||||
category = CAT_STRUCTURE
|
||||
|
||||
/datum/crafting_recipe/firecabinet
|
||||
name = "Fire Axe Cabinet"
|
||||
result = /obj/item/wallframe/fireaxecabinet
|
||||
time = 8 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/plasteel = 5,
|
||||
/obj/item/stack/sheet/glass = 5,
|
||||
/obj/item/stack/cable_coil = 10,
|
||||
)
|
||||
category = CAT_STRUCTURE
|
||||
|
||||
/datum/crafting_recipe/mechcabinet
|
||||
name = "Mech Removal Cabinet"
|
||||
result = /obj/item/wallframe/fireaxecabinet/mechremoval
|
||||
time = 8 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/plasteel = 5,
|
||||
/obj/item/stack/sheet/glass = 5,
|
||||
/obj/item/stack/cable_coil = 10,
|
||||
)
|
||||
category = CAT_STRUCTURE
|
||||
@@ -138,3 +138,169 @@
|
||||
time = 2 SECONDS
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/lizardhat
|
||||
name = "Lizard Cloche Hat"
|
||||
result = /obj/item/clothing/head/costume/lizard
|
||||
time = 1 SECONDS
|
||||
reqs = list(/obj/item/organ/external/tail/lizard = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/lizardhat_alternate
|
||||
name = "Lizard Cloche Hat"
|
||||
result = /obj/item/clothing/head/costume/lizard
|
||||
time = 1 SECONDS
|
||||
reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/kittyears
|
||||
name = "Kitty Ears"
|
||||
result = /obj/item/clothing/head/costume/kitty/genuine
|
||||
time = 1 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/organ/external/tail/cat = 1,
|
||||
/obj/item/organ/internal/ears/cat = 1,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/bonearmor
|
||||
name = "Bone Armor"
|
||||
result = /obj/item/clothing/suit/armor/bone
|
||||
time = 3 SECONDS
|
||||
reqs = list(/obj/item/stack/sheet/bone = 6)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/bonetalisman
|
||||
name = "Bone Talisman"
|
||||
result = /obj/item/clothing/accessory/talisman
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 2,
|
||||
/obj/item/stack/sheet/sinew = 1,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/bonecodpiece
|
||||
name = "Skull Codpiece"
|
||||
result = /obj/item/clothing/accessory/skullcodpiece
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 2,
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide = 1,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/skilt
|
||||
name = "Sinew Kilt"
|
||||
result = /obj/item/clothing/accessory/skilt
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 1,
|
||||
/obj/item/stack/sheet/sinew = 2,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/bracers
|
||||
name = "Bone Bracers"
|
||||
result = /obj/item/clothing/gloves/bracer
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 2,
|
||||
/obj/item/stack/sheet/sinew = 1,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/skullhelm
|
||||
name = "Skull Helmet"
|
||||
result = /obj/item/clothing/head/helmet/skull
|
||||
time = 3 SECONDS
|
||||
reqs = list(/obj/item/stack/sheet/bone = 4)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/goliathcloak
|
||||
name = "Goliath Cloak"
|
||||
result = /obj/item/clothing/suit/hooded/cloak/goliath
|
||||
time = 5 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/leather = 2,
|
||||
/obj/item/stack/sheet/sinew = 2,
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide = 2,
|
||||
) //it takes 4 goliaths to make 1 cloak if the plates are skinned
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/drakecloak
|
||||
name = "Ash Drake Armour"
|
||||
result = /obj/item/clothing/suit/hooded/cloak/drake
|
||||
time = 6 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 10,
|
||||
/obj/item/stack/sheet/sinew = 2,
|
||||
/obj/item/stack/sheet/animalhide/ashdrake = 5,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/godslayer
|
||||
name = "Godslayer Armour"
|
||||
result = /obj/item/clothing/suit/hooded/cloak/godslayer
|
||||
time = 6 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/ice_energy_crystal = 1,
|
||||
/obj/item/wendigo_skull = 1,
|
||||
/obj/item/clockwork_alloy = 1,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/mummy
|
||||
name = "Mummification Bandages (Mask)"
|
||||
result = /obj/item/clothing/mask/mummy
|
||||
time = 1 SECONDS
|
||||
tool_paths = list(/obj/item/nullrod/egyptian)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 2)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/mummy/body
|
||||
name = "Mummification Bandages (Body)"
|
||||
result = /obj/item/clothing/under/costume/mummy
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 5)
|
||||
|
||||
/datum/crafting_recipe/chaplain_hood
|
||||
name = "Follower Hoodie"
|
||||
result = /obj/item/clothing/suit/hooded/chaplain_hoodie
|
||||
time = 1 SECONDS
|
||||
tool_paths = list(
|
||||
/obj/item/clothing/suit/hooded/chaplain_hoodie,
|
||||
/obj/item/storage/book/bible,
|
||||
)
|
||||
reqs = list(/obj/item/stack/sheet/cloth = 4)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/flower_garland
|
||||
name = "Flower Garland"
|
||||
result = /obj/item/clothing/head/costume/garland
|
||||
time = 1 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/food/grown/poppy = 4,
|
||||
/obj/item/food/grown/harebell = 4,
|
||||
/obj/item/food/grown/rose = 4,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/pillow_suit
|
||||
name = "pillow suit"
|
||||
result = /obj/item/clothing/suit/pillow_suit
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sticky_tape = 10,
|
||||
/obj/item/pillow = 5,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
/datum/crafting_recipe/pillow_hood
|
||||
name = "pillow hood"
|
||||
result = /obj/item/clothing/head/pillow_hood
|
||||
tool_behaviors = list(TOOL_WIRECUTTER, TOOL_KNIFE)
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sticky_tape = 5,
|
||||
/obj/item/pillow = 1,
|
||||
)
|
||||
category = CAT_CLOTHING
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/datum/crafting_recipe/blackcarpet
|
||||
name = "Black Carpet"
|
||||
reqs = list(
|
||||
/obj/item/stack/tile/carpet = 50,
|
||||
/obj/item/toy/crayon/black = 1,
|
||||
)
|
||||
result = /obj/item/stack/tile/carpet/black
|
||||
result_amount = 50
|
||||
category = CAT_TILES
|
||||
@@ -0,0 +1,48 @@
|
||||
/datum/crafting_recipe/gold_horn
|
||||
name = "Golden Bike Horn"
|
||||
result = /obj/item/bikehorn/golden
|
||||
time = 2 SECONDS
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/mineral/bananium = 5,
|
||||
/obj/item/bikehorn = 1,
|
||||
)
|
||||
category = CAT_TOOLS
|
||||
|
||||
/datum/crafting_recipe/bonfire
|
||||
name = "Bonfire"
|
||||
time = 6 SECONDS
|
||||
reqs = list(/obj/item/grown/log = 5)
|
||||
parts = list(/obj/item/grown/log = 5)
|
||||
blacklist = list(/obj/item/grown/log/steel)
|
||||
result = /obj/structure/bonfire
|
||||
category = CAT_TOOLS
|
||||
|
||||
/datum/crafting_recipe/boneshovel
|
||||
name = "Serrated Bone Shovel"
|
||||
always_available = FALSE
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 4,
|
||||
/datum/reagent/fuel/oil = 5,
|
||||
/obj/item/shovel/spade = 1,
|
||||
)
|
||||
result = /obj/item/shovel/serrated
|
||||
category = CAT_TOOLS
|
||||
|
||||
/datum/crafting_recipe/lasso
|
||||
name = "Bone Lasso"
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/bone = 1,
|
||||
/obj/item/stack/sheet/sinew = 5,
|
||||
)
|
||||
result = /obj/item/key/lasso
|
||||
category = CAT_TOOLS
|
||||
|
||||
/datum/crafting_recipe/ipickaxe
|
||||
name = "Improvised Pickaxe"
|
||||
reqs = list(
|
||||
/obj/item/crowbar = 1,
|
||||
/obj/item/knife = 1,
|
||||
/obj/item/stack/sticky_tape = 1,
|
||||
)
|
||||
result = /obj/item/pickaxe/improvised
|
||||
category = CAT_TOOLS
|
||||
@@ -0,0 +1,95 @@
|
||||
/datum/crafting_recipe/meteorslug
|
||||
name = "Meteorslug Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/meteorslug
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/obj/item/rcd_ammo = 1,
|
||||
/datum/reagent/gunpowder = 10,
|
||||
/datum/reagent/consumable/ethanol/rum = 10,
|
||||
/obj/item/stock_parts/manipulator = 2,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/pulseslug
|
||||
name = "Pulse Slug Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/pulseslug
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/obj/item/stock_parts/capacitor/adv = 2,
|
||||
/obj/item/stock_parts/micro_laser/ultra = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/dragonsbreath
|
||||
name = "Dragonsbreath Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/dragonsbreath
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/datum/reagent/phosphorus = 5,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/frag12
|
||||
name = "FRAG-12 Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/frag12
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/datum/reagent/glycerol = 5,
|
||||
/datum/reagent/toxin/acid = 5,
|
||||
/datum/reagent/toxin/acid/fluacid = 5,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/ionslug
|
||||
name = "Ion Scatter Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/ion
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/obj/item/stock_parts/micro_laser/ultra = 1,
|
||||
/obj/item/stock_parts/subspace/crystal = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/improvisedslug
|
||||
name = "Improvised Shotgun Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/improvised
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet/iron = 2,
|
||||
/obj/item/stack/cable_coil = 1,
|
||||
/datum/reagent/fuel = 10,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 1.2 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/laserslug
|
||||
name = "Scatter Laser Shell"
|
||||
result = /obj/item/ammo_casing/shotgun/laserslug
|
||||
reqs = list(
|
||||
/obj/item/ammo_casing/shotgun/techshell = 1,
|
||||
/obj/item/stock_parts/capacitor/adv = 1,
|
||||
/obj/item/stock_parts/micro_laser/high = 1,
|
||||
)
|
||||
tool_behaviors = list(TOOL_SCREWDRIVER)
|
||||
time = 0.5 SECONDS
|
||||
category = CAT_WEAPON_AMMO
|
||||
|
||||
/datum/crafting_recipe/trashball
|
||||
name = "Trashball"
|
||||
always_available = FALSE
|
||||
result = /obj/item/stack/cannonball/trashball
|
||||
reqs = list(
|
||||
/obj/item/stack/sheet = 5,
|
||||
/datum/reagent/consumable/space_cola = 10,
|
||||
)
|
||||
category = CAT_WEAPON_AMMO
|
||||
@@ -18,6 +18,8 @@
|
||||
var/item_path = /obj/item/fireaxe
|
||||
/// Overlay we get when the item is inside us.
|
||||
var/item_overlay = "axe"
|
||||
/// Whether we should populate our own contents on Initialize()
|
||||
var/populate_contents = TRUE
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
|
||||
|
||||
@@ -31,7 +33,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
|
||||
|
||||
/obj/structure/fireaxecabinet/Initialize(mapload)
|
||||
. = ..()
|
||||
held_item = new item_path(src)
|
||||
if(populate_contents)
|
||||
held_item = new item_path(src)
|
||||
update_appearance()
|
||||
|
||||
/obj/structure/fireaxecabinet/Destroy()
|
||||
@@ -115,7 +118,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(held_item && loc)
|
||||
held_item.forceMove(loc)
|
||||
new /obj/item/stack/sheet/iron(loc, 2)
|
||||
new /obj/item/wallframe/fireaxecabinet(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/fireaxecabinet/blob_act(obj/structure/blob/B)
|
||||
@@ -190,6 +193,17 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
|
||||
update_appearance()
|
||||
return
|
||||
|
||||
/obj/structure/fireaxecabinet/empty
|
||||
populate_contents = FALSE
|
||||
|
||||
/obj/item/wallframe/fireaxecabinet
|
||||
name = "fire axe cabinet"
|
||||
desc = "Home to a window's greatest nightmare. Apply to wall to use."
|
||||
icon = 'icons/obj/wallmounts.dmi'
|
||||
icon_state = "fireaxe"
|
||||
result_path = /obj/structure/fireaxecabinet/empty
|
||||
pixel_shift = 32
|
||||
|
||||
/obj/structure/fireaxecabinet/mechremoval
|
||||
name = "mech removal tool cabinet"
|
||||
desc = "There is a small label that reads \"For Emergency use only\" along with details for safe use of the tool. As if."
|
||||
@@ -198,3 +212,19 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet, 32)
|
||||
item_overlay = "crowbar"
|
||||
|
||||
MAPPING_DIRECTIONAL_HELPERS(/obj/structure/fireaxecabinet/mechremoval, 32)
|
||||
|
||||
/obj/structure/fireaxecabinet/mechremoval/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(held_item && loc)
|
||||
held_item.forceMove(loc)
|
||||
new /obj/item/wallframe/fireaxecabinet/mechremoval(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/fireaxecabinet/mechremoval/empty
|
||||
populate_contents = FALSE
|
||||
|
||||
/obj/item/wallframe/fireaxecabinet/mechremoval
|
||||
name = "mech removal tool cabinet"
|
||||
desc = "Home to a very special crowbar. Apply to wall to use."
|
||||
icon_state = "mechremoval"
|
||||
result_path = /obj/structure/fireaxecabinet/mechremoval/empty
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
//wip wip wup
|
||||
/obj/structure/mirror
|
||||
name = "mirror"
|
||||
desc = "Mirror mirror on the wall, who's the most robust of them all?"
|
||||
@@ -91,7 +90,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
/obj/structure/mirror/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(!disassembled)
|
||||
new /obj/item/shard( src.loc )
|
||||
new /obj/item/shard(loc)
|
||||
else
|
||||
new /obj/item/wallframe/mirror(loc)
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/mirror/welder_act(mob/living/user, obj/item/I)
|
||||
@@ -105,10 +106,10 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
if(!I.tool_start_check(user, amount=0))
|
||||
return TRUE
|
||||
|
||||
to_chat(user, span_notice("You begin repairing [src]..."))
|
||||
if(I.use_tool(src, user, 10, volume=50))
|
||||
to_chat(user, span_notice("You repair [src]."))
|
||||
broken = 0
|
||||
balloon_alert(user, "repairing...")
|
||||
if(I.use_tool(src, user, 10, volume = 50))
|
||||
balloon_alert(user, "repaired")
|
||||
broken = FALSE
|
||||
icon_state = initial(icon_state)
|
||||
desc = initial(desc)
|
||||
|
||||
@@ -121,6 +122,17 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/mirror, 28)
|
||||
if(BURN)
|
||||
playsound(src, 'sound/effects/hit_on_shattered_glass.ogg', 70, TRUE)
|
||||
|
||||
/obj/item/wallframe/mirror
|
||||
name = "mirror"
|
||||
desc = "An unmounted mirror. Attach it to a wall to use."
|
||||
icon = 'icons/obj/watercloset.dmi'
|
||||
icon_state = "mirror"
|
||||
custom_materials = list(
|
||||
/datum/material/glass = MINERAL_MATERIAL_AMOUNT,
|
||||
/datum/material/silver = MINERAL_MATERIAL_AMOUNT,
|
||||
)
|
||||
result_path = /obj/structure/mirror
|
||||
pixel_shift = 28
|
||||
|
||||
/obj/structure/mirror/magic
|
||||
name = "magic mirror"
|
||||
|
||||
+16
-1
@@ -987,10 +987,25 @@
|
||||
#include "code\datums\components\wet_floor.dm"
|
||||
#include "code\datums\components\container_item\container_item.dm"
|
||||
#include "code\datums\components\container_item\tank_holder.dm"
|
||||
#include "code\datums\components\crafting\_recipes.dm"
|
||||
#include "code\datums\components\crafting\atmospheric.dm"
|
||||
#include "code\datums\components\crafting\chemistry.dm"
|
||||
#include "code\datums\components\crafting\containers.dm"
|
||||
#include "code\datums\components\crafting\crafting.dm"
|
||||
#include "code\datums\components\crafting\doors.dm"
|
||||
#include "code\datums\components\crafting\entertainment.dm"
|
||||
#include "code\datums\components\crafting\equipment.dm"
|
||||
#include "code\datums\components\crafting\furniture.dm"
|
||||
#include "code\datums\components\crafting\guncrafting.dm"
|
||||
#include "code\datums\components\crafting\recipes.dm"
|
||||
#include "code\datums\components\crafting\melee_weapon.dm"
|
||||
#include "code\datums\components\crafting\misc.dm"
|
||||
#include "code\datums\components\crafting\ranged_weapon.dm"
|
||||
#include "code\datums\components\crafting\robot.dm"
|
||||
#include "code\datums\components\crafting\structures.dm"
|
||||
#include "code\datums\components\crafting\tailoring.dm"
|
||||
#include "code\datums\components\crafting\tiles.dm"
|
||||
#include "code\datums\components\crafting\tools.dm"
|
||||
#include "code\datums\components\crafting\weapon_ammo.dm"
|
||||
#include "code\datums\components\fantasy\_fantasy.dm"
|
||||
#include "code\datums\components\fantasy\affix.dm"
|
||||
#include "code\datums\components\fantasy\prefixes.dm"
|
||||
|
||||
Reference in New Issue
Block a user