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

;; name: temple-part.gc
;; name in dgo: temple-part
;; dgos: TEMA

(define-extern *range-color-temple-big-torch-flame* curve-color-fast)
(define-extern *range-alpha-temple-big-torch-flame* curve2d-fast)
(define-extern *range-scale-temple-big-torch-flame-x* curve2d-fast)
(define-extern *range-scale-temple-big-torch-flame-y* curve2d-fast)
(define-extern *r-curve-temple-big-torch-flame* curve2d-fast)
(define-extern *g-curve-temple-big-torch-flame* curve2d-fast)
(define-extern *b-curve-temple-big-torch-flame* curve2d-fast)
(define-extern *curve-alpha-temple-big-torch-flame* curve2d-fast)
(define-extern *curve-temple-big-torch-flame-x* curve2d-fast)
(define-extern *curve-temple-big-torch-flame-y* curve2d-fast)
(define-extern *range-color-temple-small-torch-flame* curve-color-fast)
(define-extern *range-alpha-temple-small-torch-flame* curve2d-fast)
(define-extern *range-scale-temple-small-torch-flame-x* curve2d-fast)
(define-extern *range-scale-temple-small-torch-flame-y* curve2d-fast)
(define-extern *r-curve-temple-small-torch-flame* curve2d-fast)
(define-extern *g-curve-temple-small-torch-flame* curve2d-fast)
(define-extern *b-curve-temple-small-torch-flame* curve2d-fast)
(define-extern *curve-alpha-temple-small-torch-flame* curve2d-fast)
(define-extern *curve-temple-small-torch-flame-x* curve2d-fast)
(define-extern *curve-temple-small-torch-flame-y* curve2d-fast)
(define-extern *range-color-templea-small-torch-flame* curve-color-fast)
(define-extern *range-alpha-templea-small-torch-flame* curve2d-fast)
(define-extern *range-scale-templea-small-torch-flame-x* curve2d-fast)
(define-extern *range-scale-templea-small-torch-flame-y* curve2d-fast)
(define-extern *r-curve-templea-small-torch-flame* curve2d-fast)
(define-extern *g-curve-templea-small-torch-flame* curve2d-fast)
(define-extern *b-curve-templea-small-torch-flame* curve2d-fast)
(define-extern *curve-alpha-templea-small-torch-flame* curve2d-fast)
(define-extern *curve-templea-small-torch-flame-x* curve2d-fast)
(define-extern *curve-templea-small-torch-flame-y* curve2d-fast)
(define-extern *range-color-templea-medium-torch-flame* curve-color-fast)
(define-extern *range-alpha-templea-medium-torch-flame* curve2d-fast)
(define-extern *range-scale-templea-medium-torch-flame-x* curve2d-fast)
(define-extern *range-scale-templea-medium-torch-flame-y* curve2d-fast)
(define-extern *r-curve-templea-medium-torch-flame* curve2d-fast)
(define-extern *g-curve-templea-medium-torch-flame* curve2d-fast)
(define-extern *b-curve-templea-medium-torch-flame* curve2d-fast)
(define-extern *curve-alpha-templea-medium-torch-flame* curve2d-fast)
(define-extern *curve-templea-medium-torch-flame-x* curve2d-fast)
(define-extern *curve-templea-medium-torch-flame-y* curve2d-fast)

;; DECOMP BEGINS

(defpartgroup group-temple-oracle-eyeglow
  :id 661
  :flags (sp0 sp4)
  :bounds (static-bspherem 0 0 0 640)
  :parts ((sp-item 2558 :flags (sp6 sp7)) (sp-item 2559 :flags (is-3d sp7)))
  )

(defpart 2558
  :init-specs ((:texture (colorflash level-default-sprite))
    (:num 1.0)
    (:x (meters 0))
    (:y (meters 0))
    (:z (meters 0))
    (:scale-x (meters 4) (meters 0.1))
    (:rot-x (degrees 11.25))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 128.0)
    (:b 255.0)
    (:a 50.0 2.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 4096.0)
    (:rotate-y (degrees 0))
    )
  )

(defpart 2559
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 0.1 0.1)
    (:x (meters 0.2))
    (:y (meters 0))
    (:z (meters 3))
    (:scale-x (meters 3))
    (:rot-x (degrees 0))
    (:rot-y (degrees 0))
    (:rot-z (degrees 90))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 128.0)
    (:b 255.0)
    (:a 0.0)
    (:fade-a 1.28)
    (:timer (seconds 0.335))
    (:flags (sp-cpuinfo-flag-3 left-multiply-quat))
    (:next-time (seconds 0.167))
    (:next-launcher 2560)
    (:rotate-x (degrees 0))
    (:rotate-y (degrees -40))
    (:rotate-z (degrees 90))
    )
  )

(defpart 2560
  :init-specs ((:fade-a -1.28))
  )

(defpartgroup group-temple-interior-waterfall
  :id 662
  :flags (sp0 sp4)
  :bounds (static-bspherem 0 -60 0 80)
  :parts ((sp-item 2561 :fade-after (meters 200) :falloff-to (meters 200) :flags (is-3d sp7))
    (sp-item 2562 :fade-after (meters 200) :falloff-to (meters 200) :flags (sp7))
    (sp-item 2563 :fade-after (meters 200) :falloff-to (meters 200) :flags (sp7))
    )
  )

(defpart 2561
  :init-specs ((:texture (ceiling-dust templea-sprite))
    (:birth-func 'birth-func-texture-group)
    (:num 0.5 0.5)
    (:x (meters 0) (meters 5))
    (:y (meters 10) (meters 10))
    (:z (meters 0))
    (:scale-x (meters 1) (meters 1))
    (:rot-x (degrees 90))
    (:scale-y :copy scale-x)
    (:r 200.0)
    (:g 200.0)
    (:b 200.0)
    (:a 5.0 5.0)
    (:scalevel-x (meters 0.00033333333) (meters 0.0016666667))
    (:scalevel-y (meters 0.00033333333) (meters 0.013333334))
    (:accel-y (meters -0.00033333333) (meters -0.00066666666))
    (:friction 0.985)
    (:timer (seconds 3.335))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-14 launch-along-z))
    (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 -1104150528 #x408100))
    (:rotate-y (degrees 0))
    )
  )

(defpart 2562
  :init-specs ((:texture (water-drops level-default-sprite))
    (:birth-func 'birth-func-texture-group)
    (:num 5.0)
    (:x (meters 3) (meters 2))
    (:y (meters -3.5))
    (:scale-x (meters 0.5) (meters 0.5))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 130.0 20.0)
    (:g :copy r)
    (:b :copy r)
    (:a 64.0)
    (:vel-z (meters -0.016666668) (meters -0.016666668))
    (:scalevel-x (meters 0.0033333334))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.21333334 -0.21333334)
    (:accel-y (meters -0.0016666667))
    (:friction 0.96 0.01)
    (:timer (seconds 1))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z left-multiply-quat))
    (:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406500 #x404a00))
    (:conerot-x (degrees 20) (degrees 30))
    (:conerot-y (degrees -10) (degrees 20))
    (:rotate-y (degrees 0))
    )
  )

(defpart 2563
  :init-specs ((:texture (big-cloud level-default-sprite))
    (:num 0.05 0.05)
    (:x (meters 2))
    (:y (meters -10))
    (:z (meters 2))
    (:scale-x (meters 2) (meters 2))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 180.0 70.0)
    (:g :copy r)
    (:b :copy r)
    (:a 32.0)
    (:vel-z (meters -0.0033333334) (meters -0.016666668))
    (:scalevel-x (meters 0.0033333334) (meters 0.0033333334))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.042666666 -0.042666666)
    (:accel-y (meters 0.00016666666))
    (:friction 0.99)
    (:timer (seconds 5))
    (:flags (sp-cpuinfo-flag-2))
    (:next-time (seconds 2.5))
    (:next-launcher 2564)
    (:rotate-y (degrees 0))
    )
  )

