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

(import "goal_src/jak1/import/water-anim-maincave-ag.gc")
(import "goal_src/jak1/import/water-anim-village3-ag.gc")
(import "goal_src/jak1/import/water-anim-finalboss-ag.gc")
(import "goal_src/jak1/import/water-anim-maincave-water-ag.gc")
(import "goal_src/jak1/import/water-anim-sunken-ag.gc")
(import "goal_src/jak1/import/water-anim-lavatube-ag.gc")
(import "goal_src/jak1/import/water-anim-robocave-ag.gc")
(import "goal_src/jak1/import/water-anim-jungle-ag.gc")
(import "goal_src/jak1/import/water-anim-ogre-ag.gc")
(import "goal_src/jak1/import/water-anim-training-ag.gc")
(import "goal_src/jak1/import/water-anim-darkcave-ag.gc")
(import "goal_src/jak1/import/water-anim-village1-ag.gc")
(import "goal_src/jak1/import/water-anim-rolling-ag.gc")
(import "goal_src/jak1/import/water-anim-misty-ag.gc")
(import "goal_src/jak1/import/water-anim-sunken-dark-eco-ag.gc")
(import "goal_src/jak1/import/water-anim-village2-ag.gc")

;; definition of type water-anim
(deftype water-anim (water-vol)
  ((ppointer-water-anim (pointer water-anim)  :offset         24)
   (look                int32                 :offset-assert 212)
   (play-ambient-sound? symbol                :offset-assert 216)
   )
  :heap-base #x70
  :method-count-assert 30
  :size-assert         #xdc
  :flag-assert         #x1e007000dc
  )

