b9445db807
Removes needless back-and-forth with surgery disks, making advanced surgery a bit less annoying to set up. Disks still work to install surgeries locally, although the only disk currently obtainable is the traitor brainwashing disk.
84 lines
4.2 KiB
Plaintext
84 lines
4.2 KiB
Plaintext
/***************************************************************
|
|
** Design Datums **
|
|
** All the data for building stuff. **
|
|
***************************************************************/
|
|
/*
|
|
For the materials datum, it assumes you need reagents unless specified otherwise. To designate a material that isn't a reagent,
|
|
you use one of the material IDs below. These are NOT ids in the usual sense (they aren't defined in the object or part of a datum),
|
|
they are simply references used as part of a "has materials?" type proc. They all start with a $ to denote that they aren't reagents.
|
|
The currently supporting non-reagent materials. All material amounts are set as the define MINERAL_MATERIAL_AMOUNT, which defaults to 2000
|
|
- MAT_METAL (/obj/item/stack/metal).
|
|
- MAT_GLASS (/obj/item/stack/glass).
|
|
- MAT_PLASMA (/obj/item/stack/plasma).
|
|
- MAT_SILVER (/obj/item/stack/silver).
|
|
- MAT_GOLD (/obj/item/stack/gold).
|
|
- MAT_URANIUM (/obj/item/stack/uranium).
|
|
- MAT_DIAMOND (/obj/item/stack/diamond).
|
|
- MAT_BANANIUM (/obj/item/stack/bananium).
|
|
(Insert new ones here)
|
|
|
|
Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from metal). Only add raw materials.
|
|
|
|
Design Guidelines
|
|
- When adding new designs, check rdreadme.dm to see what kind of things have already been made and where new stuff is needed.
|
|
- A single sheet of anything is 2000 units of material. Materials besides metal/glass require help from other jobs (mining for
|
|
other types of metals and chemistry for reagents).
|
|
- Add the AUTOLATHE tag to
|
|
*/
|
|
|
|
//DESIGNS ARE GLOBAL. DO NOT CREATE OR DESTROY THEM AT RUNTIME OUTSIDE OF INIT, JUST REFERENCE THEM TO WHATEVER YOU'RE DOING! //why are you yelling?
|
|
|
|
/datum/design //Datum for object designs, used in construction
|
|
var/name = "Name" //Name of the created object.
|
|
var/desc = "Desc" //Description of the created object.
|
|
var/id = DESIGN_ID_IGNORE //ID of the created object for easy refernece. Alphanumeric, lower-case, no symbols
|
|
var/build_type = null //Flag as to what kind machine the design is built in. See defines.
|
|
var/list/materials = list() //List of materials. Format: "id" = amount.
|
|
var/construction_time //Amount of time required for building the object
|
|
var/build_path = null //The file path of the object that gets created
|
|
var/list/make_reagents = list() //Reagents produced. Format: "id" = amount. Currently only supported by the biogenerator.
|
|
var/list/category = null //Primarily used for Mech Fabricators, but can be used for anything
|
|
var/list/reagents_list = list() //List of reagents. Format: "id" = amount.
|
|
var/maxstack = 1
|
|
var/lathe_time_factor = 1 //How many times faster than normal is this to build on the protolathe
|
|
var/dangerous_construction = FALSE //notify and log for admin investigations if this is printed.
|
|
var/departmental_flags = ALL //bitflags for deplathes.
|
|
var/list/datum/techweb_node/unlocked_by = list()
|
|
var/research_icon //Replaces the item icon in the research console
|
|
var/research_icon_state
|
|
var/icon_cache
|
|
|
|
/datum/design/Destroy()
|
|
CRASH("DESIGN DATUMS SHOULD NOT EVER BE DESTROYED AS THEY ARE ONLY MEANT TO BE IN A GLOBAL LIST AND REFERENCED FOR US.")
|
|
return ..()
|
|
|
|
/datum/design/proc/icon_html(client/user)
|
|
var/datum/asset/spritesheet/sheet = get_asset_datum(/datum/asset/spritesheet/research_designs)
|
|
sheet.send(user)
|
|
return sheet.icon_tag(id)
|
|
|
|
////////////////////////////////////////
|
|
//Disks for transporting design datums//
|
|
////////////////////////////////////////
|
|
|
|
/obj/item/disk/design_disk
|
|
name = "Component Design Disk"
|
|
desc = "A disk for storing device design data for construction in lathes."
|
|
icon_state = "datadisk1"
|
|
materials = list(MAT_METAL=300, MAT_GLASS=100)
|
|
var/list/blueprints = list()
|
|
var/max_blueprints = 1
|
|
|
|
/obj/item/disk/design_disk/Initialize()
|
|
. = ..()
|
|
pixel_x = rand(-5, 5)
|
|
pixel_y = rand(-5, 5)
|
|
for(var/i in 1 to max_blueprints)
|
|
blueprints += null
|
|
|
|
/obj/item/disk/design_disk/adv
|
|
name = "Advanced Component Design Disk"
|
|
desc = "A disk for storing device design data for construction in lathes. This one has extra storage space."
|
|
materials = list(MAT_METAL=300, MAT_GLASS=100, MAT_SILVER = 50)
|
|
max_blueprints = 5
|