mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-21 07:37:45 -04:00
caac740aff
* decomp `fisher`, `robotboss`, `light-eco`, `green-eco-lurker`, `sage-finalboss`, `robotboss-weapon`, `robotboss-misc` * fixes * add files * add `:states` list to `deftype` and fix files * test state forward decl's on a few more types * also the refs * add light-eco * whatever
151 lines
5.1 KiB
Common Lisp
151 lines
5.1 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: robotboss-h.gc
|
|
;; name in dgo: robotboss-h
|
|
;; dgos: FIN, L1
|
|
|
|
(define-extern *robotboss-sg* skeleton-group)
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(deftype robotboss-dda (structure)
|
|
((blue-bomb-time float :offset-assert 0)
|
|
(num-blobs int32 :offset-assert 4)
|
|
(green-bomb-time float :offset-assert 8)
|
|
(red-shots-min int32 :offset-assert 12)
|
|
(red-shots-rnd int32 :offset-assert 16)
|
|
(red-shot-time-min float :offset-assert 20)
|
|
(red-shot-time-rnd float :offset-assert 24)
|
|
(red-bomb-time float :offset-assert 28)
|
|
(yellow-shot-time-min float :offset-assert 32)
|
|
(yellow-shot-time-rnd float :offset-assert 36)
|
|
(yellow-gun-hits int32 :offset-assert 40)
|
|
(yellow-bomb-time float :offset-assert 44)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x30
|
|
:flag-assert #x900000030
|
|
)
|
|
|
|
|
|
(deftype robotboss (process-drawable)
|
|
((root-override collide-shape-moving :offset 112)
|
|
(alts entity-actor 13 :offset-assert 176)
|
|
(desired-loc vector :inline :offset-assert 240)
|
|
(old-loc vector :inline :offset-assert 256)
|
|
(loc-t float :offset-assert 272)
|
|
(loc-t-start int64 :offset-assert 280)
|
|
(loc-t-duration int64 :offset-assert 288)
|
|
(hits-to-go int32 :offset-assert 296)
|
|
(took-hit symbol :offset-assert 300)
|
|
(children-spawned int32 :offset-assert 304)
|
|
(vulnerable int64 :offset-assert 312)
|
|
(till-next-shot int64 :offset-assert 320)
|
|
(shot-attractor handle :offset-assert 328)
|
|
(desired-pool-y float :offset-assert 336)
|
|
(particle sparticle-launch-control 7 :offset-assert 340)
|
|
(blue-smoke symbol :offset-assert 368)
|
|
(red-smoke symbol :offset-assert 372)
|
|
(yellow-smoke symbol :offset-assert 376)
|
|
(white-eco handle :offset-assert 384)
|
|
(des-cam-entity string :offset-assert 392)
|
|
(use-interesting symbol :offset-assert 396)
|
|
(ignore-camera symbol :offset-assert 400)
|
|
(ambient ambient-control :offset 408)
|
|
(yellow-gun joint-mod :offset 424)
|
|
(palette-val float :offset 428)
|
|
(looping-sound ambient-sound 4 :offset 432)
|
|
(dda robotboss-dda :offset 448)
|
|
(valid-frames int32 :offset 452)
|
|
(skip-cut symbol :offset 456)
|
|
(keep-charging symbol :offset 460)
|
|
)
|
|
:heap-base #x16
|
|
:method-count-assert 21
|
|
:size-assert #x1d0
|
|
:flag-assert #x15001601d0
|
|
(:methods
|
|
(ease-loc-t (_type_) float 20)
|
|
)
|
|
)
|
|
|
|
|
|
(defmethod relocate robotboss ((obj robotboss) (arg0 int))
|
|
(dotimes (v1-0 7)
|
|
(if (nonzero? (-> obj particle v1-0))
|
|
(&+! (-> obj particle v1-0) arg0)
|
|
)
|
|
)
|
|
(dotimes (v1-3 4)
|
|
(if (nonzero? (-> obj looping-sound v1-3))
|
|
(&+! (-> obj looping-sound v1-3) arg0)
|
|
)
|
|
)
|
|
(if (nonzero? (-> obj yellow-gun))
|
|
(&+! (-> obj yellow-gun) arg0)
|
|
)
|
|
(the-as robotboss ((method-of-type process-drawable relocate) obj arg0))
|
|
)
|
|
|
|
(defmethod deactivate robotboss ((obj robotboss))
|
|
(dotimes (s5-0 7)
|
|
(let ((a0-1 (-> obj particle s5-0)))
|
|
(if (nonzero? a0-1)
|
|
(kill-and-free-particles a0-1)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (s5-1 4)
|
|
(let ((a0-2 (-> obj looping-sound s5-1)))
|
|
(if (nonzero? a0-2)
|
|
(stop! a0-2)
|
|
)
|
|
)
|
|
)
|
|
((method-of-type process-drawable deactivate) obj)
|
|
(none)
|
|
)
|
|
|
|
(defun target-has-all-the-cells? ()
|
|
(with-pp
|
|
(the-as
|
|
symbol
|
|
(and *target* (let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-0 from) pp)
|
|
(set! (-> a1-0 num-params) 2)
|
|
(set! (-> a1-0 message) 'query)
|
|
(set! (-> a1-0 param 0) (the-as uint 'pickup))
|
|
(set! (-> a1-0 param 1) (the-as uint 6))
|
|
(>=
|
|
(the int (the-as float (send-event-function *target* a1-0)))
|
|
100
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(let
|
|
((v0-6
|
|
(new 'static 'skeleton-group
|
|
:art-group-name "robotboss"
|
|
:bounds
|
|
(new 'static 'vector :y -40960.0 :w 327680.0)
|
|
:longest-edge (meters 19.9)
|
|
:version #x6
|
|
)
|
|
)
|
|
)
|
|
(set! (-> v0-6 jgeo) 0)
|
|
(set! (-> v0-6 janim) 2)
|
|
(set! (-> v0-6 mgeo 0) (the-as uint 1))
|
|
(set! (-> v0-6 lod-dist 0) 4095996000.0)
|
|
(set! *robotboss-sg* v0-6)
|
|
)
|
|
|
|
|
|
|
|
|