Files
jak-project/goal_src/engine/game/powerups.gc
T
Ziemas 766b328c97 Overlord sound player (#1239)
* Accept player RPC commands in overlord

* Remove the .projectile file

I use emacs for everything so I don't want it to only look at the goal code.

* Fill out most of the unique player structs

* Decompile most of ssound.c

* Silence some spam

* Comment out WaitSema instance

* Add a file with definitions for snd_ functions

Makes it compile without commenting them out.

Maybe it'd be nice to maintain the original API usage in overlord for
similarity and shim them to whatever API the player uses.

* Make SoundBank statically sized again.

Didn't realise this was used in an array. MSVC should be happy again.

Not sure what the actual size of these should be.

* Fix logic issue

* Finish RPC Loader

* More RPC_Player

* Play RPC command

* All the RPC commands added

* Call Music/Bank loaders

* audio: add almost all `.MUS` and `.SBK` files to build process

* Include TWEAKVAL in build output

* Load banks and music tweaks

* Comment out spam

* Sound struct unk -> is music

* Also test if empty1.sbk was found

For the sake of tests.

* Get rid of PC_DEBUG_SOUND_ENABLE

Co-authored-by: Tyler Wilding <xtvaser@gmail.com>
2022-03-22 18:53:36 -04:00

869 lines
28 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: powerups.gc
;; name in dgo: powerups
;; dgos: GAME, ENGINE
;; DECOMP BEGINS
(defbehavior cloud-track process ((arg0 process-tree)
(arg1 process-tree)
(arg2 (function vector none))
(arg3 time-frame)
(arg4 time-frame)
(arg5 time-frame)
)
(change-parent self arg0)
(let ((s1-1 (process->handle arg0))
(s2-1 (process->handle arg1))
)
(let ((s0-0 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s0-0) (+ arg3 arg4))
(let ((v1-8 (or (not (handle->process s1-1)) (not (handle->process s2-1)))))
(if v1-8
(deactivate self)
)
)
(let* ((f0-1
(fmax
0.0
(fmin 1.0 (/ (- (the float (- (-> *display* base-frame-counter) s0-0)) (the float arg3)) (the float arg4)))
)
)
(a0-18 (process-drawable-pair-random-point!
(the-as process-drawable (-> s1-1 process 0))
(the-as process-drawable (-> s2-1 process 0))
(new-stack-vector0)
f0-1
)
)
)
(arg2 a0-18)
)
(suspend)
)
)
(cond
((zero? arg5)
(while #t
(suspend)
)
)
(else
(let ((s4-1 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s4-1) arg5)
(let ((a0-21 (process-drawable-random-point! (the-as process-drawable (-> s2-1 process 0)) (new-stack-vector0))))
(arg2 a0-21)
)
(suspend)
)
)
)
)
)
(none)
)
(defpart 255
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 64.0)
(sp-flt spt-g 64.0)
(sp-flt spt-b 192.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0666667)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 256
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 64.0)
(sp-flt spt-g 64.0)
(sp-flt spt-b 192.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0666667)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 257
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2))
(sp-rnd-flt spt-num 1.0 3.0 1.0)
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0)
(sp-int spt-rot-x 4)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0)
(sp-flt spt-r 64.0)
(sp-flt spt-g 64.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-flt spt-fade-a -1.6)
(sp-int spt-timer 90)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 10)
(sp-launcher-by-id spt-next-launcher 258)
)
)
(defpart 259
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x1f :page #x2))
(sp-rnd-flt spt-num 0.0 3.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0)
(sp-int spt-rot-x 4)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0)
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 128.0)
(sp-flt spt-fade-a -1.6)
(sp-int spt-timer 91)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 10)
(sp-launcher-by-id spt-next-launcher 258)
)
)
(defpart 258
:init-specs
((sp-flt spt-r 64.0)
(sp-flt spt-g 64.0)
(sp-flt spt-fade-r -1.0)
(sp-flt spt-fade-g -0.4)
(sp-flt spt-fade-a -2.0)
)
)
(defpart 260
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.15) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 32.0)
(sp-rnd-flt spt-g 32.0 64.0 1.0)
(sp-rnd-flt spt-b 192.0 64.0 1.0)
(sp-rnd-flt spt-a 64.0 128.0 1.0)
(sp-flt spt-scalevel-x (meters -0.00033333333))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.2)
(sp-flt spt-accel-y -0.06826667)
(sp-int spt-timer 450)
(sp-cpuinfo-flags bit0 bit2 bit3)
)
)
(defpartgroup group-blue-hit-ground-effect
:id 70
:duration 5
:linger-duration 450
:bounds (static-bspherem 0 0 0 2)
:parts
((sp-item 261) (sp-item 262) (sp-item 263 :flags (is-3d)) (sp-item 264) (sp-item 265 :flags (is-3d)))
)
(defpart 264
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 32.0)
(sp-flt spt-y (meters 0.5))
(sp-rnd-flt spt-scale-x (meters 1) (meters 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-flt spt-r 0.0)
(sp-rnd-flt spt-g 32.0 32.0 1.0)
(sp-rnd-flt spt-b 192.0 63.0 1.0)
(sp-rnd-int spt-a 0 63 1.0)
(sp-flt spt-vel-y (meters 0.093333334))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-int spt-timer 150)
(sp-cpuinfo-flags bit3)
(sp-int-plain-rnd spt-next-time 20 19 1)
(sp-launcher-by-id spt-next-launcher 266)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0))
)
)
(defpart 266
:init-specs
((sp-flt spt-r 0.0)
(sp-rnd-flt spt-g 32.0 32.0 1.0)
(sp-rnd-flt spt-b 192.0 63.0 1.0)
(sp-rnd-int spt-a 0 63 1.0)
(sp-int-plain-rnd spt-next-time 20 19 1)
(sp-launcher-by-id spt-next-launcher 266)
)
)
(defpart 265
: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.5))
(sp-flt spt-scale-x (meters 0))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-rnd-flt spt-g 32.0 32.0 1.0)
(sp-rnd-flt spt-b 192.0 63.0 1.0)
(sp-rnd-flt spt-a 96.0 32.0 1.0)
(sp-flt spt-scalevel-x (meters 0.21333334))
(sp-copy-from-other spt-scalevel-y -4)
(sp-int spt-timer 120)
(sp-cpuinfo-flags bit2 bit3 left-multiply-quat)
(sp-int spt-next-time 60)
(sp-launcher-by-id spt-next-launcher 267)
)
)
(defpart 267
:init-specs
((sp-flt spt-fade-a -2.1333334))
)
(defpart 263
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-y (meters 0.5))
(sp-flt spt-scale-x (meters 0))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-rnd-flt spt-g 32.0 32.0 1.0)
(sp-rnd-flt spt-b 192.0 63.0 1.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-flt spt-scalevel-x (meters 0.22666667))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.7111111)
(sp-int spt-timer 90)
(sp-cpuinfo-flags bit2 bit3 left-multiply-quat)
(sp-int spt-next-time 45)
(sp-launcher-by-id spt-next-launcher 268)
)
)
(defpart 268
:init-specs
((sp-flt spt-fade-a -1.4222223))
)
(defpart 261
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 32.0)
(sp-rnd-flt spt-scale-x (meters 1) (meters 1) 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-flt spt-r 0.0)
(sp-rnd-flt spt-g 32.0 32.0 1.0)
(sp-rnd-flt spt-b 192.0 63.0 1.0)
(sp-rnd-flt spt-a 16.0 32.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0)
(sp-flt spt-scalevel-x (meters 0.0033333334))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.16)
(sp-flt spt-accel-y -1.3653333)
(sp-flt spt-friction 0.95)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit12)
(sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
)
)
(defpart 262
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 12.0)
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 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-flt spt-r 0.0)
(sp-rnd-flt spt-g 32.0 32.0 1.0)
(sp-rnd-flt spt-b 192.0 63.0 1.0)
(sp-rnd-flt spt-a 16.0 16.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0)
(sp-flt spt-scalevel-x (meters 0.0016666667))
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.21333334)
(sp-flt spt-accel-y -1.3653333)
(sp-flt spt-friction 0.95)
(sp-int spt-timer 150)
(sp-cpuinfo-flags bit2 bit12)
(sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
)
)
(defpart 269
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 92.0 32.0 1.0)
(sp-rnd-flt spt-g 32.0 92.0 1.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 270
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 92.0 32.0 1.0)
(sp-rnd-flt spt-g 32.0 92.0 1.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 271
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-rnd-flt spt-num 0.5 2.0 1.0)
(sp-flt spt-y (meters -0.05))
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 100.0 28.0 1.0)
(sp-rnd-flt spt-g 64.0 64.0 1.0)
(sp-flt spt-b 0.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.0023333333) (meters 0.0016666667) 1.0)
(sp-flt spt-scalevel-x (meters -0.00083333335))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-g -0.4)
(sp-flt spt-fade-a -0.024242423)
(sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0)
(sp-flt spt-friction 0.93)
(sp-int-plain-rnd spt-timer 30 209 1)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 90)
(sp-launcher-by-id spt-next-launcher 272)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.05))
)
)
(defpart 272
:init-specs
((sp-flt spt-fade-r 0.0))
)
(defpart 273
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 92.0 32.0 1.0)
(sp-flt spt-g 0.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 274
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 92.0 32.0 1.0)
(sp-flt spt-g 0.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 275
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-rnd-flt spt-num 0.5 2.0 1.0)
(sp-flt spt-y (meters -0.05))
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 100.0 28.0 1.0)
(sp-flt spt-g 0.0)
(sp-flt spt-b 0.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.0023333333) (meters 0.0016666667) 1.0)
(sp-flt spt-scalevel-x (meters -0.00083333335))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-g -0.4)
(sp-flt spt-fade-a -0.024242423)
(sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0)
(sp-flt spt-friction 0.93)
(sp-int-plain-rnd spt-timer 30 209 1)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 90)
(sp-launcher-by-id spt-next-launcher 276)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.05))
)
)
(defpart 276
:init-specs
((sp-flt spt-fade-r 0.0))
)
(defpart 277
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-rnd-flt spt-g 92.0 32.0 1.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 278
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.4) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-rnd-flt spt-g 92.0 32.0 1.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-fade-a -1.0)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.5))
)
)
(defpart 279
:init-specs
((sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-rnd-flt spt-num 0.5 2.0 1.0)
(sp-flt spt-y (meters -0.05))
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 0.0)
(sp-rnd-flt spt-g 100.0 28.0 1.0)
(sp-flt spt-b 0.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.0023333333) (meters 0.0016666667) 1.0)
(sp-flt spt-scalevel-x (meters -0.00083333335))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-g -0.4)
(sp-flt spt-fade-a -0.024242423)
(sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0)
(sp-flt spt-friction 0.93)
(sp-int-plain-rnd spt-timer 30 209 1)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 90)
(sp-launcher-by-id spt-next-launcher 280)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.05))
)
)
(defpart 280
:init-specs
((sp-flt spt-fade-g 0.0))
)
(defun eco-blue-glow ((arg0 vector))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 255)
arg0
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
(if (rand-vu-percent? 0.5)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 257)
arg0
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
0
(none)
)
(defbehavior target-powerup-process target ()
(dummy-10 (-> self water))
(when (not *weather-off*)
(case (-> self current-level name)
(('swamp)
(update-rain self)
)
(('snow)
(update-snow self)
)
)
)
(cond
((and (= (-> self control ground-pat material) (pat-material ice))
(and (>= (-> self control unknown-float01) 204.8)
(< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (seconds 0.05))
)
)
(let ((gp-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 74))))
(if (and (< (fabs
(vector-dot
(-> self control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) gp-0 (-> self control trans))
)
)
819.2
)
(rand-vu-percent? 0.5)
)
(sp-launch-particles-var
*sp-particle-system-3d*
(-> *part-id-table* 2391)
gp-0
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
(let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 70))))
(if (and (< (fabs
(vector-dot
(-> self control dynam gravity-normal)
(vector-! (new 'stack-no-clear 'vector) gp-1 (-> self control trans))
)
)
819.2
)
(rand-vu-percent? 0.5)
)
(sp-launch-particles-var
*sp-particle-system-3d*
(-> *part-id-table* 2391)
gp-1
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
(let ((f0-8 (lerp-scale 60.0 90.0 (-> self control unknown-float01) 0.0 81920.0)))
(if (not (= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 104)
)
)
(set! f0-8 (* 0.75 f0-8))
)
(set! (-> self control unknown-float141)
(seek (-> self control unknown-float141) f0-8 (* 100.0 (-> *display* seconds-per-frame)))
)
)
(let ((f30-0 (-> self control unknown-float141))
(f0-13 (lerp-scale -0.3 0.3 (-> self control unknown-float01) 0.0 81920.0))
)
(sound-play-by-name
(static-sound-name "ice-loop")
(-> self control unknown-soundid00)
(the int (* 10.24 f30-0))
(the int (* 1524.0 f0-13))
0
1
(the-as symbol (-> self control trans))
)
)
)
((< 0.0 (-> self control unknown-float141))
(set! (-> self control unknown-float141) 0.0)
(let ((v1-64 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
(set! (-> v1-64 command) (sound-command set-param))
(set! (-> v1-64 id) (-> self control unknown-soundid00))
(set! (-> v1-64 parms volume) -4)
(set! (-> v1-64 auto-time) 48)
(set! (-> v1-64 auto-from) 2)
(set! (-> v1-64 parms mask) (the-as uint 17))
(-> v1-64 id)
)
)
)
(let ((v1-67 (-> *time-of-day-context* current-shadow))
(a0-33 (-> self draw shadow-ctrl))
)
(set! (-> a0-33 settings shadow-dir x) (-> v1-67 x))
(set! (-> a0-33 settings shadow-dir y) (-> v1-67 y))
(set! (-> a0-33 settings shadow-dir z) (-> v1-67 z))
)
(when (and (!= (-> self fact-info-target eco-level) 0.0)
(>= (- (-> *display* game-frame-counter) (-> self fact-info-target eco-pickup-time))
(the-as time-frame (-> self fact-info-target eco-timeout))
)
)
(set! (-> self fact-info-target eco-level) 0.0)
(set! (-> self fact-info-target eco-timeout) 0)
(set! (-> self state-flags) (logand -65 (-> self state-flags)))
(send-event self 'reset-collide)
(stop! (-> self sound))
)
(when (and (< 0.0 (-> self fact-info-target eco-level))
(zero? (logand (-> self state-flags) 512))
(zero? (logand (-> self draw status) (draw-status hidden no-anim)))
(not (movie?))
(rand-vu-percent?
(lerp-scale
0.0
1.0
(the float (- (-> self fact-info-target eco-timeout)
(the-as uint (- (-> *display* game-frame-counter) (-> self fact-info-target eco-pickup-time)))
)
)
0.0
900.0
)
)
)
(case (-> self fact-info-target eco-type)
(((pickup-type eco-yellow))
(change-sound! (-> self sound) (static-sound-name "yel-eco-jak"))
(let ((s4-0 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* (if (rand-vu-percent? 0.5)
269
270
)
)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-0))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(dotimes (gp-4 2)
(let ((v1-111 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 271)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-111))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
)
(((pickup-type eco-red))
(target-danger-set! (-> self control unknown-symbol30) #t)
(update-transforms! (-> self control))
(let ((a1-23 (new 'stack-no-clear 'touching-shapes-entry)))
(set! (-> a1-23 cshape1) (the-as collide-shape 0))
(set! (-> a1-23 cshape2) (the-as collide-shape *touching-list*))
(find-overlapping-shapes (-> self control) (the-as overlaps-others-params a1-23))
)
(target-danger-set! (-> self control unknown-symbol30) #f)
(update-transforms! (-> self control))
(change-sound! (-> self sound) (static-sound-name "red-eco-jak"))
(let ((s4-2 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* (if (rand-vu-percent? 0.5)
273
274
)
)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-2))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(dotimes (gp-6 2)
(let ((v1-139 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 275)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-139))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
)
(((pickup-type eco-blue))
(change-sound! (-> self sound) (static-sound-name "blue-eco-jak"))
(let ((v1-150 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(cond
((and (logtest? (-> self control unknown-surface00 flags) 2048) (zero? (logand (-> self control status) 1)))
(set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 0.0)
(set! (-> *part-id-table* 259 init-specs 4 random-rangef) 65536.0)
)
(else
(set! (-> *part-id-table* 259 init-specs 4 initial-valuef) 40960.0)
(set! (-> *part-id-table* 259 init-specs 4 random-rangef) 16384.0)
)
)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 259)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-150))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(let ((gp-8 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* (if (rand-vu-percent? 0.5)
255
256
)
)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-8))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
(if (rand-vu-percent? 0.5)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 257)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-8))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
(let ((v1-168 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 260)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-168))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(cpad-set-buzz! (-> *cpad-list* cpads 0) 0 1 (seconds 0.1))
)
(((pickup-type eco-green))
(change-sound! (-> self sound) (static-sound-name "green-eco-jak"))
(let ((s4-8 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* (if (rand-vu-percent? 0.5)
277
278
)
)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s4-8))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
(dotimes (gp-11 2)
(let ((v1-188 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 279)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-188))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
)
)
(update-trans! (-> self sound) (-> self control trans))
(update! (-> self sound))
)
0
(none)
)
(defbehavior target-powerup-effect target ((arg0 symbol))
(case arg0
(('eco-blue)
(let ((v1-4 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
(eco-blue-glow (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-4)))
)
)
)
0
(none)
)