mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
da5aef8d60
Almost done: - `target-handler` (`(none)` event handler casts and CFG error) - `target2` (`(none)` event handler casts) - `powerups` (`cloud-track` does some weird stuff with `handle`s) - `gun-states` (CFG error) Some progress in: - `water-flow` Additionally: - Clean up the two year old Jak 3 config file and add a config skeleton (disassembling seems to not have worked, but I was able to dump obj files and the `all_scripts` file) - Fix automatic skelgroup detection and `defskelgroup` macro for Jak 2 (closes #1950) - When a function decompiles without any major errors, a warning is generated with the op id for each unresolved load and store that will likely fail to compile (closes #1933)
310 lines
11 KiB
Common Lisp
310 lines
11 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: dark-eco-pool.gc
|
|
;; name in dgo: dark-eco-pool
|
|
;; dgos: GAME, COMMON
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(deftype dark-eco-pool (water-anim)
|
|
()
|
|
:heap-base #x80
|
|
:method-count-assert 29
|
|
:size-assert #x100
|
|
:flag-assert #x1d00800100
|
|
)
|
|
|
|
(define *ripple-for-dark-eco-pool* (new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 3.0
|
|
:wave (new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 11.0 :xdiv 1 :speed 1.0)
|
|
(new 'static 'ripple-wave :scale 7.5 :xdiv -1 :zdiv 1 :speed 4.0)
|
|
(new 'static 'ripple-wave :scale 2.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(define *ripple-strip-dark-eco-near-lift*
|
|
(new 'static 'ripple-wave-set
|
|
:count 3
|
|
:converted #f
|
|
:normal-scale 3.0
|
|
:wave (new 'static 'inline-array ripple-wave 4
|
|
(new 'static 'ripple-wave :scale 4.0 :xdiv 1 :speed 1.0)
|
|
(new 'static 'ripple-wave :scale 2.5 :xdiv -1 :zdiv 1 :speed 3.0)
|
|
(new 'static 'ripple-wave :scale 3.0 :xdiv 5 :zdiv 3 :speed 2.0)
|
|
(new 'static 'ripple-wave)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defmethod offset! dark-eco-pool ((obj dark-eco-pool))
|
|
"Offset a [[water-anim]]'s `trans` and `quat` by the lump data in `entity`."
|
|
(let ((t9-0 (method-of-type water-anim offset!)))
|
|
(t9-0 obj)
|
|
)
|
|
(logclear! (-> obj flags) (water-flags part-water))
|
|
(logior! (-> obj flags) (water-flags dark-eco))
|
|
(set! (-> obj attack-event)
|
|
(the-as
|
|
symbol
|
|
((method-of-type res-lump get-property-struct)
|
|
(-> obj entity)
|
|
'attack-event
|
|
'interp
|
|
-1000000000.0
|
|
(the-as structure 'dark-eco-pool)
|
|
(the-as (pointer res-tag) #f)
|
|
*res-static-buf*
|
|
)
|
|
)
|
|
)
|
|
(set! (-> obj sound)
|
|
(new 'process 'ambient-sound (static-sound-spec "eco-pool" :fo-min 30 :fo-max 50) (-> obj root trans))
|
|
)
|
|
(none)
|
|
)
|
|
|
|
(defmethod art-init! dark-eco-pool ((obj dark-eco-pool))
|
|
"Initialize a [[water-anim]]'s [[skel-group]], joints and ambience."
|
|
(let ((t9-0 (method-of-type water-anim art-init!)))
|
|
(t9-0 obj)
|
|
)
|
|
(let ((s5-0 (new 'process 'ripple-control)))
|
|
(set! (-> obj draw ripple) s5-0)
|
|
(set! (-> s5-0 global-scale) 3072.0)
|
|
(set! (-> s5-0 close-fade-dist) 163840.0)
|
|
(set! (-> s5-0 far-fade-dist) 245760.0)
|
|
(set! (-> s5-0 waveform) *ripple-for-dark-eco-pool*)
|
|
(set! (-> s5-0 query) (new 'process 'ripple-merc-query 100))
|
|
(case (-> obj look)
|
|
((5)
|
|
(set! (-> s5-0 waveform) *ripple-strip-dark-eco-near-lift*)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
(defpartgroup group-dark-eco-nasty
|
|
:id 128
|
|
:flags (use-local-clock)
|
|
:bounds (static-bspherem 0 0 0 8)
|
|
:parts ((sp-item 577 :fade-after (meters 50)))
|
|
)
|
|
|
|
(defpart 577
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-y (meters 0))
|
|
(sp-rnd-flt spt-scale-x (meters 1) (meters 4) 1.0)
|
|
(sp-flt spt-scale-y (meters 0.25))
|
|
(sp-flt spt-r 255.0)
|
|
(sp-flt spt-g 255.0)
|
|
(sp-flt spt-b 255.0)
|
|
(sp-rnd-flt spt-a 96.0 32.0 1.0)
|
|
(sp-flt spt-scalevel-x (meters 0.1875))
|
|
(sp-flt spt-scalevel-y (meters -0.001875))
|
|
(sp-flt spt-fade-a -3.2)
|
|
(sp-int spt-timer 10)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
|
(sp-int spt-next-time 15)
|
|
(sp-launcher-by-id spt-next-launcher 578)
|
|
)
|
|
)
|
|
|
|
(defpart 578
|
|
:init-specs ((sp-flt spt-r 255.0) (sp-rnd-flt spt-g 128.0 128.0 1.0) (sp-flt spt-b 0.0) (sp-flt spt-fade-a -1.28))
|
|
)
|
|
|
|
(defpartgroup group-dark-eco-pool-nasty
|
|
:id 129
|
|
:duration (seconds 2)
|
|
:linger-duration (seconds 2)
|
|
:flags (use-local-clock)
|
|
:bounds (static-bspherem 0 0 0 12)
|
|
:parts ((sp-item 583 :fade-after (meters 100) :period 600 :length 5)
|
|
(sp-item 584 :fade-after (meters 100) :period 600 :length 5 :binding 579)
|
|
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
|
|
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
|
|
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
|
|
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 579 :flags (start-dead launch-asap) :binding 580)
|
|
(sp-item 580 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 585 :fade-after (meters 100) :period 600 :length 5 :binding 581)
|
|
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
|
|
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
|
|
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
|
|
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
(sp-item 581 :flags (start-dead launch-asap) :binding 582)
|
|
(sp-item 582 :fade-after (meters 80) :falloff-to (meters 100) :flags (start-dead))
|
|
)
|
|
)
|
|
|
|
(defpart 583
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-flt spt-scale-x (meters 8))
|
|
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
|
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
|
(sp-flt spt-a 64.0)
|
|
(sp-flt spt-fade-a -1.8285716)
|
|
(sp-int spt-timer 54)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
|
)
|
|
)
|
|
|
|
(defpart 584
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
|
|
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-flt spt-scale-x (meters 0.1))
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-flt spt-a 0.0)
|
|
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
|
(sp-flt spt-accel-y -3.4133334)
|
|
(sp-flt spt-friction 0.94)
|
|
(sp-int spt-timer 240)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-3)
|
|
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
|
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
|
)
|
|
)
|
|
|
|
(defpart 579
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-y (meters 0) (meters 16) 1.0)
|
|
(sp-rnd-flt spt-z (meters 0.3) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 0.0 96.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
|
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
|
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
|
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
|
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.000909091))
|
|
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-g -0.26666668)
|
|
(sp-flt spt-fade-a -0.19393939)
|
|
(sp-int-plain-rnd spt-timer 60 179 1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)
|
|
)
|
|
)
|
|
|
|
(defpart 580
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 32.0 96.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 32.0 1.0)
|
|
(sp-rnd-flt spt-b 64.0 32.0 1.0)
|
|
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-a -0.01904762)
|
|
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
|
(sp-int-plain-rnd spt-timer 30 239 1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
|
(sp-int spt-next-time 240)
|
|
(sp-launcher-by-id spt-next-launcher 397)
|
|
)
|
|
)
|
|
|
|
(defpart 585
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x29 :page #xc))
|
|
(sp-rnd-flt spt-num 1.0 6.0 1.0)
|
|
(sp-flt spt-y (meters 1))
|
|
(sp-flt spt-scale-x (meters 0.1))
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-flt spt-a 0.0)
|
|
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0)
|
|
(sp-flt spt-accel-y -3.4133334)
|
|
(sp-flt spt-friction 0.94)
|
|
(sp-int spt-timer 240)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-3)
|
|
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
|
|
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
|
|
)
|
|
)
|
|
|
|
(defpart 581
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-y (meters 0) (meters 16) 1.0)
|
|
(sp-rnd-flt spt-z (meters 0.3) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.3) 1.0)
|
|
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
|
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
|
(sp-rnd-flt spt-a 64.0 64.0 1.0)
|
|
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
|
|
(sp-rnd-flt spt-vel-x (meters 0.026666667) (meters 0.10666667) 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.000909091))
|
|
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-g -0.26666668)
|
|
(sp-flt spt-fade-a -0.19393939)
|
|
(sp-int-plain-rnd spt-timer 60 179 1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch sp-cpuinfo-flag-14)
|
|
)
|
|
)
|
|
|
|
(defpart 582
|
|
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xc9 :page #xc))
|
|
(sp-flt spt-num 1.0)
|
|
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.1) 1.0)
|
|
(sp-copy-from-other spt-scale-y -4)
|
|
(sp-rnd-flt spt-r 16.0 32.0 1.0)
|
|
(sp-rnd-flt spt-g 0.0 16.0 1.0)
|
|
(sp-rnd-flt spt-b 192.0 64.0 1.0)
|
|
(sp-rnd-flt spt-a 32.0 32.0 1.0)
|
|
(sp-flt spt-scalevel-x (meters -0.0006190476))
|
|
(sp-copy-from-other spt-scalevel-y -4)
|
|
(sp-flt spt-fade-a -0.01904762)
|
|
(sp-rnd-flt spt-accel-y -0.40960002 -0.6144 1.0)
|
|
(sp-int-plain-rnd spt-timer 30 239 1)
|
|
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14)
|
|
(sp-int spt-next-time 240)
|
|
(sp-launcher-by-id spt-next-launcher 397)
|
|
)
|
|
)
|
|
|
|
(defstate idle (dark-eco-pool)
|
|
:virtual #t
|
|
:trans (behavior ()
|
|
(let ((t9-0 (-> (method-of-type water-anim idle) trans)))
|
|
(if t9-0
|
|
(t9-0)
|
|
)
|
|
)
|
|
(let* ((gp-0 (-> self draw ripple))
|
|
(f0-1 (the float (logand (-> self clock frame-counter) #xffff)))
|
|
(f0-6 (cos (the float (sar (shl (the int (* 5.0 f0-1)) 48) 48))))
|
|
(f0-7 (* f0-6 f0-6))
|
|
(f0-9 (fmax -1.0 (fmin 1.0 f0-7)))
|
|
)
|
|
(set! (-> gp-0 global-scale) (* 4096.0 (* 3.0 (+ 1.0 f0-9))))
|
|
(set! (-> gp-0 individual-normal-scale) (+ 0.5 (* 0.5 f0-9)))
|
|
)
|
|
(none)
|
|
)
|
|
)
|