Various bugfixes

Fixes for: 
#3482
#2469
#3928
#3863
#3769
Move() has already exited at this point, so no. I could relocate the help-intent swapping code into Move() but I don't think that would be ideal because it would involve custom collision checks which Move() already handles (so we're replacing some manual overrides with others).