 //                    node!.physicsBody!.velocity.dx = dir * Constants.BossMaxSpeed
 //                }
 //            }
-        } else {
-            // Check if player is walking away from the boss
+        } else if state == BossState.Waiting {
+            // Stand still and wait for the player to move left or right
+            state = BossState.Chasing
+        } else if state == BossState.Cutscene {
+            // Play the cutscene
+            // stun player
+            Player.clearVelocity()
+            // black bars appear on top and bottom (to indicate cut scene)
+            // boss appears on left side
+            state = BossState.Waiting
+        } else /* state == BossState.Sleeping */{
+            // Wait for player to get in position
             if playerPos.x >= Constants.BossWakeX {
-                awake = true
-//                Boss.animateOnce(Constants.Sprite_BossAppear, timePerFrame: 0.3, completion: { () in
-//                    Boss.animateContinuously(Constants.Sprite_BossWalk, timePerFrame: 0.1)
-//                    awake = true
-//                })
+                state = BossState.Cutscene
             }
         }
     }

        node!.removeAllActions()
        (node as! SKSpriteNode).texture = SKTexture(imageNamed: "bossAppear_00")
        
        awake = false
    }
    
    class func getPos() -> CGPoint {

        // TODO if player not running keep boss momentum
        // TODO what to do if player stops and runs? (boss will just be forever closer)

        
        if state == BossState.Chasing {
            // Chase player
            let dir = Utility.direction(bossPos.x, x2: playerPos.x)
            node!.physicsBody!.velocity.dx = dir * Constants.PlayerSpeed
//            if Player.dying {
