Ruth in the Ocean

My code is a madlibs combined with a simulation. The first part is the backstory of how Ruth got stuck in the ocean and it is a mad libs. The second part is the simulation which has some madlibs in it. This shows Ruth's series of events after getting stuck in the ocean, based on rolling the dice and using her stats.

(defrecord MadlibWords [noun thing verb noun2 verb2 adjective room verb3 thing2 verb4 noun3 nation vehicle verb5 verb6 verb7 verb8 verb9 adjective2 verb10 adjective3 
                        adverb verb11 verb12 verb13])

(defn madlib [words]
  ;; [noun thing verb noun2 verb2 adjective room verb3 thing2 verb4 noun3 nation vehicle verb5]
  (js/alert (str "Ruth Egg and Tom Bacon met in an " (get words :noun) " museum and fell in love at first sight. They get to know each other over the next few days, falling deeper in love but one day Tom learns that Ruth was at the " (get words :noun) " museum to steal a " (get words :thing) " painting. So instead of turning Ruth in, Tom decides to help her " (get words :verb) " the " (get words :thing) " painting. Ruth and Tom plan out the " (get words :noun2) ". First, Tom would " (get words :verb2) " the security cameras so they " (get words :adjective) " on loop. Then Ruth would go into the " (get words :room) " to " (get words :verb3) " the security system. Finally they steal the " (get words :thing) " painting and replace it with a " (get words :thing2) ", run away together with the money they get for " (get words :verb4) " the " (get words :thing) " on the black market. The " (get words :noun2) " goes off with no " (get words :noun3) ", so Ruth and Tom run away together to " (get words :nation) " on a " (get words :vehicle) ". Until the " (get words :vehicle) " " (get words :verb5) " in the middle of the ocean. Tom dies.")))

(defn d20 []
  (let [die (+ (rand-int 20) 1)]
    (if (= die 1)
      (println "nat 1"))
    (if (= die 20)
      (println "nat 20"))
    (if (< 1 die 20)
      (println "normal roll" die))
    die))

(defrecord Person [STR DEX CON INT WIS CHA])
(defn str-check? [person dc]
  (>= (+ (rand-int 20) 1 (:STR person))
      dc))

(defn dex-check? [person dc]
  (>= (+ (rand-int 20) 1 (:DEX person))
      dc))

(defn con-check? [person dc]
  (>= (+ (rand-int 20) 1 (:CON person))
      dc))

(defn int-check? [person dc]
  (>= (+ (rand-int 20) 1 (:INT person))
      dc))

(defn wis-check? [person dc]
  (>= (+ (rand-int 20) 1 (:WIS person))
      dc))

(defn cha-check? [person dc]
  (>= (+ (rand-int 20) 1 (:CHA person))
      dc))

(defn ship [person words]
  (if (int-check? person 8)
    (str " The workers on the ship suspect her for the robbery, so Ruth comes up with a plan to get away and it works. She is free with al the money she got from the stolen painting."
         (str " The workers on the ship suspect her for the robbery and she comes up witha plan to get away but it fails and she is taken to jail, where she is sentenced to prison for 10 years."))))

(defn safe [person words]
  (if (cha-check? person 13)
    (str " After escaping the creature, a ship comes along and Ruth " (get words :verb14) " the ship to take her aboard." 
         (ship person words))
    (str " After escaping the creature, a ship comes along but goes right past Ruth and she is stranded in ocean until she dies.")))

(defn stableground [person words]
  (if (wis-check? person 17)
    (str " Ruth stands and the metal slab and sees a large moving form in the water, she decides to " (get words :verb11) " down on the metal slab and not move. This works and the creature goes away."
         (safe person words))
    (str " Ruth stands and the metal slab and sees a large moving form in the water, she decides to " (get words :verb12) " and the creature " (get words :verb13) " out of the water, " (get words :verb10) " Ruth.")))


(defn escape [person words]
  (if (dex-check? person 9)
    (str " Once out of the " (get words :vehicle) ", Ruth " (get words :adverb) " gets around the wreckage to a slab of metal in the water."
         (stableground person words))
    (str " Once out of the " (get words :vehicle) ", Ruth falls into the water trying to get to a slab of metal, she drowns and dies.")))

(defn drowning [person words]
  (if (con-check? person 10)
    (str " Ruth " (get words :verb6) " by " (get words :verb9) " the door down, and out of the " (get words :adjective2) "." 
         (escape person words))
    (str " Ruth fails to "  (get words :verb6) " the " (get words :vehicle) " and is " (get words :verb10) " by the " (get words :adjective3) " water.")))

(defn oceancrash [person words]
  (if (str-check? person 10)
    (str
     "Ruth " (get words :verb6) " out of the " (get words :vehicle) "."
     (escape person words))

    (str
     "Ruth is trapped in the " (get words :vehicle) " and it is " (get words :verb7) " with water, " (get words :verb8) " her."
     (drowning person words))))

(defn run []
  (let [Ruth (->Person -3 +2 +1 -2 -1 +2)
        words (->MadlibWords "rainbow"
                             "cloud"
                             "sleep"
                             "floor"
                             "eat"
                             "swanky"
                             "dungeon"
                             "draft"
                             "refrigerator"
                             "shout"
                             "entertainment"
                             "Turkmenistan"
                             "Intercontinental ballistic missile"
                             "wrote"
                             "afford"
                             "walked"
                             "asking"
                             "smell"
                             "colossal"
                             "envisage"
                             "feigned"
                             "enormously"
                             "discharge"
                             "prompt"
                             "bang")]
    (madlib words)
    (js/alert (oceancrash Ruth words))))