design 
Vars | |
| asset_id | Our TGUI asset name. Autogenerated based off of our typepath in New() |
|---|---|
| build_path | The typepath of the object produced by this design |
| build_type | Bitflags indicating what machines this design is compatable with. ([IMPRINTER]|AWAY_IMPRINTER|[PROTOLATHE]|AWAY_LATHE|[AUTOLATHE]|[MECHFAB]|[BIOGENERATOR]|[LIMBGROWER]|[SMELTER]) |
| category | What categories this design falls under. Used for sorting in production machines. |
| construction_time | The amount of time required to create one unit of the product. |
| departmental_flags | Bitflags indicating what departmental lathes should be allowed to process this design. |
| desc | Description of the created object |
| inherit_materials | A variable for if and how we want the printed object to receive the materials that were used to print it. |
| lathe_time_factor | How many times faster than normal is this to build on the protolathe |
| make_reagent | Reagent produced by this design. Currently only supported by the biogenerator. |
| materials | Associative List of materials required to create one unit of the product. Format is (typepath or requirements datum) -> amount e.g: /datum/material/iron --> SHEET_MATERIAL_AMOUNT |
| name | Name of the created object |
| reagents_list | List of reagents required to create one unit of the product. Currently only supported by the limb grower. |
| research_icon | Override for the automatic icon generation used for the research console. |
| research_icon_state | Override for the automatic icon state generation used for the research console. |
| transfered_materials | If set, instead of transfering the contents of the materials var to the item(s), this list will be used. This is useful for printed items that possess fewer mats than those used in the process of printing them, Or items that in turn contain more items that can be extracted and recycled singularly. |
| unlocked_by | Aa list of techwebs nodes that unlock this design. Auto-generated by SSresearch. |
Procs | |
| create_result | Produce the resulting item, optionally with a specfic amount if we're a stack design |
| get_description | Returns the description of the design |
| simple_transfer_materials | Called by [proc/transfer_materials] in two places and it's basically the meat and bone of the function. Having it as a separate proc reduces copypaste a little. |
| transfer_materials | A proc that handles transfering the materials to the target object and anything it contains that isn't abstract. You can check the doc for var/list/transfered_materials for how it works. |
Var Details
asset_id 
Our TGUI asset name. Autogenerated based off of our typepath in New()
build_path 
The typepath of the object produced by this design
build_type 
Bitflags indicating what machines this design is compatable with. ([IMPRINTER]|AWAY_IMPRINTER|[PROTOLATHE]|AWAY_LATHE|[AUTOLATHE]|[MECHFAB]|[BIOGENERATOR]|[LIMBGROWER]|[SMELTER])
category 
What categories this design falls under. Used for sorting in production machines.
construction_time 
The amount of time required to create one unit of the product.
departmental_flags 
Bitflags indicating what departmental lathes should be allowed to process this design.
desc 
Description of the created object
inherit_materials 
A variable for if and how we want the printed object to receive the materials that were used to print it.
- DESIGN_INHERIT_MATS: default setting, this will also be unit tested to ensure that the object built from an unupgraded protolathe has the same materials of an object of the same type only instantiated in a generic way.
- DESIGN_INHERIT_MATS_SPECIAL: get the materials, but don't perform unit test checks
- DESIGN_DONT_INHERIT_MATS: The printed object won't have the materials that were used to print it.
P.S. unit test checks for materials are not performed on designs that use /datum/material_requirement. The only thing we would've to check in that case would be the amounts but not the types, and that isn't worth it.
lathe_time_factor 
How many times faster than normal is this to build on the protolathe
make_reagent 
Reagent produced by this design. Currently only supported by the biogenerator.
materials 
Associative List of materials required to create one unit of the product. Format is (typepath or requirements datum) -> amount e.g: /datum/material/iron --> SHEET_MATERIAL_AMOUNT
name 
Name of the created object
reagents_list 
List of reagents required to create one unit of the product. Currently only supported by the limb grower.
research_icon 
Override for the automatic icon generation used for the research console.
research_icon_state 
Override for the automatic icon state generation used for the research console.
transfered_materials 
If set, instead of transfering the contents of the materials var to the item(s), this list will be used. This is useful for printed items that possess fewer mats than those used in the process of printing them, Or items that in turn contain more items that can be extracted and recycled singularly.
Here's an example of how it's supposed to be structured: transfered_materials = list( /obj/item/printed = list(/datum/material/iron = HALF_SHEET_MATERIAL_AMOUNT, /datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5), /obj/item/inside_printed = list(/datum/material/glass = SMALL_MATERIAL_AMOUNT * 2.5), )
A few things to consider though:
- It shouldn't include materials not present in the 'materials' variable.
- The sum of each material in the lists shouldn't surpass what present in the 'materials' list.
- It's incompatible with material_slot and material_requirement datums. This might change in the future, i dunno.
- this does nothing if 'inherit_materials' is set to DESIGN_DONT_INHERIT_MATS.
I've set a few unit test checks to make sure that things don't go wrong anyway, so don't worry too much about it
unlocked_by 
Aa list of techwebs nodes that unlock this design. Auto-generated by SSresearch.
Proc Details
create_result
Produce the resulting item, optionally with a specfic amount if we're a stack design
get_description
Returns the description of the design
simple_transfer_materials
Called by [proc/transfer_materials] in two places and it's basically the meat and bone of the function. Having it as a separate proc reduces copypaste a little.
transfer_materials
A proc that handles transfering the materials to the target object and anything it contains that isn't abstract. You can check the doc for var/list/transfered_materials for how it works.