;;-*-Lisp-*- (in-package goal) ;; name: sunken-pipegame.gc ;; name in dgo: sunken-pipegame ;; dgos: L1, SUN, SUNKEN ;; DECOMP BEGINS (deftype sunken-pipegame-button (basebutton) () :heap-base #x90 :method-count-assert 32 :size-assert #x100 :flag-assert #x2000900100 ) (deftype sunken-pipegame-prize (structure) ((puzzle-delay time-frame :offset-assert 0) (pipe-travel-time-to-far time-frame :offset-assert 8) (pipe-travel-time-to-jar time-frame :offset-assert 16) (actor-handle handle :offset-assert 24) (jar-pos vector :inline :offset-assert 32) (far-pos vector :inline :offset-assert 48) (sucked-up-jar-part-pos vector :inline :offset-assert 64) (sucked-up-far-part-pos vector :inline :offset-assert 80) (blown-out-jar-part-pos vector :inline :offset-assert 96) (blown-out-far-part-pos vector :inline :offset-assert 112) (sucked-up-part sparticle-launch-control :offset-assert 128) (blown-out-part sparticle-launch-control :offset-assert 132) ) :method-count-assert 9 :size-assert #x88 :flag-assert #x900000088 ) (deftype sunken-pipegame (process-drawable) ((abort-audio-if-beaten? symbol :offset-assert 176) (challenges-mask uint32 :offset-assert 180) (challenge int32 :offset-assert 184) (ticker ticky :inline :offset-assert 192) (button (pointer sunken-pipegame-button) 3 :offset-assert 224) (prize sunken-pipegame-prize 3 :inline :offset-assert 240) ) :heap-base #x230 :method-count-assert 23 :size-assert #x2a0 :flag-assert #x17023002a0 (:methods (sunken-pipegame-method-20 (_type_) uint 20) (sunken-pipegame-method-21 (_type_ symbol) symbol 21) (sunken-pipegame-method-22 (_type_ symbol) none 22) ) (:states sunken-pipegame-beat-challenge sunken-pipegame-begin-play sunken-pipegame-end-play sunken-pipegame-idle sunken-pipegame-start-up ) ) (defpartgroup group-pipegame-jar-suck0 :id 448 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1741) (sp-item 1742) (sp-item 1743) (sp-item 1744 :flags (is-3d))) ) (defpart 1741 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 10.0) (sp-flt spt-y (meters 6)) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0) (sp-rnd-flt spt-r 64.0 128.0 1.0) (sp-rnd-flt spt-g 0.0 32.0 1.0) (sp-flt spt-b 0.0) (sp-flt spt-a 0.0) (sp-flt spt-scalevel-y (meters 0.006666667)) (sp-flt spt-fade-a 1.4222223) (sp-flt spt-accel-y 13.653334) (sp-int spt-timer 120) (sp-cpuinfo-flags bit2) (sp-int-plain-rnd spt-next-time 45 44 1) (sp-launcher-by-id spt-next-launcher 1745) (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-conerot-radius (meters 0) (meters -10) 1.0) ) ) (defpart 1745 :init-specs ((sp-flt spt-fade-a 0.0)) ) (defpart 1742 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 5.0) (sp-rnd-flt spt-y (meters 0) (meters 8) 1.0) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 128.0 64.0 1.0) (sp-rnd-flt spt-g 128.0 64.0 1.0) (sp-rnd-flt spt-b 128.0 64.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -3.657143) (sp-int spt-timer 30) (sp-cpuinfo-flags bit2 bit3) (sp-flt spt-conerot-x (degrees 90.0)) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-conerot-radius (meters 0) (meters 2.5) 1.0) ) ) (defpart 1743 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 4)) (sp-rnd-flt spt-scale-x (meters 7) (meters 1) 1.0) (sp-rnd-flt spt-scale-y (meters 7) (meters 3) 1.0) (sp-rnd-flt spt-r 128.0 128.0 1.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpart 1744 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.3)) (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-r 128.0 128.0 1.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpartgroup group-pipegame-jar-suck1 :id 449 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1746) (sp-item 1742) (sp-item 1747) (sp-item 1748 :flags (is-3d))) ) (defpart 1746 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 10.0) (sp-flt spt-y (meters 6)) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0) (sp-rnd-flt spt-r 0.0 64.0 1.0) (sp-rnd-flt spt-g 64.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-flt spt-a 0.0) (sp-flt spt-scalevel-y (meters 0.006666667)) (sp-flt spt-fade-a 1.4222223) (sp-flt spt-accel-y 13.653334) (sp-int spt-timer 120) (sp-cpuinfo-flags bit2) (sp-int-plain-rnd spt-next-time 45 44 1) (sp-launcher-by-id spt-next-launcher 1745) (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-conerot-radius (meters 0) (meters -10) 1.0) ) ) (defpart 1747 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 4)) (sp-rnd-flt spt-scale-x (meters 7) (meters 1) 1.0) (sp-rnd-flt spt-scale-y (meters 7) (meters 3) 1.0) (sp-rnd-flt spt-r 0.0 64.0 1.0) (sp-rnd-flt spt-g 128.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpart 1748 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.3)) (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-r 0.0 64.0 1.0) (sp-rnd-flt spt-g 128.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpartgroup group-pipegame-jar-suck2 :id 450 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1749) (sp-item 1742) (sp-item 1750) (sp-item 1751 :flags (is-3d))) ) (defpart 1749 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 10.0) (sp-flt spt-y (meters 6)) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0) (sp-flt spt-r 0.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-rnd-flt spt-b 64.0 128.0 1.0) (sp-flt spt-a 0.0) (sp-flt spt-scalevel-y (meters 0.006666667)) (sp-flt spt-fade-a 1.4222223) (sp-flt spt-accel-y 13.653334) (sp-int spt-timer 120) (sp-cpuinfo-flags bit2) (sp-int-plain-rnd spt-next-time 45 44 1) (sp-launcher-by-id spt-next-launcher 1745) (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-conerot-radius (meters 0) (meters -10) 1.0) ) ) (defpart 1750 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 4)) (sp-rnd-flt spt-scale-x (meters 7) (meters 1) 1.0) (sp-rnd-flt spt-scale-y (meters 7) (meters 3) 1.0) (sp-flt spt-r 0.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-rnd-flt spt-b 128.0 128.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpart 1751 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.3)) (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0) (sp-flt spt-r 0.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-rnd-flt spt-b 128.0 128.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpartgroup group-pipegame-blow0 :id 451 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1752) (sp-item 1753) (sp-item 1754) (sp-item 1755 :flags (is-3d))) ) (defpart 1752 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 4.0) (sp-flt spt-y (meters 0)) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0) (sp-rnd-flt spt-r 64.0 128.0 1.0) (sp-rnd-flt spt-g 0.0 32.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-vel-y (meters -0.033333335)) (sp-flt spt-scalevel-y (meters 0.006666667)) (sp-flt spt-accel-y -27.306667) (sp-int spt-timer 120) (sp-cpuinfo-flags bit2) (sp-int-plain-rnd spt-next-time 45 44 1) (sp-launcher-by-id spt-next-launcher 1756) (sp-rnd-flt spt-conerot-x (degrees 150.0) (degrees 30.0) 1.0) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-flt spt-conerot-radius (meters 0)) ) ) (defpart 1756 :init-specs ((sp-flt spt-fade-a -1.4222223)) ) (defpart 1753 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 5.0) (sp-rnd-flt spt-y (meters 0) (meters -8) 1.0) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-copy-from-other spt-scale-y -4) (sp-rnd-flt spt-r 128.0 64.0 1.0) (sp-rnd-flt spt-g 128.0 64.0 1.0) (sp-rnd-flt spt-b 128.0 64.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -3.657143) (sp-int spt-timer 30) (sp-cpuinfo-flags bit2 bit3) (sp-flt spt-conerot-x (degrees 90.0)) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-rnd-flt spt-conerot-radius (meters 0) (meters 2.5) 1.0) ) ) (defpart 1754 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters -3.5)) (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-rnd-flt spt-scale-y (meters 13) (meters 3) 1.0) (sp-rnd-flt spt-r 128.0 128.0 1.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpart 1755 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.3)) (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-r 128.0 128.0 1.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpartgroup group-pipegame-blow1 :id 452 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1757) (sp-item 1753) (sp-item 1758) (sp-item 1759 :flags (is-3d))) ) (defpart 1757 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 4.0) (sp-flt spt-y (meters 0)) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0) (sp-rnd-flt spt-r 0.0 32.0 1.0) (sp-rnd-flt spt-g 64.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-vel-y (meters -0.033333335)) (sp-flt spt-scalevel-y (meters 0.006666667)) (sp-flt spt-accel-y -27.306667) (sp-int spt-timer 120) (sp-cpuinfo-flags bit2) (sp-int-plain-rnd spt-next-time 45 44 1) (sp-launcher-by-id spt-next-launcher 1756) (sp-rnd-flt spt-conerot-x (degrees 150.0) (degrees 30.0) 1.0) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-flt spt-conerot-radius (meters 0)) ) ) (defpart 1758 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters -3.5)) (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-rnd-flt spt-scale-y (meters 13) (meters 3) 1.0) (sp-rnd-flt spt-r 0.0 64.0 1.0) (sp-rnd-flt spt-g 128.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpart 1759 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.3)) (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-r 0.0 64.0 1.0) (sp-rnd-flt spt-g 128.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpartgroup group-pipegame-blow2 :id 453 :flags (use-local-clock) :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1760) (sp-item 1753) (sp-item 1761) (sp-item 1762 :flags (is-3d))) ) (defpart 1760 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) (sp-flt spt-num 4.0) (sp-flt spt-y (meters 0)) (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0) (sp-rnd-flt spt-scale-y (meters 1) (meters 0.5) 1.0) (sp-flt spt-r 0.0) (sp-rnd-flt spt-g 0.0 32.0 1.0) (sp-rnd-flt spt-b 64.0 128.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-vel-y (meters -0.033333335)) (sp-flt spt-scalevel-y (meters 0.006666667)) (sp-flt spt-accel-y -27.306667) (sp-int spt-timer 120) (sp-cpuinfo-flags bit2) (sp-int-plain-rnd spt-next-time 45 44 1) (sp-launcher-by-id spt-next-launcher 1756) (sp-rnd-flt spt-conerot-x (degrees 150.0) (degrees 30.0) 1.0) (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) (sp-flt spt-conerot-radius (meters 0)) ) ) (defpart 1761 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters -3.5)) (sp-rnd-flt spt-scale-x (meters 3) (meters 0.5) 1.0) (sp-flt spt-rot-z (degrees 180.0)) (sp-rnd-flt spt-scale-y (meters 13) (meters 3) 1.0) (sp-flt spt-r 0.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-rnd-flt spt-b 128.0 128.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defpart 1762 :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) (sp-flt spt-num 1.0) (sp-flt spt-y (meters 0.3)) (sp-rnd-flt spt-scale-x (meters 5.5) (meters 2) 1.0) (sp-rnd-flt spt-scale-y (meters 5.5) (meters 2) 1.0) (sp-flt spt-r 0.0) (sp-rnd-flt spt-g 0.0 64.0 1.0) (sp-rnd-flt spt-b 128.0 128.0 1.0) (sp-rnd-flt spt-a 64.0 64.0 1.0) (sp-flt spt-fade-a -8.533334) (sp-int spt-timer 10) (sp-cpuinfo-flags bit2 bit3) ) ) (defbehavior sunken-pipegame-button-init-by-other sunken-pipegame-button ((arg0 vector) (arg1 quaternion) (arg2 entity-actor) (arg3 symbol)) (basebutton-init-by-other (the-as entity-actor #f) arg0 arg1 arg2 arg3 0.0) (none) ) (defmethod sunken-pipegame-method-20 sunken-pipegame ((obj sunken-pipegame)) (let ((gp-0 0)) (if (task-complete? *game-info* (game-task sunken-pipe)) (+! gp-0 1) ) (if (got-buzzer? *game-info* (game-task sunken-buzzer) 0) (+! gp-0 2) ) (if (got-buzzer? *game-info* (game-task sunken-buzzer) 1) (+! gp-0 4) ) (the-as uint gp-0) ) ) (defstate sunken-pipegame-start-up (sunken-pipegame) :code (behavior () (suspend) (send-event (handle->process (-> self prize 0 actor-handle)) 'anim #f) (go sunken-pipegame-idle) (none) ) ) (defstate sunken-pipegame-idle (sunken-pipegame) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type (('trigger) (when (= (-> proc type) sunken-pipegame-button) (set! (-> self challenge) (-> (the-as sunken-pipegame-button proc) button-id)) (go sunken-pipegame-begin-play) ) ) ) ) :code (behavior () (loop (suspend) ) (none) ) ) (defstate sunken-pipegame-begin-play (sunken-pipegame) :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block)) (case event-type (('notify) (case (-> proc type) ((fuel-cell buzzer) (go sunken-pipegame-beat-challenge) ) ) ) ) ) :enter (behavior () (sunken-pipegame-method-21 self #f) (set! (-> self abort-audio-if-beaten?) #f) (dotimes (gp-0 3) (let ((v1-4 (-> self button gp-0))) (if (and (!= gp-0 (-> self challenge)) (not (logtest? (ash 1 gp-0) (-> self challenges-mask)))) (send-event (ppointer->process v1-4) 'trigger) ) ) ) (none) ) :code (behavior () (local-vars (v1-112 symbol)) (let ((gp-0 (-> *display* base-frame-counter))) (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (go sunken-pipegame-end-play) ) (kill-current-level-hint '(camera) '() 'exit) (let ((v1-10 (-> self challenge))) (cond ((zero? v1-10) (ambient-hint-spawn "gamcam27" (the-as vector #f) *entity-pool* 'camera) (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-left" 0 #f '() :to self) ) ((= v1-10 1) (ambient-hint-spawn "gamcam25" (the-as vector #f) *entity-pool* 'camera) (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-middle" 0 #f '() :to self) ) ((= v1-10 2) (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) (process-spawn pov-camera (-> self root trans) *sunkencam-sg* "pipegame-right" 0 #f '() :to self) ) ) ) (set! (-> self state-time) (-> *display* base-frame-counter)) (let ((f30-0 0.0)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 2)) (let ((s5-3 (-> self prize (-> self challenge)))) (spawn (-> s5-3 sucked-up-part) (-> s5-3 sucked-up-jar-part-pos)) (spawn (-> s5-3 blown-out-part) (-> s5-3 blown-out-far-part-pos)) ) (+! f30-0 (* 1024.0 (-> *display* seconds-per-frame))) (let ((s5-4 (new 'stack-no-clear 'vector))) (set! (-> s5-4 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) (let* ((f28-0 (-> s5-4 y)) (v1-39 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-40 (the-as number (logior #x3f800000 v1-39))) ) (set! (-> s5-4 y) (+ f28-0 (* (+ -1.0 (the-as float v1-40)) f30-0))) ) (let ((a1-18 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-18 from) self) (set! (-> a1-18 num-params) 1) (set! (-> a1-18 message) 'trans) (set! (-> a1-18 param 0) (the-as uint s5-4)) (let ((t9-17 send-event-function) (a0-32 (handle->process (-> self prize (-> self challenge) actor-handle))) ) (t9-17 a0-32 a1-18) ) ) ) (suspend) ) (let ((f28-1 0.0)) (until (= f28-1 20480.0) (let ((s5-5 (-> self prize (-> self challenge)))) (spawn (-> s5-5 sucked-up-part) (-> s5-5 sucked-up-jar-part-pos)) (spawn (-> s5-5 blown-out-part) (-> s5-5 blown-out-far-part-pos)) (set! f28-1 (seek f28-1 20480.0 (* 81920.0 (-> *display* seconds-per-frame)))) (let ((s4-0 (new 'stack-no-clear 'vector))) (set! (-> s4-0 quad) (-> s5-5 jar-pos quad)) (let* ((f26-0 (-> s4-0 y)) (v1-65 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-66 (the-as number (logior #x3f800000 v1-65))) ) (set! (-> s4-0 y) (+ f26-0 (+ (* (+ -1.0 (the-as float v1-66)) f30-0) f28-1))) ) (let ((a1-22 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-22 from) self) (set! (-> a1-22 num-params) 1) (set! (-> a1-22 message) 'trans) (set! (-> a1-22 param 0) (the-as uint s4-0)) (let ((t9-22 send-event-function) (a0-45 (handle->process (-> s5-5 actor-handle))) ) (t9-22 a0-45 a1-22) ) ) ) ) (suspend) ) ) ) (until (>= (- (-> *display* base-frame-counter) gp-0) (-> self prize (-> self challenge) pipe-travel-time-to-far)) (let ((s5-6 (-> self prize (-> self challenge)))) (spawn (-> s5-6 sucked-up-part) (-> s5-6 sucked-up-jar-part-pos)) (spawn (-> s5-6 blown-out-part) (-> s5-6 blown-out-far-part-pos)) ) (suspend) ) ) (sunken-pipegame-method-22 self #t) (let ((f30-1 20480.0)) (until (= f30-1 0.0) (set! f30-1 (seek f30-1 0.0 (* 81920.0 (-> *display* seconds-per-frame)))) (let ((gp-1 (-> self prize (-> self challenge)))) (spawn (-> gp-1 sucked-up-part) (-> gp-1 sucked-up-jar-part-pos)) (spawn (-> gp-1 blown-out-part) (-> gp-1 blown-out-far-part-pos)) (let ((v1-96 (new 'stack-no-clear 'vector))) (set! (-> v1-96 quad) (-> gp-1 far-pos quad)) (+! (-> v1-96 y) f30-1) (let ((a1-32 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-32 from) self) (set! (-> a1-32 num-params) 1) (set! (-> a1-32 message) 'trans) (set! (-> a1-32 param 0) (the-as uint v1-96)) (let ((t9-29 send-event-function) (a0-64 (handle->process (-> gp-1 actor-handle))) ) (t9-29 a0-64 a1-32) ) ) ) ) (suspend) ) ) (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (go sunken-pipegame-end-play) ) (until v1-112 (suspend) (set! v1-112 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) ) (set! (-> self state-time) (-> *display* base-frame-counter)) (sleep (-> self ticker) (-> self prize (-> self challenge) puzzle-delay)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 0.5)) (completed? (-> self ticker)) (suspend) ) (level-hint-spawn (game-text-id sunken-pipegame-hint) "sksp0123" (the-as entity #f) *entity-pool* (game-task none) ) (close-specific-task! (-> self entity extra perm task) (task-status need-hint)) (until (completed? (-> self ticker)) (suspend) ) (kill-current-level-hint '(camera) '() 'exit) (ambient-hint-spawn "gamcam26" (the-as vector #f) *entity-pool* 'camera) (set! (-> self abort-audio-if-beaten?) #t) (set! (-> self state-time) (-> *display* base-frame-counter)) (let ((f30-2 0.0)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 2)) (let ((gp-2 (-> self prize (-> self challenge)))) (spawn (-> gp-2 sucked-up-part) (-> gp-2 sucked-up-far-part-pos)) (spawn (-> gp-2 blown-out-part) (-> gp-2 blown-out-jar-part-pos)) (+! f30-2 (* 1024.0 (-> *display* seconds-per-frame))) (let ((s5-7 (new 'stack-no-clear 'vector))) (set! (-> s5-7 quad) (-> gp-2 far-pos quad)) (let* ((f28-2 (-> s5-7 y)) (v1-146 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-147 (the-as number (logior #x3f800000 v1-146))) ) (set! (-> s5-7 y) (+ f28-2 (* (+ -1.0 (the-as float v1-147)) f30-2))) ) (let ((a1-42 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-42 from) self) (set! (-> a1-42 num-params) 1) (set! (-> a1-42 message) 'trans) (set! (-> a1-42 param 0) (the-as uint s5-7)) (let ((t9-41 send-event-function) (a0-91 (handle->process (-> gp-2 actor-handle))) ) (t9-41 a0-91 a1-42) ) ) ) ) (suspend) ) (let ((f28-3 0.0)) (until (= f28-3 20480.0) (let ((gp-3 (-> self prize (-> self challenge)))) (spawn (-> gp-3 sucked-up-part) (-> gp-3 sucked-up-far-part-pos)) (spawn (-> gp-3 blown-out-part) (-> gp-3 blown-out-jar-part-pos)) (set! f28-3 (seek f28-3 20480.0 (* 81920.0 (-> *display* seconds-per-frame)))) (let ((s5-8 (new 'stack-no-clear 'vector))) (set! (-> s5-8 quad) (-> gp-3 far-pos quad)) (let* ((f26-1 (-> s5-8 y)) (v1-169 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) (v1-170 (the-as number (logior #x3f800000 v1-169))) ) (set! (-> s5-8 y) (+ f26-1 (+ (* (+ -1.0 (the-as float v1-170)) f30-2) f28-3))) ) (let ((a1-46 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-46 from) self) (set! (-> a1-46 num-params) 1) (set! (-> a1-46 message) 'trans) (set! (-> a1-46 param 0) (the-as uint s5-8)) (let ((t9-46 send-event-function) (a0-104 (handle->process (-> gp-3 actor-handle))) ) (t9-46 a0-104 a1-46) ) ) ) ) (suspend) ) ) ) (sunken-pipegame-method-22 self #f) (set! (-> self abort-audio-if-beaten?) #f) (let ((v1-184 (-> self prize (-> self challenge))) (a0-109 (new 'stack-no-clear 'vector)) ) (set! (-> a0-109 quad) (-> v1-184 jar-pos quad)) (set! (-> a0-109 y) (+ 40960.0 (-> a0-109 y))) (send-event (handle->process (-> v1-184 actor-handle)) 'trans a0-109) ) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self prize (-> self challenge) pipe-travel-time-to-jar) ) (let ((gp-4 (-> self prize (-> self challenge)))) (spawn (-> gp-4 sucked-up-part) (-> gp-4 sucked-up-far-part-pos)) (spawn (-> gp-4 blown-out-part) (-> gp-4 blown-out-jar-part-pos)) ) (suspend) ) (let ((f30-3 20480.0)) (until (= f30-3 0.0) (set! f30-3 (seek f30-3 0.0 (* 40960.0 (-> *display* seconds-per-frame)))) (let ((v1-203 (new 'stack-no-clear 'vector))) (set! (-> v1-203 quad) (-> (the-as (pointer uint128) (&+ (&-> self stack 160) (* 144 (-> self challenge)))))) (+! (-> v1-203 y) f30-3) (let ((a1-57 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-57 from) self) (set! (-> a1-57 num-params) 1) (set! (-> a1-57 message) 'trans) (set! (-> a1-57 param 0) (the-as uint v1-203)) (let ((t9-52 send-event-function) (a0-128 (handle->process (-> self prize (-> self challenge) actor-handle))) ) (t9-52 a0-128 a1-57) ) ) ) (suspend) ) ) (set! (-> self state-time) (-> *display* base-frame-counter)) (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 1.5)) (suspend) ) (ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger) (go sunken-pipegame-end-play) (none) ) ) (defstate sunken-pipegame-beat-challenge (sunken-pipegame) :code (behavior () (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) (if (-> self abort-audio-if-beaten?) (kill-current-level-hint '(camera) '() 'exit) ) (go sunken-pipegame-end-play) (none) ) ) (defstate sunken-pipegame-end-play (sunken-pipegame) :code (behavior () (local-vars (v1-3 symbol)) (sunken-pipegame-method-21 self #t) (set! (-> self abort-audio-if-beaten?) #f) (until v1-3 (suspend) (set! v1-3 (or (not *target*) (not (logtest? (-> *target* state-flags) (state-flags grabbed))))) ) (if (not (handle->process (-> self prize (-> self challenge) actor-handle))) (logior! (-> self challenges-mask) (ash 1 (-> self challenge))) ) (set! (-> self challenge) -1) (dotimes (gp-0 3) (let ((v1-18 (-> self button gp-0))) (if (not (logtest? (ash 1 gp-0) (-> self challenges-mask))) (send-event (ppointer->process v1-18) 'untrigger) ) ) ) (go sunken-pipegame-idle) (none) ) ) (defmethod sunken-pipegame-method-22 sunken-pipegame ((obj sunken-pipegame) (arg0 symbol)) (let* ((v1-0 (-> obj challenge)) (a2-0 v1-0) ) (cond ((zero? a2-0) (let ((v1-5 (handle->process (-> obj prize v1-0 actor-handle)))) (when v1-5 (if arg0 (restore-collide-with-as (-> (the-as collectable v1-5) root-override)) (clear-collide-with-as (-> (the-as collectable v1-5) root-override)) ) ) ) ) ((or (= a2-0 1) (= a2-0 2)) (let ((v1-13 (handle->process (-> obj prize v1-0 actor-handle)))) (when v1-13 (if arg0 (restore-collide-with-as (-> (the-as collectable v1-13) root-override)) (clear-collide-with-as (-> (the-as collectable v1-13) root-override)) ) ) ) ) ) ) (none) ) (defmethod sunken-pipegame-method-21 sunken-pipegame ((obj sunken-pipegame) (arg0 symbol)) (if arg0 (logior! (-> obj mask) (process-mask actor-pause)) (logclear! (-> obj mask) (process-mask actor-pause)) ) (let ((v1-4 (-> obj child))) (while v1-4 (if arg0 (logior! (-> v1-4 0 mask) (process-mask actor-pause)) (logclear! (-> v1-4 0 mask) (process-mask actor-pause)) ) (set! v1-4 (-> v1-4 0 brother)) ) ) #f ) (defmethod deactivate sunken-pipegame ((obj sunken-pipegame)) (dotimes (s5-0 3) (let ((s4-0 (-> obj prize s5-0))) (if (nonzero? (-> s4-0 sucked-up-part)) (kill-and-free-particles (-> s4-0 sucked-up-part)) ) (if (nonzero? (-> s4-0 blown-out-part)) (kill-and-free-particles (-> s4-0 blown-out-part)) ) ) ) ((method-of-type process-drawable deactivate) obj) (none) ) (defmethod relocate sunken-pipegame ((obj sunken-pipegame) (arg0 int)) (dotimes (v1-0 3) (let ((a0-4 (-> obj prize v1-0))) (when (nonzero? (-> a0-4 sucked-up-part)) (if (nonzero? (-> a0-4 sucked-up-part)) (&+! (-> a0-4 sucked-up-part) arg0) ) ) (when (nonzero? (-> a0-4 blown-out-part)) (if (nonzero? (-> a0-4 blown-out-part)) (&+! (-> a0-4 blown-out-part) arg0) ) ) ) ) (the-as sunken-pipegame ((the-as (function process-drawable int process-drawable) (find-parent-method sunken-pipegame 7)) obj arg0) ) ) (defmethod init-from-entity! sunken-pipegame ((obj sunken-pipegame) (arg0 entity-actor)) (set! (-> obj abort-audio-if-beaten?) #f) (stack-size-set! (-> obj main-thread) 512) (set! (-> obj challenge) -1) (dotimes (v1-3 3) (set! (-> obj prize v1-3 actor-handle) (the-as handle #f)) ) (set! (-> obj root) (new 'process 'trsqv)) (process-drawable-from-entity! obj arg0) (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> obj challenges-mask) (sunken-pipegame-method-20 obj)) (let ((s4-0 (new 'stack-no-clear 'vector)) (s3-0 (new 'stack-no-clear 'quaternion)) ) (quaternion-identity! s3-0) (dotimes (s2-0 3) (let* ((s0-0 (-> obj prize s2-0)) (v1-17 (ash 1 s2-0)) (s1-1 (logtest? v1-17 (-> obj challenges-mask))) ) (eval-path-curve-div! (-> obj path) (-> s0-0 jar-pos) (the float (* s2-0 2)) 'interp) (eval-path-curve-div! (-> obj path) (-> s0-0 far-pos) (the float (+ (* s2-0 2) 1)) 'interp) (set! (-> s0-0 sucked-up-jar-part-pos quad) (-> s0-0 jar-pos quad)) (set! (-> s0-0 sucked-up-far-part-pos quad) (-> s0-0 far-pos quad)) (set! (-> s0-0 blown-out-jar-part-pos quad) (-> s0-0 jar-pos quad)) (set! (-> s0-0 blown-out-jar-part-pos y) (+ 24576.0 (-> s0-0 blown-out-jar-part-pos y))) (set! (-> s0-0 blown-out-far-part-pos quad) (-> s0-0 far-pos quad)) (set! (-> s0-0 blown-out-far-part-pos y) (+ 28672.0 (-> s0-0 blown-out-far-part-pos y))) (let ((v1-30 s2-0)) (cond ((zero? v1-30) (set! (-> s0-0 puzzle-delay) (seconds 25)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 8.5)) (set! (-> s0-0 pipe-travel-time-to-jar) (seconds 2.5)) (set-vector! s4-0 -30720.0 1146.88 5120.0 1.0) (set! (-> s0-0 sucked-up-part) (create-launch-control (-> *part-group-id-table* 448) obj)) (set! (-> s0-0 blown-out-part) (create-launch-control (-> *part-group-id-table* 451) obj)) (set! (-> s0-0 jar-pos y) (+ 11673.6 (-> s0-0 jar-pos y))) (set! (-> s0-0 far-pos y) (+ 11673.6 (-> s0-0 far-pos y))) (when (not s1-1) (set! (-> s0-0 actor-handle) (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type fuel-cell) 45.0 #f obj (the-as fact-info #f)) ) ) (let ((a1-10 (handle->process (-> s0-0 actor-handle)))) (if a1-10 (clear-collide-with-as (-> (the-as collectable a1-10) root-override)) ) ) ) ) ((= v1-30 1) (set! (-> s0-0 puzzle-delay) (seconds 15)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 5.5)) (set! (-> s0-0 pipe-travel-time-to-jar) (seconds 2.5)) (set-vector! s4-0 0.0 1146.88 5120.0 1.0) (set! (-> s0-0 sucked-up-part) (create-launch-control (-> *part-group-id-table* 449) obj)) (set! (-> s0-0 blown-out-part) (create-launch-control (-> *part-group-id-table* 452) obj)) (set! (-> s0-0 jar-pos y) (+ 7168.0 (-> s0-0 jar-pos y))) (set! (-> s0-0 far-pos y) (+ 7168.0 (-> s0-0 far-pos y))) (set! (-> s0-0 blown-out-far-part-pos y) (+ 4096.0 (-> s0-0 blown-out-far-part-pos y))) (when (not s1-1) (set! (-> s0-0 actor-handle) (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 49.0 #f obj (the-as fact-info #f)) ) ) (let ((s0-1 (handle->process (-> s0-0 actor-handle)))) (when s0-1 (send-event s0-1 'movie-pos 1) (clear-collide-with-as (-> (the-as collectable s0-1) root-override)) ) ) ) ) ((= v1-30 2) (set! (-> s0-0 puzzle-delay) (seconds 15)) (set! (-> s0-0 pipe-travel-time-to-far) (seconds 4.5)) (set! (-> s0-0 pipe-travel-time-to-jar) (seconds 2.5)) (set-vector! s4-0 30720.0 1146.88 5120.0 1.0) (set! (-> s0-0 sucked-up-part) (create-launch-control (-> *part-group-id-table* 450) obj)) (set! (-> s0-0 blown-out-part) (create-launch-control (-> *part-group-id-table* 453) obj)) (set! (-> s0-0 jar-pos y) (+ 7168.0 (-> s0-0 jar-pos y))) (set! (-> s0-0 far-pos y) (+ 7168.0 (-> s0-0 far-pos y))) (set! (-> s0-0 blown-out-far-part-pos y) (+ 4096.0 (-> s0-0 blown-out-far-part-pos y))) (when (not s1-1) (set! (-> s0-0 actor-handle) (ppointer->handle (birth-pickup-at-point (-> s0-0 jar-pos) (pickup-type buzzer) 65585.0 #f obj (the-as fact-info #f)) ) ) (let ((s0-2 (handle->process (-> s0-0 actor-handle)))) (when s0-2 (send-event s0-2 'movie-pos 2) (clear-collide-with-as (-> (the-as collectable s0-2) root-override)) ) ) ) ) ) ) (vector+! s4-0 s4-0 (-> obj root trans)) (let ((v1-102 (process-spawn sunken-pipegame-button s4-0 s3-0 arg0 s1-1 :to obj))) (set! (-> obj button s2-0) (the-as (pointer sunken-pipegame-button) v1-102)) (set! (-> (the-as (pointer sunken-pipegame-button) v1-102) 0 button-id) s2-0) ) ) ) ) (go sunken-pipegame-start-up) (none) )