(defpartgroup group-temple-candle
  :id 663
  :flags (sp0 sp4 sp11)
  :bounds (static-bspherem 0 1 0 6)
  :parts ((sp-item 2565 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp7))
    (sp-item 2566 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp7))
    )
  )

(defpart 2565
  :init-specs ((:texture (glow-hotdot level-default-sprite))
    (:num 0.3 0.3)
    (:y (meters 0.2))
    (:scale-x (meters 0.2) (meters 0.1))
    (:scale-y :copy scale-x)
    (:r 255.0)
    (:g 180.0)
    (:b 100.0)
    (:a 255.0)
    (:scalevel-y (meters 0.006666667) (meters 0.006666667))
    (:accel-y (meters 0) (meters 0.00033333333))
    (:friction 0.99 0.02)
    (:timer (seconds 0.1) (seconds 0.165))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 launch-along-z))
    (:rotate-y (degrees 0) (degrees 3598.0002))
    )
  )

(defpart 2566
  :init-specs ((:texture (glow level-default-sprite))
    (:num 0.4)
    (:y (meters 0.3))
    (:scale-x (meters 1.5) (meters 1))
    (:rot-x (degrees 2.25))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0 4.0)
    (:b 0.0)
    (:a 8.0 10.0)
    (:omega (degrees 11261.25))
    (:timer (seconds 0.167) (seconds 0.08))
    (:flags (sp-cpuinfo-flag-3 glow set-conerot))
    (:userdata 409.6)
    (:rotate-y (degrees 0))
    )
  )

(defpartgroup group-temple-big-torch
  :id 664
  :flags (sp0 sp4 sp11)
  :bounds (static-bspherem 0 1 0 3)
  :parts ((sp-item 2567 :fade-after (meters 300) :falloff-to (meters 400) :flags (sp7))
    (sp-item 2568 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp7))
    (sp-item 2569 :fade-after (meters 100) :falloff-to (meters 200))
    (sp-item 2570 :falloff-to (meters 60) :flags (sp7))
    )
  )

