Various bugfixes

Fixes for: 
#3482
#2469
#3928
#3863
#3769
I think this is the easiest solution. At this point in the call stack Move() has already been called and failed, so the help-intent swapping here makes the human mobs jump to each other's position. Hardcoding calls to Crossed() means adding an exception to the exception to retain intended functionality and I'd rather not go into a refactor because I'm not sure it would even be possible.