   (init-monsters)
   (init-player))
 
+(defun orc-battle-cycle ()
+    (show-player)
+    (setq orc-battle-player-turns (1+ (truncate (/ (max 0 orc-battle-player-agility) 15))))
+    (setq orc-battle-player-current-turn (1+ orc-battle-player-turns))
+    (phase-one))
+
 (defun phase-one ()
-  (show-player)
-  (dotimes (k (1+ (truncate (/ (max 0 orc-battle-player-agility) 15))))
-    (unless (monsters-dead)
-      (show-monsters)
-      (player-attack)))
+  (when (= orc-battle-player-current-turn 0) (phase-two))
+  (unless (or (monsters-dead) (player-dead))
+    (show-monsters)
+    (player-attack)
+    (decf orc-battle-player-current-turn)
+    (recenter -2))
   (newline))
 
 (defun phase-two ()

  (interactive)
  (monster-hit (pick-monster)
               (+ 2 (randval (ash orc-battle-player-strength -1))))
  (phase-two))

(defun player-double-swing ()
  (interactive)

         orc-battle-monsters))
  (newline))

;; monster
(defclass monster nil ((health :initform (randval 10)))
  "A monster")

(defmethod monster-dead (m)
  (<= (monster-health m) 0))

(defmethod monster-health (m)
  (oref m health))

(defmethod monster-hit (m x)
  (decf (oref m health) x)
