diff --git a/code/modules/smithing/anvil.dm b/code/modules/smithing/anvil.dm index d6c144bdf7..73c748e148 100644 --- a/code/modules/smithing/anvil.dm +++ b/code/modules/smithing/anvil.dm @@ -110,7 +110,11 @@ var/list/shapingsteps = list("weak hit", "strong hit", "heavy hit", "fold", "draw", "shrink", "bend", "punch", "upset") //weak/strong/heavy hit affect strength. All the other steps shape. workpiece_state = WORKPIECE_INPROGRESS var/stepdone = input(user, "How would you like to work the metal?") in shapingsteps - if(!do_after(user, 20, target = src)) + var/steptime = 100 + if(user.mind.skill_holder) + var/skillmod = user.mind.get_skill_level(/datum/skill/level/dorfy/blacksmithing)/10 + 1 + steptime = 100 / skillmod + if(!do_after(user, steptime, target = src)) return FALSE switch(stepdone) if("weak hit") @@ -149,12 +153,20 @@ stepsdone += "u" currentsteps += 1 currentquality -= 1 - to_chat(user, "You [stepdone] the metal.") + user.visible_message("[user] works the metal on the anvil with their hammer with a loud clang!", \ + "You [stepdone] the metal with a loud clang!") + playsound(src, 'sound/effects/clang2.ogg',20, 2) + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/effects/clang2.ogg', 20, 2), 15) + addtimer(CALLBACK(GLOBAL_PROC, .proc/playsound, src, 'sound/effects/clang2.ogg', 20, 2), 30) if(length(stepsdone) >= 3) tryfinish(user) /obj/structure/anvil/proc/tryfinish(mob/user) - if(currentsteps > 10 || (rng && prob(outrightfailchance))) + var/finalfailchance = outrightfailchance + if(user.mind.skill_holder) + var/skillmod = user.mind.get_skill_level(/datum/skill/level/dorfy/blacksmithing)/10 + 1 + finalfailchance = max(0, finalfailchance / skillmod) //lv 2 gives 20% less to fail, 3 30%, etc + if(currentsteps > 10 || (rng && prob(finalfailchance))) to_chat(user, "") var/turf/T = get_turf(user) workpiece_state = FALSE diff --git a/code/modules/smithing/finished_items.dm b/code/modules/smithing/finished_items.dm index 0d61097002..f36287b33a 100644 --- a/code/modules/smithing/finished_items.dm +++ b/code/modules/smithing/finished_items.dm @@ -23,7 +23,7 @@ if(desc == "cringe") desc = "A handmade [name]." overlay = mutable_appearance(icon, overlay_state) - overlay.appearance_flags = RESET_COLOR + overlay.color = "FFFFFF" add_overlay(overlay) if(force < 0) force = 0 diff --git a/code/modules/smithing/smithed_items.dm b/code/modules/smithing/smithed_items.dm index 5a96eb2244..1e8c549dd7 100644 --- a/code/modules/smithing/smithed_items.dm +++ b/code/modules/smithing/smithed_items.dm @@ -101,7 +101,7 @@ qualname = "awful" if(-1000 to -2) qualname = "shoddy" - if(-1000 to 0) + if(-1000 to -1) qualname = "poor" if(0) qualname = "normal" @@ -118,6 +118,7 @@ var/datum/material/mat = custom_materials[1] mat = mat.name finalitem.name = "[qualname] [mat] [finalitem.name]" + finalitem.desc = "A [qualname] [finalitem.name]." finalitem.forceMove(get_turf(src)) qdel(src) @@ -291,11 +292,13 @@ finalitem = /obj/item/kitchen/knife icon_state = "dagger" -/obj/item/smithing/knifehead/startfinish() +/obj/item/smithing/knifeblade/startfinish() finalitem = new /obj/item/kitchen/knife(src) finalitem.force = 4 + quality/2 finalitem.icon = 'icons/obj/smith.dmi' finalitem.icon_state = "dagger" + finalitem.name = "dagger" + finalitem.desc = "A dagger." var/mutable_appearance/overlay = mutable_appearance('icons/obj/smith.dmi', "daggerhilt") overlay.appearance_flags = RESET_COLOR finalitem.add_overlay(overlay) diff --git a/icons/obj/smith.dmi b/icons/obj/smith.dmi index c6fb94dce6..a40b9a2b19 100644 Binary files a/icons/obj/smith.dmi and b/icons/obj/smith.dmi differ