Expanded productivity bit usage (#30476)

This commit is contained in:
PollardTheDragon
2025-10-01 10:49:32 -04:00
committed by GitHub
parent 8f4111e05a
commit 37bcc87b39
6 changed files with 37 additions and 9 deletions

View File

@@ -348,6 +348,9 @@
var/initial_volume = 0 // the total some of reagents this food had initially
for(var/ingredient in list_reagents)
initial_volume += list_reagents[ingredient]
// Total slices after factoring in productivity value of the knife
slices_num = clamp(slices_num * used.bit_productivity_mod, 1, round(slices_num * 2.5))
// we want to account for how much has been eaten already, reduce slices by how is left vs. how much food we started with
slices_num = clamp(slices_num * (reagents.total_volume / initial_volume), 1, slices_num)
var/slices_lost
@@ -362,6 +365,9 @@
"<span class='notice'>You crudely slice [src] with [used], destroying some in the process!</span>"
)
slices_lost = rand(1, min(1, round(slices_num / 2)))
// Low efficiency means more loss.
if(used.bit_efficiency_mod < 1)
slices_lost = slices_num * (1 - used.bit_efficiency_mod)
var/reagents_per_slice = reagents.total_volume/slices_num
for(var/i in 1 to (slices_num - slices_lost))
var/obj/slice = new slice_path (loc, TRUE)

View File

@@ -23,7 +23,7 @@
/obj/item/smithed_item/tool_bit
)
/// Amount of extra items made in batches
var/batch_extras = 2
var/batch_extras = 1
/obj/machinery/smithing/kinetic_assembler/Initialize(mapload)
. = ..()
@@ -251,14 +251,18 @@
playsound(src, 'sound/magic/fellowship_armory.ogg', 50, TRUE)
finished_product.forceMove(src.loc)
SSblackbox.record_feedback("tally", "smith_assembler_production", 1, "[finished_product.type]")
// Modify based on productivity
var/total_extras = clamp(round(1 * i.bit_productivity_mod / 2), 0, 2)
if(is_type_in_typecache(finished_product, batched_item_types))
for(var/iterator in 1 to batch_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()
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()
finished_product = null
// MARK: Scientific Assembler

View File

@@ -147,6 +147,7 @@
speed_mod = -1
failure_rate = -20
durability = 300
productivity_mod = 4
quality = /datum/smith_quality/masterwork
material = /datum/smith_material/platinum