(defpart 2567
  :init-specs ((:texture (explosion-nebula level-default-sprite))
    (:birth-func 'birth-func-curve)
    (:num 1.0)
    (:y (meters 0))
    (:scale-x (meters 1))
    (:rot-z (degrees -20) (degrees 40))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 0.0)
    (:b 0.0)
    (:a 0.0)
    (:vel-y (meters -0.006666667) (meters 0.0033333334))
    (:accel-y (meters 0.001) (meters 0.00033333333))
    (:timer (seconds 0.005))
    (:flags (sp-cpuinfo-flag-3 launch-along-z))
    (:userdata 0.0)
    (:func 'live-func-curve)
    (:conerot-x (degrees -90) (degrees 180))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(if #t
    (set! *range-color-temple-big-torch-flame* (new 'static 'curve-color-fast
                                                 :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                 :ys (new 'static 'inline-array vector 4
                                                   (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
                                                   (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                   (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                   (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                   )
                                                 :one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *range-alpha-temple-big-torch-flame* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                 :ys (new 'static 'vector :x 96.0 :y 255.0 :z 256.0 :w 257.0)
                                                 :one-over-x-deltas (new 'static 'vector :x 159.0 :y 1.0 :z 1.0 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *range-scale-temple-big-torch-flame-x* (new 'static 'curve2d-fast
                                                   :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                   :ys (new 'static 'vector :x 5.0 :y 8.0 :z 9.0 :w 10.0)
                                                   :one-over-x-deltas (new 'static 'vector :x 3.0 :y 1.0 :z 1.0 :w 1.0)
                                                   )
          )
    )

(if #t
    (set! *range-scale-temple-big-torch-flame-y* (new 'static 'curve2d-fast
                                                   :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                   :ys (new 'static 'vector :x 6.0 :y 10.0 :z 11.0 :w 12.0)
                                                   :one-over-x-deltas (new 'static 'vector :x 4.0 :y 1.0 :z 1.0 :w 1.0)
                                                   )
          )
    )

(if #t
    (set! *r-curve-temple-big-torch-flame* (new 'static 'curve2d-fast
                                             :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                             :ys (new 'static 'vector :x 0.2 :y 1.0 :z 1.0 :w 1.0)
                                             :one-over-x-deltas (new 'static 'vector :x 1.6 :w 1.0)
                                             )
          )
    )

(if #t
    (set! *g-curve-temple-big-torch-flame* (new 'static 'curve2d-fast
                                             :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                             :ys (new 'static 'vector :y 1.0 :z 0.8 :w 0.2)
                                             :one-over-x-deltas (new 'static 'vector :x 2.0 :y -1.0 :z -2.0 :w 1.0)
                                             )
          )
    )

(if #t
    (set! *b-curve-temple-big-torch-flame* (new 'static 'curve2d-fast
                                             :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                             :ys (new 'static 'vector :x 1.0 :y 1.0)
                                             :one-over-x-deltas (new 'static 'vector :y -5.0000005 :w 1.0)
                                             )
          )
    )

(if #t
    (set! *curve-alpha-temple-big-torch-flame* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -0.4 :z -0.7 :w -1.0)
                                                 :ys (new 'static 'vector :z 1.0 :w 0.2)
                                                 :one-over-x-deltas (new 'static 'vector :y 3.3333335 :z -2.6666665 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *curve-temple-big-torch-flame-x* (new 'static 'curve2d-fast
                                             :xs (new 'static 'vector :y -0.5 :z -0.6 :w -1.0)
                                             :ys (new 'static 'vector :x 0.3 :y 0.6 :z 0.5 :w 0.2)
                                             :one-over-x-deltas (new 'static 'vector :x 0.6 :y -1.0 :z -0.75000006 :w 1.0)
                                             )
          )
    )

(if #t
    (set! *curve-temple-big-torch-flame-y* (new 'static 'curve2d-fast
                                             :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                             :ys (new 'static 'vector :x 0.2 :y 0.4 :z 0.5 :w 0.6)
                                             :one-over-x-deltas (new 'static 'vector :x 0.4 :y 0.5 :z 0.3333334 :w 1.0)
                                             )
          )
    )

(define *part-temple-big-torch-flame-curve-settings* (new 'static 'particle-curve-settings
                                                       :lifetime-base (seconds 0.3)
                                                       :lifetime-offset (seconds 0.4)
                                                       :flags (particle-curve-flags pcf1)
                                                       )
        )

(set! (-> *part-id-table* 2567 init-specs 15 initial-valuef)
      (the-as float *part-temple-big-torch-flame-curve-settings*)
      )

(set! (-> *part-temple-big-torch-flame-curve-settings* color-start) *range-color-temple-big-torch-flame*)

(set! (-> *part-temple-big-torch-flame-curve-settings* alpha-start) *range-alpha-temple-big-torch-flame*)

(set! (-> *part-temple-big-torch-flame-curve-settings* scale-x-start) *range-scale-temple-big-torch-flame-x*)

(set! (-> *part-temple-big-torch-flame-curve-settings* scale-y-start) *range-scale-temple-big-torch-flame-y*)

(set! (-> *part-temple-big-torch-flame-curve-settings* r-scalar) *r-curve-temple-big-torch-flame*)

(set! (-> *part-temple-big-torch-flame-curve-settings* g-scalar) *g-curve-temple-big-torch-flame*)

(set! (-> *part-temple-big-torch-flame-curve-settings* b-scalar) *b-curve-temple-big-torch-flame*)

(set! (-> *part-temple-big-torch-flame-curve-settings* a-scalar) *curve-alpha-temple-big-torch-flame*)

(set! (-> *part-temple-big-torch-flame-curve-settings* scale-x-scalar) *curve-temple-big-torch-flame-x*)

(set! (-> *part-temple-big-torch-flame-curve-settings* scale-y-scalar) *curve-temple-big-torch-flame-y*)

(defpart 2568
  :init-specs ((:texture (glow level-default-sprite))
    (:num 0.4)
    (:y (meters 2))
    (:scale-x (meters 20) (meters 6))
    (:rot-x (degrees 6.7500005))
    (:rot-z (degrees 0) (degrees 3600))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 0.0)
    (:a 24.0 8.0)
    (:omega (degrees 11261.25))
    (:timer (seconds 0.167) (seconds 0.08))
    (:flags (sp-cpuinfo-flag-3 glow set-conerot))
    (:userdata 2048.0)
    (:rotate-y (degrees 0))
    )
  )

(defpart 2570
  :init-specs ((:num 0.3)
    (:x (meters -1) (meters 2))
    (:y (meters 2))
    (:z (meters -1) (meters 2))
    (:rot-x 8)
    (:r 8192.0)
    (:g 4096.0)
    (:b 4096.0)
    (:vel-y (meters 0.0033333334))
    (:fade-b -6.826667)
    (:accel-y (meters 0.001))
    (:timer (seconds 1))
    (:flags (distort))
    (:next-time (seconds 0.5))
    (:next-launcher 2571)
    )
  )

(defpart 2571
  :init-specs ((:fade-b 6.826667))
  )

(defpart 2569
  :init-specs ((:texture (glow-hotdot level-default-sprite))
    (:num 0.005 0.08)
    (:y (meters 2))
    (:scale-x (meters 0.5) (meters 0.2))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 8.0)
    (:a 255.0)
    (:vel-y (meters 0.033333335) (meters 0.033333335))
    (:fade-g -0.16666667)
    (:fade-b -5.0)
    (:fade-a -1.7)
    (:friction 0.99 0.02)
    (:timer (seconds 1) (seconds 0.497))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 launch-along-z))
    (:conerot-x (degrees -20) (degrees 40))
    (:rotate-y (degrees 0) (degrees 3598.0002))
    (:conerot-radius (meters 1) (meters 2))
    )
  )

(defpartgroup group-temple-small-torch
  :id 665
  :flags (sp0 sp4 sp11)
  :bounds (static-bspherem 0 1 0 6)
  :parts ((sp-item 2572 :fade-after (meters 500) :falloff-to (meters 600) :flags (sp7))
    (sp-item 2573 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp7))
    (sp-item 2574 :fade-after (meters 100) :falloff-to (meters 200))
    (sp-item 2575 :falloff-to (meters 8) :flags (sp7))
    )
  )

(defpart 2572
  :init-specs ((:texture (explosion-nebula level-default-sprite))
    (:birth-func 'birth-func-curve)
    (:num 1.0 1.0)
    (:y (meters -0.1))
    (:scale-x (meters 1))
    (:rot-z (degrees -20) (degrees 40))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 0.0)
    (:b 0.0)
    (:a 0.0)
    (:vel-y (meters 0) (meters 0.0033333334))
    (:accel-y (meters 0.00066666666) (meters 0.00066666666))
    (:timer (seconds 0.005))
    (:flags (sp-cpuinfo-flag-3 launch-along-z))
    (:userdata 0.0)
    (:func 'live-func-curve)
    (:conerot-x (degrees -90) (degrees 180))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(if #t
    (set! *range-color-temple-small-torch-flame* (new 'static 'curve-color-fast
                                                   :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                   :ys (new 'static 'inline-array vector 4
                                                     (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
                                                     (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                     (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                     (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                     )
                                                   :one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
                                                   )
          )
    )

(if #t
    (set! *range-alpha-temple-small-torch-flame* (new 'static 'curve2d-fast
                                                   :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                   :ys (new 'static 'vector :x 96.0 :y 255.0 :z 256.0 :w 257.0)
                                                   :one-over-x-deltas (new 'static 'vector :x 159.0 :y 1.0 :z 1.0 :w 1.0)
                                                   )
          )
    )

(if #t
    (set! *range-scale-temple-small-torch-flame-x* (new 'static 'curve2d-fast
                                                     :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                     :ys (new 'static 'vector :x 3.0 :y 5.0 :z 6.0 :w 7.0)
                                                     :one-over-x-deltas (new 'static 'vector :x 2.0 :y 1.0 :z 1.0 :w 1.0)
                                                     )
          )
    )

(if #t
    (set! *range-scale-temple-small-torch-flame-y* (new 'static 'curve2d-fast
                                                     :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                     :ys (new 'static 'vector :x 3.0 :y 7.0 :z 8.0 :w 9.0)
                                                     :one-over-x-deltas (new 'static 'vector :x 4.0 :y 1.0 :z 1.0 :w 1.0)
                                                     )
          )
    )

(if #t
    (set! *r-curve-temple-small-torch-flame* (new 'static 'curve2d-fast
                                               :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                               :ys (new 'static 'vector :x 0.2 :y 1.0 :z 1.0 :w 1.0)
                                               :one-over-x-deltas (new 'static 'vector :x 1.6 :w 1.0)
                                               )
          )
    )

(if #t
    (set! *g-curve-temple-small-torch-flame* (new 'static 'curve2d-fast
                                               :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                               :ys (new 'static 'vector :y 1.0 :z 0.8 :w 0.2)
                                               :one-over-x-deltas (new 'static 'vector :x 2.0 :y -1.0 :z -2.0 :w 1.0)
                                               )
          )
    )

(if #t
    (set! *b-curve-temple-small-torch-flame* (new 'static 'curve2d-fast
                                               :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                               :ys (new 'static 'vector :x 1.0 :y 1.0)
                                               :one-over-x-deltas (new 'static 'vector :y -5.0000005 :w 1.0)
                                               )
          )
    )

(if #t
    (set! *curve-alpha-temple-small-torch-flame* (new 'static 'curve2d-fast
                                                   :xs (new 'static 'vector :y -0.4 :z -0.7 :w -1.0)
                                                   :ys (new 'static 'vector :z 1.0 :w 0.2)
                                                   :one-over-x-deltas (new 'static 'vector :y 3.3333335 :z -2.6666665 :w 1.0)
                                                   )
          )
    )

(if #t
    (set! *curve-temple-small-torch-flame-x* (new 'static 'curve2d-fast
                                               :xs (new 'static 'vector :y -0.5 :z -0.6 :w -1.0)
                                               :ys (new 'static 'vector :x 0.3 :y 0.6 :z 0.5 :w 0.2)
                                               :one-over-x-deltas (new 'static 'vector :x 0.6 :y -1.0 :z -0.75000006 :w 1.0)
                                               )
          )
    )

(if #t
    (set! *curve-temple-small-torch-flame-y* (new 'static 'curve2d-fast
                                               :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                               :ys (new 'static 'vector :x 0.2 :y 0.4 :z 0.5 :w 0.6)
                                               :one-over-x-deltas (new 'static 'vector :x 0.4 :y 0.5 :z 0.3333334 :w 1.0)
                                               )
          )
    )

(define *part-temple-small-torch-flame-curve-settings* (new 'static 'particle-curve-settings
                                                         :lifetime-base (seconds 0.1)
                                                         :lifetime-offset (seconds 0.4)
                                                         :flags (particle-curve-flags pcf1)
                                                         )
        )

(set! (-> *part-id-table* 2572 init-specs 15 initial-valuef)
      (the-as float *part-temple-small-torch-flame-curve-settings*)
      )

(set! (-> *part-temple-small-torch-flame-curve-settings* color-start) *range-color-temple-small-torch-flame*)

(set! (-> *part-temple-small-torch-flame-curve-settings* alpha-start) *range-alpha-temple-small-torch-flame*)

(set! (-> *part-temple-small-torch-flame-curve-settings* scale-x-start)
      *range-scale-temple-small-torch-flame-x*
      )

(set! (-> *part-temple-small-torch-flame-curve-settings* scale-y-start)
      *range-scale-temple-small-torch-flame-y*
      )

(set! (-> *part-temple-small-torch-flame-curve-settings* r-scalar) *r-curve-temple-small-torch-flame*)

(set! (-> *part-temple-small-torch-flame-curve-settings* g-scalar) *g-curve-temple-small-torch-flame*)

(set! (-> *part-temple-small-torch-flame-curve-settings* b-scalar) *b-curve-temple-small-torch-flame*)

(set! (-> *part-temple-small-torch-flame-curve-settings* a-scalar) *curve-alpha-temple-small-torch-flame*)

(set! (-> *part-temple-small-torch-flame-curve-settings* scale-x-scalar) *curve-temple-small-torch-flame-x*)

(set! (-> *part-temple-small-torch-flame-curve-settings* scale-y-scalar) *curve-temple-small-torch-flame-y*)

(defpart 2573
  :init-specs ((:texture (glow level-default-sprite))
    (:num 0.4)
    (:y (meters 1))
    (:scale-x (meters 5) (meters 2))
    (:rot-x (degrees 6.7500005))
    (:rot-z (degrees 0) (degrees 3600))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 0.0)
    (:a 15.0 8.0)
    (:omega (degrees 11261.25))
    (:timer (seconds 0.167) (seconds 0.08))
    (:flags (sp-cpuinfo-flag-3 glow set-conerot))
    (:userdata 2048.0)
    (:rotate-y (degrees 0))
    )
  )

(defpart 2575
  :init-specs ((:num 0.3)
    (:x (meters -1) (meters 2))
    (:y (meters 2))
    (:z (meters -1) (meters 2))
    (:rot-x 8)
    (:r 8192.0)
    (:g 4096.0)
    (:b 4096.0)
    (:vel-y (meters 0.0033333334))
    (:fade-b -6.826667)
    (:accel-y (meters 0.001))
    (:timer (seconds 1))
    (:flags (distort))
    (:next-time (seconds 0.5))
    (:next-launcher 2576)
    )
  )

(defpart 2576
  :init-specs ((:fade-b 6.826667))
  )

(defpart 2574
  :init-specs ((:texture (glow-hotdot level-default-sprite))
    (:num 0.005 0.08)
    (:y (meters 0))
    (:scale-x (meters 0.1) (meters 0.2))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 8.0)
    (:a 255.0)
    (:omega (degrees 0.045))
    (:vel-y (meters 0.033333335) (meters 0.033333335))
    (:fade-a -1.7 -1.7)
    (:friction 0.99 0.02)
    (:timer (seconds 1) (seconds 0.497))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 launch-along-z))
    (:func 'sparticle-motion-blur)
    (:conerot-x (degrees -20) (degrees 40))
    (:rotate-y (degrees 0) (degrees 3598.0002))
    (:conerot-radius (meters 1) (meters 2))
    )
  )

(defpartgroup group-templea-small-torch
  :id 666
  :flags (sp0 sp4 sp11)
  :bounds (static-bspherem 0 1 0 6)
  :parts ((sp-item 2577 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp7))
    (sp-item 2578 :fade-after (meters 50) :falloff-to (meters 100) :flags (sp7))
    (sp-item 2579 :fade-after (meters 100) :falloff-to (meters 200))
    (sp-item 2580 :falloff-to (meters 60) :flags (sp7))
    )
  )

(defpart 2577
  :init-specs ((:texture (explosion-nebula level-default-sprite))
    (:birth-func 'birth-func-curve)
    (:num 1.0 1.0)
    (:y (meters -0.1))
    (:scale-x (meters 1))
    (:rot-z (degrees -20) (degrees 40))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 0.0)
    (:b 0.0)
    (:a 0.0)
    (:vel-y (meters 0) (meters 0.0033333334))
    (:accel-y (meters 0.00066666666) (meters 0.00066666666))
    (:timer (seconds 0.005))
    (:flags (sp-cpuinfo-flag-3 launch-along-z))
    (:userdata 0.0)
    (:func 'live-func-curve)
    (:conerot-x (degrees -90) (degrees 180))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(if #t
    (set! *range-color-templea-small-torch-flame* (new 'static 'curve-color-fast
                                                    :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                    :ys (new 'static 'inline-array vector 4
                                                      (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
                                                      (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                      (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                      (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                      )
                                                    :one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
                                                    )
          )
    )

(if #t
    (set! *range-alpha-templea-small-torch-flame* (new 'static 'curve2d-fast
                                                    :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                    :ys (new 'static 'vector :x 96.0 :y 255.0 :z 256.0 :w 257.0)
                                                    :one-over-x-deltas (new 'static 'vector :x 159.0 :y 1.0 :z 1.0 :w 1.0)
                                                    )
          )
    )

(if #t
    (set! *range-scale-templea-small-torch-flame-x* (new 'static 'curve2d-fast
                                                      :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                      :ys (new 'static 'vector :x 2.0 :y 4.0 :z 5.0 :w 6.0)
                                                      :one-over-x-deltas (new 'static 'vector :x 2.0 :y 1.0 :z 1.0 :w 1.0)
                                                      )
          )
    )

(if #t
    (set! *range-scale-templea-small-torch-flame-y* (new 'static 'curve2d-fast
                                                      :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                      :ys (new 'static 'vector :x 3.0 :y 5.0 :z 6.0 :w 7.0)
                                                      :one-over-x-deltas (new 'static 'vector :x 2.0 :y 1.0 :z 1.0 :w 1.0)
                                                      )
          )
    )

(if #t
    (set! *r-curve-templea-small-torch-flame* (new 'static 'curve2d-fast
                                                :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                :ys (new 'static 'vector :x 0.2 :y 1.0 :z 1.0 :w 1.0)
                                                :one-over-x-deltas (new 'static 'vector :x 1.6 :w 1.0)
                                                )
          )
    )

(if #t
    (set! *g-curve-templea-small-torch-flame* (new 'static 'curve2d-fast
                                                :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                :ys (new 'static 'vector :y 1.0 :z 0.8 :w 0.2)
                                                :one-over-x-deltas (new 'static 'vector :x 2.0 :y -1.0 :z -2.0 :w 1.0)
                                                )
          )
    )

(if #t
    (set! *b-curve-templea-small-torch-flame* (new 'static 'curve2d-fast
                                                :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                :ys (new 'static 'vector :x 1.0 :y 1.0)
                                                :one-over-x-deltas (new 'static 'vector :y -5.0000005 :w 1.0)
                                                )
          )
    )

(if #t
    (set! *curve-alpha-templea-small-torch-flame* (new 'static 'curve2d-fast
                                                    :xs (new 'static 'vector :y -0.4 :z -0.7 :w -1.0)
                                                    :ys (new 'static 'vector :z 1.0 :w 0.2)
                                                    :one-over-x-deltas (new 'static 'vector :y 3.3333335 :z -2.6666665 :w 1.0)
                                                    )
          )
    )

(if #t
    (set! *curve-templea-small-torch-flame-x* (new 'static 'curve2d-fast
                                                :xs (new 'static 'vector :y -0.5 :z -0.6 :w -1.0)
                                                :ys (new 'static 'vector :x 0.3 :y 0.6 :z 0.5 :w 0.2)
                                                :one-over-x-deltas (new 'static 'vector :x 0.6 :y -1.0 :z -0.75000006 :w 1.0)
                                                )
          )
    )

(if #t
    (set! *curve-templea-small-torch-flame-y* (new 'static 'curve2d-fast
                                                :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                :ys (new 'static 'vector :x 0.2 :y 0.4 :z 0.5 :w 0.6)
                                                :one-over-x-deltas (new 'static 'vector :x 0.4 :y 0.5 :z 0.3333334 :w 1.0)
                                                )
          )
    )

(define *part-templea-small-torch-flame-curve-settings* (new 'static 'particle-curve-settings
                                                          :lifetime-base (seconds 0.1)
                                                          :lifetime-offset (seconds 0.4)
                                                          :flags (particle-curve-flags pcf1)
                                                          )
        )

(set! (-> *part-id-table* 2577 init-specs 15 initial-valuef)
      (the-as float *part-templea-small-torch-flame-curve-settings*)
      )

(set! (-> *part-templea-small-torch-flame-curve-settings* color-start)
      *range-color-templea-small-torch-flame*
      )

(set! (-> *part-templea-small-torch-flame-curve-settings* alpha-start)
      *range-alpha-templea-small-torch-flame*
      )

(set! (-> *part-templea-small-torch-flame-curve-settings* scale-x-start)
      *range-scale-templea-small-torch-flame-x*
      )

(set! (-> *part-templea-small-torch-flame-curve-settings* scale-y-start)
      *range-scale-templea-small-torch-flame-y*
      )

(set! (-> *part-templea-small-torch-flame-curve-settings* r-scalar) *r-curve-templea-small-torch-flame*)

(set! (-> *part-templea-small-torch-flame-curve-settings* g-scalar) *g-curve-templea-small-torch-flame*)

(set! (-> *part-templea-small-torch-flame-curve-settings* b-scalar) *b-curve-templea-small-torch-flame*)

(set! (-> *part-templea-small-torch-flame-curve-settings* a-scalar) *curve-alpha-templea-small-torch-flame*)

(set! (-> *part-templea-small-torch-flame-curve-settings* scale-x-scalar) *curve-templea-small-torch-flame-x*)

(set! (-> *part-templea-small-torch-flame-curve-settings* scale-y-scalar) *curve-templea-small-torch-flame-y*)

(defpart 2578
  :init-specs ((:texture (glow level-default-sprite))
    (:num 0.4)
    (:y (meters 1))
    (:scale-x (meters 5) (meters 2))
    (:rot-x (degrees 6.7500005))
    (:rot-z (degrees 0) (degrees 3600))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 0.0)
    (:a 24.0 8.0)
    (:omega (degrees 11261.25))
    (:timer (seconds 0.167) (seconds 0.08))
    (:flags (sp-cpuinfo-flag-3 glow set-conerot))
    (:userdata 2048.0)
    (:rotate-y (degrees 0))
    )
  )

(defpart 2580
  :init-specs ((:num 0.3)
    (:x (meters -1) (meters 2))
    (:y (meters 2))
    (:z (meters -1) (meters 2))
    (:rot-x 8)
    (:r 8192.0)
    (:g 4096.0)
    (:b 4096.0)
    (:vel-y (meters 0.0033333334))
    (:fade-b -3.4133334)
    (:accel-y (meters 0.001))
    (:timer (seconds 1))
    (:flags (distort))
    (:next-time (seconds 0.5))
    (:next-launcher 2581)
    )
  )

(defpart 2581
  :init-specs ((:fade-b 3.4133334))
  )

(defpart 2579
  :init-specs ((:texture (glow-hotdot level-default-sprite))
    (:num 0.005 0.08)
    (:y (meters 0))
    (:scale-x (meters 0.1) (meters 0.2))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 8.0)
    (:a 255.0)
    (:omega (degrees 0.045))
    (:vel-y (meters 0.033333335) (meters 0.033333335))
    (:fade-a -1.7 -1.7)
    (:friction 0.99 0.02)
    (:timer (seconds 1) (seconds 0.497))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 launch-along-z))
    (:func 'sparticle-motion-blur)
    (:conerot-x (degrees -20) (degrees 40))
    (:rotate-y (degrees 0) (degrees 3598.0002))
    (:conerot-radius (meters 1) (meters 2))
    )
  )

(defpartgroup group-templea-medium-torch
  :id 667
  :flags (sp0 sp4 sp11)
  :bounds (static-bspherem 0 1 0 6)
  :parts ((sp-item 2582 :fade-after (meters 100) :falloff-to (meters 200) :flags (sp7))
    (sp-item 2583 :fade-after (meters 50) :falloff-to (meters 100) :flags (sp7))
    (sp-item 2584 :fade-after (meters 100) :falloff-to (meters 200))
    (sp-item 2585 :falloff-to (meters 60) :flags (sp7))
    )
  )

(defpart 2582
  :init-specs ((:texture (explosion-nebula level-default-sprite))
    (:birth-func 'birth-func-curve)
    (:num 1.0 1.0)
    (:y (meters -0.1))
    (:scale-x (meters 1))
    (:rot-z (degrees -20) (degrees 40))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 0.0)
    (:b 0.0)
    (:a 0.0)
    (:vel-y (meters 0) (meters 0.0033333334))
    (:accel-y (meters 0.00066666666) (meters 0.00066666666))
    (:timer (seconds 0.005))
    (:flags (sp-cpuinfo-flag-3 launch-along-z))
    (:userdata 0.0)
    (:func 'live-func-curve)
    (:conerot-x (degrees -90) (degrees 180))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(if #t
    (set! *range-color-templea-medium-torch-flame* (new 'static 'curve-color-fast
                                                     :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                     :ys (new 'static 'inline-array vector 4
                                                       (new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
                                                       (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                       (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                       (new 'static 'vector :x 128.0 :y 128.0 :z 128.0 :w 128.0)
                                                       )
                                                     :one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
                                                     )
          )
    )

(if #t
    (set! *range-alpha-templea-medium-torch-flame* (new 'static 'curve2d-fast
                                                     :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                     :ys (new 'static 'vector :x 96.0 :y 255.0 :z 256.0 :w 257.0)
                                                     :one-over-x-deltas (new 'static 'vector :x 159.0 :y 1.0 :z 1.0 :w 1.0)
                                                     )
          )
    )

(if #t
    (set! *range-scale-templea-medium-torch-flame-x* (new 'static 'curve2d-fast
                                                       :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                       :ys (new 'static 'vector :x 3.0 :y 5.0 :z 6.0 :w 7.0)
                                                       :one-over-x-deltas (new 'static 'vector :x 2.0 :y 1.0 :z 1.0 :w 1.0)
                                                       )
          )
    )

(if #t
    (set! *range-scale-templea-medium-torch-flame-y* (new 'static 'curve2d-fast
                                                       :xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
                                                       :ys (new 'static 'vector :x 3.0 :y 5.0 :z 6.0 :w 7.0)
                                                       :one-over-x-deltas (new 'static 'vector :x 2.0 :y 1.0 :z 1.0 :w 1.0)
                                                       )
          )
    )

(if #t
    (set! *r-curve-templea-medium-torch-flame* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                 :ys (new 'static 'vector :x 0.2 :y 1.0 :z 1.0 :w 1.0)
                                                 :one-over-x-deltas (new 'static 'vector :x 1.6 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *g-curve-templea-medium-torch-flame* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                 :ys (new 'static 'vector :y 1.0 :z 0.8 :w 0.2)
                                                 :one-over-x-deltas (new 'static 'vector :x 2.0 :y -1.0 :z -2.0 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *b-curve-templea-medium-torch-flame* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                 :ys (new 'static 'vector :x 1.0 :y 1.0)
                                                 :one-over-x-deltas (new 'static 'vector :y -5.0000005 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *curve-alpha-templea-medium-torch-flame* (new 'static 'curve2d-fast
                                                     :xs (new 'static 'vector :y -0.4 :z -0.7 :w -1.0)
                                                     :ys (new 'static 'vector :z 1.0 :w 0.2)
                                                     :one-over-x-deltas (new 'static 'vector :y 3.3333335 :z -2.6666665 :w 1.0)
                                                     )
          )
    )

(if #t
    (set! *curve-templea-medium-torch-flame-x* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -0.5 :z -0.6 :w -1.0)
                                                 :ys (new 'static 'vector :x 0.3 :y 0.6 :z 0.5 :w 0.2)
                                                 :one-over-x-deltas (new 'static 'vector :x 0.6 :y -1.0 :z -0.75000006 :w 1.0)
                                                 )
          )
    )

(if #t
    (set! *curve-templea-medium-torch-flame-y* (new 'static 'curve2d-fast
                                                 :xs (new 'static 'vector :y -0.5 :z -0.7 :w -1.0)
                                                 :ys (new 'static 'vector :x 0.2 :y 0.4 :z 0.5 :w 0.6)
                                                 :one-over-x-deltas (new 'static 'vector :x 0.4 :y 0.5 :z 0.3333334 :w 1.0)
                                                 )
          )
    )

(define *part-templea-medium-torch-flame-curve-settings* (new 'static 'particle-curve-settings
                                                           :lifetime-base (seconds 0.1)
                                                           :lifetime-offset (seconds 0.4)
                                                           :flags (particle-curve-flags pcf1)
                                                           )
        )

(set! (-> *part-id-table* 2582 init-specs 15 initial-valuef)
      (the-as float *part-templea-medium-torch-flame-curve-settings*)
      )

(set! (-> *part-templea-medium-torch-flame-curve-settings* color-start)
      *range-color-templea-medium-torch-flame*
      )

(set! (-> *part-templea-medium-torch-flame-curve-settings* alpha-start)
      *range-alpha-templea-medium-torch-flame*
      )

(set! (-> *part-templea-medium-torch-flame-curve-settings* scale-x-start)
      *range-scale-templea-medium-torch-flame-x*
      )

(set! (-> *part-templea-medium-torch-flame-curve-settings* scale-y-start)
      *range-scale-templea-medium-torch-flame-y*
      )

(set! (-> *part-templea-medium-torch-flame-curve-settings* r-scalar) *r-curve-templea-medium-torch-flame*)

(set! (-> *part-templea-medium-torch-flame-curve-settings* g-scalar) *g-curve-templea-medium-torch-flame*)

(set! (-> *part-templea-medium-torch-flame-curve-settings* b-scalar) *b-curve-templea-medium-torch-flame*)

(set! (-> *part-templea-medium-torch-flame-curve-settings* a-scalar) *curve-alpha-templea-medium-torch-flame*)

(set! (-> *part-templea-medium-torch-flame-curve-settings* scale-x-scalar)
      *curve-templea-medium-torch-flame-x*
      )

(set! (-> *part-templea-medium-torch-flame-curve-settings* scale-y-scalar)
      *curve-templea-medium-torch-flame-y*
      )

(defpart 2583
  :init-specs ((:texture (glow level-default-sprite))
    (:num 0.4)
    (:y (meters 1))
    (:scale-x (meters 5) (meters 2))
    (:rot-x (degrees 6.7500005))
    (:rot-z (degrees 0) (degrees 3600))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 0.0)
    (:a 24.0 8.0)
    (:omega (degrees 11261.25))
    (:timer (seconds 0.167) (seconds 0.08))
    (:flags (sp-cpuinfo-flag-3 glow set-conerot))
    (:userdata 2048.0)
    (:rotate-y (degrees 0))
    )
  )

(defpart 2585
  :init-specs ((:num 0.3)
    (:x (meters -1) (meters 2))
    (:y (meters 2))
    (:z (meters -1) (meters 2))
    (:rot-x 8)
    (:r 8192.0)
    (:g 4096.0)
    (:b 4096.0)
    (:vel-y (meters 0.0033333334))
    (:fade-b -3.4133334)
    (:accel-y (meters 0.001))
    (:timer (seconds 1))
    (:flags (distort))
    (:next-time (seconds 0.5))
    (:next-launcher 2586)
    )
  )

(defpart 2586
  :init-specs ((:fade-b 3.4133334))
  )

(defpart 2584
  :init-specs ((:texture (glow-hotdot level-default-sprite))
    (:num 0.005 0.08)
    (:y (meters 0))
    (:scale-x (meters 0.1) (meters 0.2))
    (:scale-y :copy scale-x)
    (:r 64.0)
    (:g 32.0)
    (:b 8.0)
    (:a 255.0)
    (:omega (degrees 0.045))
    (:vel-y (meters 0.033333335) (meters 0.033333335))
    (:fade-a -1.7 -1.7)
    (:friction 0.99 0.02)
    (:timer (seconds 1) (seconds 0.497))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 launch-along-z))
    (:func 'sparticle-motion-blur)
    (:conerot-x (degrees -20) (degrees 40))
    (:rotate-y (degrees 0) (degrees 3598.0002))
    (:conerot-radius (meters 1) (meters 2))
    )
  )

(defun birth-func-temple-shaft-camera-orient ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo))
  (local-vars (v1-0 float) (v1-1 float))
  (rlet ((vf0 :class vf)
         (vf1 :class vf)
         (vf2 :class vf)
         )
    (init-vf0-vector)
    (let ((s5-1
            (forward-up-nopitch->quaternion (new 'stack-no-clear 'quaternion) (-> (math-camera-matrix) fvec) *up-vector*)
            )
          )
      (quaternion-rotate-x! s5-1 s5-1 -16384.0)
      (cond
        ((< (-> s5-1 w) 0.0)
         (.lvf vf1 (&-> arg2 conerot quad))
         (.lvf vf2 (&-> s5-1 quad))
         (.sub.vf.xyz vf1 vf0 vf2)
         (.svf (&-> arg2 conerot quad) vf1)
         (.mov v1-0 vf1)
         )
        (else
          (.lvf vf1 (&-> arg2 conerot quad))
          (.lvf vf2 (&-> s5-1 quad))
          (.add.vf.xyz vf1 vf0 vf2)
          (.svf (&-> arg2 conerot quad) vf1)
          (.mov v1-1 vf1)
          )
        )
      )
    0
    (none)
    )
  )

(defpartgroup group-temple-light-shaft
  :id 668
  :bounds (static-bspherem 0 -30 0 200)
  :parts ((sp-item 2587 :flags (is-3d sp6))
    (sp-item 2588 :flags (sp6))
    (sp-item 2589 :fade-after (meters 50) :falloff-to (meters 80))
    (sp-item 2590 :period (seconds 0.5) :length (seconds 0.017))
    )
  )

(defpart 2589
  :init-specs ((:texture (hotdot level-default-sprite))
    (:num 1.0 5.0)
    (:x (meters 0) (meters 6))
    (:y (meters 0) (meters -40))
    (:scale-x (meters 0.1) (meters 0.2))
    (:scale-y :copy scale-x)
    (:r 0.0 2.0 255.0)
    (:g 0.0 2.0 255.0)
    (:b 0.0 2.0 255.0)
    (:a 0.0)
    (:vel-y (meters -0.0016666667) (meters 0.0033333334))
    (:fade-a 0.21333334)
    (:timer (seconds 10))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:next-time (seconds 0.5) (seconds 0.497))
    (:next-launcher 2591)
    (:conerot-x (degrees 0) (degrees 90))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(defpart 2591
  :init-specs ((:fade-a 0.0) (:next-time (seconds 0.5) (seconds 1.665)) (:next-launcher 2592))
  )

(defpart 2592
  :init-specs ((:fade-a -0.21333334))
  )

(defpart 2587
  :init-specs ((:texture (vol-light level-default-sprite))
    (:birth-func 'birth-func-camera-orient)
    (:num 1.0)
    (:y (meters 0))
    (:scale-x (meters 15))
    (:rot-x (degrees 0))
    (:rot-y (degrees 0))
    (:rot-z (degrees 0))
    (:scale-y (meters 80))
    (:r 128.0)
    (:g 128.0)
    (:b 255.0)
    (:a 200.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2590
  :init-specs ((:texture (colorflash level-default-sprite))
    (:num 1.0)
    (:y (meters 40))
    (:scale-x (meters 10))
    (:rot-y (degrees 0) (degrees 3600))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 128.0)
    (:b 128.0)
    (:a 0.0)
    (:scalevel-x (meters 0.016666668) (meters 0.06666667))
    (:scalevel-y :copy scalevel-x)
    (:fade-a 0.042666666)
    (:timer (seconds 5))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:next-time (seconds 0.835) (seconds 1.665))
    (:next-launcher 2593)
    (:rotate-y (degrees 0))
    )
  )

(defpart 2593
  :init-specs ((:fade-a -0.042666666))
  )

(defpart 2588
  :init-specs ((:texture (glow-soft level-default-sprite))
    (:num 1.0)
    (:y (meters -35))
    (:scale-x (meters 15) (meters 0.1))
    (:rot-x (degrees 225))
    (:scale-y (meters 30) (meters 0.1))
    (:r 200.0)
    (:g 200.0)
    (:b 255.0)
    (:a 30.0 1.0)
    (:omega (degrees 4511.25))
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 4096.0)
    )
  )

(defpartgroup group-tpl-watcher-exhaust-distort
  :id 669
  :duration (seconds 0.017)
  :flags (sp0 sp7)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 2594 :fade-after (meters 60) :falloff-to (meters 60) :flags (sp7)))
  )

(defpart 2594
  :init-specs ((:num 1.0)
    (:rot-x 8)
    (:r 1638.4)
    (:g 1331.2)
    (:b 1433.6)
    (:vel-y (meters -0.1) (meters -0.016666668))
    (:fade-r 32.768)
    (:fade-g 26.623999)
    (:fade-b 28.671999)
    (:accel-x (meters 0) (meters 0.0033333334))
    (:friction 0.83)
    (:timer (seconds 0.335))
    (:flags (distort))
    (:next-time (seconds 0.167))
    (:next-launcher 2595)
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(defpart 2595
  :init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b -4.096))
  )

(defpartgroup group-tpl-watcher-laser-glow
  :id 670
  :bounds (static-bspherem 0 0 0 1)
  :parts ((sp-item 2596 :flags (sp6)) (sp-item 2597 :flags (sp6)))
  )

(defpart 2597
  :init-specs ((:texture (glow level-default-sprite))
    (:birth-func 'birth-func-set-alpha-from-userdata)
    (:num 1.0)
    (:scale-x (meters 0.7) (meters 0.1))
    (:rot-x (degrees 1.125))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 32.0 8.0)
    (:b 255.0)
    (:a 50.0 10.0)
    (:rotvel-z (degrees 0.3))
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 1.0)
    )
  )

(defpart 2596
  :init-specs ((:texture (glow level-default-sprite))
    (:birth-func 'birth-func-set-alpha-from-userdata)
    (:num 1.0)
    (:scale-x (meters 0.25) (meters 0.01))
    (:rot-x (degrees 1.125))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 255.0)
    (:b 255.0)
    (:a 64.0 5.0)
    (:rotvel-z (degrees 0.3))
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 glow))
    (:userdata 1.0)
    )
  )

(defpartgroup group-tpl-watcher-laser-charge
  :id 671
  :flags (sp12)
  :bounds (static-bspherem 0 0 0 1)
  :parts ((sp-item 2598 :flags (sp6)) (sp-item 2599 :flags (sp6)) (sp-item 2600))
  )

(defpart 2598
  :init-specs ((:texture (glow level-default-sprite))
    (:birth-func 'birth-func-set-alpha-from-userdata)
    (:num 1.0)
    (:scale-x (meters 2) (meters 0.1))
    (:rot-x (degrees 1.125))
    (:scale-y :copy scale-x)
    (:r 0.0)
    (:g 32.0 8.0)
    (:b 255.0)
    (:a 50.0 10.0)
    (:rotvel-z (degrees 0.3))
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 1.0)
    )
  )

(defpart 2599
  :init-specs ((:texture (glow level-default-sprite))
    (:birth-func 'birth-func-set-alpha-from-userdata)
    (:num 1.0)
    (:scale-x (meters 0.5) (meters 0.01))
    (:rot-x (degrees 1.125))
    (:scale-y :copy scale-x)
    (:r 128.0)
    (:g 255.0)
    (:b 255.0)
    (:a 64.0 5.0)
    (:rotvel-z (degrees 0.3))
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 glow))
    (:userdata 1.0)
    )
  )

(defpart 2600
  :init-specs ((:texture (laser-hit2 level-default-sprite))
    (:birth-func 'birth-func-set-alpha-from-userdata)
    (:num 1.0)
    (:scale-x (meters 5) (meters 0.1))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 0.0 1 128.0)
    (:g :copy r)
    (:b 255.0)
    (:a 0.0)
    (:scalevel-x (meters -0.033333335))
    (:scalevel-y :copy scalevel-x)
    (:fade-a 0.4)
    (:timer (seconds 0.5))
    (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    (:userdata 1.0)
    (:func 'spt-func-relative-pos)
    )
  )

(defpartgroup group-tpl-watcher-explosion
  :id 672
  :duration (seconds 4)
  :flags (sp0 sp5)
  :bounds (static-bspherem 0 0 0 15)
  :parts ((sp-item 2601 :flags (sp3) :period (seconds 30) :length (seconds 0.017))
    (sp-item 2602 :period (seconds 30) :length (seconds 0.035))
    (sp-item 2603 :period (seconds 30) :length (seconds 0.035))
    )
  )

(defpart 2601
  :init-specs ((:texture (glow-soft level-default-sprite))
    (:num 1.0)
    (:y (meters 2))
    (:scale-x (meters 10))
    (:rot-x (degrees 225))
    (:scale-y :copy scale-x)
    (:r 40.0)
    (:g 180.0)
    (:b 220.0)
    (:a 64.0)
    (:fade-a -0.42666668)
    (:timer (seconds 0.5))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
    (:userdata 40960.0)
    )
  )

(defpart 2602
  :init-specs ((:texture (hotdot level-default-sprite))
    (:num 50.0)
    (:y (meters 2))
    (:scale-x (meters 0.4) (meters 0.6))
    (:scale-y :copy scale-x)
    (:r 30.0)
    (:g 78.0)
    (:b 178.0)
    (:a 128.0)
    (:vel-y (meters 0.033333335) (meters 0.06666667))
    (:scalevel-x (meters -0.0026666666))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.28444445 -0.28444445)
    (:accel-y (meters -0.0016666667))
    (:friction 0.9)
    (:timer (seconds 1.5))
    (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3))
    (:conerot-x (degrees 0) (degrees 360))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(defpart 2603
  :init-specs ((:texture (dust-sparkle templea-sprite))
    (:num 10.0 10.0)
    (:y (meters 2))
    (:scale-x (meters 2) (meters 4))
    (:rot-z (degrees 0) (degrees 360))
    (:scale-y :copy scale-x)
    (:r 30.0)
    (:g 78.0)
    (:b 178.0)
    (:a 128.0)
    (:vel-y (meters 0.016666668) (meters 0.1))
    (:scalevel-x (meters 0.06666667))
    (:rotvel-z (degrees -0.2) (degrees 0.4))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.85333335 -0.85333335)
    (:accel-y (meters -0.0013333333))
    (:friction 0.75)
    (:timer (seconds 0.5))
    (:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3))
    (:conerot-x (degrees 0) (degrees 360))
    (:rotate-y (degrees 0) (degrees 3600))
    )
  )

(defpartgroup group-tpl-break-door-a
  :id 673
  :flags (sp0 sp4)
  :bounds (static-bspherem 0 -30 0 200)
  :parts ((sp-item 2604 :flags (is-3d sp6 sp7))
    (sp-item 2605 :flags (is-3d sp6 sp7))
    (sp-item 2606 :flags (is-3d sp6 sp7))
    (sp-item 2607 :flags (is-3d sp6 sp7))
    (sp-item 2608 :fade-after (meters 50) :falloff-to (meters 80) :flags (sp7))
    )
  )

(defpart 2604
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters 1.8))
    (:y (meters 5.3))
    (:z (meters -3))
    (:scale-x (meters 4))
    (:rot-x (degrees 180))
    (:rot-y (degrees 0))
    (:rot-z (degrees 35))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2605
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters -1.8))
    (:y (meters 5.3))
    (:z (meters -3))
    (:scale-x (meters 4))
    (:rot-x (degrees 180))
    (:rot-y (degrees 0))
    (:rot-z (degrees -35))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2606
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters 1.8))
    (:y (meters 3.8))
    (:z (meters -3))
    (:scale-x (meters 4))
    (:rot-x (degrees 180))
    (:rot-y (degrees 0))
    (:rot-z (degrees 35))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2607
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters -0.7))
    (:y (meters 4.4))
    (:z (meters -3))
    (:scale-x (meters 4))
    (:rot-x (degrees 180))
    (:rot-y (degrees 0))
    (:rot-z (degrees -55))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2608
  :init-specs ((:texture (dust-sparkle templea-sprite))
    (:num 0.05)
    (:x (meters -3) (meters 6))
    (:y (meters 10))
    (:z (meters -2) (meters 4))
    (:scale-x (meters 2.5))
    (:scale-y :copy scale-x)
    (:r 160.0)
    (:g 150.0)
    (:b 95.0)
    (:a 0.0)
    (:fade-a 1.28)
    (:accel-y (meters -0.001))
    (:friction 0.95)
    (:timer (seconds 10))
    (:flags (sp-cpuinfo-flag-2))
    (:next-time (seconds 0.335))
    (:next-launcher 2609)
    )
  )

(defpart 2609
  :init-specs ((:fade-a -0.17 -0.17))
  )

(defpartgroup group-tpl-break-door-explode
  :id 674
  :flags (sp0 sp4)
  :bounds (static-bspherem 0 0 0 20)
  :parts ((sp-item 2610 :flags (sp7)))
  )

(defpart 2610
  :init-specs ((:texture (big-cloud level-default-sprite))
    (:num 150.0)
    (:x (meters -12) (meters 24))
    (:y (meters 5) (meters 15))
    (:scale-x (meters 3) (meters 3))
    (:rot-z (degrees -90))
    (:scale-y :copy scale-x)
    (:r 80.0)
    (:g 60.0)
    (:b 40.0)
    (:a 64.0 64.0)
    (:scalevel-x (meters 0.0033333334) (meters 0.0033333334))
    (:rotvel-z (degrees -0.1) (degrees 0.2))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.21333334)
    (:accel-y (meters -0.001))
    (:friction 0.9)
    (:timer (seconds 2))
    (:flags (sp-cpuinfo-flag-2))
    (:rotate-y (degrees 0))
    )
  )

