diff --git a/desktop/resources/ego/frog.png b/desktop/resources/ego/frog.png new file mode 100644 index 00000000..9f2dfa0f Binary files /dev/null and b/desktop/resources/ego/frog.png differ diff --git a/desktop/resources/ego/frog.pxa/0.pxi b/desktop/resources/ego/frog.pxa/0.pxi new file mode 100644 index 00000000..6dff6e09 Binary files /dev/null and b/desktop/resources/ego/frog.pxa/0.pxi differ diff --git a/desktop/resources/ego/frog.pxa/1.pxi b/desktop/resources/ego/frog.pxa/1.pxi new file mode 100644 index 00000000..316098e2 Binary files /dev/null and b/desktop/resources/ego/frog.pxa/1.pxi differ diff --git a/desktop/resources/ego/frog.pxa/CelData.plist b/desktop/resources/ego/frog.pxa/CelData.plist new file mode 100644 index 00000000..29c78f8b --- /dev/null +++ b/desktop/resources/ego/frog.pxa/CelData.plist @@ -0,0 +1,14 @@ + + + + + + duration + 1 + + + duration + 1 + + + diff --git a/desktop/resources/inside-house/magic-frog b/desktop/resources/inside-house/magic-frog new file mode 100644 index 00000000..cd1e0898 --- /dev/null +++ b/desktop/resources/inside-house/magic-frog @@ -0,0 +1,278 @@ +Untitled +- Delay - +active: false +- Duration - +lowMin: 1000.0 +lowMax: 1000.0 +- Count - +min: 0 +max: 500 +- Emission - +lowMin: 0.0 +lowMax: 0.0 +highMin: 200.0 +highMax: 200.0 +relative: false +scalingCount: 2 +scaling0: 1.0 +scaling1: 0.0 +timelineCount: 2 +timeline0: 0.0 +timeline1: 0.6164383 +- Life - +lowMin: 0.0 +lowMax: 0.0 +highMin: 500.0 +highMax: 1000.0 +relative: false +scalingCount: 3 +scaling0: 1.0 +scaling1: 1.0 +scaling2: 0.3 +timelineCount: 3 +timeline0: 0.0 +timeline1: 0.66 +timeline2: 1.0 +- Life Offset - +active: false +- X Offset - +active: false +- Y Offset - +active: false +- Spawn Shape - +shape: line +- Spawn Width - +lowMin: 0.0 +lowMax: 0.0 +highMin: 20.0 +highMax: 20.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Spawn Height - +lowMin: 0.0 +lowMax: 0.0 +highMin: 0.0 +highMax: 0.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Scale - +lowMin: 0.0 +lowMax: 0.0 +highMin: 3.0 +highMax: 5.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Velocity - +active: true +lowMin: 0.0 +lowMax: 0.0 +highMin: 30.0 +highMax: 300.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Angle - +active: true +lowMin: 90.0 +lowMax: 90.0 +highMin: 80.0 +highMax: 100.0 +relative: false +scalingCount: 3 +scaling0: 1.0 +scaling1: 0.0 +scaling2: 0.0 +timelineCount: 3 +timeline0: 0.0 +timeline1: 0.5 +timeline2: 1.0 +- Rotation - +active: false +- Wind - +active: false +- Gravity - +active: false +- Tint - +colorsCount: 3 +colors0: 0.6392157 +colors1: 0.76862746 +colors2: 0.03529412 +timelineCount: 1 +timeline0: 0.0 +- Transparency - +lowMin: 0.0 +lowMax: 0.0 +highMin: 1.0 +highMax: 1.0 +relative: false +scalingCount: 4 +scaling0: 0.0 +scaling1: 1.0 +scaling2: 0.75 +scaling3: 0.0 +timelineCount: 4 +timeline0: 0.0 +timeline1: 0.2 +timeline2: 0.8 +timeline3: 1.0 +- Options - +attached: false +continuous: false +aligned: false +additive: true +behind: false +premultipliedAlpha: false +- Image Path - +dot.png + + +Untitled +- Delay - +active: false +- Duration - +lowMin: 1000.0 +lowMax: 1000.0 +- Count - +min: 0 +max: 500 +- Emission - +lowMin: 0.0 +lowMax: 0.0 +highMin: 200.0 +highMax: 200.0 +relative: false +scalingCount: 2 +scaling0: 1.0 +scaling1: 0.0 +timelineCount: 2 +timeline0: 0.0 +timeline1: 0.6164383 +- Life - +lowMin: 0.0 +lowMax: 0.0 +highMin: 500.0 +highMax: 1000.0 +relative: false +scalingCount: 3 +scaling0: 1.0 +scaling1: 1.0 +scaling2: 0.3 +timelineCount: 3 +timeline0: 0.0 +timeline1: 0.66 +timeline2: 1.0 +- Life Offset - +active: false +- X Offset - +active: false +- Y Offset - +active: false +- Spawn Shape - +shape: line +- Spawn Width - +lowMin: 0.0 +lowMax: 0.0 +highMin: 20.0 +highMax: 20.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Spawn Height - +lowMin: 0.0 +lowMax: 0.0 +highMin: 0.0 +highMax: 0.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Scale - +lowMin: 0.0 +lowMax: 0.0 +highMin: 1.0 +highMax: 5.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Velocity - +active: true +lowMin: 0.0 +lowMax: 0.0 +highMin: 30.0 +highMax: 300.0 +relative: false +scalingCount: 1 +scaling0: 1.0 +timelineCount: 1 +timeline0: 0.0 +- Angle - +active: true +lowMin: 90.0 +lowMax: 90.0 +highMin: 60.0 +highMax: 120.0 +relative: false +scalingCount: 4 +scaling0: 1.0 +scaling1: 1.0 +scaling2: 1.0 +scaling3: 1.0 +timelineCount: 4 +timeline0: 0.0 +timeline1: 0.4178082 +timeline2: 0.5753425 +timeline3: 0.96575344 +- Rotation - +active: false +- Wind - +active: false +- Gravity - +active: false +- Tint - +colorsCount: 3 +colors0: 0.03529412 +colors1: 0.76862746 +colors2: 0.5882353 +timelineCount: 1 +timeline0: 0.0 +- Transparency - +lowMin: 0.0 +lowMax: 0.0 +highMin: 1.0 +highMax: 1.0 +relative: false +scalingCount: 4 +scaling0: 0.0 +scaling1: 1.0 +scaling2: 0.75 +scaling3: 0.0 +timelineCount: 4 +timeline0: 0.0 +timeline1: 0.2 +timeline2: 0.8 +timeline3: 1.0 +- Options - +attached: false +continuous: false +aligned: false +additive: true +behind: false +premultipliedAlpha: false +- Image Path - +dot.png diff --git a/desktop/resources/wizard/magic-hands.png b/desktop/resources/wizard/magic-hands.png new file mode 100644 index 00000000..c2cac198 Binary files /dev/null and b/desktop/resources/wizard/magic-hands.png differ diff --git a/desktop/resources/wizard/magic-hands.pxa/0.pxi b/desktop/resources/wizard/magic-hands.pxa/0.pxi new file mode 100644 index 00000000..bd729bce Binary files /dev/null and b/desktop/resources/wizard/magic-hands.pxa/0.pxi differ diff --git a/desktop/resources/wizard/magic-hands.pxa/1.pxi b/desktop/resources/wizard/magic-hands.pxa/1.pxi new file mode 100644 index 00000000..26e858ee Binary files /dev/null and b/desktop/resources/wizard/magic-hands.pxa/1.pxi differ diff --git a/desktop/resources/wizard/magic-hands.pxa/CelData.plist b/desktop/resources/wizard/magic-hands.pxa/CelData.plist new file mode 100644 index 00000000..490cc590 --- /dev/null +++ b/desktop/resources/wizard/magic-hands.pxa/CelData.plist @@ -0,0 +1,14 @@ + + + + + + duration + 0.20000000298023224 + + + duration + 0.20000000298023224 + + + diff --git a/desktop/src-common/advent/screens/rooms/common.clj b/desktop/src-common/advent/screens/rooms/common.clj index 93b249da..71f7839d 100644 --- a/desktop/src-common/advent/screens/rooms/common.clj +++ b/desktop/src-common/advent/screens/rooms/common.clj @@ -25,6 +25,7 @@ wizard-stand (animation 0.2 (for [i (flatten [(repeat 10 0) 1])] (aget wizard-sheet 0 i))) wizard-talk-angry (utils/make-anim "wizard/talk-angry.png" [20 50] 0.2 [0 2 0 2 1 2 0 3 0 2 0 1 0 2]) + wizard-magic-hands (utils/make-anim "wizard/magic-hands.png" [20 50] 0.2 (range 2)) wizard-disappear (utils/make-anim "wizard/disappear.png" [20 46] 0.075 (range 19)) wizard-talk (animation 0.2 (for [i [0 2 0 2 1 2 0 3 0 2 0 1 0 2]] (aget wizard-sheet 0 i)))] @@ -33,12 +34,14 @@ :stand (utils/flip wizard-stand) :disappear (utils/flip wizard-disappear) + :magic-hands (utils/flip wizard-magic-hands) :talk-angry (utils/flip wizard-talk-angry) } :right {:talk wizard-talk :stand wizard-stand :disappear wizard-disappear - :talk-angry (utils/flip wizard-talk-angry) + :talk-angry wizard-talk-angry + :magic-hands wizard-magic-hands } :night-profile :sprite :origin-x 0 diff --git a/desktop/src-common/advent/screens/rooms/inside_house.clj b/desktop/src-common/advent/screens/rooms/inside_house.clj index 0e30fb2c..de44a86f 100644 --- a/desktop/src-common/advent/screens/rooms/inside_house.clj +++ b/desktop/src-common/advent/screens/rooms/inside_house.clj @@ -181,6 +181,9 @@ :candle-smoke (doto (assoc (particle-effect "inside-house/candle") :x 172 :y 112 :baseline 200) (particle-effect! :set-position 172 112)) + :magic-frog-particle (doto (assoc (particle-effect "inside-house/magic-frog") :x 230 :y 0 + :baseline 241) + (particle-effect! :set-position 237 0)) :flask (assoc (texture "inside-house/flask.png") :x 265 :y 80 :baseline 240 :script (actions/get-script entities diff --git a/desktop/src-common/advent/screens/rooms/outside_house.clj b/desktop/src-common/advent/screens/rooms/outside_house.clj index 014ef709..ec564e91 100644 --- a/desktop/src-common/advent/screens/rooms/outside_house.clj +++ b/desktop/src-common/advent/screens/rooms/outside_house.clj @@ -147,7 +147,24 @@ (actions/talk entities :ego "I don't want to put something in there unless I'm sure I need to.")))) (defn wizard-dialogue [entities] - (actions/do-dialogue entities :ego "Hello there Gandarf!" :wizard "Oh no, not you again!") + (if (get-in @entities [:state :has-met-gandarf?]) + (do (actions/do-dialogue entities :ego "Hello again Gandarf!" + :wizard "Not you again!") + (actions/talk entities :wizard "I command you, leave at once!" :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Don't make me use my powers against you!" :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Leave now, or else!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands)) + (do (actions/do-dialogue entities :ego "Hello there Gandarf!" + :wizard "Oh no, not you!" + :ego "What do you mean, 'not you!'?" + :wizard "I mean, you've wrecked my life!" + :wizard "I never want to see the likes of you again!" + :wizard "Leave!" + :ego "But...") + (actions/talk entities :wizard "I command you, by all the power I can muster..." :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Leave now, or else!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands))) + (actions/update-state entities (fn [s] (assoc s :has-met-gandarf? true))) (actions/present-choices entities {:choices ["What do you mean, \"Not you again?\"" {:run #(actions/respond entities % :wizard "I mean, you've wrecked my life and I never want to see you again.") @@ -236,9 +253,41 @@ "You're not happy to see me, Gandarf?" {:run #(actions/respond entities % :wizard "Of course not, you little brat. You've made my life a living hell!") :choices #(-> % zip/left)} - "Goodbye, Gandarf!" + "Or else what?" + {:run #(do (actions/talk entities :ego %) + (actions/talk entities :wizard "Or else I'll turn you into a frog!" :anim :talk-angry :stop? false) + (actions/begin-animation entities :wizard :magic-hands)) + :choices ["You don't scare me." + {:run + #(do + (actions/talk entities :ego %) + (actions/talk entities :wizard "You asked for it, boy." :anim :talk-angry :stop? false) + (actions/talk entities :wizard "Grenouille KALA!!!" :anim :talk-angry :stop? false) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start) + (actions/begin-animation entities :ego :frog) + (Thread/sleep 2000) + (actions/begin-animation entities :wizard :stand) + (Thread/sleep 1000) + (actions/do-dialogue entities + :wizard "I warned you, Tick." + :wizard "Now, I will return you to your true state if you leave me in peace." + :wizard "Do you promise?") + (actions/play-animation entities :ego :frog-nod :stop? false) + (actions/talk entities :wizard "Frustatium DISPOSIUM!!!" :anim :talk-angry :stop? false) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :reset) + (particle-effect! (get-in @entities [:room :entities :magic-frog-particle]) :start) + (Thread/sleep 1500) + (actions/transition-background entities :outside-house [257 90] :face :left))} + "Okay, okay, I'm leaving." + {:run + #(do + (actions/talk entities :ego %) + (actions/transition-background entities :outside-house [257 90] :face :left))}]} + "Okay, okay, I'm leaving." {:run #(do - (actions/respond entities % :wizard "Now scram!") + (actions/talk entities :ego %) + (actions/talk entities :wizard "Okay, okay, I'm leaving." :anim :talk-angry) (actions/transition-background entities :outside-house [257 90] :face :left))}]})) @@ -342,7 +391,7 @@ :interactions {:door {:box [250 100 281 160] :script - (actions/get-unsaved-script + (actions/get-script entities (actions/walk-to entities :ego [257 90] :face :right) (actions/talk entities :ego (str "Anyone home?")) diff --git a/desktop/src-common/advent/screens/scene.clj b/desktop/src-common/advent/screens/scene.clj index 38bcbc3a..b19c5f6e 100644 --- a/desktop/src-common/advent/screens/scene.clj +++ b/desktop/src-common/advent/screens/scene.clj @@ -339,6 +339,8 @@ void main() (texture (aget fire-sheet 0 i)))) 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)))) + frog (utils/make-anim "ego/frog.png" [16 36] 0.1 [0]) + frog-nod (utils/make-anim "ego/frog.png" [16 36] 0.2 [0 1 0 1 0 1 0 1]) 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]) jump (utils/make-anim "ego/swing.png" [36 75] 0.2 (flatten [[1 2]])) swing (utils/make-anim "ego/swing.png" [36 75] 0.145 (flatten [[3 4 5 6 7 ]])) @@ -403,6 +405,8 @@ void main() :burnt burnt :passed-out passed-out :scared scared + :frog frog + :frog-nod frog-nod :scared-talk scared-talk :scared-walk scared-walk :sigh sigh @@ -452,6 +456,8 @@ void main() :milk (utils/flip milk) :throw (utils/flip throw) :swing-shovel (utils/flip swing-shovel) + :frog (utils/flip frog) + :frog-nod (utils/flip frog-nod) :love (utils/flip love) :idea (utils/flip idea) :axe (utils/flip axe)