Files
WaterpigandMajkl-J bb70889f6e TG Upstream Part 1
3591 individual conflicts

Update build.js

Update install_node.sh

Update byond.js

oh my fucking god

hat

slow

huh

holy shit

we all fall down

2 more I missed

2900 individual conflicts

2700 Individual conflicts

replaces yarn file with tg version, bumping us down to 2200-ish

Down to 2000 individual conflicts

140 down

mmm

aaaaaaaaaaaaaaaaaaa

not yt

575

soon

900 individual conflicts

600 individual conflicts, 121 file conflicts

im not okay

160 across 19 files

29 in 4 files

0 conflicts, compiletime fix time

some minor incap stuff

missed ticks

weird dupe definition stuff

missed ticks 2

incap fixes

undefs and pie fix

Radio update and some extra minor stuff

returns a single override

no more dupe definitions, 175 compiletime errors

Unticked file fix

sound and emote stuff

honk and more radio stuff
2024-10-19 08:04:33 -07:00

153 lines
6.9 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 SHEET_MATERIAL_AMOUNT, which defaults to 100
Don't add new keyword/IDs if they are made from an existing one (such as rods which are made from iron). 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 100 units of material. Materials besides iron/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?
//DO NOT REFERENCE OUTSIDE OF SSRESEARCH. USE THE PROCS IN SSRESEARCH TO OBTAIN A REFERENCE.
/datum/design //Datum for object designs, used in construction
/// Name of the created object
var/name = "Name"
/// Description of the created object
var/desc = null
/// The ID of the design. Used for quick reference. Alphanumeric, lower-case, no symbols
var/id = DESIGN_ID_IGNORE
/// Bitflags indicating what machines this design is compatable with. ([IMPRINTER]|[AWAY_IMPRINTER]|[PROTOLATHE]|[AWAY_LATHE]|[AUTOLATHE]|[MECHFAB]|[BIOGENERATOR]|[LIMBGROWER]|[SMELTER])
var/build_type = null
/// List of materials required to create one unit of the product. Format is (typepath or caregory) -> amount
var/list/materials = list()
/// The amount of time required to create one unit of the product.
var/construction_time = 3.2 SECONDS
/// The typepath of the object produced by this design
var/build_path = null
/// Reagent produced by this design. Currently only supported by the biogenerator.
var/make_reagent
/// What categories this design falls under. Used for sorting in production machines.
var/list/category = list()
/// List of reagents required to create one unit of the product. Currently only supported by the limb grower.
var/list/reagents_list = list()
/// How many times faster than normal is this to build on the protolathe
var/lathe_time_factor = 1
/// Bitflags indicating what departmental lathes should be allowed to process this design.
var/departmental_flags = ALL
/// What techwebs nodes unlock this design. Constructed by SSresearch
var/list/datum/techweb_node/unlocked_by = list()
/// Override for the automatic icon generation used for the research console.
var/research_icon
/// Override for the automatic icon state generation used for the research console.
var/research_icon_state
/// Appears to be unused.
var/icon_cache
/// Optional string that interfaces can use as part of search filters. See- item/borg/upgrade/ai and the Exosuit Fabs.
var/search_metadata
/// For protolathe designs that don't require reagents: If they can be exported to autolathes with a design disk or not.
var/autolathe_exportable = TRUE
/datum/design/error_design
name = "ERROR"
desc = "This usually means something in the database has corrupted. If this doesn't go away automatically, inform Central Comamnd so their techs can fix this ASAP(tm)"
/datum/design/Destroy()
SSresearch.techweb_designs -= id
return ..()
/datum/design/proc/InitializeMaterials()
var/list/temp_list = list()
for(var/i in materials) //Go through all of our materials, get the subsystem instance, and then replace the list.
var/amount = materials[i]
if(!istext(i)) //Not a category, so get the ref the normal way
var/datum/material/M = GET_MATERIAL_REF(i)
temp_list[M] = amount
else
temp_list[i] = amount
materials = temp_list
/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)
/// Returns the description of the design
/datum/design/proc/get_description()
var/obj/object_build_item_path = build_path
return isnull(desc) ? initial(object_build_item_path.desc) : desc
////////////////////////////////////////
//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"
custom_materials = list(/datum/material/iron =SMALL_MATERIAL_AMOUNT * 3, /datum/material/glass =SMALL_MATERIAL_AMOUNT)
///List of all `/datum/design` stored on the disk.
var/list/blueprints = list()
/obj/item/disk/design_disk/Initialize(mapload)
. = ..()
if(mapload)
pixel_x = base_pixel_x + rand(-5, 5)
pixel_y = base_pixel_y + rand(-5, 5)
/**
* Used for special interactions with a techweb when uploading the designs.
* Args:
* - stored_research - The techweb that's storing us.
*/
/obj/item/disk/design_disk/proc/on_upload(datum/techweb/stored_research)
return
/obj/item/disk/design_disk/bepis
name = "Old experimental technology disk"
desc = "A disk containing some long-forgotten technology from a past age. You hope it still works after all these years. Upload the disk to an R&D Console to redeem the tech."
icon_state = "rndmajordisk"
///The bepis node we have the design id's of
var/datum/techweb_node/bepis_node
/obj/item/disk/design_disk/bepis/Initialize(mapload)
. = ..()
var/bepis_id = pick(SSresearch.techweb_nodes_experimental)
bepis_node = (SSresearch.techweb_node_by_id(bepis_id))
for(var/entry in bepis_node.design_ids)
var/datum/design/new_entry = SSresearch.techweb_design_by_id(entry)
blueprints += new_entry
///Unhide and research our node so we show up in the R&D console.
/obj/item/disk/design_disk/bepis/on_upload(datum/techweb/stored_research)
stored_research.hidden_nodes -= bepis_node.id
stored_research.research_node(bepis_node, force = TRUE, auto_adjust_cost = FALSE)
/**
* Subtype of Bepis tech disk
* Removes the tech disk that's held on it from the experimental node list, making them not show up in future disks.
*/
/obj/item/disk/design_disk/bepis/remove_tech
name = "Reformatted technology disk"
desc = "A disk containing a new, completed tech from the B.E.P.I.S. Upload the disk to an R&D Console to redeem the tech."
/obj/item/disk/design_disk/bepis/remove_tech/Initialize(mapload)
. = ..()
SSresearch.techweb_nodes_experimental -= bepis_node.id
log_research("[bepis_node.display_name] has been removed from experimental nodes through the BEPIS techweb's \"remove tech\" feature.")