mirror of
https://github.com/open-goal/jak-project
synced 2026-06-26 18:42:01 -04:00
c12a5d777c
This should make all missions playable with the exception of the end of `precursor-destroy-ship` because `precurd` asserts on level extraction. - `trail` - `trail-graph` - `wastrail-graph` - `cty-protect` - `protect-gunship` - `protect-path` - `protect-script` - `assault-cams` - `assault-enemies` - `assault-path` - `assault-script` - `assault-shared` - `assault-task` - `hover-nav-precura` - `precura-mood` - `precura-obs` - `precura-obs2` - `precura-part` - `precurc-mood` - `precurc-obs` - `precurc-part` - `precurd-obs` - `precurd-part` - `precurd-scenes`
1306 lines
45 KiB
Common Lisp
Vendored
Generated
1306 lines
45 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition for function cloud-track
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch symbol vs none.
|
|
;; WARN: new jak 2 until loop case, check carefully
|
|
(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 (current-time)))
|
|
(until (time-elapsed? 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 (- (current-time) 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)
|
|
(until #f
|
|
(suspend)
|
|
)
|
|
#f
|
|
)
|
|
(else
|
|
(let ((s4-1 (current-time)))
|
|
(until (time-elapsed? 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)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 784
|
|
:init-specs ((:texture (starflash level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 64.0)
|
|
(:g 64.0)
|
|
(:b 192.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0666667)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 785
|
|
:init-specs ((:texture (bigpuff level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 64.0)
|
|
(:g 64.0)
|
|
(:b 192.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0666667)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 786
|
|
:init-specs ((:texture (common-white common))
|
|
(:num 1.0 3.0)
|
|
(:scale-x (meters 0.5) (meters 1.5))
|
|
(:rot-x 4)
|
|
(:rot-z (degrees 0) (degrees 360))
|
|
(:scale-y (meters 0.2) (meters 0.1))
|
|
(:r 64.0)
|
|
(:g 64.0)
|
|
(:b 128.0)
|
|
(:a 128.0)
|
|
(:fade-a -1.6)
|
|
(:timer (seconds 0.3))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:next-time (seconds 0.035))
|
|
(:next-launcher 787)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 788
|
|
:init-specs ((:texture (common-white common))
|
|
(:num 0.0 3.0)
|
|
(:scale-x (meters 1.5) (meters 1.5))
|
|
(:rot-x 4)
|
|
(:rot-z (degrees 0) (degrees 360))
|
|
(:scale-y (meters 0.2) (meters 0.1))
|
|
(:r 128.0)
|
|
(:g 128.0)
|
|
(:b 255.0)
|
|
(:a 128.0)
|
|
(:fade-a -1.6)
|
|
(:timer (seconds 0.305))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:next-time (seconds 0.035))
|
|
(:next-launcher 787)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 787
|
|
:init-specs ((:r 64.0) (:g 64.0) (:fade-r -1.0) (:fade-g -0.4) (:fade-a -2.0))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 789
|
|
:init-specs ((:texture (starflash level-default-sprite))
|
|
(:num 1.0)
|
|
(:scale-x (meters 0.1) (meters 0.15))
|
|
(:scale-y :copy scale-x)
|
|
(:r 32.0)
|
|
(:g 32.0 64.0)
|
|
(:b 192.0 64.0)
|
|
(:a 64.0 128.0)
|
|
(:scalevel-x (meters -0.00033333333))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -0.2)
|
|
(:accel-y (meters -0.000016666667))
|
|
(:timer (seconds 1.5))
|
|
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpartgroup group-blue-hit-ground-effect
|
|
:id 194
|
|
:duration (seconds 0.017)
|
|
:linger-duration (seconds 1.5)
|
|
:bounds (static-bspherem 0 0 0 2)
|
|
:parts ((sp-item 790) (sp-item 791) (sp-item 792 :flags (is-3d)) (sp-item 793) (sp-item 794 :flags (is-3d)))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 793
|
|
:init-specs ((:texture (starflash level-default-sprite))
|
|
(:num 32.0)
|
|
(:y (meters 0.5))
|
|
(:scale-x (meters 1) (meters 3))
|
|
(:rot-z (degrees 0) (degrees 360))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 32.0 32.0)
|
|
(:b 192.0 63.0)
|
|
(:a 0.0 63 1.0)
|
|
(:vel-y (meters 0.093333334))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:timer (seconds 0.5))
|
|
(:flags (sp-cpuinfo-flag-3))
|
|
(:next-time (seconds 0.067) (seconds 0.065))
|
|
(:next-launcher 795)
|
|
(:conerot-x (degrees 90))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 795
|
|
:init-specs ((:r 0.0)
|
|
(:g 32.0 32.0)
|
|
(:b 192.0 63.0)
|
|
(:a 0.0 63 1.0)
|
|
(:next-time (seconds 0.067) (seconds 0.065))
|
|
(:next-launcher 795)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 794
|
|
:init-specs ((:texture (splash-foam level-default-sprite))
|
|
(:num 1.0)
|
|
(:y (meters 0.5))
|
|
(:scale-x (meters 0))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 32.0 32.0)
|
|
(:b 192.0 63.0)
|
|
(:a 96.0 32.0)
|
|
(:scalevel-x (meters 0.21333334))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:timer (seconds 0.4))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat))
|
|
(:next-time (seconds 0.2))
|
|
(:next-launcher 796)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 796
|
|
:init-specs ((:fade-a -2.1333334))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 792
|
|
:init-specs ((:texture (middot level-default-sprite))
|
|
(:num 1.0)
|
|
(:y (meters 0.5))
|
|
(:scale-x (meters 0))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 32.0 32.0)
|
|
(:b 192.0 63.0)
|
|
(:a 32.0 32.0)
|
|
(:scalevel-x (meters 0.22666667))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -0.7111111)
|
|
(:timer (seconds 0.3))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat))
|
|
(:next-time (seconds 0.15))
|
|
(:next-launcher 797)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 797
|
|
:init-specs ((:fade-a -1.4222223))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 790
|
|
:init-specs ((:texture (bigpuff level-default-sprite))
|
|
(:num 32.0)
|
|
(:scale-x (meters 1) (meters 1))
|
|
(:rot-z (degrees 0) (degrees 360))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 32.0 32.0)
|
|
(:b 192.0 63.0)
|
|
(:a 16.0 32.0)
|
|
(:vel-y (meters 0.053333335) (meters 0.026666667))
|
|
(:scalevel-x (meters 0.0033333334))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -0.16)
|
|
(:accel-y (meters -0.00033333333))
|
|
(:friction 0.95)
|
|
(:timer (seconds 1))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13))
|
|
(:conerot-x (degrees 60) (degrees 30))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 791
|
|
:init-specs ((:texture (bigpuff level-default-sprite))
|
|
(:num 12.0)
|
|
(:scale-x (meters 0.5) (meters 0.25))
|
|
(:rot-z (degrees 0) (degrees 360))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 32.0 32.0)
|
|
(:b 192.0 63.0)
|
|
(:a 16.0 16.0)
|
|
(:vel-y (meters 0.10666667) (meters 0.053333335))
|
|
(:scalevel-x (meters 0.0016666667))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -0.21333334)
|
|
(:accel-y (meters -0.00033333333))
|
|
(:friction 0.95)
|
|
(:timer (seconds 0.5))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13))
|
|
(:conerot-x (degrees 60) (degrees 30))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 798
|
|
:init-specs ((:texture (starflash level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 92.0 32.0)
|
|
(:g 32.0 92.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 799
|
|
:init-specs ((:texture (bigpuff level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 92.0 32.0)
|
|
(:g 32.0 92.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 800
|
|
:init-specs ((:texture (hotdot level-default-sprite))
|
|
(:num 0.5 2.0)
|
|
(:y (meters -0.05))
|
|
(:scale-x (meters 0.2) (meters 0.1))
|
|
(:scale-y :copy scale-x)
|
|
(:r 100.0 28.0)
|
|
(:g 64.0 64.0)
|
|
(:b 0.0)
|
|
(:a 64.0 64.0)
|
|
(:vel-y (meters 0.0023333333) (meters 0.0016666667))
|
|
(:scalevel-x (meters -0.00083333335))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-g -0.4)
|
|
(:fade-a -0.024242423)
|
|
(:accel-y (meters -0.000100000005) (meters -0.0003))
|
|
(:friction 0.93)
|
|
(:timer (seconds 0.1) (seconds 0.697))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:next-time (seconds 0.3))
|
|
(:next-launcher 801)
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.05))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 801
|
|
:init-specs ((:fade-r 0.0))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 802
|
|
:init-specs ((:texture (starflash level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 92.0 32.0)
|
|
(:g 0.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 803
|
|
:init-specs ((:texture (bigpuff level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 92.0 32.0)
|
|
(:g 0.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 804
|
|
:init-specs ((:texture (hotdot level-default-sprite))
|
|
(:num 0.5 2.0)
|
|
(:y (meters -0.05))
|
|
(:scale-x (meters 0.2) (meters 0.1))
|
|
(:scale-y :copy scale-x)
|
|
(:r 100.0 28.0)
|
|
(:g 0.0)
|
|
(:b 0.0)
|
|
(:a 64.0 64.0)
|
|
(:vel-y (meters 0.0023333333) (meters 0.0016666667))
|
|
(:scalevel-x (meters -0.00083333335))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-g -0.4)
|
|
(:fade-a -0.024242423)
|
|
(:accel-y (meters -0.000100000005) (meters -0.0003))
|
|
(:friction 0.93)
|
|
(:timer (seconds 0.1) (seconds 0.697))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:next-time (seconds 0.3))
|
|
(:next-launcher 805)
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.05))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 805
|
|
:init-specs ((:fade-r 0.0))
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 806
|
|
:init-specs ((:texture (starflash level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 92.0 32.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 807
|
|
:init-specs ((:texture (bigpuff level-default-sprite))
|
|
(:num 1.0 1.0)
|
|
(:scale-x (meters 1.5) (meters 0.4))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 92.0 32.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:fade-a -1.0)
|
|
(:timer (seconds 0.2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.5))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 808
|
|
:init-specs ((:texture (hotdot level-default-sprite))
|
|
(:num 0.5 2.0)
|
|
(:y (meters -0.05))
|
|
(:scale-x (meters 0.2) (meters 0.1))
|
|
(:scale-y :copy scale-x)
|
|
(:r 0.0)
|
|
(:g 100.0 28.0)
|
|
(:b 0.0)
|
|
(:a 64.0 64.0)
|
|
(:vel-y (meters 0.0023333333) (meters 0.0016666667))
|
|
(:scalevel-x (meters -0.00083333335))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-g -0.4)
|
|
(:fade-a -0.024242423)
|
|
(:accel-y (meters -0.000100000005) (meters -0.0003))
|
|
(:friction 0.93)
|
|
(:timer (seconds 0.1) (seconds 0.697))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
|
|
(:next-time (seconds 0.3))
|
|
(:next-launcher 809)
|
|
(:conerot-x (degrees 0) (degrees 180))
|
|
(:conerot-y (degrees 0) (degrees 360))
|
|
(:conerot-radius (meters 0.05))
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defpart 809
|
|
:init-specs ((:fade-g 0.0))
|
|
)
|
|
|
|
;; definition for function eco-blue-glow
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defun eco-blue-glow ((arg0 vector))
|
|
(launch-particles (-> *part-id-table* 784) arg0)
|
|
(if (rand-vu-percent? 0.5)
|
|
(launch-particles (-> *part-id-table* 786) arg0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-eco-process
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior target-eco-process target ()
|
|
(when (and (!= (-> self fact eco-level) 0.0)
|
|
(>= (- (-> *display* game-clock frame-counter) (-> self fact eco-pickup-time))
|
|
(the-as time-frame (-> self fact eco-timeout))
|
|
)
|
|
)
|
|
(set! (-> self fact eco-level) 0.0)
|
|
(set! (-> self fact eco-timeout) 0)
|
|
(logclear! (-> self target-flags) (target-flags tf4))
|
|
(send-event self 'reset-collide)
|
|
(stop! (-> self sound))
|
|
)
|
|
(if (logtest? (game-secrets endless-dark) (-> self game secrets))
|
|
(set! (-> self game eco-pill-dark) (-> *FACT-bank* eco-pill-dark-max-default))
|
|
)
|
|
(if (logtest? (game-secrets endless-light) (-> self game secrets))
|
|
(set! (-> self game eco-pill-light) (-> *FACT-bank* eco-pill-light-max-default))
|
|
)
|
|
(when (and (< 0.0 (-> self fact eco-level))
|
|
(not (focus-test? self in-head))
|
|
(not (logtest? (-> self draw status) (draw-control-status no-draw no-draw-temp)))
|
|
(not (movie?))
|
|
(rand-vu-percent?
|
|
(lerp-scale
|
|
0.0
|
|
1.0
|
|
(the float (- (-> self fact eco-timeout)
|
|
(the-as uint (- (-> *display* game-clock frame-counter) (-> self fact eco-pickup-time)))
|
|
)
|
|
)
|
|
0.0
|
|
900.0
|
|
)
|
|
)
|
|
)
|
|
(case (-> self fact eco-type)
|
|
((1)
|
|
(change-sound! (-> self sound) (static-sound-name "yel-eco-jak"))
|
|
(let ((s1-0 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(gp-1 sp-launch-particles-var)
|
|
(s5-0 *sp-particle-system-2d*)
|
|
(s4-0 (-> *part-id-table* (if (rand-vu-percent? 0.5)
|
|
798
|
|
799
|
|
)
|
|
)
|
|
)
|
|
(s2-0 *launch-matrix*)
|
|
)
|
|
(set! (-> s2-0 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s1-0)) quad)
|
|
)
|
|
(gp-1 s5-0 s4-0 s2-0 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
|
)
|
|
(dotimes (gp-2 2)
|
|
(let ((v1-58 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(s5-1 sp-launch-particles-var)
|
|
(s4-1 *sp-particle-system-2d*)
|
|
(s3-1 (-> *part-id-table* 800))
|
|
(s1-1 *launch-matrix*)
|
|
)
|
|
(set! (-> s1-1 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-58)) quad)
|
|
)
|
|
(s5-1 s4-1 s3-1 s1-1 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
|
)
|
|
)
|
|
)
|
|
((2)
|
|
(target-danger-set! (-> self control danger-mode) 'eco-red)
|
|
(update-transforms (-> self control))
|
|
(let ((a1-13 (new 'stack-no-clear 'overlaps-others-params)))
|
|
(set! (-> a1-13 options) (overlaps-others-options))
|
|
(set! (-> a1-13 collide-with-filter) (the-as collide-spec -1))
|
|
(set! (-> a1-13 tlist) *touching-list*)
|
|
(find-overlapping-shapes (-> self control) a1-13)
|
|
)
|
|
(target-danger-set! (-> self control danger-mode) #f)
|
|
(update-transforms (-> self control))
|
|
(change-sound! (-> self sound) (static-sound-name "red-eco-jak"))
|
|
(let ((s1-2 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(gp-3 sp-launch-particles-var)
|
|
(s5-2 *sp-particle-system-2d*)
|
|
(s4-2 (-> *part-id-table* (if (rand-vu-percent? 0.5)
|
|
802
|
|
803
|
|
)
|
|
)
|
|
)
|
|
(s2-2 *launch-matrix*)
|
|
)
|
|
(set! (-> s2-2 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s1-2)) quad)
|
|
)
|
|
(gp-3 s5-2 s4-2 s2-2 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
|
)
|
|
(dotimes (gp-4 2)
|
|
(let ((v1-91 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(s5-3 sp-launch-particles-var)
|
|
(s4-3 *sp-particle-system-2d*)
|
|
(s3-3 (-> *part-id-table* 804))
|
|
(s1-3 *launch-matrix*)
|
|
)
|
|
(set! (-> s1-3 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-91)) quad)
|
|
)
|
|
(s5-3 s4-3 s3-3 s1-3 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
|
)
|
|
)
|
|
)
|
|
((3)
|
|
(change-sound! (-> self sound) (static-sound-name "blue-eco-jak"))
|
|
(let ((v1-104 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
|
|
(cond
|
|
((and (logtest? (-> self control mod-surface flags) (surface-flag air))
|
|
(not (logtest? (-> self control status) (collide-status on-surface)))
|
|
)
|
|
(set! (-> *part-id-table* 788 init-specs 4 initial-valuef) 0.0)
|
|
(set! (-> *part-id-table* 788 init-specs 4 random-rangef) 65536.0)
|
|
)
|
|
(else
|
|
(set! (-> *part-id-table* 788 init-specs 4 initial-valuef) 40960.0)
|
|
(set! (-> *part-id-table* 788 init-specs 4 random-rangef) 16384.0)
|
|
)
|
|
)
|
|
(launch-particles
|
|
(-> *part-id-table* 788)
|
|
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-104))
|
|
)
|
|
)
|
|
(let ((gp-6 (rand-vu-int-range 3 (+ (-> self node-list length) -1))))
|
|
(launch-particles
|
|
(-> *part-id-table* (if (rand-vu-percent? 0.5)
|
|
784
|
|
785
|
|
)
|
|
)
|
|
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-6))
|
|
)
|
|
(if (rand-vu-percent? 0.5)
|
|
(launch-particles
|
|
(-> *part-id-table* 786)
|
|
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data gp-6))
|
|
)
|
|
)
|
|
)
|
|
(let ((v1-128 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(gp-7 sp-launch-particles-var)
|
|
(s5-7 *sp-particle-system-2d*)
|
|
(s4-7 (-> *part-id-table* 789))
|
|
(s2-7 *launch-matrix*)
|
|
)
|
|
(set! (-> s2-7 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-128)) quad)
|
|
)
|
|
(gp-7 s5-7 s4-7 s2-7 (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))
|
|
)
|
|
((5)
|
|
(change-sound! (-> self sound) (static-sound-name "green-eco-jak"))
|
|
(let ((s1-6 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(gp-8 sp-launch-particles-var)
|
|
(s5-8 *sp-particle-system-2d*)
|
|
(s4-8 (-> *part-id-table* (if (rand-vu-percent? 0.5)
|
|
806
|
|
807
|
|
)
|
|
)
|
|
)
|
|
(s2-8 *launch-matrix*)
|
|
)
|
|
(set! (-> s2-8 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data s1-6)) quad)
|
|
)
|
|
(gp-8 s5-8 s4-8 s2-8 (the-as sparticle-launch-state #f) (the-as sparticle-launch-control #f) 1.0)
|
|
)
|
|
(dotimes (gp-9 2)
|
|
(let ((v1-152 (rand-vu-int-range 3 (+ (-> self node-list length) -1)))
|
|
(s5-9 sp-launch-particles-var)
|
|
(s4-9 *sp-particle-system-2d*)
|
|
(s3-9 (-> *part-id-table* 808))
|
|
(s1-7 *launch-matrix*)
|
|
)
|
|
(set! (-> s1-7 trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data v1-152)) quad)
|
|
)
|
|
(s5-9 s4-9 s3-9 s1-7 (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)
|
|
)
|
|
|
|
;; definition for function target-color-effect-process
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior target-color-effect-process target ()
|
|
(when (and (-> self color-effect) (time-elapsed? (-> self color-effect-start-time) (-> self color-effect-duration)))
|
|
(set! (-> self color-effect) #f)
|
|
(set-vector! (-> self draw color-mult) 1.0 1.0 1.0 1.0)
|
|
(set! (-> self draw color-emissive quad) (the-as uint128 0))
|
|
)
|
|
(case (-> self color-effect)
|
|
(('shock)
|
|
(let ((f0-4 (rand-vu-float-range 0.5 2.0)))
|
|
(set-vector! (-> self draw color-mult) f0-4 f0-4 (+ 0.5 f0-4) 1.0)
|
|
)
|
|
)
|
|
(('eco-pill-dark)
|
|
(let ((f30-0 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 1.0 f30-0) (lerp 1.0 0.0 f30-0) (lerp 1.0 1.0 f30-0) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 0.3 f30-0) (lerp 0.0 0.0 f30-0) (lerp 0.0 0.3 f30-0) 1.0)
|
|
)
|
|
)
|
|
(('eco-pill-light)
|
|
(let ((f30-1 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 5.0 f30-1) (lerp 1.0 5.0 f30-1) (lerp 1.0 5.0 f30-1) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 2.0 f30-1) (lerp 0.0 2.0 f30-1) (lerp 0.0 2.0 f30-1) 1.0)
|
|
)
|
|
)
|
|
(('ammo-yellow)
|
|
(let ((f30-2 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 1.0 f30-2) (lerp 1.0 1.0 f30-2) (lerp 1.0 0.0 f30-2) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 0.3 f30-2) (lerp 0.0 0.3 f30-2) (lerp 0.0 0.0 f30-2) 1.0)
|
|
)
|
|
)
|
|
(('ammo-red)
|
|
(let ((f30-3 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 1.0 f30-3) (lerp 1.0 0.6 f30-3) (lerp 1.0 0.6 f30-3) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 0.3 f30-3) (lerp 0.0 0.0 f30-3) (lerp 0.0 0.0 f30-3) 1.0)
|
|
)
|
|
)
|
|
(('ammo-blue)
|
|
(let ((f30-4 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 0.6 f30-4) (lerp 1.0 0.8 f30-4) (lerp 1.0 1.0 f30-4) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 0.0 f30-4) (lerp 0.0 0.1 f30-4) (lerp 0.0 0.3 f30-4) 1.0)
|
|
)
|
|
)
|
|
(('ammo-dark)
|
|
(let ((f30-5 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 1.0 f30-5) (lerp 1.0 0.7 f30-5) (lerp 1.0 0.8 f30-5) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 0.2 f30-5) (lerp 0.0 0.0 f30-5) (lerp 0.0 0.1 f30-5) 1.0)
|
|
)
|
|
)
|
|
(('health 'eco-green)
|
|
(let ((f30-6 (lerp-scale
|
|
1.0
|
|
0.0
|
|
(the float (- (current-time) (-> self color-effect-start-time)))
|
|
(* 0.25 (the float (-> self color-effect-duration)))
|
|
(the float (-> self color-effect-duration))
|
|
)
|
|
)
|
|
)
|
|
(set-vector! (-> self draw color-mult) (lerp 1.0 0.5 f30-6) (lerp 1.0 1.0 f30-6) (lerp 1.0 0.5 f30-6) 1.0)
|
|
(set-vector! (-> self draw color-emissive) (lerp 0.0 0.0 f30-6) (lerp 0.0 0.5 f30-6) (lerp 0.0 0.0 f30-6) 1.0)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-update-segs
|
|
(defun target-update-segs ((arg0 process-drawable))
|
|
(let ((f30-0 (-> *FACT-bank* health-max-default)))
|
|
(let ((s5-0 (-> *game-info* features)))
|
|
(when (!= (-> arg0 type) target)
|
|
(if (-> *setting-control* user-current beard)
|
|
(setup-masks (-> arg0 draw) 4 0)
|
|
(setup-masks (-> arg0 draw) 0 4)
|
|
)
|
|
(setup-masks (-> arg0 draw) 32 64)
|
|
)
|
|
(cond
|
|
((logtest? (game-feature armor0) s5-0)
|
|
(set! f30-0 (+ 2.0 f30-0))
|
|
(setup-masks (-> arg0 draw) 2 0)
|
|
)
|
|
(else
|
|
(setup-masks (-> arg0 draw) 0 2)
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (game-feature armor1) s5-0)
|
|
(set! f30-0 (+ 2.0 f30-0))
|
|
(setup-masks (-> arg0 draw) 16 0)
|
|
)
|
|
(else
|
|
(setup-masks (-> arg0 draw) 0 16)
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (game-feature armor2) s5-0)
|
|
(set! f30-0 (+ 2.0 f30-0))
|
|
(setup-masks (-> arg0 draw) 128 0)
|
|
)
|
|
(else
|
|
(setup-masks (-> arg0 draw) 0 128)
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (game-feature armor3) s5-0)
|
|
(set! f30-0 (+ 2.0 f30-0))
|
|
(setup-masks (-> arg0 draw) 512 256)
|
|
)
|
|
(else
|
|
(setup-masks (-> arg0 draw) 256 512)
|
|
)
|
|
)
|
|
)
|
|
(if (not (-> *setting-control* user-current armor))
|
|
(setup-masks (-> arg0 draw) 256 658)
|
|
)
|
|
f30-0
|
|
)
|
|
)
|
|
|
|
;; definition for function target-draw-process
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior target-draw-process target ()
|
|
(let ((gp-0 (the-as uint (-> self game features))))
|
|
(if (not (-> *setting-control* user-current armor))
|
|
(set! gp-0 (logand (the-as uint #xff0fffffffffffff) (the-as game-feature gp-0)))
|
|
)
|
|
(when (or (!= (-> self game old-features) gp-0) (not (time-elapsed? (-> self init-time) (seconds 0.5))))
|
|
(let ((f30-0 (-> self fact health-max))
|
|
(f0-0 (target-update-segs self))
|
|
)
|
|
(if (!= f30-0 f0-0)
|
|
(pickup-collectable! (-> self fact) (pickup-type health-max) (- f0-0 f30-0) (the-as handle #f))
|
|
)
|
|
)
|
|
(set! (-> self game old-features) (the-as game-feature gp-0))
|
|
)
|
|
)
|
|
(+! (-> self scarf-interp) (* 0.2 (- (-> self scarf-interp-targ) (-> self scarf-interp))))
|
|
(seek! (-> self scarf-interp) (-> self scarf-interp-targ) (seconds-per-frame))
|
|
(+! (-> self goggles-interp) (* 0.2 (- (-> self goggles-interp-targ) (-> self goggles-interp))))
|
|
(seek! (-> self goggles-interp) (-> self goggles-interp-targ) (seconds-per-frame))
|
|
(let ((f30-1 (-> self scarf-interp))
|
|
(f28-0 (-> self goggles-interp))
|
|
(f26-0 (-> self darkjak-interp))
|
|
(f24-0 (-> self lightjak-interp))
|
|
)
|
|
(when (or (!= (-> self scarf-interp-old) f30-1)
|
|
(!= (-> self goggles-interp-old) f28-0)
|
|
(!= (-> self darkjak-interp-old) f26-0)
|
|
(or (!= (-> self lightjak-interp-old) f24-0) (not (time-elapsed? (-> self teleport-time) (seconds 0.6))))
|
|
)
|
|
(if (>= (-> self scarf-interp) 1.0)
|
|
(setup-masks (-> self draw) 64 32)
|
|
(setup-masks (-> self draw) 32 64)
|
|
)
|
|
(cond
|
|
((and (= f30-1 0.0)
|
|
(= f28-0 0.0)
|
|
(= f26-0 0.0)
|
|
(and (= f24-0 0.0) (not (time-elapsed? (-> self teleport-time) (seconds 0.5))))
|
|
)
|
|
(set! (-> self skel override 0) 0.00001)
|
|
(set! (-> self skel override 41) 1.0)
|
|
(set! (-> self skel override 46) 1.0)
|
|
(set! (-> self skel override 52) 1.0)
|
|
)
|
|
((and (= f30-1 0.0) (= f28-0 0.0) (= f26-0 0.0) (= f24-0 0.0))
|
|
(set! (-> self skel override 0) 0.0)
|
|
(set! (-> self skel override 41) 0.0)
|
|
(set! (-> self scarf-interp-old) f30-1)
|
|
(set! (-> self goggles-interp-old) f28-0)
|
|
(set! (-> self darkjak-interp-old) f26-0)
|
|
(set! (-> self lightjak-interp-old) f24-0)
|
|
)
|
|
(else
|
|
(set! (-> self skel override 0) 1.0)
|
|
(set! (-> self skel override 8) f30-1)
|
|
(set! (-> self skel override 5) f28-0)
|
|
(set! (-> self skel override 2) f26-0)
|
|
(set! (-> self skel override 6) f26-0)
|
|
(set! (-> self skel override 7) f26-0)
|
|
(set! (-> self skel override 4) f26-0)
|
|
(cond
|
|
((!= f26-0 0.0)
|
|
(set! (-> self skel override 41) 1.0)
|
|
(set! (-> self skel override 46) 2.0)
|
|
(set! (-> self skel override 52) 2.0)
|
|
)
|
|
((!= f24-0 0.0)
|
|
(set! (-> self skel override 41) 1.0)
|
|
(set! (-> self skel override 46) 0.0)
|
|
(set! (-> self skel override 52) 0.0)
|
|
)
|
|
(else
|
|
(set! (-> self skel override 41) 0.0)
|
|
)
|
|
)
|
|
(set! (-> self scarf-interp-old) f30-1)
|
|
(set! (-> self goggles-interp-old) f28-0)
|
|
(set! (-> self darkjak-interp-old) f26-0)
|
|
(set! (-> self lightjak-interp-old) f24-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(when (!= (-> self cloth) (-> *setting-control* user-current cloth))
|
|
(process-drawable-show-all-cloth self (-> *setting-control* user-current cloth))
|
|
(set! (-> self cloth) (-> *setting-control* user-current cloth))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-powerup-process
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior target-powerup-process target ()
|
|
(target-draw-process)
|
|
(let ((gp-0 (-> self ext-anim-control)))
|
|
(when (!= (-> self ext-anim) (-> self pending-ext-anim))
|
|
(when (not (or (= (-> gp-0 status) 'initialize) (= (-> self ext-anim) (target-anim unknown))))
|
|
(when (joint-control-cleanup (-> self skel) (-> gp-0 heap) (the-as art-joint-anim jakb-stance-loop-ja))
|
|
(target-gun-end-mode 'fast-exit)
|
|
(set! (-> self skel float-channels) (the-as uint 0))
|
|
(reset (-> self skel top-anim))
|
|
)
|
|
(send-event (ppointer->process (-> self sidekick)) 'cleanup)
|
|
(unload-from-heap *anim-manager* (-> gp-0 heap))
|
|
(unlink-shaders-in-heap *texture-page-dir* (-> gp-0 heap))
|
|
)
|
|
(case (-> self pending-ext-anim)
|
|
(((target-anim default) (target-anim board) (target-anim dark) (target-anim light))
|
|
(set-pending-file gp-0 "jak-external" (the-as int (-> self pending-ext-anim)) (process->handle self) 0.0)
|
|
)
|
|
(else
|
|
(set-pending-file gp-0 (the-as string #f) 0 (process->handle self) 0.0)
|
|
)
|
|
)
|
|
)
|
|
(if (= (-> gp-0 status) 'active)
|
|
(set! (-> self ext-anim) (the-as target-anim (-> gp-0 load-file-part)))
|
|
(set! (-> self ext-anim) (target-anim unknown))
|
|
)
|
|
)
|
|
(let ((f30-0 (-> self control collision-spheres 0 prim-core world-sphere w)))
|
|
(if (focus-test? self board)
|
|
(+! (-> self control collision-spheres 0 prim-core world-sphere w) 4096.0)
|
|
)
|
|
(water-control-method-10 (-> self water))
|
|
(set! (-> self control collision-spheres 0 prim-core world-sphere w) f30-0)
|
|
)
|
|
(if (and (logtest? (-> self water flags) (water-flag under-water))
|
|
(not (logtest? (-> self water flags) (water-flag swim-ground)))
|
|
)
|
|
(set-time! (-> self control unknown-time-frame26))
|
|
(set-time! (-> self control unknown-time-frame27))
|
|
)
|
|
(cond
|
|
((and (= (-> self control ground-pat material) (pat-material ice))
|
|
(and (>= (-> self control ctrl-xz-vel) 204.8)
|
|
(not (time-elapsed? (-> self control last-time-on-surface) (seconds 0.05)))
|
|
)
|
|
)
|
|
(let ((gp-1 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node jakb-lod0-jg RbigToe))))
|
|
(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)
|
|
)
|
|
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 159) gp-1)
|
|
)
|
|
)
|
|
(let ((gp-2 (vector<-cspace! (new 'stack-no-clear 'vector) (joint-node jakb-lod0-jg LbigToe))))
|
|
(if (and (< (fabs (vector-dot
|
|
(-> self control dynam gravity-normal)
|
|
(vector-! (new 'stack-no-clear 'vector) gp-2 (-> self control trans))
|
|
)
|
|
)
|
|
819.2
|
|
)
|
|
(rand-vu-percent? 0.5)
|
|
)
|
|
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 159) gp-2)
|
|
)
|
|
)
|
|
(let ((f0-10 (lerp-scale 0.8 1.0 (-> self control ctrl-xz-vel) 0.0 81920.0)))
|
|
(let ((v1-100 (ja-group)))
|
|
(if (not (and v1-100 (= v1-100 jakb-ice-stance-ja)))
|
|
(set! f0-10 (* 0.8 f0-10))
|
|
)
|
|
)
|
|
(seek! (-> self control unknown-float45) f0-10 (seconds-per-frame))
|
|
)
|
|
(let ((f30-1 (-> self control unknown-float45))
|
|
(f0-14 (lerp-scale -0.3 0.3 (-> self control ctrl-xz-vel) 0.0 81920.0))
|
|
)
|
|
(sound-play-by-name
|
|
(static-sound-name "ice-loop")
|
|
(-> self control unknown-sound-id04)
|
|
(the int (* 1024.0 f30-1))
|
|
(the int (* 1524.0 f0-14))
|
|
0
|
|
(sound-group)
|
|
(-> self control trans)
|
|
)
|
|
)
|
|
)
|
|
((< 0.0 (-> self control unknown-float45))
|
|
(set! (-> self control unknown-float45) 0.0)
|
|
(let ((v1-121 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
|
(set! (-> v1-121 command) (sound-command set-param))
|
|
(set! (-> v1-121 id) (-> self control unknown-sound-id04))
|
|
(set! (-> v1-121 params volume) -4)
|
|
(set! (-> v1-121 auto-time) 48)
|
|
(set! (-> v1-121 auto-from) 2)
|
|
(set! (-> v1-121 params mask) (the-as uint 17))
|
|
(-> v1-121 id)
|
|
)
|
|
)
|
|
)
|
|
(target-darkjak-process)
|
|
(target-lightjak-process)
|
|
(target-invisible-process)
|
|
(when (nonzero? (-> self fact trick-point-duration))
|
|
(when (>= (- (-> *display* game-clock frame-counter) (-> self fact trick-point-start-time))
|
|
(-> self fact trick-point-duration)
|
|
)
|
|
(format #t "------------> ~,,f total points~%" (-> self fact trick-point))
|
|
(send-event (handle->process (-> self notify)) 'notify 'trick-judge (-> self fact trick-point))
|
|
(reset! (-> self fact) 'trick-judge)
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (-> self game features) (game-feature feature0))
|
|
(cond
|
|
((< (current-time) (-> self fact stop-time-timeout))
|
|
(set-setting! 'bg-a 'abs 0.3 0)
|
|
(set-setting! 'bg-r 'abs 1.0 0)
|
|
(update-rates! (-> *display* entity-clock) 0.0)
|
|
(if (zero? (mod (-> *display* base-clock integral-frame-counter) 60))
|
|
(sound-play "stopwatch")
|
|
)
|
|
)
|
|
((nonzero? (-> self fact stop-time-timeout))
|
|
(remove-setting! 'bg-a)
|
|
(remove-setting! 'bg-r)
|
|
(update-rates! (-> *display* entity-clock) 1.0)
|
|
(set! (-> self fact stop-time-timeout) 0)
|
|
0
|
|
)
|
|
((cpad-pressed? (-> self control cpad number) r1)
|
|
(set! (-> self fact stop-time-timeout) (+ (current-time) (seconds 5)))
|
|
)
|
|
)
|
|
)
|
|
((logtest? (-> self game features) (game-feature feature2))
|
|
(when *time-of-day-fast*
|
|
(set! *time-of-day-fast* #f)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'ratio 1.0)
|
|
)
|
|
(cond
|
|
((cpad-hold? (-> self control cpad number) r1)
|
|
(update-rates!
|
|
(-> *display* entity-clock)
|
|
(seek (-> *display* entity-clock clock-ratio) 60.0 (* 120.0 (seconds-per-frame)))
|
|
)
|
|
(update-rates! (-> *display* bg-clock) (-> *display* entity-clock clock-ratio))
|
|
(update-rates!
|
|
(-> *display* target-clock)
|
|
(seek (-> *display* target-clock clock-ratio) 2.0 (* 120.0 (seconds-per-frame)))
|
|
)
|
|
)
|
|
((or (!= (-> *display* entity-clock clock-ratio) 2.0) (!= (-> *display* target-clock clock-ratio) 1.0))
|
|
(update-rates!
|
|
(-> *display* entity-clock)
|
|
(seek (-> *display* entity-clock clock-ratio) 2.0 (* 120.0 (seconds-per-frame)))
|
|
)
|
|
(update-rates! (-> *display* bg-clock) (-> *display* entity-clock clock-ratio))
|
|
(update-rates!
|
|
(-> *display* target-clock)
|
|
(seek (-> *display* target-clock clock-ratio) 1.0 (* 120.0 (seconds-per-frame)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((logtest? (-> self game features) (game-feature feature4))
|
|
(when *time-of-day-fast*
|
|
(set! *time-of-day-fast* #f)
|
|
(send-event (ppointer->process *time-of-day*) 'change 'ratio 1.0)
|
|
)
|
|
(cond
|
|
((cpad-hold? (-> self control cpad number) r1)
|
|
(update-rates!
|
|
(-> *display* entity-clock)
|
|
(seek (-> *display* entity-clock clock-ratio) 0.3 (* 30.0 (seconds-per-frame)))
|
|
)
|
|
(update-rates! (-> *display* bg-clock) (-> *display* entity-clock clock-ratio))
|
|
(update-rates!
|
|
(-> *display* target-clock)
|
|
(seek (-> *display* target-clock clock-ratio) 0.5 (* 30.0 (seconds-per-frame)))
|
|
)
|
|
)
|
|
((or (!= (-> *display* entity-clock clock-ratio) 1.0) (!= (-> *display* target-clock clock-ratio) 1.0))
|
|
(update-rates!
|
|
(-> *display* entity-clock)
|
|
(seek (-> *display* entity-clock clock-ratio) 1.0 (* 30.0 (seconds-per-frame)))
|
|
)
|
|
(update-rates! (-> *display* bg-clock) (-> *display* entity-clock clock-ratio))
|
|
(update-rates!
|
|
(-> *display* target-clock)
|
|
(seek (-> *display* target-clock clock-ratio) 1.0 (* 30.0 (seconds-per-frame)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(target-eco-process)
|
|
(target-color-effect-process)
|
|
(if (logtest? (-> self target-effect) (target-effect te0 te1 te2))
|
|
(logior! (-> self draw global-effect) (draw-control-global-effect no-textures))
|
|
(logclear! (-> self draw global-effect) (draw-control-global-effect no-textures))
|
|
)
|
|
(if (logtest? (-> self target-effect) (target-effect te3 te4 te5))
|
|
(logior! (-> self draw global-effect) (draw-control-global-effect rim-lights))
|
|
(logclear! (-> self draw global-effect) (draw-control-global-effect rim-lights))
|
|
)
|
|
(logclear! (-> self focus-status) (focus-status super))
|
|
(if (or (focus-test? self dead hit)
|
|
(or (logtest? (target-flags tf2 tinvuln1 tf5 tinvuln2 invisible) (-> self target-flags))
|
|
(-> *setting-control* user-current ignore-target)
|
|
)
|
|
)
|
|
(logior! (-> self focus-status) (focus-status ignore))
|
|
(logclear! (-> self focus-status) (focus-status ignore))
|
|
)
|
|
(cond
|
|
((or (and (logtest? (-> self control mod-surface flags) (surface-flag air))
|
|
(not (logtest? (-> self control status) (collide-status on-surface)))
|
|
)
|
|
(and (focus-test? self board) (not (time-elapsed? (-> self board last-jump-time) (seconds 0.1))))
|
|
)
|
|
(logior! (-> self focus-status) (focus-status in-air))
|
|
(if (logtest? (surface-flag super) (-> self control current-surface flags))
|
|
(logior! (-> self focus-status) (focus-status super))
|
|
)
|
|
)
|
|
(else
|
|
(logclear! (-> self focus-status) (focus-status in-air))
|
|
)
|
|
)
|
|
(if (using-gun? self)
|
|
(logior! (-> self focus-status) (focus-status gun))
|
|
(logclear! (-> self focus-status) (focus-status gun))
|
|
)
|
|
(if (or (logtest? (water-flag touch-water) (-> self water flags))
|
|
(logtest? (-> self control status) (collide-status on-water))
|
|
)
|
|
(logior! (-> self focus-status) (focus-status touch-water))
|
|
(logclear! (-> self focus-status) (focus-status touch-water))
|
|
)
|
|
(if (logtest? (-> self control status) (collide-status on-water))
|
|
(logior! (-> self focus-status) (focus-status on-water))
|
|
(logclear! (-> self focus-status) (focus-status on-water))
|
|
)
|
|
(if (and (logtest? (-> self water flags) (water-flag under-water))
|
|
(not (logtest? (-> self water flags) (water-flag swim-ground)))
|
|
)
|
|
(logior! (-> self focus-status) (focus-status under-water))
|
|
(logclear! (-> self focus-status) (focus-status under-water))
|
|
)
|
|
(if (not (time-elapsed? (-> self gun fire-time) (seconds 0.1)))
|
|
(logior! (-> self focus-status) (focus-status shooting))
|
|
(logclear! (-> self focus-status) (focus-status shooting))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-powerup-effect
|
|
;; WARN: Return type mismatch int vs 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)
|
|
)
|
|
|
|
;; definition for function process-contact-action
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior process-contact-action target ((arg0 process))
|
|
(when (logtest? (-> *game-info* features) (game-feature feature0))
|
|
(cond
|
|
(arg0
|
|
(+! (-> self clock ref-count) -1)
|
|
(+! (-> arg0 clock ref-count) 1)
|
|
(set! (-> self clock) (-> arg0 clock))
|
|
)
|
|
(else
|
|
(+! (-> self clock ref-count) -1)
|
|
(+! (-> *display* base-clock ref-count) 1)
|
|
(set! (-> self clock) (-> *display* base-clock))
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|