jak2: misc fixes (#2050)

- Stub `target-board-handler` to prevent jetboard crash
- Increase stack size for `target` to fix dark bomb crash
- Uncomment some code in `target-darkjak` to make Dark Jak work (texture
morph still crashes, so it's commented out)
- Increase stack size for a `process-spawn-function` in
`target-send-attack` to fix a crash with giant Dark Jak
This commit is contained in:
Hat Kid
2022-12-22 19:59:24 +01:00
committed by GitHub
parent 4edec2730f
commit 98c2291102
4 changed files with 445 additions and 446 deletions
@@ -29,6 +29,10 @@
;; DECOMP BEGINS
(defbehavior target-board-handler target ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
#f
)
(defun vector-vector-angle ((arg0 vector) (arg1 vector))
(let ((s4-0 (new 'stack-no-clear 'matrix))
(gp-0 (new 'stack-no-clear 'matrix))
+1 -1
View File
@@ -3105,7 +3105,7 @@
(set! arg0 (get-current-continue-forced *game-info*))
)
(set-continue! *game-info* arg0 #f)
(stack-size-set! (-> obj main-thread) 1024)
(stack-size-set! (-> obj main-thread) 2048) ;; changed from 1024
(logior! (-> obj mask) (process-mask target))
(set! (-> obj state-hook) (the-as (function none :behavior target) nothing))
(cond
+439 -445
View File
@@ -9,9 +9,8 @@
;; 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~%")
(format 0 "SKIP: set-darkjak-texture-morph! in target-darkjak~%")
(format 0 "SKIP: process-drawable-shock-wall-effect in target-darkjak~%")
(defbehavior target-darkjak-setup target ((arg0 symbol))
(when (zero? (-> self darkjak))
@@ -79,11 +78,11 @@
)
)
;; (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)
;; )
(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)))
@@ -103,9 +102,6 @@
(none)
)
;; definition for function target-darkjak-process
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
;; ERROR: Function may read a register that is not set: t2
(defbehavior target-darkjak-process target ()
(local-vars (t2-0 none) (gp-0 vector))
@@ -201,9 +197,7 @@
(set! (-> a3-7 w) 1.0)
(t9-14 a0-43 (the-as vector a1-11) (the-as quaternion a2-8) a3-7)
)
(when (nonzero? set-darkjak-texture-morph!)
(set-darkjak-texture-morph! f30-0)
)
;; (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)
@@ -245,15 +239,15 @@
((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-5)
(the-as int t1-0)
(the-as float t2-0)
)
;; (process-drawable-shock-wall-effect
;; self
;; (-> *lightning-spec-id-table* 8)
;; lightning-probe-callback
;; (-> *part-id-table* 179)
;; (the-as int t0-5)
;; (the-as int t1-0)
;; (the-as float t2-0)
;; )
)
)
((rand-vu-percent? 0.1)
@@ -279,345 +273,345 @@
(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-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-override)
(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 mod-surface) *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-override)) darkjak-start-time) (-> self clock frame-counter))
(set! (-> (the-as fact-info-target (-> self fact-override)) 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) (collide-status 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 cpad number) l2))
(and (= *cheat-mode* 'debug) (cpad-hold? (-> self control cpad 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-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 mod-surface) *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) (collide-status 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) (collide-status 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 cpad 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 cpad 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 cpad 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 cpad 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)
@@ -1925,87 +1919,87 @@
: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)
;; )
(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 mod-surface) *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 best-dist) (the-as float 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)
)
@@ -293,6 +293,7 @@
(lambda :behavior target
((arg0 handle))
(local-vars (sv-112 vector) (sv-128 matrix))
(stack-size-set! (-> self main-thread) 512) ;; added
(let ((gp-0 (-> self parent)))
(let ((s4-0 0)
(s3-0 (-> self clock frame-counter))