diff --git a/code/datums/components/crafting/recipes/recipes_misc.dm b/code/datums/components/crafting/recipes/recipes_misc.dm index 0cb0547978..ee0a55c657 100644 --- a/code/datums/components/crafting/recipes/recipes_misc.dm +++ b/code/datums/components/crafting/recipes/recipes_misc.dm @@ -111,6 +111,26 @@ category = CAT_MISC always_availible = FALSE // Disabled til learned +/datum/crafting_recipe/tableanvil + name = "Table Anvil" + result = /obj/structure/anvil/obtainable/table + time = 300 + reqs = list(/obj/item/stack/sheet/metal = 4, + /obj/item/stack/rods = 2) + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISC + +/datum/crafting_recipe/sandvil + name = "Sandstone Anvil" + result = /obj/structure/anvil/obtainable/sandstone + time = 300 + reqs = list(/obj/item/stack/sheet/mineral/sandstone = 4) + tools = list(TOOL_CROWBAR) + subcategory = CAT_MISCELLANEOUS + category = CAT_MISC + + /////////////////// //Tools & Storage// /////////////////// @@ -166,6 +186,17 @@ subcategory = CAT_TOOL category = CAT_MISC +/datum/crafting_recipe/toolboxhammer + name = "Toolbox Hammer" + result = /obj/item/melee/smith/hammer/toolbox + tools = list(TOOL_SCREWDRIVER, TOOL_WRENCH, TOOL_WELDER) + reqs = list(/obj/item/storage/toolbox = 1, + /obj/item/stack/sheet/metal = 4, + /obj/item/stack/rods = 2) + time = 40 + subcategory = CAT_TOOL + category = CAT_MISC + /datum/crafting_recipe/papersack name = "Paper Sack" result = /obj/item/storage/box/papersack @@ -324,7 +355,7 @@ result = /obj/item/toy/sword/cx subcategory = CAT_MISCELLANEOUS category = CAT_MISC - + /datum/crafting_recipe/catgirlplushie name = "Catgirl Plushie" reqs = list(/obj/item/toy/plush/hairball = 3) @@ -336,6 +367,27 @@ //Unsorted// //////////// + + +/datum/crafting_recipe/stick + name = "Stick" + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 1) + tools = list(/obj/item/hatchet) + result = /obj/item/stick + subcategory = CAT_MISCELLANEOUS + category = CAT_MISC + + +/datum/crafting_recipe/swordhilt + name = "Sword Hilt" + time = 30 + reqs = list(/obj/item/stack/sheet/mineral/wood = 2) + tools = list(/obj/item/hatchet) + result = /obj/item/swordhandle + subcategory = CAT_MISCELLANEOUS + category = CAT_MISC + /datum/crafting_recipe/blackcarpet name = "Black Carpet" reqs = list(/obj/item/stack/tile/carpet = 50, /obj/item/toy/crayon/black = 1) diff --git a/code/modules/smithing/anvil.dm b/code/modules/smithing/anvil.dm index 7886b87225..80268bfa41 100644 --- a/code/modules/smithing/anvil.dm +++ b/code/modules/smithing/anvil.dm @@ -6,14 +6,21 @@ #define RECIPE_SMALLPICK "dbp" //draw bend punch #define RECIPE_LARGEPICK "ddbp" //draw draw bend punch #define RECIPE_SHOVEL "dfup" //draw fold upset punch -#define RECIPE_SMALLKNIFE "sdd" //shrink draw draw #define RECIPE_HAMMER "sfp" //shrink fold punch #define RECIPE_AXE "ufp" //upset fold punch + + +#define RECIPE_SMALLKNIFE "sdd" //shrink draw draw #define RECIPE_SHORTSWORD "dff" //draw fold fold -#define RECIPE_JAVELIN "dbf" //draw bend fold +#define RECIPE_BROADSWORD "dfufd" //draw fold upset fold draw +#define RECIPE_KATANA "fffff" //fold fold fold fold fold + + #define RECIPE_SCYTHE "bdf" //bend draw fold #define RECIPE_COGHEAD "bsf" //bend shrink fold. -#define RECIPE_BROADSWORD "dfufd" //draw fold upset fold draw + + +#define RECIPE_JAVELIN "dbf" //draw bend fold #define RECIPE_HALBERD "duffp" //draw upset fold fold punch #define RECIPE_GLAIVE "usfp" //upset shrink fold punch @@ -31,6 +38,7 @@ var/currentsteps = 0 //even i don't know var/outrightfailchance = 1 //todo: document this shit var/stepsdone = "" + var/rng = FALSE var/list/smithrecipes = list(RECIPE_AXE = /obj/item/smithing/axehead, RECIPE_HAMMER = /obj/item/smithing/hammerhead, RECIPE_SCYTHE = /obj/item/smithing/scytheblade, @@ -133,7 +141,7 @@ tryfinish(user) /obj/structure/anvil/proc/tryfinish(mob/user) - if(currentsteps > 12 || (rng && prob(outrightfailchance)) + if(currentsteps > 12 || (rng && prob(outrightfailchance))) to_chat(user, "You overwork the metal, causing it to turn into useless slag!") var/turf/T = get_turf(user) workpiece_state = FALSE @@ -160,6 +168,59 @@ outrightfailchance = 1 break +/obj/structure/anvil/debugsuper + name = "super ultra epic anvil of debugging." + desc = "WOW. A DEBUG ITEM STRUCTURE. EPIC." + icon = 'icons/obj/smith.dmi' + icon_state = "anvil" + anvilquality = 10 + outrightfailchance = 0 + +/obj/structure/anvil/obtainable + name = "anvil" + desc = "Base class of anvil. This shouldn't exist, but is useable." + icon = 'icons/obj/smith.dmi' + icon_state = "anvil" + anvilquality = 0 + outrightfailchance = 5 + rng = TRUE + +/obj/structure/anvil/obtainable/table + name = "table anvil" + desc = "A slightly reinforced table. Good luck." + icon = 'icons/obj/smith.dmi' + icon_state = "anvil" + anvilquality = -2 + + +/obj/structure/anvil/obtainable/table/do_shaping(mob/user, var/qualitychange) + if(prob(5)) + to_chat(user, "The [src] breaks under the strain!") + take_damage(max_integrity) + return FALSE + else + ..() + +/obj/structure/anvil/obtainable/sandstone + name = "sandstone brick anvil" + desc = "A big block of sandstone. Useable as an anvil." + icon = 'icons/obj/smith.dmi' + icon_state = "anvil" + anvilquality = -1 + +/obj/structure/anvil/obtainable/basalt + name = "basalt brick anvil" + desc = "A big block of basalt. Useable as an anvil, better than sandstone. Igneous!" + icon = 'icons/obj/smith.dmi' + icon_state = "anvil" + anvilquality = -0.5 + +/obj/structure/anvil/obtainable/basic + name = "anvil" + desc = "An anvil. It's got wheels bolted to the bottom." + icon = 'icons/obj/smith.dmi' + icon_state = "anvil" + anvilquality = 0 #undef WORKPIECE_PRESENT #undef WORKPIECE_INPROGRESS diff --git a/code/modules/smithing/finished_items.dm b/code/modules/smithing/finished_items.dm index cb95ae11b8..a03efc4496 100644 --- a/code/modules/smithing/finished_items.dm +++ b/code/modules/smithing/finished_items.dm @@ -1,9 +1,33 @@ //TODO: OBTAILABILITY, ANVIL TYPES, HAMMER TYPES, INGOTS +/* +sords: +broadsword [x] +gladius [x] +dirk [x] +zweihander [x] +sabre +rapier +scimitar +katana [x] +polearms: +halberd [x] +glaive [x] +javelin [x] +pike + +misc: +blacksmith's hammer [x] +scythe [x] +axe +coghead club +pickaxes [x] +*/ /obj/item/melee/smith name = "base class obj/item/melee/smith" //tin. handles overlay and quality and shit. + desc = "cringe" icon = 'icons/obj/smith.dmi' icon_state = "mace_greyscale" item_state = "mace_greyscale" @@ -19,7 +43,8 @@ /obj/item/melee/smith/Initialize() ..() - desc = "A handmade [name]." + if(desc == "cringe") + desc = "A handmade [name]." overlay = mutable_appearance(icon, overlay_state) overlay.appearance_flags = RESET_COLOR add_overlay(overlay) @@ -28,6 +53,7 @@ /obj/item/melee/smith/twohand + item_flags = NEEDS_PERMIT //it's a bigass sword/spear. beepsky is going to give you shit for it. wielded_mult = 1.75 @@ -129,6 +155,7 @@ /obj/item/melee/smith/axe name = "axe" + item_flags = NEEDS_PERMIT /obj/item/melee/smith/hammer//blacksmithing, not warhammer. name = "hammer" @@ -142,9 +169,11 @@ /obj/item/melee/smith/cogheadclub name = "coghead club" + item_flags = NEEDS_PERMIT /obj/item/melee/smith/shortsword name = "gladius" + item_flags = NEEDS_PERMIT icon_state = "gladius" overlay_state = "gladiushilt" @@ -152,5 +181,35 @@ name = "broadsword" icon_state = "broadsword" overlay_state = "broadhilt" - force = 15 + force = 11 wielded_mult = 1.8 + +/obj/item/melee/smith/twohand/zweihander + name = "zweihander" + icon_state = "zweihander" + overlay_state = "zweihilt" + force = 4 + wielded_mult = 3 + +/obj/item/melee/smith/twohand/katana + name = "katana" + icon_state = "katana" + overlay_state = "katanahilt" + force = 7 + wielded_mult = 2 + item_flags = ITEM_CAN_PARRY | UNIQUE_RENAME //want to name your katana "DEMON BLADE" or some shit? go ahead, idiot. + block_parry_data = /datum/block_parry_data/captain_saber + +//unique hammers +/obj/item/melee/smith/hammer/toolbox + name = "toolbox hammer" + desc = "A metal filled toolbox on a stick. Useable as a really shitty hammer." + w_class = WEIGHT_CLASS_BULKY + icon_state = "toolbox" + overlay_state = "hammerhandle" + qualitymod = -2 + +/obj/item/melee/smith/hammer/debug + name = "debugging hammer" + desc = "A DEBUGGING HAMMER!! EPIC!!." + qualitymod = 10 diff --git a/code/modules/smithing/smithed_items.dm b/code/modules/smithing/smithed_items.dm index ca12033447..e8c3c02378 100644 --- a/code/modules/smithing/smithed_items.dm +++ b/code/modules/smithing/smithed_items.dm @@ -23,7 +23,7 @@ /obj/item/smithing/Initialize() ..() - desc = "A [src]. Hit it with a [finishingitem] to create a [finalitem]." + desc = "A [src]. Hit it with a [finishingitem.name] to create a [finalitem.name]." /obj/item/smithing/attackby(obj/item/I, mob/user) @@ -234,6 +234,19 @@ finalitem = finalforreal ..() +/obj/item/smithing/katanablade + name = "smithed katana blade" + finishingitem = /obj/item/swordhandle + finalitem = /obj/item/melee/smith/twohand/katana + icon_state = "katana" + + +/obj/item/smithing/katanablade/startfinish() + var/obj/item/melee/smith/twohand/katana/finalforreal = new /obj/item/melee/smith/twohand/katana(src) + finalforreal.force += quality + finalforreal.wield_force = finalforreal.force*finalforreal.wielded_mult + finalforreal.AddComponent(/datum/component/two_handed, force_unwielded=finalforreal.force, force_wielded=finalforreal.wield_force, icon_wielded="[icon_state]_wield") + finalitem = finalforreal /obj/item/stick name = "wooden rod" @@ -244,6 +257,6 @@ /obj/item/swordhandle name = "sword handle" - desc = "It's a rod, suitable for use of a handle of a tool. Also could serve as a weapon, in a pinch." + desc = "It's a crudlely shaped wooden sword hilt." icon = 'icons/obj/smith.dmi' icon_state = "shorthilt" diff --git a/icons/obj/smith.dmi b/icons/obj/smith.dmi index 4893018b23..e2a303112c 100644 Binary files a/icons/obj/smith.dmi and b/icons/obj/smith.dmi differ