mirror of
https://github.com/open-goal/jak-project
synced 2026-08-04 17:19:49 -04:00
637990314b
Closes #736 --------- Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
2055 lines
73 KiB
Common Lisp
Vendored
Generated
2055 lines
73 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition of type vol-rising-step
|
|
(deftype vol-rising-step (process-drawable)
|
|
((sync sync-paused :inline)
|
|
(idle-anim int32)
|
|
(amplitude float)
|
|
(init-y float)
|
|
(sound-id sound-id)
|
|
)
|
|
(:state-methods
|
|
inactive
|
|
pre-active
|
|
active
|
|
)
|
|
(:methods
|
|
(vol-rising-step-method-23 (_type_) none)
|
|
(vol-rising-step-method-24 (_type_) none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type vol-rising-step
|
|
(defmethod inspect ((this vol-rising-step))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Tsync: #<sync-paused @ #x~X>~%" (-> this sync))
|
|
(format #t "~2Tidle-anim: ~D~%" (-> this idle-anim))
|
|
(format #t "~2Tamplitude: ~f~%" (-> this amplitude))
|
|
(format #t "~2Tinit-y: ~f~%" (-> this init-y))
|
|
(format #t "~2Tsound-id: ~D~%" (-> this sound-id))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate inactive (vol-rising-step)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('trigger)
|
|
(go-virtual pre-active)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(set! (-> self root trans y) (- (-> self init-y) (-> self amplitude)))
|
|
(ja-no-eval :group! (-> self draw art-group data (-> self idle-anim)) :num! zero)
|
|
(transform-post)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate pre-active (vol-rising-step)
|
|
:virtual #t
|
|
:code (behavior ()
|
|
(let ((gp-0 (get-timeframe-offset! (-> self sync) 0)))
|
|
(while (< (current-time) gp-0)
|
|
(suspend)
|
|
)
|
|
)
|
|
(go-virtual active)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate active (vol-rising-step)
|
|
:virtual #t
|
|
:exit (behavior ()
|
|
(sound-stop (-> self sound-id))
|
|
)
|
|
:trans rider-trans
|
|
:code sleep-code
|
|
:post (behavior ()
|
|
(let ((f0-0 (cos (get-scaled-val! (-> self sync) 32768.0 0)))
|
|
(f1-1 (/ (-> self amplitude) 2))
|
|
)
|
|
(set! (-> self root trans y) (- (- (-> self init-y) f1-1) (* f0-0 f1-1)))
|
|
)
|
|
(sound-play-by-name
|
|
(static-sound-name "plat-move")
|
|
(-> self sound-id)
|
|
(the int (* 1024.0 (- 1.0 (square (square (fabs (* 2.0 (- 0.5 (get-norm! (-> self sync) 0)))))))))
|
|
0
|
|
0
|
|
(sound-group)
|
|
#t
|
|
)
|
|
(rider-post)
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type vol-rising-step
|
|
(defmethod deactivate ((this vol-rising-step))
|
|
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
|
(sound-stop (-> this sound-id))
|
|
(call-parent-method this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type vol-rising-step
|
|
(defmethod init-from-entity! ((this vol-rising-step) (arg0 entity-actor))
|
|
"Set up a newly created process from the entity that created it."
|
|
(stack-size-set! (-> this main-thread) 32)
|
|
(vol-rising-step-method-24 this)
|
|
(process-drawable-from-entity! this arg0)
|
|
(vol-rising-step-method-23 this)
|
|
(set-vector! (-> this root scale) 1.3 1.0 1.3 1.0)
|
|
(let ((a1-3 (new 'stack-no-clear 'sync-info-params)))
|
|
(let ((v1-8 0))
|
|
(if #t
|
|
(set! v1-8 (logior v1-8 1))
|
|
)
|
|
(set! (-> a1-3 sync-type) 'sync-paused)
|
|
(set! (-> a1-3 sync-flags) (the-as sync-flags v1-8))
|
|
)
|
|
(set! (-> a1-3 entity) (-> this entity))
|
|
(set! (-> a1-3 period) (the-as uint 2400))
|
|
(set! (-> a1-3 percent) 0.0)
|
|
(set! (-> a1-3 pause-in) 0.05)
|
|
(set! (-> a1-3 pause-out) 0.3)
|
|
(initialize! (-> this sync) a1-3)
|
|
)
|
|
(set! (-> this root pause-adjust-distance) 327680.0)
|
|
(set! (-> this init-y) (-> this root trans y))
|
|
(set! (-> this sound-id) (new-sound-id))
|
|
(go (method-of-object this inactive))
|
|
)
|
|
|
|
;; definition of type vol-rising-step-a
|
|
(deftype vol-rising-step-a (vol-rising-step)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type vol-rising-step-a
|
|
(defmethod inspect ((this vol-rising-step-a))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type vol-rising-step inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-rising-step-a vol-rising-step-a vol-rising-step-a-lod0-jg vol-rising-step-a-idle-ja
|
|
((vol-rising-step-a-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -8 0 9.3)
|
|
)
|
|
|
|
;; definition for method 23 of type vol-rising-step-a
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-23 ((this vol-rising-step-a))
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-rising-step-a" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> this idle-anim) 2)
|
|
(set! (-> this amplitude) (res-lump-float (-> this entity) 'y-offset :default 40960.0))
|
|
(+! (-> this root trans y) (res-lump-float (-> this entity) 'tunemeters :default 16384.0))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 24 of type vol-rising-step-a
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-24 ((this vol-rising-step-a))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 0)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 -32768.0 0.0 38092.8)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type vol-rising-step-b
|
|
(deftype vol-rising-step-b (vol-rising-step)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type vol-rising-step-b
|
|
(defmethod inspect ((this vol-rising-step-b))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type vol-rising-step inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-rising-step-b vol-rising-step-b vol-rising-step-b-lod0-jg vol-rising-step-b-idle-ja
|
|
((vol-rising-step-b-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -8 0 9.3)
|
|
)
|
|
|
|
;; definition for method 23 of type vol-rising-step-b
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-23 ((this vol-rising-step-b))
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-rising-step-b" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> this idle-anim) 2)
|
|
(set! (-> this amplitude) (res-lump-float (-> this entity) 'y-offset :default 40960.0))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 24 of type vol-rising-step-b
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-24 ((this vol-rising-step-b))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 0)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 -32768.0 0.0 38092.8)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type vol-rising-step-c
|
|
(deftype vol-rising-step-c (vol-rising-step)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type vol-rising-step-c
|
|
(defmethod inspect ((this vol-rising-step-c))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type vol-rising-step inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-rising-step-c vol-rising-step-c vol-rising-step-c-lod0-jg vol-rising-step-c-idle-ja
|
|
((vol-rising-step-c-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -8 0 9.3)
|
|
)
|
|
|
|
;; definition for method 23 of type vol-rising-step-c
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-23 ((this vol-rising-step-c))
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-rising-step-c" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> this idle-anim) 2)
|
|
(set! (-> this amplitude) (res-lump-float (-> this entity) 'y-offset :default 40960.0))
|
|
(+! (-> this root trans y) 10240.0)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 24 of type vol-rising-step-c
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-24 ((this vol-rising-step-c))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 0)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 -32768.0 0.0 38092.8)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type vol-rising-step-d
|
|
(deftype vol-rising-step-d (vol-rising-step)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type vol-rising-step-d
|
|
(defmethod inspect ((this vol-rising-step-d))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type vol-rising-step inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-rising-step-d vol-rising-step-d 0 2
|
|
((1 (meters 999999)))
|
|
:bounds (static-spherem 0 -8 0 9.3)
|
|
)
|
|
|
|
;; definition for method 23 of type vol-rising-step-d
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-23 ((this vol-rising-step-d))
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-rising-step-d" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> this idle-anim) 2)
|
|
(set! (-> this amplitude) (res-lump-float (-> this entity) 'y-offset :default 40960.0))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 24 of type vol-rising-step-d
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-rising-step-method-24 ((this vol-rising-step-d))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 0)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 -32768.0 0.0 38092.8)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type lava-shoot
|
|
(deftype lava-shoot (process-drawable)
|
|
((root collide-shape-moving :override)
|
|
(sync sync-paused :inline)
|
|
(attack-id uint32)
|
|
(sound-id sound-id)
|
|
(no-collision-timer time-frame)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type lava-shoot
|
|
(defmethod inspect ((this lava-shoot))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Tsync: #<sync-paused @ #x~X>~%" (-> this sync))
|
|
(format #t "~2Tattack-id: ~D~%" (-> this attack-id))
|
|
(format #t "~2Tsound-id: ~D~%" (-> this sound-id))
|
|
(format #t "~2Tno-collision-timer: ~D~%" (-> this no-collision-timer))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (lava-shoot)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('touch 'attack)
|
|
(let ((gp-0 (as-type proc process-focusable)))
|
|
(when gp-0
|
|
(when (or (focus-test? (the-as process-focusable gp-0) mech)
|
|
(time-elapsed? (-> self no-collision-timer) (-> *TARGET-bank* hit-invulnerable-timeout))
|
|
)
|
|
(let ((s4-1 (vector-x-quaternion! (new 'stack-no-clear 'vector) (-> self root quat))))
|
|
(let* ((v1-10 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> (the-as process-focusable gp-0) root quat)))
|
|
(f0-1 (vector-dot s4-1 v1-10))
|
|
)
|
|
(if (< 0.0 f0-1)
|
|
(vector-float*! s4-1 s4-1 -1.0)
|
|
)
|
|
)
|
|
(when (send-event
|
|
gp-0
|
|
'attack
|
|
(-> block param 0)
|
|
(static-attack-info
|
|
:mask (vehicle-impulse-factor)
|
|
((id (-> self attack-id))
|
|
(damage 2.0)
|
|
(vehicle-damage-factor 1.0)
|
|
(vehicle-impulse-factor 1.0)
|
|
(mode 'burnup)
|
|
(vector s4-1)
|
|
(shove-back (meters 3))
|
|
(shove-up (meters 5))
|
|
(control (if (focus-test? (the-as process-focusable gp-0) board)
|
|
1.0
|
|
0.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((v0-0 (current-time)))
|
|
(set! (-> self no-collision-timer) v0-0)
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:exit (behavior ()
|
|
(sound-stop (-> self sound-id))
|
|
)
|
|
:code sleep-code
|
|
:post (behavior ()
|
|
(let ((f30-0 (get-norm! (-> self sync) 0)))
|
|
(set! (-> *part-id-table* 4601 init-specs 1 initial-valuef) (* 3.0 f30-0 f30-0))
|
|
(set! (-> *part-id-table* 4601 init-specs 11 initial-valuef) (* 109.22667 f30-0))
|
|
(sound-play-by-name
|
|
(static-sound-name "geyser-loop")
|
|
(-> self sound-id)
|
|
(the int (* 1024.0 f30-0))
|
|
0
|
|
0
|
|
(sound-group)
|
|
#t
|
|
)
|
|
(let* ((v1-13 (-> self root root-prim))
|
|
(a0-4 (the int (* f30-0 (the float (-> v1-13 specific 0)))))
|
|
)
|
|
(dotimes (a1-2 (the-as int (-> (the-as collide-shape-prim-group v1-13) num-children)))
|
|
(cond
|
|
((>= a1-2 a0-4)
|
|
(logclear! (-> (the-as collide-shape-prim-group v1-13) child a1-2 prim-core action) (collide-action solid))
|
|
(logclear!
|
|
(-> (the-as collide-shape-prim-group v1-13) child a1-2 prim-core collide-as)
|
|
(collide-spec obstacle)
|
|
)
|
|
)
|
|
(else
|
|
(logior! (-> (the-as collide-shape-prim-group v1-13) child a1-2 prim-core action) (collide-action solid))
|
|
(logior! (-> (the-as collide-shape-prim-group v1-13) child a1-2 prim-core collide-as) (collide-spec obstacle))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-0 (new 'stack-no-clear 'matrix)))
|
|
(quaternion->matrix gp-0 (-> self root quat))
|
|
(vector-copy! (-> gp-0 trans) (-> self root trans))
|
|
(spawn-from-mat (-> self part) gp-0)
|
|
)
|
|
0
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type lava-shoot
|
|
(defmethod deactivate ((this lava-shoot))
|
|
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
|
(sound-stop (-> this sound-id))
|
|
((method-of-type process-drawable deactivate) this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type lava-shoot
|
|
(defmethod init-from-entity! ((this lava-shoot) (arg0 entity-actor))
|
|
"Set up a newly created process from the entity that created it."
|
|
(let ((s4-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player))))
|
|
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s4-0 reaction) cshape-reaction-default)
|
|
(set! (-> s4-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 7) 0)))
|
|
(set! (-> s4-0 total-prims) (the-as uint 8))
|
|
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> s3-0 prim-core action) (collide-action solid))
|
|
(set! (-> s3-0 transform-index) -3)
|
|
(set-vector! (-> s3-0 local-sphere) 0.0 -32768.0 16384.0 40960.0)
|
|
(set! (-> s4-0 root-prim) s3-0)
|
|
)
|
|
(let ((v1-12 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-12 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-12 prim-core action) (collide-action solid))
|
|
(set! (-> v1-12 transform-index) -3)
|
|
(set-vector! (-> v1-12 local-sphere) 0.0 0.0 0.0 8192.0)
|
|
)
|
|
(let ((v1-14 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-14 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-14 prim-core action) (collide-action solid))
|
|
(set! (-> v1-14 transform-index) -3)
|
|
(set-vector! (-> v1-14 local-sphere) 0.0 -8192.0 8192.0 8192.0)
|
|
)
|
|
(let ((v1-16 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-16 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-16 prim-core action) (collide-action solid))
|
|
(set! (-> v1-16 transform-index) -3)
|
|
(set-vector! (-> v1-16 local-sphere) 0.0 -16384.0 10240.0 8192.0)
|
|
)
|
|
(let ((v1-18 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-18 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-18 prim-core action) (collide-action solid))
|
|
(set! (-> v1-18 transform-index) -3)
|
|
(set-vector! (-> v1-18 local-sphere) 0.0 -24576.0 13926.4 8192.0)
|
|
)
|
|
(let ((v1-20 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-20 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-20 prim-core action) (collide-action solid))
|
|
(set! (-> v1-20 transform-index) -3)
|
|
(set-vector! (-> v1-20 local-sphere) 0.0 -32768.0 14745.6 8192.0)
|
|
)
|
|
(let ((v1-22 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-22 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-22 prim-core action) (collide-action solid))
|
|
(set! (-> v1-22 transform-index) -3)
|
|
(set-vector! (-> v1-22 local-sphere) 0.0 -40960.0 16384.0 8192.0)
|
|
)
|
|
(let ((v1-24 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
|
|
(set! (-> v1-24 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-24 prim-core action) (collide-action solid))
|
|
(set! (-> v1-24 transform-index) -3)
|
|
(set-vector! (-> v1-24 local-sphere) 0.0 -49152.0 18432.0 8192.0)
|
|
)
|
|
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
|
|
(let ((v1-27 (-> s4-0 root-prim)))
|
|
(set! (-> s4-0 backup-collide-as) (-> v1-27 prim-core collide-as))
|
|
(set! (-> s4-0 backup-collide-with) (-> v1-27 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s4-0)
|
|
)
|
|
(process-drawable-from-entity! this arg0)
|
|
(let ((a1-31 (new 'stack-no-clear 'sync-info-params)))
|
|
(let ((v1-29 0))
|
|
(if #t
|
|
(set! v1-29 (logior v1-29 1))
|
|
)
|
|
(set! (-> a1-31 sync-type) 'sync-paused)
|
|
(set! (-> a1-31 sync-flags) (the-as sync-flags v1-29))
|
|
)
|
|
(set! (-> a1-31 entity) (-> this entity))
|
|
(set! (-> a1-31 period) (the-as uint 2400))
|
|
(set! (-> a1-31 percent) 0.0)
|
|
(set! (-> a1-31 pause-in) 0.05)
|
|
(set! (-> a1-31 pause-out) 0.3)
|
|
(initialize! (-> this sync) a1-31)
|
|
)
|
|
(let* ((v1-37 *game-info*)
|
|
(a0-50 (+ (-> v1-37 attack-id) 1))
|
|
)
|
|
(set! (-> v1-37 attack-id) a0-50)
|
|
(set! (-> this attack-id) a0-50)
|
|
)
|
|
(set! (-> this sound-id) (new-sound-id))
|
|
(set! (-> this part) (create-launch-control group-lava-shoot this))
|
|
(update-transforms (-> this root))
|
|
(go (method-of-object this idle))
|
|
)
|
|
|
|
;; definition of type vol-balance-plat-chain-physics
|
|
(deftype vol-balance-plat-chain-physics (chain-physics)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type vol-balance-plat-chain-physics
|
|
(defmethod inspect ((this vol-balance-plat-chain-physics))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(format #t "[~8x] ~A~%" this (-> this type))
|
|
(format #t "~1Tchain-joints[20] @ #x~X~%" (-> this chain-joints))
|
|
(format #t "~1Tnum-joints: ~D~%" (-> this num-joints))
|
|
(format #t "~1Troot-joint-index: ~D~%" (-> this root-joint-index))
|
|
(format #t "~1Tjoint-length: ~f~%" (-> this joint-length))
|
|
(format #t "~1Tgravity: #<vector @ #x~X>~%" (-> this gravity))
|
|
(format #t "~1Tgravity-target: #<vector @ #x~X>~%" (-> this gravity-target))
|
|
(format #t "~1Tstretch-vel: ~f~%" (-> this stretch-vel))
|
|
(format #t "~1Tstretch-vel-parallel: ~f~%" (-> this stretch-vel-parallel))
|
|
(format #t "~1Tcompress-vel: ~f~%" (-> this compress-vel))
|
|
(format #t "~1Tcompress-vel-parallel: ~f~%" (-> this compress-vel-parallel))
|
|
(format #t "~1Tnegate-y: ~A~%" (-> this negate-y))
|
|
(format #t "~1Taxial-slop: ~f~%" (-> this axial-slop))
|
|
(format #t "~1Tmaximum-stretch: ~f~%" (-> this maximum-stretch))
|
|
(format #t "~1Tturn-off-start: ~D~%" (-> this turn-off-start))
|
|
(format #t "~1Tturn-off-duration: ~D~%" (-> this turn-off-duration))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; definition for method 13 of type vol-balance-plat-chain-physics
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod apply-gravity ((this vol-balance-plat-chain-physics) (arg0 vector) (arg1 int) (arg2 process-drawable))
|
|
(with-pp
|
|
(vector-float*!
|
|
arg0
|
|
(-> this gravity)
|
|
(* 4096.0 (-> pp clock time-adjust-ratio) (lerp-scale 0.01 0.1 (the float arg1) 0.0 8.0))
|
|
)
|
|
(vector+float*! arg0 arg0 (the-as vector (+ (the-as uint (-> this chain-joints 0 velocity)) (* arg1 64))) 0.2)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 14 of type vol-balance-plat-chain-physics
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod chain-physics-method-14 ((this vol-balance-plat-chain-physics) (arg0 vector) (arg1 int))
|
|
(vector-float*!
|
|
arg0
|
|
(the-as vector (+ (the-as uint (-> this chain-joints 0 velocity)) (* (+ arg1 1) 64)))
|
|
0.4
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 16 of type vol-balance-plat-chain-physics
|
|
(defmethod chain-physics-method-16 ((this vol-balance-plat-chain-physics) (arg0 int))
|
|
1820.4445
|
|
)
|
|
|
|
;; definition for method 12 of type vol-balance-plat-chain-physics
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod gravity-update ((this vol-balance-plat-chain-physics) (arg0 process-drawable))
|
|
((method-of-type chain-physics gravity-update) this arg0)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 17 of type vol-balance-plat-chain-physics
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod chain-physics-method-17 ((this vol-balance-plat-chain-physics) (arg0 vector) (arg1 int))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type vol-balance-plat
|
|
(deftype vol-balance-plat (rigid-body-object)
|
|
((pivot-transform transformq :inline)
|
|
(init-pos vector :inline)
|
|
(force-pos vector :inline)
|
|
(rope vol-balance-plat-chain-physics)
|
|
(rope-initialized symbol)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type vol-balance-plat
|
|
(defmethod inspect ((this vol-balance-plat))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type rigid-body-object inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Tpivot-transform: #<transformq @ #x~X>~%" (-> this pivot-transform))
|
|
(format #t "~2Tinit-pos: #<vector @ #x~X>~%" (-> this init-pos))
|
|
(format #t "~2Tforce-pos: #<vector @ #x~X>~%" (-> this force-pos))
|
|
(format #t "~2Trope: ~A~%" (-> this rope))
|
|
(format #t "~2Trope-initialized: ~A~%" (-> this rope-initialized))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-balance-plat vol-balance-plat vol-balance-plat-lod0-jg vol-balance-plat-idle-ja
|
|
((vol-balance-plat-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -12 0 14)
|
|
)
|
|
|
|
;; definition for symbol *vol-balance-plat-chain-setup*, type (array chain-physics-setup)
|
|
(define *vol-balance-plat-chain-setup* (new 'static 'boxed-array :type chain-physics-setup
|
|
(new 'static 'chain-physics-setup :joint-index 4)
|
|
(new 'static 'chain-physics-setup :joint-index 5)
|
|
(new 'static 'chain-physics-setup :joint-index 6)
|
|
(new 'static 'chain-physics-setup :joint-index 7)
|
|
(new 'static 'chain-physics-setup :joint-index 8)
|
|
(new 'static 'chain-physics-setup :joint-index 9)
|
|
(new 'static 'chain-physics-setup :joint-index 10)
|
|
(new 'static 'chain-physics-setup :joint-index 11)
|
|
(new 'static 'chain-physics-setup :joint-index 12)
|
|
)
|
|
)
|
|
|
|
;; definition for symbol *vol-balance-plat-rigid-body-constants*, type rigid-body-object-constants
|
|
(define *vol-balance-plat-rigid-body-constants*
|
|
(new 'static 'rigid-body-object-constants
|
|
:info (new 'static 'rigid-body-info
|
|
:mass 2.0
|
|
:inv-mass 0.5
|
|
:linear-damping 0.97
|
|
:angular-damping 0.97
|
|
:bounce-factor 0.8
|
|
:friction-factor 1.0
|
|
:cm-offset-joint (new 'static 'vector :y -24576.0 :w 1.0)
|
|
:inertial-tensor-box (new 'static 'array meters 3 (meters 15) (meters 30) (meters 15))
|
|
)
|
|
:extra (new 'static 'rigid-body-object-extra-info
|
|
:max-time-step 0.033333335
|
|
:gravity (meters 20)
|
|
:idle-distance (meters 200)
|
|
:attack-force-scale 0.2
|
|
)
|
|
:name '*vol-balance-plat-rigid-body-constants*
|
|
)
|
|
)
|
|
|
|
;; definition for method 53 of type vol-balance-plat
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod rigid-body-object-method-53 ((this vol-balance-plat) (arg0 float))
|
|
(when (logtest? (-> this flags) (rigid-body-object-flag player-impulse-force player-contact-force))
|
|
(when (logtest? (-> this flags) (rigid-body-object-flag player-impulse-force))
|
|
(logclear! (-> this flags) (rigid-body-object-flag player-impulse-force))
|
|
(vector-float*! (-> this player-force) (-> this player-force) (/ 1.0 arg0))
|
|
)
|
|
(apply-impact! (-> this rbody) (-> this player-force-position) (-> this player-force))
|
|
(apply-impact!
|
|
(-> this rbody)
|
|
(-> this init-pos)
|
|
(vector-normalize-copy! (new 'stack-no-clear 'vector) *y-vector* (vector-length (-> this player-force)))
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 48 of type vol-balance-plat
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod on-impact ((this vol-balance-plat) (arg0 rigid-body-impact))
|
|
(sound-play "platform-swing")
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 32 of type vol-balance-plat
|
|
(defmethod rigid-body-object-method-32 ((this vol-balance-plat))
|
|
(detect-riders! (-> this root))
|
|
((method-of-type rigid-body-object rigid-body-object-method-32) this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 31 of type vol-balance-plat
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod apply-gravity! ((this vol-balance-plat) (arg0 float))
|
|
(let ((a1-1 (new 'stack-no-clear 'vector)))
|
|
(vector-! a1-1 (-> this init-pos) (-> this root trans))
|
|
(let ((f0-0 0.0))
|
|
(set! (-> a1-1 z) f0-0)
|
|
(set! (-> a1-1 x) f0-0)
|
|
)
|
|
(vector-float*! a1-1 a1-1 80.0)
|
|
(add-force! (-> this rbody) a1-1)
|
|
)
|
|
(let ((a0-5 (-> this init-pos)))
|
|
(set-vector! (new 'stack-no-clear 'vector) (-> a0-5 x) (+ 163840.0 (-> a0-5 y)) (-> a0-5 z) 1.0)
|
|
)
|
|
(let* ((f0-7 4.0)
|
|
(s4-0 (-> this node-list data 12))
|
|
(f30-0 (sin (* 65536.0 (/ (the float (mod (current-time) (the int (* 300.0 f0-7)))) (* 300.0 f0-7)))))
|
|
(s2-0 (new 'stack-no-clear 'vector))
|
|
(s3-0 (vector<-cspace! (new 'stack-no-clear 'vector) s4-0))
|
|
)
|
|
(let ((s1-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> s4-0 bone transform rvec) 1.0)))
|
|
(vector-float*!
|
|
s2-0
|
|
s1-0
|
|
(* f30-0 (if (= (res-lump-value (-> this entity) 'extra-id uint :time -1000000000.0) 1)
|
|
40960.0
|
|
8192.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(apply-impact! (-> this rbody) s3-0 s2-0)
|
|
)
|
|
(let ((s4-3 (new 'stack-no-clear 'vector))
|
|
(a1-7 (-> this node-list data 12))
|
|
)
|
|
(new 'stack-no-clear 'vector)
|
|
(vector-float*! s4-3 *y-vector* (* -1.0 (-> this info extra gravity) (-> this rbody info mass)))
|
|
(apply-impact! (-> this rbody) (vector<-cspace! (new 'stack-no-clear 'vector) a1-7) s4-3)
|
|
)
|
|
(rigid-body-object-method-53 this arg0)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 39 of type vol-balance-plat
|
|
(defmethod rbody-post ((this vol-balance-plat))
|
|
(rigid-body-object-method-32 this)
|
|
(quaternion-copy! (-> this root quat) (the-as quaternion (-> this rbody rot)))
|
|
(rigid-body-control-method-25 (-> this rbody) (-> this root trans))
|
|
(when (not (-> this rope-initialized))
|
|
(set! (-> this rope-initialized) #t)
|
|
(initialize-chain-joints (-> this rope))
|
|
)
|
|
(update (-> this rope) this)
|
|
(rider-post)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 49 of type vol-balance-plat
|
|
(defmethod rbody-event-handler ((this vol-balance-plat) (arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
|
(case arg2
|
|
(('bonk)
|
|
(sound-play "platform-swing")
|
|
)
|
|
)
|
|
((method-of-type rigid-body-object rbody-event-handler) this arg0 arg1 arg2 arg3)
|
|
)
|
|
|
|
;; definition for method 7 of type vol-balance-plat
|
|
(defmethod relocate ((this vol-balance-plat) (offset int))
|
|
(if (nonzero? (-> this rope))
|
|
(&+! (-> this rope) offset)
|
|
)
|
|
(call-parent-method this offset)
|
|
)
|
|
|
|
;; definition for method 34 of type vol-balance-plat
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod init-collision! ((this vol-balance-plat))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
|
|
(set! (-> s5-0 total-prims) (the-as uint 3))
|
|
(set! (-> s4-0 prim-core collide-as) (collide-spec obstacle pusher))
|
|
(set! (-> s4-0 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> s4-0 prim-core action) (collide-action solid rideable))
|
|
(set-vector! (-> s4-0 local-sphere) 0.0 -49152.0 0.0 57344.0)
|
|
(set! (-> s5-0 root-prim) s4-0)
|
|
)
|
|
(pusher-init s5-0)
|
|
(let ((v1-14 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0))))
|
|
(set! (-> v1-14 prim-core collide-as) (collide-spec obstacle pusher))
|
|
(set! (-> v1-14 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-14 prim-core action) (collide-action solid))
|
|
(set! (-> v1-14 transform-index) 7)
|
|
(set-vector! (-> v1-14 local-sphere) 0.0 -16384.0 0.0 55296.0)
|
|
)
|
|
(let ((v1-16 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-16 prim-core collide-as) (collide-spec obstacle pusher))
|
|
(set! (-> v1-16 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-16 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-16 transform-index) 12)
|
|
(set-vector! (-> v1-16 local-sphere) 0.0 0.0 0.0 28672.0)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-19 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-19 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-19 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 35 of type vol-balance-plat
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod init-rbody-control! ((this vol-balance-plat))
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-balance-plat" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> this root pause-adjust-distance) 614400.0)
|
|
(let ((a0-3 (-> this skel root-channel 0)))
|
|
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> this draw art-group data 2)))
|
|
(set! (-> a0-3 frame-num) 0.0)
|
|
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> this draw art-group data 2)) num-func-identity)
|
|
)
|
|
(transform-post)
|
|
(set! (-> this rope) (new 'process 'vol-balance-plat-chain-physics))
|
|
(chain-physics-initialize this (-> this rope) 4 8192.0 *vol-balance-plat-chain-setup*)
|
|
(alloc-rbody-control! this *vol-balance-plat-rigid-body-constants*)
|
|
(vector-copy! (-> this init-pos) (-> this root trans))
|
|
(let ((a0-10 (-> this node-list data 4)))
|
|
(set! (-> a0-10 param0)
|
|
(lambda ((arg0 cspace) (arg1 transformq))
|
|
(let ((gp-0 (-> arg0 param1)))
|
|
(cspace<-parented-transformq-joint! arg0 arg1)
|
|
(vector-copy! (-> arg0 bone transform trans) (-> (the-as vol-balance-plat gp-0) init-pos))
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
(set! (-> a0-10 param1) this)
|
|
)
|
|
(rigid-body-object-method-42 this)
|
|
(apply-momentum! this)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type vol-steam-explosion
|
|
(deftype vol-steam-explosion (process-drawable)
|
|
((root collide-shape-moving :override)
|
|
(sync sync-paused :inline)
|
|
(notify-actor entity-actor)
|
|
(attack-id uint32)
|
|
(lid-y float)
|
|
(extra-id int32)
|
|
(y-speed float)
|
|
(sound-id sound-id)
|
|
(stopped-up-by handle)
|
|
(no-collision-timer time-frame)
|
|
(trigger-count int32)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
stopped-up
|
|
active
|
|
)
|
|
(:methods
|
|
(vol-steam-explosion-method-23 (_type_) none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type vol-steam-explosion
|
|
(defmethod inspect ((this vol-steam-explosion))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Tsync: #<sync-paused @ #x~X>~%" (-> this sync))
|
|
(format #t "~2Tnotify-actor: ~A~%" (-> this notify-actor))
|
|
(format #t "~2Tattack-id: ~D~%" (-> this attack-id))
|
|
(format #t "~2Tlid-y: ~f~%" (-> this lid-y))
|
|
(format #t "~2Textra-id: ~D~%" (-> this extra-id))
|
|
(format #t "~2Ty-speed: ~f~%" (-> this y-speed))
|
|
(format #t "~2Tsound-id: ~D~%" (-> this sound-id))
|
|
(format #t "~2Tstopped-up-by: ~D~%" (-> this stopped-up-by))
|
|
(format #t "~2Tno-collision-timer: ~D~%" (-> this no-collision-timer))
|
|
(format #t "~2Ttrigger-count: ~D~%" (-> this trigger-count))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; definition for method 23 of type vol-steam-explosion
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod vol-steam-explosion-method-23 ((this vol-steam-explosion))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 0)))
|
|
(set! (-> s5-0 total-prims) (the-as uint 7))
|
|
(set! (-> s4-0 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> s4-0 prim-core action) (collide-action solid))
|
|
(set! (-> s4-0 transform-index) -3)
|
|
(set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 40960.0)
|
|
(set! (-> s5-0 root-prim) s4-0)
|
|
)
|
|
(let ((v1-12 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
|
(set! (-> v1-12 transform-index) -3)
|
|
(set-vector! (-> v1-12 local-sphere) 0.0 8192.0 0.0 8192.0)
|
|
)
|
|
(let ((v1-14 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
|
(set! (-> v1-14 transform-index) -3)
|
|
(set-vector! (-> v1-14 local-sphere) 0.0 16384.0 0.0 12288.0)
|
|
)
|
|
(let ((v1-16 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
|
(set! (-> v1-16 transform-index) -3)
|
|
(set-vector! (-> v1-16 local-sphere) 0.0 32768.0 0.0 16384.0)
|
|
)
|
|
(let ((v1-18 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
|
(set! (-> v1-18 transform-index) -3)
|
|
(set-vector! (-> v1-18 local-sphere) 0.0 49152.0 0.0 20480.0)
|
|
)
|
|
(set-vector!
|
|
(-> (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)) local-sphere)
|
|
0.0
|
|
-12288.0
|
|
0.0
|
|
12288.0
|
|
)
|
|
(let ((v1-22 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
|
|
(set! (-> v1-22 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-22 prim-core action) (collide-action solid))
|
|
(set-vector! (-> v1-22 local-sphere) 0.0 -6144.0 0.0 4505.6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-25 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-25 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-25 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (vol-steam-explosion)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('trigger)
|
|
(+! (-> self trigger-count) 1)
|
|
(if (= (-> self trigger-count) 2)
|
|
(go-virtual active)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate stopped-up (vol-steam-explosion)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('in-hole)
|
|
(if (and (or (= (-> self extra-id) 1) (= (-> self extra-id) 2))
|
|
(< 9011.2 (the-as float (-> block param 0)))
|
|
(< 4096.0 (the-as float (-> block param 1)))
|
|
)
|
|
(go-virtual active)
|
|
)
|
|
#t
|
|
)
|
|
(('trans)
|
|
(-> self root trans)
|
|
)
|
|
(('occupied-by-other)
|
|
(or (not (-> block param 0)) (!= (handle->process (-> self stopped-up-by)) (-> block param 0)))
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(let ((v1-1 (the-as collide-shape-prim-group (-> self root root-prim))))
|
|
(set! (-> v1-1 child 4 prim-core action) (collide-action))
|
|
(set! (-> v1-1 child 4 prim-core collide-as) (collide-spec))
|
|
)
|
|
0
|
|
)
|
|
:exit (behavior ()
|
|
(set! (-> self stopped-up-by) (the-as handle #f))
|
|
)
|
|
:code (behavior ()
|
|
(suspend-for (seconds 0.5)
|
|
)
|
|
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-0 from) (process->ppointer self))
|
|
(set! (-> a1-0 num-params) 0)
|
|
(set! (-> a1-0 message) 'trigger)
|
|
(let ((t9-0 send-event-function)
|
|
(v1-7 (-> self notify-actor))
|
|
)
|
|
(t9-0
|
|
(if v1-7
|
|
(-> v1-7 extra process)
|
|
)
|
|
a1-0
|
|
)
|
|
)
|
|
)
|
|
(sleep-code)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate active (vol-steam-explosion)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('attack 'touch)
|
|
(let ((gp-0 (as-type proc process-focusable)))
|
|
(when gp-0
|
|
(when (or (focus-test? (the-as process-focusable gp-0) mech)
|
|
(time-elapsed? (-> self no-collision-timer) (-> *TARGET-bank* hit-invulnerable-timeout))
|
|
)
|
|
(let ((a0-7
|
|
(vector-! (new 'stack-no-clear 'vector) (-> (the-as process-focusable gp-0) root trans) (-> self root trans))
|
|
)
|
|
)
|
|
(vector-normalize! a0-7 1.0)
|
|
)
|
|
(when (send-event gp-0 'shove #f (static-attack-info :mask (vehicle-impulse-factor) ((id (new-attack-id))
|
|
(damage 2.0)
|
|
(vehicle-damage-factor 1.0)
|
|
(vehicle-impulse-factor 1.0)
|
|
(shove-back (meters 3))
|
|
(shove-up (meters 1))
|
|
)
|
|
)
|
|
)
|
|
(let ((v0-1 (the-as object (current-time))))
|
|
(set! (-> self no-collision-timer) (the-as time-frame v0-1))
|
|
v0-1
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(('untrigger)
|
|
(go-virtual idle)
|
|
)
|
|
(('active?)
|
|
#t
|
|
)
|
|
(('get-norm)
|
|
(get-norm! (-> self sync) 0)
|
|
)
|
|
(('in-hole)
|
|
(when (and (or (= (-> self extra-id) 1) (= (-> self extra-id) 2))
|
|
(< (the-as float (-> block param 0)) 6144.0)
|
|
(< (the-as float (-> block param 1)) 2048.0)
|
|
)
|
|
(set! (-> self stopped-up-by) (process->handle proc))
|
|
(go-virtual stopped-up)
|
|
)
|
|
#f
|
|
)
|
|
(('set-y)
|
|
(if (-> block param 0)
|
|
(set! (-> self lid-y) (the-as float (-> block param 0)))
|
|
(set! (-> self lid-y) (+ 819200.0 (-> self root trans y)))
|
|
)
|
|
)
|
|
(('trans)
|
|
(-> self root trans)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-0 from) (process->ppointer self))
|
|
(set! (-> a1-0 num-params) 0)
|
|
(set! (-> a1-0 message) 'untrigger)
|
|
(let ((t9-0 send-event-function)
|
|
(v1-2 (-> self notify-actor))
|
|
)
|
|
(t9-0
|
|
(if v1-2
|
|
(-> v1-2 extra process)
|
|
)
|
|
a1-0
|
|
)
|
|
)
|
|
)
|
|
(let ((v1-6 (-> self root root-prim)))
|
|
(set! (-> (the-as collide-shape-prim-group v1-6) child 4 prim-core action) (collide-action solid))
|
|
(set! (-> (the-as collide-shape-prim-group v1-6) child 4 prim-core collide-as) (collide-spec obstacle))
|
|
)
|
|
)
|
|
:exit (behavior ()
|
|
(sound-stop (-> self sound-id))
|
|
)
|
|
:code sleep-code
|
|
:post (behavior ()
|
|
(let ((f30-0 (get-norm! (-> self sync) 0)))
|
|
(sound-play-by-name
|
|
(static-sound-name "steam-vent")
|
|
(-> self sound-id)
|
|
(the int (* 1024.0 f30-0))
|
|
0
|
|
0
|
|
(sound-group)
|
|
#t
|
|
)
|
|
(let ((f0-5 (lerp-scale 0.0 1.0 (- (-> self lid-y) (-> self root trans y)) 0.0 81920.0)))
|
|
(set! (-> *part-id-table* 4610 init-specs 1 initial-valuef) (* 3.0 f30-0 f30-0 f0-5))
|
|
(set! (-> *part-id-table* 4610 init-specs 9 initial-valuef) (* 13.653334 f30-0 (-> self y-speed) f0-5))
|
|
)
|
|
(let ((v1-15 (-> self root root-prim))
|
|
(a0-5 (the int (* 4.0 f30-0)))
|
|
)
|
|
(dotimes (a1-3 4)
|
|
(cond
|
|
((or (>= a1-3 a0-5)
|
|
(>= (+ (-> (the-as collide-shape-prim-group v1-15) child a1-3 prim-core world-sphere y)
|
|
(-> (the-as collide-shape-prim-group v1-15) child a1-3 prim-core world-sphere w)
|
|
)
|
|
(+ -4096.0 (-> self lid-y))
|
|
)
|
|
)
|
|
(logclear! (-> (the-as collide-shape-prim-group v1-15) child a1-3 prim-core action) (collide-action solid))
|
|
(logclear!
|
|
(-> (the-as collide-shape-prim-group v1-15) child a1-3 prim-core collide-as)
|
|
(collide-spec obstacle)
|
|
)
|
|
)
|
|
(else
|
|
(logior! (-> (the-as collide-shape-prim-group v1-15) child a1-3 prim-core action) (collide-action solid))
|
|
(logior! (-> (the-as collide-shape-prim-group v1-15) child a1-3 prim-core collide-as) (collide-spec obstacle))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-0 (new 'stack-no-clear 'matrix)))
|
|
(matrix-copy! gp-0 *identity-matrix*)
|
|
(matrix<-quat gp-0 (-> self root quat))
|
|
(vector-copy! (-> gp-0 trans) (-> self root trans))
|
|
(spawn-from-mat (-> self part) gp-0)
|
|
)
|
|
0
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type vol-steam-explosion
|
|
(defmethod deactivate ((this vol-steam-explosion))
|
|
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
|
(sound-stop (-> this sound-id))
|
|
(call-parent-method this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type vol-steam-explosion
|
|
(defmethod init-from-entity! ((this vol-steam-explosion) (arg0 entity-actor))
|
|
"Set up a newly created process from the entity that created it."
|
|
(stack-size-set! (-> this main-thread) 128)
|
|
(vol-steam-explosion-method-23 this)
|
|
(process-drawable-from-entity! this arg0)
|
|
(let ((a1-3 (new 'stack-no-clear 'sync-info-params)))
|
|
(let ((v1-4 0))
|
|
(if #t
|
|
(set! v1-4 (logior v1-4 1))
|
|
)
|
|
(set! (-> a1-3 sync-type) 'sync-paused)
|
|
(set! (-> a1-3 sync-flags) (the-as sync-flags v1-4))
|
|
)
|
|
(set! (-> a1-3 entity) (-> this entity))
|
|
(set! (-> a1-3 period) (the-as uint 1200))
|
|
(set! (-> a1-3 percent) 0.0)
|
|
(set! (-> a1-3 pause-in) 0.05)
|
|
(set! (-> a1-3 pause-out) 0.7)
|
|
(initialize! (-> this sync) a1-3)
|
|
)
|
|
(let* ((v1-12 *game-info*)
|
|
(a0-10 (+ (-> v1-12 attack-id) 1))
|
|
)
|
|
(set! (-> v1-12 attack-id) a0-10)
|
|
(set! (-> this attack-id) a0-10)
|
|
)
|
|
(set! (-> this part) (create-launch-control group-steam-geyser-shoot this))
|
|
(set! (-> this lid-y) 4096000.0)
|
|
(set! (-> this extra-id) (res-lump-value (-> this entity) 'extra-id int :time -1000000000.0))
|
|
(set! (-> this notify-actor) (entity-actor-lookup arg0 'alt-actor 0))
|
|
(set! (-> this y-speed) (res-lump-float (-> this entity) 'y-speed :default 140.0))
|
|
(set! (-> this sound-id) (new-sound-id))
|
|
(set! (-> this stopped-up-by) (the-as handle #f))
|
|
(set! (-> this trigger-count) 0)
|
|
(update-transforms (-> this root))
|
|
(let ((v1-21 (-> this extra-id)))
|
|
(if (or (zero? v1-21) (= v1-21 1) (= v1-21 2))
|
|
(go (method-of-object this active))
|
|
(go (method-of-object this idle))
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition of type spinning-hole
|
|
(deftype spinning-hole (vol-steam-explosion)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type spinning-hole
|
|
(defmethod inspect ((this spinning-hole))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type vol-steam-explosion inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-bouncer vol-bouncer vol-bouncer-lod0-jg vol-bouncer-idle-ja
|
|
((vol-bouncer-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 5)
|
|
)
|
|
|
|
;; definition of type vol-bouncer
|
|
(deftype vol-bouncer (bouncer)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type vol-bouncer
|
|
(defmethod inspect ((this vol-bouncer))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type bouncer inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (vol-bouncer)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('bonk)
|
|
(when ((method-of-type touching-shapes-entry prims-touching?)
|
|
(the-as touching-shapes-entry (-> block param 0))
|
|
(-> self root)
|
|
(the-as uint 1)
|
|
)
|
|
(when (send-event proc 'jump (-> self spring-height) (-> self spring-height) (-> self mods))
|
|
(sound-play "bouncer")
|
|
(go-virtual fire)
|
|
)
|
|
)
|
|
)
|
|
(('touch)
|
|
(let ((gp-2 (-> block param 0)))
|
|
(cond
|
|
(((method-of-type touching-shapes-entry prims-touching-action?)
|
|
(the-as touching-shapes-entry gp-2)
|
|
(-> self root)
|
|
(collide-action solid)
|
|
(collide-action)
|
|
)
|
|
(when ((method-of-type touching-shapes-entry prims-touching?)
|
|
(the-as touching-shapes-entry gp-2)
|
|
(-> self root)
|
|
(the-as uint 1)
|
|
)
|
|
(if (not (and (-> self next-state) (let ((v1-21 (-> self next-state name)))
|
|
(or (= v1-21 'smush) (= v1-21 'fire))
|
|
)
|
|
)
|
|
)
|
|
(go-virtual smush)
|
|
)
|
|
)
|
|
)
|
|
(((method-of-type touching-shapes-entry prims-touching?)
|
|
(the-as touching-shapes-entry gp-2)
|
|
(-> self root)
|
|
(the-as uint 4)
|
|
)
|
|
(persist-with-delay
|
|
*setting-control*
|
|
(the-as symbol (process->ppointer self))
|
|
(seconds 0.05)
|
|
'double-jump
|
|
#f
|
|
0.0
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(('attack)
|
|
(let ((v1-28 (the-as object (-> block param 1)))
|
|
(a0-16 (-> block param 0))
|
|
(a2-7 0)
|
|
)
|
|
(cond
|
|
((= (-> (the-as attack-info v1-28) mode) 'flop)
|
|
(set! a2-7 1)
|
|
)
|
|
((= (-> (the-as attack-info v1-28) mode) 'board)
|
|
(set! a2-7 9)
|
|
)
|
|
)
|
|
(when (and (nonzero? a2-7)
|
|
(and ((method-of-type touching-shapes-entry prims-touching?)
|
|
(the-as touching-shapes-entry a0-16)
|
|
(-> self root)
|
|
(the-as uint a2-7)
|
|
)
|
|
(send-event proc 'jump (-> self spring-height) (-> self spring-height) (-> self mods))
|
|
)
|
|
)
|
|
(sound-play "bouncer")
|
|
(go-virtual fire)
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:code (behavior ()
|
|
(ja :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim) :num! min)
|
|
(transform-post)
|
|
(until #f
|
|
(logior! (-> self mask) (process-mask sleep))
|
|
(suspend)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate fire (vol-bouncer)
|
|
:virtual #t
|
|
:code (behavior ()
|
|
(cpad-set-buzz! (-> *cpad-list* cpads 0) 1 178 (seconds 0.1))
|
|
(sound-play "bouncer-whoosh")
|
|
(ja-no-eval :group! (get-art-by-name (-> self draw art-group) "idle" art-joint-anim)
|
|
:num! (seek!)
|
|
:frame-num (ja-aframe 6.0 0)
|
|
)
|
|
(until (ja-done? 0)
|
|
(suspend)
|
|
(ja :num! (seek!))
|
|
)
|
|
(go-virtual idle)
|
|
)
|
|
:post transform-post
|
|
)
|
|
|
|
;; definition for method 23 of type vol-bouncer
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod init-skel! ((this vol-bouncer))
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-bouncer" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 24 of type vol-bouncer
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod init-collision! ((this vol-bouncer))
|
|
(let ((s5-0 (new 'process 'collide-shape this (collide-list-enum hit-by-player))))
|
|
(let ((v1-2 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1))))
|
|
(set! (-> v1-2 prim-core collide-as) (collide-spec crate))
|
|
(set! (-> v1-2 prim-core collide-with) (collide-spec jak player-list))
|
|
(set! (-> v1-2 prim-core action) (collide-action solid))
|
|
(set! (-> v1-2 transform-index) 3)
|
|
(set-vector! (-> v1-2 local-sphere) -2128.2815 5212.979 223.6416 25526.682)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-2)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-5 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-5 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-5 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition of type vol-lava-ball
|
|
(deftype vol-lava-ball (process-drawable)
|
|
((y-initial float)
|
|
(y-velocity float)
|
|
(y-acc float)
|
|
(attack-id uint32)
|
|
(no-collision-timer time-frame)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
done
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type vol-lava-ball
|
|
(defmethod inspect ((this vol-lava-ball))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Ty-initial: ~f~%" (-> this y-initial))
|
|
(format #t "~2Ty-velocity: ~f~%" (-> this y-velocity))
|
|
(format #t "~2Ty-acc: ~f~%" (-> this y-acc))
|
|
(format #t "~2Tattack-id: ~D~%" (-> this attack-id))
|
|
(format #t "~2Tno-collision-timer: ~D~%" (-> this no-collision-timer))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-lava-ball vol-lava-ball vol-lava-ball-lod0-jg -1
|
|
((vol-lava-ball-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 4)
|
|
)
|
|
|
|
;; definition for function vol-lava-ball-post
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior vol-lava-ball-post vol-lava-ball ()
|
|
(+! (-> self y-velocity) (* (-> self y-acc) (seconds-per-frame)))
|
|
(set! (-> self y-velocity) (- (-> self y-velocity) (* 163840.0 (seconds-per-frame))))
|
|
(let ((f30-0 (+ (-> self root trans y) (-> self y-velocity)))
|
|
(f28-0 (-> self y-initial))
|
|
)
|
|
(if (and (< f30-0 f28-0) (< f28-0 (-> self root trans y)))
|
|
(sound-play "lava-splashdown")
|
|
)
|
|
(set! (-> self root trans y) (fmax f28-0 f30-0))
|
|
)
|
|
(set! (-> self y-velocity) (* 0.997 (seconds-per-frame) (-> self y-velocity)))
|
|
(let ((f0-12 (lerp-scale 1.0 2.0 (- (-> self root trans y) (-> self y-initial)) 0.0 20480.0)))
|
|
(set-vector! (-> self root scale) f0-12 f0-12 f0-12 1.0)
|
|
)
|
|
(let* ((gp-2
|
|
(vector-rotate-y! (new 'stack-no-clear 'vector) *x-vector* (* 182.04445 (rand-vu-float-range -180.0 180.0)))
|
|
)
|
|
(f0-21 (* 182.04445
|
|
(lerp-scale 0.0 1.0 (- (-> self root trans y) (-> self y-initial)) 16384.0 81920.0)
|
|
(rand-vu-float-range 100.0 250.0)
|
|
(seconds-per-frame)
|
|
)
|
|
)
|
|
(a2-5 (quaternion-vector-angle! (new 'stack-no-clear 'quaternion) gp-2 f0-21))
|
|
(gp-3 (-> self root quat))
|
|
)
|
|
(quaternion*! gp-3 gp-3 a2-5)
|
|
(quaternion-normalize! gp-3)
|
|
)
|
|
(spawn (-> self part) (-> self root trans))
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (vol-lava-ball)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('trans)
|
|
(-> self root trans)
|
|
)
|
|
(('push)
|
|
(-> self root trans)
|
|
(let ((f0-0 (the-as float (-> block param 0))))
|
|
(set! (-> self y-acc) (* 2211840.0 f0-0))
|
|
)
|
|
)
|
|
(('done)
|
|
(go-virtual done)
|
|
)
|
|
(('touch)
|
|
(let ((gp-0 (as-type proc process-focusable)))
|
|
(when gp-0
|
|
(when (time-elapsed? (-> self no-collision-timer) (-> *TARGET-bank* hit-invulnerable-timeout))
|
|
(let ((s4-2
|
|
(vector-! (new 'stack-no-clear 'vector) (-> self root trans) (-> (the-as process-drawable gp-0) root trans))
|
|
)
|
|
)
|
|
(set! (-> s4-2 y) 0.0)
|
|
(vector-xz-normalize! s4-2 1.0)
|
|
(when (send-event
|
|
gp-0
|
|
'attack
|
|
(-> block param 0)
|
|
(static-attack-info
|
|
:mask (vehicle-impulse-factor)
|
|
((id (-> self attack-id))
|
|
(damage 2.0)
|
|
(vehicle-damage-factor 1.0)
|
|
(vehicle-impulse-factor 1.0)
|
|
(mode 'burnup)
|
|
(vector s4-2)
|
|
(shove-back (meters 8))
|
|
(shove-up (meters 10))
|
|
(control (if (focus-test? (the-as process-focusable gp-0) board)
|
|
1.0
|
|
0.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((v0-0 (the-as object (current-time))))
|
|
(set! (-> self no-collision-timer) (the-as time-frame v0-0))
|
|
v0-0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(set! (-> self no-collision-timer) 0)
|
|
(set! (-> self y-acc) 0.0)
|
|
(set! (-> self y-velocity) 0.0)
|
|
(logclear! (-> self mask) (process-mask actor-pause))
|
|
(ja-channel-set! 1)
|
|
(ja-no-eval :group! vol-lava-ball-idle-ja :num! zero)
|
|
)
|
|
:code sleep-code
|
|
:post vol-lava-ball-post
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate done (vol-lava-ball)
|
|
:virtual #t
|
|
:trans (behavior ()
|
|
(if (>= (-> self y-initial) (-> self root trans y))
|
|
(go empty-state)
|
|
)
|
|
(seek! (-> self y-acc) 0.0 (* 204800.0 (seconds-per-frame)))
|
|
)
|
|
:code sleep-code
|
|
:post vol-lava-ball-post
|
|
)
|
|
|
|
;; definition for function vol-lava-ball-init-by-other
|
|
;; INFO: Used lq/sq
|
|
(defbehavior vol-lava-ball-init-by-other vol-lava-ball ((arg0 vector) (arg1 entity-actor))
|
|
(process-entity-set! self arg1)
|
|
(let ((s5-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid deadly))
|
|
(set! (-> v1-6 transform-index) 3)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 0.0 0.0 10240.0)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> self root) s5-0)
|
|
)
|
|
(vector-copy! (-> self root trans) arg0)
|
|
(initialize-skeleton
|
|
self
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-lava-ball" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> self y-velocity) 0.0)
|
|
(set! (-> self y-initial) (-> self root trans y))
|
|
(let* ((v1-17 *game-info*)
|
|
(a0-15 (+ (-> v1-17 attack-id) 1))
|
|
)
|
|
(set! (-> v1-17 attack-id) a0-15)
|
|
(set! (-> self attack-id) a0-15)
|
|
)
|
|
(set! (-> self no-collision-timer) 0)
|
|
(set! (-> self part) (create-launch-control group-vol-lava-ball self))
|
|
(go-virtual idle)
|
|
)
|
|
|
|
;; definition of type vol-lava-ball-spout
|
|
(deftype vol-lava-ball-spout (process-drawable)
|
|
((sync sync-paused :inline)
|
|
(ball handle)
|
|
(ball-height float)
|
|
(sound-id sound-id)
|
|
(explode-time time-frame)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
going-active
|
|
active
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type vol-lava-ball-spout
|
|
(defmethod inspect ((this vol-lava-ball-spout))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Tsync: #<sync-paused @ #x~X>~%" (-> this sync))
|
|
(format #t "~2Tball: ~D~%" (-> this ball))
|
|
(format #t "~2Tball-height: ~f~%" (-> this ball-height))
|
|
(format #t "~2Tsound-id: ~D~%" (-> this sound-id))
|
|
(format #t "~2Texplode-time: ~D~%" (-> this explode-time))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (vol-lava-ball-spout)
|
|
:virtual #t
|
|
:trans (behavior ()
|
|
(if (< (vector-vector-xz-distance (target-pos 0) (-> self root trans)) 573440.0)
|
|
(go-virtual going-active)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate going-active (vol-lava-ball-spout)
|
|
:virtual #t
|
|
:code (behavior ()
|
|
(let ((gp-0 (get-timeframe-offset! (-> self sync) 0)))
|
|
(until (< gp-0 (current-time))
|
|
(suspend)
|
|
)
|
|
)
|
|
(go-virtual active)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate active (vol-lava-ball-spout)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(logclear! (-> self mask) (process-mask actor-pause))
|
|
(set! (-> self ball)
|
|
(process->handle
|
|
(ppointer->process
|
|
(process-spawn vol-lava-ball (-> self root trans) (-> self entity) :name "vol-lava-ball" :to self)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> self explode-time) (+ (get-timeframe-offset! (-> self sync) 0) (the int (-> self sync pause-in))))
|
|
(if (< (+ (current-time) (the-as time-frame (-> self sync period))) (-> self explode-time))
|
|
(set! (-> self explode-time) (- (-> self explode-time) (the-as int (-> self sync period))))
|
|
)
|
|
)
|
|
:exit (behavior ()
|
|
(sound-stop (-> self sound-id))
|
|
)
|
|
:trans (behavior ()
|
|
(when (< 655360.0 (vector-vector-xz-distance (target-pos 0) (-> self root trans)))
|
|
(send-event (handle->process (-> self ball)) 'done)
|
|
(go-virtual idle)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
:post (behavior ()
|
|
(when (< 8192.0 (vector-vector-xz-distance (-> self root trans) (camera-pos)))
|
|
(when (< (-> self explode-time) (current-time))
|
|
(sound-play "geyser-start")
|
|
(set! (-> self explode-time) (+ (get-timeframe-offset! (-> self sync) 0) (the int (-> self sync pause-in))))
|
|
)
|
|
(let ((f30-1 (get-norm! (-> self sync) 0)))
|
|
(sound-play-by-name
|
|
(static-sound-name "geyser-loop")
|
|
(-> self sound-id)
|
|
(the int (* 1024.0 f30-1))
|
|
0
|
|
0
|
|
(sound-group)
|
|
#t
|
|
)
|
|
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
|
|
(set! (-> a1-5 from) (process->ppointer self))
|
|
(set! (-> a1-5 num-params) 0)
|
|
(set! (-> a1-5 message) 'trans)
|
|
(let ((v1-17 (the-as vector (send-event-function (handle->process (-> self ball)) a1-5))))
|
|
(when v1-17
|
|
(let ((f28-0 (lerp-scale 1.0 0.0 (- (-> v1-17 y) (-> self root trans y)) 0.0 (-> self ball-height))))
|
|
(send-event (handle->process (-> self ball)) 'push (* f28-0 f30-1))
|
|
(set! (-> *part-id-table* 4612 init-specs 2 initial-valuef) (* 10.0 f30-1 (- 1.0 f28-0)))
|
|
(set! (-> *part-id-table* 4612 init-specs 13 initial-valuef)
|
|
(+ (* 6826.6665 f30-1 f28-0) (* (/ (-> self ball-height) 500) f30-1 (- 1.0 f28-0)))
|
|
)
|
|
)
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((gp-2 (new 'stack-no-clear 'matrix)))
|
|
(matrix-copy! gp-2 *identity-matrix*)
|
|
(matrix<-quat gp-2 (-> self root quat))
|
|
(vector-copy! (-> gp-2 trans) (-> self root trans))
|
|
(spawn-from-mat (-> self part) gp-2)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type vol-lava-ball-spout
|
|
(defmethod deactivate ((this vol-lava-ball-spout))
|
|
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
|
(sound-stop (-> this sound-id))
|
|
(call-parent-method this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type vol-lava-ball-spout
|
|
(defmethod init-from-entity! ((this vol-lava-ball-spout) (arg0 entity-actor))
|
|
"Set up a newly created process from the entity that created it."
|
|
(set! (-> this root) (new 'process 'trsqv))
|
|
(process-drawable-from-entity! this arg0)
|
|
(let ((a1-3 (new 'stack-no-clear 'sync-info-params)))
|
|
(let ((v1-1 0))
|
|
(if #t
|
|
(set! v1-1 (logior v1-1 1))
|
|
)
|
|
(set! (-> a1-3 sync-type) 'sync-paused)
|
|
(set! (-> a1-3 sync-flags) (the-as sync-flags v1-1))
|
|
)
|
|
(set! (-> a1-3 entity) (-> this entity))
|
|
(set! (-> a1-3 period) (the-as uint 1800))
|
|
(set! (-> a1-3 percent) 0.0)
|
|
(set! (-> a1-3 pause-in) 0.7)
|
|
(set! (-> a1-3 pause-out) 0.05)
|
|
(initialize! (-> this sync) a1-3)
|
|
)
|
|
(set! (-> this ball-height) (res-lump-float (-> this entity) 'y-offset :default 81920.0))
|
|
(set! (-> this part) (create-launch-control group-lava-ball-spout this))
|
|
(set! (-> this ball) (the-as handle #f))
|
|
(set! (-> this sound-id) (new-sound-id))
|
|
(go (method-of-object this idle))
|
|
)
|
|
|
|
;; definition of type vol-collapsing-rock
|
|
(deftype vol-collapsing-rock (process-drawable)
|
|
()
|
|
(:state-methods
|
|
inactive
|
|
idle
|
|
(falling symbol)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type vol-collapsing-rock
|
|
(defmethod inspect ((this vol-collapsing-rock))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-vol-collapsing-rock vol-collapsing-rock vol-collapsing-rock-lod0-jg vol-collapsing-rock-idle-ja
|
|
((vol-collapsing-rock-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 20 -16 32)
|
|
:origin-joint-index 3
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate inactive (vol-collapsing-rock)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(ja-channel-push! 1 0)
|
|
(ja :group! vol-collapsing-rock-falling-ja :num! zero)
|
|
(transform-post)
|
|
)
|
|
:trans (behavior ()
|
|
(if (task-node-closed? (game-task-node volcano-darkeco-indax-1-introduction))
|
|
(go-virtual idle)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (vol-collapsing-rock)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('trigger)
|
|
(go-virtual falling #f)
|
|
)
|
|
)
|
|
)
|
|
:trans (behavior ()
|
|
(gui-control-method-12
|
|
*gui-control*
|
|
self
|
|
(gui-channel art-load)
|
|
(gui-action queue)
|
|
"volcano-indax-1-res"
|
|
0
|
|
-99.0
|
|
(new 'static 'sound-id)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate falling (vol-collapsing-rock)
|
|
:virtual #t
|
|
:enter (behavior ((arg0 symbol))
|
|
(process-entity-status! self (entity-perm-status subtask-complete) #t)
|
|
)
|
|
:code (behavior ((arg0 symbol))
|
|
(cond
|
|
(arg0
|
|
(ja-no-eval :group! vol-collapsing-rock-falling-ja
|
|
:num! (identity (the float (+ (-> (the-as art-joint-anim vol-collapsing-rock-falling-ja) frames num-frames) -1)))
|
|
)
|
|
(ja-post)
|
|
(suspend)
|
|
(transform-post)
|
|
)
|
|
(else
|
|
(process-spawn scene-player :init scene-player-init "volcano-indax-1-res" #t #f :name "scene-player")
|
|
)
|
|
)
|
|
(sleep-code)
|
|
)
|
|
)
|
|
|
|
;; definition for method 11 of type vol-collapsing-rock
|
|
(defmethod init-from-entity! ((this vol-collapsing-rock) (arg0 entity-actor))
|
|
"Set up a newly created process from the entity that created it."
|
|
(let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s4-0 penetrated-by) (penetrate))
|
|
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0)))
|
|
(set! (-> s4-0 total-prims) (the-as uint 4))
|
|
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> s3-0 prim-core action) (collide-action solid no-smack))
|
|
(set! (-> s3-0 transform-index) 3)
|
|
(set-vector! (-> s3-0 local-sphere) 0.0 81920.0 -65536.0 131072.0)
|
|
(set! (-> s4-0 root-prim) s3-0)
|
|
)
|
|
(let ((v1-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1))))
|
|
(set! (-> v1-8 prim-core collide-as) (collide-spec obstacle camera-blocker))
|
|
(set! (-> v1-8 prim-core action) (collide-action solid no-smack))
|
|
(set! (-> v1-8 transform-index) 12)
|
|
(set-vector! (-> v1-8 local-sphere) -258.4576 55495.066 403.456 60998.043)
|
|
)
|
|
(let ((v1-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
|
|
(set! (-> v1-10 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-10 prim-core action) (collide-action solid))
|
|
(set! (-> v1-10 transform-index) 3)
|
|
(set-vector! (-> v1-10 local-sphere) -4071.424 21141.094 -3941.9905 49417.42)
|
|
)
|
|
(let ((v1-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0))))
|
|
(set! (-> v1-12 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-12 prim-core action) (collide-action solid))
|
|
(set! (-> v1-12 transform-index) 3)
|
|
(set-vector! (-> v1-12 local-sphere) -963.3792 34254.027 -114976.36 62616.78)
|
|
)
|
|
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
|
|
(let ((v1-15 (-> s4-0 root-prim)))
|
|
(set! (-> s4-0 backup-collide-as) (-> v1-15 prim-core collide-as))
|
|
(set! (-> s4-0 backup-collide-with) (-> v1-15 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) s4-0)
|
|
)
|
|
(process-drawable-from-entity! this arg0)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-vol-collapsing-rock" (the-as (pointer level) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(if (or (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status subtask-complete)))
|
|
(task-node-closed? (game-task-node volcano-darkeco-indax-1))
|
|
)
|
|
(go (method-of-object this falling) #t)
|
|
(go (method-of-object this inactive))
|
|
)
|
|
)
|