The Most Headache-Inducing Thing About Playing Factorio Is Never Knowing What's Actually Going On in Your Factory
Honestly, every time I start a new game of Factorio, I feel like a headless chicken—are the miners stopped? Is research stuck? Do we have enough coal? These questions all require manually running around the map to check one by one, and it drives me crazy. It wasn't until I discovered this Factory Status Check skill that I felt like I'd opened the door to a whole new world.
Simply put, this skill helps you see your factory's "health report." You don't need to run across the entire map; just execute one command, and you'll know what's currently being researched, how many drills are working, and how much coal, iron plates, and copper plates are in your inventory. For someone like me who often loses track of time while playing, this is an absolute lifesaver.
First, Let's Talk About What This Skill Actually Does
According to the skill description, it's used to obtain a "comprehensive factory status"—meaning a full overview of your factory. This includes research progress, drill status, inventory, and production overview. As I understand it, the core purpose is: when you don't know what to do, run this skill and you'll immediately know what issue you should prioritize solving next.
For example, if you see that research_progress shows "15%" and the number of techs_researched hasn't changed for a while, then you should go check whether your research labs aren't being fed materials. If working_drills is far less than total_drills, chances are the ore has run out or the belts are clogged. These are all critical points that affect the pacing of your game.
How to Use It? It's Actually Super Simple
The official quick status command is:
pnpm --prefix /Users/golergka/Projects/factorio-agent factory:status
Just run this in the project directory, and you'll see some basic data. However, if you want to see more detailed information, you'll need to write a Lua script. At first glance, I was a bit confused by that Lua code, but on closer inspection, the logic is actually very clear:
-- Get comprehensive status
local status = {}
-- Research
local research = force.current_research
status.research = research and research.name or "none"
status.research_progress = research and string.format("%.0f%%", force.research_progress * 100) or "N/A"
status.techs_researched = 0
for _, t in pairs(force.technologies) do
if t.researched then status.techs_researched = status.techs_researched + 1 end
end
It first gets the name of the currently researched technology and its progress percentage, then iterates through all technologies to count how many have been fully researched. Next, it counts the drills:
-- Buildings
local drills = surface.find_entities_filtered{force=force, name='burner-mining-drill'}
status.total_drills = #drills
status.working_drills = 0
for _, d in ipairs(drills) do
if d.status == 1 then status.working_drills = status.working_drills + 1 end
end
Here, it uses find_entities_filtered to find all entities named 'burner-mining-drill' (which are the mining drills), then checks the status of each drill—if the status equals 1, it means the drill is currently working. Finally, there's the inventory:
-- Inventory highlights
status.coal = player.get_item_count('coal')
status.iron_plates = player.get_item_count('iron-plate')
status.copper_plates = player.get_item_count('copper-plate')
status.iron_ore = player.get_item_count('iron-ore')
It directly retrieves the quantities of coal, iron plates, copper plates, and iron ore carried by the player. Finally, it uses rcon.print(serpent.line(status)) to print out the entire status table in a neat, well-formatted manner that's very pleasing to look at.
Installation and Deployment Are Basically a One-Shot Deal
This skill comes from the GitHub repository ForceInjection/domain-driven-desig...