mirror of
https://github.com/open-goal/jak-project
synced 2026-05-27 08:09:29 -04:00
58a5440c8a
Makes a bunch of missions mostly playable, including: - `arena-training-1` - `arena-fight-1` - `wascity-chase` - `arena-fight-2` - `arena-fight-3` - `volcano-darkeco` - `desert-hover` - `nest-eggs` - `temple-climb` - `temple-oracle` - `temple-tests` - `desert-beast-battle` - `desert-turtle-training` - `desert-course-race` - `desert-artifact-race1` - `wascity-leaper-race` - `wascity-pre-game` - `sewer-met-hum` - `forest-kill-plants` - `forest-ring-chase` - `temple-defend` - `tower-destroy` - `desert-glide` --- Files: - `ripple` - `waswide-mood` - `sig-rider` - `nst-tasks` - `nst-part` - `nst-gas` - `nst-eggs-h` - `nst-obs` - `nst-mood` - `egg-spider` - `wasdoors-init` - `wasall-tasks` - `wvehicle-race` - `wcar-marauder` - `wcar-marauder-b` - `turret-control` - `was-squad-control` - `turtle-training` - `kleever-rider` - `course-race` - `artifact-race` - `desert-hover` - `desbeast-path-h` - `des-beast` - `desertg-obs` - `desertf-obs` - `desertd-obs` - `desert-dust-storm` - `des-cactus` - `race-hud` - `race-info` - `race-manager` - `tizard` - `flyingsaw` - `hover-training` - `temple-mood` - `temple-obs` - `temple-obs2` - `temple-part` - `temple-scenes` - `templex-mood` - `templex-obs` - `templex-part` - `tomb-baby-spider` - `target-turret-shot` - `target-turret` - `beast-battle-path` - `des-beast-2` - `mh-flyer` - `scorpion-gun` - `hover-enemy-h` - `hover-enemy` - `hover-formation-h` - `hover-formation` - `hover-nav-control-h` - `hover-nav-control` - `flamer-hover` - `hover-nav-templea` - `robo-hover` - `hover-nav-sewb` - `hover-nav-sewg` - `hover-nav-sewj` - `hover-nav-sewl` - `hover-nav-sewo` - `hover-nav-towera` - `tower-mood` - `tower-obs` - `tower-scenes` - `tower-part` - `eco-green-collider` - `forest-bridges` - `forest-kill-plants` - `forest-mood` - `forest-ring-chase` - `forest-tasks` - `forest-part` - `foresta-obs` - `hover-nav-foresta` - `mh-plant` - `dp-bipedal-part` - `dp-bipedal-shot` - `dp-bipedal` - `neo-spawner` - `for-turret` - `for-turret-shot` - `neo-wasp` - `neo-wasp-part` - `volcanox-scenes` - `volcanox-mood` - `volcano-scenes` - `volcano-mood` - `volcano-obs` - `volcano-obs2` - `chain-physics` - `rigid-body-plat` - `volcano-part` - `flamer-lava` - `flitter` - `spiky-frog` - `flut-wild` - `target-indax` - `target-indax-hang` - `mantis` - `volcanox-obs` - `spyder` - `wcar-faccar` - `mhcity-obs2` - `mhcity-part` - `mhcity-obs` - `dm-mine-spider` - `rapid-gunner` - `stadium-mood` - `stadium-scenes` - `stadiuma-mood` - `stadiuma-part` - `kanga-lizard` - `marauder` - `arena-scenes` - `wasstada-mood` - `wasstada-obs` - `wasstada-part` - `wasstadb-obs` - `wasstadc-obs` - `dm-flyer` - `maker-part` - `maker-projectile` - `skeet-part` - `wascity-turret` - `wasgun-h` - `wasgun-hud` - `wasgun-manager` - `nav-graph-h` - `traffic-engine-h` - `waswide-init` - `cty-borrow-manager-h` - `cty-borrow-manager` - `desert-part` - `height-map-h` - `height-map` - `traffic-height-map` - `vehicle-control` - `hvehicle-h` - `hvehicle` - `hvehicle-effects` - `hvehicle-physics` - `hvehicle-util` - `glider-h` - `glider-hud` - `glider-manager` - `glider-ring` - `glider-ring-part` - `h-glider` - `hanga-init` - `was-pre-game` - `was-leaper-race` - `flut-racer` - `desert-scenes` - `desert-lizard-h` - `desert-lizard-task` - `desert-lizard` - `throne-scenes` - `waspal-mood` - `waspala-obs` - `waspala-part` - `deswalk-obs` - `deswalk-part` - `terraformer-drone` - `terraformer-head` - `terraformer-part` - `terraformer-setup`
1096 lines
39 KiB
Common Lisp
Vendored
Generated
1096 lines
39 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition for symbol *footstep-surface*, type pat-surface
|
|
(define *footstep-surface* (new 'static 'pat-surface :material (pat-material grass)))
|
|
|
|
;; definition for symbol *debug-effect-control*, type symbol
|
|
(define *debug-effect-control* #f)
|
|
|
|
;; definition for function sound-name-with-material
|
|
(defun sound-name-with-material ((arg0 string) (arg1 pat-surface) (arg2 string))
|
|
(format
|
|
(clear *temp-string*)
|
|
"~S~S~S"
|
|
arg0
|
|
(-> (new 'static 'boxed-array :type string
|
|
"-unk"
|
|
"-ice"
|
|
"-qsd"
|
|
"-wtr"
|
|
"-tar"
|
|
"-san"
|
|
"-wod"
|
|
"-grs"
|
|
"-pmt"
|
|
"-snw"
|
|
"-dsn"
|
|
"-unk"
|
|
"-lav"
|
|
"-cwd"
|
|
"-grv"
|
|
"-drt"
|
|
"-mtl"
|
|
"-str"
|
|
"-pmt"
|
|
"-swm"
|
|
"-unk"
|
|
"-mtl"
|
|
"-neu"
|
|
"-stn"
|
|
"-cmt"
|
|
"-car"
|
|
"-gmt"
|
|
"-smt"
|
|
"-hwd"
|
|
"-sqi"
|
|
"-mhm"
|
|
"-for"
|
|
"-mhs"
|
|
"-dma"
|
|
)
|
|
(-> arg1 material)
|
|
)
|
|
arg2
|
|
)
|
|
(string->sound-name *temp-string*)
|
|
)
|
|
|
|
;; definition for function effect-param->sound-spec
|
|
(defun effect-param->sound-spec ((arg0 sound-spec) (arg1 (pointer float)) (arg2 int) (arg3 process-focusable))
|
|
(while (> arg2 0)
|
|
(case (the int (-> arg1 0))
|
|
((3)
|
|
(logior! (-> arg0 mask) (sound-mask volume))
|
|
(set! (-> arg0 volume) (the int (* 1024.0 (-> arg1 1))))
|
|
)
|
|
((4)
|
|
(logior! (-> arg0 mask) (sound-mask volume))
|
|
(+! (-> arg0 volume) (the int (* 1024.0 (* (-> arg1 1) (rand-vu)))))
|
|
)
|
|
((5)
|
|
(logior! (-> arg0 mask) (sound-mask pitch))
|
|
(set! (-> arg0 pitch-mod) (the int (* 1524.0 (-> arg1 1))))
|
|
)
|
|
((6)
|
|
(logior! (-> arg0 mask) (sound-mask pitch))
|
|
(+! (-> arg0 pitch-mod) (the int (* 1524.0 (* (-> arg1 1) (rand-vu)))))
|
|
)
|
|
((9)
|
|
(logior! (-> arg0 mask) (sound-mask bend))
|
|
(set! (-> arg0 bend) (the int (* 327.66998 (-> arg1 1))))
|
|
)
|
|
((10)
|
|
(logior! (-> arg0 mask) (sound-mask bend))
|
|
(+! (-> arg0 bend) (the int (* 327.66998 (* (-> arg1 1) (rand-vu)))))
|
|
)
|
|
((11)
|
|
(logior! (-> arg0 mask) (sound-mask fo-min))
|
|
(set! (-> arg0 fo-min) (the int (-> arg1 1)))
|
|
)
|
|
((12)
|
|
(logior! (-> arg0 mask) (sound-mask fo-max))
|
|
(set! (-> arg0 fo-max) (the int (-> arg1 1)))
|
|
)
|
|
((13)
|
|
(logior! (-> arg0 mask) (sound-mask fo-curve))
|
|
(set! (-> arg0 fo-curve) (the int (-> arg1 1)))
|
|
)
|
|
((19)
|
|
(set! (-> arg0 priority) (the int (-> arg1 1)))
|
|
)
|
|
((25)
|
|
(logior! (-> arg0 mask) (sound-mask reg0))
|
|
(set! (-> arg0 reg 0) (the-as uint (-> *footstep-surface* material)))
|
|
(let* ((s2-3 arg3)
|
|
(v1-33 (if (type? s2-3 process-focusable)
|
|
s2-3
|
|
)
|
|
)
|
|
)
|
|
(when v1-33
|
|
(cond
|
|
((focus-test? v1-33 in-air)
|
|
(set! (-> arg0 reg 0) (the-as uint 126))
|
|
)
|
|
((focus-test? v1-33 touch-water)
|
|
(set! (-> arg0 reg 0) (the-as uint 127))
|
|
)
|
|
(else
|
|
(let* ((s2-4 (-> v1-33 root))
|
|
(v1-34 (if (type? s2-4 collide-shape-moving)
|
|
s2-4
|
|
)
|
|
)
|
|
)
|
|
(if v1-34
|
|
(set! (-> arg0 reg 0) (the-as uint (-> (the-as collide-shape-moving v1-34) ground-pat material)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((21)
|
|
(logior! (-> arg0 mask) (sound-mask reg0))
|
|
(set! (-> arg0 reg 0) (the-as uint (the int (-> arg1 1))))
|
|
)
|
|
((22)
|
|
(logior! (-> arg0 mask) (sound-mask reg1))
|
|
(set! (-> arg0 reg 1) (the-as uint (the int (-> arg1 1))))
|
|
)
|
|
((23)
|
|
(logior! (-> arg0 mask) (sound-mask reg2))
|
|
(set! (-> arg0 reg 2) (the-as uint (the int (-> arg1 1))))
|
|
)
|
|
)
|
|
(+! arg2 -2)
|
|
(set! arg1 (&-> arg1 2))
|
|
)
|
|
arg0
|
|
)
|
|
|
|
;; definition for method 9 of type effect-control
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod effect-control-method-9 ((this effect-control))
|
|
(let* ((a0-1 (-> this process skel))
|
|
(v1-3 (if (< (the-as uint (-> this channel-offset)) (-> a0-1 active-channels))
|
|
(-> a0-1 root-channel (-> this channel-offset))
|
|
(the-as joint-control-channel #f)
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((and v1-3 (-> v1-3 frame-group))
|
|
(let* ((s5-0 (-> v1-3 frame-group))
|
|
(f30-0 (+ (* (-> v1-3 frame-num) (-> s5-0 artist-step)) (-> s5-0 artist-base)))
|
|
)
|
|
(let ((a0-3 (-> a0-1 root-channel 0 num-func)))
|
|
(cond
|
|
((!= s5-0 (-> this last-frame-group))
|
|
(set! (-> this res) (-> s5-0 extra))
|
|
(let ((v1-6 (-> (lookup-tag-idx (-> s5-0 extra) 'effect-name 'base -1000000000.0) lo)))
|
|
(set! (-> this name) (if (>= (the-as int v1-6) 0)
|
|
(&-> (-> s5-0 extra tag) v1-6)
|
|
(the-as (pointer res-tag) #f)
|
|
)
|
|
)
|
|
)
|
|
(if (and (-> this name) (= (-> this name 0 key-frame) -1000000000.0))
|
|
(set! (-> this name) (&-> (-> this name) 1))
|
|
)
|
|
(play-effects-from-res-lump this f30-0 f30-0 f30-0)
|
|
)
|
|
((or (not (-> this name)) (= f30-0 (-> this last-frame-num)))
|
|
)
|
|
(else
|
|
(let ((f28-0 (-> this last-frame-num))
|
|
(f26-0 f30-0)
|
|
)
|
|
(cond
|
|
((= a0-3 num-func-seek!)
|
|
(let ((f0-6 (+ (* (-> v1-3 param 0) (-> s5-0 artist-step)) (-> s5-0 artist-base))))
|
|
(cond
|
|
((< f26-0 f28-0)
|
|
(if (>= f28-0 f0-6)
|
|
(play-effects-from-res-lump this f26-0 f28-0 f30-0)
|
|
)
|
|
)
|
|
(else
|
|
(if (>= f0-6 f28-0)
|
|
(play-effects-from-res-lump this f28-0 f26-0 f30-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((or (= a0-3 num-func-loop!) (= a0-3 num-func-loop-speedless!) (= a0-3 num-func-loop-set!))
|
|
(cond
|
|
((>= (-> v1-3 param 0) 0.0)
|
|
(cond
|
|
((< f26-0 f28-0)
|
|
(play-effects-from-res-lump this f28-0 9999999.0 f30-0)
|
|
(play-effects-from-res-lump this -100000000.0 f26-0 9999999.0)
|
|
)
|
|
(else
|
|
(play-effects-from-res-lump this f28-0 f26-0 f30-0)
|
|
)
|
|
)
|
|
)
|
|
((< f28-0 f26-0)
|
|
(play-effects-from-res-lump this f26-0 9999999.0 f30-0)
|
|
(play-effects-from-res-lump this -100000000.0 f28-0 9999999.0)
|
|
)
|
|
(else
|
|
(play-effects-from-res-lump this f26-0 f28-0 f30-0)
|
|
)
|
|
)
|
|
)
|
|
((= a0-3 num-func-+!)
|
|
(if (>= (-> v1-3 param 0) 0.0)
|
|
(play-effects-from-res-lump this f28-0 f26-0 f30-0)
|
|
(play-effects-from-res-lump this f26-0 f28-0 f30-0)
|
|
)
|
|
)
|
|
((= a0-3 num-func-identity)
|
|
(play-effects-from-res-lump this f30-0 f30-0 f30-0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> this last-frame-group) s5-0)
|
|
(set! (-> this last-frame-num) f30-0)
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> this last-frame-group) #f)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 14 of type effect-control
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod play-effects-from-res-lump ((this effect-control) (arg0 float) (arg1 float) (arg2 float))
|
|
(let ((s2-0 (-> this name)))
|
|
(while (= (-> s2-0 0 name) 'effect-name)
|
|
(let ((f0-0 (-> s2-0 0 key-frame)))
|
|
(when (or (and (< f0-0 arg1) (< arg0 f0-0)) (= f0-0 arg2))
|
|
(let* ((a0-1 this)
|
|
(t9-0 (method-of-object a0-1 do-effect))
|
|
(v1-7 (-> this res))
|
|
(a1-1 (-> s2-0 0))
|
|
)
|
|
(t9-0
|
|
a0-1
|
|
(the-as string (-> (the-as (pointer int32) (&+ (-> v1-7 data-base) (-> a1-1 data-offset)))))
|
|
f0-0
|
|
-1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! s2-0 (&-> s2-0 1))
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 10 of type effect-control
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
;; WARN: Function (method 10 effect-control) has a return type of none, but the expression builder found a return statement.
|
|
(defmethod do-effect ((this effect-control) (arg0 string) (arg1 float) (arg2 int))
|
|
(local-vars (sv-288 res-lump))
|
|
(let* ((v1-2 (rtype-of arg0))
|
|
(s3-0 (cond
|
|
((= v1-2 symbol)
|
|
(symbol->string (the-as symbol arg0))
|
|
)
|
|
((= v1-2 string)
|
|
arg0
|
|
)
|
|
(else
|
|
(the-as string #f)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (-> this flags) (effect-control-flag ecf2))
|
|
(return #f)
|
|
)
|
|
((string= s3-0 "script")
|
|
(let ((gp-1 (the-as pair (get-property-struct
|
|
(-> this res)
|
|
'effect-script
|
|
'exact
|
|
arg1
|
|
(the-as structure #f)
|
|
(the-as (pointer res-tag) #f)
|
|
*res-static-buf*
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(script-eval gp-1)
|
|
)
|
|
(return #f)
|
|
)
|
|
)
|
|
(set! arg2 (cond
|
|
((< arg2 0)
|
|
(let ((v0-7 (get-property-value
|
|
(-> this res)
|
|
'effect-joint
|
|
'exact
|
|
arg1
|
|
(the-as uint128 0)
|
|
(the-as (pointer res-tag) #f)
|
|
*res-static-buf*
|
|
)
|
|
)
|
|
)
|
|
(if (zero? v0-7)
|
|
0
|
|
(the-as int (+ v0-7 1))
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(empty)
|
|
arg2
|
|
)
|
|
)
|
|
)
|
|
(when (logtest? (-> this flags) (effect-control-flag ecf0))
|
|
(if (send-event (-> this process) 'effect-control s3-0 arg1 arg2)
|
|
(return 0)
|
|
)
|
|
)
|
|
(cond
|
|
((and (= (-> s3-0 data 0) 101)
|
|
(= (-> s3-0 data 1) 102)
|
|
(= (-> s3-0 data 2) 102)
|
|
(= (-> s3-0 data 3) 101)
|
|
(= (-> s3-0 data 4) 99)
|
|
(= (-> s3-0 data 5) 116)
|
|
(= (-> s3-0 data 6) 45)
|
|
)
|
|
(let* ((s2-0 (-> this process root))
|
|
(v1-38 (if (type? s2-0 collide-shape-moving)
|
|
s2-0
|
|
)
|
|
)
|
|
(t1-2 (if v1-38
|
|
(-> (the-as collide-shape-moving v1-38) ground-pat)
|
|
*footstep-surface*
|
|
)
|
|
)
|
|
)
|
|
(do-effect-for-surface this (the-as symbol s3-0) arg1 arg2 (-> this res) t1-2)
|
|
)
|
|
)
|
|
((and (= (-> s3-0 data 0) 103)
|
|
(= (-> s3-0 data 1) 114)
|
|
(= (-> s3-0 data 2) 111)
|
|
(= (-> s3-0 data 3) 117)
|
|
(= (-> s3-0 data 4) 112)
|
|
(= (-> s3-0 data 5) 45)
|
|
)
|
|
(let ((s2-1 (lookup-part-group-by-name s3-0)))
|
|
(when (and (nonzero? s2-1) s2-1 (= (-> s2-1 type) sparticle-launch-group))
|
|
(if *debug-effect-control*
|
|
(format
|
|
#t
|
|
"(~5D) effect group ~A ~A frame ~F joint ~D~%"
|
|
(current-time)
|
|
(-> this process name)
|
|
s3-0
|
|
arg1
|
|
arg2
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (-> s2-1 flags) (sp-group-flag sp13))
|
|
(set! (-> *launch-matrix* trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2)) quad)
|
|
)
|
|
(part-tracker-spawn part-tracker-subsampler :to (-> this process) :group s2-1)
|
|
)
|
|
(else
|
|
(set! (-> *launch-matrix* trans quad)
|
|
(-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2)) quad)
|
|
)
|
|
(part-tracker-spawn part-tracker :to (-> this process) :group s2-1)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((and (= (-> s3-0 data 0) 101)
|
|
(= (-> s3-0 data 1) 118)
|
|
(= (-> s3-0 data 2) 101)
|
|
(= (-> s3-0 data 3) 110)
|
|
(= (-> s3-0 data 4) 116)
|
|
(= (-> s3-0 data 5) 45)
|
|
)
|
|
(send-event (-> this process) (string->symbol s3-0) arg1 arg2)
|
|
)
|
|
((string= s3-0 "camera-shake")
|
|
(activate! *camera-smush-control* 819.2 15 75 1.0 0.9 (-> *display* camera-clock))
|
|
)
|
|
((and (= (-> s3-0 data 0) 100)
|
|
(= (-> s3-0 data 1) 101)
|
|
(= (-> s3-0 data 2) 97)
|
|
(= (-> s3-0 data 3) 116)
|
|
(= (-> s3-0 data 4) 104)
|
|
(= (-> s3-0 data 5) 45)
|
|
)
|
|
(let ((s3-1 (-> (string->symbol s3-0) value)))
|
|
(when (and (logtest? (-> this flags) (effect-control-flag ecf1))
|
|
(zero? (-> this process draw death-timer))
|
|
(= (-> (the-as death-info s3-1) type) death-info)
|
|
)
|
|
(let ((v1-131 (-> this process draw)))
|
|
(let ((a1-25 (-> (the-as death-info s3-1) vertex-skip))
|
|
(a0-59
|
|
(max
|
|
2
|
|
(the-as int (/ (-> (the-as death-info s3-1) timer) (the-as uint (the int (-> *display* time-factor)))))
|
|
)
|
|
)
|
|
)
|
|
(when (= (-> *setting-control* user-current video-mode) 'pal)
|
|
(if (< (the-as uint 1) a1-25)
|
|
(set! a1-25 (/ (the-as uint (* (the-as uint 50) a1-25)) (the-as uint 60)))
|
|
)
|
|
)
|
|
(let ((a2-29 (-> *display* frames (-> *display* last-screen) run-time)))
|
|
(cond
|
|
((< 9000 (the-as int a2-29))
|
|
(set! a1-25 (* a1-25 4))
|
|
)
|
|
((< 7000 (the-as int a2-29))
|
|
(set! a1-25 (* a1-25 2))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> v1-131 death-vertex-skip) a1-25)
|
|
(set! (-> v1-131 death-effect) (-> (the-as death-info s3-1) effect))
|
|
(set! (-> v1-131 death-timer) (the-as uint (+ a0-59 1)))
|
|
)
|
|
(set! (-> v1-131 death-timer-org) (-> v1-131 death-timer))
|
|
(set! (-> v1-131 death-draw-overlap) (-> (the-as death-info s3-1) overlap))
|
|
)
|
|
(when (-> (the-as death-info s3-1) sound)
|
|
(let* ((s2-3 this)
|
|
(s1-0 (method-of-object s2-3 play-effect-sound))
|
|
(s0-0 (-> (the-as death-info s3-1) sound))
|
|
)
|
|
(set! sv-288 (-> this res))
|
|
(let ((t1-5 (string->sound-name (-> (the-as death-info s3-1) sound))))
|
|
(s1-0 s2-3 (the-as symbol s0-0) arg1 arg2 sv-288 t1-5)
|
|
)
|
|
)
|
|
)
|
|
(send-event (-> this process) 'death-start (the-as death-info s3-1))
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(play-effect-sound this (the-as symbol s3-0) arg1 arg2 (-> this res) (string->sound-name s3-0))
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type effect-control
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod do-effect-for-surface ((this effect-control) (arg0 symbol) (arg1 float) (arg2 int) (arg3 basic) (arg4 pat-surface))
|
|
(local-vars
|
|
(sv-64
|
|
(function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none)
|
|
)
|
|
(sv-80 sparticle-system)
|
|
(sv-96 vector)
|
|
(sv-112 matrix)
|
|
(sv-128
|
|
(function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none)
|
|
)
|
|
(sv-144 sparticle-system)
|
|
(sv-160 vector)
|
|
(sv-176 matrix)
|
|
(sv-192 symbol)
|
|
(sv-208
|
|
(function sparticle-system sparticle-launcher matrix sparticle-launch-state sparticle-launch-control float none)
|
|
)
|
|
(sv-224 sparticle-system)
|
|
(sv-240 vector)
|
|
(sv-256 matrix)
|
|
)
|
|
(let ((s1-0 (the-as sound-name #f)))
|
|
(-> *display* frames (-> *display* last-screen) run-time)
|
|
(set! sv-192 arg0)
|
|
(cond
|
|
((string= (the-as string sv-192) "effect-walk-step-left")
|
|
(set! s1-0 (sound-name-with-material "walk" arg4 "1"))
|
|
)
|
|
((string= (the-as string sv-192) "effect-run-step-left")
|
|
(set! s1-0 (sound-name-with-material "run" arg4 "1"))
|
|
)
|
|
((string= (the-as string sv-192) "effect-mech-step-left")
|
|
(set! s1-0 (sound-name-with-material "mwlk" arg4 "1"))
|
|
)
|
|
((string= (the-as string sv-192) "effect-walk-step-right")
|
|
(set! s1-0 (sound-name-with-material "walk" arg4 "2"))
|
|
)
|
|
((string= (the-as string sv-192) "effect-run-step-right")
|
|
(set! s1-0 (sound-name-with-material "run" arg4 "2"))
|
|
)
|
|
((string= (the-as string sv-192) "effect-mech-step-right")
|
|
(set! s1-0 (sound-name-with-material "mwlk" arg4 "2"))
|
|
)
|
|
((string= (the-as string sv-192) "effect-roll")
|
|
(set! s1-0 (sound-name-with-material "roll" arg4 ""))
|
|
)
|
|
((string= (the-as string sv-192) "effect-slide")
|
|
(set! s1-0 (sound-name-with-material "slide" arg4 ""))
|
|
)
|
|
((string= (the-as string sv-192) "effect-land")
|
|
(set! s1-0 (sound-name-with-material "land" arg4 ""))
|
|
)
|
|
((string= (the-as string sv-192) "effect-zoom-land")
|
|
(set! s1-0 (sound-name-with-material "zoom-land" arg4 ""))
|
|
)
|
|
((string= (the-as string sv-192) "effect-zoom-hit")
|
|
(set! s1-0 (sound-name-with-material "zoom-hit" arg4 ""))
|
|
)
|
|
((string= (the-as string sv-192) "effect-flut-land")
|
|
(set! s1-0 (sound-name-with-material "flut-land" arg4 ""))
|
|
)
|
|
((string= (the-as string sv-192) "effect-land-poof")
|
|
(do-effect
|
|
this
|
|
(-> (new 'static 'boxed-array :type string
|
|
"group-land-poof-unk"
|
|
"group-land-poof-ice"
|
|
"group-land-poof-qsd"
|
|
"group-land-poof-wtr"
|
|
"group-land-poof-tar"
|
|
"group-land-poof-san"
|
|
"group-land-poof-wod"
|
|
"group-land-poof-grs"
|
|
"group-land-poof-pmt"
|
|
"group-land-poof-snw"
|
|
"group-land-poof-dsn"
|
|
"group-land-poof-unk"
|
|
"group-land-poof-lav"
|
|
"group-land-poof-cwd"
|
|
"group-land-poof-grv"
|
|
"group-land-poof-drt"
|
|
"group-land-poof-mtl"
|
|
"group-land-poof-str"
|
|
"group-land-poof-pmt"
|
|
"group-land-poof-swm"
|
|
"group-land-poof-unk"
|
|
"group-land-poof-mtl"
|
|
"group-land-poof-neu"
|
|
"group-land-poof-stn"
|
|
"group-land-poof-cmt"
|
|
"group-land-poof-car"
|
|
"group-land-poof-gmt"
|
|
"group-land-poof-smt"
|
|
"group-land-poof-hwd"
|
|
"group-land-poof-sqi"
|
|
"group-land-poof-mhm"
|
|
"group-land-poof-for"
|
|
"group-land-poof-mhs"
|
|
"group-land-poof-dma"
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
arg1
|
|
-1
|
|
)
|
|
)
|
|
((string= (the-as string sv-192) "effect-run-poof")
|
|
(do-effect
|
|
this
|
|
(-> (new 'static 'boxed-array :type string
|
|
"group-run-poof-unk"
|
|
"group-run-poof-ice"
|
|
"group-run-poof-qsd"
|
|
"group-run-poof-wtr"
|
|
"group-run-poof-tar"
|
|
"group-run-poof-san"
|
|
"group-run-poof-wod"
|
|
"group-run-poof-grs"
|
|
"group-run-poof-pmt"
|
|
"group-run-poof-snw"
|
|
"group-run-poof-dsn"
|
|
"group-run-poof-unk"
|
|
"group-run-poof-lav"
|
|
"group-run-poof-cwd"
|
|
"group-run-poof-grv"
|
|
"group-run-poof-drt"
|
|
"group-run-poof-mtl"
|
|
"group-run-poof-str"
|
|
"group-run-poof-pmt"
|
|
"group-run-poof-swm"
|
|
"group-run-poof-unk"
|
|
"group-run-poof-mtl"
|
|
"group-run-poof-neu"
|
|
"group-run-poof-stn"
|
|
"group-run-poof-cmt"
|
|
"group-run-poof-car"
|
|
"group-run-poof-gmt"
|
|
"group-run-poof-smt"
|
|
"group-run-poof-hwd"
|
|
"group-run-poof-sqi"
|
|
"group-run-poof-mhm"
|
|
"group-run-poof-for"
|
|
"group-run-poof-mhs"
|
|
"group-run-poof-dma"
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
arg1
|
|
-1
|
|
)
|
|
)
|
|
((string= (the-as string sv-192) "effect-just-footprint")
|
|
(do-effect
|
|
this
|
|
(-> (new 'static 'boxed-array :type string
|
|
"group-just-footprint-unk"
|
|
"group-just-footprint-ice"
|
|
"group-just-footprint-qsd"
|
|
"group-just-footprint-wtr"
|
|
"group-just-footprint-tar"
|
|
"group-just-footprint-san"
|
|
"group-just-footprint-wod"
|
|
"group-just-footprint-grs"
|
|
"group-just-footprint-pmt"
|
|
"group-just-footprint-snw"
|
|
"group-just-footprint-dsn"
|
|
"group-just-footprint-unk"
|
|
"group-just-footprint-lav"
|
|
"group-just-footprint-cwd"
|
|
"group-just-footprint-grv"
|
|
"group-just-footprint-drt"
|
|
"group-just-footprint-mtl"
|
|
"group-just-footprint-str"
|
|
"group-just-footprint-pmt"
|
|
"group-just-footprint-swm"
|
|
"group-just-footprint-unk"
|
|
"group-just-footprint-mtl"
|
|
"group-just-footprint-neu"
|
|
"group-just-footprint-stn"
|
|
"group-just-footprint-cmt"
|
|
"group-just-footprint-car"
|
|
"group-just-footprint-gmt"
|
|
"group-just-footprint-smt"
|
|
"group-just-footprint-hwd"
|
|
"group-just-footprint-sqi"
|
|
"group-just-footprint-mhm"
|
|
"group-just-footprint-for"
|
|
"group-just-footprint-mhs"
|
|
"group-just-footprint-dma"
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
arg1
|
|
-1
|
|
)
|
|
)
|
|
((string= (the-as string sv-192) "effect-just-poof")
|
|
(do-effect
|
|
this
|
|
(-> (new 'static 'boxed-array :type string
|
|
"group-just-poof-unk"
|
|
"group-just-poof-ice"
|
|
"group-just-poof-qsd"
|
|
"group-just-poof-wtr"
|
|
"group-just-poof-tar"
|
|
"group-just-poof-san"
|
|
"group-just-poof-wod"
|
|
"group-just-poof-grs"
|
|
"group-just-poof-pmt"
|
|
"group-just-poof-snw"
|
|
"group-just-poof-dsn"
|
|
"group-just-poof-unk"
|
|
"group-just-poof-lav"
|
|
"group-just-poof-cwd"
|
|
"group-just-poof-grv"
|
|
"group-just-poof-drt"
|
|
"group-just-poof-mtl"
|
|
"group-just-poof-str"
|
|
"group-just-poof-pmt"
|
|
"group-just-poof-swm"
|
|
"group-just-poof-unk"
|
|
"group-just-poof-mtl"
|
|
"group-just-poof-neu"
|
|
"group-just-poof-stn"
|
|
"group-just-poof-cmt"
|
|
"group-just-poof-car"
|
|
"group-just-poof-gmt"
|
|
"group-just-poof-smt"
|
|
"group-just-poof-hwd"
|
|
"group-just-poof-sqi"
|
|
"group-just-poof-mhm"
|
|
"group-just-poof-for"
|
|
"group-just-poof-mhs"
|
|
"group-just-poof-dma"
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
arg1
|
|
-1
|
|
)
|
|
)
|
|
((string= (the-as string sv-192) "effect-slide-poof")
|
|
(do-effect
|
|
this
|
|
(-> (new 'static 'boxed-array :type string
|
|
"group-slide-poof-unk"
|
|
"group-slide-poof-ice"
|
|
"group-slide-poof-qsd"
|
|
"group-slide-poof-wtr"
|
|
"group-slide-poof-tar"
|
|
"group-slide-poof-san"
|
|
"group-slide-poof-wod"
|
|
"group-slide-poof-grs"
|
|
"group-slide-poof-pmt"
|
|
"group-slide-poof-snw"
|
|
"group-slide-poof-dsn"
|
|
"group-slide-poof-unk"
|
|
"group-slide-poof-lav"
|
|
"group-slide-poof-cwd"
|
|
"group-slide-poof-grv"
|
|
"group-slide-poof-drt"
|
|
"group-slide-poof-mtl"
|
|
"group-slide-poof-str"
|
|
"group-slide-poof-pmt"
|
|
"group-slide-poof-swm"
|
|
"group-slide-poof-unk"
|
|
"group-slide-poof-mtl"
|
|
"group-slide-poof-neu"
|
|
"group-slide-poof-stn"
|
|
"group-slide-poof-cmt"
|
|
"group-slide-poof-car"
|
|
"group-slide-poof-gmt"
|
|
"group-slide-poof-smt"
|
|
"group-slide-poof-hwd"
|
|
"group-slide-poof-sqi"
|
|
"group-slide-poof-mhm"
|
|
"group-slide-poof-for"
|
|
"group-slide-poof-mhs"
|
|
"group-slide-poof-dma"
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
arg1
|
|
-1
|
|
)
|
|
)
|
|
((string= (the-as string sv-192) "effect-droppings")
|
|
(let ((s0-1 (-> *part-id-table* (-> (new 'static 'boxed-array :type uint32
|
|
#x8e
|
|
#x2a9
|
|
#x2aa
|
|
#x2ab
|
|
#x2ac
|
|
#x75
|
|
#x8b
|
|
#x77
|
|
#x2ad
|
|
#x79
|
|
#x2ae
|
|
#x8e
|
|
#x2af
|
|
#x8d
|
|
#x2b0
|
|
#x76
|
|
#x2b1
|
|
#x2b2
|
|
#x2ad
|
|
#x2b3
|
|
#x8e
|
|
#x2b1
|
|
#x2b4
|
|
#x8c
|
|
#x2b5
|
|
#x2b6
|
|
#x2b7
|
|
#x2b8
|
|
#x2b9
|
|
#x2ba
|
|
#x2bb
|
|
#x78
|
|
#x2bc
|
|
#x2bd
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(when (nonzero? s0-1)
|
|
(set! sv-64 sp-launch-particles-var)
|
|
(set! sv-80 *sp-particle-system-2d*)
|
|
(set! sv-112 *launch-matrix*)
|
|
(set! sv-96 (-> sv-112 trans))
|
|
(let ((v1-80 (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2)) quad)))
|
|
(set! (-> sv-96 quad) v1-80)
|
|
)
|
|
(let ((a3-6 #f)
|
|
(t0-1 #f)
|
|
(t1-1 1.0)
|
|
)
|
|
(sv-64 sv-80 s0-1 sv-112 (the-as sparticle-launch-state a3-6) (the-as sparticle-launch-control t0-1) t1-1)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((string= (the-as string sv-192) "effect-jump-droppings")
|
|
(let ((s0-2 (-> *part-id-table* (-> (new 'static 'boxed-array :type uint32
|
|
#x2be
|
|
#x2bf
|
|
#x2c0
|
|
#x2c1
|
|
#x2c2
|
|
#x86
|
|
#x2c3
|
|
#x89
|
|
#x2c4
|
|
#x88
|
|
#x2c5
|
|
#x2be
|
|
#x2c6
|
|
#x2c7
|
|
#x2c8
|
|
#x87
|
|
#x2c9
|
|
#x2ca
|
|
#x2c4
|
|
#x2cb
|
|
#x2be
|
|
#x2c9
|
|
#x2cc
|
|
#x2cd
|
|
#x2ce
|
|
#x2cf
|
|
#x2d0
|
|
#x2d1
|
|
#x2d2
|
|
#x2d3
|
|
#x2d4
|
|
#x8a
|
|
#x2d5
|
|
#x2d6
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(when (nonzero? s0-2)
|
|
(set! sv-128 sp-launch-particles-var)
|
|
(set! sv-144 *sp-particle-system-2d*)
|
|
(set! sv-176 *launch-matrix*)
|
|
(set! sv-160 (-> sv-176 trans))
|
|
(let ((v1-97 (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2)) quad)))
|
|
(set! (-> sv-160 quad) v1-97)
|
|
)
|
|
(let ((a3-7 #f)
|
|
(t0-2 #f)
|
|
(t1-2 1.0)
|
|
)
|
|
(sv-128 sv-144 s0-2 sv-176 (the-as sparticle-launch-state a3-7) (the-as sparticle-launch-control t0-2) t1-2)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((let ((t9-40 string=)
|
|
(a1-45 "effect-board-poof")
|
|
)
|
|
(t9-40 (the-as string sv-192) a1-45)
|
|
)
|
|
(let ((s0-3 (-> *part-id-table* (-> (new 'static 'boxed-array :type uint32
|
|
#x2d7
|
|
#x2d8
|
|
#x2d9
|
|
#x2da
|
|
#x2db
|
|
#x2dc
|
|
#x2dd
|
|
#x2de
|
|
#x2df
|
|
#x2e0
|
|
#x2e1
|
|
#x2d7
|
|
#x2e2
|
|
#x2e3
|
|
#x2e4
|
|
#x2e5
|
|
#x2e6
|
|
#x2e7
|
|
#x2df
|
|
#x2e8
|
|
#x2d7
|
|
#x2e6
|
|
#x2e9
|
|
#x2a2
|
|
#x2ea
|
|
#x2eb
|
|
#x2ec
|
|
#x2ed
|
|
#x2ee
|
|
#x2ef
|
|
#x2f0
|
|
#x2f1
|
|
#x2f2
|
|
#x2f3
|
|
)
|
|
(-> arg4 material)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(when (nonzero? s0-3)
|
|
(set! sv-208 sp-launch-particles-var)
|
|
(set! sv-224 *sp-particle-system-2d*)
|
|
(set! sv-256 *launch-matrix*)
|
|
(set! sv-240 (-> sv-256 trans))
|
|
(let ((v1-114 (-> (vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2)) quad)))
|
|
(set! (-> sv-240 quad) v1-114)
|
|
)
|
|
(let ((a3-8 #f)
|
|
(t0-3 #f)
|
|
(t1-3 1.0)
|
|
)
|
|
(sv-208 sv-224 s0-3 sv-256 (the-as sparticle-launch-state a3-8) (the-as sparticle-launch-control t0-3) t1-3)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if s1-0
|
|
(play-effect-sound this arg0 arg1 arg2 arg3 s1-0)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 12 of type effect-control
|
|
;; INFO: Used lq/sq
|
|
(defmethod play-effect-sound ((this effect-control) (arg0 symbol) (arg1 float) (arg2 int) (arg3 basic) (arg4 sound-name))
|
|
(local-vars (sv-112 res-tag) (sv-128 sound-name) (sv-144 basic) (sv-160 (function vector vector float)))
|
|
(set! sv-144 arg3)
|
|
(let ((s0-0 arg4)
|
|
(gp-0 (the-as object (new 'stack 'sound-spec)))
|
|
(s5-0 (if (< arg2 0)
|
|
(the-as vector #f)
|
|
(vector<-cspace! (new 'stack-no-clear 'vector) (-> this process node-list data arg2))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> (the-as sound-spec gp-0) sound-name) s0-0)
|
|
(logior! (-> (the-as sound-spec gp-0) mask) (sound-mask volume))
|
|
(set! (-> (the-as sound-spec gp-0) pitch-mod) 0)
|
|
(set! (-> (the-as sound-spec gp-0) volume) 1024)
|
|
(set! sv-112 (new 'static 'res-tag))
|
|
(let* ((t9-2 (method-of-type res-lump get-property-data))
|
|
(a1-5 'effect-param)
|
|
(a2-1 'exact)
|
|
(a3-1 arg1)
|
|
(t0-1 #f)
|
|
(t1-1 (the-as (pointer res-tag) (& sv-112)))
|
|
(t2-0 *res-static-buf*)
|
|
(a1-6 (t9-2 (the-as res-lump sv-144) a1-5 a2-1 a3-1 (the-as pointer t0-1) t1-1 t2-0))
|
|
)
|
|
(when a1-6
|
|
(effect-param->sound-spec
|
|
(the-as sound-spec gp-0)
|
|
(the-as (pointer float) a1-6)
|
|
(the-as int (-> sv-112 elt-count))
|
|
(the-as process-focusable (-> this process))
|
|
)
|
|
(if (logtest? (-> (the-as sound-spec gp-0) mask) (sound-mask unk))
|
|
(return 0)
|
|
)
|
|
)
|
|
)
|
|
(let ((f0-0 (-> *setting-control* user-current under-water-pitch-mod)))
|
|
(when (!= f0-0 0.0)
|
|
(logior! (-> (the-as sound-spec gp-0) mask) (sound-mask pitch))
|
|
(let ((f0-1 (* 2.0 f0-0)))
|
|
(set! (-> (the-as sound-spec gp-0) pitch-mod)
|
|
(- (-> (the-as sound-spec gp-0) pitch-mod) (the int (* 1524.0 f0-1)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if (or (and (nonzero? (-> (the-as sound-spec gp-0) fo-max))
|
|
(let ((f30-0 (* 4096.0 (the float (-> (the-as sound-spec gp-0) fo-max)))))
|
|
(set! sv-160 vector-vector-distance)
|
|
(let ((a0-8 (ear-trans 0))
|
|
(a1-7 s5-0)
|
|
)
|
|
(< f30-0 (sv-160 a0-8 a1-7))
|
|
)
|
|
)
|
|
)
|
|
(= (-> (the-as (pointer int8) gp-0) 9) 126)
|
|
)
|
|
(return 0)
|
|
)
|
|
(when *debug-effect-control*
|
|
(set! sv-128 s0-0)
|
|
(string<-charp (clear *temp-string*) (the-as (pointer uint8) (& sv-128)))
|
|
(format
|
|
#t
|
|
"(~5D) effect sound ~A ~S (~S) frame ~F joint ~D "
|
|
(current-time)
|
|
(-> this process name)
|
|
arg0
|
|
*temp-string*
|
|
arg1
|
|
arg2
|
|
)
|
|
(format
|
|
#t
|
|
"volume: ~f pitch-mod: ~f~%"
|
|
(* 0.09765625 (the float (-> (the-as sound-spec gp-0) volume)))
|
|
(* 0.000656168 (the float (-> (the-as sound-spec gp-0) pitch-mod)))
|
|
)
|
|
)
|
|
(sound-play-by-spec (the-as sound-spec gp-0) (new-sound-id) s5-0)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for function target-land-effect
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior target-land-effect target ()
|
|
(cond
|
|
((focus-test? self flut)
|
|
(do-effect (-> self skel effect) "effect-land-poof" -1.0 -1)
|
|
(do-effect (-> self skel effect) "effect-flut-land" -1.0 -1)
|
|
)
|
|
((focus-test? self pilot)
|
|
(sound-play-by-name
|
|
(sound-name-with-material "zoom-land" (-> self control ground-pat) "")
|
|
(new-sound-id)
|
|
(the int (* 1024.0 (* 0.000016276043 (-> self control ground-impact-vel))))
|
|
0
|
|
0
|
|
(sound-group)
|
|
#t
|
|
)
|
|
)
|
|
((logtest? (water-flag touch-water) (-> self water flags))
|
|
(do-effect (-> self skel effect) "effect-land-water" -1.0 -1)
|
|
)
|
|
(else
|
|
(do-effect (-> self skel effect) "effect-land-poof" -1.0 -1)
|
|
(do-effect (-> self skel effect) "effect-land" -1.0 -1)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|