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

;; failed to figure out what this is:
(defpartgroup group-rain-screend-drop-real
  :id 188
  :flags (screen-space)
  :bounds (static-bspherem 0 0 0 16)
  :parts ((sp-item 18 :binding 19)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 19 :flags (start-dead launch-asap) :binding 20)
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 20 :flags (start-dead launch-asap))
    (sp-item 21 :binding 22)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 22 :flags (start-dead launch-asap) :binding 23)
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    (sp-item 23 :flags (start-dead launch-asap))
    )
  )

;; definition for symbol group-rain-screend-drop, type sparticle-launch-group
(define group-rain-screend-drop (-> *part-group-id-table* 188))

;; failed to figure out what this is:
(defpart 21
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 0.1)
    (sp-rnd-flt spt-x (meters -4.5) (meters 9) 1.0)
    (sp-rnd-flt spt-y (meters -3) (meters 6) 1.0)
    (sp-flt spt-scale-x (meters 2.5))
    (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 128.0)
    (sp-flt spt-g 128.0)
    (sp-flt spt-b 128.0)
    (sp-flt spt-a 12.0)
    (sp-flt spt-scalevel-x (meters 0.16666667))
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.8)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    )
  )

;; failed to figure out what this is:
(defpart 22
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 1.5))
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 128.0)
    (sp-flt spt-g 128.0)
    (sp-flt spt-b 255.0)
    (sp-flt spt-a 20.0)
    (sp-flt spt-scalevel-x (meters 0.033333335))
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.8)
    (sp-flt spt-accel-y -2.7306666)
    (sp-int spt-timer 270)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-int spt-next-time 15)
    (sp-launcher-by-id spt-next-launcher 24)
    )
  )

;; failed to figure out what this is:
(defpart 24
  :init-specs ((sp-flt spt-scalevel-x (meters 0.004166667))
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.06666667)
    )
  )

;; failed to figure out what this is:
(defpart 23
  :init-specs ((sp-flt spt-num 1.0)
    (sp-int spt-rot-x 12)
    (sp-flt spt-r 4096.0)
    (sp-flt spt-g 3276.8)
    (sp-flt spt-b 3276.8)
    (sp-flt spt-fade-r 6.068148)
    (sp-flt spt-fade-g 68.26667)
    (sp-flt spt-fade-b 3.034074)
    (sp-flt spt-accel-y -2.7306666)
    (sp-int spt-timer 270)
    (sp-cpuinfo-flags aux-list)
    (sp-int spt-next-time 30)
    (sp-launcher-by-id spt-next-launcher 25)
    )
  )

;; failed to figure out what this is:
(defpart 25
  :init-specs ((sp-flt spt-fade-g -5.1200004))
  )

;; failed to figure out what this is:
(defpart 18
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
    (sp-flt spt-num 0.1)
    (sp-rnd-flt spt-x (meters -4.5) (meters 9) 1.0)
    (sp-rnd-flt spt-y (meters -3) (meters 6) 1.0)
    (sp-flt spt-scale-x (meters 4))
    (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 128.0)
    (sp-flt spt-g 128.0)
    (sp-flt spt-b 128.0)
    (sp-flt spt-a 12.0)
    (sp-flt spt-scalevel-x (meters 0.26666668))
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.8)
    (sp-int spt-timer 10)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    )
  )

;; failed to figure out what this is:
(defpart 19
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 2.6))
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 128.0)
    (sp-flt spt-g 128.0)
    (sp-flt spt-b 255.0)
    (sp-flt spt-a 20.0)
    (sp-flt spt-scalevel-x (meters 0.06666667))
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.8)
    (sp-flt spt-accel-y -2.7306666)
    (sp-int spt-timer 270)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-int spt-next-time 15)
    (sp-launcher-by-id spt-next-launcher 26)
    )
  )

;; failed to figure out what this is:
(defpart 26
  :init-specs ((sp-flt spt-scalevel-x (meters 0.008333334))
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.06666667)
    )
  )

;; failed to figure out what this is:
(defpart 20
  :init-specs ((sp-flt spt-num 1.0)
    (sp-int spt-rot-x 24)
    (sp-flt spt-r 12288.0)
    (sp-flt spt-g 6553.6)
    (sp-flt spt-b 6553.6)
    (sp-flt spt-fade-r 12.136296)
    (sp-flt spt-fade-g 136.53334)
    (sp-flt spt-fade-b 6.068148)
    (sp-flt spt-accel-y -2.7306666)
    (sp-int spt-timer 270)
    (sp-cpuinfo-flags aux-list)
    (sp-int spt-next-time 30)
    (sp-launcher-by-id spt-next-launcher 27)
    )
  )

