Bio Lab reagent supply
Buy reagents—and actually get them into the Bio Lab
Use the Shop to buy missing reagents, then move them into the Lab’s input before loading the recipe. A successful purchase puts stock in base Inventory; it does not automatically fill the Lab.
This guide covers a Lab at Nocturna Base. At a remote outpost, use a local store and arrange delivery first: buying at the base is not a remote supply line.

On this page
1. Read the recipe and what is already loaded
In the Lab’s own script, use an analyzed specimen’s self.specimen.recipe and compare it with self.loaded_reagents. If no specimen is present or analysis has not succeeded, stop before trying to fill a recipe.
For each reagent, calculate recipe quantity minus quantity already loaded. Do not reload the full recipe after every script restart. Wrong or extra loaded reagents need correction before extraction; use self.unload_reagents() and check output capacity before rebuilding the load. A mismatched extraction destroys the reagents.
Example arithmetic, not a recipe: a requirement of 4 with 1 already loaded leaves 3 to stage. If the input already holds 2 of that same reagent, only 1 more needs to arrive there.
2. Connect Inventory and transfer the reagent
With Auto Feeders researched, a home-base Lab can use self.input.connect("inventory"). Check its result before continuing. A remote Lab must connect a compatible same-outpost store instead.
The input holds one reagent ID at a time. Inspect self.input.stacks(). If it contains another reagent, recover that stock with the documented eject command before switching IDs; flush permanently destroys the buffer.
Subtract matching stock already in the input from the amount still to load. Use self.input.take(reagent_id, amount_still_needed_in_buffer) only for that positive remainder. Transfers can be partial: recheck the buffer instead of assuming the whole amount arrived.
3. Buy only the shortfall, then try the transfer again
First try available stock. If the connection and transfer prerequisites are correct but that reagent is short, use the Shop component’s buy(reagent_id, quantity) with a positive whole-number shortfall.
Optional in-game example: this buys one Alkaline Buffer into base Inventory. It spends credits, so only run it if that ID and amount match your actual shortage.
shop = get_component("shop")
purchase = shop.buy("alkaline_buffer", 1)
print(purchase.status)ok: retry the input transfer, then inspect what moved.insufficient_credits: obtain credits; repeated purchase attempts cannot fix the balance.inventory_full: free base Inventory space safely.lockedornot_found: check research and the exact reagent ID in the Shop catalogue.
Do not buy again just because loading failed. A disconnected input, missing research, or stock at the wrong outpost needs a logistics fix.
4. Load the exact amount, then verify extraction
Once the matching input buffer has enough stock, call self.load(reagent_id, missing) on the Lab. On ok, reread loaded quantities. insufficient_input means the required stock is not staged in the input; busy means let the ongoing action finish.
Only extract when all loaded quantities match the analyzed recipe and no extra reagent is present. On ok, confirm a sample in output. On output_full, free output capacity and reread the machine before deciding the next action. On recipe_mismatch, stop and rebuild the reagent plan—not the same failing call.
Keep automatic retries bounded
Build a loop from the checks above, not a recursive “buy and try again” call. Reread the chamber, buffer and loaded amounts after every attempt. Wait only for a condition that can change; stop and print the first blocker when identity, research or storage needs attention.
A practical starting rule is at most three attempts at a transient step before pausing for inspection. Three is your script’s safety policy, not a built-in game limit. An accepted purchase is not proof of loading, and a loaded recipe is not proof of a finished sample.
See the editor and base systems in context
Watch the game
Code: Terraform Beginner Guide
PowerFang’s Early Access walkthrough provides interface context. It does not verify the purchase-and-transfer sequence above; use your installed Lab and Shop DOCS for those calls.
Return to reagent routing →Sources for this guide
- Bio Lab, Shop, and InputSlot references: recipe, purchase results and the missing input-transfer step.
- Long-Running Scripts: reread machine state after restarts and distinguish transient from actionable blockers.
- September 14 player discussion: Shop purchasing and retry suggestions. It contains fragments and thanks, not a complete script with an explicit success report.
- References were read September 28. The public documentation identifies build
441ad76; this sequence is source-based, not our own gameplay test. Earlier examples using the input as the specimen chamber should not be combined blindly with the separate input port documented here.