See also `gnugo-undo-two-moves'."
(interactive "P")
(gnugo-gate)
- (gnugo-magic-undo 1 t)
(when me-next
- (let* ((wait (gnugo-get :last-mover))
- (play (gnugo-other wait)))
+ (let* ((play (gnugo-get :last-mover))
+ (wait (gnugo-other play)))
(gnugo--who-is-who wait play (string= play (gnugo-get :user-color)))
(gnugo-put :user-color play)
- (gnugo-put :gnugo-color wait))))
+ (gnugo-put :gnugo-color wait)))
+ (gnugo-magic-undo 1 t))
(defun gnugo-undo-two-moves ()
"Undo a pair of moves (GNU Go's and yours).
(let ((g (gnugo-get :gnugo-color))
(n (or (gnugo--root-prop :HA) 0))
(u (gnugo-get :user-color)))
- (gnugo-put :last-mover
- (if (or (and (gnugo--blackp u) (< 1 n))
- (and (gnugo--blackp g) (< n 2)))
- u
- g))
+ (unless (gnugo-get :last-mover)
+ (gnugo-put :last-mover
+ (if (or (and (gnugo--blackp u) (< 1 n))
+ (and (gnugo--blackp g) (< n 2)))
+ u
+ g)))
(run-hooks 'gnugo-start-game-hook)
- (when (string= g (gnugo-current-player))
+ (when (and (not (gnugo-get :game-over))
+ (string= g (gnugo-current-player)))
(gnugo-refresh t)
(gnugo-get-move g))))))