# HG changeset patch # User Robert McIntyre # Date 1333426429 18000 # Node ID 9a4d3f801c89a3ea8d515f35c29df8168598cbc9 # Parent 3c5bf2221ea02c3706088aa8bd28e5925c63eb4e fixing runs to use new util functions. diff -r 3c5bf2221ea0 -r 9a4d3f801c89 clojure/com/aurellem/gb/saves.clj --- a/clojure/com/aurellem/gb/saves.clj Mon Apr 02 21:25:24 2012 -0500 +++ b/clojure/com/aurellem/gb/saves.clj Mon Apr 02 23:13:49 2012 -0500 @@ -18,4 +18,8 @@ (read-state "normal-conversation")) (defn oak-battle [] - (read-state "oak-battle")) \ No newline at end of file + (read-state "oak-battle")) + +(defn crit-fight [] + (read-state "battle-rival")) + \ No newline at end of file diff -r 3c5bf2221ea0 -r 9a4d3f801c89 clojure/com/aurellem/run/save_corruption.clj --- a/clojure/com/aurellem/run/save_corruption.clj Mon Apr 02 21:25:24 2012 -0500 +++ b/clojure/com/aurellem/run/save_corruption.clj Mon Apr 02 23:13:49 2012 -0500 @@ -1,54 +1,33 @@ (ns com.aurellem.run.save-corruption (:use (com.aurellem.gb gb-driver vbm)) - (:use (com.aurellem.run title))) + (:use (com.aurellem.run util title))) -(defn-memo start-walking - ([script] - (->> script - (advance [:b] [:b :r]))) - ([] (start-walking (finish-title)))) - (defn-memo walk-to-stairs - ([] (walk-to-stairs (start-walking))) + ([] (walk-to-stairs (finish-title))) ([script] (->> script - (move [:u]) - (move [:u]) - (move [:u]) - (move [:u]) - (move [:u]) - (move [:r]) - (move [:r]) - (move [:r])))) + (walk [→ ↑ ↑ ↑ ↑ ↑ → → →])))) (defn-memo walk-to-door ([] (walk-to-door (walk-to-stairs))) ([script] (->> script - (move [:d]) - (move [:d]) - (move [:d]) - (move [:d]) - (move [:d]) - (move [:d]) - (move [:l]) - (move [:l]) - (move [:l]) - (move [:l])))) + (walk [↓ ↓ ↓ ↓ ↓ ← ← ← ←])))) (defn-memo activate-menu ([] (activate-menu (walk-to-door))) ([script] (->> script - (advance [:b] [:a :b :start])))) + (first-difference [:b] [:a :b :start] AF)))) (defn-memo save-game ([] (save-game (activate-menu))) ([script] (->> script - (advance [] [:d]) + (first-difference [] [:d] AF) (play-moves [[] [] [] [:d] [] [] [] [:d] [] [] [:a]]) - scroll-text))) + (do-nothing 200) + (play-moves [[:a]])))) (defn-memo corrupt-save ([] (corrupt-save (save-game))) @@ -67,9 +46,9 @@ ([script] (->> script (title) - (advance [] [:start]) - (advance [] [:a]) - (advance [:a] [:a :start])))) + (first-difference [] [:start] AF) + (first-difference [] [:a] AF) + (first-difference [:a] [:a :start] AF)))) (defn-memo destroy-item-end-of-list-marker ([] (destroy-item-end-of-list-marker (start-game))) diff -r 3c5bf2221ea0 -r 9a4d3f801c89 clojure/com/aurellem/run/title.clj --- a/clojure/com/aurellem/run/title.clj Mon Apr 02 21:25:24 2012 -0500 +++ b/clojure/com/aurellem/run/title.clj Mon Apr 02 23:13:49 2012 -0500 @@ -1,6 +1,6 @@ (ns com.aurellem.run.title - (:use (com.aurellem.gb gb-driver vbm))) - + (:use (com.aurellem.gb gb-driver vbm)) + (:use (com.aurellem.run util))) (defn start [] [[] (root)]) @@ -8,10 +8,10 @@ ([] (title (start))) ([script] (->> script - (advance [] [:a]) - (advance [] [:start]) - (advance [] [:a]) - (advance [] [:start])))) + (first-difference [] [:a] AF) + (first-difference [] [:start] AF) + (first-difference [] [:a] AF) + (first-difference [] [:start] AF)))) (defn-memo oak ([] (oak (title))) @@ -23,8 +23,8 @@ ([] (name-entry-rlm (oak))) ([script] (->> script - (advance [] [:a]) - (advance [] [:r] DE) + (first-difference [] [:a] AF) + (first-difference [] [:r] DE) (play-moves [[] [:r] [] [:r] [] [:r] [] [:r] [] @@ -38,26 +38,26 @@ ([] (name-entry-ash (oak))) ([script] (->> script - (advance [] [:d]) - (advance [] [:d]) - (advance [] [:a])))) + (first-difference [] [:d] AF) + (first-difference [] [:d] AF) + (first-difference [] [:a] AF)))) (defn-memo rival-name-entry-gary ([] (rival-name-entry-gary (name-entry-ash))) ([script] (->> script (scroll-text 5) - (advance [] [:d]) - (advance [] [:d]) - (advance [] [:a])))) + (first-difference [] [:d] AF) + (first-difference [] [:d] AF) + (first-difference [] [:a] AF)))) (defn-memo rival-name-entry-blue ([] (rival-name-entry-blue (name-entry-ash))) ([script] (->> script (scroll-text 5) - (advance [] [:d]) - (advance [] [:a])))) + (first-difference [] [:d] AF) + (first-difference [] [:a] AF)))) (defn-memo finish-title ([] (finish-title (rival-name-entry-blue))) diff -r 3c5bf2221ea0 -r 9a4d3f801c89 clojure/com/aurellem/run/util.clj --- a/clojure/com/aurellem/run/util.clj Mon Apr 02 21:25:24 2012 -0500 +++ b/clojure/com/aurellem/run/util.clj Mon Apr 02 23:13:49 2012 -0500 @@ -7,6 +7,8 @@ (def ← [:l]) (def → [:r]) +[↑ ↓ ← →] + (defn first-difference [base alt difference-metric [moves root :as script]] (loop [branch-point root @@ -145,6 +147,25 @@ (play-moves (repeat n [])))) +(defn delayed-improbability-search + "insert blank frames before calling script-fn until + metric returns true." + [delay metric script-fn script] + (loop [blanks 0] + (let [new-script + (->> script + (play-moves + (concat (repeat blanks []))) + script-fn) + future-state + (run-moves (second new-script) + (repeat delay [])) + result (metric future-state)] + (if result + (do + (println "improbability factor:" blanks) + new-script) + (recur (inc blanks)))))) (defn critical-hit "Put the cursor over the desired attack. This program will @@ -152,46 +173,19 @@ insert before pressing [:a] to ensure that the attack is a critical hit." [script] - (loop [blanks 6] - (let [new-script - (->> script - (play-moves - (concat (repeat blanks []) - [[:a][]])))] - (if (let [future-state - (run-moves (second new-script) - (repeat 400 [])) - - result (search-string (memory future-state) - "Critical")] - (if result - (println "critical hit with" blanks "blank frames")) - result) - new-script - (recur (inc blanks)))))) + (delayed-improbability-search + 400 + #(search-string % "Critical") + (partial play-moves [[:a][]]) + script)) (defn move-thru-grass [direction script] - (loop [blanks 0] - (let [new-script - (->> script - (play-moves (repeat blanks [])) - (move direction)) - - future-state - (run-moves (second new-script) - (repeat 600 [])) - - result (search-string (memory future-state) - "Wild")] - (if (nil? result) - (do - (if (< 0 blanks) - (do - (println "avoided pokemon with" - blanks "blank frames"))) - new-script) - (recur (inc blanks)))))) + (delayed-improbability-search + 600 + #(nil? (search-string % "Wild")) + (partial move direction) + script)) (defn walk-thru-grass [directions script] diff -r 3c5bf2221ea0 -r 9a4d3f801c89 save-states/battle-rival.sav Binary file save-states/battle-rival.sav has changed diff -r 3c5bf2221ea0 -r 9a4d3f801c89 save-states/grass' edge.sav Binary file save-states/grass' edge.sav has changed