Okay, by looking at the code, cancelling the replay is done first, but this doesn't allow overriding the assignment in the current frame (which is put into effect in the next frame, thus causing the appearance of it updating physics first).
if (Button = mbLeft) and (not Game.CtrlButtonHeldDown)
and not (Game.Replaying and GameParams.ExplicitCancel) then
begin
Game.RegainControl;
HandleClick := true; //{not Game.Paused and} not Game.FastForward{ or UseClicksWhenPaused};
if HandleClick then
begin
if Game.fAssignEnabled then
Game.ProcessSkillAssignment;
if Game.Paused then
ForceUpdateOneFrame := True;
end;
end;
So, I'll have to look into TLemmingGame.ProcessSkillAssignment. I have a feeling the current behaviour was implemented as a fix to something else, so I can't promise anything - if something bigger would break by fixing this, then (at least for now) I'll probably leave it the way it currently is.