Files
jak-project/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc
T
2022-02-20 16:05:20 -05:00

674 lines
23 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup *med-res-snow1-sg* medres-snowback
0
2
((1 (meters 999999)))
:bounds (static-spherem -360 100 100 380)
:longest-edge (meters 0.01)
)
;; failed to figure out what this is:
(defstate cam-robotboss (camera-slave)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('set-pivot)
(let ((v0-0 (the-as object (-> self pivot-pt))))
(set! (-> (the-as vector v0-0) quad) (-> (the-as vector (-> arg3 param 0)) quad))
v0-0
)
)
(('teleport)
#f
)
(else
(cam-standard-event-handler arg0 arg1 arg2 arg3)
)
)
)
:enter
(behavior ()
(cond
((-> self enter-has-run)
)
(else
(set! *camera-base-mode* cam-robotboss)
(set! (-> self circular-follow quad) (-> *camera* tpos-curr-adj quad))
(set! (-> self pivot-rad) 73728.0)
(set! (-> self blend-from-type) (the-as uint 2))
(set! (-> self blend-to-type) (the-as uint 2))
)
)
(none)
)
:trans
(behavior ()
(when (zero? (logand (-> *camera* master-options) 2))
(set! *camera-base-mode* cam-string)
(cam-slave-go cam-free-floating)
)
(none)
)
:code
(behavior ()
(while #t
(when #t
(let ((a2-0 (new-stack-vector0)))
(vector-! a2-0 (-> *camera* tpos-curr-adj) (-> self pivot-pt))
(vector-! (-> self circular-follow) (-> self circular-follow) (-> self pivot-pt))
(v-slrp3!
(-> self circular-follow)
(-> self circular-follow)
a2-0
(-> *camera* local-down)
(* 182.04445 (-> *display* time-adjust-ratio))
)
)
(vector+! (-> self circular-follow) (-> self circular-follow) (-> self pivot-pt))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector-! gp-0 (-> self circular-follow) (-> self pivot-pt))
(vector-flatten! gp-0 gp-0 (-> *camera* local-down))
(let ((f0-3 (- (vector-length gp-0) (-> self pivot-rad))))
(if (>= 0.0 f0-3)
(vector-reset! gp-0)
(vector-normalize! gp-0 f0-3)
)
)
(vector+! (-> self trans) gp-0 (-> self pivot-pt))
)
)
(suspend)
)
(none)
)
)
;; definition of type ecoclaw-part-info
(deftype ecoclaw-part-info (structure)
((tracker handle :offset-assert 0)
(kind basic :offset-assert 8)
(trans vector :inline :offset-assert 16)
)
:method-count-assert 9
:size-assert #x20
:flag-assert #x900000020
)
;; definition for method 3 of type ecoclaw-part-info
(defmethod inspect ecoclaw-part-info ((obj ecoclaw-part-info))
(format #t "[~8x] ~A~%" obj 'ecoclaw-part-info)
(format #t "~Ttracker: ~D~%" (-> obj tracker))
(format #t "~Tkind: ~A~%" (-> obj kind))
(format #t "~Ttrans: #<vector @ #x~X>~%" (-> obj trans))
obj
)
;; definition of type ecoclaw
(deftype ecoclaw (process-drawable)
((particles ecoclaw-part-info 3 :inline :offset-assert 176)
)
:heap-base #xa0
:method-count-assert 20
:size-assert #x110
:flag-assert #x1400a00110
(:states
ecoclaw-activate
ecoclaw-idle
)
)
;; definition for method 3 of type ecoclaw
(defmethod inspect ecoclaw ((obj ecoclaw))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tparticles[3] @ #x~X~%" (-> obj particles))
obj
)
;; failed to figure out what this is:
(defskelgroup *ecoclaw-sg* ecoclaw
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 2 0 9)
:longest-edge (meters 0)
)
;; definition for function ecoclaw-beam-particle-callback
;; INFO: Return type mismatch int vs none.
(defun ecoclaw-beam-particle-callback ((arg0 part-tracker))
(let* ((a0-1 (the-as (pointer projectile) (-> arg0 userdata)))
(v1-1 (-> a0-1 0 parent-base))
(a0-3 (-> a0-1 0 base-vector))
(gp-1 (vector-! (new 'stack-no-clear 'vector) a0-3 v1-1))
(f30-0 (vector-y-angle gp-1))
(f0-1 (- 16384.0 (vector-x-angle gp-1)))
)
(set! (-> *part-id-table* 2727 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2727 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2729 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2729 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2726 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2726 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2720 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2720 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2722 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2722 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2719 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2719 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2734 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2734 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2736 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2736 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2733 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2733 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2741 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2741 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2743 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2743 init-specs 13 initial-valuef) f0-1)
(set! (-> *part-id-table* 2740 init-specs 14 initial-valuef) f30-0)
(set! (-> *part-id-table* 2740 init-specs 13 initial-valuef) f0-1)
)
0
(none)
)
;; definition for function ecoclaw-handler
;; INFO: Return type mismatch none vs object.
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 28]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 79]
;; Used lq/sq
(defbehavior ecoclaw-handler ecoclaw ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as
object
(cond
((= v1-0 'open)
(let ((gp-1 (-> arg3 param 0)))
(set! (-> self particles 0 kind)
(the-as basic (if (and (nonzero? gp-1) (type-type? (rtype-of gp-1) sparticle-launch-group))
gp-1
)
)
)
)
(set! (-> self particles 0 trans quad) (-> self root trans quad))
(let ((f0-1 (+ 12288.0 (-> self particles 0 trans y))))
(set! (-> self particles 0 trans y) f0-1)
f0-1
)
)
((= v1-0 'beam-on)
(let ((s5-0 (-> arg3 param 0)))
(set! (-> self particles 1 kind)
(the-as basic (if (and (nonzero? s5-0) (type-type? (rtype-of s5-0) sparticle-launch-group))
s5-0
)
)
)
)
(set! (-> self particles 1 trans quad) (-> self root trans quad))
(set! (-> self particles 1 trans y) (+ 24576.0 (-> self particles 1 trans y)))
(let ((s5-1 (-> arg3 param 1)))
(set! (-> self particles 2 kind)
(the-as basic (if (and (nonzero? s5-1) (type-type? (rtype-of s5-1) sparticle-launch-group))
s5-1
)
)
)
)
(set! (-> self particles 2 trans quad) (-> (the-as vector (-> arg3 param 2)) quad))
(let ((f0-5 (+ 81920.0 (-> self particles 2 trans y))))
(set! (-> self particles 2 trans y) f0-5)
f0-5
)
)
((= v1-0 'beam-off)
(set! (-> self particles 1 kind) #f)
(set! (-> self particles 2 kind) #f)
(let ((a0-10 (handle->process (-> self particles 1 tracker))))
(if a0-10
(deactivate a0-10)
)
)
(let ((a0-14 (handle->process (-> self particles 2 tracker))))
(if a0-14
(deactivate a0-14)
)
)
)
)
)
)
)
;; failed to figure out what this is:
(defstate ecoclaw-activate (ecoclaw)
:event
ecoclaw-handler
:trans
(behavior ()
(if (-> self particles 1 kind)
(draw-eco-beam (the-as vector (&-> self stack 112)) (the-as vector (&-> self stack 144)))
)
(dotimes (gp-0 2)
(cond
((handle->process (-> self particles gp-0 tracker))
(set! (-> (the-as part-tracker (-> self particles gp-0 tracker process 0)) start-time)
(-> *display* base-frame-counter)
)
)
((-> self particles gp-0 kind)
(let ((s5-0 (get-process *default-dead-pool* part-tracker #x4000)))
(set! (-> self particles gp-0 tracker)
(ppointer->handle (when s5-0
(let ((t9-2 (method-of-type part-tracker activate)))
(t9-2 (the-as part-tracker s5-0) self 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
s5-0
part-tracker-init
(-> self particles gp-0 kind)
-1
ecoclaw-beam-particle-callback
(-> self ppointer)
#f
(&+ (&-> self stack 80) (* gp-0 32))
)
(-> s5-0 ppointer)
)
)
)
)
)
)
)
(none)
)
:code
(behavior ()
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 frame-group) (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
)
(set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-1 (-> self skel root-channel 0)))
(set! (-> a0-1 param 0) (the float (+ (-> a0-1 frame-group data 0 length) -1)))
(set! (-> a0-1 param 1) 1.0)
(joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!)
)
)
(while #t
(suspend)
)
(none)
)
:post
(the-as (function none :behavior ecoclaw) ja-post)
)
;; failed to figure out what this is:
(defstate ecoclaw-idle (ecoclaw)
:event
ecoclaw-handler
:code
(behavior ()
(while #t
(if (-> self particles 0 kind)
(go ecoclaw-activate)
)
(suspend)
)
(none)
)
:post
(the-as (function none :behavior ecoclaw) ja-post)
)
;; definition for method 11 of type ecoclaw
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! ecoclaw ((obj ecoclaw) (arg0 entity-actor))
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *ecoclaw-sg* '())
(dotimes (v1-3 3)
(set! (-> obj particles v1-3 kind) #f)
(set! (-> obj particles v1-3 tracker) (the-as handle #f))
)
(set! *ecoclaw* (the-as (pointer ecoclaw) (process->ppointer obj)))
(go ecoclaw-idle)
(none)
)
;; definition of type silodoor
(deftype silodoor (process-drawable)
((part-opened float :offset-assert 176)
)
:heap-base #x50
:method-count-assert 22
:size-assert #xb4
:flag-assert #x16005000b4
(:methods
(idle () _type_ :state 20)
(hidden () _type_ :state 21)
)
)
;; definition for method 3 of type silodoor
(defmethod inspect silodoor ((obj silodoor))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tpart-opened: ~f~%" (-> obj part-opened))
obj
)
;; failed to figure out what this is:
(defskelgroup *silodoor-sg* silodoor
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 25)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate idle (silodoor)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('open)
(let ((f0-0 (the-as float (-> arg3 param 0))))
(set! (-> self part-opened) f0-0)
f0-0
)
)
(('hide)
(go-virtual hidden)
)
)
)
:trans
(the-as (function none :behavior silodoor) rider-trans)
:code
(behavior ()
(while #t
(when (not (movie?))
(let ((gp-0 (-> self skel root-channel 0)))
(set! (-> gp-0 param 0) (* (-> self part-opened) (the float (ja-num-frames 0))))
(set! (-> gp-0 param 1) 0.01)
(joint-control-channel-group-eval! gp-0 (the-as art-joint-anim #f) num-func-seek!)
)
(cond
((< 0.01 (fabs (- (* (-> self part-opened) (the float (ja-num-frames 0))) (ja-aframe-num 0))))
(if (nonzero? (-> self sound))
(update! (-> self sound))
)
)
((nonzero? (-> self sound))
(stop! (-> self sound))
)
)
)
(suspend)
)
(none)
)
:post
(behavior ()
(if (and (< (vector-vector-xz-distance (target-pos 0) (-> self root trans)) 57344.0) (not (ja-min? 0)))
(rider-post)
(transform-post)
)
(none)
)
)
;; failed to figure out what this is:
(defstate hidden (silodoor)
:virtual #t
:code
(behavior ()
(if (nonzero? (-> self sound))
(stop! (-> self sound))
)
(logior! (-> self draw status) (draw-status hidden))
(ja-post)
(while (not (task-closed? (game-task finalboss-movies) (task-status need-reminder-a)))
(suspend)
)
(logclear! (-> self draw status) (draw-status hidden))
(let ((v1-12 (-> self skel root-channel 0)))
(set! (-> v1-12 num-func) num-func-identity)
(set! (-> v1-12 frame-num) 0.0)
)
(set! (-> self part-opened) 0.0)
(go-virtual idle)
(none)
)
)
;; definition for method 11 of type silodoor
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! silodoor ((obj silodoor) (arg0 entity-actor))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
)
(alloc-riders s4-0 1)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0)))
(set! (-> s3-0 prim-core collide-as) (collide-kind ground-object))
(set! (-> s3-0 collide-with) (collide-kind target))
(set! (-> s3-0 prim-core action) (collide-action solid ca-1))
(set! (-> s3-0 transform-index) 0)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0)
(set-root-prim! s4-0 s3-0)
(let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s2-0 prim-core collide-as) (collide-kind ground-object))
(set! (-> s2-0 collide-with) (collide-kind target))
(set! (-> s2-0 prim-core action) (collide-action solid ca-1 ca-4))
(set! (-> s2-0 prim-core offense) (collide-offense indestructible))
(set! (-> s2-0 transform-index) 5)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0)
(append-prim s3-0 s2-0)
)
(let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
(set! (-> s2-1 prim-core collide-as) (collide-kind ground-object))
(set! (-> s2-1 collide-with) (collide-kind target))
(set! (-> s2-1 prim-core action) (collide-action solid ca-1 ca-4))
(set! (-> s2-1 prim-core offense) (collide-offense indestructible))
(set! (-> s2-1 transform-index) 4)
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0)
(append-prim s3-0 s2-1)
)
(let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0))))
(set! (-> s2-2 prim-core collide-as) (collide-kind ground-object))
(set! (-> s2-2 collide-with) (collide-kind target))
(set! (-> s2-2 prim-core action) (collide-action solid ca-1 ca-4))
(set! (-> s2-2 prim-core offense) (collide-offense indestructible))
(set! (-> s2-2 transform-index) 7)
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0)
(append-prim s3-0 s2-2)
)
(let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0))))
(set! (-> s2-3 prim-core collide-as) (collide-kind ground-object))
(set! (-> s2-3 collide-with) (collide-kind target))
(set! (-> s2-3 prim-core action) (collide-action solid ca-1 ca-4))
(set! (-> s2-3 prim-core offense) (collide-offense indestructible))
(set! (-> s2-3 transform-index) 6)
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0)
(append-prim s3-0 s2-3)
)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *silodoor-sg* '())
(logior! (-> obj skel status) (janim-status inited))
(set! (-> obj root pause-adjust-distance) 1228800.0)
(set! (-> obj sound) (new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "silo-moves")
:volume #x400
:fo-max 80
)
(-> obj root trans)
)
)
(logclear! (-> obj mask) (process-mask actor-pause crate enemy attackable))
(set! (-> obj part-opened) 0.0)
(go (method-of-object obj idle))
(none)
)
;; definition of type finalbosscam
(deftype finalbosscam (process-taskable)
((robotboss handle :offset-assert 384)
)
:heap-base #x120
:method-count-assert 53
:size-assert #x188
:flag-assert #x3501200188
)
;; definition for method 3 of type finalbosscam
(defmethod inspect finalbosscam ((obj finalbosscam))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
(format #t "~T~Trobotboss: ~D~%" (-> obj robotboss))
obj
)
;; failed to figure out what this is:
(defskelgroup *finalbosscam-sg* finalbosscam
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 4)
:longest-edge (meters 0)
)
;; definition for function robotboss-manipy-trans-hook
;; INFO: Return type mismatch int vs none.
(defbehavior robotboss-manipy-trans-hook robotboss ()
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-0 (-> self node-list data 7))
(spawn (-> self part) gp-0)
)
0
(none)
)
;; definition for method 32 of type finalbosscam
;; INFO: Return type mismatch spool-anim vs basic.
(defmethod play-anim! finalbosscam ((obj finalbosscam) (arg0 symbol))
(when arg0
(let ((s5-0 (get-process *default-dead-pool* manipy #x4000)))
(set! (-> obj robotboss)
(ppointer->handle
(when s5-0
(let ((t9-1 (method-of-type manipy activate)))
(t9-1 (the-as manipy s5-0) obj 'manipy (the-as pointer #x70004000))
)
(run-now-in-process s5-0 manipy-init (-> obj root-override trans) (-> obj entity) *robotboss-sg* #f)
(-> s5-0 ppointer)
)
)
)
)
(send-event (handle->process (-> obj robotboss)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> obj robotboss)) 'center-joint 3)
(send-event (handle->process (-> obj robotboss)) 'origin-joint-index 3)
(send-event (handle->process (-> obj robotboss)) 'trans-hook robotboss-manipy-trans-hook)
(send-event
(handle->process (-> obj robotboss))
'eval
(lambda :behavior finalbosscam () (let ((v0-0 (create-launch-control (-> *part-group-id-table* 645) self)))
(set! (-> self part) v0-0)
v0-0
)
)
)
(let ((v1-43 (handle->process (-> obj robotboss))))
(if v1-43
(set! (-> (the-as robotboss v1-43) draw bounds w) 327680.0)
)
)
)
(the-as basic (new 'static 'spool-anim :name "finalbosscam-white-eco" :index 3 :parts 3 :command-list '()))
)
;; definition for method 31 of type finalbosscam
(defmethod get-art-elem finalbosscam ((obj finalbosscam))
(-> obj draw art-group data 2)
)
;; definition for method 39 of type finalbosscam
(defmethod should-display? finalbosscam ((obj finalbosscam))
#f
)
;; failed to figure out what this is:
(defstate play-anim (finalbosscam)
:virtual #t
:exit
(behavior ()
(let ((a0-1 (handle->process (-> self robotboss))))
(if a0-1
(deactivate a0-1)
)
)
((-> (method-of-type process-taskable play-anim) exit))
(none)
)
)
;; definition for function finalbosscam-init-by-other
;; INFO: Return type mismatch object vs none.
(defbehavior finalbosscam-init-by-other finalbosscam ((arg0 entity))
(set! (-> self entity) arg0)
(dummy-40 self arg0 *finalbosscam-sg* 4 4 (new 'static 'vector :w 4096.0) 4)
(set! (-> self tasks) (get-task-control (game-task finalboss-movies)))
(set! (-> self robotboss) (the-as handle #f))
(go-virtual hidden)
(none)
)