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

(import "goal_src/jak1/import/citb-bunny-ag.gc")

;; definition of type citb-bunny
(deftype citb-bunny (snow-bunny)
  ()
  :heap-base #x190
  :method-count-assert 77
  :size-assert         #x200
  :flag-assert         #x4d01900200
  (:methods
    (TODO-RENAME-48 (_type_ object) none :replace 48)
    )
  )

;; definition for method 3 of type citb-bunny
(defmethod inspect citb-bunny ((obj citb-bunny))
  (let ((t9-0 (method-of-type snow-bunny inspect)))
    (t9-0 obj)
    )
  obj
  )

;; failed to figure out what this is:
(defskelgroup *citb-bunny-sg* citb-bunny citb-bunny-lod0-jg citb-bunny-idle-ja
              ((citb-bunny-lod0-mg (meters 999999)))
              :bounds (static-spherem 0 0.25 0 2)
              )

;; definition for symbol *citb-bunny-nav-enemy-info*, type nav-enemy-info
(define *citb-bunny-nav-enemy-info* (new 'static 'nav-enemy-info
                                      :idle-anim 3
                                      :walk-anim 3
                                      :turn-anim 3
                                      :notice-anim 7
                                      :run-anim 3
                                      :jump-anim 5
                                      :jump-land-anim 8
                                      :victory-anim 7
                                      :taunt-anim 7
                                      :die-anim 9
                                      :neck-joint 5
                                      :player-look-at-joint 5
                                      :run-travel-speed (meters 6)
                                      :run-rotate-speed (degrees 2880.0)
                                      :run-acceleration (meters 1)
                                      :run-turn-time (seconds 0.1)
                                      :walk-travel-speed (meters 4)
                                      :walk-rotate-speed (degrees 720.0)
                                      :walk-acceleration (meters 1)
                                      :walk-turn-time (seconds 0.5)
                                      :shadow-size (meters 2)
                                      :notice-nav-radius (meters 1.2)
                                      :nav-nearest-y-threshold (meters 10)
                                      :notice-distance (meters 130)
                                      :stop-chase-distance (meters 150)
                                      :frustration-distance (meters 8)
                                      :frustration-time (seconds 4)
                                      :die-anim-hold-frame 31.0
                                      :jump-anim-start-frame 11.0
                                      :jump-land-anim-end-frame 10000000000.0
                                      :jump-height-min (meters 1)
                                      :jump-height-factor 0.6
                                      :jump-start-anim-speed 1.0
                                      :shadow-max-y (meters 0.25)
                                      :shadow-min-y (meters -3.5)
                                      :shadow-locus-dist (meters 150)
                                      :use-align #f
                                      :draw-shadow #t
                                      :move-to-ground #t
                                      :hover-if-no-ground #f
                                      :use-momentum #f
                                      :use-flee #f
                                      :use-proximity-notice #f
                                      :use-jump-blocked #f
                                      :use-jump-patrol #f
                                      :gnd-collide-with (collide-kind background)
                                      :debug-draw-neck #f
                                      :debug-draw-jump #f
                                      )
        )

;; definition for method 60 of type citb-bunny
;; INFO: Return type mismatch int vs none.
(defmethod dummy-60 citb-bunny ((obj citb-bunny))
  (initialize-skeleton obj *citb-bunny-sg* '())
  (set! (-> obj draw origin-joint-index) (the-as uint 3))
  0
  (none)
  )

;; definition for method 48 of type citb-bunny
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-48 citb-bunny ((obj citb-bunny) (arg0 object))
  (dummy-60 obj)
  (TODO-RENAME-45 obj *citb-bunny-nav-enemy-info*)
  (logclear! (-> obj draw shadow-ctrl settings flags) (shadow-flags shdf03))
  (cond
    ((zero? (res-lump-value (-> obj entity) 'mode uint128))
     (set! (-> obj defense) (the-as uint 1))
     (set! (-> obj retreat-timeout) 5.0)
     )
    (else
      (set! (-> obj defense) (the-as uint 0))
      (set! (-> obj retreat-timeout) 0.1)
      )
    )
  (set! (-> obj last-nondangerous-time) (-> *display* base-frame-counter))
  (set! (-> obj gnd-popup) 16384.0)
  (set! (-> obj got-jump-event?) #f)
  (set! (-> obj notice-land-anim) 8)
  (set! (-> obj attack-anim) 4)
  (set! (-> obj neck up) (the-as uint 1))
  (set! (-> obj neck nose) (the-as uint 2))
  (set! (-> obj neck ear) (the-as uint 0))
  (set! (-> obj patrol-rand-distraction) (+ (nav-enemy-rnd-int-count 5) 1))
  (set! (-> obj patrol-hop-failed?) #f)
  (logclear! (-> obj mask) (process-mask actor-pause))
  0
  (none)
  )

;; definition for method 56 of type citb-bunny
;; INFO: Return type mismatch float vs none.
(defmethod set-jump-height-factor! citb-bunny ((obj citb-bunny) (arg0 int))
  (let ((v1-0 arg0))
    (cond
      ((zero? v1-0)
       (set! (-> obj jump-anim) 6)
       (set! (-> obj jump-height-min) 4096.0)
       (set! (-> obj jump-height-factor) 0.6)
       )
      ((= v1-0 1)
       (set! (-> obj jump-anim) 5)
       (set! (-> obj jump-height-min) 4096.0)
       (set! (-> obj jump-height-factor) 0.6)
       )
      ((= v1-0 2)
       (set! (-> obj jump-anim) 5)
       (set! (-> obj jump-height-min) 4096.0)
       (set! (-> obj jump-height-factor) 0.4)
       )
      )
    )
  (none)
  )
