Update protolathe.dm
This commit is contained in:
@@ -78,7 +78,6 @@ Note: Must be placed west/left of and R&D console to function.
|
|||||||
linked_console.linked_lathe = null
|
linked_console.linked_lathe = null
|
||||||
..()
|
..()
|
||||||
|
|
||||||
<<<<<<< HEAD
|
|
||||||
/obj/machinery/r_n_d/protolathe/ComponentActivated(datum/component/C)
|
/obj/machinery/r_n_d/protolathe/ComponentActivated(datum/component/C)
|
||||||
..()
|
..()
|
||||||
if(istype(C, /datum/component/material_container))
|
if(istype(C, /datum/component/material_container))
|
||||||
@@ -96,58 +95,3 @@ Note: Must be placed west/left of and R&D console to function.
|
|||||||
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10)))
|
use_power(max(1000, (MINERAL_MATERIAL_AMOUNT * M.last_amount_inserted / 10)))
|
||||||
add_overlay("protolathe_[stack_name]")
|
add_overlay("protolathe_[stack_name]")
|
||||||
addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10)
|
addtimer(CALLBACK(src, /atom/proc/cut_overlay, "protolathe_[stack_name]"), 10)
|
||||||
=======
|
|
||||||
/obj/machinery/rnd/protolathe/proc/user_try_print_id(id, amount)
|
|
||||||
if((!istype(linked_console) && requires_console) || !id)
|
|
||||||
return FALSE
|
|
||||||
if(istext(amount))
|
|
||||||
amount = text2num(amount)
|
|
||||||
if(isnull(amount))
|
|
||||||
amount = 1
|
|
||||||
var/datum/design/D = (linked_console || requires_console)? linked_console.stored_research.researched_designs[id] : get_techweb_design_by_id(id)
|
|
||||||
if(!istype(D))
|
|
||||||
return FALSE
|
|
||||||
if(D.make_reagents.len)
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
var/power = 1000
|
|
||||||
amount = Clamp(amount, 1, 10)
|
|
||||||
for(var/M in D.materials)
|
|
||||||
power += round(D.materials[M] * amount / 5)
|
|
||||||
power = max(3000, power)
|
|
||||||
use_power(power)
|
|
||||||
|
|
||||||
var/list/efficient_mats = list()
|
|
||||||
for(var/MAT in D.materials)
|
|
||||||
efficient_mats[MAT] = D.materials[MAT]*efficiency_coeff
|
|
||||||
|
|
||||||
if(!materials.has_materials(efficient_mats, amount))
|
|
||||||
say("Not enough materials to complete prototype[amount > 1? "s" : ""].")
|
|
||||||
return FALSE
|
|
||||||
for(var/R in D.reagents_list)
|
|
||||||
if(!reagents.has_reagent(R, D.reagents_list[R]*efficiency_coeff))
|
|
||||||
say("Not enough reagents to complete prototype[amount > 1? "s" : ""].")
|
|
||||||
return FALSE
|
|
||||||
|
|
||||||
materials.use_amount(efficient_mats, amount)
|
|
||||||
for(var/R in D.reagents_list)
|
|
||||||
reagents.remove_reagent(R, D.reagents_list[R]*efficiency_coeff)
|
|
||||||
|
|
||||||
busy = TRUE
|
|
||||||
flick("protolathe_n", src)
|
|
||||||
var/timecoeff = efficiency_coeff * D.lathe_time_factor
|
|
||||||
|
|
||||||
addtimer(CALLBACK(src, .proc/reset_busy), (32 * timecoeff * amount) ** 0.8)
|
|
||||||
addtimer(CALLBACK(src, .proc/do_print, D.build_path, amount, efficient_mats, D.dangerous_construction), (32 * timecoeff * amount) ** 0.8)
|
|
||||||
return TRUE
|
|
||||||
|
|
||||||
/obj/machinery/rnd/protolathe/proc/do_print(path, amount, list/matlist, notify_admins)
|
|
||||||
if(notify_admins && usr)
|
|
||||||
investigate_log("[key_name(usr)] built [amount] of [path] at a protolathe.", INVESTIGATE_RESEARCH)
|
|
||||||
message_admins("[ADMIN_LOOKUPFLW(usr)] has built [amount] of [path] at a protolathe")
|
|
||||||
for(var/i in 1 to amount)
|
|
||||||
var/obj/item/I = new path(get_turf(src))
|
|
||||||
if(!istype(I, /obj/item/stack/sheet) && !istype(I, /obj/item/ore/bluespace_crystal))
|
|
||||||
I.materials = matlist.Copy()
|
|
||||||
SSblackbox.record_feedback("nested_tally", "item_printed", amount, list("[type]", "[path]"))
|
|
||||||
>>>>>>> 3aba012... Removes ComponentActivated in favor of callbacks (#33274)
|
|
||||||
|
|||||||
Reference in New Issue
Block a user