From 09fc795f3b0d60a7f847fc141e52dd6ebe270837 Mon Sep 17 00:00:00 2001 From: lolman360 Date: Mon, 17 Aug 2020 11:45:24 +1000 Subject: [PATCH] AnPrim --- .../crafting/recipes/recipes_misc.dm | 54 +++++++++++++- code/modules/smithing/anvil.dm | 69 +++++++++++++++++- code/modules/smithing/finished_items.dm | 63 +++++++++++++++- code/modules/smithing/smithed_items.dm | 17 ++++- icons/obj/smith.dmi | Bin 3210 -> 3268 bytes 5 files changed, 194 insertions(+), 9 deletions(-) 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 4893018b231d97d2b23055573315f4c6a70e97c0..e2a303112c383a3d67c372780f06b8b93a1a3d60 100644 GIT binary patch delta 2856 zcmV+@3)l3D8N?ZoBmtzcB})MbBOG%wjk+~YnUiw?RDX>@&xZg200DGTPE!Ct=GbNc z00B;VR9JLGWpiV4X>fFDZ*Bkpc$|%u&2GXl49CyyQ&ez86R=%(nT93~;}s^;q>V=! zSBYtXr(Z^=X*+;@i=|)uk-zQCtC!8&c2~W=Z_B~PgcPdh>gi!w79$#V*?3%+g|pZ? zo{Yr6Hh&*y5C-(KvM?A^wpV4*MCj~v{-utg!GOtGBch41KHQ=TN1S^4PGY@WtX7LZ z7ajP$jdFn6!?~kqMeqO&0px^7iiVm-1RZppjUv{1z(LNggW7&L2*%57>McYi>nXHK z^b-c_F(?by=ISW2L(d|)j|ArW`Z`qQ^fFphL4PW5J$TD37o9aXcuXpvKdeG@Fp)@> zXM_V>AO{yo18uA5;QGiOlAPh>PF3_Yiz*aDOA2N3mVwhvW$rDS+@ZPeBUlT_f z$A2f95MUt~z0#h6un{#vZ9{vak!!ED^`)(P_E0z}id+w(hi9wBm%|h3dyM?keP$O( zl$qz5-Dj6!{p2U2?96PwznN!dHj~*!h(s%8_vQC&KeRW{3DR~A>`8Asw0Cb12dRuz z0}6hzw5d0frY7WuT*@BMg6}26FrId4Kfv zogPOjt(pfqI`)U*H=W2@3}_wX_Vsn+05FIO$**n!(twITL<{H)koE7$YXD^n?57MU z`J*$?o6BPzU`vu;*#eXSHGdcbN(cE~Gk&3oAklFEH=yAUZb01xru8o;10_FYK*t}( zfZ{B@`%L-OW2m4EX!(r|G_Qpe27dzZI~so6fS%v@{XiCrA9H@?BF0xtgs|mkhAS*VGX0scATYr%1HGiGIXoWJc zLEc1D7}#*J*+Ra}jSS}V7p;&6e0V?boAI>Gz(#DnW*`?Ke@FvDY{HAJZ>?UoEC|tT zq|FRb)_*ty)FO}Gfd8#8LjJej=8vJ<)a)Fu{Ls>gBUB9hZ6#R;t-g8z#5=>mOf)3n zR2Uc>)EOumo#9|+C_0?LDt`)zKE2fJE7A*4*0{@_^Oe>~Aqyyl$Xuzv~J^#=U z>A*Jspj#@q$~4LEkPZ%JYz9yPy04BO900%L;0|o_7i1UErWYl@l-7Y|eu)3U0T;

Fy!d|4%8FtB7M|f}fhdNdAHwQ`P&T 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