;; definition for method 3 of type water-anim
(defmethod inspect water-anim ((obj water-anim))
  (let ((t9-0 (method-of-type water-vol inspect)))
    (t9-0 obj)
    )
  (format #t "~T~Tlook: ~D~%" (-> obj look))
  (format #t "~T~Tplay-ambient-sound?: ~A~%" (-> obj play-ambient-sound?))
  obj
  )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-dark-eco-qbert-sg* water-anim-sunken-dark-eco water-anim-sunken-dark-eco-qbert-lod0-jg -1
              ((water-anim-sunken-dark-eco-qbert-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 40)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-dark-eco-platform-room-sg* water-anim-sunken-dark-eco water-anim-sunken-dark-eco-platform-room-lod0-jg -1
              ((water-anim-sunken-dark-eco-platform-room-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 22)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-dark-eco-helix-room-sg* water-anim-sunken-dark-eco water-anim-sunken-dark-eco-helix-room-lod0-jg -1
              ((water-anim-sunken-dark-eco-helix-room-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 21)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-big-room-sg* water-anim-sunken water-anim-sunken-big-room-lod0-jg -1
              ((water-anim-sunken-big-room-lod0-mg (meters 999999)))
              :bounds (static-spherem 15 0 -36 70)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-first-room-from-entrance-sg* water-anim-sunken water-anim-sunken-first-room-from-entrance-lod0-jg -1
              ((water-anim-sunken-first-room-from-entrance-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 50)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-qbert-room-sg* water-anim-sunken water-anim-sunken-qbert-room-lod0-jg -1
              ((water-anim-sunken-qbert-room-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 48)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-first-right-branch-sg* water-anim-sunken water-anim-sunken-first-right-branch-lod0-jg -1
              ((water-anim-sunken-first-right-branch-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 30)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-circular-with-bullys-sg* water-anim-sunken water-anim-sunken-circular-with-bullys-lod0-jg -1
              ((water-anim-sunken-circular-with-bullys-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 15)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-hall-with-one-whirlpool-sg* water-anim-sunken water-anim-sunken-hall-with-one-whirlpool-lod0-jg -1
              ((water-anim-sunken-hall-with-one-whirlpool-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 27)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-hall-with-three-whirlpools-sg* water-anim-sunken water-anim-sunken-hall-with-three-whirlpools-lod0-jg -1
              ((water-anim-sunken-hall-with-three-whirlpools-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 26)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-start-of-helix-slide-sg* water-anim-sunken water-anim-sunken-start-of-helix-slide-lod0-jg -1
              ((water-anim-sunken-start-of-helix-slide-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 25)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-room-above-exit-chamber-sg* water-anim-sunken water-anim-sunken-room-above-exit-chamber-lod0-jg -1
              ((water-anim-sunken-room-above-exit-chamber-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 45)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-hall-before-big-room-sg* water-anim-sunken water-anim-sunken-hall-before-big-room-lod0-jg -1
              ((water-anim-sunken-hall-before-big-room-lod0-mg (meters 999999)))
              :bounds (static-spherem 5 0 -3 24)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-short-piece-sg* water-anim-sunken water-anim-sunken-short-piece-lod0-jg -1
              ((water-anim-sunken-short-piece-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 20)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-sunken-big-room-upper-water-sg* water-anim-sunken water-anim-sunken-big-room-upper-water-lod0-jg -1
              ((water-anim-sunken-big-room-upper-water-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 27)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-maincave-center-pool-sg* water-anim-maincave water-anim-maincave-center-pool-lod0-jg -1
              ((water-anim-maincave-center-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 70)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-maincave-lower-right-pool-sg* water-anim-maincave water-anim-maincave-lower-right-pool-lod0-jg -1
              ((water-anim-maincave-lower-right-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem 6 0 5 61)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-maincave-mid-right-pool-sg* water-anim-maincave water-anim-maincave-mid-right-pool-lod0-jg -1
              ((water-anim-maincave-mid-right-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 37)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-maincave-lower-left-pool-sg* water-anim-maincave water-anim-maincave-lower-left-pool-lod0-jg -1
              ((water-anim-maincave-lower-left-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem -1 0 0 20)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-maincave-mid-left-pool-sg* water-anim-maincave water-anim-maincave-mid-left-pool-lod0-jg -1
              ((water-anim-maincave-mid-left-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 51)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-maincave-water-with-crystal-sg* water-anim-maincave-water water-anim-maincave-water-with-crystal-lod0-jg -1
              ((water-anim-maincave-water-with-crystal-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 -3 22)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-robocave-main-pool-sg* water-anim-robocave water-anim-robocave-main-pool-lod0-jg -1
              ((water-anim-robocave-main-pool-lod0-mg (meters 20)) (water-anim-robocave-main-pool-lod1-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 54)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-by-arena-sg* water-anim-misty water-anim-misty-mud-by-arena-lod0-jg -1
              ((water-anim-misty-mud-by-arena-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 -2.5 19)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-above-skeleton-sg* water-anim-misty water-anim-misty-mud-above-skeleton-lod0-jg -1
              ((water-anim-misty-mud-above-skeleton-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 14)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-behind-skeleton-sg* water-anim-misty water-anim-misty-mud-behind-skeleton-lod0-jg -1
              ((water-anim-misty-mud-behind-skeleton-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 4 25)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-above-skull-back-sg* water-anim-misty water-anim-misty-mud-above-skull-back-lod0-jg -1
              ((water-anim-misty-mud-above-skull-back-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 14)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-above-skull-front-sg* water-anim-misty water-anim-misty-mud-above-skull-front-lod0-jg -1
              ((water-anim-misty-mud-above-skull-front-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 16)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-other-near-skull-sg* water-anim-misty water-anim-misty-mud-other-near-skull-lod0-jg -1
              ((water-anim-misty-mud-other-near-skull-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 13)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-near-skull-sg* water-anim-misty water-anim-misty-mud-near-skull-lod0-jg -1
              ((water-anim-misty-mud-near-skull-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 15)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-under-spine-sg* water-anim-misty water-anim-misty-mud-under-spine-lod0-jg -1
              ((water-anim-misty-mud-under-spine-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 16)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-by-dock-sg* water-anim-misty water-anim-misty-mud-by-dock-lod0-jg -1
              ((water-anim-misty-mud-by-dock-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 21)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-island-near-dock-sg* water-anim-misty water-anim-misty-mud-island-near-dock-lod0-jg -1
              ((water-anim-misty-mud-island-near-dock-lod0-mg (meters 999999)))
              :bounds (static-spherem -1 0 -1 15)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-mud-lonely-island-sg* water-anim-misty water-anim-misty-mud-lonely-island-lod0-jg -1
              ((water-anim-misty-mud-lonely-island-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 10)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-misty-dark-eco-pool-sg* water-anim-misty water-anim-misty-dark-eco-pool-lod0-jg -1
              ((water-anim-misty-dark-eco-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 17)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-ogre-lava-sg* water-anim-ogre water-anim-ogre-lava-lod0-jg -1
              ((water-anim-ogre-lava-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 112)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-jungle-river-sg* water-anim-jungle water-anim-jungle-river-lod0-jg -1
              ((water-anim-jungle-river-lod0-mg (meters 20)) (water-anim-jungle-river-lod1-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 91)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-village3-lava-sg* water-anim-village3 water-anim-village3-lava-lod0-jg -1
              ((water-anim-village3-lava-lod0-mg (meters 20)) (water-anim-village3-lava-lod1-mg (meters 999999)))
              :bounds (static-spherem 15 0 10 163)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-training-lake-sg* water-anim-training water-anim-training-lake-lod0-jg -1
              ((water-anim-training-lake-lod0-mg (meters 999999)))
              :bounds (static-spherem -18 0 0 52)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-darkcave-water-with-crystal-sg* water-anim-darkcave water-anim-darkcave-water-with-crystal-lod0-jg -1
              ((water-anim-darkcave-water-with-crystal-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 19)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-rolling-water-back-sg* water-anim-rolling water-anim-rolling-water-back-lod0-jg -1
              ((water-anim-rolling-water-back-lod0-mg (meters 999999)))
              :bounds (static-spherem -10 0 0 70)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-rolling-water-front-sg* water-anim-rolling water-anim-rolling-water-front-lod0-jg -1
              ((water-anim-rolling-water-front-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 70)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-finalboss-dark-eco-pool-sg* water-anim-finalboss water-anim-finalboss-dark-eco-pool-lod0-jg -1
              ((water-anim-finalboss-dark-eco-pool-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 19)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-lavatube-energy-lava-sg* water-anim-lavatube water-anim-lavatube-energy-lava-lod0-jg -1
              ((water-anim-lavatube-energy-lava-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 -7 0 25)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-village1-rice-paddy-sg* water-anim-village1 water-anim-village1-rice-paddy-lod0-jg -1
              ((water-anim-village1-rice-paddy-lod0-mg (meters 999999)))
              :bounds (static-spherem -15 0 0 27)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-village1-fountain-sg* water-anim-village1 water-anim-village1-fountain-lod0-jg -1
              ((water-anim-village1-fountain-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 4.5)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-village1-rice-paddy-mid-sg* water-anim-village1 water-anim-village1-rice-paddy-mid-lod0-jg -1
              ((water-anim-village1-rice-paddy-mid-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 35)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-village1-rice-paddy-top-sg* water-anim-village1 water-anim-village1-rice-paddy-top-lod0-jg -1
              ((water-anim-village1-rice-paddy-top-lod0-mg (meters 999999)))
              :bounds (static-spherem 6 0 -17 20)
              )

;; failed to figure out what this is:
(defskelgroup *water-anim-village2-bucket-sg* water-anim-village2 water-anim-village2-bucket-lod0-jg -1
              ((water-anim-village2-bucket-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0 0 0.7)
              )

;; definition of type water-anim-look
(deftype water-anim-look (structure)
  ((skel-group         symbol      :offset-assert   0)
   (anim               int32       :offset-assert   4)
   (ambient-sound-spec sound-spec  :offset-assert   8)
   )
  :method-count-assert 9
  :size-assert         #xc
  :flag-assert         #x90000000c
  )

;; definition for method 3 of type water-anim-look
(defmethod inspect water-anim-look ((obj water-anim-look))
  (format #t "[~8x] ~A~%" obj 'water-anim-look)
  (format #t "~Tskel-group: ~A~%" (-> obj skel-group))
  (format #t "~Tanim: ~D~%" (-> obj anim))
  (format #t "~Tambient-sound-spec: ~A~%" (-> obj ambient-sound-spec))
  obj
  )

;; definition for symbol *water-anim-look*, type (array water-anim-look)
(define *water-anim-look*
  (the-as (array water-anim-look)
    (new 'static 'boxed-array :type water-anim-look
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-big-room-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 70 :fo-max 80)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-first-room-from-entrance-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 50 :fo-max 60)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-qbert-room-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 48 :fo-max 58)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-first-right-branch-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 30 :fo-max 40)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-circular-with-bullys-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 15 :fo-max 25)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-hall-with-one-whirlpool-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 27 :fo-max 37)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-hall-with-three-whirlpools-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 26 :fo-max 36)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-start-of-helix-slide-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 25 :fo-max 35)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-room-above-exit-chamber-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 45 :fo-max 55)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-hall-before-big-room-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 20 :fo-max 30)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-dark-eco-qbert-sg*
        :anim 6
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 40 :fo-max 50)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-short-piece-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 20 :fo-max 30)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-big-room-upper-water-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "water-loop" :fo-min 27 :fo-max 37)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-dark-eco-platform-room-sg*
        :anim 6
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 22 :fo-max 32)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-maincave-water-with-crystal-sg*
        :anim 2
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-maincave-center-pool-sg*
        :anim 10
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 70 :fo-max 80)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-maincave-lower-right-pool-sg*
        :anim 10
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 40 :fo-max 50)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-maincave-mid-right-pool-sg*
        :anim 10
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 37 :fo-max 47)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-maincave-lower-left-pool-sg*
        :anim 10
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 20 :fo-max 30)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-maincave-mid-left-pool-sg*
        :anim 10
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 51 :fo-max 61)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-robocave-main-pool-sg*
        :anim 3
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 54 :fo-max 64)
        )
      (new 'static 'water-anim-look :skel-group '*water-anim-misty-mud-by-arena-sg* :anim 24 :ambient-sound-spec #f)
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-above-skeleton-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-behind-skeleton-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-above-skull-back-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-above-skull-front-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-other-near-skull-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-near-skull-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-under-spine-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look :skel-group '*water-anim-misty-mud-by-dock-sg* :anim 24 :ambient-sound-spec #f)
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-island-near-dock-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-mud-lonely-island-sg*
        :anim 24
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-misty-dark-eco-pool-sg*
        :anim 24
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 17 :fo-max 27)
        )
      (new 'static 'water-anim-look :skel-group '*water-anim-ogre-lava-sg* :anim 2 :ambient-sound-spec #f)
      (new 'static 'water-anim-look :skel-group '*water-anim-jungle-river-sg* :anim 3 :ambient-sound-spec #f)
      (new 'static 'water-anim-look :skel-group '*water-anim-village3-lava-sg* :anim 3 :ambient-sound-spec #f)
      (new 'static 'water-anim-look :skel-group '*water-anim-training-lake-sg* :anim 2 :ambient-sound-spec #f)
      (new 'static 'water-anim-look
        :skel-group '*water-anim-darkcave-water-with-crystal-sg*
        :anim 2
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look :skel-group '*water-anim-rolling-water-back-sg* :anim 4 :ambient-sound-spec #f)
      (new 'static 'water-anim-look :skel-group '*water-anim-rolling-water-front-sg* :anim 4 :ambient-sound-spec #f)
      (new 'static 'water-anim-look
        :skel-group '*water-anim-sunken-dark-eco-helix-room-sg*
        :anim 6
        :ambient-sound-spec (static-sound-spec "helix-dark-eco" :fo-min 120 :fo-max 130)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-finalboss-dark-eco-pool-sg*
        :anim 2
        :ambient-sound-spec (static-sound-spec "darkeco-pool" :fo-min 19 :fo-max 29)
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-lavatube-energy-lava-sg*
        :anim 2
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look :skel-group '*water-anim-village1-rice-paddy-sg* :anim 8 :ambient-sound-spec #f)
      (new 'static 'water-anim-look :skel-group '*water-anim-village1-fountain-sg* :anim 8 :ambient-sound-spec #f)
      (new 'static 'water-anim-look
        :skel-group '*water-anim-village1-rice-paddy-mid-sg*
        :anim 8
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look
        :skel-group '*water-anim-village1-rice-paddy-top-sg*
        :anim 8
        :ambient-sound-spec #f
        )
      (new 'static 'water-anim-look :skel-group '*water-anim-village2-bucket-sg* :anim 2 :ambient-sound-spec #f)
      )
    )
  )

;; failed to figure out what this is:
(defstate water-vol-idle (water-anim)
  :virtual #t
  :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
    (let ((v1-0 arg2))
      (the-as object (when (= v1-0 'move-to)
                       (set! (-> self root trans quad) (-> (the-as vector (-> arg3 param 0)) quad))
                       (set! (-> self water-height) (-> self root trans y))
                       (if (nonzero? (-> self sound))
                           (update-trans! (-> self sound) (-> self root trans))
                           )
                       (let ((v0-0 (logclear (-> self mask) (process-mask sleep-code))))
                         (set! (-> self mask) v0-0)
                         v0-0
                         )
                       )
              )
      )
    )
  :trans (behavior ()
    (let ((t9-0 (-> (method-of-type water-vol water-vol-idle) trans)))
      (if t9-0
          (t9-0)
          )
      )
    (if (< (-> (math-camera-pos) y) (+ -8192.0 (-> self root trans y)))
        (logior! (-> self draw status) (draw-status hidden))
        (logclear! (-> self draw status) (draw-status hidden))
        )
    (if (and (-> self play-ambient-sound?) (nonzero? (-> self sound)))
        (update! (-> self sound))
        )
    (none)
    )
  :code (behavior ()
    (loop
      (ja-post)
      (logior! (-> self mask) (process-mask sleep-code))
      (suspend)
      )
    (none)
    )
  )

;; definition for method 28 of type water-anim
(defmethod get-ripple-height water-anim ((obj water-anim) (arg0 vector))
  (ripple-find-height obj 0 arg0)
  )

;; definition for method 24 of type water-anim
;; INFO: Return type mismatch symbol vs none.
(defmethod set-stack-size! water-anim ((obj water-anim))
  (none)
  )

;; definition for method 25 of type water-anim
;; INFO: Return type mismatch quaternion vs none.
;; Used lq/sq
(defmethod TODO-RENAME-25 water-anim ((obj water-anim))
  (local-vars (sv-16 res-tag))
  (set! (-> obj play-ambient-sound?) #t)
  (set! (-> obj look) (res-lump-value (-> obj entity) 'look int :default (the-as uint128 -1)))
  (set! sv-16 (new 'static 'res-tag))
  (let ((v1-3 (res-lump-data (-> obj entity) 'trans-offset (pointer float) :tag-ptr (& sv-16))))
    (when v1-3
      (+! (-> obj root trans x) (-> v1-3 0))
      (+! (-> obj root trans y) (-> v1-3 1))
      (+! (-> obj root trans z) (-> v1-3 2))
      )
    )
  (let ((f0-6 (res-lump-float (-> obj entity) 'rotoffset)))
    (if (!= f0-6 0.0)
        (quaternion-rotate-y! (-> obj root quat) (-> obj root quat) f0-6)
        )
    )
  (none)
  )

;; definition for method 22 of type water-anim
(defmethod TODO-RENAME-22 water-anim ((obj water-anim))
  (let ((s5-0 (-> obj look)))
    (if (or (< s5-0 0) (>= s5-0 (-> *water-anim-look* length)))
        (go process-drawable-art-error "skel group")
        )
    (let ((s5-1 (-> *water-anim-look* s5-0)))
      (let ((s4-0 (-> s5-1 skel-group value)))
        (let ((s3-0 s4-0))
          (if (not (if (and (nonzero? s3-0) (type-type? (-> (the-as basic s3-0) type) skeleton-group))
                       s3-0
                       )
                   )
              (go process-drawable-art-error "skel group")
              )
          )
        (initialize-skeleton obj (the-as skeleton-group s4-0) '())
        )
      (ja-channel-set! 1)
      (let ((s4-1 (-> obj skel root-channel 0)))
        (joint-control-channel-group-eval!
          s4-1
          (the-as art-joint-anim (-> obj draw art-group data (-> s5-1 anim)))
          num-func-identity
          )
        (set! (-> s4-1 frame-num) 0.0)
        )
      (let ((a2-2 (-> s5-1 ambient-sound-spec)))
        (when a2-2
          (let ((a3-0 (new 'stack-no-clear 'vector)))
            (vector+! a3-0 (-> obj root trans) (-> obj draw bounds))
            (set! (-> obj sound) (new 'process 'ambient-sound a2-2 a3-0))
            )
          )
        )
      )
    )
  (ja-post)
  (none)
  )
