mirror of
https://github.com/vgstation-coders/vgstation13.git
synced 2025-12-10 10:21:11 +00:00
Mechanic fixing.
PDA device analysers now work as expected. Groundwork for fabricators ignoring design requirements, which general fabricators now do for chems. Item designs based on existing designs now properly generate a plastic requirement. Sped up the flatpacker a little to balance its costs.
This commit is contained in:
@@ -1186,7 +1186,8 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
scanmode = 0
|
||||
else if((!isnull(cartridge)) && (cartridge.access_mechanic))
|
||||
if(!dev_analys)
|
||||
dev_analys = new //let's create that device analyser
|
||||
dev_analys = new(src) //let's create that device analyser
|
||||
dev_analys.max_designs = 5
|
||||
scanmode = 6
|
||||
|
||||
//MESSENGER/NOTE FUNCTIONS===================================
|
||||
@@ -1676,8 +1677,9 @@ var/global/list/obj/item/device/pda/PDAs = list()
|
||||
|
||||
if (6)
|
||||
if(dev_analys) //let's use this instead. Much neater
|
||||
dev_analys.afterattack(A, user)
|
||||
A.attackby(src, user)
|
||||
if(A in range(user, 1))
|
||||
dev_analys.afterattack(A, user, 1)
|
||||
A.attackby(src, user)
|
||||
|
||||
if (!scanmode && istype(A, /obj/item/weapon/paper) && owner)
|
||||
note = A:info
|
||||
|
||||
@@ -198,22 +198,27 @@
|
||||
output += "[output ? " | " : null][get_resource_cost_w_coeff(part,"$[matID]")] [material.processed_name]"
|
||||
return output
|
||||
|
||||
/obj/machinery/r_n_d/fabricator/proc/build_part(var/datum/design/part)
|
||||
if(!part)
|
||||
return
|
||||
|
||||
/obj/machinery/r_n_d/fabricator/proc/remove_materials(var/datum/design/part)
|
||||
for(var/M in part.materials)
|
||||
if(!check_mat(part, M))
|
||||
src.visible_message("<font color='blue'>The [src.name] beeps, \"Not enough materials to complete item.\"</font>")
|
||||
stopped=1
|
||||
return 0
|
||||
if(copytext(M,1,2) == "$")
|
||||
if(copytext(M,1,2) == "$" && !(research_flags & IGNORE_MATS))
|
||||
var/matID=copytext(M,2)
|
||||
var/datum/material/material=materials[matID]
|
||||
material.stored = max(0, (material.stored-part.materials[M]))
|
||||
materials[matID]=material
|
||||
else
|
||||
else if(!(research_flags & IGNORE_CHEMS))
|
||||
reagents.remove_reagent(M, part.materials[M])
|
||||
return 1
|
||||
|
||||
/obj/machinery/r_n_d/fabricator/proc/build_part(var/datum/design/part)
|
||||
if(!part)
|
||||
return
|
||||
|
||||
if(!remove_materials(part))
|
||||
stopped = 1
|
||||
src.visible_message("<font color='blue'>The [src.name] beeps, \"Not enough materials to complete item.\"</font>")
|
||||
return
|
||||
|
||||
src.being_built = new part.build_path(src)
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define FLA_FAB_WIDTH 1000
|
||||
#define FLA_FAB_HEIGHT 600
|
||||
|
||||
#define FLA_FAB_BASETIME 100
|
||||
#define FLA_FAB_BASETIME 0.5
|
||||
|
||||
/obj/machinery/r_n_d/fabricator/mechanic_fab/flatpacker
|
||||
name = "Flatpack Fabricator"
|
||||
@@ -11,6 +11,8 @@
|
||||
|
||||
nano_file = "flatpacker.tmpl"
|
||||
|
||||
build_time = FLA_FAB_BASETIME
|
||||
|
||||
design_types = list("machine" = 1, "item" = 0)
|
||||
|
||||
var/build_parts = list(
|
||||
@@ -47,18 +49,10 @@ obj/machinery/r_n_d/fabricator/mechanic_fab/flatpacker/build_part(var/datum/desi
|
||||
if(!part)
|
||||
return
|
||||
|
||||
for(var/M in part.materials)
|
||||
if(!check_mat(part, M))
|
||||
src.visible_message("<font color='blue'>The [src.name] beeps, \"Not enough materials to complete item.\"</font>")
|
||||
stopped=1
|
||||
return 0
|
||||
if(copytext(M,1,2) == "$")
|
||||
var/matID=copytext(M,2)
|
||||
var/datum/material/material=materials[matID]
|
||||
material.stored = max(0, (material.stored-part.materials[M]))
|
||||
materials[matID]=material
|
||||
else
|
||||
reagents.remove_reagent(M, part.materials[M])
|
||||
if(!remove_materials(part))
|
||||
stopped = 1
|
||||
src.visible_message("<font color='blue'>The [src.name] beeps, \"Not enough materials to complete item.\"</font>")
|
||||
return
|
||||
|
||||
src.being_built = new part.build_path(src)
|
||||
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
//message_admins("Found the [D]")
|
||||
req_tech = D.req_tech //our tech is simply the item requirement
|
||||
materials = D.materials
|
||||
materials["$plastic"] += round(0.1 * src.MatTotal()) //plastic reqs
|
||||
del(D)
|
||||
else
|
||||
req_tech = ConvertReqString2List(I.origin_tech)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#define GEN_FAB_WIDTH 1000 //Gen fab stands for General Fabricator
|
||||
#define GEN_FAB_HEIGHT 600
|
||||
|
||||
#define GEN_FAB_BASETIME 100
|
||||
#define GEN_FAB_BASETIME 5
|
||||
|
||||
#define GEN_FAB_BASESTORAGE 150000
|
||||
|
||||
@@ -10,15 +10,17 @@
|
||||
desc = "A machine used to produce items from blueprint designs."
|
||||
icon = 'icons/obj/machines/mechanic.dmi'
|
||||
icon_state = "genfab"
|
||||
max_material_storage = 150000
|
||||
max_material_storage = GEN_FAB_BASESTORAGE
|
||||
nano_file = "genfab.tmpl"
|
||||
var/list/design_types = list("machine" = 0, "item" = 1)
|
||||
var/list/uses_list = list()
|
||||
|
||||
build_time = GEN_FAB_BASETIME
|
||||
|
||||
idle_power_usage = 20
|
||||
active_power_usage = 5000
|
||||
|
||||
research_flags = NANOTOUCH | TAKESMATIN | HASOUTPUT
|
||||
research_flags = NANOTOUCH | TAKESMATIN | HASOUTPUT | IGNORE_CHEMS //we don't need chems to make boards
|
||||
|
||||
part_sets = list("Items" = list())
|
||||
|
||||
|
||||
@@ -276,12 +276,16 @@
|
||||
|
||||
/obj/machinery/r_n_d/proc/check_mat(var/datum/design/being_built, var/M, var/num_requested=1)
|
||||
if(copytext(M,1,2) == "$")
|
||||
if(src.research_flags & IGNORE_MATS)
|
||||
return num_requested
|
||||
var/matID=copytext(M,2)
|
||||
var/datum/material/material=materials[matID]
|
||||
for(var/n=num_requested,n>=1,n--)
|
||||
if ((material.stored-(being_built.materials[M]*n)) >= 0)
|
||||
return n
|
||||
else
|
||||
if(src.research_flags & IGNORE_CHEMS)
|
||||
return num_requested
|
||||
for(var/n=num_requested,n>=1,n--)
|
||||
if (reagents.has_reagent(M, being_built.materials[M]))
|
||||
return n
|
||||
|
||||
@@ -931,6 +931,8 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse
|
||||
#define ACCESS_EMAG 32 //does it lose all its access when smacked by an emag? incompatible with CONSOLECONTROl, for obvious reasons
|
||||
#define LOCKBOXES 64 //does it spawn a lockbox around a design which is said to be locked? - for fabricators
|
||||
#define TRUELOCKS 128 //does it make a truly locked lockbox? If not set, the lockboxes made are unlockable by any crew with an ID
|
||||
#define IGNORE_MATS 256 //does it ignore material requirements for designs? - warning, can be OP
|
||||
#define IGNORE_CHEMS 512 //does it ignore chemical requirements for designs? - also super OP
|
||||
|
||||
// Mecca scanner flags
|
||||
#define MECH_SCAN_FAIL 1 // Cannot be scanned at all.
|
||||
|
||||
Reference in New Issue
Block a user