diff --git a/goal_src/jak2/engine/target/board/board-states.gc b/goal_src/jak2/engine/target/board/board-states.gc index ec3ac89568..f86add79d7 100644 --- a/goal_src/jak2/engine/target/board/board-states.gc +++ b/goal_src/jak2/engine/target/board/board-states.gc @@ -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)) diff --git a/goal_src/jak2/engine/target/logic-target.gc b/goal_src/jak2/engine/target/logic-target.gc index 6c28e932f8..958934c55a 100644 --- a/goal_src/jak2/engine/target/logic-target.gc +++ b/goal_src/jak2/engine/target/logic-target.gc @@ -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 diff --git a/goal_src/jak2/engine/target/target-darkjak.gc b/goal_src/jak2/engine/target/target-darkjak.gc index 4b68383d01..5b399ac948 100644 --- a/goal_src/jak2/engine/target/target-darkjak.gc +++ b/goal_src/jak2/engine/target/target-darkjak.gc @@ -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) + ) diff --git a/goal_src/jak2/engine/target/target-handler.gc b/goal_src/jak2/engine/target/target-handler.gc index 706007da04..5bff73af8f 100644 --- a/goal_src/jak2/engine/target/target-handler.gc +++ b/goal_src/jak2/engine/target/target-handler.gc @@ -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))