Files
Bubberstation/code/datums/components/crafting/recipes.dm
SkyratBot 12ba73b7e2 [MIRROR] fix message spam for manual pipe crafting [MDB IGNORE] (#9637)
* fix message spam for atmos construction (#62796)

About The Pull Request

partial fix to #62783
the check was never meant to have feedback messages added in it because it runs every UI tick. Added the message as additional requirement text.
GBP no update please
Why It's Good For The Game

fix
Changelog

cl
fix: fix message spam for manual pipe crafting
/cl

* fix message spam for manual pipe crafting

Co-authored-by: Ghilker <42839747+Ghilker@users.noreply.github.com>
2021-11-23 04:09:45 +00:00

1665 lines
51 KiB
Plaintext

///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
var/name = "" //in-game display name
var/list/reqs = list() //type paths of items consumed associated with how many are needed
var/list/blacklist = list() //type paths of items explicitly not allowed as an ingredient
var/result //type path of item resulting from this craft
/// 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
var/time = 30 //time in deciseconds
var/list/parts = list() //type paths of items that will be placed in the result
var/list/chem_catalysts = list() //like tool_behaviors but for reagents
var/category = CAT_NONE //where it shows up in the crafting UI
var/subcategory = CAT_NONE
var/always_available = TRUE //Set to FALSE if it needs to be learned first.
/// 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
/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)
/**
* 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
/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/food/drinks/soda_cans = 1)
parts = list(/obj/item/reagent_containers/food/drinks/soda_cans = 1)
time = 15
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/lance
name = "Explosive Lance (Grenade)"
result = /obj/item/spear/explosive
reqs = list(/obj/item/spear = 1,
/obj/item/grenade = 1)
blacklist = list(/obj/item/spear/bonespear)
parts = list(/obj/item/spear = 1,
/obj/item/grenade = 1)
time = 15
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/strobeshield/New()
..()
blacklist |= subtypesof(/obj/item/shield/riot/)
/datum/crafting_recipe/molotov
name = "Molotov"
result = /obj/item/reagent_containers/food/drinks/bottle/molotov
reqs = list(/obj/item/reagent_containers/glass/rag = 1,
/obj/item/reagent_containers/food/drinks/bottle = 1)
parts = list(/obj/item/reagent_containers/food/drinks/bottle = 1)
time = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 20//15 faster than crafting them by hand!
category= CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 40
category= CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/tailclub
name = "Tail Club"
result = /obj/item/tailclub
reqs = list(/obj/item/organ/tail/lizard = 1,
/obj/item/stack/sheet/iron = 1)
blacklist = list(/obj/item/organ/tail/lizard/fake)
time = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/tailwhip
name = "Liz O' Nine Tails"
result = /obj/item/melee/chainofcommand/tailwhip
reqs = list(/obj/item/organ/tail/lizard = 1,
/obj/item/stack/cable_coil = 1)
blacklist = list(/obj/item/organ/tail/lizard/fake)
time = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/catwhip
name = "Cat O' Nine Tails"
result = /obj/item/melee/chainofcommand/tailwhip/kitty
reqs = list(/obj/item/organ/tail/cat = 1,
/obj/item/stack/cable_coil = 1)
time = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 100
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 50
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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/kinetic_accelerator/crossbow/large
reqs = list(/obj/item/gun/energy/kinetic_accelerator = 1,
/obj/item/stack/cable_coil = 5,
/obj/item/weaponcrafting/gunkit/ebow = 1,
/datum/reagent/uranium/radium = 15)
time = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/ebow/New()
..()
blacklist += subtypesof(/obj/item/gun/energy/kinetic_accelerator)
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 40)
time = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 200
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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/l_leg/robot = 1,
/obj/item/bodypart/r_leg/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 = 60
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/r_arm/robot = 1)
tool_behaviors = list(TOOL_WELDER)
time = 60
category = CAT_ROBOT
/datum/crafting_recipe/cleanbot
name = "Cleanbot"
result = /mob/living/simple_animal/bot/cleanbot
reqs = list(/obj/item/reagent_containers/glass/bucket = 1,
/obj/item/assembly/prox_sensor = 1,
/obj/item/bodypart/r_arm/robot = 1)
time = 40
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/r_arm/robot = 1)
time = 40
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/firstaid = 1,
/obj/item/assembly/prox_sensor = 1,
/obj/item/bodypart/r_arm/robot = 1)
time = 40
category = CAT_ROBOT
/datum/crafting_recipe/honkbot
name = "Honkbot"
result = /mob/living/simple_animal/bot/honkbot
reqs = list(/obj/item/storage/box/clown = 1,
/obj/item/bodypart/r_arm/robot = 1,
/obj/item/assembly/prox_sensor = 1,
/obj/item/bikehorn/ = 1)
time = 40
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/r_arm/robot = 1,
/obj/item/assembly/prox_sensor = 1,
/obj/item/clothing/head/hardhat/red = 1)
time = 40
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 = 40
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 = 40
category = CAT_ROBOT
/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 = 50
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 10
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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,
/obj/item/stock_parts/manipulator = 2)
tool_behaviors = list(TOOL_SCREWDRIVER)
time = 5
category = CAT_WEAPONRY
subcategory = CAT_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 = 5
category = CAT_WEAPONRY
subcategory = CAT_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 = 5
category = CAT_WEAPONRY
subcategory = CAT_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 = 5
category = CAT_WEAPONRY
subcategory = CAT_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 = 5
category = CAT_WEAPONRY
subcategory = CAT_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 = 12
category = CAT_WEAPONRY
subcategory = CAT_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 = 5
category = CAT_WEAPONRY
subcategory = CAT_AMMO
/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 = 50
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 300 //contemplate for a bit
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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_WEAPONRY
subcategory = CAT_WEAPON
/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_WEAPONRY
subcategory = CAT_AMMO
/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 = 50
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 40
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/lizardhat
name = "Lizard Cloche Hat"
result = /obj/item/clothing/head/lizard
time = 10
reqs = list(/obj/item/organ/tail/lizard = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/lizardhat_alternate
name = "Lizard Cloche Hat"
result = /obj/item/clothing/head/lizard
time = 10
reqs = list(/obj/item/stack/sheet/animalhide/lizard = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/kittyears
name = "Kitty Ears"
result = /obj/item/clothing/head/kitty/genuine
time = 10
reqs = list(/obj/item/organ/tail/cat = 1,
/obj/item/organ/ears/cat = 1)
category = CAT_CLOTHING
/datum/crafting_recipe/radiogloves
name = "Radio Gloves"
result = /obj/item/clothing/gloves/radio
time = 15
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_CLOTHING
/datum/crafting_recipe/mixedbouquet
name = "Mixed bouquet"
result = /obj/item/bouquet
reqs = list(/obj/item/food/grown/poppy/lily =2,
/obj/item/grown/sunflower = 2,
/obj/item/food/grown/poppy/geranium = 2)
category = CAT_MISC
/datum/crafting_recipe/sunbouquet
name = "Sunflower bouquet"
result = /obj/item/bouquet/sunflower
reqs = list(/obj/item/grown/sunflower = 6)
category = CAT_MISC
/datum/crafting_recipe/poppybouquet
name = "Poppy bouquet"
result = /obj/item/bouquet/poppy
reqs = list (/obj/item/food/grown/poppy = 6)
category = CAT_MISC
/datum/crafting_recipe/rosebouquet
name = "Rose bouquet"
result = /obj/item/bouquet/rose
reqs = list(/obj/item/food/grown/rose = 6)
category = CAT_MISC
/datum/crafting_recipe/spooky_camera
name = "Camera Obscura"
result = /obj/item/camera/spooky
time = 15
reqs = list(/obj/item/camera = 1,
/datum/reagent/water/holywater = 10)
parts = list(/obj/item/camera = 1)
category = CAT_MISC
/datum/crafting_recipe/skateboard
name = "Skateboard"
result = /obj/vehicle/ridden/scooter/skateboard/improvised
time = 60
reqs = list(/obj/item/stack/sheet/iron = 5,
/obj/item/stack/rods = 10)
category = CAT_MISC
/datum/crafting_recipe/scooter
name = "Scooter"
result = /obj/vehicle/ridden/scooter
time = 65
reqs = list(/obj/item/stack/sheet/iron = 5,
/obj/item/stack/rods = 12)
category = CAT_MISC
/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 = 100
category = CAT_MISC
/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 = 200
category = CAT_MISC
/datum/crafting_recipe/mousetrap
name = "Mouse Trap"
result = /obj/item/assembly/mousetrap
time = 10
reqs = list(/obj/item/stack/sheet/cardboard = 1,
/obj/item/stack/rods = 1)
category = CAT_MISC
/datum/crafting_recipe/papersack
name = "Paper Sack"
result = /obj/item/storage/box/papersack
time = 10
reqs = list(/obj/item/paper = 5)
category = CAT_MISC
/datum/crafting_recipe/flashlight_eyes
name = "Flashlight Eyes"
result = /obj/item/organ/eyes/robotic/flashlight
time = 10
reqs = list(
/obj/item/flashlight = 2,
/obj/item/restraints/handcuffs/cable = 1
)
category = CAT_MISC
/datum/crafting_recipe/paperframes
name = "Paper Frames"
result = /obj/item/stack/sheet/paperframes/five
time = 10
reqs = list(/obj/item/stack/sheet/mineral/wood = 5, /obj/item/paper = 20)
category = CAT_MISC
/datum/crafting_recipe/naturalpaper
name = "Hand-Pressed Paper"
time = 30
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/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_MISC
/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/fifty
category = CAT_MISC
/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_MISC
/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_MISC
/datum/crafting_recipe/extendohand_r
name = "Extendo-Hand (Right Arm)"
reqs = list(/obj/item/bodypart/r_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1)
result = /obj/item/extendohand
category = CAT_MISC
/datum/crafting_recipe/extendohand_l
name = "Extendo-Hand (Left Arm)"
reqs = list(/obj/item/bodypart/l_arm/robot = 1, /obj/item/clothing/gloves/boxing = 1)
result = /obj/item/extendohand
category = CAT_MISC
/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 = 30
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/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 = 50
category = CAT_WEAPONRY
subcategory = CAT_WEAPON
/datum/crafting_recipe/bonearmor
name = "Bone Armor"
result = /obj/item/clothing/suit/armor/bone
time = 30
reqs = list(/obj/item/stack/sheet/bone = 6)
category = CAT_PRIMAL
/datum/crafting_recipe/bonetalisman
name = "Bone Talisman"
result = /obj/item/clothing/accessory/talisman
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/bonecodpiece
name = "Skull Codpiece"
result = /obj/item/clothing/accessory/skullcodpiece
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/animalhide/goliath_hide = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/skilt
name = "Sinew Kilt"
result = /obj/item/clothing/accessory/skilt
time = 20
reqs = list(/obj/item/stack/sheet/bone = 1,
/obj/item/stack/sheet/sinew = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/bracers
name = "Bone Bracers"
result = /obj/item/clothing/gloves/bracer
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/skullhelm
name = "Skull Helmet"
result = /obj/item/clothing/head/helmet/skull
time = 30
reqs = list(/obj/item/stack/sheet/bone = 4)
category = CAT_PRIMAL
/datum/crafting_recipe/goliathcloak
name = "Goliath Cloak"
result = /obj/item/clothing/suit/hooded/cloak/goliath
time = 50
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_PRIMAL
/datum/crafting_recipe/drakecloak
name = "Ash Drake Armour"
result = /obj/item/clothing/suit/hooded/cloak/drake
time = 60
reqs = list(/obj/item/stack/sheet/bone = 10,
/obj/item/stack/sheet/sinew = 2,
/obj/item/stack/sheet/animalhide/ashdrake = 5)
category = CAT_PRIMAL
/datum/crafting_recipe/godslayer
name = "Godslayer Armour"
result = /obj/item/clothing/suit/hooded/cloak/godslayer
time = 60
reqs = list(/obj/item/ice_energy_crystal = 1, /obj/item/wendigo_skull = 1, /obj/item/clockwork_alloy = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/firebrand
name = "Firebrand"
result = /obj/item/match/firebrand
time = 100 //Long construction time. Making fire is hard work.
reqs = list(/obj/item/stack/sheet/mineral/wood = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/gold_horn
name = "Golden Bike Horn"
result = /obj/item/bikehorn/golden
time = 20
reqs = list(/obj/item/stack/sheet/mineral/bananium = 5,
/obj/item/bikehorn = 1)
category = CAT_MISC
/datum/crafting_recipe/bonedagger
name = "Bone Dagger"
result = /obj/item/knife/combat/bone
time = 20
reqs = list(/obj/item/stack/sheet/bone = 2)
category = CAT_PRIMAL
/datum/crafting_recipe/bonespear
name = "Bone Spear"
result = /obj/item/spear/bonespear
time = 30
reqs = list(/obj/item/stack/sheet/bone = 4,
/obj/item/stack/sheet/sinew = 1)
category = CAT_PRIMAL
/datum/crafting_recipe/boneaxe
name = "Bone Axe"
result = /obj/item/fireaxe/boneaxe
time = 50
reqs = list(/obj/item/stack/sheet/bone = 6,
/obj/item/stack/sheet/sinew = 3)
category = CAT_PRIMAL
/datum/crafting_recipe/bonfire
name = "Bonfire"
time = 60
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_PRIMAL
/datum/crafting_recipe/skeleton_key
name = "Skeleton Key"
time = 30
reqs = list(/obj/item/stack/sheet/bone = 5)
result = /obj/item/skeleton_key
always_available = FALSE
category = CAT_PRIMAL
/datum/crafting_recipe/rake //Category resorting incoming
name = "Rake"
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 5)
result = /obj/item/cultivator/rake
category = CAT_PRIMAL
/datum/crafting_recipe/woodbucket
name = "Wooden Bucket"
time = 30
reqs = list(/obj/item/stack/sheet/mineral/wood = 3)
result = /obj/item/reagent_containers/glass/bucket/wooden
category = CAT_PRIMAL
/datum/crafting_recipe/headpike
name = "Spike Head (Glass Spear)"
time = 65
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)
result = /obj/structure/headpike
category = CAT_PRIMAL
/datum/crafting_recipe/headpikebone
name = "Spike Head (Bone Spear)"
time = 65
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_PRIMAL
/datum/crafting_recipe/pressureplate
name = "Pressure Plate"
result = /obj/item/pressure_plate
time = 5
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_MISC
/datum/crafting_recipe/rcl
name = "Makeshift Rapid Pipe Cleaner Layer"
result = /obj/item/rcl/ghetto
time = 40
tool_behaviors = list(TOOL_WELDER, TOOL_SCREWDRIVER, TOOL_WRENCH)
reqs = list(/obj/item/stack/sheet/iron = 15)
category = CAT_MISC
/datum/crafting_recipe/mummy
name = "Mummification Bandages (Mask)"
result = /obj/item/clothing/mask/mummy
time = 10
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 = 10
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/guillotine
name = "Guillotine"
result = /obj/structure/guillotine
time = 150 // 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_MISC
/datum/crafting_recipe/aitater
name = "intelliTater"
result = /obj/item/aicard/aitater
time = 30
tool_behaviors = list(TOOL_WIRECUTTER)
reqs = list(/obj/item/aicard = 1,
/obj/item/food/grown/potato = 1,
/obj/item/stack/cable_coil = 5)
category = CAT_MISC
/datum/crafting_recipe/aitater/check_requirements(mob/user, list/collected_requirements)
var/obj/item/aicard/aicard = collected_requirements[/obj/item/aicard][1]
if(!aicard.AI)
return TRUE
to_chat(user, span_boldwarning("You can't craft an intelliTater with an AI in the card!"))
return FALSE
/datum/crafting_recipe/aispook
name = "intelliLantern"
result = /obj/item/aicard/aispook
time = 30
tool_behaviors = list(TOOL_WIRECUTTER)
reqs = list(/obj/item/aicard = 1,
/obj/item/food/grown/pumpkin = 1,
/obj/item/stack/cable_coil = 5)
category = CAT_MISC
/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_MISC
tool_behaviors = list(TOOL_WRENCH, TOOL_WELDER, TOOL_WIRECUTTER)
/datum/crafting_recipe/rib
name = "Collosal Rib"
always_available = FALSE
reqs = list(
/obj/item/stack/sheet/bone = 10,
/datum/reagent/fuel/oil = 5,
)
result = /obj/structure/statue/bone/rib
subcategory = CAT_PRIMAL
/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_PRIMAL
/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_PRIMAL
/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_PRIMAL
/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_PRIMAL
/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_CLOTHING
/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_CLOTHING
/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_MISC
// Skryat addition start
/datum/crafting_recipe/doubletank
name = "Double emergency oxygen tank"
reqs = list(
/obj/item/tank/internals/emergency_oxygen/engi = 2,
/obj/item/stack/sticky_tape = 1,
)
result = /obj/item/tank/internals/emergency_oxygen/double/empty
category = CAT_MISC
// Skyrat addition end
/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_MISC
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) || istype(T,/turf/open/floor/plating/beach/water))
return TRUE
var/obj/machinery/shower/S = locate() in T
if(S?.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
)
/datum/crafting_recipe/elder_atmosian_statue
name = "Elder Atmosian Statue"
result = /obj/structure/statue/elder_atmosian
time = 6 SECONDS
reqs = list(/obj/item/stack/sheet/mineral/metal_hydrogen = 20,
/obj/item/stack/sheet/mineral/zaukerite = 15,
/obj/item/stack/sheet/iron = 30,
)
category = CAT_MISC
/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_MISC
/datum/crafting_recipe/shutters
name = "Shutters"
reqs = list(/obj/item/stack/sheet/plasteel = 10,
/obj/item/stack/cable_coil = 10,
/obj/item/electronics/airlock = 1
)
result = /obj/machinery/door/poddoor/shutters/preopen
tool_behaviors = list(TOOL_SCREWDRIVER, TOOL_MULTITOOL, TOOL_WIRECUTTER, TOOL_WELDER)
time = 15 SECONDS
category = CAT_MISC
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_MISC
one_per_turf = TRUE
/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_MISC
/datum/crafting_recipe/alcohol_burner
name = "Alcohol burner"
result = /obj/item/burner
time = 5 SECONDS
reqs = list(/obj/item/reagent_containers/glass/beaker = 1,
/datum/reagent/consumable/ethanol = 15,
/obj/item/paper = 1
)
category = CAT_CHEMISTRY
/datum/crafting_recipe/oil_burner
name = "Oil burner"
result = /obj/item/burner/oil
time = 5 SECONDS
reqs = list(/obj/item/reagent_containers/glass/beaker = 1,
/datum/reagent/fuel/oil = 15,
/obj/item/paper = 1
)
category = CAT_CHEMISTRY
/datum/crafting_recipe/fuel_burner
name = "Fuel burner"
result = /obj/item/burner/fuel
time = 5 SECONDS
reqs = list(/obj/item/reagent_containers/glass/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
/**
* 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_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
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
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
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
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
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
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
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
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
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
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
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
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
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
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()
#undef CRAFTING_MACHINERY_CONSUME
#undef CRAFTING_MACHINERY_USE