(defpartgroup group-tpl-break-alcove
  :id 675
  :flags (sp0 sp4)
  :bounds (static-bspherem 0 0 0 20)
  :parts ((sp-item 2611 :flags (is-3d sp6 sp7))
    (sp-item 2612 :flags (is-3d sp6 sp7))
    (sp-item 2613 :flags (is-3d sp6 sp7))
    (sp-item 2614 :flags (is-3d sp6 sp7))
    (sp-item 2615 :fade-after (meters 50) :falloff-to (meters 80) :flags (sp7))
    )
  )

(defpart 2611
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters -3))
    (:y (meters 6))
    (:z (meters 0.75))
    (:scale-x (meters 6))
    (:rot-x (degrees 180))
    (:rot-y (degrees 90))
    (:rot-z (degrees 65))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2612
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters -3))
    (:y (meters 6))
    (:z (meters -0.2))
    (:scale-x (meters 5))
    (:rot-x (degrees 180))
    (:rot-y (degrees 90))
    (:rot-z (degrees -80))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2613
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters -2.5))
    (:y (meters 4.77))
    (:z (meters 0.5))
    (:scale-x (meters 3))
    (:rot-x (degrees 180))
    (:rot-y (degrees 90))
    (:rot-z (degrees 33))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2614
  :init-specs ((:texture (vol-light level-default-sprite))
    (:num 1.0)
    (:x (meters -3))
    (:y (meters 4.4))
    (:z (meters 0))
    (:scale-x (meters 7))
    (:rot-x (degrees 180))
    (:rot-y (degrees 90))
    (:rot-z (degrees -55))
    (:scale-y (meters 6))
    (:r 128.0)
    (:g 100.0)
    (:b 64.0)
    (:a 40.0)
    (:timer (seconds 0.017))
    (:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
    )
  )

