;;-*-Lisp-*-
(in-package goal)

;; name: board-part.gc
;; name in dgo: board-part
;; dgos: GAME

;; DECOMP BEGINS

(defpartgroup group-board-land-straight
  :id 189
  :duration (seconds 0.035)
  :linger-duration (seconds 1.5)
  :bounds (static-bspherem 0 0 0 2)
  :parts ((sp-item 249))
  )

(defpartgroup group-board-quick-jump
  :id 190
  :duration (seconds 0.035)
  :linger-duration (seconds 1.5)
  :bounds (static-bspherem 0 0 0 2)
  :parts ((sp-item 249))
  )

(defpartgroup group-board-launch
  :id 191
  :duration (seconds 0.035)
  :linger-duration (seconds 1.5)
  :bounds (static-bspherem 0 0 0 2)
  :parts ((sp-item 666 :flags (sp3)) (sp-item 667 :flags (sp3)) (sp-item 668 :flags (sp3 sp7)))
  )

(defpart 668
  :init-specs ((:texture (starflash level-default-sprite))
    (:num 1.0)
    (:scale-x (meters 5))
    (:rot-x (degrees 2250))
    (:scale-y :copy scale-x)
    (:r 255.0)
    (:g 255.0)
    (:b 255.0)
    (:a 255.0)
    (:omega (degrees 18011.25))
    (:scalevel-x (meters -0.125))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -6.375)
    (:timer (seconds 0.135))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 409600.0)
    )
  )

(defpart 667
  :init-specs ((:texture (middot level-default-sprite))
    (:num 100.0)
    (:scale-x (meters 0.05) (meters 0.05))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 128.0)
    (:b 255.0)
    (:a 128.0)
    (:omega (degrees 0.1125))
    (:vel-y (meters 0.33333334) (meters 0.006666667))
    (:fade-r -0.85333335)
    (:fade-g -0.85333335)
    (:fade-a -0.21333334 -0.21333334)
    (:friction 0.9 0.04)
    (:timer (seconds 2))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:func 'sparticle-motion-blur)
    (:conerot-x (degrees 80) (degrees 20))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(defpart 666
  :init-specs ((:texture (big-cloud level-default-sprite))
    (:num 30.0)
    (:scale-x (meters 1) (meters 2))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 128.0)
    (:b 255.0)
    (:a 32.0 32.0)
    (:vel-y (meters 0.033333335) (meters 0.1))
    (:scalevel-x (meters 0.006666667) (meters 0.033333335))
    (:scalevel-y :copy scalevel-x)
    (:fade-r -0.85333335)
    (:fade-g -0.85333335)
    (:fade-a -0.21333334 -0.21333334)
    (:friction 0.93 0.02)
    (:timer (seconds 1))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:conerot-x (degrees 60) (degrees 40))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(defpartgroup group-target-board-duck-charge
  :id 186
  :bounds (static-bspherem 0 0 0 15)
  :parts ((sp-item 669 :flags (is-3d sp7)))
  )

(defpart 669
  :init-specs ((:texture (laser-hit2 level-default-sprite))
    (:num 0.3)
    (:y (meters 0.5))
    (:scale-x (meters 10) (meters 5))
    (:rot-y (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 0.0)
    (:b 255.0)
    (:a 0.0)
    (:scalevel-x (meters -0.06666667))
    (:scalevel-y :copy scalevel-x)
    (:fade-r 0.85333335)
    (:fade-g 0.85333335)
    (:fade-a 0.85333335 0.85333335)
    (:timer (seconds 0.5))
    (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:func 'board-charge-track)
    (:rotate-y (degrees 0))
    )
  )

(defpart 670
  :init-specs ((:texture (motion-blur-part level-default-sprite))
    (:num 1.0)
    (:scale-x (meters 2.5))
    (:rot-x 4)
    (:scale-y (meters 0.05))
    (:r 255.0)
    (:g 255.0)
    (:b 255.0)
    (:a 64.0 32.0)
    (:omega (degrees 0.045))
    (:vel-y (meters 0.033333335) (meters 0.033333335))
    (:fade-g -0.85 -1.7)
    (:fade-b -8.0)
    (:fade-a -0.16 -0.16)
    (:accel-y (meters -0.0016666667) (meters -0.00066666666))
    (:friction 0.95)
    (:timer (seconds 0.167) (seconds 0.497))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:func 'sparticle-motion-blur)
    (:conerot-x (degrees 45) (degrees 90))
    (:conerot-y (degrees 0) (degrees 360))
    )
  )

(defpartgroup group-target-board
  :id 185
  :bounds (static-bspherem 0 0 0 15)
  :parts ((sp-item 671) (sp-item 672 :flags (is-3d)) (sp-item 673))
  )

(defpart 671
  :init-specs ((:num 3.0)
    (:y (meters 0.25))
    (:rot-x 7)
    (:r 2048.0)
    (:g 1638.4)
    (:b 1843.2)
    (:fade-b -0.08533333)
    (:timer (seconds 0.135))
    (:flags (distort))
    (:conerot-x (degrees 90))
    (:conerot-y (degrees 0) (degrees 360))
    (:conerot-radius (meters 0) (meters 0.5))
    )
  )

(defpart 672
  :init-specs ((:texture (hotdot level-default-sprite))
    (:birth-func 'birth-func-target-orient)
    (:num 1.0)
    (:y (meters 0.25))
    (:scale-x (meters 4) (meters 2))
    (:rot-x (degrees 0))
    (:rot-y (degrees 0))
    (:rot-z (degrees 0))
    (:scale-y :copy scale-x)
    (:r 64.0 128.0)
    (:g :copy r)
    (:b 255.0)
    (:a 8.0 8.0)
    (:scalevel-x (meters -0.02) (meters -0.006666667))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.1)
    (:timer (seconds 0.535))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13))
    )
  )

(defpart 673
  :init-specs ((:texture (motion-blur-part level-default-sprite))
    (:num 1.0)
    (:scale-x (meters 2.5))
    (:rot-x 4)
    (:scale-y (meters 0.05))
    (:r 128.0 64.0)
    (:g :copy r)
    (:b 255.0)
    (:a 64.0 32.0)
    (:omega (degrees 0.05625))
    (:vel-y (meters 0.033333335) (meters 0.033333335))
    (:fade-r -3.0)
    (:fade-g -3.0)
    (:fade-a -0.21333334 -0.21333334)
    (:accel-y (meters -0.00033333333) (meters -0.00033333333))
    (:friction 0.95)
    (:timer (seconds 0.167) (seconds 0.497))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-13))
    (:func 'sparticle-motion-blur)
    (:conerot-x (degrees 80) (degrees 10))
    (:conerot-y (degrees 0) (degrees 360))
    (:conerot-radius (meters 0) (meters 0.5))
    )
  )

