From 5d4a01148e14a8653c342eb722c097b0e53c4dff Mon Sep 17 00:00:00 2001 From: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Date: Mon, 8 Dec 2025 16:34:30 -0500 Subject: [PATCH] Smithing Expansion: Knives and Mothsilk (#31084) * Smith Knives Initial Commit * sprites and handling * Knife stuff, mothsilk * Touch ups * Linters * Apply suggestions from code review Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> * Abstract type desc --------- Signed-off-by: PollardTheDragon <144391971+PollardTheDragon@users.noreply.github.com> Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com> --- code/__DEFINES/ai/blackboard_defines.dm | 4 + .../machinery/vendors/departmental_vendors.dm | 2 + .../items/stacks/sheets/sheet_types.dm | 11 ++ .../living/basic/friendly/nian_caterpillar.dm | 43 +++++ .../smithing/components/knife_components.dm | 49 ++++++ .../smithing/machinery/kinetic_assembler.dm | 44 +++-- code/modules/smithing/smith_datums.dm | 110 +++++++++++++ code/modules/smithing/smithed_items/knives.dm | 151 ++++++++++++++++++ code/modules/smithing/smithing_cast.dm | 14 ++ icons/obj/machines/smithing_machines.dmi | Bin 12453 -> 11953 bytes icons/obj/smithing.dmi | Bin 4942 -> 6085 bytes icons/obj/stacks/organic.dmi | Bin 19171 -> 18576 bytes paradise.dme | 2 + 13 files changed, 419 insertions(+), 11 deletions(-) create mode 100644 code/modules/smithing/components/knife_components.dm create mode 100644 code/modules/smithing/smithed_items/knives.dm diff --git a/code/__DEFINES/ai/blackboard_defines.dm b/code/__DEFINES/ai/blackboard_defines.dm index 49a8b290ba1..eb8194fcca8 100644 --- a/code/__DEFINES/ai/blackboard_defines.dm +++ b/code/__DEFINES/ai/blackboard_defines.dm @@ -244,3 +244,7 @@ #define BB_GOLIATH_TENTACLES "BB_GOLIATH_TENTACLES" /// Key where goliath stores a hole it wants to get into #define BB_GOLIATH_HOLE_TARGET "BB_GOLIATH_HOLE" + +// Nian Caterpillar Keys +/// Key that stores the silk spin ability +#define BB_NIAN_CATERPILLAR_SPIN_MOTHSILK_ACTION "BB_nian_caterpillar_spin_mothsilk_action" diff --git a/code/game/machinery/vendors/departmental_vendors.dm b/code/game/machinery/vendors/departmental_vendors.dm index a7b1e63320e..0241148d29d 100644 --- a/code/game/machinery/vendors/departmental_vendors.dm +++ b/code/game/machinery/vendors/departmental_vendors.dm @@ -409,6 +409,8 @@ /obj/item/smithing_cast/component/lens_focus = 3, /obj/item/smithing_cast/component/lens_frame = 3, /obj/item/smithing_cast/component/trim = 3, + /obj/item/smithing_cast/component/knife_blade = 3, + /obj/item/smithing_cast/component/knife_handle = 3, /obj/item/smithing_cast/misc/egun_parts = 3, /obj/item/storage/bag/smith = 2, /obj/item/storage/box/crewvend = 1) diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm index e6dbcb1d7a7..456e98d94fd 100644 --- a/code/game/objects/items/stacks/sheets/sheet_types.dm +++ b/code/game/objects/items/stacks/sheets/sheet_types.dm @@ -475,6 +475,17 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( pull_effort = 70 loom_result = /obj/item/stack/sheet/durathread +/obj/item/stack/sheet/mothsilk + name = "mothsilk spool" + desc = "A spool of fresh mothsilk. Fine and light as air." + singular_name = "strand" + icon_state = "sheet-mothsilk" + icon = 'icons/obj/stacks/organic.dmi' + resistance_flags = FLAMMABLE + force = 0 + throwforce = 0 + merge_type = /obj/item/stack/sheet/mothsilk + ////////////////////////////// // MARK: CARDBOARD ////////////////////////////// diff --git a/code/modules/mob/living/basic/friendly/nian_caterpillar.dm b/code/modules/mob/living/basic/friendly/nian_caterpillar.dm index e6c4f4eb778..36a951002ec 100644 --- a/code/modules/mob/living/basic/friendly/nian_caterpillar.dm +++ b/code/modules/mob/living/basic/friendly/nian_caterpillar.dm @@ -49,6 +49,7 @@ var/list/innate_actions = list( /datum/action/innate/nian_caterpillar_emerge, + /datum/action/cooldown/mob_cooldown/spin_mothsilk = BB_NIAN_CATERPILLAR_SPIN_MOTHSILK_ACTION, ) /// List of stuff that we want to eat @@ -177,6 +178,28 @@ user.evolve(C, H) addtimer(CALLBACK(src, PROC_REF(emerge), C), COCOON_EMERGE_DELAY, TIMER_UNIQUE) +/// Place some grappling tentacles underfoot +/datum/action/cooldown/mob_cooldown/spin_mothsilk + name = "Spin Mothsilk" + desc = "Spin some mothsilk, consuming nutrition." + button_icon = 'icons/obj/stacks/organic.dmi' + button_icon_state = "stack-mothsilk-2" + cooldown_time = 20 SECONDS + click_to_activate = FALSE + shared_cooldown = NONE + +/datum/action/cooldown/mob_cooldown/spin_mothsilk/Activate(atom/target) + if(owner.nutrition < 425) + to_chat(owner, "You don't have enough nutrition to spin silk!") + return FALSE + if(!do_after(owner, 3 SECONDS)) + return FALSE + new /obj/item/stack/sheet/mothsilk(get_turf(owner)) + owner.nutrition -= 15 + owner.visible_message("[owner] spins some mothsilk!") + StartCooldown() + return TRUE + /datum/ai_controller/basic_controller/mothroach blackboard = list( BB_TARGETING_STRATEGY = /datum/targeting_strategy/basic, @@ -190,6 +213,7 @@ planning_subtrees = list( /datum/ai_planning_subtree/random_speech/moth_caterpillar, /datum/ai_planning_subtree/find_nearest_thing_which_attacked_me_to_flee, + /datum/ai_planning_subtree/spin_mothsilk, /datum/ai_planning_subtree/flee_target, /datum/ai_planning_subtree/find_food/nian_caterpillar, ) @@ -209,3 +233,22 @@ speech_chance = 2 emote_hear = list("flutters.", "chitters.", "chatters.") emote_see = list("flutters.", "chitters.", "chatters.") + +/datum/ai_planning_subtree/spin_mothsilk + /// Key storing the mothsilk spin action + var/action_key = BB_NIAN_CATERPILLAR_SPIN_MOTHSILK_ACTION + +/datum/ai_planning_subtree/spin_mothsilk/select_behaviors(datum/ai_controller/controller, seconds_per_tick) + var/mob/living/basic/nian_caterpillar/caterpillar = controller.pawn + var/datum/action/cooldown/mob_cooldown/spin_mothsilk/silk_action = controller.blackboard[action_key] + if(caterpillar.nutrition >= 425 && silk_action.IsAvailable()) + controller.queue_behavior(/datum/ai_behavior/spin_mothsilk, action_key) + return SUBTREE_RETURN_FINISH_PLANNING + +/datum/ai_behavior/spin_mothsilk/perform(seconds_per_tick, datum/ai_controller/controller, action_key) + . = ..() + var/datum/action/cooldown/mob_cooldown/spin_mothsilk/silk_action = controller.blackboard[action_key] + var/result = silk_action.Trigger() + if(result) + return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_SUCCEEDED + return AI_BEHAVIOR_INSTANT | AI_BEHAVIOR_FAILED diff --git a/code/modules/smithing/components/knife_components.dm b/code/modules/smithing/components/knife_components.dm new file mode 100644 index 00000000000..db618d0f5a2 --- /dev/null +++ b/code/modules/smithing/components/knife_components.dm @@ -0,0 +1,49 @@ +/obj/item/smithed_item/component/knife_blade + name = "Debug knife blade" + desc = ABSTRACT_TYPE_DESC + icon_state = "knife_blade" + part_type = PART_PRIMARY + hammer_time = 4 + +/obj/item/smithed_item/component/knife_blade/utility + name = "utility knife blade" + desc = "Smithed component part of a utility knife. The blade has yet to be honed." + materials = list(MAT_METAL = 18000) + finished_product = /obj/item/kitchen/knife/smithed/utility + +/obj/item/smithed_item/component/knife_blade/throwing + name = "throwing knife blade" + desc = "Lightweight smithed component part of a knife. The shape is optimally balanced." + materials = list(MAT_METAL = 9000, MAT_TITANIUM = 9000) + finished_product = /obj/item/kitchen/knife/smithed/thrown + +/obj/item/smithed_item/component/knife_blade/combat + name = "combat knife blade" + desc = "Heavyweight smithed component part of a knife. A toothed edge runs across the top." + materials = list(MAT_TITANIUM = 9000, MAT_PLASMA = 9000) + finished_product = /obj/item/kitchen/knife/smithed/combat + +/obj/item/smithed_item/component/knife_handle + name = "Debug knife handle" + desc = ABSTRACT_TYPE_DESC + icon_state = "knife_handle" + part_type = PART_SECONDARY + hammer_time = 2 + +/obj/item/smithed_item/component/knife_handle/utility + name = "utility knife handle" + desc = "Smithed component part of a utility knife. The handle fits comfortably in your hand." + materials = list(MAT_METAL = 6000) + finished_product = /obj/item/kitchen/knife/smithed/utility + +/obj/item/smithed_item/component/knife_handle/throwing + name = "throwing knife blade" + desc = "Lightweight smithed component part of a knife. There is a small ring on the end of the handle." + materials = list(MAT_METAL = 3000, MAT_TITANIUM = 3000) + finished_product = /obj/item/kitchen/knife/smithed/thrown + +/obj/item/smithed_item/component/knife_handle/combat + name = "combat knife blade" + desc = "Heavyweight smithed component part of a knife. The handle is thick and rugged." + materials = list(MAT_TITANIUM = 3000, MAT_PLASMA = 3000) + finished_product = /obj/item/kitchen/knife/smithed/combat diff --git a/code/modules/smithing/machinery/kinetic_assembler.dm b/code/modules/smithing/machinery/kinetic_assembler.dm index db7baf5d18a..b624599b46e 100644 --- a/code/modules/smithing/machinery/kinetic_assembler.dm +++ b/code/modules/smithing/machinery/kinetic_assembler.dm @@ -16,7 +16,7 @@ /// Trim component var/obj/item/smithed_item/component/trim /// Finished product - var/obj/item/smithed_item/finished_product + var/obj/item/finished_product /// Products that are produced in batches var/list/batched_item_types = list( /obj/item/smithed_item/lens, @@ -230,10 +230,21 @@ for(var/datum/smith_quality/quality in quality_list) if(quality.stat_mult < lowest.stat_mult) lowest = quality - finished_product.quality = lowest - finished_product.material = trim.material - finished_product.set_stats() - finished_product.update_appearance(UPDATE_NAME) + if(istype(finished_product, /obj/item/smithed_item)) + var/obj/item/smithed_item/product = finished_product + product.quality = lowest + product.material = trim.material + product.set_stats() + product.update_appearance(UPDATE_NAME) + finished_product = product + else if(istype(finished_product, /obj/item/kitchen/knife/smithed)) // We need to separate these because of their different paths + var/obj/item/kitchen/knife/smithed/product = finished_product + product.quality = lowest + product.material = trim.material + product.set_stats() + product.update_appearance(UPDATE_NAME) + product.update_icon(UPDATE_OVERLAYS) + finished_product = product qdel(primary) qdel(secondary) qdel(trim) @@ -256,12 +267,23 @@ if(is_type_in_typecache(finished_product, batched_item_types)) total_extras += clamp(round(batch_extras * i.bit_productivity_mod / 2), 1, 4) for(var/iterator in 1 to total_extras) - var/obj/item/smithed_item/extra_product = new finished_product.type(src.loc) - extra_product.quality = finished_product.quality - extra_product.material = finished_product.material - extra_product.set_stats() - extra_product.update_appearance(UPDATE_NAME) - extra_product.scatter_atom() + var/obj/item/product + if(istype(finished_product, /obj/item/smithed_item)) + var/obj/item/smithed_item/current_product = finished_product + var/obj/item/smithed_item/extra_product = new finished_product.type(src.loc) + extra_product.quality = current_product.quality + extra_product.material = current_product.material + extra_product.set_stats() + product = extra_product + else if(istype(finished_product, /obj/item/kitchen/knife/smithed)) // We need to separate these because of their different paths + var/obj/item/kitchen/knife/smithed/current_product = finished_product + var/obj/item/kitchen/knife/smithed/extra_product = new finished_product.type(src.loc) + extra_product.quality = current_product.quality + extra_product.material = current_product.material + extra_product.set_stats() + product = extra_product + product.update_appearance(UPDATE_NAME) + product.scatter_atom() finished_product = null diff --git a/code/modules/smithing/smith_datums.dm b/code/modules/smithing/smith_datums.dm index 5c1d3ef937e..9e93e44c199 100644 --- a/code/modules/smithing/smith_datums.dm +++ b/code/modules/smithing/smith_datums.dm @@ -84,6 +84,12 @@ var/fire_rate_multiplier = 1.0 /// Multiplier for tool uses and lens uses. var/durability_mult = 1.0 + /// Force multiplier + var/force_mult = 1.0 + /// Throw force multiplier + var/throw_force_mult = 1.0 + /// Throw embed chance multiplier + var/embed_chance_mult = 1.0 /// Is this material valid for secondary goals? var/secondary_goal_candidate = FALSE /// How much is this secondary goal worth? @@ -103,6 +109,9 @@ durability_mult = MINOR_MATERIAL_BUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_EASY + force_mult = MINOR_MATERIAL_DEBUFF + throw_force_mult = MINOR_MATERIAL_DEBUFF + embed_chance_mult = MINOR_MATERIAL_DEBUFF color_tint = "#78787b" /datum/smith_material/silver @@ -116,6 +125,9 @@ projectile_damage_multiplier = MINOR_MATERIAL_DEBUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_MEDIUM + force_mult = MINOR_MATERIAL_DEBUFF + throw_force_mult = MINOR_MATERIAL_BUFF + embed_chance_mult = MINOR_MATERIAL_DEBUFF color_tint = "#f0f0f0" /datum/smith_material/gold @@ -133,6 +145,9 @@ durability_mult = MINOR_MATERIAL_DEBUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_MEDIUM + force_mult = MINOR_MATERIAL_DEBUFF + throw_force_mult = MINOR_MATERIAL_BUFF + embed_chance_mult = MINOR_MATERIAL_DEBUFF color_tint = "#ffd659" /datum/smith_material/plasma @@ -146,6 +161,9 @@ durability_mult = MINOR_MATERIAL_DEBUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_EASY + force_mult = MINOR_MATERIAL_BUFF + throw_force_mult = MINOR_MATERIAL_BUFF + embed_chance_mult = MAJOR_MATERIAL_DEBUFF color_tint = "#ba3692" /datum/smith_material/titanium @@ -161,6 +179,9 @@ fire_rate_multiplier = MINOR_MATERIAL_DEBUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_EASY + force_mult = MINOR_MATERIAL_BUFF + throw_force_mult = MINOR_MATERIAL_DEBUFF + embed_chance_mult = MINOR_MATERIAL_BUFF color_tint = "#c1c9cf" /datum/smith_material/uranium @@ -182,6 +203,9 @@ secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_MEDIUM color_tint = "#2c8c46" + force_mult = MAJOR_MATERIAL_BUFF + throw_force_mult = MAJOR_MATERIAL_BUFF + embed_chance_mult = MAJOR_MATERIAL_DEBUFF /// Radioactive, woah var/radiation_amount = 15 @@ -194,6 +218,9 @@ tool_failure_mult = MINOR_MATERIAL_DEBUFF tool_productivity_mult = MAJOR_MATERIAL_BUFF durability_mult = MAJOR_MATERIAL_BUFF + force_mult = MAJOR_MATERIAL_BUFF + throw_force_mult = MINOR_MATERIAL_BUFF + embed_chance_mult = MAJOR_MATERIAL_DEBUFF color_tint = "#aef2f4" /datum/smith_material/bluespace @@ -208,6 +235,9 @@ tool_productivity_mult = MAJOR_MATERIAL_BUFF power_draw_mult = MAJOR_MATERIAL_BUFF projectile_damage_multiplier = MAJOR_MATERIAL_BUFF + force_mult = MAJOR_MATERIAL_DEBUFF + throw_force_mult = MAJOR_MATERIAL_BUFF + embed_chance_mult = MAJOR_MATERIAL_BUFF color_tint = "#2e50b7" /datum/smith_material/plasteel @@ -226,6 +256,9 @@ durability_mult = MAJOR_MATERIAL_BUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_MEDIUM + force_mult = MAJOR_MATERIAL_BUFF + throw_force_mult = MAJOR_MATERIAL_DEBUFF + embed_chance_mult = MINOR_MATERIAL_DEBUFF color_tint = "#555053" /datum/smith_material/plastitanium @@ -245,6 +278,9 @@ durability_mult = MAJOR_MATERIAL_BUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_HARD + force_mult = MAJOR_MATERIAL_BUFF + throw_force_mult = MAJOR_MATERIAL_DEBUFF + embed_chance_mult = MAJOR_MATERIAL_DEBUFF color_tint = "#8a838a" /datum/smith_material/iridium @@ -262,6 +298,9 @@ power_draw_mult = MINOR_MATERIAL_BUFF projectile_damage_multiplier = MINOR_MATERIAL_BUFF durability_mult = MINOR_MATERIAL_BUFF + force_mult = MINOR_MATERIAL_BUFF + throw_force_mult = MINOR_MATERIAL_BUFF + embed_chance_mult = MINOR_MATERIAL_BUFF color_tint = "#62c3cc" /datum/smith_material/palladium @@ -279,6 +318,9 @@ power_draw_mult = MINOR_MATERIAL_DEBUFF projectile_damage_multiplier = MINOR_MATERIAL_DEBUFF durability_mult = MINOR_MATERIAL_BUFF + force_mult = MINOR_MATERIAL_BUFF + throw_force_mult = MAJOR_MATERIAL_BUFF + embed_chance_mult = MAJOR_MATERIAL_BUFF color_tint = "#d36717" /datum/smith_material/platinum @@ -296,6 +338,9 @@ projectile_damage_multiplier = MINOR_MATERIAL_BUFF power_draw_mult = MINOR_MATERIAL_BUFF durability_mult = MINOR_MATERIAL_BUFF + force_mult = MAJOR_MATERIAL_BUFF + throw_force_mult = MINOR_MATERIAL_BUFF + embed_chance_mult = MAJOR_MATERIAL_BUFF color_tint = "#c7d3f9" /datum/smith_material/brass @@ -316,9 +361,74 @@ durability_mult = MINOR_MATERIAL_DEBUFF secondary_goal_candidate = TRUE secondary_goal_difficulty = SMITH_GOAL_MEDIUM + force_mult = MAJOR_MATERIAL_DEBUFF + throw_force_mult = MAJOR_MATERIAL_DEBUFF + embed_chance_mult = MAJOR_MATERIAL_BUFF color_tint = "#97681b" #undef MAJOR_MATERIAL_BUFF #undef MINOR_MATERIAL_BUFF #undef MINOR_MATERIAL_DEBUFF #undef MAJOR_MATERIAL_DEBUFF + +// Wrappings + +/datum/handle_wrapping + var/name = "Boring Debug" + /// Wrap overlay icon + var/wrap_overlay = "basic_wrap" + /// Speed modifier + var/speed_mod = 0.0 + /// Productivity mod + var/productivity_mod = 0 + /// damage increase + var/force_increase = 0 + /// throw damage increase + var/throw_force_increase = 0 + /// throw embed chance increase + var/embed_chance_increase = 0 + /// Is the wrapping conductive + var/conductive = FALSE + +/datum/handle_wrapping/cable + name = "cable wrapping" + wrap_overlay = "cable_wrap" + speed_mod = 0.1 + productivity_mod = -0.1 + force_increase = 1 + conductive = TRUE + +/datum/handle_wrapping/cloth + name = "cloth wrapping" + wrap_overlay = "cloth_wrap" + speed_mod = 0.1 + productivity_mod = 0.1 + +/datum/handle_wrapping/leather + name = "leather wrapping" + wrap_overlay = "leather_wrap" + force_increase = 1 + throw_force_increase = 1 + embed_chance_increase = 5 + +/datum/handle_wrapping/durathread + name = "durathread wrapping" + wrap_overlay = "durathread_wrap" + speed_mod = 0.15 + productivity_mod = 0.15 + +/datum/handle_wrapping/goliath_hide + name = "goliath hide wrapping" + wrap_overlay = "goliath_wrap" + force_increase = 1 + throw_force_increase = 1 + embed_chance_increase = 10 + +/datum/handle_wrapping/mothsilk + name = "mothsilk wrapping" + wrap_overlay = "moth_wrap" + speed_mod = 0.2 + productivity_mod = 0.2 + force_increase = 1.5 + throw_force_increase = 1.5 + embed_chance_increase = 10 diff --git a/code/modules/smithing/smithed_items/knives.dm b/code/modules/smithing/smithed_items/knives.dm new file mode 100644 index 00000000000..552d8af6dbd --- /dev/null +++ b/code/modules/smithing/smithed_items/knives.dm @@ -0,0 +1,151 @@ +/obj/item/kitchen/knife/smithed + name = "debug smithed knife" + desc = ABSTRACT_TYPE_DESC + icon = 'icons/obj/smithing.dmi' + icon_state = "debug" + slot_flags = ITEM_SLOT_BELT + + new_attack_chain = TRUE + /// The quality of the item + var/datum/smith_quality/quality + /// The material of the item + var/datum/smith_material/material + /// Base Speed modifier + var/base_speed_mod = 0 + /// Speed modifier + var/speed_mod = 1.0 + /// Base productivity modifier + var/base_productivity_mod = 0 + /// Productivity mod + var/productivity_mod = 1.0 + /// damage increase + var/force_increase = 0 + /// throw damage increase + var/throw_force_increase = 0 + /// throw embed chance increase + var/embed_chance_increase = 0 + /// Handle wrappings + var/datum/handle_wrapping/wrap_type + +/obj/item/kitchen/knife/smithed/Initialize(mapload) + . = ..() + set_name() + +/obj/item/kitchen/knife/smithed/proc/set_name() + if(!quality) + return + if(!material) + name = "[quality.name] " + name + return + name = "[quality.name] [material.name] [initial(name)]" + +/obj/item/kitchen/knife/smithed/proc/set_stats() + speed_mod = 1 + (base_speed_mod * quality.stat_mult * material.tool_speed_mult) + productivity_mod = 1 + (base_productivity_mod * quality.stat_mult * material.tool_productivity_mult) + force_increase = initial(force_increase) * quality.stat_mult * material.force_mult + throw_force_increase = initial(throw_force_increase) * quality.stat_mult * material.throw_force_mult + embed_chance_increase = initial(embed_chance_increase) * quality.stat_mult * material.embed_chance_mult + // Now we adjust the item's actual stats + force = initial(force) + force_increase + throwforce = initial(throwforce) + throw_force_increase + embed_chance = initial(embed_chance) + embed_chance_increase + // We adjust bit productivity and similar stats here because they are one and the same + bit_productivity_mod = initial(bit_productivity_mod) * productivity_mod + toolspeed = initial(toolspeed) * speed_mod + + // Color + color = material.color_tint + // Radioactive baby + if((material == /datum/smith_material/uranium || istype(material, /datum/smith_material/uranium)) && quality) + var/datum/component/inherent_radioactivity/radioactivity = AddComponent(/datum/component/inherent_radioactivity, 100 * quality.stat_mult, 0, 0, 1.5) + START_PROCESSING(SSradiation, radioactivity) + +/obj/item/kitchen/knife/smithed/update_overlays() + . = ..() + overlays.Cut() + if(!wrap_type) + . += "basic_wrap" + return + . += wrap_type.wrap_overlay + +/obj/item/kitchen/knife/smithed/update_name() + . = ..() + set_name() + +/obj/item/kitchen/knife/smithed/proc/attach_wrapping(datum/handle_wrapping/wrap) + force += wrap.force_increase + throwforce += wrap.throw_force_increase + toolspeed += wrap.speed_mod + bit_productivity_mod += wrap.productivity_mod + embed_chance += wrap.embed_chance_increase + wrap_type = wrap + update_icon(UPDATE_OVERLAYS) + +/obj/item/kitchen/knife/smithed/proc/remove_wrapping() + force -= wrap_type.force_increase + throwforce -= wrap_type.throw_force_increase + toolspeed -= wrap_type.speed_mod + bit_productivity_mod -= wrap_type.productivity_mod + embed_chance -= wrap_type.embed_chance_increase + wrap_type = null + update_icon(UPDATE_OVERLAYS) + +/obj/item/kitchen/knife/smithed/item_interaction(mob/living/user, obj/item/used, list/modifiers) + . = ..() + if(!isstack(used)) + return ITEM_INTERACT_COMPLETE + var/obj/item/stack/stacked_item = used + if(wrap_type) + to_chat(user, "There is already a wrap on [src]!") + return ITEM_INTERACT_COMPLETE + var/wrap_to_attach + if(istype(stacked_item, /obj/item/stack/cable_coil)) + wrap_to_attach = /datum/handle_wrapping/cable + if(istype(stacked_item, /obj/item/stack/sheet/cloth)) + wrap_to_attach = /datum/handle_wrapping/cloth + if(istype(stacked_item, /obj/item/stack/sheet/durathread)) + wrap_to_attach = /datum/handle_wrapping/durathread + if(istype(stacked_item, /obj/item/stack/sheet/leather)) + wrap_to_attach = /datum/handle_wrapping/leather + if(istype(stacked_item, /obj/item/stack/sheet/animalhide/goliath_hide)) + wrap_to_attach = /datum/handle_wrapping/goliath_hide + if(istype(stacked_item, /obj/item/stack/sheet/mothsilk)) + wrap_to_attach = /datum/handle_wrapping/mothsilk + if(!wrap_to_attach) + to_chat(user, "You cannot wrap [stacked_item] around [src]!") + return ITEM_INTERACT_COMPLETE + if(do_after_once(user, 5 SECONDS, target = src)) + if(stacked_item.use(5)) + attach_wrapping(wrap_to_attach) + return ITEM_INTERACT_COMPLETE + +/obj/item/kitchen/knife/smithed/wirecutter_act(mob/living/user, obj/item/I) + . = ..() + if(wrap_type) + to_chat(user, "You cut off the wrap on [src].") + remove_wrapping() + +/obj/item/kitchen/knife/smithed/utility + name = "utility knife" + desc = "A custom-made knife designed for general purpose use." + icon_state = "utility_knife" + base_speed_mod = 0.25 + base_productivity_mod = 0.25 + +/obj/item/kitchen/knife/smithed/thrown + name = "throwing knife" + desc = "A lightweight, balanced throwing knife. The sharp blade enhances the chance to embed." + icon_state = "throwing_knife" + base_speed_mod = -0.25 + base_productivity_mod = -0.25 + throw_force_increase = 6 // 16 throw force at standard, 22 throw force at masterwork + embed_chance_increase = 25 // +25% chance to embed at standard, +50% at masterwork + +/obj/item/kitchen/knife/smithed/combat + name = "combat knife" + desc = "A heavyweight, toothed-edge combat knife. The thick blade is designed to rip and tear, and it has an integrated bayonet mount." + icon_state = "combat_knife" + base_productivity_mod = -0.25 + force_increase = 6 // 16 force at standard, 22 force at masterwork + embed_chance_increase = 5 + bayonet = TRUE diff --git a/code/modules/smithing/smithing_cast.dm b/code/modules/smithing/smithing_cast.dm index 4456e68dd4f..dcc53a86d03 100644 --- a/code/modules/smithing/smithing_cast.dm +++ b/code/modules/smithing/smithing_cast.dm @@ -166,6 +166,20 @@ product_type = /obj/item/smithed_item/component/lens_focus basin_state = "cast_focus" +/obj/item/smithing_cast/component/knife_blade + name = "knife blade cast" + desc = "A cast for creating knife blades." + icon_state = "knife_blade_cast" + product_type = /obj/item/smithed_item/component/knife_blade + basin_state = "cast_knife_blade" + +/obj/item/smithing_cast/component/knife_handle + name = "knife handle cast" + desc = "A cast for creating knife handles." + icon_state = "knife_handle_cast" + product_type = /obj/item/smithed_item/component/knife_handle + basin_state = "cast_knife_handle" + /obj/item/smithing_cast/component/trim name = "trim cast" icon_state = "trim_cast" diff --git a/icons/obj/machines/smithing_machines.dmi b/icons/obj/machines/smithing_machines.dmi index 55452a70cbe4c6fd5fd498cc504d4ca197570bb5..5aa23d313a75da0776e69e5f4a444fa9cd050bf0 100644 GIT binary patch literal 11953 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 XFb`*El?VJ49i*%E@NSu=L)8BQBQl)U literal 12453 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
Lx)+GNYa&m-Tz41L&<{Z?1lg$QQXl%S$EA+nWnY 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 diff --git a/icons/obj/smithing.dmi b/icons/obj/smithing.dmi index 9ad42d26bf71cfbffb0085556889a9fcc0808ef0..b3336d7222329e31abfedfb8e6337d93676e0c55 100644 GIT binary patch literal 6085 zcma)=cT`i|n#Myj5J5s$=>h2wL5g$N6K`UqO$WLO0ssJXx;h&7 zFV`P`4eBeG^G$L0MF4=zDhzHJpyBNA=;!7W;O6ZG0EFaaWEy()@_^%}@xrg2?2f$W z3^OW5idxBUvOAbaYTSO4F_%Rt9B8f-#1nn+GV~6Qcl*TI^y18RC;fIUXfk9vGGNzu z0@-+dSOGcza866~j{A7-P@jmn-2J127B_Y`m;o^hD^HaJf4CrAZNuD5&rDwjq?5r;eY^i8ARv~A%2SH5(^d5P>E1gOo>-Zj|qSSOUo@Aqp8(lVH-z)d~ zbrqXG@4v?|27quYSJMpp12tc_J$(Q3^mwN`fXiz}f6V9bP0TgEIOZEN<3@SHJ_KAe zbCpw^y2|-of4yC1dAIl2RrGw?Yx)X(U}f+ty74uN=X+xVH#^bRCZV$dd!t944ktg# z^RJ_(%$%;&Qz~Qy*0>}U`dv$J=$tn-$T`KaQge35pjPb>Fhuu{O87i>jyt%SJ4scV zKR&x5?|U8qz$&P#p#~4h+kWMpXxkq;fH5T-_KdZ4-wiU;es7c_?x>#lYL*45+Qcn; zmC-bZ8rCZ~Wr;9lz6Gj+Xy~wL4w+Ur(Ipu;Rx+S&3dcKqmL(SI@LPSRR1^g|_P>qe zz58{mL63F-OR3Y*G0{q#f2FACKR%Y1?Z2}V8TDz05Iyg|^U7sDTYjz6JCgxM&5Hv6 z*TiqHIXMu0aek-fy4Lw>t;z$}XDMncRb|ka6t&f3*fsa?rk#j6eXaKE7CS9JuNAwf zM4b4D=i~e4jjwMnoc=go--u^ZBd3HYq3b0WW>Mwd#P zS;o~7TzDMFqN%2;qI_@P{w zS!YD(=~xkYe2>7KBaQFomm2Zba`3Wc-daDK-C<{DJP`YKIUn{0mV9}no${ItH>q!; zBx&C0pb%H=dCKp`3Qd56&ewK1_%b20r$xaTcbtv$x%eB0UV+tF91h@li(s1 zKCslEruGChxF}VRip5CCPf0}VxsPOq@*_R?ek(}#D^!(r%7me6$)6={E4T>BHt2A( zn8v)6=H?R-LlXzV9Dt*oCa(%^zVM;v`AZVV-K<@Cp1*Br2k%AP1&$*SC|<)METC9P zi=20Uvv2-rax3?C5)DoU3^Z^g?_BV=3%>_5Sa&2p#o{2iLCQm<3S?_@EoKgj^f=`3 zQ1P>HCQ6R0u{ts?)H@EkAH)dkcaTV^W?-T~H=M8V6Y5aeD5nmQDp0cP`w4Z+t-G61 z#Nx<%B43&C1Hp-xtV4|;&gKYTy;q)CsH|;l3asOBaFwI&!OEo<{;1o>J?|ra&0);? z1=o1?@5y%ui}C#wxgO$vob_UMf_S{WYpFGWP@pj0ah7-vFbh#lJRJrrlt~rEN6Ye7 zVR(3yG8H%IWSD$_46}U0kCz}iYtPKX|bFfRrRxr+j(39kV!kUGLggU^R~7d!_p_FzUz87S!LFP2 zGEo$Rw$|T3MJ)HiM(Q)b43AyYb~rZwe!g~Lf^is5>k$=5q~6VBpUw$>xsb1ihP*rWA~}xY zjhY%}V6-$eLVf6OER2jMkGwk12drYi1&EM?fad1oBykveLO@9ktB$VMu*@trcEGT5 z+TF5wno~T1>f;huP?5H|a)-g9_f}})3jkvOjFd5b;Ffy*0Lh?P@qBk_qhNIkBI#f) z#-P{D$B-j&*DORMu&XLH=hlx@YD2a>VWpzB0`HQ?g+fiywlpT5Ec%I_X0kTq_AHC+ zfNJ<<>TVpwii}u7q~nbX*x;rE%)BW*maNFxKvlbv+nJiVLEk5+th?>{cnx1&(hMAPfLTQsQG=N zaLX?nQI=Fx%w2w`P)bf3jy~Ufu6hRla`U^580>8Un&5Jca|}}x_J<-@sC$3C_71W` z`B-l;%3YP=!21G!M4G9>18+p$CKIl8_8G=0B_*kZC8SSFwK(a~vA)0p)JKw=<$~N} zVLI6JJU40S%o9rL%BceD#7iA_QnG=_-0J)5*#05dKE8ur)ERL)_1KN5U6+P_R()*- z%-(B;bLr0baG@BC(V?H&^`hy`7~Bl@X_jatYs1vt@*O~_OVGHr#w4#c?3B_2G+Qw05Y&xn#O;SMX`ybxnvlkE)cPpbIW8vVHi3hK!jCMg+0fw$ zi*$w8)NnC9l>x32Lben)P=s~3xq|P*#7YW=Pe|Fyy)eVnWx?y>{4C)LAACgVJ!$`a z#QKz-wJ%<`{Y=U@=BN7BESLHa7B}qUiQ#p!cHc*Yo_&0F%kD`^!1|2}RGXCP#^sW} z^kmO7e}M}Az`d(wtA-bp0*;%hEgBY$#AceTaO|T}{G3em*&Nd3?5TMZBtz9?)o4uX zj>0295{LGp5Wt_*ynoh8OhPd&EAtL+s8F$w-}gKds>5I zldU_>bA<5G%AqRO@(NplV;LJ?w<4RL0gos5&uAUKhj-2F3i4DsIEL(ua2FL^ZuhvigQ91q)M3twK`iWz27ZsZ(p$J3IP+}uz*Bfzr-V_ zOYUd=(2S`1!TN;|KITNO5hA;{*GnHf&HEVgB|4%v=N#f z@;S646uHsaK%X2RcyTw&_$q)n&{WIE0)x6yLGQV?bX9v>)=^E?aCBfh=rZ61)FySB z7E#*{?xVjoJ4`!&GS*|r%~!2HM`q5QU4^K;rTR!1WkoOtE_Cf=k8VxR14%zt7M7=e z`g_gSf`k&)r)x)6AJ#;@`H)LGz1NkW=)v7`*o%vFm;*W&^j6x5g*;`(Qz2ZJd<_kk z;rM;|gu&0M{@g@eDxnW18T5~jLb_%QxV*+?L9C~Uu*OlGbXK4wFou%3Y1rR6JdW-q zfv4cvFEX=l-q}b*Na1vfK};Em?9=hVQB+`Li{$p;&V@AL#$oT-X2mo-*v?MFwVjLG z-7Pjb>HAdZpP_gw@7=Yz!zp=5s|}yo^2pJ!NRyFwcG+hSC_^@X6*#eLUqBU8&NT5r zOG)2u!VJ?3Z^3qn+48fp?deQ*hta)K8}zZ~`DCm%zf-sF4%x-I*{(^Gh!%I%R|C)^dJ1n@}TV1RWVuAz6-MUj+dwjy9$O(_4+|mR5angKma>)tE2~7#DwwkOH>afb1HtZ z#jG@t(BOr@VmYe09UB7t{9=cwny-Ae%^lEePxyU!W6i(t&m;`S#rw@KmI4)MMNuE= zsCrP6y|iv5_&)x7%g$O47CD!=SzcCFbhP$lDfXA|o@Pp5$i11{YtJ_M`x7(N)mV~6 z!7q6XCzQkS0n>zK?Fa&a#+%3!To@^!(b&L_B`K zu|B`wy}YqihL?8;OKj^tcG9aUziRDWb~^8Z>wYJ&%dDuHYZ!s`aFtT!x*U+0^bEUVOY?atn*%tsv79fJX7lF|8yr}@ih}H2C_Y4PBY);f)JON<+ZRB(o*5+*Tj8eLQonLRGg+6A z$uUs2v&6L?L=gz+$AI}COy;yyxMnu16n`t*re&~n5fo``i#tNSh>h*8f8X(EA zeH0GQ&+9=VxsgPCC>@@Xu175E+oo`QHn$||I$z;+Pk<%_HFJ1gD54^-jqoh~vyj+Y z7k<1m4>D9NA8zc`AK}TnT1vh(P4W!(oDabZEn46yI#X{e`BqQ?vti>tiSXY(iKcBVfn0XwD} z_f>c&ASawPCS7p#3x5JUoGw8cX?6A4$67AuN;R^ZXh~0rA8+|--H2%D07U?7NU2^M zPV>*-djGSnxLw)hMl3ZW(ZJY+R^8e1hDuaO!u}K7Umhrql21n}evgj2%S5(c@-AMz z;5;Ymtn7g4THBf050M25a2>U(WyV5Fs{um^a4_3J{4_R3^W=S%2AzL4WRfPCiT5-{ z=v$d8Wuo6#bCz7X>8?_*=+>!&gcHag>+_o!E!H$cJrj;8INca%!fKf=fwCwZTC$hc z9m3c*B>llG^20?BNB$igyM)nc>>go z>XzCV&R{7X)9PgoXWyHPmEGU20^1MVpK@Q`8sBJ7DXZ@2%Ig(W&F7(dXsGgJkAzi< zp8?L@N9|>O<8V-KZoT&n1jv3G*`qPgWScHFrBOAbC?PJi@VrCxUWkAUSDB#@Z|J;D zk@@1Ph7SNH**~DMFfrZ9|C+XR!%131eVXt7iH`(2qxdS9rR~5`5I#YW99=6U{>@~eK%WCp@1Jj`LS+vO`C4$Y`Bk&<=)b}9{)d!U$_36e9Av#31~J+?Rm#x`^A0ACiB-7YkE1LP5ObU$sHVF%r5Z zvv8}1^v(*KB3B$7dba?BwDbH)(u8Ql#YI{yfT61V4<3GE7H6{KTtOJ~apjo56TRp5 z;MXMDQ0`#H5%U(eC6_itex?*?h4*#C>P_9p&>|TZ*j=J#(`K*8C2s&#@cr)!$|Xis z>_3>_5egA{1c>w8E_*H7Gk%&(tq`lD{&gLqk>*a>&`e&p`+}TiU+5=|kVlwEOnPOV ztx}%1m9;c=vEVY8UTEU5&dBRQUwmcAMD>H3EmCdN=bwg=MMA;(3(n$!{7jH^moQ5~ z3XwD*=Tvs+ZY7k0qk2w=_$Z)cAZylkeXOf+OwRb%rt5E&T#%QTv-o4@YpgV22Q|iP zZ^gywKRa6;Wrlg4+l@mDpf6d;>OE)VznD!8sRvq_cdU$&gvxnFHO;vBRTozc-7kJ| zA`9$)hSlK?_+*h?cI)t2-?XGEX03sz3ED|du+6%6p9^|yOaMN&oS))Yqy;65P|r35 z7SV!J%BwxHgzm#iMZ+~gjsW85t9&{8fZb=6A+1G^`LJrQ*N+#W(u$QkXSZ3P7C6s7 zSv1R;3MnoKO;eex$ptPl>v-kCc( zu=Wds^?7KJOIAu$Njc4fHGgKNdgbf9XGYC557N_`uPyJZo8kYT_VAD9ad;!Ky@9f> zG|59mrzYuTyd^NMr{&KQdH7_Fm7|e0Q*k$u-!P8zbD0X}CCnP@>D!>28su{d249~R z{8HwfENx)}(qCt@mI<$&sR>K+dneM?+S(dXB>*u!PTj5&irCV3Z!3CagHbtkjq;jl z`cR-0`bl2kwZ}Nv?%Z?w&6kfO8DC39Eu^LnhZ-jYSk9w4NnRd7K?3YtT*C%aMAd^h zE}{`z@tT$>g|3)Gg2{v(`WsU?e#@#Uk^CkEc1G%~_!Mxh5h6TK( z$9bd>Es!S=-B6pYa>gIy+jG{_Hj#n&@%G)v*o}ihj3CouGxx<{reTBtgMy5j;^N}O z;a`>aySVaz_lB!&N=p3wdxzvAqlJV;1Nn7SQ4e&qaJm8nm1fEF8tm^ZAu=+ICDfNb z*11+Xref9IN{_zR`uA$`RSqmfJ?*X4OP%&<)!K)FDRO)yB8527<~cEM@Q8i4=}(`O zvqi(I>Y@nAr#HMU5?3pz4gK~jOP;%m58oJ7viba&ZtIaqT# zO)u2LRBIlDktj$#4Q)62WAuz@qfOmBAJKSp=kER|{b68q=kJvX>+NWQ=*98^a0|%q z>uSq;U<;BmsTEw6slp>4nzB4ZgiEG)NVIdkIOc?(@QRUnW{_Q#{J&xH;eA%9Zn4tw zH-AGrSh3CLLn^S;kVygw5U3JMA% z+yEhs;~34Q-a~&(MDcydnAG#WXB!&Ue+qB2u|yf{wt0olK^eKrrlzKJx1lmKl($OM zgzmv^^6Q3^jL(1H`SN(+f^__Im+09{QZjW@7IvHt<&HJKX# literal 4942 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 z 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 diff --git a/paradise.dme b/paradise.dme index b7d876dfd58..f080269edea 100644 --- a/paradise.dme +++ b/paradise.dme @@ -3164,6 +3164,7 @@ #include "code\modules\smithing\smith_machinery.dm" #include "code\modules\smithing\smithing_cast.dm" #include "code\modules\smithing\components\inserts_components.dm" +#include "code\modules\smithing\components\knife_components.dm" #include "code\modules\smithing\components\lens_components.dm" #include "code\modules\smithing\components\tool_bits_components.dm" #include "code\modules\smithing\components\trim.dm" @@ -3174,6 +3175,7 @@ #include "code\modules\smithing\machinery\power_hammer.dm" #include "code\modules\smithing\machinery\smart_hopper.dm" #include "code\modules\smithing\smithed_items\inserts.dm" +#include "code\modules\smithing\smithed_items\knives.dm" #include "code\modules\smithing\smithed_items\lens.dm" #include "code\modules\smithing\smithed_items\misc_smithed.dm" #include "code\modules\smithing\smithed_items\tool_bits.dm"