I've recently noticed that when the Princess bot uses jump movement, the 'Mech in question ends up getting treated as having moved far less than either the physical number of hexes traveled or the movement actually shown as used in the 'Mech display. E.g., it may jump 5 hexes and display (5 used) as well, but then claim to have only "Jumped 2" all the same...complete with the attendant lower target movement modifier.
This seems to be Princess-specific as I haven't been able to recreate this behavior with my own units and the TestBot, when I can tease it into jumping, likewise hasn't shown any signs of it yet.
Okay, I see what's going on here now. As the attached megamek.log file will show, the Princess bot feels free to merrily change direction in mid-jump -- that is, it'll for example start a jump with some forward moves, turn, and go backwards the rest of the way. That of course causes MoveStep.compileMove() to sit up and reset the distance moved so far at that point as usual for direction changes.
The problem isn't with MoveStep.compileMove(), it's with Princess blatantly submitting movement paths other players can't even get -- if I try to back up in mid-jump, the entire jump is simply cancelled.
Aaand...fixed by the simple expediency of adding backward "steps" while jumping illegal in the first place in MovePath.addStep(). They really make no sense anyway since any possible jump path can be fully constructed using just turns and forward movement, they just weren't explicitly prohibited before because -- I think -- nothing before Princess actually tried to use them and so their interaction with the normal course reversal rules in MoveStep.compileMove() remained unnoticed.
By removing "backward jumping" as an option, Princess now has to play by the same jumping rules that everybody else was using already and the bug no longer occurs.
This bug has been found and should be fixed in the next version.
(Gah...should have been "making adding backward "steps"", of course.)
A fix is in place for this bug in the latest development release.