(defpart 674
  :init-specs ((:texture (bigpuff level-default-sprite))
    (:num 0.0)
    (:y (meters 0))
    (:scale-x (meters 1) (meters 1))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 128.0)
    (:b 32.0)
    (:a 8.0 56.0)
    (:vel-y (meters 0.13333334) (meters 0.16666667))
    (:scalevel-x (meters 0.013333334))
    (:rotvel-z (degrees -0.4) (degrees 0.8))
    (:scalevel-y :copy scalevel-x)
    (:fade-g -1.4222223)
    (:fade-a -0.35555556)
    (:accel-y (meters 0.00008333333))
    (:friction 0.7)
    (:timer (seconds 0.6))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:conerot-x (degrees 90))
    (:conerot-y (degrees 0) (degrees 360))
    )
  )

(defpartgroup group-board-spin-attack
  :id 184
  :duration (seconds 1)
  :flags (sp0 sp6)
  :bounds (static-bspherem 0 0 0 2)
  :rotate ((degrees 90) (degrees 180) (degrees 90))
  :parts ((sp-item 675 :flags (is-3d sp3 sp6 sp7))
    (sp-item 676 :flags (is-3d sp3 sp6 sp7))
    (sp-item 677 :flags (sp3 sp6))
    )
  )

(defpart 677
  :init-specs ((:texture (glow-soft level-default-sprite))
    (:num 1.0)
    (:scale-x (meters 3) (meters 0.5))
    (:rot-x (degrees 11.25))
    (:scale-y (meters 4) (meters 0.5))
    (:r 0.0)
    (:g 128.0)
    (:b 255.0)
    (:a 64.0)
    (:fade-a -0.4)
    (:timer (seconds 0.267))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 12288.0)
    (:func 'sparticle-track-root)
    )
  )

