final blergh encounter.
This commit is contained in:
@@ -11,19 +11,44 @@
|
||||
[play-clj.utils :refer :all]
|
||||
[play-clj.g2d :refer :all]))
|
||||
|
||||
(defn taunt [screen entities]
|
||||
(when (and (not (get-in entities [:actions :script-running?]))
|
||||
(get-in entities [:state :active?]))
|
||||
((actions/get-script entities (actions/do-dialogue entities :blergh (rand-nth ["Come on, little man! Try and hit me!"
|
||||
"What's the matter? Cold feet?"
|
||||
"Come here and fight me like man!"
|
||||
"Your precious Georgia McGorgeous would be laughing if she saw you now."
|
||||
"Pick up your weapon and fight!"]))) entities))
|
||||
nil)
|
||||
|
||||
(defn make [screen]
|
||||
(let [blergh-stand (texture "space/blergh-stand.png")
|
||||
blergh-talk (texture "space/blergh-talk.png")
|
||||
blergh-flex (texture "space/blergh-flex.png")
|
||||
blergh-talk-anim (animation 0.3 [blergh-talk blergh-stand])
|
||||
blergh-stand-anim (animation 0.7 [blergh-flex blergh-stand])
|
||||
]
|
||||
blergh-swing (utils/make-anim "space/blergh-swing.png" [106 165] 0.1 [0 0 1 2 3 4 ])]
|
||||
(rooms/make :music :town-1
|
||||
:interactions
|
||||
{}
|
||||
:layers [(assoc (texture "space/background.png") :x 0 :y 0 :baseline 0)]
|
||||
:timers {:taunt [10.0 8.0 taunt]}
|
||||
|
||||
:entities {:blergh (assoc (animation->texture screen blergh-stand-anim) :x 180 :y 50 :baseline 190 :anim blergh-stand-anim :anim-start 0 :stand blergh-stand-anim :talk blergh-talk-anim)}
|
||||
:entities {:blergh (assoc (animation->texture screen blergh-stand-anim)
|
||||
:x 180 :y 50 :baseline 190
|
||||
:anim blergh-stand-anim :anim-start 0
|
||||
:stand blergh-stand-anim :talk blergh-talk-anim
|
||||
:swing blergh-swing
|
||||
:script (actions/get-script entities (actions/do-dialogue entities :blergh "Come on! Try and hit me!"))
|
||||
:scripts {:sword (actions/get-script entities
|
||||
(actions/walk-straight-to entities :ego [205 45])
|
||||
(actions/play-animation entities :ego :swing)
|
||||
(actions/do-dialogue entities :blergh "Ha ha ha! Is that the best you can do?"
|
||||
:blergh "Take this!")
|
||||
(actions/play-animation entities :blergh :swing)
|
||||
(actions/walk-straight-to entities :ego [100 45] :anim :squat :override-dir :right :speed 3.0)
|
||||
(actions/do-dialogue entities :ego "Ouch!"
|
||||
:blergh "Why don't you try that again?"))})}
|
||||
:collision "space/collision.png"
|
||||
:scale-fn (constantly 1.5)
|
||||
:start-pos [43 80])))
|
||||
|
||||
@@ -85,6 +85,23 @@
|
||||
((:get-script default-interaction) (get-in entities [:cursor :current]) [x y])) entities))
|
||||
entities))))
|
||||
|
||||
(defn drink-blergh [entities]
|
||||
(actions/walk-straight-to entities :ego [205 45])
|
||||
(sound! (sound "ego/potion.ogg") :play)
|
||||
(actions/play-animation entities :ego :grow :stop? false)
|
||||
(actions/do-dialogue entities
|
||||
:blergh "What this? A potion of strength?"
|
||||
:blergh "You're still no match for me."
|
||||
:blergh "Give it to me, or I'll make you regret it!")
|
||||
(actions/present-choices entities {:choices ["Ok."
|
||||
{:run #(do (actions/respond entities % :ego "Here you go."))}
|
||||
"No way!"
|
||||
{:run #(do (actions/respond entities % :blergh "Then take this!")
|
||||
(actions/play-animation entities :blergh :swing)
|
||||
(actions/walk-straight-to entities :ego [100 45] :anim :squat :override-dir :right :speed 3.0)
|
||||
(actions/do-dialogue entities :ego "Yeow!!"
|
||||
:ego "Even with that potion, I'm not strong enough."))}]}))
|
||||
|
||||
|
||||
(defn get-ego [screen start-pos start-scale]
|
||||
(let [player-sheet (texture! (texture "player.png") :split 18 36)
|
||||
@@ -124,6 +141,7 @@
|
||||
grow (animation 0.1 (for [i [0 1 1 1 1 1 1 1 1 1 1 0 0 0 0 3 0 0 0 0 3 0 0 0 3 3 0 0 0 2 2 0 0 2 0 0 2 0 2 0 2 0 2 0 2 0 2 3 2 3 2 3 2 3 2 4 3 4 3 4 3 4]]
|
||||
(texture (aget grow-sheet 0 i))))
|
||||
hold-up-to-window (utils/make-anim "ego/hold-up-to-window.png" [18 36] 0.1 [0 1 2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 2 1 0 0 0 0 0 0])
|
||||
swing (utils/make-anim "ego/swing.png" [36 36] 0.05 (flatten [[0 0 0 1 2 3 3 3 3 ]]))
|
||||
get-sick (animation 0.3 (map (partial get [(aget talk-sheet 0 0 ) (texture "ego/get-sick.png")]) [0 1 1 1 1 1 1 1 1 1 1 1]) )
|
||||
ego {:right {:walk walk-right
|
||||
:stand stand-anim
|
||||
@@ -138,6 +156,7 @@
|
||||
:grow grow
|
||||
:get-sick get-sick
|
||||
:hold-up-to-window hold-up-to-window
|
||||
:swing swing
|
||||
[:fire 1] fire-1-anim
|
||||
[:fire 2] fire-2-anim
|
||||
[:fire 3] fire-3-anim}
|
||||
@@ -179,9 +198,12 @@
|
||||
(condp = (:value cursor)
|
||||
:flask-1-with-cream-of-mushroom (actions/get-script entities (actions/talk entities :ego "Blegh! Gross!"))
|
||||
:flask-1-strength (actions/get-script entities
|
||||
(actions/talk entities :ego "I'll just take a sip!")
|
||||
(sound! (sound "ego/potion.ogg") :play)
|
||||
(actions/play-animation entities :ego :grow :stop? false))
|
||||
(if (get-in @entities [:room :entities :blergh])
|
||||
(drink-blergh entities)
|
||||
(do
|
||||
(actions/talk entities :ego "I'll just take a sip!")
|
||||
(sound! (sound "ego/potion.ogg") :play)
|
||||
(actions/play-animation entities :ego :grow :stop? false))))
|
||||
:recipe (actions/get-script entities (actions/do-dialogue entities
|
||||
:ego "The recipe says:"
|
||||
:ego "'For strength beyond measure,\nyou must mix, at your leisure:'"
|
||||
@@ -250,6 +272,10 @@
|
||||
:clues #{}
|
||||
:mints-eaten 0}))
|
||||
(defscreen scene
|
||||
:on-timer
|
||||
(fn [screen [entities]]
|
||||
((get-in entities [:room :timers (:id screen) 2]) screen entities))
|
||||
|
||||
:on-show
|
||||
(fn [screen entities]
|
||||
(let [screen (assoc screen :total-time 0)]
|
||||
@@ -290,7 +316,9 @@
|
||||
:fps (assoc (label "0" (color :white) ) :x 5 :baseline 0)}]
|
||||
|
||||
(play-sound (get-in entities [:musics (get-in entities [:room :music])]))
|
||||
|
||||
|
||||
(doseq [[k [start time fn]] (get-in entities [:room :timers])]
|
||||
(add-timer! screen k start time))
|
||||
(if-let [apply-state (get-in entities [:room :apply-state])]
|
||||
(apply-state entities)
|
||||
entities))))
|
||||
|
||||
Reference in New Issue
Block a user