mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
136136e498
Adds `collide-shape` and a few other related ones.
2049 lines
83 KiB
Common Lisp
2049 lines
83 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: target-darkjak.gc
|
|
;; name in dgo: target-darkjak
|
|
;; dgos: ENGINE, GAME
|
|
|
|
(define-extern *darkjak-trans-mods* surface)
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(format 0 "SKIP: target-darkjak-giant in target-darkjak (missing target-standard-event-handler)~%")
|
|
(format 0 "SKIP: target-darkjak-get-on in target-darkjak~%")
|
|
(format 0 "SKIP: target-darkjak-get-off in target-darkjak~%")
|
|
|
|
(defbehavior target-darkjak-setup target ((arg0 symbol))
|
|
(when (zero? (-> self darkjak))
|
|
(set! (-> self darkjak) (new 'process 'darkjak-info))
|
|
(set! (-> self darkjak process) (the-as (pointer target) (process->ppointer self)))
|
|
(let* ((v1-4 (-> self game))
|
|
(a0-5 (+ (-> v1-4 attack-id) 1))
|
|
)
|
|
(set! (-> v1-4 attack-id) a0-5)
|
|
(set! (-> self darkjak attack-id) a0-5)
|
|
)
|
|
(set! (-> self darkjak hud 0) (the-as handle #f))
|
|
(set! (-> self darkjak tone) (the-as uint (new-sound-id)))
|
|
(set! (-> self darkjak-giant-interp) 1.0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defbehavior want-to-darkjak? target ()
|
|
(and (cpad-pressed? (-> self control cpad number) l2)
|
|
(not *pause-lock*)
|
|
(-> *setting-control* user-current darkjak)
|
|
(logtest? (-> self game features) (game-feature darkjak))
|
|
(not (logtest? (focus-status
|
|
dead
|
|
hit
|
|
grabbed
|
|
in-head
|
|
under-water
|
|
edge-grab
|
|
pole
|
|
flut
|
|
tube
|
|
board
|
|
pilot
|
|
mech
|
|
carry
|
|
indax
|
|
teleporting
|
|
)
|
|
(-> self focus-status)
|
|
)
|
|
)
|
|
(not (and (logtest? (-> self water flags) (water-flags under-water))
|
|
(zero? (logand (-> self water flags) (water-flags swim-ground)))
|
|
)
|
|
)
|
|
(or (and (not (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak))))
|
|
(and (>= (- (-> self clock frame-counter) (-> (the-as fact-info-target (-> self fact-override)) darkjak-start-time))
|
|
(seconds 0.05)
|
|
)
|
|
(>= (-> self game eco-pill-dark) (-> *FACT-bank* eco-pill-dark-max-default))
|
|
)
|
|
)
|
|
(and (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)))
|
|
(not (and (logtest? (focus-status dark) (-> self focus-status))
|
|
(nonzero? (-> self darkjak))
|
|
(logtest? (-> self darkjak stage) 32)
|
|
)
|
|
)
|
|
(logtest? (game-feature darkjak-giant) (-> self game features))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; (let ((v1-3 (copy *walk-mods* 'global)))
|
|
;; (set! (-> v1-3 name) 'darkjak)
|
|
;; (set! (-> v1-3 flags) (surface-flag gun-off))
|
|
;; (set! *darkjak-trans-mods* v1-3)
|
|
;; )
|
|
|
|
(defbehavior target-darkjak-end-mode target ()
|
|
(when (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)))
|
|
(logclear! (-> self focus-status) (focus-status dark))
|
|
(send-event self 'reset-collide)
|
|
(logclear! (-> self state-flags) (state-flags sf4))
|
|
(remove-setting! 'sound-flava)
|
|
(remove-setting! 'string-min-length)
|
|
(remove-setting! 'string-max-length)
|
|
(remove-setting! 'string-spline-max-move)
|
|
(remove-setting! 'string-spline-accel)
|
|
(remove-setting! 'string-spline-max-move-player)
|
|
(remove-setting! 'string-spline-accel-player)
|
|
(sound-stop (the-as sound-id (-> self darkjak tone)))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defbehavior target-darkjak-process target ((arg0 object) (arg1 object) (arg2 object) (arg3 object) (arg4 object) (arg5 object) (arg6 float))
|
|
(local-vars (gp-0 vector))
|
|
(cond
|
|
((and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)))
|
|
(let ((a1-1 'eco-red))
|
|
(target-danger-set! (-> self control unknown-symbol04) a1-1)
|
|
)
|
|
(update-transforms (-> self control))
|
|
(let ((a1-2 (new 'stack-no-clear 'overlaps-others-params)))
|
|
(set! (-> a1-2 options) (overlaps-others-options))
|
|
(set! (-> a1-2 collide-with-filter) (the-as collide-spec -1))
|
|
(set! (-> a1-2 tlist) *touching-list*)
|
|
(find-overlapping-shapes (-> self control) a1-2)
|
|
)
|
|
(target-danger-set! (-> self control unknown-symbol04) #f)
|
|
(update-transforms (-> self control))
|
|
(if (and (or (>= (- (-> self clock frame-counter) (-> (the-as fact-info-target (-> self fact-override)) darkjak-start-time))
|
|
(-> (the-as fact-info-target (-> self fact-override)) darkjak-effect-time)
|
|
)
|
|
(not (-> *setting-control* user-current darkjak))
|
|
)
|
|
(not (logtest? (-> self focus-status) (focus-status dead dangerous hit grabbed)))
|
|
(not (and (-> self next-state) (= (-> self next-state name) 'target-darkjak-get-off)))
|
|
(zero? (logand (-> self darkjak stage) 1))
|
|
)
|
|
(go target-darkjak-get-off)
|
|
)
|
|
)
|
|
(else
|
|
(seek! (-> self darkjak-interp) 0.0 (* 2.0 (-> self clock seconds-per-frame)))
|
|
(if (= (-> self darkjak-interp) 0.0)
|
|
(set! (-> self darkjak-giant-interp) 1.0)
|
|
)
|
|
)
|
|
)
|
|
(let ((f30-0 (-> self darkjak-interp)))
|
|
(let ((f28-0 (lerp-scale 1.0 (* 1.05 (-> self darkjak-giant-interp)) f30-0 0.0 1.0))
|
|
(f26-0 (lerp-scale 1.0 (* 0.20000002 (+ 5.0 (-> self darkjak-giant-interp))) f30-0 0.0 1.0))
|
|
)
|
|
(set-vector! (-> self control scale) f28-0 f28-0 f28-0 1.0)
|
|
(let ((a3-3 (new 'stack-no-clear 'vector)))
|
|
(set! (-> a3-3 x) f26-0)
|
|
(set! (-> a3-3 y) 1.0)
|
|
(set! (-> a3-3 z) f26-0)
|
|
(set! (-> a3-3 w) 1.0)
|
|
(trs-set! (-> self upper-body) (the-as vector #f) (the-as quaternion #f) a3-3)
|
|
)
|
|
(let ((f26-1 (* 1.1 f26-0)))
|
|
(cond
|
|
((and (logtest? (focus-status dark) (-> self focus-status))
|
|
(nonzero? (-> self darkjak))
|
|
(logtest? (-> self darkjak stage) 32)
|
|
)
|
|
(set! gp-0 (new 'stack-no-clear 'vector))
|
|
(set! (-> gp-0 x) (/ f28-0 (* f28-0 f26-1 (lerp-scale 1.0 1.3 f30-0 0.0 1.0))))
|
|
(set! (-> gp-0 y) (/ f28-0 (* f28-0 (lerp-scale 1.0 1.4 f30-0 0.0 1.0))))
|
|
(set! (-> gp-0 z) (/ f28-0 (* f28-0 f26-1 (lerp-scale 1.0 1.3 f30-0 0.0 1.0))))
|
|
(set! (-> gp-0 w) 1.0)
|
|
)
|
|
(else
|
|
(set! gp-0 (new 'stack-no-clear 'vector))
|
|
(set! (-> gp-0 x) (/ f28-0 (* f28-0 f26-1)))
|
|
(set! (-> gp-0 y) (/ f28-0 f28-0))
|
|
(set! (-> gp-0 z) (/ f28-0 (* f28-0 f26-1)))
|
|
(set! (-> gp-0 w) 1.0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((logtest? (game-secrets little-head) (-> self game secrets))
|
|
(dotimes (v1-56 3)
|
|
(set! (-> gp-0 data v1-56) (* 0.4 (-> gp-0 data v1-56)))
|
|
)
|
|
)
|
|
((logtest? (game-secrets big-head) (-> self game secrets))
|
|
(dotimes (v1-62 3)
|
|
(set! (-> gp-0 data v1-62) (* 2.0 (-> gp-0 data v1-62)))
|
|
)
|
|
)
|
|
)
|
|
(trs-set! (-> self neck) (the-as vector #f) (the-as quaternion #f) gp-0)
|
|
(let* ((a0-44 (-> self horns))
|
|
(t9-14 (method-of-object a0-44 trs-set!))
|
|
(a1-12 #f)
|
|
(a2-9 #f)
|
|
(a3-8 (new 'stack-no-clear 'vector))
|
|
)
|
|
(set! (-> a3-8 x) f30-0)
|
|
(set! (-> a3-8 y) f30-0)
|
|
(set! (-> a3-8 z) f30-0)
|
|
(set! (-> a3-8 w) 1.0)
|
|
(t9-14 a0-44 (the-as vector a1-12) (the-as quaternion a2-9) a3-8)
|
|
)
|
|
(set-darkjak-texture-morph! f30-0)
|
|
(cond
|
|
((and (= f30-0 0.0) (< (- (-> self clock frame-counter) (-> self teleport-time)) (seconds 0.5)))
|
|
(set! (-> self skel override 0) 0.00001)
|
|
(set! (-> self skel override 41) 0.000001)
|
|
)
|
|
((= f30-0 0.0)
|
|
(set! (-> self skel override 0) 0.0)
|
|
(set! (-> self skel override 41) 0.0)
|
|
)
|
|
(else
|
|
(set! (-> self skel override 0) 1.0)
|
|
(set! (-> self skel override 1) f30-0)
|
|
(set! (-> self skel override 2) f30-0)
|
|
(set! (-> self skel override 3) f30-0)
|
|
(set! (-> self skel override 4) f30-0)
|
|
(set! (-> self skel override 5) f30-0)
|
|
(set! (-> self skel override 41) 1.0)
|
|
(set! (-> self skel override 46) 2.0)
|
|
(set! (-> self skel override 52) 2.0)
|
|
)
|
|
)
|
|
(when (and (>= f30-0 0.5)
|
|
(not (logtest? (-> self focus-status) (focus-status in-head)))
|
|
(not (logtest? (-> self draw status) (draw-control-status no-draw no-draw-temp)))
|
|
(not (movie?))
|
|
)
|
|
(let ((gp-1 sp-launch-particles-var)
|
|
(s5-0 *sp-particle-system-2d*)
|
|
(s4-0 (-> *part-id-table* 178))
|
|
(s2-0 *launch-matrix*)
|
|
)
|
|
(set! (-> s2-0 trans quad) (-> (process-drawable-random-point! self (new 'stack-no-clear 'vector)) quad))
|
|
(let ((a3-9 #f)
|
|
(t0-6 #f)
|
|
(t1-1 1.0)
|
|
)
|
|
(gp-1 s5-0 s4-0 s2-0 (the-as sparticle-launch-state a3-9) (the-as sparticle-launch-control t0-6) t1-1)
|
|
(cond
|
|
((rand-vu-percent? 0.25)
|
|
(when (>= (- (-> *display* game-clock frame-counter) (-> self shock-effect-time)) (seconds 0.02))
|
|
(set! (-> self shock-effect-time) (-> *display* game-clock frame-counter))
|
|
(process-drawable-shock-wall-effect
|
|
self
|
|
(-> *lightning-spec-id-table* 8)
|
|
lightning-probe-callback
|
|
(-> *part-id-table* 179)
|
|
(the-as int t0-6)
|
|
(the-as int t1-1)
|
|
arg6
|
|
)
|
|
)
|
|
)
|
|
((rand-vu-percent? 0.1)
|
|
(when (>= (- (-> *display* game-clock frame-counter) (-> self shock-effect-time)) (seconds 0.02))
|
|
(set! (-> self shock-effect-time) (-> *display* game-clock frame-counter))
|
|
(process-drawable-shock-effect
|
|
self
|
|
(-> *lightning-spec-id-table* 6)
|
|
lightning-probe-callback
|
|
(-> *part-id-table* 179)
|
|
0
|
|
0
|
|
40960.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; (defstate target-darkjak-get-on (target)
|
|
;; :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
;; (case event-type
|
|
;; (('darkjak)
|
|
;; (when (zero? (-> self darkjak want-stage))
|
|
;; (set! (-> self darkjak want-stage) (-> event param 0))
|
|
;; #t
|
|
;; )
|
|
;; )
|
|
;; (else
|
|
;; (target-generic-event-handler proc arg1 event-type event)
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; :exit (behavior ()
|
|
;; (logclear! (-> self state-flags) (state-flags lleg-still rleg-still))
|
|
;; (set! (-> self darkjak-interp) 1.0)
|
|
;; (remove-setting! 'bg-r)
|
|
;; (remove-setting! 'bg-g)
|
|
;; (remove-setting! 'bg-b)
|
|
;; (remove-setting! 'bg-a)
|
|
;; (persist-with-delay *setting-control* 'bg-a-speed (seconds 3) 'bg-a-speed 'abs 0.5 0)
|
|
;; (if (not (and (-> self next-state) (= (-> self next-state name) 'target-darkjak-get-off)))
|
|
;; (pickup-collectable!
|
|
;; (-> self fact)
|
|
;; (pickup-type eco-pill-dark)
|
|
;; (- (-> *FACT-bank* eco-pill-dark-max-default))
|
|
;; (the-as handle #f)
|
|
;; )
|
|
;; )
|
|
;; (none)
|
|
;; )
|
|
;; :code (behavior ((arg0 int))
|
|
;; (send-event (handle->process (-> self notify)) 'notify 'attack 15)
|
|
;; (if (and (logtest? (focus-status dark) (-> self focus-status)) (nonzero? (-> self darkjak)))
|
|
;; (go target-darkjak-giant)
|
|
;; )
|
|
;; (set! (-> self darkjak stage) (the-as uint (logior arg0 2)))
|
|
;; (if (logtest? (game-feature darkjak-bomb0) (-> self game features))
|
|
;; (logior! (-> self darkjak stage) 4)
|
|
;; )
|
|
;; (if (logtest? (game-feature darkjak-bomb1) (-> self game features))
|
|
;; (logior! (-> self darkjak stage) 8)
|
|
;; )
|
|
;; (if (logtest? (game-feature darkjak-invinc) (-> self game features))
|
|
;; (logior! (-> self darkjak stage) 16)
|
|
;; )
|
|
;; (set! (-> self darkjak want-stage) (-> self darkjak stage))
|
|
;; (set! (-> self neck flex-blend) 0.0)
|
|
;; (set! (-> self control unknown-surface00) *darkjak-trans-mods*)
|
|
;; (set! (-> self darkjak start-time) (-> self clock frame-counter))
|
|
;; (set! (-> self darkjak attack-count) (the-as uint 0))
|
|
;; (set! (-> self darkjak-giant-interp) 1.0)
|
|
;; (set-setting! 'sound-flava #f #x41f00000 4)
|
|
;; (set! (-> self focus-status) (logior (focus-status dark) (-> self focus-status)))
|
|
;; (set! (-> (the-as fact-info-target (-> self fact)) darkjak-start-time) (-> self clock frame-counter))
|
|
;; (set! (-> (the-as fact-info-target (-> self fact)) darkjak-effect-time) (seconds 20))
|
|
;; (if (logtest? (-> self darkjak stage) 16)
|
|
;; (logior! (-> self state-flags) (state-flags sf4))
|
|
;; (logclear! (-> self state-flags) (state-flags sf4))
|
|
;; )
|
|
;; (if (logtest? arg0 64)
|
|
;; (go target-stance)
|
|
;; )
|
|
;; (set-setting! 'bg-r 'abs #x3dcccccd 0)
|
|
;; (set-setting! 'bg-b 'abs #x3dcccccd 0)
|
|
;; (set-forward-vel 0.0)
|
|
;; (let ((s5-0 0))
|
|
;; (while (not (logtest? (-> self control status) (cshape-moving-flags on-surface)))
|
|
;; (target-falling-anim-trans)
|
|
;; (+! s5-0 (- (-> self clock frame-counter) (-> self clock old-frame-counter)))
|
|
;; (if (>= s5-0 300)
|
|
;; (go target-falling #f)
|
|
;; )
|
|
;; (suspend)
|
|
;; )
|
|
;; )
|
|
;; (let ((s5-2 (sound-play "djak-transform")))
|
|
;; (cond
|
|
;; ((task-node-open? (game-task-node city-help-kid-battle))
|
|
;; (ja-channel-push! 1 (seconds 0.1))
|
|
;; (ja-no-eval :group! (-> self draw art-group data 390)
|
|
;; :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 390)) frames num-frames) -1)))
|
|
;; :frame-num 0.0
|
|
;; )
|
|
;; (until (ja-done? 0)
|
|
;; (set! (-> self darkjak-interp) (lerp-scale 0.0 1.0 (ja-aframe-num 0) 10.0 25.0))
|
|
;; (set-setting! 'bg-a 'abs (* 0.45 (-> self darkjak-interp)) 0)
|
|
;; (suspend)
|
|
;; (ja :num! (seek!))
|
|
;; )
|
|
;; )
|
|
;; (else
|
|
;; (ja-channel-push! 1 (seconds 0.1))
|
|
;; (ja-no-eval :group! (-> self draw art-group data 412) :num! (seek! (ja-aframe 17.0 0)) :frame-num 0.0)
|
|
;; (until (ja-done? 0)
|
|
;; (set! (-> self darkjak-interp) (lerp-scale 0.0 1.0 (ja-aframe-num 0) 5.0 15.0))
|
|
;; (set-setting! 'bg-a 'abs (* 0.45 (-> self darkjak-interp)) 0)
|
|
;; (when (and (or (not (cpad-hold? (-> self control unknown-cpad-info00 number) l2))
|
|
;; (and (= *cheat-mode* 'debug) (cpad-hold? (-> self control unknown-cpad-info00 number) r2))
|
|
;; )
|
|
;; (and (< (ja-aframe-num 0) 5.0) (zero? (logand arg0 1)))
|
|
;; )
|
|
;; (let ((v1-131 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
|
;; (set! (-> v1-131 command) (sound-command set-param))
|
|
;; (set! (-> v1-131 id) s5-2)
|
|
;; (set! (-> v1-131 params volume) -4)
|
|
;; (set! (-> v1-131 auto-time) 24)
|
|
;; (set! (-> v1-131 auto-from) 2)
|
|
;; (set! (-> v1-131 params mask) (the-as uint 17))
|
|
;; (-> v1-131 id)
|
|
;; )
|
|
;; (go target-darkjak-get-off)
|
|
;; )
|
|
;; (suspend)
|
|
;; (ja :num! (seek! (ja-aframe 17.0 0)))
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (send-event
|
|
;; *traffic-manager*
|
|
;; 'increase-alert-level
|
|
;; (if (and (logtest? (focus-status dark) (-> self focus-status))
|
|
;; (nonzero? (-> self darkjak))
|
|
;; (logtest? (-> self darkjak stage) 16)
|
|
;; )
|
|
;; 3
|
|
;; 2
|
|
;; )
|
|
;; )
|
|
;; (go target-stance)
|
|
;; (none)
|
|
;; )
|
|
;; :post (-> target-grab post)
|
|
;; )
|
|
|
|
;; (defstate target-darkjak-get-off (target)
|
|
;; :event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
;; (case event-type
|
|
;; (('pole-grab 'darkjak 'slide 'wade 'launch 'edge-grab)
|
|
;; #f
|
|
;; )
|
|
;; (('change-mode)
|
|
;; (case (-> event param 0)
|
|
;; (('grab)
|
|
;; (when (not (logtest? (-> self focus-status) (focus-status dead)))
|
|
;; (if (not (-> event param 1))
|
|
;; #t
|
|
;; (go target-grab 'stance)
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (else
|
|
;; (target-generic-event-handler proc arg1 event-type event)
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; :enter (behavior ()
|
|
;; (set! (-> self state-flags) (logior (state-flags lleg-still rleg-still) (-> self state-flags)))
|
|
;; (set! (-> self neck flex-blend) 0.0)
|
|
;; (set! (-> self control unknown-surface00) *darkjak-trans-mods*)
|
|
;; (kill-persister *setting-control* (the-as engine-pers 'bg-a-speed) 'bg-a-speed)
|
|
;; (let ((a1-1 (new 'stack-no-clear 'event-message-block)))
|
|
;; (set! (-> a1-1 from) (process->ppointer self))
|
|
;; (set! (-> a1-1 num-params) 1)
|
|
;; (set! (-> a1-1 message) 'target)
|
|
;; (set! (-> a1-1 param 0) (the-as uint 'normal))
|
|
;; (let ((t9-1 send-event-function)
|
|
;; (v1-12 (-> *game-info* sub-task-list 4))
|
|
;; )
|
|
;; (t9-1
|
|
;; (handle->process (if (-> v1-12 info)
|
|
;; (-> v1-12 info manager)
|
|
;; (the-as handle #f)
|
|
;; )
|
|
;; )
|
|
;; a1-1
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (none)
|
|
;; )
|
|
;; :exit (behavior ()
|
|
;; (logclear! (-> self state-flags) (state-flags lleg-still rleg-still))
|
|
;; (target-darkjak-end-mode)
|
|
;; (none)
|
|
;; )
|
|
;; :trans (-> target-darkjak-get-on trans)
|
|
;; :code (behavior ()
|
|
;; (let ((v1-1 (-> self water flags)))
|
|
;; (cond
|
|
;; ((and (logtest? (water-flags touch-water) v1-1)
|
|
;; (logtest? (water-flags under-water swimming) v1-1)
|
|
;; (zero? (logand (focus-status mech) (-> self focus-status)))
|
|
;; )
|
|
;; (go target-swim-stance)
|
|
;; )
|
|
;; ((let ((v1-10 (ja-group)))
|
|
;; (not (and v1-10 (= v1-10 (-> self draw art-group data 412))))
|
|
;; )
|
|
;; (let ((gp-0 0))
|
|
;; (while (not (logtest? (-> self control status) (cshape-moving-flags on-surface)))
|
|
;; (target-falling-anim-trans)
|
|
;; (+! gp-0 (- (-> self clock frame-counter) (-> self clock old-frame-counter)))
|
|
;; (if (>= gp-0 300)
|
|
;; (go target-falling #f)
|
|
;; )
|
|
;; (suspend)
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (cond
|
|
;; ((logtest? (-> self control status) (cshape-moving-flags on-water))
|
|
;; )
|
|
;; (else
|
|
;; (let ((v1-30 (ja-group)))
|
|
;; (cond
|
|
;; ((and v1-30 (= v1-30 (-> self draw art-group data 412)))
|
|
;; (ja-no-eval :num! (seek! 0.0))
|
|
;; (while (not (ja-done? 0))
|
|
;; (seek! (-> self darkjak-interp) 0.0 (* 2.0 (-> self clock seconds-per-frame)))
|
|
;; (suspend)
|
|
;; (ja-eval)
|
|
;; )
|
|
;; (ja-channel-push! 1 (seconds 0.1))
|
|
;; )
|
|
;; ((let ((v1-43 (ja-group)))
|
|
;; (and v1-43
|
|
;; (or (= v1-43 (-> self draw art-group data 401))
|
|
;; (= v1-43 (-> self draw art-group data 416))
|
|
;; (= v1-43 (-> self draw art-group data 417))
|
|
;; (= v1-43 (-> self draw art-group data 418))
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (ja-no-eval :group! (-> self draw art-group data 411)
|
|
;; :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 411)) frames num-frames) -1)))
|
|
;; :frame-num 0.0
|
|
;; )
|
|
;; (until (ja-done? 0)
|
|
;; (set! (-> self darkjak-interp) (lerp-scale 1.0 0.0 (ja-aframe-num 0) 90.0 115.0))
|
|
;; (if (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0)
|
|
;; (or (not (and (logtest? (focus-status dark) (-> self focus-status))
|
|
;; (nonzero? (-> self darkjak))
|
|
;; (logtest? (-> self darkjak stage) 32)
|
|
;; )
|
|
;; )
|
|
;; (= (-> self darkjak-interp) 0.0)
|
|
;; )
|
|
;; )
|
|
;; (goto cfg-133)
|
|
;; )
|
|
;; (suspend)
|
|
;; (ja :num! (seek!))
|
|
;; )
|
|
;; )
|
|
;; ((let ((v1-88 (ja-group)))
|
|
;; (and v1-88 (= v1-88 (-> self draw art-group data 411)))
|
|
;; )
|
|
;; (ja-no-eval :num! (seek!))
|
|
;; (while (not (ja-done? 0))
|
|
;; (set! (-> self darkjak-interp) (lerp-scale 1.0 0.0 (ja-aframe-num 0) 90.0 115.0))
|
|
;; (if (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0)
|
|
;; (or (not (and (logtest? (focus-status dark) (-> self focus-status))
|
|
;; (nonzero? (-> self darkjak))
|
|
;; (logtest? (-> self darkjak stage) 32)
|
|
;; )
|
|
;; )
|
|
;; (= (-> self darkjak-interp) 0.0)
|
|
;; )
|
|
;; )
|
|
;; (goto cfg-133)
|
|
;; )
|
|
;; (suspend)
|
|
;; (ja-eval)
|
|
;; )
|
|
;; )
|
|
;; (else
|
|
;; (ja-channel-push! 1 (seconds 0.05))
|
|
;; (ja-no-eval :group! (-> self draw art-group data 408)
|
|
;; :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 408)) frames num-frames) -1)))
|
|
;; :frame-num 0.0
|
|
;; )
|
|
;; (until (ja-done? 0)
|
|
;; (set! (-> self darkjak-interp) (lerp-scale 1.0 0.0 (ja-aframe-num 0) 10.0 60.0))
|
|
;; (if (and (>= (ja-aframe-num 0) 24.0)
|
|
;; (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0)
|
|
;; (or (not (and (logtest? (focus-status dark) (-> self focus-status))
|
|
;; (nonzero? (-> self darkjak))
|
|
;; (logtest? (-> self darkjak stage) 32)
|
|
;; )
|
|
;; )
|
|
;; (= (-> self darkjak-interp) 0.0)
|
|
;; )
|
|
;; )
|
|
;; (goto cfg-133)
|
|
;; )
|
|
;; (suspend)
|
|
;; (ja :num! (seek!))
|
|
;; )
|
|
;; (ja-no-eval :group! (-> self draw art-group data 415)
|
|
;; :num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 415)) frames num-frames) -1)))
|
|
;; :frame-num 0.0
|
|
;; )
|
|
;; (until (ja-done? 0)
|
|
;; (set! (-> self darkjak-interp) (lerp-scale 1.0 0.0 (ja-aframe-num 0) 10.0 60.0))
|
|
;; (if (and (>= (ja-aframe-num 0) 24.0)
|
|
;; (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0)
|
|
;; (or (not (and (logtest? (focus-status dark) (-> self focus-status))
|
|
;; (nonzero? (-> self darkjak))
|
|
;; (logtest? (-> self darkjak stage) 32)
|
|
;; )
|
|
;; )
|
|
;; (= (-> self darkjak-interp) 0.0)
|
|
;; )
|
|
;; )
|
|
;; (goto cfg-133)
|
|
;; )
|
|
;; (suspend)
|
|
;; (ja :num! (seek!))
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (label cfg-133)
|
|
;; (vector-reset! (-> self control transv))
|
|
;; ((-> target-darkjak-get-off exit))
|
|
;; (go target-stance)
|
|
;; (none)
|
|
;; )
|
|
;; :post (-> target-grab post)
|
|
;; )
|
|
|
|
(defstate target-darkjak-running-attack (target)
|
|
:event (-> target-running-attack event)
|
|
:enter (-> target-running-attack enter)
|
|
:exit (behavior ()
|
|
(remove-setting! 'rapid-tracking)
|
|
((-> target-running-attack exit))
|
|
(none)
|
|
)
|
|
:trans (-> target-running-attack trans)
|
|
:code (behavior ()
|
|
(local-vars
|
|
(sv-16 float)
|
|
(sv-20 float)
|
|
(sv-24 int)
|
|
(sv-32 int)
|
|
(sv-40 int)
|
|
(sv-48 float)
|
|
(sv-56 handle)
|
|
(sv-64 int)
|
|
)
|
|
(set-setting! 'rapid-tracking #f 0 0)
|
|
((lambda :behavior target
|
|
()
|
|
(set! (-> self control unknown-float29) (* 0.5 (-> self control unknown-float29)))
|
|
(if (logtest? (water-flags touch-water) (-> self water flags))
|
|
(sound-play "swim-stroke")
|
|
)
|
|
(set! (-> self control dynam gravity-max) 368640.0)
|
|
(set! (-> self control dynam gravity-length) 368640.0)
|
|
(let ((gp-1 (cond
|
|
((zero? (-> self control unknown-word000))
|
|
(set! (-> self control unknown-word000) 1)
|
|
(-> self draw art-group data 402)
|
|
)
|
|
(else
|
|
(set! (-> self control unknown-word000) 0)
|
|
(-> self draw art-group data 409)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(ja-channel-push! 1 (seconds 0.02))
|
|
(ja-no-eval :group! gp-1 :num! (seek! (the float (+ (-> (the-as art-joint-anim gp-1) frames num-frames) -1))))
|
|
)
|
|
(target-start-attack)
|
|
(target-danger-set! 'punch #f)
|
|
(let ((a0-8 (-> self control unknown-impact-control00))
|
|
(t9-6 (method-of-type impact-control initialize))
|
|
(a1-4 self)
|
|
(v1-33 (ja-group))
|
|
)
|
|
(t9-6
|
|
a0-8
|
|
a1-4
|
|
(if (and v1-33 (= v1-33 (-> self draw art-group data 402)))
|
|
22
|
|
18
|
|
)
|
|
3276.8
|
|
(-> self control root-prim prim-core collide-with)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! sv-16 (the-as float 0.0))
|
|
(set! sv-20 1.0)
|
|
(set! sv-24 0)
|
|
(set! sv-32 0)
|
|
(set! sv-40 0)
|
|
(set! sv-48 1.0)
|
|
(set! sv-56 (the-as handle #f))
|
|
(set! sv-64 0)
|
|
(until (ja-done? 0)
|
|
(if (and (cpad-pressed? (-> self control cpad number) square)
|
|
(not (logtest? (-> self state-flags) (state-flags sf7 sf8)))
|
|
(not (logtest? (-> self control unknown-surface01 flags) (surface-flag no-attack)))
|
|
(and (logtest? (focus-status dark) (-> self focus-status))
|
|
(nonzero? (-> self darkjak))
|
|
(logtest? (-> self darkjak stage) 2)
|
|
)
|
|
(< sv-32 2)
|
|
)
|
|
(set! sv-40 (the-as int (-> self clock frame-counter)))
|
|
)
|
|
(when (>= (- (-> self clock frame-counter) (the-as time-frame sv-40)) (seconds 0.5))
|
|
(set! sv-40 0)
|
|
0
|
|
)
|
|
(if (and (nonzero? sv-40)
|
|
(< (- (the float (+ (-> (ja-group) frames num-frames) -1)) (/ 2.0 (-> (ja-group) artist-step)))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
((lambda :behavior target
|
|
((arg0 (pointer float)) (arg1 (pointer uint64)) (arg2 (pointer uint64)))
|
|
(let ((s4-0 (the-as process-focusable (combo-tracker-method-13
|
|
(-> self control unknown-combo-tracker00)
|
|
(-> self control unknown-dword06)
|
|
(-> self control trans)
|
|
24576.0
|
|
(-> self control unknown-matrix01 vector 2)
|
|
65536.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(when #t
|
|
(+! (-> arg1 0) 1)
|
|
(if s4-0
|
|
(combo-tracker-method-12
|
|
(-> self control unknown-combo-tracker00)
|
|
(-> self control trans)
|
|
(get-trans s4-0 3)
|
|
s4-0
|
|
(-> self clock frame-counter)
|
|
)
|
|
)
|
|
(target-start-attack)
|
|
(target-danger-set! 'punch #f)
|
|
(let ((v1-18 (ja-group)))
|
|
(cond
|
|
((and v1-18 (or (= v1-18 (-> self draw art-group data 402)) (= v1-18 (-> self draw art-group data 409))))
|
|
(ja-channel-push! 1 (seconds 0.1))
|
|
(ja-no-eval :group! (-> self draw art-group data 404)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 404)) frames num-frames) -1)))
|
|
)
|
|
)
|
|
(else
|
|
(ja-channel-push! 1 (seconds 0.1))
|
|
(ja-no-eval :group! (-> self draw art-group data 413)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 413)) frames num-frames) -1)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(initialize
|
|
(-> self control unknown-impact-control00)
|
|
self
|
|
22
|
|
3276.8
|
|
(-> self control root-prim prim-core collide-with)
|
|
)
|
|
(set! (-> arg0 0) (fmax 0.0 (-> arg0 0)))
|
|
)
|
|
)
|
|
(set! (-> arg2 0) (the-as uint 0))
|
|
0
|
|
(none)
|
|
)
|
|
(& sv-16)
|
|
(the-as (pointer uint64) (& sv-32))
|
|
(the-as (pointer uint64) (& sv-40))
|
|
)
|
|
)
|
|
(compute-alignment! (-> self align))
|
|
(when (not (ja-min? 0))
|
|
(cond
|
|
((and (>= (ja-frame-num 0) 20.0)
|
|
(and (and (not (logtest? (-> self control status) (collide-status on-surface)))
|
|
(>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06))
|
|
(the-as time-frame (-> *TARGET-bank* ground-timeout))
|
|
)
|
|
(>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))
|
|
(>= (target-height-above-ground) (-> *TARGET-bank* fall-height))
|
|
)
|
|
(>= (- (-> self clock frame-counter) (-> self control unknown-time-frame17)) (seconds 0.04))
|
|
)
|
|
)
|
|
(go target-falling #f)
|
|
)
|
|
((and (nonzero? sv-32)
|
|
(>= sv-16 -40960.0)
|
|
(let ((v1-84 (ja-group)))
|
|
(not (and (and v1-84 (= v1-84 (-> self draw art-group data 406))) (>= (ja-aframe-num 0) 77.0)))
|
|
)
|
|
(send-event (handle->process (-> self control unknown-combo-tracker00 target)) 'combo)
|
|
)
|
|
(let* ((s5-0 (handle->process (-> self control unknown-combo-tracker00 target)))
|
|
(gp-0 (if (type? s5-0 process-focusable)
|
|
s5-0
|
|
)
|
|
)
|
|
)
|
|
(let ((s5-1 (get-trans (the-as process-focusable gp-0) 3)))
|
|
(when (and (< 2048.0 (vector-vector-distance (-> self control trans) s5-1))
|
|
(or (and (= gp-0 (handle->process sv-56))
|
|
(< (- (-> self clock frame-counter) (the-as time-frame sv-64)) (seconds 0.1))
|
|
)
|
|
(>= (- (-> self clock frame-counter) (the-as time-frame sv-64)) (seconds 1))
|
|
)
|
|
)
|
|
(forward-up-nopitch->quaternion
|
|
(-> self control dir-targ)
|
|
(vector-! (new 'stack-no-clear 'vector) s5-1 (-> self control trans))
|
|
(vector-y-quaternion! (new 'stack-no-clear 'vector) (-> self control quat))
|
|
)
|
|
(let ((v1-125
|
|
(point-tracker-method-11
|
|
(-> self control unknown-combo-tracker00)
|
|
(new 'stack-no-clear 'vector)
|
|
(-> self control trans)
|
|
s5-1
|
|
(* 0.009107469
|
|
(the float (- (-> self clock frame-counter) (-> self control unknown-combo-tracker00 move-start-time)))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! sv-16 (fmin 163840.0 (sqrtf (+ (* (-> v1-125 x) (-> v1-125 x)) (* (-> v1-125 z) (-> v1-125 z))))))
|
|
)
|
|
(set-forward-vel sv-16)
|
|
)
|
|
)
|
|
(when (!= gp-0 (handle->process sv-56))
|
|
(set! sv-56 (process->handle gp-0))
|
|
(set! sv-64 (the-as int (-> self clock frame-counter)))
|
|
)
|
|
)
|
|
)
|
|
((< sv-16 0.0)
|
|
(set! sv-16 (seek sv-16 -0.04096 (* 491520.0 (-> self clock seconds-per-frame))))
|
|
(set-forward-vel sv-16)
|
|
)
|
|
((and (nonzero? (-> self control unknown-time-frame18))
|
|
(>= (- (-> self clock frame-counter) (-> self control unknown-time-frame18)) (seconds 0.04))
|
|
)
|
|
(set-forward-vel 0.0)
|
|
)
|
|
((and (not (cpad-hold? (-> self control cpad number) square))
|
|
(zero? sv-32)
|
|
(>= (- (-> self clock frame-counter) (-> self control unknown-combo-tracker00 move-start-time)) (seconds 0.2))
|
|
)
|
|
(if (= (-> self control ground-pat material) (pat-material ice))
|
|
(set-forward-vel (fmax 32768.0 (* 0.8 (-> self control unknown-float05))))
|
|
(set-forward-vel (* 0.8 (-> self control unknown-float05)))
|
|
)
|
|
)
|
|
((ja-done? 0)
|
|
(set-forward-vel sv-16)
|
|
)
|
|
(else
|
|
(set! sv-16
|
|
(* (target-align-vel-z-adjust (-> self align delta trans z)) (-> self clock frames-per-second) sv-20)
|
|
)
|
|
(set-forward-vel sv-16)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-1 (new-stack-vector0)))
|
|
(vector-matrix*! gp-1 (-> self control transv) (-> self control unknown-matrix00))
|
|
(set! (-> gp-1 y) 0.0)
|
|
(vector-matrix*! (-> self control align-xz-vel) gp-1 (-> self control unknown-matrix01))
|
|
)
|
|
(when (!= (the-as float (-> self control unknown-word04)) 0.0)
|
|
(activate! *camera-smush-control* 819.2 15 75 1.0 0.9 (-> *display* camera-clock))
|
|
(set! sv-16 (the-as float (-> self control unknown-word04)))
|
|
(set! (-> self control unknown-word04) (the-as uint 0.0))
|
|
)
|
|
(when (and (>= sv-16 0.0)
|
|
(let ((gp-2 (ja-group))
|
|
(f30-2 (ja-aframe-num 0))
|
|
)
|
|
(if (or (and (= gp-2 (-> self draw art-group data 402))
|
|
(>= f30-2 11.0)
|
|
(>= (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 402)) frames num-frames) -1))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
(and (= gp-2 (-> self draw art-group data 409))
|
|
(>= f30-2 11.0)
|
|
(>= (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 409)) frames num-frames) -1))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
(and (= gp-2 (-> self draw art-group data 404))
|
|
(>= f30-2 49.0)
|
|
(>= (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 404)) frames num-frames) -1))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
(and (= gp-2 (-> self draw art-group data 406))
|
|
(or (and (>= f30-2 62.0) (>= 77.0 f30-2))
|
|
(and (>= f30-2 82.0)
|
|
(>= (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 406)) frames num-frames) -1))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(and (= gp-2 (-> self draw art-group data 413))
|
|
(>= f30-2 62.0)
|
|
(>= (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 413)) frames num-frames) -1))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
)
|
|
#t
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-3 (new 'stack-no-clear 'collide-query)))
|
|
(when (and (>= (impact-control-method-11
|
|
(-> self control unknown-impact-control00)
|
|
gp-3
|
|
(the-as process #f)
|
|
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1)
|
|
)
|
|
0.0
|
|
)
|
|
(>= 0.0 (vector-dot (-> gp-3 best-other-tri normal) (-> self control unknown-impact-control00 dir)))
|
|
)
|
|
(when (= (-> gp-3 best-other-tri pat mode) (pat-mode wall))
|
|
(let ((s5-2 (get-process *default-dead-pool* part-tracker #x4000)))
|
|
(when s5-2
|
|
(let ((t9-38 (method-of-type part-tracker activate)))
|
|
(t9-38 (the-as part-tracker s5-2) self (symbol->string (-> part-tracker symbol)) (the-as pointer #x70004000))
|
|
)
|
|
(let ((t9-39 run-function-in-process)
|
|
(a0-96 s5-2)
|
|
(a1-21 part-tracker-init)
|
|
(a2-12 (-> *part-group-id-table* 11))
|
|
(a3-7 0)
|
|
(t0-3 #f)
|
|
(t1-2 #f)
|
|
(t2-1 #f)
|
|
(t3-0 *launch-matrix*)
|
|
)
|
|
(set! (-> t3-0 trans quad) (-> gp-3 best-other-tri intersect quad))
|
|
((the-as (function object object object object object object object object none) t9-39)
|
|
a0-96
|
|
a1-21
|
|
a2-12
|
|
a3-7
|
|
t0-3
|
|
t1-2
|
|
t2-1
|
|
t3-0
|
|
)
|
|
)
|
|
(-> s5-2 ppointer)
|
|
)
|
|
)
|
|
(let ((t1-3 (make-u128 (the-as uint #x7469682d6863) (the-as uint #x6e75702d6b616a64))))
|
|
(effect-control-method-12
|
|
(-> self skel effect)
|
|
'punch
|
|
-1.0
|
|
(the-as int (-> self control unknown-impact-control00 joint))
|
|
(the-as basic #f)
|
|
(the-as sound-name t1-3)
|
|
)
|
|
)
|
|
(activate! *camera-smush-control* 819.2 15 75 1.0 0.9 (-> *display* camera-clock))
|
|
(set! sv-16 (the-as float -61440.0))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-4 (ja-group))
|
|
(f0-53 (ja-aframe-num 0))
|
|
)
|
|
(if (and (= gp-4 (-> self draw art-group data 406))
|
|
(>= f0-53 80.0)
|
|
(>= (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 406)) frames num-frames) -1))
|
|
(ja-frame-num 0)
|
|
)
|
|
)
|
|
(align! (-> self align) (align-opts adjust-y-vel) 1.0 1.6 1.0)
|
|
)
|
|
)
|
|
(suspend)
|
|
(ja :num! (seek! max (* (-> self control unknown-surface01 align-speed) (the-as float sv-48))))
|
|
(if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 0.1))
|
|
(set! (-> *run-attack-mods* turnvv) 0.0)
|
|
)
|
|
(if (< 2 sv-24)
|
|
(set! sv-20 (* sv-20 (fmin 1.0 (-> self control zx-vel-frac))))
|
|
)
|
|
(set! sv-24 (+ sv-24 1))
|
|
)
|
|
(if (and (not (logtest? (-> self control status) (collide-status on-surface)))
|
|
(>= (- (-> self clock frame-counter) (-> self control unknown-time-frame06))
|
|
(the-as time-frame (-> *TARGET-bank* ground-timeout))
|
|
)
|
|
(>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))
|
|
(>= (target-height-above-ground) (-> *TARGET-bank* fall-height))
|
|
)
|
|
(go target-falling #f)
|
|
)
|
|
(go target-stance)
|
|
(none)
|
|
)
|
|
:post target-post
|
|
)
|
|
|
|
(defmethod update-clock! darkjak-info ((obj darkjak-info) (arg0 int))
|
|
(when (-> obj clock-on)
|
|
(+! (-> obj clock-pos) (* (-> obj clock-vel) (-> self clock seconds-per-frame)))
|
|
(+! (-> obj clock-vel) (* 4.0 (-> self clock seconds-per-frame)))
|
|
(cond
|
|
((< 1.0 (-> obj clock-pos))
|
|
(set! (-> obj clock-pos) 1.0)
|
|
(set! (-> obj clock-vel) 0.0)
|
|
)
|
|
((< (-> obj clock-pos) 0.05)
|
|
(set! (-> obj clock-pos) 0.05)
|
|
(set! (-> obj clock-vel) 1.0)
|
|
)
|
|
)
|
|
(update-rates! (-> *display* entity-clock) (-> obj clock-pos))
|
|
(update-rates! (-> *display* bg-clock) (-> obj clock-pos))
|
|
(if (= arg0 4)
|
|
(update-rates! (-> *display* target-clock) (-> obj clock-pos))
|
|
)
|
|
(when *sound-player-enable*
|
|
(let ((v1-27 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
|
|
(set! (-> v1-27 command) (sound-command set-param))
|
|
(set! (-> v1-27 id) (-> obj process 0 control unknown-sound-id00))
|
|
(set! (-> v1-27 params pitch-mod) (the int (* 1524.0 (- (- 1.0 (-> obj clock-pos))))))
|
|
(set! (-> v1-27 params mask) (the-as uint 2))
|
|
(-> v1-27 id)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defbehavior target-darkjak-bomb-collide target ((arg0 float) (arg1 float))
|
|
(seek! (-> (the-as (pointer float) arg0) 0) arg1 (* 4.0 (-> self clock seconds-per-frame)))
|
|
(set! (-> self control unknown-float40) (-> (the-as (pointer float) arg0) 0))
|
|
(target-danger-set! 'bomb #f)
|
|
(update-transforms (-> self control))
|
|
(let ((a1-2 (new 'stack-no-clear 'overlaps-others-params)))
|
|
(set! (-> a1-2 options) (overlaps-others-options))
|
|
(set! (-> a1-2 collide-with-filter) (the-as collide-spec -1))
|
|
(set! (-> a1-2 tlist) *touching-list*)
|
|
(find-overlapping-shapes (-> self control) a1-2)
|
|
)
|
|
(set! (-> self control unknown-float40) 0.0)
|
|
(target-danger-set! 'bomb #f)
|
|
(update-transforms (-> self control))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defstate target-darkjak-bomb0 (target)
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('pole-grab 'darkjak 'slide 'wade 'launch 'edge-grab 'jump 'shove 'attack 'attack-or-shove)
|
|
#f
|
|
)
|
|
(('hit)
|
|
(let ((v1-1 (the-as object (-> event param 1))))
|
|
(when (and (= (-> event param 0) 'bomb)
|
|
(logtest? (process-mask enemy) (-> (the-as process v1-1) mask))
|
|
(let ((v1-7 (ja-group)))
|
|
(and v1-7 (= v1-7 (-> self draw art-group data 418)))
|
|
)
|
|
(>= (ja-aframe-num 0) 35.0)
|
|
(not (-> self darkjak clock-on))
|
|
)
|
|
(set! (-> self darkjak clock-vel) -8.0)
|
|
(let ((v0-0 (the-as object #t)))
|
|
(set! (-> self darkjak clock-on) (the-as symbol v0-0))
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(('attack 'attack-or-shove 'swim)
|
|
#f
|
|
)
|
|
(else
|
|
(target-dangerous-event-handler proc arg1 event-type event)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(logior! (-> self state-flags) (state-flags sf4))
|
|
(set! (-> self darkjak clock-pos) 1.0)
|
|
(set! (-> self darkjak clock-vel) 0.0)
|
|
(set! (-> self darkjak clock-on) #f)
|
|
(set! (-> self control unknown-sound-id00)
|
|
(gui-control-method-9 *gui-control* self (gui-channel jak) (gui-action queue) "darkbom0" -99.0 0)
|
|
)
|
|
(none)
|
|
)
|
|
:exit (behavior ()
|
|
(gui-control-method-16
|
|
*gui-control*
|
|
(gui-action fade)
|
|
(-> self control unknown-sound-id00)
|
|
(gui-channel none)
|
|
(gui-action none)
|
|
(the-as string #f)
|
|
(the-as (function gui-connection symbol) #f)
|
|
(the-as process #f)
|
|
)
|
|
(logclear! (-> self state-flags) (state-flags sf6))
|
|
(target-exit)
|
|
(remove-setting! 'music-volume)
|
|
(remove-setting! 'sfx-volume)
|
|
(remove-setting! 'ambient-volume)
|
|
(set! (-> self darkjak clock-pos) 1.0)
|
|
(set! (-> self darkjak clock-vel) 0.0)
|
|
(set! (-> self darkjak clock-on) #f)
|
|
(update-rates! (-> *display* entity-clock) 1.0)
|
|
(update-rates! (-> *display* bg-clock) 1.0)
|
|
(update-rates! (-> *display* target-clock) 1.0)
|
|
(if (not (and (-> self next-state) (= (-> self next-state name) 'target-darkjak-get-off)))
|
|
((-> target-darkjak-get-off exit))
|
|
)
|
|
(none)
|
|
)
|
|
:trans (behavior ()
|
|
(update-clock! (-> self darkjak) 4)
|
|
(none)
|
|
)
|
|
:code (behavior ()
|
|
(local-vars
|
|
(v1-100 symbol)
|
|
(sv-16 float)
|
|
(sv-20 float)
|
|
(sv-80 vector)
|
|
(sv-84 (function vector :behavior target))
|
|
)
|
|
(set! (-> self darkjak stage) (-> self darkjak want-stage))
|
|
(set! (-> self neck flex-blend) 0.0)
|
|
(set! (-> self control unknown-surface00) *roll-flip-mods*)
|
|
(set! (-> self alt-cam-pos quad) (-> self control trans quad))
|
|
(set! sv-16 (the-as float 0.0))
|
|
(set! sv-20 1.0)
|
|
(ja-channel-push! 1 (seconds 0.15))
|
|
(when (jump-hit-ground-stuck?)
|
|
(ja-no-eval :group! (-> self draw art-group data 401)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 401)) frames num-frames) -1)))
|
|
:frame-num 0.0
|
|
)
|
|
(until (ja-done? 0)
|
|
(set! (-> self alt-cam-pos x) (-> self control trans x))
|
|
(set! (-> self alt-cam-pos z) (-> self control trans z))
|
|
(set-forward-vel (* 0.85 (-> self control unknown-float05)))
|
|
(suspend)
|
|
(ja :num! (seek!))
|
|
)
|
|
)
|
|
(set-setting! 'music-volume 'rel 0 0)
|
|
(set-setting! 'sfx-volume 'rel 0 0)
|
|
(set-setting! 'ambient-volume 'rel 0 0)
|
|
(ja-no-eval :group! (-> self draw art-group data 416)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 416)) frames num-frames) -1)))
|
|
:frame-num 0.0
|
|
)
|
|
(until (ja-done? 0)
|
|
(compute-alignment! (-> self align))
|
|
(align! (-> self align) (align-opts adjust-y-vel) 1.0 1.0 1.0)
|
|
(set! (-> self alt-cam-pos x) (-> self control trans x))
|
|
(set! (-> self alt-cam-pos z) (-> self control trans z))
|
|
(set-forward-vel (* 0.98 (-> self control unknown-float05)))
|
|
(suspend)
|
|
(ja :num! (seek!))
|
|
)
|
|
(ja-no-eval :group! (-> self draw art-group data 417)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 417)) frames num-frames) -1)))
|
|
:frame-num 0.0
|
|
)
|
|
(let ((f30-0 (the float (target-time-to-ground))))
|
|
(until v1-100
|
|
(set! (-> self alt-cam-pos x) (-> self control trans x))
|
|
(set! (-> self alt-cam-pos z) (-> self control trans z))
|
|
(set-forward-vel (* 0.98 (-> self control unknown-float05)))
|
|
(let ((v1-92 (new-stack-vector0))
|
|
(f0-35 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))
|
|
)
|
|
0.0
|
|
(vector-! v1-92 (-> self control transv) (vector-float*! v1-92 (-> self control dynam gravity-normal) f0-35))
|
|
(let* ((f1-5 (vector-length v1-92))
|
|
(f2-0 f1-5)
|
|
(f0-36 (+ f0-35 (* -491520.0 (-> self clock seconds-per-frame))))
|
|
)
|
|
(vector+!
|
|
(-> self control transv)
|
|
(vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-36)
|
|
(vector-float*! v1-92 v1-92 (/ f1-5 f2-0))
|
|
)
|
|
)
|
|
)
|
|
(suspend)
|
|
(ja :num! (seek! max (lerp-scale 1.5 0.3 f30-0 30.0 210.0)))
|
|
(set! v1-100 (or (ja-done? 0) (logtest? (-> self control status) (collide-status on-surface))))
|
|
)
|
|
)
|
|
(logclear! (-> self state-flags) (state-flags sf6))
|
|
(while (not (jump-hit-ground-stuck?))
|
|
(let ((v1-105 (new-stack-vector0))
|
|
(f0-42 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))
|
|
)
|
|
0.0
|
|
(vector-!
|
|
v1-105
|
|
(-> self control transv)
|
|
(vector-float*! v1-105 (-> self control dynam gravity-normal) f0-42)
|
|
)
|
|
(let* ((f1-8 (vector-length v1-105))
|
|
(f2-1 f1-8)
|
|
(f0-43 (+ f0-42 (* -491520.0 (-> self clock seconds-per-frame))))
|
|
)
|
|
(vector+!
|
|
(-> self control transv)
|
|
(vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f0-43)
|
|
(vector-float*! v1-105 v1-105 (/ f1-8 f2-1))
|
|
)
|
|
)
|
|
)
|
|
(ja :num! (seek! (ja-aframe 33.0 0)))
|
|
(suspend)
|
|
)
|
|
(set-forward-vel 0.0)
|
|
(ja-no-eval :group! (-> self draw art-group data 418) :num! (seek! (ja-aframe 35.0 0)) :frame-num 0.0)
|
|
(until (ja-done? 0)
|
|
(suspend)
|
|
(ja :num! (seek! (ja-aframe 35.0 0)))
|
|
)
|
|
(gui-control-method-16
|
|
*gui-control*
|
|
(gui-action play)
|
|
(-> self control unknown-sound-id00)
|
|
(gui-channel none)
|
|
(gui-action none)
|
|
(the-as string #f)
|
|
(the-as (function gui-connection symbol) #f)
|
|
(the-as process #f)
|
|
)
|
|
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5))
|
|
(activate! *camera-smush-control* 819.2 15 75 1.0 0.9 (-> *display* camera-clock))
|
|
(target-start-attack)
|
|
(target-danger-set! 'bomb #f)
|
|
(set! sv-80 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 18)))
|
|
(set! sv-84 (lambda :behavior target
|
|
()
|
|
(set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0)
|
|
(cond
|
|
((>= 10.0 (ja-aframe-num 0))
|
|
(let ((v0-1 (the-as vector (-> self draw color-emissive))))
|
|
(set! (-> (the-as rgbaf v0-1) x) 1.0)
|
|
(set! (-> (the-as rgbaf v0-1) y) 1.0)
|
|
(set! (-> (the-as rgbaf v0-1) z) 1.0)
|
|
(set! (-> (the-as rgbaf v0-1) w) 1.0)
|
|
v0-1
|
|
)
|
|
)
|
|
((>= 20.0 (ja-aframe-num 0))
|
|
(vector-lerp!
|
|
(-> self draw color-emissive)
|
|
(new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
|
|
(new 'static 'vector :x 0.5 :z 1.0 :w 1.0)
|
|
(lerp-scale 0.0 1.0 (ja-aframe-num 0) 10.0 20.0)
|
|
)
|
|
)
|
|
(else
|
|
(vector-lerp!
|
|
(-> self draw color-emissive)
|
|
(new 'static 'vector :x 0.5 :z 1.0 :w 1.0)
|
|
(new 'static 'vector :w 1.0)
|
|
(lerp-scale 0.0 1.0 (ja-aframe-num 0) 20.0 30.0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(if (and (logtest? (focus-status dark) (-> self focus-status))
|
|
(nonzero? (-> self darkjak))
|
|
(logtest? (-> self darkjak stage) 32)
|
|
)
|
|
(set! (-> sv-80 y) (* 0.5 (+ (-> self control trans y) (-> self control root-prim prim-core world-sphere y))))
|
|
(set! (-> sv-80 y) (-> self control root-prim prim-core world-sphere y))
|
|
)
|
|
(let ((gp-4 (get-process *default-dead-pool* part-tracker #x4000)))
|
|
(when gp-4
|
|
(let ((t9-37 (method-of-type part-tracker activate)))
|
|
(t9-37
|
|
(the-as part-tracker gp-4)
|
|
*entity-pool*
|
|
(symbol->string (-> part-tracker symbol))
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(let ((t9-38 run-function-in-process)
|
|
(a0-75 gp-4)
|
|
(a1-37 part-tracker-init)
|
|
(a2-35 (-> *part-group-id-table* 63))
|
|
(a3-15 0)
|
|
(t0-7 #f)
|
|
(t1-5 #f)
|
|
(t2-2 #f)
|
|
(t3-1 *launch-matrix*)
|
|
)
|
|
(set! (-> t3-1 trans quad) (-> sv-80 quad))
|
|
((the-as (function object object object object object object object object none) t9-38)
|
|
a0-75
|
|
a1-37
|
|
a2-35
|
|
a3-15
|
|
t0-7
|
|
t1-5
|
|
t2-2
|
|
t3-1
|
|
)
|
|
)
|
|
(-> gp-4 ppointer)
|
|
)
|
|
)
|
|
(let* ((s5-0 (get-process *default-dead-pool* manipy #x4000))
|
|
(gp-5
|
|
(when s5-0
|
|
(let ((t9-40 (method-of-type manipy activate)))
|
|
(t9-40 (the-as manipy s5-0) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000))
|
|
)
|
|
(let ((gp-6 run-function-in-process)
|
|
(s4-0 s5-0)
|
|
(s3-0 manipy-init)
|
|
(s2-0 sv-80)
|
|
(s1-0 (-> self entity))
|
|
(t0-8 (art-group-get-by-name *level* "skel-bomb-blast" (the-as (pointer uint32) #f)))
|
|
(t1-6 #f)
|
|
)
|
|
0
|
|
((the-as (function object object object object object object none) gp-6) s4-0 s3-0 s2-0 s1-0 t0-8 t1-6)
|
|
)
|
|
(-> s5-0 ppointer)
|
|
)
|
|
)
|
|
)
|
|
(when gp-5
|
|
(send-event (ppointer->process gp-5) 'anim-mode 'play1)
|
|
(send-event (ppointer->process gp-5) 'anim "idle")
|
|
(set-vector! (-> (the-as process-drawable (-> gp-5 0)) root scale) sv-20 1.0 sv-20 1.0)
|
|
(send-event (ppointer->process gp-5) 'trans-hook sv-84)
|
|
)
|
|
)
|
|
(let* ((s5-1 (get-process *default-dead-pool* manipy #x4000))
|
|
(gp-7
|
|
(when s5-1
|
|
(let ((t9-47 (method-of-type manipy activate)))
|
|
(t9-47 (the-as manipy s5-1) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000))
|
|
)
|
|
(let ((gp-8 run-function-in-process)
|
|
(s4-1 s5-1)
|
|
(s3-1 manipy-init)
|
|
(s2-1 sv-80)
|
|
(s1-1 (-> self entity))
|
|
(t0-9 (art-group-get-by-name *level* "skel-generic-blast" (the-as (pointer uint32) #f)))
|
|
(t1-7 #f)
|
|
)
|
|
0
|
|
((the-as (function object object object object object object none) gp-8) s4-1 s3-1 s2-1 s1-1 t0-9 t1-7)
|
|
)
|
|
(-> s5-1 ppointer)
|
|
)
|
|
)
|
|
)
|
|
(when gp-7
|
|
(send-event (ppointer->process gp-7) 'anim-mode 'play1)
|
|
(send-event (ppointer->process gp-7) 'anim "idle")
|
|
(set-vector! (-> (the-as process-drawable (-> gp-7 0)) root scale) sv-20 1.0 sv-20 1.0)
|
|
)
|
|
)
|
|
(ja-no-eval :num! (seek! (ja-aframe 38.0 0)))
|
|
(while (not (ja-done? 0))
|
|
(target-darkjak-bomb-collide (the-as float (& sv-16)) sv-20)
|
|
(set-forward-vel 0.0)
|
|
(suspend)
|
|
(ja-eval)
|
|
)
|
|
(when (and (logtest? (focus-status dark) (-> self focus-status))
|
|
(and (nonzero? (-> self darkjak)) (logtest? (-> self darkjak stage) 32))
|
|
)
|
|
(let* ((s5-2 (get-process *default-dead-pool* manipy #x4000))
|
|
(gp-10
|
|
(when s5-2
|
|
(let ((t9-59 (method-of-type manipy activate)))
|
|
(t9-59 (the-as manipy s5-2) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000))
|
|
)
|
|
(let ((gp-11 run-function-in-process)
|
|
(s4-2 s5-2)
|
|
(s3-2 manipy-init)
|
|
(s2-2 sv-80)
|
|
(s1-2 (-> self entity))
|
|
(t0-10 (art-group-get-by-name *level* "skel-bomb-blast" (the-as (pointer uint32) #f)))
|
|
(t1-8 #f)
|
|
)
|
|
0
|
|
((the-as (function object object object object object object none) gp-11) s4-2 s3-2 s2-2 s1-2 t0-10 t1-8)
|
|
)
|
|
(-> s5-2 ppointer)
|
|
)
|
|
)
|
|
)
|
|
(when gp-10
|
|
(send-event (ppointer->process gp-10) 'anim-mode 'play1)
|
|
(send-event (ppointer->process gp-10) 'anim "idle")
|
|
(set-vector! (-> (the-as process-drawable (-> gp-10 0)) root scale) sv-20 1.0 sv-20 1.0)
|
|
(send-event
|
|
(ppointer->process gp-10)
|
|
'trans-hook
|
|
(lambda :behavior target
|
|
()
|
|
(set-vector! (-> self draw color-mult) 0.0 0.0 0.0 1.0)
|
|
(cond
|
|
((>= 10.0 (ja-aframe-num 0))
|
|
(let ((v0-1 (the-as vector (-> self draw color-emissive))))
|
|
(set! (-> (the-as rgbaf v0-1) x) 0.5)
|
|
(set! (-> (the-as rgbaf v0-1) y) 0.25)
|
|
(set! (-> (the-as rgbaf v0-1) z) 1.0)
|
|
(set! (-> (the-as rgbaf v0-1) w) 1.0)
|
|
v0-1
|
|
)
|
|
)
|
|
((>= 20.0 (ja-aframe-num 0))
|
|
(vector-lerp!
|
|
(-> self draw color-emissive)
|
|
(new 'static 'vector :x 0.5 :z 1.0 :w 1.0)
|
|
(new 'static 'vector :x 0.5 :y 0.25 :z 1.0 :w 1.0)
|
|
(lerp-scale 0.0 1.0 (ja-aframe-num 0) 10.0 20.0)
|
|
)
|
|
)
|
|
(else
|
|
(vector-lerp!
|
|
(-> self draw color-emissive)
|
|
(new 'static 'vector :x 0.25 :z 1.0 :w 1.0)
|
|
(new 'static 'vector :w 1.0)
|
|
(lerp-scale 0.0 1.0 (ja-aframe-num 0) 20.0 30.0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let* ((s5-3 (get-process *default-dead-pool* manipy #x4000))
|
|
(gp-12
|
|
(when s5-3
|
|
(let ((t9-66 (method-of-type manipy activate)))
|
|
(t9-66 (the-as manipy s5-3) self (symbol->string (-> manipy symbol)) (the-as pointer #x70004000))
|
|
)
|
|
(let ((gp-13 run-function-in-process)
|
|
(s4-3 s5-3)
|
|
(s3-3 manipy-init)
|
|
(s2-3 sv-80)
|
|
(s1-3 (-> self entity))
|
|
(t0-11 (art-group-get-by-name *level* "skel-generic-blast" (the-as (pointer uint32) #f)))
|
|
(t1-9 #f)
|
|
)
|
|
0
|
|
((the-as (function object object object object object object none) gp-13) s4-3 s3-3 s2-3 s1-3 t0-11 t1-9)
|
|
)
|
|
(-> s5-3 ppointer)
|
|
)
|
|
)
|
|
)
|
|
(when gp-12
|
|
(send-event (ppointer->process gp-12) 'anim-mode 'play1)
|
|
(send-event (ppointer->process gp-12) 'anim "idle")
|
|
(set-vector! (-> (the-as process-drawable (-> gp-12 0)) root scale) sv-20 0.5 sv-20 1.0)
|
|
)
|
|
)
|
|
)
|
|
(ja-no-eval :num! (seek!))
|
|
(while (not (ja-done? 0))
|
|
(target-darkjak-bomb-collide (the-as float (& sv-16)) sv-20)
|
|
(set-forward-vel 0.0)
|
|
(suspend)
|
|
(ja-eval)
|
|
)
|
|
(remove-setting! 'music-volume)
|
|
(remove-setting! 'sfx-volume)
|
|
(remove-setting! 'ambient-volume)
|
|
(ja-no-eval :group! (-> self draw art-group data 411) :num! (seek! (ja-aframe 90.0 0)) :frame-num 0.0)
|
|
(until (ja-done? 0)
|
|
(target-darkjak-bomb-collide (the-as float (& sv-16)) sv-20)
|
|
(suspend)
|
|
(ja :num! (seek! (ja-aframe 90.0 0)))
|
|
)
|
|
(logior! (-> self control status) (collide-status on-surface on-ground touch-surface))
|
|
(send-event (handle->process (-> self notify)) 'notify 'attack 16)
|
|
(go target-darkjak-get-off)
|
|
(none)
|
|
)
|
|
:post target-no-stick-post
|
|
)
|
|
|
|
;; (set! (-> *lightning-spec-id-table* 10) (new 'static 'lightning-spec
|
|
;; :name "lightning-darkjak-bomb1"
|
|
;; :flags (lightning-spec-flags lsf0 size-from-adjust-dist)
|
|
;; :adjust-distance #xa
|
|
;; :start-color #x80ffffff
|
|
;; :end-color #x80ffffff
|
|
;; :fade-to-color #x58f00bf
|
|
;; :fade-start-factor 0.2
|
|
;; :texture #xc08400
|
|
;; :reduction 0.42
|
|
;; :num-points 96
|
|
;; :box-size 32768.0
|
|
;; :merge-factor 0.2
|
|
;; :merge-count 2
|
|
;; :radius 2048.0
|
|
;; :duration 300.0
|
|
;; :duration-rand 90.0
|
|
;; :sound (static-sound-spec "transform-zap")
|
|
;; )
|
|
;; )
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defbehavior target-bomb1-fire-shot target ((arg0 (pointer handle)) (arg1 int) (arg2 int) (arg3 int))
|
|
(local-vars (sv-128 target) (sv-144 int) (sv-160 vector) (sv-176 vector) (sv-192 vector))
|
|
(rlet ((vf0 :class vf)
|
|
(vf4 :class vf)
|
|
(vf5 :class vf)
|
|
(vf6 :class vf)
|
|
)
|
|
(init-vf0-vector)
|
|
(cond
|
|
((and (>= arg1 0) (< arg1 arg2))
|
|
(let ((gp-0 (handle->process (-> arg0 arg1))))
|
|
(when gp-0
|
|
(get-trans (the-as process-focusable gp-0) 3)
|
|
(process-spawn
|
|
lightning-tracker
|
|
:init lightning-tracker-init
|
|
(-> *lightning-spec-id-table* 10)
|
|
0
|
|
lightning-probe-callback
|
|
gp-0
|
|
3
|
|
3
|
|
:to self
|
|
)
|
|
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-6 from) (process->ppointer self))
|
|
(set! (-> a1-6 num-params) 2)
|
|
(set! (-> a1-6 message) 'attack)
|
|
(set! (-> a1-6 param 0) (the-as uint #f))
|
|
(let ((v1-19 (new 'static 'attack-info :mask (attack-info-mask mode id penetrate-using damage))))
|
|
(set! (-> v1-19 id) (the-as uint arg3))
|
|
(set! (-> v1-19 mode) 'ice)
|
|
(set! (-> v1-19 damage) 15.0)
|
|
(set! (-> v1-19 penetrate-using) (the-as uint (if (and (logtest? (focus-status dark) (-> self focus-status))
|
|
(nonzero? (-> self darkjak))
|
|
(logtest? (-> self darkjak stage) 32)
|
|
)
|
|
#xd0001
|
|
#x50001
|
|
)
|
|
)
|
|
)
|
|
(set! (-> a1-6 param 1) (the-as uint v1-19))
|
|
)
|
|
(send-event-function gp-0 a1-6)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(let ((gp-1 (get-process *default-dead-pool* lightning-tracker #x4000)))
|
|
(when gp-1
|
|
(let ((t9-6 (method-of-type lightning-tracker activate)))
|
|
(t9-6
|
|
(the-as lightning-tracker gp-1)
|
|
self
|
|
(symbol->string (-> lightning-tracker symbol))
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(let ((s5-1 run-function-in-process)
|
|
(s4-1 gp-1)
|
|
(s3-0 lightning-tracker-init)
|
|
(s2-0 (-> *lightning-spec-id-table* 10))
|
|
(s1-0 0)
|
|
(s0-0 lightning-probe-callback)
|
|
)
|
|
(set! sv-128 self)
|
|
(set! sv-144 3)
|
|
(set! sv-192 (new 'stack-no-clear 'vector))
|
|
(set! sv-160 (-> self control trans))
|
|
(set! sv-176 (new 'stack-no-clear 'vector))
|
|
(set! (-> sv-176 x) (rand-vu-float-range -40960.0 40960.0))
|
|
(set! (-> sv-176 y) (rand-vu-float-range -8192.0 8192.0))
|
|
(set! (-> sv-176 z) (rand-vu-float-range -40960.0 40960.0))
|
|
(set! (-> sv-176 w) 1.0)
|
|
(.mov.vf vf6 vf0 :mask #b1000)
|
|
(.lvf vf4 (&-> sv-160 quad))
|
|
(.lvf vf5 (&-> sv-176 quad))
|
|
(.add.vf vf6 vf4 vf5 :mask #b111)
|
|
(.svf (&-> sv-192 quad) vf6)
|
|
((the-as (function object object object object object object object object none) s5-1)
|
|
s4-1
|
|
s3-0
|
|
s2-0
|
|
s1-0
|
|
s0-0
|
|
sv-128
|
|
sv-144
|
|
sv-192
|
|
)
|
|
)
|
|
(-> gp-1 ppointer)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defstate target-darkjak-bomb1 (target)
|
|
:event (-> target-darkjak-bomb0 event)
|
|
:enter (-> target-attack-uppercut-jump enter)
|
|
:exit (-> target-darkjak-bomb0 exit)
|
|
:trans (behavior ()
|
|
(if (logtest? (-> self control status) (collide-status on-surface))
|
|
(go target-hit-ground #f)
|
|
)
|
|
(mod-var-jump #t #t (cpad-hold? (-> self control cpad number) x) (-> self control transv))
|
|
(if (and (= (-> self control unknown-symbol04) 'uppercut)
|
|
(< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) -8192.0)
|
|
)
|
|
(target-danger-set! 'harmless #f)
|
|
)
|
|
(slide-down-test)
|
|
(update-clock! (-> self darkjak) 8)
|
|
(none)
|
|
)
|
|
:code (behavior ((arg0 float) (arg1 float))
|
|
(local-vars
|
|
(sv-32 (array collide-shape))
|
|
(sv-40 int)
|
|
(sv-48 int)
|
|
(sv-56 sphere)
|
|
(sv-60 (pointer handle))
|
|
(sv-64 int)
|
|
(sv-72 time-frame)
|
|
(sv-80 time-frame)
|
|
(sv-88 float)
|
|
(sv-92 number)
|
|
(sv-96 time-frame)
|
|
(sv-104 uint)
|
|
)
|
|
(logior! (-> self state-flags) (state-flags sf4))
|
|
(set! (-> self neck flex-blend) 0.0)
|
|
(set-setting! 'music-volume 'rel 0 0)
|
|
(set-setting! 'ambient-volume 'rel 0 0)
|
|
(compute-alignment! (-> self align))
|
|
(gui-control-method-16
|
|
*gui-control*
|
|
(gui-action play)
|
|
(-> self control unknown-sound-id00)
|
|
(gui-channel none)
|
|
(gui-action none)
|
|
(the-as string #f)
|
|
(the-as (function gui-connection symbol) #f)
|
|
(the-as process #f)
|
|
)
|
|
(let ((f0-1 0.9))
|
|
(ja-no-eval :num! (seek! max f0-1))
|
|
)
|
|
(while (not (ja-done? 0))
|
|
(compute-alignment! (-> self align))
|
|
(set! (-> self control unknown-float06) 1.0)
|
|
(set! (-> self darkjak clock-vel) -4.0)
|
|
(set! (-> self darkjak clock-on) #t)
|
|
(align! (-> self align) (align-opts adjust-y-vel) 1.0 1.0 1.0)
|
|
(suspend)
|
|
(ja-eval)
|
|
)
|
|
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 (seconds 0.5))
|
|
(activate! *camera-smush-control* 819.2 15 75 1.0 0.9 (-> *display* camera-clock))
|
|
(let ((gp-0 (-> self post-hook)))
|
|
(set! (-> self post-hook) target-no-move-post)
|
|
(set! sv-32 (-> self focus-search))
|
|
(set! sv-40 0)
|
|
(set! sv-48 0)
|
|
(set! sv-56 (the-as sphere (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 3))))
|
|
(set! sv-60
|
|
(new 'static 'array handle 128
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
(new 'static 'handle)
|
|
)
|
|
)
|
|
(set! (-> sv-56 r)
|
|
(if (and (logtest? (focus-status dark) (-> self focus-status))
|
|
(and (nonzero? (-> self darkjak)) (logtest? (-> self darkjak stage) 32))
|
|
)
|
|
614400.0
|
|
327680.0
|
|
)
|
|
)
|
|
(set! sv-40 (fill-actor-list-for-sphere *actor-hash* sv-56 (-> sv-32 data) (-> sv-32 allocated-length)))
|
|
(set! (-> sv-32 length) sv-40)
|
|
(countdown (s5-0 sv-40)
|
|
(let* ((s4-0 (-> sv-32 s5-0 process))
|
|
(v1-53 (if (type? s4-0 process-focusable)
|
|
s4-0
|
|
)
|
|
)
|
|
)
|
|
(when (and v1-53 (logtest? (process-mask enemy guard vehicle) (-> v1-53 mask)))
|
|
(set! (-> sv-60 sv-48) (process->handle v1-53))
|
|
(set! sv-48 (+ sv-48 1))
|
|
(if (< 128 sv-48)
|
|
(set! sv-48 128)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> self control unknown-surface00)
|
|
(new 'static 'surface
|
|
:name 'uppercut
|
|
:turnv 524288.0
|
|
:tiltv 32768.0
|
|
:tiltvv 262144.0
|
|
:transv-max 32768.0
|
|
:target-speed 32768.0
|
|
:fric 0.2
|
|
:nonlin-fric-dist 1.0
|
|
:slip-factor 1.0
|
|
:slide-factor 1.0
|
|
:slope-up-factor 1.0
|
|
:slope-down-factor 1.0
|
|
:slope-slip-angle 1.0
|
|
:impact-fric 1.0
|
|
:bend-factor 1.0
|
|
:bend-speed 1.0
|
|
:alignv 1.0
|
|
:slope-up-traction 1.0
|
|
:align-speed 1.0
|
|
:turnvf 15.0
|
|
:tiltvf 150.0
|
|
:tiltvvf 15.0
|
|
:mode 'air
|
|
:flags (surface-flag air attack spin gun-off laser-hide)
|
|
)
|
|
)
|
|
(set! sv-64 0)
|
|
(set! sv-72 (-> self clock frame-counter))
|
|
(set! sv-80 (-> self clock frame-counter))
|
|
(set! sv-88 (the-as float 0.0))
|
|
(set! sv-92 0.0)
|
|
(set! sv-96 (-> self clock frame-counter))
|
|
(let* ((v1-70 (-> self game))
|
|
(a0-33 (+ (-> v1-70 attack-id) 1))
|
|
)
|
|
(set! (-> v1-70 attack-id) a0-33)
|
|
(set! sv-104 a0-33)
|
|
)
|
|
(ja-channel-push! 2 (seconds 0.05))
|
|
(ja :group! (-> self draw art-group data 419))
|
|
(ja :chan 1 :group! (-> self draw art-group data 420))
|
|
(while (or (< sv-64 sv-48) (< (- (-> self clock frame-counter) sv-80) (seconds 1.5)))
|
|
(let ((v1-77 (new-stack-vector0)))
|
|
(let ((f0-8 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))))
|
|
0.0
|
|
(vector-! v1-77 (-> self control transv) (vector-float*! v1-77 (-> self control dynam gravity-normal) f0-8))
|
|
)
|
|
(let* ((f0-9 (vector-length v1-77))
|
|
(f1-3 f0-9)
|
|
(f2-0 0.0)
|
|
)
|
|
(vector+!
|
|
(-> self control transv)
|
|
(vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-0)
|
|
(vector-float*! v1-77 v1-77 (/ f0-9 f1-3))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> self darkjak clock-vel) -4.0)
|
|
(set! (-> self darkjak clock-on) #t)
|
|
(send-event *camera* 'joystick -1098907648 #x3f800000)
|
|
(when (>= (- (-> self clock frame-counter) sv-72) (seconds 0.1))
|
|
(set! sv-72 (-> self clock frame-counter))
|
|
(target-bomb1-fire-shot sv-60 sv-64 sv-48 (the-as int sv-104))
|
|
(set! sv-64 (+ sv-64 1))
|
|
(if (>= (- (-> self clock frame-counter) (-> self state-time)) (seconds 1))
|
|
(set! sv-92 1.0)
|
|
)
|
|
)
|
|
(set! sv-88 (seek sv-88 (the-as float sv-92) (* 6.0 (-> self clock seconds-per-frame))))
|
|
(ja :num! (loop!))
|
|
(let ((a0-60 (-> self skel root-channel 1)))
|
|
(let ((f0-17 sv-88))
|
|
(set! (-> a0-60 frame-interp 1) f0-17)
|
|
(set! (-> a0-60 frame-interp 0) f0-17)
|
|
)
|
|
(set! (-> a0-60 param 0) 0.0)
|
|
(joint-control-channel-group-eval! a0-60 (the-as art-joint-anim #f) num-func-chan)
|
|
)
|
|
(suspend)
|
|
)
|
|
0
|
|
(set! (-> self post-hook) gp-0)
|
|
)
|
|
(set! (-> self control unknown-surface00) *double-jump-mods*)
|
|
(ja-channel-push! 1 (seconds 0.1))
|
|
(ja-no-eval :group! (-> self draw art-group data 421)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 421)) frames num-frames) -1)))
|
|
:frame-num 0.0
|
|
)
|
|
(until (ja-done? 0)
|
|
(ja-blend-eval)
|
|
(compute-alignment! (-> self align))
|
|
(set! (-> self control unknown-float06) 1.0)
|
|
(set! (-> self darkjak clock-vel) 4.0)
|
|
(suspend)
|
|
(ja :num! (seek!))
|
|
)
|
|
(set! (-> self gun surpress-time) (-> self clock frame-counter))
|
|
(send-event (handle->process (-> self notify)) 'notify 'attack 17)
|
|
(go target-darkjak-get-off)
|
|
(none)
|
|
)
|
|
:post target-post
|
|
)
|
|
|
|
;; (defstate target-darkjak-giant (target)
|
|
;; :event target-standard-event-handler
|
|
;; :exit (behavior ()
|
|
;; (logclear! (-> self state-flags) (state-flags lleg-still rleg-still))
|
|
;; (set! (-> self darkjak-interp) 1.0)
|
|
;; (set! (-> self darkjak-giant-interp) (the-as float (-> self control unknown-word04)))
|
|
;; (when (= (the-as float (-> self control unknown-word04)) 1.0)
|
|
;; (set! (-> self darkjak stage) (logand -33 (-> self darkjak stage)))
|
|
;; (set! (-> self darkjak want-stage) (-> self darkjak stage))
|
|
;; )
|
|
;; (none)
|
|
;; )
|
|
;; :code (behavior ()
|
|
;; (send-event (handle->process (-> self notify)) 'notify 'attack 18)
|
|
;; (set! (-> self darkjak want-stage) (-> self darkjak stage))
|
|
;; (logior! (-> self state-flags) (state-flags sf4))
|
|
;; (set! (-> self neck flex-blend) 0.0)
|
|
;; (set! (-> self control unknown-surface00) *darkjak-trans-mods*)
|
|
;; (logior! (-> self darkjak stage) 32)
|
|
;; (set! (-> self darkjak want-stage) (-> self darkjak stage))
|
|
;; (sound-play "djak-transform")
|
|
;; (let ((gp-1 (new 'stack-no-clear 'collide-query)))
|
|
;; (let ((s5-1 (new 'stack-no-clear 'inline-array 'sphere 1)))
|
|
;; (dotimes (s4-0 1)
|
|
;; ((method-of-type sphere new) (the-as symbol (-> s5-1 s4-0)) sphere)
|
|
;; )
|
|
;; (set! (-> s5-1 0 quad) (-> self control trans quad))
|
|
;; (set! (-> s5-1 0 y) (+ 12697.6 (-> s5-1 0 y)))
|
|
;; (set! (-> s5-1 0 r) 11878.4)
|
|
;; (let ((v1-29 gp-1))
|
|
;; (set! (-> v1-29 spheres) s5-1)
|
|
;; (set! (-> v1-29 num-spheres) (the-as uint 1))
|
|
;; (set! (-> v1-29 collide-with) (logclear
|
|
;; (-> self control root-prim prim-core collide-with)
|
|
;; (collide-spec civilian enemy vehicle-sphere projectile)
|
|
;; )
|
|
;; )
|
|
;; (set! (-> v1-29 ignore-process0) #f)
|
|
;; (set! (-> v1-29 ignore-process1) #f)
|
|
;; (set! (-> v1-29 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
|
|
;; (set! (-> v1-29 best-my-prim) (the-as collide-shape-prim #t))
|
|
;; (set! (-> v1-29 action-mask) (collide-action solid))
|
|
;; )
|
|
;; )
|
|
;; (let ((gp-2 (not (fill-and-probe-using-spheres *collide-cache* gp-1))))
|
|
;; (set! (-> self control unknown-word04) (the-as uint (if gp-2
|
|
;; 2.0
|
|
;; 1.0
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (when gp-2
|
|
;; (set-setting! 'string-min-length 'rel #x3fe66666 0)
|
|
;; (set-setting! 'string-max-length 'rel #x3fc00000 0)
|
|
;; (set-setting! 'string-spline-max-move 'abs #x46000000 0)
|
|
;; (set-setting! 'string-spline-accel 'abs #x433851ec 0)
|
|
;; (set-setting! 'string-spline-max-move-player 'abs #x45c00000 0)
|
|
;; (set-setting! 'string-spline-accel-player 'abs #x430f5c29 0)
|
|
;; )
|
|
;; (ja-channel-push! 1 (seconds 0.1))
|
|
;; (ja-no-eval :group! (-> self draw art-group data 412) :num! (seek! (ja-aframe 17.0 0)) :frame-num 0.0)
|
|
;; (until (ja-done? 0)
|
|
;; (cond
|
|
;; (gp-2
|
|
;; (set! (-> self darkjak-giant-interp) (lerp-scale 1.0 2.0 (ja-aframe-num 0) 5.0 15.0))
|
|
;; )
|
|
;; ((>= (ja-aframe-num 0) 10.0)
|
|
;; (set! (-> self darkjak-giant-interp) (lerp-scale 2.0 1.0 (ja-aframe-num 0) 5.0 15.0))
|
|
;; )
|
|
;; (else
|
|
;; (set! (-> self darkjak-giant-interp) (lerp-scale 1.0 2.0 (ja-aframe-num 0) 5.0 15.0))
|
|
;; )
|
|
;; )
|
|
;; (suspend)
|
|
;; (ja :num! (seek! (ja-aframe 17.0 0)))
|
|
;; )
|
|
;; )
|
|
;; )
|
|
;; (send-event *traffic-manager* 'increase-alert-level 4)
|
|
;; (go target-stance)
|
|
;; (none)
|
|
;; )
|
|
;; :post (-> target-grab post)
|
|
;; )
|