Techweb 
A datum representing a research techweb
Techweb datums are meant to store unlocked research, being able to be stored on research consoles, servers, and disks. They are NOT global.
Vars | |
| available_experiments | This is a list of all incomplete experiment datums that are accessible for scientists to complete |
|---|---|
| available_nodes | Nodes that can immediately be researched, all reqs met. Associative for faster lookup. |
| boosted_nodes | A list of nodes that have been boosted. Associative for faster lookup. |
| completed_experiments | An associative list of all experiment typepaths to instances that have been completed |
| consoles_accessing | All RD consoles connected to this individual techweb. |
| custom_designs | Custom inserted designs like from disks that should survive recalculation. |
| deconstructed_items | List of items already deconstructed for research points, preventing infinite research point generation. |
| discovered_mutations | Mutations discovered by genetics, this way they are shared and cant be destroyed by destroying a single console |
| hidden_nodes | Hidden nodes. Used for unhiding nodes when requirements are met by removing the entry of the node. Associative for faster lookup. |
| id | The id/name of the whole Techweb viewable to players. |
| income_modifier | A multiplier applied to all research gain, cut in half if the Master server was sabotaged. |
| last_bitcoins | Current per-second production, used for display only. |
| last_income | The amount of research points generated the techweb generated the latest time it generated. |
| organization | Organization name, used for display |
| published_papers | Assoc list of papers already published by the crew. published_papers[experiment_typepath][tier] = paper Filled with nulls on init, populated only on publication. |
| research_logs | Game logs of research nodes, "node_name" "node_cost" "node_researcher" "node_research_location" |
| research_points | Available research points, type = number |
| research_queue_nodes | Assoc list of nodes queued for automatic research when there are enough points available e.g: /datum/techweb_node/mining --> /mob/living/carbon/human (weakref) |
| researched_designs | A list of unlocked designs. Associative for faster lookup. |
| researched_nodes | A list of researched nodes. Associative for faster lookup. |
| scientific_cooperation | Assoc list of relationships with various partners scientific_cooperation[partner_typepath] = relationship |
| should_generate_points | Boolean on whether the techweb should generate research points overtime. |
| skipped_experiment_types | Assoc list of all experiment datums that have been skipped, to tech point reward for completing them - That is, upon researching a node without completing its associated discounts, their experiments go here. Completing these experiments will have a refund. |
| techweb_servers | All research servers connected to this individual techweb. |
| tiers | Assoc list, id = number, 1 is available, 2 is all reqs are 1, so on |
| visible_nodes | Visible nodes, doesn't mean it can be researched. Associative for faster lookup. |
Procs | |
| absorb_techdisk | Takes all of the research from a tech disk |
| add_design | Adds a design to this techweb |
| add_experiment | Adds an experiment to this techweb by its type, ensures that no duplicates are added. |
| add_experiments | Adds a list of experiments to this techweb by their types, ensures that no duplicates are added. |
| add_scientific_paper | Publish the paper into our techweb. Cancel if we are not allowed to. |
| adjust_all_points | Adjust all point types by this amount |
| adjust_multiple_points | Adjusts the amount of multiple point types |
| adjust_points | Adjusts the amount of a certain point type |
| boost_techweb_node | Boosts a techweb node. |
| can_unlock_node | Checks if a node can be unlocked on this techweb, having the required points and experiments |
| complete_experiment | Notifies the techweb that an experiment has been completed, updating internal state of the techweb to reflect this. |
| enqueue_node | Adds a node to this techweb's research queue |
| get_researched_design_datums | Returns a flat list of all design datums this techweb has researched. |
| have_experiments_for_node | Checks if all experiments have been completed for a given node on this techweb |
| initialize_published_papers | Fill published_papers with nulls. |
| remove_design | Removes a design from this techweb |
| research_node | Adds a node to this techweb |
| unhide_node | Removes a node from the hidden_nodes list, making it viewable and researchable (if no experiments are required). |
| unresearch_node | Removes a node from this techweb |
Var Details
available_experiments 
This is a list of all incomplete experiment datums that are accessible for scientists to complete
available_nodes 
Nodes that can immediately be researched, all reqs met. Associative for faster lookup.
boosted_nodes 
A list of nodes that have been boosted. Associative for faster lookup.
completed_experiments 
An associative list of all experiment typepaths to instances that have been completed
consoles_accessing 
All RD consoles connected to this individual techweb.
custom_designs 
Custom inserted designs like from disks that should survive recalculation.
deconstructed_items 
List of items already deconstructed for research points, preventing infinite research point generation.
discovered_mutations 
Mutations discovered by genetics, this way they are shared and cant be destroyed by destroying a single console
hidden_nodes 
Hidden nodes. Used for unhiding nodes when requirements are met by removing the entry of the node. Associative for faster lookup.
id 
The id/name of the whole Techweb viewable to players.
income_modifier 
A multiplier applied to all research gain, cut in half if the Master server was sabotaged.
last_bitcoins 
Current per-second production, used for display only.
last_income 
The amount of research points generated the techweb generated the latest time it generated.
organization 
Organization name, used for display
published_papers 
Assoc list of papers already published by the crew. published_papers[experiment_typepath][tier] = paper Filled with nulls on init, populated only on publication.
research_logs 
Game logs of research nodes, "node_name" "node_cost" "node_researcher" "node_research_location"
research_points 
Available research points, type = number
research_queue_nodes 
Assoc list of nodes queued for automatic research when there are enough points available e.g: /datum/techweb_node/mining --> /mob/living/carbon/human (weakref)
researched_designs 
A list of unlocked designs. Associative for faster lookup.
researched_nodes 
A list of researched nodes. Associative for faster lookup.
scientific_cooperation 
Assoc list of relationships with various partners scientific_cooperation[partner_typepath] = relationship
should_generate_points 
Boolean on whether the techweb should generate research points overtime.
skipped_experiment_types 
Assoc list of all experiment datums that have been skipped, to tech point reward for completing them - That is, upon researching a node without completing its associated discounts, their experiments go here. Completing these experiments will have a refund.
techweb_servers 
All research servers connected to this individual techweb.
tiers 
Assoc list, id = number, 1 is available, 2 is all reqs are 1, so on
visible_nodes 
Visible nodes, doesn't mean it can be researched. Associative for faster lookup.
Proc Details
absorb_techdisk
Takes all of the research from a tech disk
add_design
Adds a design to this techweb
Arguments:
- design - The instance or typepath of the design to add
- custom - Boolean on whether the node should also be added to custom_designs
- add_to - A custom list to add the node to, overwriting research_designs.
add_experiment
Adds an experiment to this techweb by its type, ensures that no duplicates are added.
Arguments:
- experiment_type - the type of the experiment to add
add_experiments
Adds a list of experiments to this techweb by their types, ensures that no duplicates are added.
Arguments:
- experiment_list - the list of types of experiments to add
add_scientific_paper
Publish the paper into our techweb. Cancel if we are not allowed to.
adjust_all_points
Adjust all point types by this amount
adjust_multiple_points
Adjusts the amount of multiple point types
adjust_points
Adjusts the amount of a certain point type
boost_techweb_node
Boosts a techweb node.
can_unlock_node
Checks if a node can be unlocked on this techweb, having the required points and experiments
Arguments:
- node - the node to check
complete_experiment
Notifies the techweb that an experiment has been completed, updating internal state of the techweb to reflect this.
Arguments:
- completed_experiment - the experiment which was completed
enqueue_node
Adds a node to this techweb's research queue
get_researched_design_datums
Returns a flat list of all design datums this techweb has researched.
have_experiments_for_node
Checks if all experiments have been completed for a given node on this techweb
Arguments:
- node - the node to check
initialize_published_papers
Fill published_papers with nulls.
remove_design
Removes a design from this techweb
Arguments:
- design - The instance or typepath of the design to remove
- custom - Boolean on whether the node should also be removed from custom_designs
research_node
Adds a node to this techweb
Arguments:
- node - The typepath or instance of the node to research
- force - If TRUE, availability checks are ignored
- auto_adjust_cost - If TRUE, the node's point cost(s) are deducted from this techweb
- get_that_dosh - If TRUE, the science budget gains [SSeconomy.techweb_bounty] moneys
- research_source - The thing responsible for researching this node. Used in overrides.
unhide_node
Removes a node from the hidden_nodes list, making it viewable and researchable (if no experiments are required).
unresearch_node
Removes a node from this techweb
Arguments:
- node_path - The instance or typepath of the node to remove