Revert "[MIRROR] Port material containers to datum components" (#2597)
* Revert "sprite fix on kitsune tails" This reverts commit44d5b21a43. * Revert "Update vg_clothing_packs.dm (#2591)" This reverts commit7f46280d6b. * Revert "Automatic changelog generation for PR #2590 [ci skip]" This reverts commit201e07033f. * Revert "[MIRROR] Gives the detective a mass spectrometer (#2590)" This reverts commit5c98b9a13b. * Revert "Quick sync (#2587)" This reverts commit92e055be97. * Revert "Automatic changelog generation for PR #2557 [ci skip]" This reverts commit241a10d88d. * Revert "Decreases hacked ai module cost (#2557)" This reverts commitd959b7538a. * Revert "[MIRROR] Port material containers to datum components (#2562)" This reverts commit32300086d5.
This commit is contained in:
@@ -12,6 +12,7 @@
|
||||
circuit = /obj/item/circuitboard/machine/mechfab
|
||||
var/time_coeff = 1
|
||||
var/component_coeff = 1
|
||||
var/datum/material_container/materials
|
||||
var/datum/research/files
|
||||
var/sync = 0
|
||||
var/part_set
|
||||
@@ -35,11 +36,9 @@
|
||||
)
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/Initialize()
|
||||
AddComponent(/datum/component/material_container,
|
||||
list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE),
|
||||
FALSE, list(/obj/item/stack, /obj/item/ore/bluespace_crystal), CALLBACK(src, .proc/is_insertion_ready))
|
||||
. = ..()
|
||||
files = new /datum/research(src) //Setup the research data holder.
|
||||
materials = new(src, list(MAT_METAL, MAT_GLASS, MAT_SILVER, MAT_GOLD, MAT_DIAMOND, MAT_PLASMA, MAT_URANIUM, MAT_BANANIUM, MAT_TITANIUM, MAT_BLUESPACE))
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/RefreshParts()
|
||||
var/T = 0
|
||||
@@ -47,7 +46,6 @@
|
||||
//maximum stocking amount (default 300000, 600000 at T4)
|
||||
for(var/obj/item/stock_parts/matter_bin/M in component_parts)
|
||||
T += M.rating
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.max_amount = (200000 + (T*50000))
|
||||
|
||||
//resources adjustment coefficient (1 -> 0.85 -> 0.7 -> 0.55)
|
||||
@@ -115,7 +113,6 @@
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/proc/output_available_resources()
|
||||
var/output
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
for(var/mat_id in materials.materials)
|
||||
var/datum/material/M = materials.materials[mat_id]
|
||||
output += "<span class=\"res_name\">[M.name]: </span>[M.amount] cm³"
|
||||
@@ -136,7 +133,6 @@
|
||||
/obj/machinery/mecha_part_fabricator/proc/check_resources(datum/design/D)
|
||||
if(D.reagents_list.len) // No reagents storage - no reagent designs.
|
||||
return 0
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
if(materials.has_materials(get_resources_w_coeff(D)))
|
||||
return 1
|
||||
return 0
|
||||
@@ -146,7 +142,6 @@
|
||||
desc = "It's building \a [initial(D.name)]."
|
||||
var/list/res_coef = get_resources_w_coeff(D)
|
||||
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.use_amount(res_coef)
|
||||
add_overlay("fab-active")
|
||||
use_power = ACTIVE_POWER_USE
|
||||
@@ -403,34 +398,15 @@
|
||||
break
|
||||
|
||||
if(href_list["remove_mat"] && href_list["material"])
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.retrieve_sheets(text2num(href_list["remove_mat"]), href_list["material"])
|
||||
|
||||
updateUsrDialog()
|
||||
return
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/on_deconstruction()
|
||||
GET_COMPONENT(materials, /datum/component/material_container)
|
||||
materials.retrieve_all()
|
||||
..()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/ComponentActivated(datum/component/C)
|
||||
..()
|
||||
if(istype(C, /datum/component/material_container))
|
||||
var/datum/component/material_container/M = C
|
||||
if(!M.last_insert_success)
|
||||
return
|
||||
var/lit = M.last_inserted_type
|
||||
var/stack_name
|
||||
if(ispath(lit, /obj/item/ore/bluespace_crystal))
|
||||
stack_name = "bluespace"
|
||||
else
|
||||
var/obj/item/stack/S = lit
|
||||
stack_name = material2name(initial(S.materials)[1])
|
||||
add_overlay("fab-load-[stack_name]")
|
||||
addtimer(CALLBACK(src, /atom/proc/cut_overlay, "fab-load-[stack_name]"), 10)
|
||||
updateUsrDialog()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/attackby(obj/item/W, mob/user, params)
|
||||
if(default_deconstruction_screwdriver(user, "fab-o", "fab-idle", W))
|
||||
return 1
|
||||
@@ -441,7 +417,55 @@
|
||||
if(default_deconstruction_crowbar(W))
|
||||
return 1
|
||||
|
||||
return ..()
|
||||
if(istype(W, /obj/item/stack/sheet))
|
||||
|
||||
if(!is_insertion_ready(user))
|
||||
return 1
|
||||
|
||||
var/material_amount = materials.get_item_material_amount(W)
|
||||
|
||||
if(!try_insert(user, W, material_amount))
|
||||
return 1
|
||||
|
||||
var/inserted = materials.insert_item(W)
|
||||
if(inserted)
|
||||
to_chat(user, "<span class='notice'>You insert [inserted] sheet\s into [src].</span>")
|
||||
if(W && W.materials.len)
|
||||
if(!QDELETED(W))
|
||||
user.put_in_active_hand(W)
|
||||
var/mat_overlay = "fab-load-[material2name(W.materials[1])]"
|
||||
add_overlay(mat_overlay)
|
||||
sleep(10)
|
||||
if(!QDELETED(src))
|
||||
cut_overlay(mat_overlay) //No matter what the overlay shall still be deleted
|
||||
|
||||
updateUsrDialog()
|
||||
|
||||
else if(istype(W, /obj/item/ore/bluespace_crystal))
|
||||
|
||||
if(!is_insertion_ready(user))
|
||||
return 1
|
||||
|
||||
var/material_amount = materials.get_item_material_amount(W)
|
||||
|
||||
if(!try_insert(user, W, material_amount))
|
||||
return 1
|
||||
|
||||
var/inserted = materials.insert_item(W)
|
||||
if(inserted)
|
||||
to_chat(user, "<span class='notice'>You add [W] to the [src].</span>")
|
||||
if(W && W.materials.len)
|
||||
qdel(W)
|
||||
var/mat_overlay = "fab-load-bluespace"
|
||||
add_overlay(mat_overlay)
|
||||
sleep(10)
|
||||
if(!QDELETED(src))
|
||||
cut_overlay(mat_overlay)
|
||||
|
||||
updateUsrDialog()
|
||||
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/proc/material2name(ID)
|
||||
return copytext(ID,2)
|
||||
@@ -454,4 +478,18 @@
|
||||
to_chat(user, "<span class='warning'>\The [src] is currently processing! Please wait until completion.</span>")
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/obj/machinery/mecha_part_fabricator/proc/try_insert(mob/user, obj/item/I, material_amount)
|
||||
if(!material_amount)
|
||||
to_chat(user, "<span class='warning'>This object does not contain sufficient amounts of materials to be accepted by [src].</span>")
|
||||
return FALSE
|
||||
if(!materials.has_space(material_amount))
|
||||
to_chat(user, "<span class='warning'>\The [src] is full. Please remove some materials from [src] in order to insert more.</span>")
|
||||
return FALSE
|
||||
if(!user.temporarilyRemoveItemFromInventory(I))
|
||||
to_chat(user, "<span class='warning'>\The [I] is stuck to you and cannot be placed into [src].</span>")
|
||||
return FALSE
|
||||
|
||||
return TRUE
|
||||
Reference in New Issue
Block a user