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. assoc list, id = TRUE | 
| boosted_nodes | Already boosted nodes that can't be boosted again. node id = path of boost object. | 
| completed_experiments | A list of all experiment datums that have been complete | 
| 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. id = TRUE. Used for unhiding nodes when requirements are met by removing the entry of the node. | 
| 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 research_queue_nodes[node_id] = user_enqueued | 
| researched_designs | Designs that are available for use. Assoc list, id = TRUE | 
| researched_nodes | Already unlocked and all designs are now available. Assoc list, id = TRUE | 
| 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. Assoc list, id = TRUE | 
| Procs | |
| add_design_by_id | add_design_by_id The main way to add add designs to techweb Uses the techweb node's ID Args: id - the ID of the techweb node to research 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. | 
| 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. | 
| 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. | 
| 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. | 
| unhide_node | Removes a node from the hidden_nodes list, making it viewable and researchable (if no experiments are required). | 
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. assoc list, id = TRUE
boosted_nodes  
Already boosted nodes that can't be boosted again. node id = path of boost object.
completed_experiments  
A list of all experiment datums that have been complete
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. id = TRUE. Used for unhiding nodes when requirements are met by removing the entry of the node.
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 research_queue_nodes[node_id] = user_enqueued
researched_designs  
Designs that are available for use. Assoc list, id = TRUE
researched_nodes  
Already unlocked and all designs are now available. Assoc list, id = TRUE
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. Assoc list, id = TRUE
Proc Details
add_design_by_id
add_design_by_id The main way to add add designs to techweb Uses the techweb node's ID Args: id - the ID of the techweb node to research 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.
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
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.
unhide_node
Removes a node from the hidden_nodes list, making it viewable and researchable (if no experiments are required).