(defpart 2615
  :init-specs ((:texture (dust-sparkle templea-sprite))
    (:num 0.05)
    (:x (meters -2) (meters 4))
    (:y (meters 10))
    (:z (meters -3) (meters 6))
    (:scale-x (meters 2.5))
    (:scale-y :copy scale-x)
    (:r 160.0)
    (:g 150.0)
    (:b 95.0)
    (:a 0.0)
    (:fade-a 1.28)
    (:accel-y (meters -0.001))
    (:friction 0.95)
    (:timer (seconds 10))
    (:flags (sp-cpuinfo-flag-2))
    (:next-time (seconds 0.335))
    (:next-launcher 2616)
    )
  )

(defpart 2616
  :init-specs ((:fade-a -0.17 -0.17))
  )

(defpartgroup group-tpl-break-alcove-explode
  :id 676
  :flags (sp0 sp4)
  :bounds (static-bspherem 0 0 0 20)
  :parts ((sp-item 2617 :flags (sp7) :period (seconds 20) :length (seconds 2)))
  )

(defpart 2617
  :init-specs ((:texture (big-cloud level-default-sprite))
    (:num 50.0)
    (:x (meters -12) (meters 24))
    (:y (meters 0) (meters 15))
    (:scale-x (meters 3) (meters 3))
    (:rot-z (degrees -90))
    (:scale-y :copy scale-x)
    (:r 80.0)
    (:g 60.0)
    (:b 40.0)
    (:a 64.0 64.0)
    (:scalevel-x (meters 0.0033333334) (meters 0.0033333334))
    (:rotvel-z (degrees -0.1) (degrees 0.2))
    (:scalevel-y :copy scalevel-x)
    (:fade-a -0.21333334)
    (:accel-y (meters -0.001) (meters -0.00066666666))
    (:friction 0.9)
    (:timer (seconds 2))
    (:flags (sp-cpuinfo-flag-2))
    (:rotate-y (degrees 0))
    )
  )
