                                             \ 
                                             (case (cell :type)
                                               :floor \·
-                                              :corridor \#
-                                              :vertical-wall \║
-                                              :horizontal-wall \═
-                                              :upper-left-1 \╔
-                                              :upper-right-1 \╗
-                                              :bottom-left-1 \╚
-                                              :bottom-right-1 \╝
-                                              :upper-left-2 \◙
-                                              :upper-right-2 \◙
-                                              :bottom-left-2 \◙
-                                              :bottom-right-2 \◙
+                                              :corridor "\033[38;2;191;171;143m#\033[0m"
+                                              ;:vertical-wall \║
+                                              :vertical-wall "\033[38;2;191;171;143m║\033[0m"
+                                              :horizontal-wall "\033[38;2;191;171;143m═\033[0m"
+                                              :vertical-wall-alt \°
+                                              :horizontal-wall-alt \°
+                                              :upper-left-1 "\033[38;2;191;171;143m╔\033[0m"
+                                              :upper-right-1 "\033[38;2;191;171;143m╗\033[0m"
+                                              :bottom-left-1 "\033[38;2;191;171;143m╚\033[0m"
+                                              :bottom-right-1 "\033[38;2;191;171;143m╝\033[0m"
+                                              :upper-left-2 "\033[38;2;191;171;143m◙\033[0m"
+                                              :upper-right-2 "\033[38;2;191;171;143m◙\033[0m"
+                                              :bottom-left-2 "\033[38;2;191;171;143m◙\033[0m"
+                                              :bottom-right-2 "\033[38;2;191;171;143m◙\033[0m"
                                               :close-door \+
+                                              ;:shallow-water \~
+                                              :shallow-water "\033[38;2;1;217;163m~\033[0m"
+                                              :grass "\033[38;2;1;140;1m\"\033[0m"
+                                              ;:vine \⌠
+                                              :vine "\033[38;2;1;140;1m⌠\033[0m"
                                               :up-stairs \<
                                               :down-stairs \>
+                                              :moss-corridor "\033[38;2;1;140;1m#\033[0m"
+                                              :moss-vertical-wall "\033[38;2;1;140;1m║\033[0m"
+                                              :moss-horizontal-wall  "\033[38;2;1;140;1m═\033[0m"
+                                              :moss-vertical-wall-alt  "\033[38;2;1;140;1m°\033[0m"
+                                              :moss-horizontal-wall-alt  "\033[38;2;1;140;1m°\033[0m"
+                                              :moss-upper-left-1  "\033[38;2;1;140;1m╔\033[0m"
+                                              :moss-upper-right-1  "\033[38;2;1;140;1m╗\033[0m"
+                                              :moss-bottom-left-1  "\033[38;2;1;140;1m╚\033[0m"
+                                              :moss-bottom-right-1  "\033[38;2;1;140;1m╝\033[0m"
+                                              :moss-upper-left-2  "\033[38;2;1;140;1m◙\033[0m"
+                                              :moss-upper-right-2  "\033[38;2;1;140;1m◙\033[0m"
+                                              :moss-bottom-left-2  "\033[38;2;1;140;1m◙\033[0m"
+                                              :moss-bottom-right-2 "\033[38;2;1;140;1m◙\033[0m"
+                                              :white-corridor "#"
+                                              :white-vertical-wall "║"
+                                              :white-horizontal-wall  "═"
+                                              :white-vertical-wall-alt  "°"
+                                              :white-horizontal-wall-alt  "°"
+                                              :white-upper-left-1  "╔"
+                                              :white-upper-right-1  "╗"
+                                              :white-bottom-left-1  "╚"
+                                              :white-bottom-right-1  "╝"
+                                              :white-upper-left-2  "◙"
+                                              :white-upper-right-2  "◙"
+                                              :white-bottom-left-2  "◙"
+                                              :white-bottom-right-2 "◙"
                                               (str (cell :type)))))
                                        line))) place)]
     contents))

;; Functions for randomly generating maps.
(ns robinson.dungeons.temple
  (:require [robinson.common :as rc]
            [robinson.lineofsight :as rlos]
            [clojure.math.combinatorics :as combo]
            [algotools.algos.graph :as graph]

                  [max-x min-y {:type (if alternate-corners? :upper-right-2 :upper-right-1)}]
                  [min-x max-y {:type (if alternate-corners? :bottom-left-2 :bottom-left-1)}]
                  [max-x max-y {:type (if alternate-corners? :bottom-right-2 :bottom-right-1)}]]]
        wall-greeble? (< 0.7 (rand))
        [direction
         location] (if wall-greeble?
                     (if (> 0.5 (rand))
                       [:horizontal (set (take (inc (rand-int 2)) (shuffle (range (inc min-x) max-x))))]
                       [:vertical   (set (take (inc (rand-int 2)) (shuffle (range (inc min-y) max-y))))])
                     [nil nil])
        top    [(map (fn [x]
                       [x min-y {:type :horizontal-wall}])
                     (range (inc min-x) max-x))]
        bottom [(map (fn [x]
                       [x max-y {:type :horizontal-wall}])
                     (range (inc min-x) max-x))]
       ;; make one middle line template
        middle-line (concat [[min-x {:type :vertical-wall}]]
                            (vec (map (fn [x] [x {:type :floor}]) (range (inc min-x) max-x)))
                            [[max-x {:type :vertical-wall}]])
        ;; duplicate it
        middle-lines (vec (map (fn [y]
                                 (map (fn [[x cell]]
                                        [x y cell])
                                      middle-line))
                               (range (inc min-y) max-y)))
        cellsxy (apply concat (concat corners top middle-lines bottom))
        ;; add greeble
        cellsxy (map (fn [[x y cell]]
                       (if wall-greeble?
                         (cond
                           (and (= direction :horizontal)
                                (= (get cell :type) :horizontal-wall)
                                (contains? location x))
                             [x y (assoc cell :type :horizontal-wall-alt)]
                           (and (= direction :vertical)
                                (= (get cell :type) :vertical-wall)
                                (contains? location y))
                             [x y (assoc cell :type :vertical-wall-alt)]
                           :else
                           [x y cell])
                         [x y cell]))
                      cellsxy)
        cellsxy (add-room-features cellsxy)]
   cellsxy))

(defn points-to-fully-connected-graph
  [points]
