Oh HO! Fun "Bug". Or Feature, depending on your perspective.
There had been talk about some occasions when the enemy AI units in missions would do nothing but brace, but AFAIK there's not that much in investigations into it. Well... I ran full into that one, which had the symptoms but the trigger in this case is probably unique to my case.
So yeah, symptoms are the game will progress but the enemy AI would not move or attack. As it turned out, I had AI logging turned on, so.. opportunity!
What
actually happened is this error in the normal output_log.txt:
Code:
DirectoryNotFoundException: Could not find a part of the path "D:\Programs\Steam\steamapps\common\BATTLETECH\AI_Logs\bh_THI\SSW_Assassin_Pilot_e3e3_2019_01_03_22.18.15_r01_p05.txt".
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0
at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) [0x00000] in <filename unknown>:0
What the...?!? 
Well.. that mech is from my mod, but why was it trying to write a subdirectory? I don't use "/" or "\" in my ID definitions or anything critical. In fact, the relevant block from that mech is here:
Code:
"Description": {
"Cost": 3686014,
"Rarity": 3,
"Purchasable": true,
"Manufacturer": "Tetsuhara Heavy Industries/ Solaris Skunkwerks",
"Model": null,
"UIName": "THI/SSW Assassin ASN-21",
"Id": "THI_SSW_mechdef_assassin_ASN-21",
"Name": "THI/SSW Assassin",
"Details": "",
"Icon": "uixTxrIcon_panther",
},
Oh.
OH.
Remembered I said I had AI logging turned on? So..
that AI logging apparently uses the
Name field of the definitions as a
filename.

So, yes, I need to go resanitize my files..
again.
It gets better.
So, the system took a string that got treated as a file directory extension, so the
logging system took a hard dump, but that hard dump ended up over at the AI behaviour section, where that hard dump took the brains out of the AI.
Code:
AI Behavior Tree Error in Tick for sequence0004 : System.NullReferenceException: Object reference not set to an instance of an object
at SequenceNode.Tick () [0x00000] in <filename unknown>:0
at BehaviorNode.Update () [0x00000] in <filename unknown>:0
That apparently neutered the brains,
ALL the brains, because the AI logs for those that managed to log came out like this:
Code:
Round: 0
Phase: 0
Unit: Blackjack
Unit GUID: ab9e2bfb-f6c4-4b4b-b540-957dcfc48a27.0
Pilot Callsign: Pilot
Lance: Lance d9a28c08-abdb-42bb-a140-ad3927d1f8cf.Lance
Team: Target
Role: Undefined
evaluating behavior tree for Blackjack dynamic role: Brawler
in update completed for clearSensorLock0000 with result Success.
NULL order info.
Two key thing -- first, an Undefined Role. Typically most mechs have a role defined, especially one included in the base game. The second thing is NULL orders. One or the other led down the merry path where the Mech decides it has no order, and, in the nicest behaviour so far, defaults to a BRACE order. And so the Mech just stands there and do nothing.
"The AI returned NULL orders. Bracing, instead."
It gets better.
Null Reference Exception/ Null Pointer Exceptions are downright insidious, because they can lead to a cascading series of problem. This particular one eventually went
somewhere and crashed my display drivers, hard. Windows had to step in and restart them:
Code:
d3d11: failed to create staging 2D texture w=128 h=128 d3dfmt=28 [887a0005]
d3d11: failed to create staging 2D texture w=128 h=128 d3dfmt=28 [887a0005]
d3d11: failed to create buffer (target 0x1 mode 1 size 18560) [0x887A0005]
d3d11: failed to create buffer (target 0x2 mode 1 size 1416) [0x887A0005]
d3d11: attempt to lock null buffer
d3d11: attempt to lock null buffer
UI went straight out and while I can hear the game in the background, the UI is dead, Jim. Had to kill the entire program.
So yeah. Sanitize your UI Name and Name fields!