Files
jak-project/test/decompiler/reference/levels/misty/muse_REF.gc
T
ManDude 66e395d547 [decompiler] detect seek! and seekl! macros (#1317)
* detect `seek!` and `seekl!`

* fancy struct instead of pair mess

* fixes

* i think this was wrong?

* update refs

* update source

* More logical branching

* even better branching
2022-04-18 15:01:44 -04:00

699 lines
27 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type muse
(deftype muse (nav-enemy)
((root-override collide-shape-moving :offset 112)
(current-path-index float :offset-assert 400)
(prev-path-index float :offset-assert 404)
(dest-path-index float :offset-assert 408)
(player-path-index float :offset-assert 412)
(max-path-index float :offset-assert 416)
(sprint-distance float :offset-assert 420)
(dest-point vector :inline :offset-assert 432)
(anim spool-anim :offset-assert 448)
(victory-anim spool-anim :offset-assert 452)
(old-target-pos transformq :inline :offset-assert 464)
)
:heap-base #x190
:method-count-assert 76
:size-assert #x200
:flag-assert #x4c01900200
(:states
muse-caught
muse-idle
)
)
;; definition for method 3 of type muse
(defmethod inspect muse ((obj muse))
(let ((t9-0 (method-of-type nav-enemy inspect)))
(t9-0 obj)
)
(format #t "~T~Tcurrent-path-index: ~f~%" (-> obj current-path-index))
(format #t "~T~Tprev-path-index: ~f~%" (-> obj prev-path-index))
(format #t "~T~Tdest-path-index: ~f~%" (-> obj dest-path-index))
(format #t "~T~Tplayer-path-index: ~f~%" (-> obj player-path-index))
(format #t "~T~Tmax-path-index: ~f~%" (-> obj max-path-index))
(format #t "~T~Tsprint-distance: ~f~%" (-> obj sprint-distance))
(format #t "~T~Tdest-point: #<vector @ #x~X>~%" (-> obj dest-point))
(format #t "~T~Tanim: ~A~%" (-> obj anim))
(format #t "~T~Tvictory-anim: ~A~%" (-> obj victory-anim))
(format #t "~T~Told-target-pos: #<transformq @ #x~X>~%" (-> obj old-target-pos))
obj
)
;; definition of type point-on-path-segment-info
(deftype point-on-path-segment-info (structure)
((point vector :inline :offset-assert 0)
(segment vector 2 :inline :offset-assert 16)
(dir vector :inline :offset-assert 48)
(nearest-point vector :inline :offset-assert 64)
(segment-length float :offset-assert 80)
(distance-to-segment float :offset-assert 84)
(parametric-index float :offset-assert 88)
)
:method-count-assert 9
:size-assert #x5c
:flag-assert #x90000005c
)
;; definition for method 3 of type point-on-path-segment-info
(defmethod inspect point-on-path-segment-info ((obj point-on-path-segment-info))
(format #t "[~8x] ~A~%" obj 'point-on-path-segment-info)
(format #t "~Tpoint: #<vector @ #x~X>~%" (-> obj point))
(format #t "~Tsegment[2] @ #x~X~%" (-> obj segment))
(format #t "~Tdir: #<vector @ #x~X>~%" (-> obj dir))
(format #t "~Tnearest-point: #<vector @ #x~X>~%" (-> obj nearest-point))
(format #t "~Tsegment-length: ~f~%" (-> obj segment-length))
(format #t "~Tdistance-to-segment: ~f~%" (-> obj distance-to-segment))
(format #t "~Tparametric-index: ~f~%" (-> obj parametric-index))
obj
)
;; definition for function analyze-point-on-path-segment
;; Used lq/sq
(defun analyze-point-on-path-segment ((arg0 point-on-path-segment-info))
(vector-! (-> arg0 dir) (-> arg0 segment 1) (the-as vector (-> arg0 segment)))
(vector-normalize! (-> arg0 dir) 1.0)
(set! (-> arg0 segment-length) (vector-vector-distance (the-as vector (-> arg0 segment)) (-> arg0 segment 1)))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(vector-! s5-0 (the-as vector (-> arg0 segment)) (-> arg0 point))
(vector+*! s5-0 s5-0 (-> arg0 dir) (- (vector-dot s5-0 (-> arg0 dir))))
(vector+! (-> arg0 nearest-point) (-> arg0 point) s5-0)
(set! (-> arg0 distance-to-segment) (vector-length s5-0))
(vector-! s5-0 (-> arg0 point) (the-as vector (-> arg0 segment)))
(set! (-> arg0 parametric-index) (/ (vector-dot (-> arg0 dir) s5-0) (-> arg0 segment-length)))
)
(cond
((< (-> arg0 parametric-index) 0.0)
(set! (-> arg0 parametric-index) 0.0)
(set! (-> arg0 nearest-point quad) (-> arg0 segment 0 quad))
(let ((f0-10 (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point))))
(set! (-> arg0 distance-to-segment) f0-10)
f0-10
)
)
((< 1.0 (-> arg0 parametric-index))
(set! (-> arg0 parametric-index) 1.0)
(set! (-> arg0 nearest-point quad) (-> arg0 segment 1 quad))
(let ((f0-13 (vector-vector-distance (-> arg0 nearest-point) (-> arg0 point))))
(set! (-> arg0 distance-to-segment) f0-13)
f0-13
)
)
)
)
;; definition for function muse-get-path-point
;; INFO: Return type mismatch int vs none.
(defbehavior muse-get-path-point muse ((arg0 vector) (arg1 int))
(eval-path-curve-div! (-> self path) arg0 (the float arg1) 'interp)
0
(none)
)
;; definition for function muse-check-dest-point
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defbehavior muse-check-dest-point muse ()
(let ((gp-0 (new 'stack-no-clear 'point-on-path-segment-info))
(f26-0 4096000.0)
(f30-0 0.0)
(f24-0 4096000.0)
(f28-0 0.0)
)
(let ((s5-0 (+ (-> self path curve num-cverts) -1))
(s4-0 (target-pos 0))
)
(dotimes (s3-0 s5-0)
(let ((f22-0 (the float s3-0)))
(let ((f20-0 (the float (+ s3-0 1))))
(eval-path-curve-div! (-> self path) (the-as vector (-> gp-0 segment)) f22-0 'interp)
(eval-path-curve-div! (-> self path) (-> gp-0 segment 1) f20-0 'interp)
)
(set! (-> gp-0 point quad) (-> s4-0 quad))
(analyze-point-on-path-segment gp-0)
(when (< (-> gp-0 distance-to-segment) f24-0)
(set! f24-0 (-> gp-0 distance-to-segment))
(set! f28-0 (+ f22-0 (-> gp-0 parametric-index)))
)
(set! (-> gp-0 point quad) (-> self collide-info trans quad))
(analyze-point-on-path-segment gp-0)
(when (< (-> gp-0 distance-to-segment) f26-0)
(set! f26-0 (-> gp-0 distance-to-segment))
(set! f30-0 (+ f22-0 (-> gp-0 parametric-index)))
)
)
0
)
)
(let ((f0-6 (- f30-0 f28-0)))
(if (< f0-6 (* -0.5 (-> self max-path-index)))
(+! f0-6 (-> self max-path-index))
)
(if (< (* 0.5 (-> self max-path-index)) f0-6)
(set! f0-6 (- f0-6 (-> self max-path-index)))
)
(cond
((>= f0-6 0.0)
(set! (-> self dest-path-index) (the float (the int (+ 2.5 f30-0))))
(if (>= (-> self dest-path-index) (-> self max-path-index))
(set! (-> self dest-path-index) (- (-> self dest-path-index) (-> self max-path-index)))
)
)
(else
(set! (-> self dest-path-index) (+ -1.5 f30-0))
(if (< (-> self dest-path-index) 0.0)
(+! (-> self dest-path-index) (-> self max-path-index))
)
(set! (-> self dest-path-index) (the float (the int (-> self dest-path-index))))
)
)
)
)
(eval-path-curve-div! (-> self path) (-> self dest-point) (-> self dest-path-index) 'interp)
0
(none)
)
;; definition for method 51 of type muse
;; INFO: Return type mismatch int vs none.
(defmethod dummy-51 muse ((obj muse))
(dotimes (s5-0 2)
(let ((v1-2 (rand-vu-int-range 3 (+ (-> obj node-list length) -1))))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 271)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> obj node-list data v1-2))
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
0
(none)
)
;; definition for method 39 of type muse
(defmethod common-post muse ((obj muse))
(spool-push *art-control* (-> obj anim name) 0 obj -99.0)
(dummy-51 obj)
((method-of-type nav-enemy common-post) obj)
(none)
)
;; failed to figure out what this is:
(defskelgroup *muse-sg* muse
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 2 0 3)
:longest-edge (meters 0)
:shadow 2
)
;; definition for method 44 of type muse
(defmethod dummy-44 muse ((obj muse) (arg0 process) (arg1 event-message-block))
(go muse-caught)
)
;; definition for method 43 of type muse
(defmethod dummy-43 muse ((obj muse) (arg0 process) (arg1 event-message-block))
(go muse-caught)
)
;; failed to figure out what this is:
nav-enemy-default-event-handler
;; failed to figure out what this is:
(defstate muse-idle (muse)
:event
(the-as
(function process int symbol event-message-block object :behavior muse)
nav-enemy-default-event-handler
)
:trans
(behavior ()
(seek! (-> self sprint-distance) 61440.0 (* 8192.0 (-> *display* seconds-per-frame)))
(if (and *target* (>= 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))))
(level-hint-spawn (game-text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))
)
(if (and *target* (>= 81920.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))))
(go-virtual nav-enemy-chase)
)
(none)
)
:code
(behavior ()
(when (= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 4)
)
(ja-channel-push! 1 30)
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) 1.0)
(joint-control-channel-group! a0-5 (the-as art-joint-anim #f) num-func-loop!)
)
(let ((a0-6 (-> self skel root-channel 0)))
(set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 6)))
(set! (-> a0-6 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1))
)
(set! (-> a0-6 param 1) 1.0)
(set! (-> a0-6 frame-num) 0.0)
(joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!)
)
(until (ja-done? 0)
(ja-blend-eval)
(suspend)
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1)))
(set! (-> a0-7 param 1) 1.0)
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(while #t
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 3)))
(set! (-> a0-9 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) data 0 length) -1))
)
(set! (-> a0-9 param 1) 1.0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 3)) num-func-seek!)
)
(until (ja-done? 0)
(spool-push *art-control* (-> self anim name) 0 self -99.0)
(dummy-51 self)
(suspend)
(let ((a0-12 (-> self skel root-channel 0)))
(set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1)))
(set! (-> a0-12 param 1) 1.0)
(joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(none)
)
:post
(the-as (function none :behavior muse) ja-post)
)
;; failed to figure out what this is:
(defstate nav-enemy-chase (muse)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior muse)
nav-enemy-default-event-handler
)
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(none)
)
:trans
(behavior ()
(cond
((or (not *target*)
(< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))
)
(set! (-> self target-speed) 0.0)
(if (= (-> self momentum-speed) 0.0)
(go muse-idle)
)
)
((or (not *target*) (< (-> self sprint-distance)
(vector-vector-distance (-> self collide-info trans) (-> *target* control trans))
)
)
(set! (-> self target-speed) 40960.0)
)
(else
(set! (-> self target-speed) 61440.0)
)
)
(seek! (-> self sprint-distance) 0.0 (* 4096.0 (-> *display* seconds-per-frame)))
(muse-check-dest-point)
(none)
)
:code
(behavior ()
(cond
((= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 3)
)
(ja-channel-push! 1 30)
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) 1.0)
(joint-control-channel-group! a0-5 (the-as art-joint-anim #f) num-func-loop!)
)
(let ((a0-6 (-> self skel root-channel 0)))
(set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
(set! (-> a0-6 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
)
(set! (-> a0-6 param 1) 1.0)
(set! (-> a0-6 frame-num) 0.0)
(joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
)
(until (ja-done? 0)
(ja-blend-eval)
(suspend)
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1)))
(set! (-> a0-7 param 1) 1.0)
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(else
(ja-channel-push! 1 30)
)
)
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 4))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(while #t
(suspend)
(let ((a0-11 (-> self skel root-channel 0)))
(set! (-> a0-11 param 0) (* 0.000016276043 (-> self momentum-speed)))
(joint-control-channel-group-eval! a0-11 (the-as art-joint-anim #f) num-func-loop!)
)
)
(none)
)
:post
(behavior ()
(set! (-> self nav destination-pos quad) (-> self dest-point quad))
(dummy-19
(-> self nav)
(-> self nav target-pos)
(-> self collide-info)
(-> self nav destination-pos)
546133.3
)
(if (logtest? (nav-control-flags navcf21) (-> self nav flags))
(logclear! (-> self nav flags) (nav-control-flags navcf10))
)
(nav-enemy-travel-post)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-jump (muse)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior muse)
nav-enemy-default-event-handler
)
:enter
(behavior ()
((-> (method-of-type nav-enemy nav-enemy-jump) enter))
(logclear! (-> self nav-enemy-flags) (nav-enemy-flags standing-jump))
(none)
)
:code
(-> (method-of-type nav-enemy nav-enemy-jump) code)
)
;; failed to figure out what this is:
(defstate nav-enemy-jump-land (muse)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior muse)
nav-enemy-default-event-handler
)
:code
(behavior ()
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) (the float (+ (-> a0-0 frame-group data 0 length) -1)))
(set! (-> a0-0 param 1) 1.0)
(joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!)
)
(ja-channel-push! 1 22)
(let ((gp-0 (-> self skel root-channel 0)))
(set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
(set! (-> gp-0 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
)
(set! (-> gp-0 param 1) 0.8)
(set! (-> gp-0 frame-num) (ja-aframe 6.0 0))
(joint-control-channel-group! gp-0 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
)
(until (ja-done? 0)
(ja-blend-eval)
(suspend)
(let ((a0-4 (-> self skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1)))
(set! (-> a0-4 param 1) 0.8)
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
)
(go-virtual nav-enemy-chase)
(none)
)
)
;; failed to figure out what this is:
(defstate muse-caught (muse)
:event
(the-as (function process int symbol event-message-block object :behavior muse) #f)
:trans
(behavior ()
(spool-push *art-control* (-> self anim name) 0 self -1.0)
(none)
)
:code
(behavior ()
(sound-play-by-name (static-sound-name "money-pickup") (new-sound-id) 1024 0 0 1 #t)
(close-specific-task! (game-task misty-muse) (task-status need-reminder))
(process-entity-status! self (entity-perm-status dead) #t)
(suspend)
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) self)
(set! (-> a1-3 num-params) 1)
(set! (-> a1-3 message) 'clone-anim)
(set! (-> a1-3 param 0) (the-as uint self))
(when (send-event-function *target* a1-3)
(set-blackout-frames (seconds 10))
(let ((gp-1 (res-lump-struct (-> self entity) 'movie-pos vector)))
(cond
(gp-1
(move-to-point! (-> self collide-info) gp-1)
(set-yaw-angle-clear-roll-pitch! (-> self collide-info) (-> gp-1 w))
)
(else
(move-to-point! (-> self collide-info) (-> *target* control trans))
(quaternion-copy! (-> self collide-info quat) (-> *target* control quat))
(move-to-ground (-> self collide-info) 40960.0 40960.0 #f (collide-kind background))
)
)
)
(send-event *target* 'trans 'save (-> self old-target-pos))
(send-event (ppointer->process (-> *target* sidekick)) 'matrix 'play-anim)
(send-event *target* 'blend-shape #t)
(if (!= *kernel-boot-message* 'play)
(set! (-> self trans-hook)
(lambda :behavior muse () (spool-push *art-control* (-> self victory-anim name) 0 self -1.0) (none))
)
)
(push-setting! *setting-control* self 'music-volume 'rel (-> *setting-control* current music-volume-movie) 0)
(push-setting! *setting-control* self 'sfx-volume 'rel (-> *setting-control* current sfx-volume-movie) 0)
(push-setting!
*setting-control*
self
'ambient-volume
'rel
(-> *setting-control* current ambient-volume-movie)
0
)
(logclear! (-> self mask) (process-mask enemy))
(let ((gp-2 (get-process *default-dead-pool* othercam #x4000)))
(when gp-2
(let ((t9-19 (method-of-type othercam activate)))
(t9-19 (the-as othercam gp-2) self 'othercam (the-as pointer #x70004000))
)
(run-now-in-process gp-2 othercam-init-by-other self 3 #f #t)
(-> gp-2 ppointer)
)
)
(auto-save-command 'auto-save 0 0 *default-pool*)
(ja-play-spooled-anim
(-> self anim)
(the-as art-joint-anim (-> self draw art-group data 3))
(the-as art-joint-anim (-> self draw art-group data 3))
(the-as (function process-drawable symbol) false-func)
)
(clear-pending-settings-from-process *setting-control* self 'music-volume)
(clear-pending-settings-from-process *setting-control* self 'sfx-volume)
(clear-pending-settings-from-process *setting-control* self 'ambient-volume)
(send-event *target* 'blend-shape #f)
(cond
((!= *kernel-boot-message* 'play)
(set-blackout-frames 0)
(ja-channel-set! 0)
(ja-post)
(clear-collide-with-as (-> self collide-info))
(send-event *target* 'trans 'reset)
(let ((gp-4 (ppointer->handle (birth-pickup-at-point
(target-pos 0)
(pickup-type fuel-cell)
(the float (-> self entity extra perm task))
#f
self
(the-as fact-info #f)
)
)
)
)
(send-event (handle->process (the-as handle gp-4)) 'pickup)
(while (handle->process (the-as handle gp-4))
(suspend)
)
)
)
(else
(send-event *target* 'trans 'restore (-> self old-target-pos))
(set-blackout-frames 0)
(set-blackout-frames (seconds 0.1))
)
)
)
)
(none)
)
:post
(behavior ()
(dummy-51 self)
(level-hint-surpress!)
(kill-current-level-hint '() '() 'exit)
(ja-post)
(none)
)
)
;; definition for symbol *muse-nav-enemy-info*, type nav-enemy-info
(define *muse-nav-enemy-info* (new 'static 'nav-enemy-info
:idle-anim 3
:walk-anim 4
:turn-anim -1
:notice-anim 3
:run-anim 4
:jump-anim 7
:jump-land-anim 8
:victory-anim 3
:taunt-anim 3
:die-anim 3
:neck-joint 6
:player-look-at-joint 5
:run-travel-speed (meters 10)
:run-rotate-speed (degrees 999.99994)
:run-acceleration (meters 5)
:run-turn-time (seconds 0.15)
:walk-travel-speed (meters 10)
:walk-rotate-speed (degrees 999.99994)
:walk-acceleration (meters 1)
:walk-turn-time (seconds 0.15)
:attack-shove-back (meters 3)
:attack-shove-up (meters 2)
:shadow-size (meters 2)
:notice-nav-radius (meters 1)
:nav-nearest-y-threshold (meters 10)
:notice-distance (meters 30)
:stop-chase-distance (meters 40)
:frustration-distance (meters 8)
:frustration-time (seconds 4)
:die-anim-hold-frame 10000000000.0
:jump-anim-start-frame 6.5
:jump-land-anim-end-frame 10000000000.0
:jump-height-min (meters 1)
:jump-height-factor 0.5
:jump-start-anim-speed 1.0
:shadow-max-y (meters 1)
:shadow-min-y (meters -1)
:shadow-locus-dist (meters 150)
:use-align #f
:draw-shadow #t
:move-to-ground #t
:hover-if-no-ground #f
:use-momentum #f
:use-flee #f
:use-proximity-notice #f
:use-jump-blocked #f
:use-jump-patrol #f
:gnd-collide-with (collide-kind background)
:debug-draw-neck #f
:debug-draw-jump #f
)
)
;; definition for method 11 of type muse
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! muse ((obj muse) (arg0 entity-actor))
(stack-size-set! (-> obj main-thread) 512)
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum 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)
)
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (collide-kind enemy))
(set! (-> s3-0 collide-with) (collide-kind target))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set! (-> s3-0 prim-core offense) (collide-offense indestructible))
(set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6)
(set-root-prim! s4-0 s3-0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj collide-info) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *muse-sg* '())
(logclear! (-> obj mask) (process-mask actor-pause))
(TODO-RENAME-45 obj *muse-nav-enemy-info*)
(set! (-> obj max-path-index) (the float (+ (-> obj path curve num-cverts) -1)))
(set! (-> obj current-path-index) 7.0)
(set! (-> obj prev-path-index) 7.0)
(set! (-> obj dest-path-index) 7.0)
(set! (-> obj player-path-index) 0.0)
(eval-path-curve-div! (-> obj path) (-> obj dest-point) (-> obj current-path-index) 'interp)
(set! (-> obj collide-info trans quad) (-> obj dest-point quad))
(set! (-> obj nav nearest-y-threshold) 20480.0)
(set-vector! (-> obj neck twist-max) 8192.0 8192.0 0.0 1.0)
(set! (-> obj neck up) (the-as uint 0))
(set! (-> obj neck nose) (the-as uint 1))
(set! (-> obj neck ear) (the-as uint 2))
(set! (-> obj neck max-dist) 102400.0)
(set! (-> obj neck ignore-angle) 16384.0)
(set! (-> obj anim) (new 'static 'spool-anim
:name "muse-victory"
:index 9
:parts 2
:command-list
'((1 blackout 0) (219 blackout 60))
)
)
(set! (-> obj victory-anim) (fuel-cell-pick-anim obj))
(go muse-idle)
(none)
)