(defpart 676
  :init-specs ((:texture (hotdot level-default-sprite))
    (:num 1.0)
    (:x (meters 0))
    (:y (meters 0))
    (:z (meters 0))
    (:scale-x (meters 12))
    (:rot-x (degrees 0))
    (:rot-y (degrees 0))
    (:rot-z (degrees 90))
    (:scale-y (meters 9))
    (:r 0.0)
    (:g 128.0 128.0)
    (:b 255.0)
    (:a 128.0)
    (:scalevel-x (meters -0.086666666))
    (:scalevel-y (meters -0.09))
    (:timer (seconds 0.167))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
    (:func 'sparticle-track-root)
    (:rotate-y (degrees 0))
    )
  )

(defpart 675
  :init-specs ((:texture (splash-foam level-default-sprite))
    (:num 1.0)
    (:x (meters 0))
    (:y (meters 0))
    (:z (meters 0))
    (:scale-x (meters 1.4))
    (:rot-x (degrees 0))
    (:rot-y (degrees 0))
    (:rot-z (degrees 90))
    (:scale-y (meters 0.9))
    (:r 0.0)
    (:g 128.0 128.0)
    (:b 255.0)
    (:a 255.0)
    (:scalevel-x (meters 0.3))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -3.1875)
    (:timer (seconds 0.067))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
    (:func 'sparticle-track-root)
    (:rotate-y (degrees 0))
    )
  )

(defpartgroup group-board-zap-attack
  :id 188
  :flags (sp0)
  :bounds (static-bspherem 0 0 0 2)
  :parts ((sp-item 678 :flags (is-3d) :period (seconds 20) :length (seconds 0.335)))
  )

(defpartgroup group-board-green-eco-zap-attack
  :id 187
  :flags (sp0)
  :bounds (static-bspherem 0 0 0 2)
  :parts ((sp-item 679 :flags (is-3d) :period (seconds 20) :length (seconds 0.335)))
  )

(defun board-charge-track ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
  (let ((v1-0 *target*)
        (a1-1 37)
        )
    (when *target*
      (let ((v1-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-0 node-list data a1-1))))
        (set! (-> arg2 x) (-> v1-2 x))
        (set! (-> arg2 y) (-> v1-2 y))
        (set! (-> arg2 z) (-> v1-2 z))
        )
      )
    )
  0
  (none)
  )

(defun board-zap-track ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
  (let* ((v1-2 (ppointer->process (-> arg1 key proc parent)))
         (a1-1 (the int (-> arg1 user-float)))
         (v1-5 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-2) node-list data a1-1)))
         )
    (set! (-> arg2 x) (-> v1-5 x))
    (set! (-> arg2 y) (-> v1-5 y))
    (set! (-> arg2 z) (-> v1-5 z))
    )
  0
  (none)
  )

(defpart 678
  :init-specs ((:texture (laser-hit-rim level-default-sprite))
    (:num 0.25)
    (:y (meters 0.5))
    (:scale-x (meters 0.5))
    (:rot-y (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 80.0)
    (:g 80.0)
    (:b 255.0)
    (:a 255.0)
    (:scalevel-x (meters 0.16666667))
    (:scalevel-y :copy scalevel-x)
    (:fade-r -1.6)
    (:fade-g -1.6)
    (:timer (seconds 0.167))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:userdata 37.0)
    (:func 'board-zap-track)
    (:rotate-y (degrees 0))
    )
  )

(defpart 680
  :init-specs ((:func 'none))
  )

(defpart 679
  :init-specs ((:texture (laser-hit-rim level-default-sprite))
    (:num 0.25)
    (:y (meters 0.5))
    (:scale-x (meters 0.5))
    (:rot-y (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 80.0)
    (:g 255.0)
    (:b 80.0)
    (:a 255.0)
    (:scalevel-x (meters 0.26666668))
    (:scalevel-y :copy scalevel-x)
    (:fade-r -1.6)
    (:fade-b -1.6)
    (:timer (seconds 0.167))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:userdata 37.0)
    (:func 'board-zap-track)
    (:rotate-y (degrees 0))
    )
  )