;; failed to figure out what this is:
(defpart 27
  :init-specs ((sp-flt spt-fade-g -10.240001))
  )

;; failed to figure out what this is:
(defpartgroup group-stars
  :id 34
  :flags (always-draw)
  :bounds (static-bspherem 0 0 0 8)
  :parts ((sp-item 28) (sp-item 29) (sp-item 30))
  )

;; failed to figure out what this is:
(defpart 28
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 1.0)
    (sp-rnd-flt spt-scale-x (meters 40) (meters 40) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 256.0)
    (sp-flt spt-g 256.0)
    (sp-flt spt-b 256.0)
    (sp-flt spt-a 0.0)
    (sp-flt spt-fade-a 0.42666668)
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-int-plain-rnd spt-next-time 60 239 1)
    (sp-launcher-by-id spt-next-launcher 31)
    (sp-rnd-flt spt-conerot-x (degrees -89.0) (degrees 178.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 1440.0) 1.0)
    (sp-flt spt-conerot-radius (meters 5000))
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 31
  :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 29999700) (sp-launcher-by-id spt-next-launcher 32))
  )

;; failed to figure out what this is:
(defpart 32
  :init-specs ((sp-flt spt-fade-a -0.42666668))
  )

;; failed to figure out what this is:
(defpart 29
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 1.0)
    (sp-rnd-flt spt-scale-x (meters 40) (meters 40) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 256.0)
    (sp-flt spt-g 256.0)
    (sp-flt spt-b 256.0)
    (sp-flt spt-a 0.0)
    (sp-flt spt-fade-a 0.42666668)
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-int-plain-rnd spt-next-time 60 239 1)
    (sp-launcher-by-id spt-next-launcher 31)
    (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 59.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 2880.0) 1.0)
    (sp-flt spt-conerot-radius (meters 5000))
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 30
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 1.0)
    (sp-rnd-flt spt-scale-x (meters 40) (meters 40) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 128.0)
    (sp-flt spt-g 128.0)
    (sp-flt spt-b 128.0)
    (sp-flt spt-a 0.0)
    (sp-flt spt-fade-a 0.42666668)
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-int-plain-rnd spt-next-time 60 239 1)
    (sp-launcher-by-id spt-next-launcher 31)
    (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 29.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 5760.0) 1.0)
    (sp-flt spt-conerot-radius (meters 5000))
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 33
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 4.0)
    (sp-rnd-flt spt-x (meters 10) (meters 10) 1.0)
    (sp-rnd-flt spt-y (meters 2) (meters 14) 1.0)
    (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0)
    (sp-int spt-rot-x 4)
    (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 255.0)
    (sp-flt spt-g 255.0)
    (sp-flt spt-b 255.0)
    (sp-flt spt-a 0.0)
    (sp-rnd-flt spt-vel-y (meters -0.01) (meters -0.0033333334) 1.0)
    (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
    (sp-flt spt-fade-a 0.85333335)
    (sp-int spt-timer 1500)
    (sp-cpuinfo-flags bit2 bit12 bit14)
    (sp-int-plain-rnd spt-next-time 75 74 1)
    (sp-launcher-by-id spt-next-launcher 35)
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 34
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
    (sp-flt spt-num 0.0)
    (sp-rnd-flt spt-x (meters 0) (meters 20) 1.0)
    (sp-flt spt-y (meters 16))
    (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0)
    (sp-int spt-rot-x 4)
    (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 255.0)
    (sp-flt spt-g 255.0)
    (sp-flt spt-b 255.0)
    (sp-flt spt-a 0.0)
    (sp-rnd-flt spt-vel-y (meters -0.01) (meters -0.0033333334) 1.0)
    (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
    (sp-flt spt-fade-a 0.85333335)
    (sp-int spt-timer 1500)
    (sp-cpuinfo-flags bit2 bit12 bit14)
    (sp-int-plain-rnd spt-next-time 75 74 1)
    (sp-launcher-by-id spt-next-launcher 35)
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 35
  :init-specs ((sp-flt spt-fade-a 0.0) (sp-int spt-next-time 1200) (sp-launcher-by-id spt-next-launcher 36))
  )

;; failed to figure out what this is:
(defpart 36
  :init-specs ((sp-flt spt-fade-a -0.85333335))
  )

;; definition for function update-snow
;; INFO: Return type mismatch int vs none.
(defun update-snow ((arg0 target))
  (let ((gp-0 (-> arg0 control trans)))
    (let ((f0-0 (lerp-scale 0.0 1.0 (vector-length (-> arg0 control transv)) 2048.0 40960.0)))
      (set! (-> *part-id-table* 34 init-specs 1 initial-valuef) (- 1.0 f0-0))
      (set! (-> *part-id-table* 33 init-specs 1 initial-valuef) (* 4.0 f0-0))
      )
    (set! (-> *part-id-table* 33 init-specs 19 initial-valuef)
          (+ 32768.0 (vector-y-angle (-> arg0 control transv)))
          )
    (sp-launch-particles-var
      *sp-particle-system-2d*
      (-> *part-id-table* 34)
      gp-0
      (the-as sparticle-launch-state #f)
      (the-as sparticle-launch-control #f)
      1.0
      )
    (sp-launch-particles-var
      *sp-particle-system-2d*
      (-> *part-id-table* 33)
      gp-0
      (the-as sparticle-launch-state #f)
      (the-as sparticle-launch-control #f)
      1.0
      )
    )
  0
  (none)
  )

;; failed to figure out what this is:
(defpart 37
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
    (sp-flt spt-num 1.5)
    (sp-rnd-flt spt-x (meters 0) (meters 20) 1.0)
    (sp-flt spt-y (meters 16))
    (sp-rnd-flt spt-scale-x (meters 0.03) (meters 0.03) 1.0)
    (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.5) 1.0)
    (sp-flt spt-r 50.0)
    (sp-rnd-flt spt-g 80.0 55.0 1.0)
    (sp-rnd-flt spt-b 50.0 50.0 1.0)
    (sp-rnd-flt spt-a 16.0 32.0 1.0)
    (sp-rnd-flt spt-vel-y (meters -0.06666667) (meters -0.13333334) 1.0)
    (sp-int spt-timer 240)
    (sp-cpuinfo-flags bit2 bit14)
    (sp-flt spt-userdata 0.0)
    (sp-func spt-func 'check-drop-level-rain)
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 38
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
    (sp-flt spt-num 4.5)
    (sp-rnd-flt spt-x (meters 0) (meters 20) 1.0)
    (sp-flt spt-y (meters 16))
    (sp-rnd-flt spt-scale-x (meters 0.03) (meters 0.03) 1.0)
    (sp-rnd-flt spt-scale-y (meters 0.5) (meters 0.5) 1.0)
    (sp-flt spt-r 50.0)
    (sp-rnd-flt spt-g 80.0 55.0 1.0)
    (sp-rnd-flt spt-b 50.0 50.0 1.0)
    (sp-rnd-flt spt-a 16.0 32.0 1.0)
    (sp-rnd-flt spt-vel-y (meters -0.06666667) (meters -0.033333335) 1.0)
    (sp-int spt-timer 240)
    (sp-cpuinfo-flags bit2 bit14)
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 39
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
    (sp-rnd-int spt-num 0 1 2.0)
    (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.075) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-rnd-flt spt-r 110.0 32.0 1.0)
    (sp-rnd-flt spt-g 128.0 32.0 1.0)
    (sp-rnd-flt spt-b 64.0 64.0 1.0)
    (sp-rnd-flt spt-a 64.0 64.0 1.0)
    (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0)
    (sp-flt spt-fade-a -0.85333335)
    (sp-flt spt-accel-y -2.7306666)
    (sp-int spt-timer 150)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-rnd-flt spt-conerot-x (degrees 25.000002) (degrees 40.0) 1.0)
    (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; failed to figure out what this is:
(defpart 40
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-y (meters 0.02))
    (sp-rnd-flt spt-scale-x (meters 1) (meters 1) 1.0)
    (sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0)
    (sp-copy-from-other spt-scale-y -4)
    (sp-rnd-flt spt-r 110.0 32.0 1.0)
    (sp-rnd-flt spt-g 128.0 32.0 1.0)
    (sp-rnd-flt spt-b 96.0 32.0 1.0)
    (sp-rnd-flt spt-a 16.0 32.0 1.0)
    (sp-rnd-flt spt-scalevel-x (meters 0.006666667) (meters 0.006666667) 1.0)
    (sp-copy-from-other spt-scalevel-y -4)
    (sp-flt spt-fade-a -0.4)
    (sp-int spt-timer 120)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
    )
  )

;; definition for function check-drop-level-rain
(defun check-drop-level-rain ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
  (when (< (-> arg2 y) (-> arg1 user-float))
    (let ((gp-0 (new 'stack-no-clear 'vector)))
      (sp-kill-particle arg0 arg1)
      (set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0)
      (sp-launch-particles-var
        *sp-particle-system-2d*
        (-> *part-id-table* 39)
        gp-0
        (the-as sparticle-launch-state #f)
        (the-as sparticle-launch-control #f)
        1.0
        )
      (sp-launch-particles-var
        *sp-particle-system-3d*
        (-> *part-id-table* 40)
        gp-0
        (the-as sparticle-launch-state #f)
        (the-as sparticle-launch-control #f)
        1.0
        )
      )
    )
  (none)
  )

;; definition for function update-rain
;; INFO: Return type mismatch int vs none.
(defun update-rain ((arg0 target))
  (let ((a2-0 (new 'stack-no-clear 'vector)))
    (set! (-> a2-0 x) (-> arg0 control transv x))
    (set! (-> a2-0 y) 0.0)
    (set! (-> a2-0 z) (-> arg0 control transv z))
    (set! (-> a2-0 w) 1.0)
    (let ((gp-0 (vector+float*! (new 'stack-no-clear 'vector) (-> arg0 control trans) a2-0 0.0)))
      (let* ((s5-0 (matrix-local->world #f #f))
             (f28-0 (lerp-scale 122.88 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7))
             (f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7))
             )
        (let ((f26-0 (lerp-scale 0.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7))
              (f0-10 (lerp-scale 1.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7))
              )
          (if (< 0.0 f26-0)
              (send-event *camera* 'part-water-drip f26-0 f0-10)
              )
          )
        (set! (-> *part-id-table* 37 init-specs 4 initial-valuef) f28-0)
        (set! (-> *part-id-table* 37 init-specs 4 random-rangef) f28-0)
        (set! (-> *part-id-table* 38 init-specs 4 initial-valuef) f28-0)
        (set! (-> *part-id-table* 38 init-specs 4 random-rangef) f28-0)
        (set! (-> *part-id-table* 37 init-specs 5 initial-valuef) f30-0)
        (set! (-> *part-id-table* 37 init-specs 5 random-rangef) f30-0)
        (set! (-> *part-id-table* 38 init-specs 5 initial-valuef) f30-0)
        (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0)
        )
      (sp-launch-particles-var
        *sp-particle-system-2d*
        (-> *part-id-table* 37)
        gp-0
        (the-as sparticle-launch-state #f)
        (the-as sparticle-launch-control #f)
        1.0
        )
      (sp-launch-particles-var
        *sp-particle-system-2d*
        (-> *part-id-table* 38)
        gp-0
        (the-as sparticle-launch-state #f)
        (the-as sparticle-launch-control #f)
        1.0
        )
      )
    )
  0
  (none)
  )

;; definition for function cam-master-effect
;; INFO: Return type mismatch int vs none.
(defbehavior cam-master-effect camera-master ()
  (when (< (+ (-> *display* base-frame-counter) (seconds -10)) (-> self water-drip-time))
    (set! (-> *part-id-table* 21 init-specs 1 initial-valuef) (-> self water-drip-mult))
    (set! (-> *part-id-table* 18 init-specs 1 initial-valuef) (* 0.9 (-> self water-drip-mult)))
    (set! (-> *part-id-table* 22 init-specs 11 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
    (set! (-> *part-id-table* 23 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
    (set! (-> *part-id-table* 19 init-specs 11 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
    (set! (-> *part-id-table* 20 init-specs 8 initial-valuef) (* -2.7306666 (-> self water-drip-speed)))
    (spawn (-> self water-drip) *zero-vector*)
    )
  0
  (none)
  )

;; definition for function sparticle-track-sun
;; INFO: Return type mismatch int vs none.
(defun sparticle-track-sun ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 matrix))
  (-> arg1 key)
  (let ((s5-0 (the int (-> arg1 user-float))))
    (let* ((a1-1 (math-camera-pos))
           (a2-1 (-> *sky-parms* upload-data sun (/ s5-0 4)))
           (v1-3 (vector+float*! (new 'stack-no-clear 'vector) a1-1 (the-as vector a2-1) 4096.0))
           )
      (set! (-> arg2 vector 0 x) (-> v1-3 x))
      (set! (-> arg2 vector 0 y) (-> v1-3 y))
      (set! (-> arg2 vector 0 z) (-> v1-3 z))
      )
    (if (!= (-> arg2 vector 2 w) 0.0)
        (set! (-> arg2 vector 2 w) (* 128.0 (-> *time-of-day-context* sun-fade)))
        )
    (cond
      ((zero? s5-0)
       (set! (-> arg2 vector 2 x) (-> *time-of-day-context* current-sun sun-color x))
       (set! (-> arg2 vector 2 y) (-> *time-of-day-context* current-sun sun-color y))
       (set! (-> arg2 vector 2 z) (-> *time-of-day-context* current-sun sun-color z))
       )
      ((or (= s5-0 1) (= s5-0 2))
       (set! (-> arg2 vector 2 x) (* 0.25 (-> *time-of-day-context* current-sun sun-color x)))
       (set! (-> arg2 vector 2 y) (* 0.25 (-> *time-of-day-context* current-sun sun-color y)))
       (set! (-> arg2 vector 2 z) (* 0.25 (-> *time-of-day-context* current-sun sun-color z)))
       )
      )
    )
  0
  (none)
  )

;; failed to figure out what this is:
(defpartgroup group-sun
  :id 35
  :flags (always-draw)
  :bounds (static-bspherem 0 0 0 70)
  :parts ((sp-item 1950) (sp-item 1951) (sp-item 1952))
  )

;; failed to figure out what this is:
(defpart 1950
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 1200))
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 255.0)
    (sp-flt spt-g 255.0)
    (sp-flt spt-b 128.0)
    (sp-flt spt-a 128.0)
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit12 bit14)
    (sp-flt spt-userdata 0.0)
    (sp-func spt-func 'sparticle-track-sun)
    )
  )

;; failed to figure out what this is:
(defpart 1951
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 2800))
    (sp-flt spt-rot-z (degrees 0.0))
    (sp-flt spt-scale-y (meters 2200))
    (sp-flt spt-r 64.0)
    (sp-flt spt-g 64.0)
    (sp-flt spt-b 32.0)
    (sp-flt spt-a 128.0)
    (sp-flt spt-rotvel-z (degrees -0.05))
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-flt spt-userdata 1.0)
    (sp-func spt-func 'sparticle-track-sun)
    )
  )

;; failed to figure out what this is:
(defpart 1952
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 2200))
    (sp-flt spt-rot-z (degrees 0.0))
    (sp-flt spt-scale-y (meters 2800))
    (sp-flt spt-r 64.0)
    (sp-flt spt-g 64.0)
    (sp-flt spt-b 32.0)
    (sp-flt spt-a 128.0)
    (sp-flt spt-rotvel-z (degrees 0.05))
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-flt spt-userdata 2.0)
    (sp-func spt-func 'sparticle-track-sun)
    )
  )

;; failed to figure out what this is:
(defpartgroup group-green-sun
  :id 36
  :flags (always-draw)
  :bounds (static-bspherem 0 0 0 70)
  :parts ((sp-item 1974) (sp-item 1975) (sp-item 1976))
  )

;; failed to figure out what this is:
(defpart 1974
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 600))
    (sp-copy-from-other spt-scale-y -4)
    (sp-flt spt-r 0.0)
    (sp-flt spt-g 255.0)
    (sp-flt spt-b 0.0)
    (sp-flt spt-a 0.0)
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-flt spt-userdata 4.0)
    (sp-func spt-func 'sparticle-track-sun)
    )
  )

;; failed to figure out what this is:
(defpart 1975
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 1400))
    (sp-flt spt-rot-z (degrees 0.0))
    (sp-flt spt-scale-y (meters 1100))
    (sp-flt spt-r 0.0)
    (sp-flt spt-g 64.0)
    (sp-flt spt-b 0.0)
    (sp-flt spt-a 128.0)
    (sp-flt spt-rotvel-z (degrees -0.05))
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-flt spt-userdata 5.0)
    (sp-func spt-func 'sparticle-track-sun)
    )
  )

;; failed to figure out what this is:
(defpart 1976
  :init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x35 :page #x2))
    (sp-flt spt-num 1.0)
    (sp-flt spt-scale-x (meters 1100))
    (sp-flt spt-rot-z (degrees 0.0))
    (sp-flt spt-scale-y (meters 1400))
    (sp-flt spt-r 0.0)
    (sp-flt spt-g 64.0)
    (sp-flt spt-b 0.0)
    (sp-flt spt-a 128.0)
    (sp-flt spt-rotvel-z (degrees 0.05))
    (sp-int spt-timer -1)
    (sp-cpuinfo-flags bit2 bit3 bit14)
    (sp-flt spt-userdata 6.0)
    (sp-func spt-func 'sparticle-track-sun)
    )
  )
