Let me be up front, this comes across as self promotion, but really I just wanted to make something the community can use, but if it still seems to the mods like self promo then so be it.
When I've played battletech solo, the worst part was running the other side. You know what you're planning, so the enemy never does anything you didn't expect.
Most solo aids give you a generic behaviour table that treats an Atlas and a Trebuchet exactly the same, which is no help at all.
So I built one that reads the actual loadout.
The bit I care about most is how it works out where a mech wants to fight. For Classic it ignores the Alpha Strike damage numbers, because those squash minimum range and each weapon's own brackets into one figure and you lose everything useful.
Instead it walks the hexes in each band, checks which bracket every gun on the mech falls into, applies minimum range penalties, turns the to-hit into a 2d6 hit chance and adds up expected damage. Then it weights that by role.
So a Trebuchet wants long, because LRM 15s reach 21 and its backup lasers are dead past 9.
An Atlas wants short, because the AC/20 and four mediums all peak inside 3 hexes.
An Awesome 8Q sits at medium instead of charging in, because three PPCs have a minimum range of 3 and getting close is genuinely bad for it.
Weapon stats are off the Total Warfare tables and the Tactical Operations advanced weapons tables. Variable damage weapons get handled properly, so Heavy Gauss reads 25/20/10 and Snub-Nose PPC reads 10/8/5.
Both rulesets are in there and kept separate. Alpha Strike gets OV, heat, shutdown and TMM. Classic gets the weapon model plus the full loadout and heat sink count on the card, and it will never quote you an Alpha Strike damage number.
Orders also know how fast the mech is. Someone flagged a Sagittaire being told to close to short range. The range preference was right, five Medium Pulse Lasers and two Large Pulse is a knife fighting loadout, but the thing walks 3 and runs 4. That's three turns crossing open ground barely shooting back. Now it tells you that, and sends slow mechs cover to cover instead of straight up the guts.
Things it does not do. It only runs the OpFor, not your force, so it can't work out your TMM or pick targets for you. It has no idea what your terrain looks like.
It's free, no signup, runs in your browser. If a specific mech reads wrong in play I want to hear about it, that's the useful kind of bug report.
battletechhq.com/opfor-command.html