現在地ではなく移動先の状態を調べてから、
実際に移動するかどうかを
決定するようにしてみては、どうでしょう?
今、
IF ~ THEN Y=Y~
IF ~ THEN X=X~
となっているところを
例えば
IF ~ THEN KY=Y~
IF ~ THEN KX=X~
IF KX,KYなど4点とも空白 THEN
X=KX:Y=KY
みたいにします。
そのために、例えば
KX,KYという変数を用意して
IF (B~ THEN Y=Y~
IF (B~ THEN X=X~
のところを
IF (B~ THEN KY=Y~
IF (B~ THEN KX=X~
として、それに続いて
~=BGGET(0,KX,KY,1)
…
と4点のチェックをします。
そのあとで
X=KX:Y=KY
SPOFS 100,X,Y
とするといいと思います。