Define your units and possible mission objectives once at the start of the game. Fixed traits (class, role, jump jets, short-range weapon) are remembered — the MOVE and FIRE forms no longer ask about them.
Export / Import squad
Export saves your whole squad (mechs, assets, mission objectives) to a .json file on your computer, so you can reuse it in a future game or campaign session. Import loads it back — everything is validated on load, so a broken or edited-by-hand file is safely rejected instead of crashing the app. Uncheck "Include assets" to leave assets out of both export and import.
EXPERIMENTAL: reads a "Master Unit List - Forces" PDF exported from the MUL Alpha Strike Force Builder or Total Warfare Force Builder — name and class (from tonnage). Role and other traits are not read automatically — fill them in below and confirm to add the squad.
PDF IMPORT PREVIEW — fill in and confirm
NameClassRole
Nothing here is added to the squad until you press Confirm. Export saves the list as-is (with whatever you've filled in) to .json — reuse it with regular JSON import next time, no need to redo the PDF parsing.
Advanced initiative (Unequal Number of Units)
Official Battletech rule for forces of unequal size: the side with more units must activate several of them at once at the right moments, so both sides finish the movement phase at roughly the same time. When enabled, fill in the player's unit count and mark who won initiative on the INITIATIVE tab before rolling — the MOVE tab will then show the activation sequence and track progress through it.
UNITS IN THE SQUAD
The squad is empty — add mechs above.
MISSION OBJECTIVES (optional)
Define possible mission objectives carried out by HexBots.
No mission objectives defined.
BATTLEFIELD SUPPORT ASSETS (optional)
A separate squad of vehicles (not mechs) — they always move first and have their own initiative order based on speed.
Emplacement does not perform a movement phase — only the fire phase.
No support assets added.
INITIATIVE
Do this once per turn: roll the movement order for units. Mission objectives are handled per unit in the MOVE / FIRE tabs.
ADVANCED INITIATIVE — UNEQUAL NUMBER OF UNITS
MOVEMENT ORDER
Each unit rolls 2d6 to determine this turn's movement order.
Once the order is rolled, the app will automatically switch to the MOVE tab.
UNIT MOVEMENT
Do this separately for each unit, in the order from the INITIATIVE tab. "Next" after the last unit will switch to FIRE.
WAITING FOR DATA... Set movement parameters and run the simulation.
No units
FIRE
Do this after all units have finished moving. "Next" after the last unit will switch to SUMMARY.
WAITING FOR DATA... Set fire parameters and run the simulation.
No units
TURN SUMMARY
Confirming will switch back to the INITIATIVE tab, ready for the next turn.
SQUAD UNIT STATUS
SCENERY ADD-ONS
Optional extra tools, enabled here, quickly reachable from their relevant phase tab.
Minefields
Define one or more minefields with a density and a type (Standard / Inferno / Vibrabomb). Once enabled, a 💣 Minefields button appears on the MOVE tab to roll detonation checks on demand. Minefields are an optional scenario embellishment — place them on the physical battlefield using letter or number markers matching each field's label. Just lay out physical markers on the battlefield and configure them here in Scenery Add-ons to enjoy this varied battlefield element.
'Generate fields' lets you set each field's type/density yourself. 'Random fields' hides the type and density of every field from you until it's revealed on the MOVE tab — for a genuine surprise.
Every detonation that deals raw damage (Standard, Vibrabomb) automatically splits its 5-point groups between the left and right leg — Inferno hits are unaffected.
CONFIGURED FIELDS
✔ Saved
Battlefield Conditions
A set of original, house-rule battlefield conditions (not a reproduction of any official weather table) — pick one manually, or roll 2D6 for a random one. Once confirmed, its name appears as a clickable banner on the MOVE and FIRE tabs; clicking it reopens a reminder of its exact rules. Battlefield Conditions are an optional scenario embellishment — use it purely for variety, it isn't required to play.
✔ Saved
▸ Pełne tabele referencyjne (rozwiń)
Intensywność ruchu (2k6, baza)
2k6
Ciemno (wróg nieznany)
Reakcja (wróg już się poruszył)
2–3
Ostrożnie
Odwrót
4–6
Utrzymanie pozycji
Repozycja / Optymalny dystans
7–9
Standardowy advance
Optymalny dystans
10–11
Agresywnie
Flankowanie
12
Szarża
Pełna agresja
Propozycje celu ruchu / ognia (opis, nie losowanie)
Odczyt zawsze podaje warianty uporządkowane wg dystansu (do 3 hexów → do 6–9 hexów → do 14 hexów → powyżej 15 hexów → uniwersalny fallback: najbliższy wróg), z regułami rozstrzygania przy wielu celach w tym samym paśmie. Cel misji bywa losowo dołączany jako dodatkowa opcja.
Cechy jednostek definiowane w zakładce DRUŻYNA
Cecha
Efekt
Silniki skokowe
Automatycznie rozważane w fazie ruchu (rzut k6) — bez pytania w formularzu.
Dominująca broń krótkiego zasięgu
W paśmie do 3 hexów: +1 do modyfikatora ruchu. Próg "średniego" pasma w propozycjach ognia bywa zawężany do 6 hexów zamiast 9.
Niższe obrażenia, bez ryzyka przewrócenia przy nieudanym ataku.
5–6
Taran (szarża)
Wysokie obrażenia dla obu stron, ryzyko przewrócenia obu jednostek.
Morale (2k6, po poważnych uszkodzeniach)
2k6
Efekt
2–5
Wycofanie w osłonę / poza mapę.
6–9
Kontynuuje, −1 do ruchu w kolejnej turze.
10–12
Walczy dalej bez zmian.
Cykl zakładek
DRUŻYNA (raz, setup) → INICJATYWA (co turę: priorytet misji + losowanie kolejności → auto-przejście do RUCH) → RUCH (Następny po ostatniej jednostce → auto-przejście do WALKA) → WALKA (Następny po ostatniej jednostce → auto-przejście do PODSUMOWANIE) → PODSUMOWANIE (Zatwierdź → auto-powrót do INICJATYWA) → cykl się powtarza.
All tests and decisions for the HexBots are made by you, the player. ⚠ Disclaimer: use common sense with the generated suggestions — treat them as inspiration, not strict orders. The most important thing is epic fun and memorable clashes, not perfect adherence to a random result.
HexBots behavior
HexBots always use the Light Air Cover and Heavy Air Cover battlesupport cards whenever they can.
How to read the generated options: always read the points starting from A. If the first one already lets the bot act logically on the map, use it. If you need to narrow it down further (e.g. pick a specific target), or if the next points are useful and either complement the earlier one or replace it, use those too.
Movement order structure: point A is always the main order (e.g. head toward the enemy, get to its rear, disengage while keeping the ability to fire, stay in a good firing position, or fall back). The points after it (B, C…) refine that main order (cover, minimizing enemy firing lines, map edge, speed, jump jets) — they never contradict it. A prone HexBots always gets a standing-up order first; a Crippled one only ever gets a single order: head for the nearest map edge.
Which enemy to move toward: the distance band you pick in the MOVE form (1–4 / 5–9 / 10–14 / 15+ hexes) is the range to the nearest enemy. If several enemies fall within that same band, point B) decides which one the main order refers to — when the main order is "Head toward the enemy", point B) always lists several target criteria (e.g. heaviest, fastest, most valuable) separated by commas; pick whichever applies. If you still need more options, use the "🧍 Commander's decision" button. Every point after B) is a supplementary order — carry it out if it's actually possible on the table, but it's never a strict requirement.
Which enemy to fire at: the range band you pick in the FIRE form identifies the nearest enemy, but the actual target is defined by the generated order — it's a criterion (e.g. easiest to hit, heaviest, most damaged), not necessarily the nearest one. If only one enemy is within the chosen range band, that one is the target — no need to check the criteria. If there's more than one, selection is made based on the order, starting from point A. If several enemies in range satisfy the order's criteria, check the listed points in order (A, then B, then C…) until only one target fits. If you run out of criteria before narrowing it down to one, use the "🧍 Commander's decision" button for fresh, unused criteria to fall back on.
HexBots is designed for smaller engagements or campaign skirmishes — e.g. on a single map/battlefield — rather than massive multi-table battles.
Setup (SQUAD and INITIATIVE tabs)
In the SQUAD tab, add units — choose a class, optionally a combat role, jump jets, and short-range weapon.
Optionally also define mission objectives there (building, scanning, commander, custom).
Go to the INITIATIVE tab. If you have mission objectives defined, pick the active one for this turn — manually or with the roll button.
Click "Roll movement order" — the app will set the order (assets always move first, then light mechs usually before medium/heavy ones) and switch you to the MOVE tab.
Movement (for each unit, in rolled order)
Distance to the nearest / relevant enemy — indicate the actual distance on the table to the nearest relevant opponent.
Has this enemy already moved this turn? — mark whether that specific enemy unit has already been activated this turn.
Serious damage in the last combat phase? — mark this if this HexBots has taken serious damage (armor loss, structural damage). This refers to the HexBots unit, not a player's mech.
Is the mission objective reachable this turn? — if you have an active formal mission objective, state whether it can still be reached.
RUN MOVE.
Read the generated options (points A, B, C…) and carry out the movement that best matches the first option that can actually be done on the table — if it cannot be done, move on to the next point.
Next — moves to the next unit. After the last one, it automatically switches you to the FIRE tab.
Fire (after all units have moved)
Firing mech — choose a unit (or use the Previous/Next buttons).
Choose the range to the nearest enemy — state the distance to the nearest visible target.
Possible physical attack? — appears when the target is within 3 hexes; if set to YES, this HexBots gets an "Attack in the melee-attack phase" label, plus a rolled melee option alongside/instead of firing.
RUN FIRE.
Read the options (A, B, C…) and carry out the first condition that can actually be satisfied. If it cannot be applied (e.g. no such target on the table), move on to the next point.
Next — moves to the next firing unit. After the last one, the app takes you to SUMMARY.
Turn summary
Who dealt more damage this turn? — mark who had the upper hand.
Did any enemy die? — mark this if the HexBots squad eliminated a player unit.
Squad unit status — for each HexBots unit, fill in whether it fell down, has structural damage, was destroyed, and its current accumulated heat (+/− counters, remembered between turns).
Click Confirm and start new turn — the app returns to the INITIATIVE tab and the cycle repeats from rolling mission priority and movement order.
Additionally
You can play without a squad — choosing "quick simulation" in the MOVE/FIRE forms lets you test a single roll without any setup.
In the SQUAD tab you can export your whole roster (mechs, assets, mission objectives) to a .json file, and import it back later — handy for reusing the same squad in a future game or campaign session. Imported files are fully validated before use.
If none of the generated fire options let you pick a target, use the "🧍 Commander's decision" button below the fire result — it offers a few fresh, previously unused target criteria to fall back on.
A short glossary of terms that keep recurring in the generated movement and fire orders.
Cover
Any terrain that blocks or reduces enemy fire — buildings, rocks, ridgelines, or forest. Most movement orders default to seeking it unless another priority overrides it.
Range (close / medium / long)
Distance to the enemy, tied to weapon effectiveness rather than a fixed number — close range favors brawling weapons, long range favors sustained fire from a distance.
Range bracket
The close/medium/long/very long/out-of-range bracket you pick on the MOVE/FIRE forms before running an order — it selects which pool of texts and probabilities gets used, not an exact hex count.
Without exposing your rear armor
A mech's rear armor is thinner than its front — this phrase means positioning or turning so the weaker rear plating isn't left facing the enemy.
Map edge
The border of the playing area. Used both offensively (flanking along an edge) and defensively (falling back toward your own starting edge).
Flanking / getting to the rear
Circling around the enemy to attack from the side or back, where armor is weaker and firing lines are harder for the enemy to set up.
Mobility / speed
Using movement itself as a defense — a mech that moves unpredictably or at high speed is harder for the enemy to hit, independent of cover.
Firing line
A clear, unobstructed path between a shooter and a target. Orders that mention minimizing enemy firing lines are about limiting how many enemies can see and hit you at once.
Contact / melee
Being close enough to the enemy to trade physical attacks (punches, kicks, charges) instead of, or alongside, ranged fire. The "Melee weapon" checkbox in the SQUAD tab makes this a possible main order for that mech.
Disengage
Pulling back from the enemy while still keeping the ability to fire — used at close range against an enemy that hasn't moved, by Missile Boats/Snipers holding medium range, and also as one of two possible main orders when a morale check forces a retreat.
Stay in position
Available to Missile Boats/Snipers at medium, long, or very long range — if the current spot already gives a good line of fire, there's no need to move.
Fall back to the starting edge
A maneuver-focused retreat toward your own deployment edge, staying turned to face the enemy if possible — used by mobile/long-range roles (never on the very first turn or at long range), and also as one of two possible main orders when a morale check forces a retreat.
Crippled
A checkbox in the SUMMARY tab — a severely damaged HexBots that only ever heads for the nearest map edge to flee the battlefield, in movement. It still fires normally, but never pursues a mission objective.
Standing up (with / without a test)
A fallen (prone) HexBots always stands up first. Without a test, it simply stands and faces the most enemies, with no further orders that turn. With a test, it stands and then continues with a normal movement order.
Water crossing
Most units avoid moving through water. Hover vehicles are the exception — they cross water as freely as solid ground, but can't enter or cross forest. VTOLs fly, so water doesn't apply to them at all.
Jump jets
Let a unit ignore terrain obstacles when taking up position. Available for mechs and assets with the jump-jets trait checked (Battle Armor and Infantry Jump always have it).
Spotting (TAG)
An order available to light mechs — marks a target that other units in the squad can then make use of in the FIRE phase.
Spotted target
An additional fire order available to Fire Support/Missile Boat/Assault (and occasionally Heavy) when another HexBot has spotted a target this turn.
Objective considered this turn
A checkbox in the MOVE tab — decides whether a defined mission objective is taken into account at all this turn for a given unit. Unchecking it doesn't delete the objective, it just skips it for this turn.
Supporting an ally
An order that has a unit head toward its nearest ally to back them up.
High ground
An order to head toward the nearest elevated terrain, if it's reachable this turn.
Mission engagement
Whether a unit actually acts on a checked objective varies from turn to turn — so the battlefield doesn't feel like every HexBot is robotically beelining for the same marker non-stop.
Hunt the commander
A mission objective type marking one enemy unit as the priority target — affects both movement and fire orders, though it doesn't always take precedence if other objectives are also active.
Krótka, jednozdaniowa charakterystyka każdej klasy, roli i typu assetu.
Mech classes
Light
A nimble opportunist — circles for weak points instead of trading blows head-on.
Medium
A versatile soldier — handles any situation reasonably well, master of none.
Heavy
A solid, aggressive fighter — not afraid to close the distance and go toe-to-toe.
Assault
An unyielding juggernaut — rarely retreats and is the most eager of all classes to go into melee.
Mech roles
None
Follows its class instinct, without any further specialization.
Skirmisher
A restless maneuverer — prefers circling and finishing off the wounded over standing its ground.
Brawler
A straightforward tough guy — heads straight for the nearest enemy.
Juggernaut
An uncompromising battering ram — never retreats, no matter how damaged it is.
Sniper
A patient marksman — prefers holding distance and a good position over closing in.
Scout
A watchful recon unit — circles, looks for openings, and finishes off the weak while avoiding open combat.
Striker
Unpredictable — plays like a sniper one turn, a scout the next.
Fire Support
Torn between precise long-range support and relentless pressure.
Mech states
Crippled
Broken — thinks only of escaping the battlefield.
Prone
Briefly helpless — the priority is standing up before anything else.
Melee weapon
More eager than others of its class to seek direct contact.
Asset classes
Tracked / Wheeled
A solid, cautious vehicle — sticks to cover and avoids water.
Hover
Shrugs off water obstacles, but skirts around forest it simply can't cross.
VTOL
A fragile, nervy flying machine that survives through motion, not cover.
Infantry
Weak in numbers but tenacious support — sometimes surprisingly mobile (Motorized/Jump).
Battle Armor
Tough, jump-capable infantry — one of the few units that can go into melee.
Emplacement
An immobile turret that never moves — it just waits and fires.
Asset targeting styles
Long-range specialists
A calculating strategist — picks off the most dangerous threats from a safe distance.
Fast / recon
Hunts weak, easy targets, using its speed to get there.
How mission objectives actually play out at the table — explained through examples, not a dry list of rules.
Setting the scene
Say you're running a scenario where your opponent's lance has to secure a comms building before reinforcements arrive. In the SQUAD tab, you add that building as a mission objective — give it a name, mark its type, and decide whether pursuing it counts as a movement task or something the unit resolves through firing (e.g. destroying it).
Turning objectives on and off
Three turns in, the building gets cut off by a river you didn't expect enemy movement to reveal — no HexBot can realistically reach it this turn. Instead of fighting the tool, just uncheck that objective in the MOVE tab's checklist for this turn. Nothing gets deleted — it's simply left out of consideration until you check it again next turn, once the path is clear.
Why not every unit chases the objective every turn
You'll notice that even with an objective checked and reachable, a given HexBot sometimes still gets a normal combat order instead of a mission-related one. That's intentional — it represents a pilot's split attention between orders and the immediate fight in front of them, so the battlefield doesn't feel like every unit is robotically beelining for the same objective marker every single turn. Over several turns, engaged units will cycle through it naturally.
Several objectives at once
Running a bigger scenario with three separate objectives active for the same squad? Check all three. Each turn, an engaged unit weighs all of them (plus its normal combat options) with equal odds — so with more objectives on the table, mission-related orders simply come up more often, without you having to decide in advance which unit handles which target. If you want a unit to ignore one specific objective while still considering the others, just uncheck that one for it.
The four objective types, through examples
Destroy structure/building — like the comms building above: HexBots get movement orders steering them toward it, and once in range, firing orders that target it directly.
Scanning/recon — say the scenario objective is to scan a downed satellite. When an engaged HexBot gets close enough, instead of a normal attack order it'll be told to hold fire and scan this turn instead — useful when you want a unit to pause the fighting for a moment to fulfil a non-combat task.
Hunt the commander — mark one enemy unit as the VIP target for this scenario. Engaged HexBots will maneuver toward it like any other objective, and in the FIRE tab they'll get a focused target-priority order once they're in position — this one plays out in both the movement and the shooting phase.
Custom objective — anything that doesn't fit the three above. You choose yourself whether pursuing it is a movement task ("get somewhere") or a firing task ("shoot this"), which keeps the system flexible for whatever scenario you've come up with.
Entering the map with no enemies or objectives yet
Some scenarios start with your HexBots entering the map before any enemy is visible and before any mission objective has been defined — a staggered deployment, an ambush being set up, that kind of opening. In that case just pick the farthest distance band (15+ hexes) as if the (not-yet-visible) enemy were on the opposite edge of the map. HexBots will head toward that far edge, and any additional orders that come up (using cover, watching firing lines, and so on) still apply normally along the way — they just won't have a concrete target yet, which is exactly right for this kind of opening.
A growing set of optional scenario tools, configured in the SCENERY ADD-ONS tab and reached quickly from the relevant phase tab while playing. The first tool available is Minefields.
Setting up a minefield
Tick 'Enable the minefields tool', pick how many fields you need and whether they're labeled with letters (A, B, C…) or numbers (1, 2, 3…), then press 'Generate fields'. Each field gets its own type (Standard / Inferno / Vibrabomb) and density (5–30, in steps of 5) that you set yourself — the higher the density, the easier it detonates. A 💣 Minefields button then appears on the MOVE tab so you can resolve any field on demand, whenever it makes sense at the table.
Random, hidden fields for a real surprise
Instead of 'Generate fields', press 'Random fields (hidden)'. The same count/labeling settings apply, but this time every field's type and density are rolled secretly — the SCENERY ADD-ONS tab only shows the label with a 🔒 lock icon, nothing else. In the 💣 Minefields modal, a hidden field only offers a '🔍 Reveal field' button; once pressed, its true type and density are shown and the normal roll/check action appears. Use this when you want minefields to be a genuine unknown, the way they'd be for a player who hasn't scouted the ground.
Resolving a field: Standard and Inferno
Press '🎲 Roll 2D6' on the field's card. The result is checked against its density's detonation threshold (5 needs 12+, 10 needs 10+, 15 needs 9+, 20 needs 8+, 25 needs 7+, 30 needs 6+ — so a dense field detonates far more easily than a thin one). On a Standard hit, damage equals the density split into groups of 5, and each group is automatically assigned to a random leg (e.g. a density-20 field rolling four 5-point groups might land 3×5 on the Right Leg and 1×5 on the Left Leg). On an Inferno hit, you instead get one Inferno hit per 2 points of density — Inferno never splits into leg locations, it's tracked as heat/Inferno hits instead.
Resolving a field: Vibrabomb
Vibrabomb doesn't use a detonation roll — it's set to trigger at a chosen mass (e.g. 50 tons). Enter the moving mech's tonnage and press 'Check': below the threshold nothing happens, exactly at the threshold it explodes right under the unit, and every 10 tons above the threshold makes it trigger one hex earlier — a 70-ton mech against a 50-ton Vibrabomb triggers it 2 hexes early. This lets you set a trap tuned to punish only the heavier mechs in the enemy force. A successful trigger still deals density-based damage in 5-point groups with the same leg-location split as Standard.
Fields wear down the more they're used
Every successful detonation (Standard, Inferno or Vibrabomb alike) is immediately followed by a persistence check — another 2D6 roll against the field's current density threshold. A second success means the mines are thinning out: density drops by one step (30→25→20→15→10→5) and you're told it shrank. If a density-5 field also succeeds its persistence check, it's fully spent — the app marks it exhausted and disarmed, and it stops offering any further action in the modal. Failing the persistence check simply leaves the field exactly as it was.
Battlefield Conditions
An optional embellishment for extra variety — entirely original house rules, not a reproduction of any official weather table. Tick 'Enable battlefield conditions for this game', then either pick one from the dropdown yourself or press 'Roll condition (2D6)' for a random one, and press 'Confirm and save condition'. Its name then appears as a clickable banner on both the MOVE and FIRE tabs for the rest of the game — click the banner any time to reopen a reminder of its exact rules. This is purely a flavor/difficulty option: skip it entirely if you just want a straightforward game.
🌤️ Calm Before the Storm
No modifiers — neutral conditions (most common roll).
🌫️ Overcast Haze
+1 to-hit for direct-fire energy weapons. +1 to the cost of entering any hex.
🌧️ Downburst
+1 to-hit for all ranged attacks. +1 movement cost; ground may turn to mud after a few turns.
❄️ Whiteout
+2 to-hit missile/ballistic, +1 energy. +2 movement cost, +2 to Piloting Skill Rolls.
🌑 Pitch Dark
+3 to-hit, reduced to +1 against a target running hot. +2 movement cost, +1 to physical attacks.
☀️☀️ Twin Suns
A target adjacent to a structure/building adds an extra +1 to its own Target Movement Modifier.
🥀 Dead Fields
+1 to-hit for the defender only if the line of fire crosses 2+ Dead Fields hexes (no light/heavy distinction); any unit entering such a hex destroys it permanently.
ABOUT HEXBOTS
HexBots is an independent fan-made tool for solo BattleTech play — it helps you control opponents on the table when you play alone against the app instead of a second player.
The generated actions are only a suggestion — having good fun together is what matters most.
We recommend using it for smaller engagements and single-map campaigns.
JOIN THE COMMUNITY
Enjoying the game so far? There's a Facebook group where changes and updates get posted, and where discussion happens around developing the app and everything else related to our BattleTech hobby.
The app uses GoatCounter — a privacy-friendly, cookieless analytics service — only to count visits and see basic usage statistics (e.g. how many people open the app). It does not use cookies, does not track you across other websites, and does not collect personal data.
The whole game runs entirely in your browser's memory (JavaScript) — it does not use localStorage, sessionStorage, or cookies. All data (squad, mission objectives, turn state) is lost on refresh or when you close the tab.
The server hosting this file may keep standard access logs (IP address, timestamp) depending on hosting configuration — this applies to any website and is not specific to HexBots.
PILOT UNCONSCIOUS
The pilot is trying to regain consciousness. Did the test succeed and is the pilot now able to fight?
☕ SUPPORT HEXBOTS
If you like the app, buy us a coffee — it helps with the ongoing development and upkeep of HexBots.
SQUAD WIPED OUT
All HexBots units have been eliminated. Game over.
💣 MINEFIELDS
REGENERATE
The result for this unit has already been generated this turn. Do you want to regenerate it?
UNIT HAS NOT TAKEN ITS ACTION
No action has been generated yet for this unit this turn. Do you want to move on anyway?