                            ;;((partial bouncing bounce))
                            ((partial on-blue-trampete? blue-trampete))
                            ((partial on-red-trampete? red-trampete))
-                           on-ground?
                            grav
-                           ;;spike-damage
-                           ;;((partial time-up? original-hero app))
-                           ;;((partial home? original-hero))
+                           ((partial on-ground? original-hero))
+                           spike-damage
+                           ((partial time-up? original-hero app))
+                           ((partial home? original-hero))
                            ((partial blocked? original-hero))
-                           ;;((partial game-over? original-hero))
+                           ((partial game-over? original-hero))
                            )]
           (om/transact! app [:hero] (fn [hero] (merge hero new-hero)))
           )

  )

(defn home? [original-hero hero]
  (if (on-block? (get-in original-hero [:position]) 5)
    (merge original-hero {:game-won true})
    hero
    )

    hero
    ))

(defn nearest-vertical-border [bottom]
  (* (round (/ bottom 70)) 70)
  )

(defn on-ground? [original-hero hero]
  (if (on-block? (get-in hero [:position]) 1)
    (update-in hero [:dy] + 0.75)
    (if (> 0 (get-in hero [:dy]))
      (if (in-block? (get-in hero [:position]) 1)
        (let [new-hero (update-in hero [:dy] + 0.75)]
          (update-in new-hero [:position :bottom] (fn [_] (nearest-vertical-border (get-in original-hero [:position :bottom]))))
          )
        hero
        )
      hero
      )
    ))

(defn spike-damage [hero]
