From 70581af6132319231d37acc2da12c4b1d0b535c1 Mon Sep 17 00:00:00 2001 From: lolman360 Date: Thu, 22 Aug 2019 14:17:11 +1000 Subject: [PATCH] Epic recipie moment. --- code/game/objects/items/stacks/sheet_types.dm | 658 ++++++++++++++++++ code/game/objects/items/stacks/sheets.dm | 18 + 2 files changed, 676 insertions(+) create mode 100644 code/game/objects/items/stacks/sheet_types.dm create mode 100644 code/game/objects/items/stacks/sheets.dm diff --git a/code/game/objects/items/stacks/sheet_types.dm b/code/game/objects/items/stacks/sheet_types.dm new file mode 100644 index 0000000000..be7e9ba77b --- /dev/null +++ b/code/game/objects/items/stacks/sheet_types.dm @@ -0,0 +1,658 @@ +/* Diffrent misc types of sheets + * Contains: + * Metal + * Plasteel + * Wood + * Cloth + * Plastic + * Cardboard + * Paper Frames + * Runed Metal (cult) + * Brass (clockwork cult) + * Bronze (bake brass) + */ + +/* + * Metal + */ +GLOBAL_LIST_INIT(metal_recipes, list ( \ + new/datum/stack_recipe("stool", /obj/structure/chair/stool, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bar stool", /obj/structure/chair/stool/bar, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("chair", /obj/structure/chair, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bed", /obj/structure/bed, 2, one_per_turf = TRUE, on_floor = TRUE), \ + //CIT CHANGE - adds sofas to metal recipe list + new/datum/stack_recipe_list("sofas", list( \ + new /datum/stack_recipe("sofa (middle)", /obj/structure/chair/sofa, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("sofa (left)", /obj/structure/chair/sofa/left, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("sofa (right)", /obj/structure/chair/sofa/right, one_per_turf = TRUE, on_floor = TRUE), \ + new /datum/stack_recipe("sofa (corner)", /obj/structure/chair/sofa/corner, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ + //END OF CIT CHANGES + null, \ + new/datum/stack_recipe_list("office chairs", list( \ + new/datum/stack_recipe("dark office chair", /obj/structure/chair/office/dark, 5, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("light office chair", /obj/structure/chair/office/light, 5, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ + new/datum/stack_recipe_list("comfy chairs", list( \ + new/datum/stack_recipe("beige comfy chair", /obj/structure/chair/comfy/beige, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("black comfy chair", /obj/structure/chair/comfy/black, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brown comfy chair", /obj/structure/chair/comfy/brown, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("lime comfy chair", /obj/structure/chair/comfy/lime, 2, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("teal comfy chair", /obj/structure/chair/comfy/teal, 2, one_per_turf = TRUE, on_floor = TRUE), \ + )), \ + null, \ + new/datum/stack_recipe("rack parts", /obj/item/rack_parts), \ + new/datum/stack_recipe("closet", /obj/structure/closet, 2, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new/datum/stack_recipe("canister", /obj/machinery/portable_atmospherics/canister, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new/datum/stack_recipe("floor tile", /obj/item/stack/tile/plasteel, 1, 4, 20), \ + new/datum/stack_recipe("metal rod", /obj/item/stack/rods, 1, 2, 60), \ + null, \ + new/datum/stack_recipe("wall girders", /obj/structure/girder, 2, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new/datum/stack_recipe("computer frame", /obj/structure/frame/computer, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("modular console", /obj/machinery/modular_computer/console/buildable/, 10, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("machine frame", /obj/structure/frame/machine, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new /datum/stack_recipe_list("airlock assemblies", list( \ + new /datum/stack_recipe("standard airlock assembly", /obj/structure/door_assembly, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("public airlock assembly", /obj/structure/door_assembly/door_assembly_public, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("command airlock assembly", /obj/structure/door_assembly/door_assembly_com, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("security airlock assembly", /obj/structure/door_assembly/door_assembly_sec, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("engineering airlock assembly", /obj/structure/door_assembly/door_assembly_eng, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("mining airlock assembly", /obj/structure/door_assembly/door_assembly_min, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("atmospherics airlock assembly", /obj/structure/door_assembly/door_assembly_atmo, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("research airlock assembly", /obj/structure/door_assembly/door_assembly_research, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("freezer airlock assembly", /obj/structure/door_assembly/door_assembly_fre, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("science airlock assembly", /obj/structure/door_assembly/door_assembly_science, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("medical airlock assembly", /obj/structure/door_assembly/door_assembly_med, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("virology airlock assembly", /obj/structure/door_assembly/door_assembly_viro, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_mai, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("external airlock assembly", /obj/structure/door_assembly/door_assembly_ext, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("external maintenance airlock assembly", /obj/structure/door_assembly/door_assembly_extmai, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("airtight hatch assembly", /obj/structure/door_assembly/door_assembly_hatch, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + new /datum/stack_recipe("maintenance hatch assembly", /obj/structure/door_assembly/door_assembly_mhatch, 4, time = 50, one_per_turf = 1, on_floor = 1), \ + )), \ + null, \ + new/datum/stack_recipe("firelock frame", /obj/structure/firelock_frame, 3, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("turret frame", /obj/machinery/porta_turret_construct, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("meatspike frame", /obj/structure/kitchenspike_frame, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("reflector frame", /obj/structure/reflector, 5, time = 25, one_per_turf = TRUE, on_floor = TRUE), \ + null, \ + new/datum/stack_recipe("grenade casing", /obj/item/grenade/chem_grenade), \ + new/datum/stack_recipe("light fixture frame", /obj/item/wallframe/light_fixture, 2), \ + new/datum/stack_recipe("small light fixture frame", /obj/item/wallframe/light_fixture/small, 1), \ + null, \ + new/datum/stack_recipe("apc frame", /obj/item/wallframe/apc, 2), \ + new/datum/stack_recipe("air alarm frame", /obj/item/wallframe/airalarm, 2), \ + new/datum/stack_recipe("fire alarm frame", /obj/item/wallframe/firealarm, 2), \ + new/datum/stack_recipe("extinguisher cabinet frame", /obj/item/wallframe/extinguisher_cabinet, 2), \ + new/datum/stack_recipe("button frame", /obj/item/wallframe/button, 1), \ + null, \ + new/datum/stack_recipe("iron door", /obj/structure/mineral_door/iron, 20, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("floodlight frame", /obj/structure/floodlight_frame, 5, one_per_turf = TRUE, on_floor = TRUE), \ +)) + +/obj/item/stack/sheet/metal + name = "metal" + desc = "Sheets made out of metal." + singular_name = "metal sheet" + icon_state = "sheet-metal" + item_state = "sheet-metal" + materials = list(MAT_METAL=MINERAL_MATERIAL_AMOUNT) + throwforce = 10 + flags_1 = CONDUCT_1 + resistance_flags = FIRE_PROOF + merge_type = /obj/item/stack/sheet/metal + grind_results = list("iron" = 20) + point_value = 2 + +/obj/item/stack/sheet/metal/ratvar_act() + new /obj/item/stack/tile/brass(loc, amount) + qdel(src) + +/obj/item/stack/sheet/metal/narsie_act() + new /obj/item/stack/sheet/runed_metal(loc, amount) + qdel(src) + +/obj/item/stack/sheet/metal/fifty + amount = 50 + +/obj/item/stack/sheet/metal/twenty + amount = 20 + +/obj/item/stack/sheet/metal/ten + amount = 10 + +/obj/item/stack/sheet/metal/five + amount = 5 + +/obj/item/stack/sheet/metal/cyborg + materials = list() + is_cyborg = 1 + cost = 500 + +/obj/item/stack/sheet/metal/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.metal_recipes + return ..() + +/obj/item/stack/sheet/metal/suicide_act(mob/living/carbon/user) + user.visible_message("[user] begins whacking [user.p_them()]self over the head with \the [src]! It looks like [user.p_theyre()] trying to commit suicide!") + return BRUTELOSS + +/* + * Plasteel + */ +GLOBAL_LIST_INIT(plasteel_recipes, list ( \ + new/datum/stack_recipe("AI core", /obj/structure/AIcore, 4, time = 50, one_per_turf = TRUE), \ + new/datum/stack_recipe("bomb assembly", /obj/machinery/syndicatebomb/empty, 10, time = 50), \ + null, \ + new /datum/stack_recipe_list("airlock assemblies", list( \ + new/datum/stack_recipe("high security airlock assembly", /obj/structure/door_assembly/door_assembly_highsecurity, 6, time = 50, one_per_turf = 1, on_floor = 1), \ + new/datum/stack_recipe("vault door assembly", /obj/structure/door_assembly/door_assembly_vault, 8, time = 50, one_per_turf = 1, on_floor = 1), \ + )), \ +)) + +/obj/item/stack/sheet/plasteel + name = "plasteel" + singular_name = "plasteel sheet" + desc = "This sheet is an alloy of iron and plasma." + icon_state = "sheet-plasteel" + item_state = "sheet-metal" + materials = list(MAT_METAL=2000, MAT_PLASMA=2000) + throwforce = 10 + flags_1 = CONDUCT_1 + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80) + resistance_flags = FIRE_PROOF + merge_type = /obj/item/stack/sheet/plasteel + grind_results = list("iron" = 20, "plasma" = 20) + point_value = 23 + +/obj/item/stack/sheet/plasteel/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.plasteel_recipes + return ..() + +/obj/item/stack/sheet/plasteel/twenty + amount = 20 + +/obj/item/stack/sheet/plasteel/fifty + amount = 50 + +/* + * Wood + */ +GLOBAL_LIST_INIT(wood_recipes, list ( \ + new/datum/stack_recipe("wooden sandals", /obj/item/clothing/shoes/sandal, 1), \ + new/datum/stack_recipe("wood floor tile", /obj/item/stack/tile/wood, 1, 4, 20), \ + new/datum/stack_recipe("wood table frame", /obj/structure/table_frame/wood, 2, time = 10), \ + new/datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40), \ + new/datum/stack_recipe("rolling pin", /obj/item/kitchen/rollingpin, 2, time = 30), \ + new/datum/stack_recipe("wooden chair", /obj/structure/chair/wood/, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("winged wooden chair", /obj/structure/chair/wood/wings, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("plywood chair", /obj/structure/chair/comfy/plywood, 4, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("rustic wooden door", /obj/structure/mineral_door/woodrustic, 10, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("coffin", /obj/structure/closet/crate/coffin, 5, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("book case", /obj/structure/bookcase, 4, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("dog bed", /obj/structure/bed/dogbed, 10, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("dresser", /obj/structure/dresser, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("picture frame", /obj/item/wallframe/picture, 1, time = 10),\ + new/datum/stack_recipe("display case chassis", /obj/structure/displaycase_chassis, 5, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("loom", /obj/structure/loom, 10, time = 15, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("wooden buckler", /obj/item/shield/riot/buckler, 20, time = 40), \ + new/datum/stack_recipe("apiary", /obj/structure/beebox, 40, time = 50),\ + new/datum/stack_recipe("tiki mask", /obj/item/clothing/mask/gas/tiki_mask, 2), \ + new/datum/stack_recipe("honey frame", /obj/item/honey_frame, 5, time = 10),\ + new/datum/stack_recipe("ore box", /obj/structure/ore_box, 4, time = 50, one_per_turf = TRUE, on_floor = TRUE),\ + new/datum/stack_recipe("wooden crate", /obj/structure/closet/crate/wooden, 6, time = 50, one_per_turf = TRUE, on_floor = TRUE),\ + new/datum/stack_recipe("baseball bat", /obj/item/melee/baseball_bat, 5, time = 15),\ + )) + +/obj/item/stack/sheet/mineral/wood + name = "wooden plank" + desc = "One can only guess that this is a bunch of wood." + singular_name = "wood plank" + icon_state = "sheet-wood" + item_state = "sheet-wood" + icon = 'icons/obj/stack_objects.dmi' + sheettype = "wood" + armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0) + resistance_flags = FLAMMABLE + merge_type = /obj/item/stack/sheet/mineral/wood + novariants = TRUE + grind_results = list("carbon" = 20) + +/obj/item/stack/sheet/mineral/wood/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.wood_recipes + return ..() + +/obj/item/stack/sheet/mineral/wood/fifty + amount = 50 + +/* + * Cloth + */ +GLOBAL_LIST_INIT(cloth_recipes, list ( \ + new/datum/stack_recipe("grey jumpsuit", /obj/item/clothing/under/color/grey, 3), \ + new/datum/stack_recipe("black shoes", /obj/item/clothing/shoes/sneakers/black, 2), \ + null, \ + new/datum/stack_recipe("backpack", /obj/item/storage/backpack, 4), \ + new/datum/stack_recipe("duffel bag", /obj/item/storage/backpack/duffelbag, 6), \ + null, \ + new/datum/stack_recipe("plant bag", /obj/item/storage/bag/plants, 4), \ + new/datum/stack_recipe("book bag", /obj/item/storage/bag/books, 4), \ + new/datum/stack_recipe("mining satchel", /obj/item/storage/bag/ore, 4), \ + new/datum/stack_recipe("chemistry bag", /obj/item/storage/bag/chemistry, 4), \ + new/datum/stack_recipe("bio bag", /obj/item/storage/bag/bio, 4), \ + null, \ + new/datum/stack_recipe("improvised gauze", /obj/item/stack/medical/gauze/improvised, 1, 2, 6), \ + new/datum/stack_recipe("rag", /obj/item/reagent_containers/rag, 1), \ + new/datum/stack_recipe("towel", /obj/item/reagent_containers/rag/towel, 3), \ + new/datum/stack_recipe("bedsheet", /obj/item/bedsheet, 3), \ + new/datum/stack_recipe("empty sandbag", /obj/item/emptysandbag, 4), \ + null, \ + new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1),\ + new/datum/stack_recipe("white gloves", /obj/item/clothing/gloves/color/white, 1),\ + new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \ + null, \ + new/datum/stack_recipe("blindfold", /obj/item/clothing/glasses/sunglasses/blindfold, 2), \ + )) + +/obj/item/stack/sheet/cloth + name = "cloth" + desc = "Is it cotton? Linen? Denim? Burlap? Canvas? You can't tell." + singular_name = "cloth roll" + icon_state = "sheet-cloth" + item_state = "sheet-cloth" + resistance_flags = FLAMMABLE + force = 0 + throwforce = 0 + merge_type = /obj/item/stack/sheet/cloth + +/obj/item/stack/sheet/cloth/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.cloth_recipes + return ..() + +/obj/item/stack/sheet/cloth/ten + amount = 10 + +//Durathread fuck slash-asterisk comments + GLOBAL_LIST_INIT(durathread_recipes, list ( \ + new/datum/stack_recipe("durathread jumpsuit", /obj/item/clothing/under/durathread, 4, time = 40), + new/datum/stack_recipe("durathread beret", /obj/item/clothing/head/beret/durathread, 2, time = 40), \ + new/datum/stack_recipe("durathread beanie", /obj/item/clothing/head/beanie/durathread, 2, time = 40), \ + new/datum/stack_recipe("durathread bandana", /obj/item/clothing/mask/bandana/durathread, 1, time = 25), \ + new/datum/stack_recipe("durathread jumpskirt", /obj/item/clothing/under/duraskirt, 40, time = 40), \ + )) + +/obj/item/stack/sheet/durathread + name = "durathread" + desc = "A fabric sown from incredibly durable threads, known for its usefulness in armor production." + singular_name = "durathread roll" + icon_state = "sheet-durathread" + item_state = "sheet-cloth" + resistance_flags = FLAMMABLE + force = 0 + throwforce = 0 + merge_type = /obj/item/stack/sheet/durathread + +/obj/item/stack/sheet/durathread/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.durathread_recipes + return ..() + + + +/* + * Cardboard + */ +GLOBAL_LIST_INIT(cardboard_recipes, list ( \ + new/datum/stack_recipe("box", /obj/item/storage/box), \ + new/datum/stack_recipe("sec box", /obj/item/storage/box/seclooking), \ + new/datum/stack_recipe("light tubes", /obj/item/storage/box/lights/tubes), \ + new/datum/stack_recipe("light bulbs", /obj/item/storage/box/lights/bulbs), \ + new/datum/stack_recipe("mouse traps", /obj/item/storage/box/mousetraps), \ + new/datum/stack_recipe("pizza box", /obj/item/pizzabox), \ + new/datum/stack_recipe("power cell", /obj/item/storage/box/cells), \ + new/datum/stack_recipe("02", /obj/item/storage/box/otwo), \ + null, \ + new/datum/stack_recipe("lethal ammo box", /obj/item/storage/box/lethalshot), \ + new/datum/stack_recipe("rubber shot ammo box", /obj/item/storage/box/rubbershot), \ + new/datum/stack_recipe("bean bag ammo box", /obj/item/storage/box/beanbag), \ + new/datum/stack_recipe("12g ammo box", /obj/item/storage/box/lethalslugs), \ + new/datum/stack_recipe("stun slug ammo box", /obj/item/storage/box/stunslug), \ + new/datum/stack_recipe("tech shell ammo box", /obj/item/storage/box/techsslug), \ + new/datum/stack_recipe("incendiary ammo box", /obj/item/storage/box/fireshot), \ + new/datum/stack_recipe("firing pins", /obj/item/storage/box/firingpins), \ + new/datum/stack_recipe("loose ammo", /obj/item/storage/box/ammoshells), \ + null, \ + new/datum/stack_recipe("cardborg suit", /obj/item/clothing/suit/cardborg, 3), \ + new/datum/stack_recipe("cardborg helmet", /obj/item/clothing/head/cardborg), \ + new/datum/stack_recipe("folder", /obj/item/folder), \ + new/datum/stack_recipe("large box", /obj/structure/closet/cardboard, 4), \ + new/datum/stack_recipe("cardboard cutout", /obj/item/cardboard_cutout, 5), \ + null, \ + new/datum/stack_recipe("colored brown", /obj/item/storage/box/brown), \ + new/datum/stack_recipe("colored green", /obj/item/storage/box/green), \ + new/datum/stack_recipe("colored red", /obj/item/storage/box/blue), \ + new/datum/stack_recipe("colored blue", /obj/item/storage/box/red), \ + new/datum/stack_recipe("colored yellow", /obj/item/storage/box/yellow), \ + new/datum/stack_recipe("colored pink", /obj/item/storage/box/pink), \ + new/datum/stack_recipe("colored purple", /obj/item/storage/box/purple), \ + )) + +/obj/item/stack/sheet/cardboard //BubbleWrap //it's cardboard you fuck + name = "cardboard" + desc = "Large sheets of card, like boxes folded flat." + singular_name = "cardboard sheet" + icon_state = "sheet-card" + item_state = "sheet-card" + resistance_flags = FLAMMABLE + force = 0 + throwforce = 0 + merge_type = /obj/item/stack/sheet/cardboard + novariants = TRUE + +/obj/item/stack/sheet/cardboard/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.cardboard_recipes + return ..() + +/obj/item/stack/sheet/cardboard/fifty + amount = 50 + +/obj/item/stack/sheet/cardboard/attackby(obj/item/I, mob/user, params) + if(istype(I, /obj/item/stamp/clown) && !istype(loc, /obj/item/storage)) + var/atom/droploc = drop_location() + if(use(1)) + playsound(I, 'sound/items/bikehorn.ogg', 50, 1, -1) + to_chat(user, "You stamp the cardboard! Its a clown box! Honk!") + if (amount >= 0) + new/obj/item/storage/box/clown(droploc) //bugfix + else + . = ..() + + +/* + * Runed Metal + */ + +GLOBAL_LIST_INIT(runed_metal_recipes, list ( \ + new/datum/stack_recipe("runed door", /obj/machinery/door/airlock/cult, 1, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("runed girder", /obj/structure/girder/cult, 1, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("pylon", /obj/structure/destructible/cult/pylon, 4, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("forge", /obj/structure/destructible/cult/forge, 3, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("archives", /obj/structure/destructible/cult/tome, 3, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("altar", /obj/structure/destructible/cult/talisman, 3, time = 40, one_per_turf = TRUE, on_floor = TRUE), \ + )) + +/obj/item/stack/sheet/runed_metal + name = "runed metal" + desc = "Sheets of cold metal with shifting inscriptions writ upon them." + singular_name = "runed metal sheet" + icon_state = "sheet-runed" + item_state = "sheet-runed" + icon = 'icons/obj/stack_objects.dmi' + sheettype = "runed" + merge_type = /obj/item/stack/sheet/runed_metal + novariants = TRUE + grind_results = list("iron" = 5, "blood" = 15) + +/obj/item/stack/sheet/runed_metal/ratvar_act() + new /obj/item/stack/tile/brass(loc, amount) + qdel(src) + +/obj/item/stack/sheet/runed_metal/attack_self(mob/living/user) + if(!iscultist(user)) + to_chat(user, "Only one with forbidden knowledge could hope to work this metal...") + return + var/turf/T = get_turf(user) //we may have moved. adjust as needed... + var/area/A = get_area(user) + if((!is_station_level(T.z) && !is_mining_level(T.z)) || (A && !A.blob_allowed)) + to_chat(user, "The veil is not weak enough here.") + return FALSE + return ..() + +/obj/item/stack/sheet/runed_metal/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.runed_metal_recipes + return ..() + +/obj/item/stack/sheet/runed_metal/fifty + amount = 50 + +/obj/item/stack/sheet/runed_metal/ten + amount = 10 + +/obj/item/stack/sheet/runed_metal/five + amount = 5 + +/* + * Brass + */ +GLOBAL_LIST_INIT(brass_recipes, list ( \ + new/datum/stack_recipe("wall gear", /obj/structure/destructible/clockwork/wall_gear, 3, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + null, + new/datum/stack_recipe("brass pinion airlock", /obj/machinery/door/airlock/clockwork, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass pinion airlock - windowed", /obj/machinery/door/airlock/clockwork/brass, 5, time = 50, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass windoor", /obj/machinery/door/window/clockwork, 2, time = 30, on_floor = TRUE, window_checks = TRUE), \ + null, + new/datum/stack_recipe("brass reflector", /obj/structure/destructible/clockwork/reflector, 10, time = 100, one_per_turf = TRUE, on_floor = TRUE, window_checks = TRUE), \ + null, + new/datum/stack_recipe("brass window - directional", /obj/structure/window/reinforced/clockwork/unanchored, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe("brass window - fulltile", /obj/structure/window/reinforced/clockwork/fulltile/unanchored, 2, time = 0, on_floor = TRUE, window_checks = TRUE), \ + new/datum/stack_recipe("brass chair", /obj/structure/chair/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass bar stool", /obj/structure/chair/stool/bar/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass stool", /obj/structure/chair/stool/brass, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("brass table frame", /obj/structure/table_frame/brass, 1, time = 5, one_per_turf = TRUE, on_floor = TRUE), \ + null, + new/datum/stack_recipe("sender - pressure sensor", /obj/structure/destructible/clockwork/trap/trigger/pressure_sensor, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("sender - mech sensor", /obj/structure/destructible/clockwork/trap/trigger/pressure_sensor/mech, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("sender - lever", /obj/structure/destructible/clockwork/trap/trigger/lever, 1, time = 10, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("sender - repeater", /obj/structure/destructible/clockwork/trap/trigger/repeater, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + null, + new/datum/stack_recipe("receiver - brass skewer", /obj/structure/destructible/clockwork/trap/brass_skewer, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_ADJACENT), \ + new/datum/stack_recipe("receiver - steam vent", /obj/structure/destructible/clockwork/trap/steam_vent, 3, time = 30, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ + new/datum/stack_recipe("receiver - power nullifier", /obj/structure/destructible/clockwork/trap/power_nullifier, 5, time = 20, one_per_turf = TRUE, on_floor = TRUE, placement_checks = STACK_CHECK_CARDINALS), \ + null, + new/datum/stack_recipe("brass flask", /obj/item/reagent_containers/food/drinks/bottle/holyoil/empty), \ + +)) + +/obj/item/stack/tile/brass + name = "brass" + desc = "Sheets made out of brass." + singular_name = "brass sheet" + icon_state = "sheet-brass" + item_state = "sheet-brass" + icon = 'icons/obj/stack_objects.dmi' + resistance_flags = FIRE_PROOF | ACID_PROOF + throwforce = 10 + max_amount = 50 + throw_speed = 1 + throw_range = 3 + turf_type = /turf/open/floor/clockwork + novariants = FALSE + grind_results = list("iron" = 5, "teslium" = 15, "holyoil" = 1) + merge_type = /obj/item/stack/tile/brass + +/obj/item/stack/tile/brass/narsie_act() + new /obj/item/stack/sheet/runed_metal(loc, amount) + qdel(src) + +/obj/item/stack/tile/brass/attack_self(mob/living/user) + if(!is_servant_of_ratvar(user)) + to_chat(user, "[src] seems far too fragile and rigid to build with.") //haha that's because it's actually replicant alloy you DUMMY + return + ..() + +/obj/item/stack/tile/brass/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.brass_recipes + . = ..() + pixel_x = 0 + pixel_y = 0 + +/obj/item/stack/tile/brass/fifty + amount = 50 + +/* + * Bronze + */ + +GLOBAL_LIST_INIT(bronze_recipes, list ( \ + new/datum/stack_recipe("wall gear", /obj/structure/girder/bronze, 2, time = 20, one_per_turf = TRUE, on_floor = TRUE), \ + null, + new/datum/stack_recipe("bronze hat", /obj/item/clothing/head/bronze), \ + new/datum/stack_recipe("bronze suit", /obj/item/clothing/suit/bronze), \ + new/datum/stack_recipe("bronze boots", /obj/item/clothing/shoes/bronze), \ + null, + new/datum/stack_recipe("bronze chair", /obj/structure/chair/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bronze bar stool", /obj/structure/chair/stool/bar/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ + new/datum/stack_recipe("bronze stool", /obj/structure/chair/stool/bronze, 1, time = 0, one_per_turf = TRUE, on_floor = TRUE), \ +)) + +/obj/item/stack/tile/bronze + name = "brass" + desc = "On closer inspection, what appears to be wholly-unsuitable-for-building brass is actually more structurally stable bronze." + singular_name = "bronze sheet" + icon_state = "sheet-brass" + item_state = "sheet-brass" + icon = 'icons/obj/stack_objects.dmi' + resistance_flags = FIRE_PROOF | ACID_PROOF + throwforce = 10 + max_amount = 50 + throw_speed = 1 + throw_range = 3 + turf_type = /turf/open/floor/bronze + novariants = FALSE + grind_results = list("iron" = 5, "copper" = 3) //we have no "tin" reagent so this is the closest thing + merge_type = /obj/item/stack/tile/bronze + +/obj/item/stack/tile/bronze/attack_self(mob/living/user) + if(is_servant_of_ratvar(user)) //still lets them build with it, just gives a message + to_chat(user, "Wha... what is this cheap imitation crap? This isn't brass at all!") + ..() + +/obj/item/stack/tile/bronze/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.bronze_recipes + . = ..() + pixel_x = 0 + pixel_y = 0 + +/obj/item/stack/tile/bronze/thirty + amount = 30 + +/* + * Lesser and Greater gems - unused + */ +/obj/item/stack/sheet/lessergem + name = "lesser gems" + desc = "Rare kind of gems which are only gained by blood sacrifice to minor deities. They are needed in crafting powerful objects." + singular_name = "lesser gem" + icon_state = "sheet-lessergem" + item_state = "sheet-lessergem" + novariants = TRUE + + +/obj/item/stack/sheet/greatergem + name = "greater gems" + desc = "Rare kind of gems which are only gained by blood sacrifice to minor deities. They are needed in crafting powerful objects." + singular_name = "greater gem" + icon_state = "sheet-greatergem" + item_state = "sheet-greatergem" + novariants = TRUE + + /* + * Bones + */ +/obj/item/stack/sheet/bone + name = "bones" + icon = 'icons/obj/mining.dmi' + icon_state = "bone" + item_state = "sheet-bone" + singular_name = "bone" + desc = "Someone's been drinking their milk." + force = 7 + throwforce = 5 + max_amount = 12 + w_class = WEIGHT_CLASS_NORMAL + throw_speed = 1 + throw_range = 3 + grind_results = list("carbon" = 10) + merge_type = /obj/item/stack/sheet/bone + +GLOBAL_LIST_INIT(plastic_recipes, list( + new /datum/stack_recipe("plastic flaps", /obj/structure/plasticflaps, 5, one_per_turf = TRUE, on_floor = TRUE, time = 40), \ + new /datum/stack_recipe("water bottle", /obj/item/reagent_containers/glass/beaker/waterbottle/empty), \ + new /datum/stack_recipe("large water bottle", /obj/item/reagent_containers/glass/beaker/waterbottle/large/empty,3), \ + new /datum/stack_recipe("wet floor sign", /obj/item/caution, 2))) + +/obj/item/stack/sheet/plastic + name = "plastic" + desc = "Compress dinosaur over millions of years, then refine, split and mold, and voila! You have plastic." + singular_name = "plastic sheet" + icon_state = "sheet-plastic" + item_state = "sheet-plastic" + materials = list(MAT_PLASTIC=MINERAL_MATERIAL_AMOUNT) + throwforce = 7 + merge_type = /obj/item/stack/sheet/plastic + +/obj/item/stack/sheet/plastic/fifty + amount = 50 + +/obj/item/stack/sheet/plastic/five + amount = 5 + +/obj/item/stack/sheet/plastic/Initialize(mapload, new_amount, merge = TRUE) + recipes = GLOB.plastic_recipes + . = ..() + +GLOBAL_LIST_INIT(paperframe_recipes, list( +new /datum/stack_recipe("paper frame separator", /obj/structure/window/paperframe, 2, one_per_turf = TRUE, on_floor = TRUE, time = 10), \ +new /datum/stack_recipe("paper frame door", /obj/structure/mineral_door/paperframe, 3, one_per_turf = TRUE, on_floor = TRUE, time = 10 ))) + +/obj/item/stack/sheet/paperframes + name = "paper frames" + desc = "A thin wooden frame with paper attached." + singular_name = "paper frame" + icon_state = "sheet-paper" + item_state = "sheet-paper" + merge_type = /obj/item/stack/sheet/paperframes + resistance_flags = FLAMMABLE + merge_type = /obj/item/stack/sheet/paperframes + +/obj/item/stack/sheet/paperframes/Initialize() + recipes = GLOB.paperframe_recipes + . = ..() +/obj/item/stack/sheet/paperframes/five + amount = 5 +/obj/item/stack/sheet/paperframes/twenty + amount = 20 +/obj/item/stack/sheet/paperframes/fifty + amount = 50 + + +//durathread and cotton raw +/obj/item/stack/sheet/cotton + name = "raw cotton bundle" + desc = "A bundle of raw cotton ready to be spun on the loom." + singular_name = "raw cotton ball" + icon_state = "sheet-cotton" + is_fabric = TRUE + resistance_flags = FLAMMABLE + force = 0 + throwforce = 0 + merge_type = /obj/item/stack/sheet/cotton + pull_effort = 30 + loom_result = /obj/item/stack/sheet/cloth + +/obj/item/stack/sheet/cotton/durathread + name = "raw durathread bundle" + desc = "A bundle of raw durathread ready to be spun on the loom." + singular_name = "raw durathread ball" + icon_state = "sheet-durathreadraw" + merge_type = /obj/item/stack/sheet/cotton/durathread + pull_effort = 70 + loom_result = /obj/item/stack/sheet/durathread + + diff --git a/code/game/objects/items/stacks/sheets.dm b/code/game/objects/items/stacks/sheets.dm new file mode 100644 index 0000000000..908fc88383 --- /dev/null +++ b/code/game/objects/items/stacks/sheets.dm @@ -0,0 +1,18 @@ +/obj/item/stack/sheet + name = "sheet" + lefthand_file = 'icons/mob/inhands/misc/sheets_lefthand.dmi' + righthand_file = 'icons/mob/inhands/misc/sheets_righthand.dmi' + full_w_class = WEIGHT_CLASS_NORMAL + force = 5 + throwforce = 5 + max_amount = 50 + throw_speed = 1 + throw_range = 3 + attack_verb = list("bashed", "battered", "bludgeoned", "thrashed", "smashed") + novariants = FALSE + var/perunit = MINERAL_MATERIAL_AMOUNT + var/sheettype = null //this is used for girders in the creation of walls/false walls + var/point_value = 0 //turn-in value for the gulag stacker - loosely relative to its rarity + var/is_fabric = FALSE //is this a valid material for the loom? + var/loom_result //result from pulling on the loom + var/pull_effort = 0 //amount of delay when pulling on the loom \ No newline at end of file