mirror of
https://github.com/open-goal/jak-project
synced 2026-08-04 09:09:52 -04:00
51d008f9ab
Co-authored-by: ManDude <7569514+ManDude@users.noreply.github.com>
2053 lines
74 KiB
Common Lisp
Vendored
Generated
2053 lines
74 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; definition of type tomb-boss-catwalk
|
|
(deftype tomb-boss-catwalk (process-drawable)
|
|
((root collide-shape-moving :override)
|
|
(which-look int32)
|
|
)
|
|
(:state-methods
|
|
shatter
|
|
idle
|
|
)
|
|
(:methods
|
|
(tomb-boss-catwalk-method-22 (_type_ vector int) none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type tomb-boss-catwalk
|
|
(defmethod inspect ((this tomb-boss-catwalk))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Twhich-look: ~D~%" (-> this which-look))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-main tomb-boss-catwalk tomb-boss-catwalk-main-lod0-jg tomb-boss-catwalk-main-idle-ja
|
|
((tomb-boss-catwalk-main-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 80)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-a tomb-boss-catwalk tomb-boss-catwalk-a-lod0-jg tomb-boss-catwalk-a-idle-ja
|
|
((tomb-boss-catwalk-a-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 18)
|
|
:origin-joint-index 30
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-b tomb-boss-catwalk tomb-boss-catwalk-b-lod0-jg tomb-boss-catwalk-b-idle-ja
|
|
((tomb-boss-catwalk-b-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 14)
|
|
:origin-joint-index 30
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-c tomb-boss-catwalk tomb-boss-catwalk-c-lod0-jg tomb-boss-catwalk-c-idle-ja
|
|
((tomb-boss-catwalk-c-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 14)
|
|
:origin-joint-index 30
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-d tomb-boss-catwalk tomb-boss-catwalk-d-lod0-jg tomb-boss-catwalk-d-idle-ja
|
|
((tomb-boss-catwalk-d-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 14)
|
|
:origin-joint-index 30
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-e tomb-boss-catwalk tomb-boss-catwalk-e-lod0-jg tomb-boss-catwalk-e-idle-ja
|
|
((tomb-boss-catwalk-e-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 14)
|
|
:origin-joint-index 18
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-f tomb-boss-catwalk tomb-boss-catwalk-f-lod0-jg tomb-boss-catwalk-f-idle-ja
|
|
((tomb-boss-catwalk-f-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 14)
|
|
:origin-joint-index 30
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-catwalk-g tomb-boss-catwalk tomb-boss-catwalk-g-lod0-jg tomb-boss-catwalk-g-idle-ja
|
|
((tomb-boss-catwalk-g-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 -2 0 14)
|
|
:origin-joint-index 30
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate shatter (tomb-boss-catwalk)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(let ((v1-1 (-> self root root-prim)))
|
|
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(logclear! (-> self draw status) (draw-control-status no-draw-bounds))
|
|
(set! (-> self draw bounds w) 245760.0)
|
|
(let ((gp-0 (new 'stack-no-clear 'vector)))
|
|
(case (-> self which-look)
|
|
((1)
|
|
(ja :group! tomb-boss-catwalk-a-break-ja :num! min)
|
|
(set-vector! gp-0 188416.0 32768.0 -81920.0 1.0)
|
|
)
|
|
((2)
|
|
(ja :group! tomb-boss-catwalk-b-break-ja :num! min)
|
|
(set-vector! gp-0 139264.0 32768.0 -147456.0 1.0)
|
|
)
|
|
((3)
|
|
(ja :group! tomb-boss-catwalk-c-break-ja :num! min)
|
|
(set-vector! gp-0 81920.0 32768.0 -188416.0 1.0)
|
|
)
|
|
((4)
|
|
(ja :group! tomb-boss-catwalk-d-break-ja :num! min)
|
|
(set-vector! gp-0 0.0 32768.0 -200704.0 1.0)
|
|
)
|
|
((5)
|
|
(ja :group! tomb-boss-catwalk-e-break-ja :num! min)
|
|
(set-vector! gp-0 -81920.0 32768.0 -188416.0 1.0)
|
|
)
|
|
((6)
|
|
(ja :group! tomb-boss-catwalk-f-break-ja :num! min)
|
|
(set-vector! gp-0 -139264.0 32768.0 -147456.0 1.0)
|
|
)
|
|
((7)
|
|
(ja :group! tomb-boss-catwalk-g-break-ja :num! min)
|
|
(set-vector! gp-0 -188416.0 32768.0 -81920.0 1.0)
|
|
)
|
|
)
|
|
(vector+! gp-0 gp-0 (-> self root trans))
|
|
(let ((s5-7 (get-process *default-dead-pool* part-tracker #x4000)))
|
|
(when s5-7
|
|
(let ((t9-8 (method-of-type part-tracker activate)))
|
|
(t9-8
|
|
(the-as part-tracker s5-7)
|
|
*entity-pool*
|
|
(symbol->string (-> part-tracker symbol))
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(let ((t9-9 run-function-in-process)
|
|
(a0-54 s5-7)
|
|
(a1-11 part-tracker-init)
|
|
(a2-11 (-> *part-group-id-table* 717))
|
|
(a3-1 0)
|
|
(t0-0 #f)
|
|
(t1-0 #f)
|
|
(t2-0 #f)
|
|
(t3-0 *launch-matrix*)
|
|
)
|
|
(set! (-> t3-0 trans quad) (-> gp-0 quad))
|
|
((the-as (function object object object object object object object object none) t9-9)
|
|
a0-54
|
|
a1-11
|
|
a2-11
|
|
a3-1
|
|
t0-0
|
|
t1-0
|
|
t2-0
|
|
t3-0
|
|
)
|
|
)
|
|
(-> s5-7 ppointer)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:trans (behavior ()
|
|
(ja :num! (seek!))
|
|
(if (ja-done? 0)
|
|
(deactivate self)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
:post ja-post
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (tomb-boss-catwalk)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('catwalk-hit)
|
|
(when (zero? (-> self which-look))
|
|
(case (-> block param 0)
|
|
((1)
|
|
(setup-masks (-> self draw) 0 1)
|
|
)
|
|
((2)
|
|
(setup-masks (-> self draw) 0 2)
|
|
)
|
|
((3)
|
|
(setup-masks (-> self draw) 0 4)
|
|
)
|
|
((4)
|
|
(setup-masks (-> self draw) 0 8)
|
|
)
|
|
((5)
|
|
(setup-masks (-> self draw) 0 16)
|
|
)
|
|
((6)
|
|
(setup-masks (-> self draw) 0 32)
|
|
)
|
|
((7)
|
|
(setup-masks (-> self draw) 0 64)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(('green-hit)
|
|
(when (nonzero? (-> self which-look))
|
|
(send-event (ppointer->process (-> self parent)) 'catwalk-hit (-> self which-look))
|
|
(go-virtual shatter)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; definition for method 22 of type tomb-boss-catwalk
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod tomb-boss-catwalk-method-22 ((this tomb-boss-catwalk) (arg0 vector) (arg1 int))
|
|
(case arg1
|
|
((1)
|
|
(let ((s3-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-3 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-3 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-3 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-3 prim-core action) (collide-action solid))
|
|
(set! (-> v1-3 transform-index) 30)
|
|
(set-vector! (-> v1-3 local-sphere) 0.0 -12288.0 0.0 57344.0)
|
|
(set! (-> s3-0 total-prims) (the-as uint 1))
|
|
(set! (-> s3-0 root-prim) v1-3)
|
|
)
|
|
(set! (-> s3-0 nav-radius) 8192.0)
|
|
(let ((v1-5 (-> s3-0 root-prim)))
|
|
(set! (-> s3-0 backup-collide-as) (-> v1-5 prim-core collide-as))
|
|
(set! (-> s3-0 backup-collide-with) (-> v1-5 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-0))
|
|
)
|
|
)
|
|
((2)
|
|
(let ((s3-1 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-9 (new 'process 'collide-shape-prim-mesh s3-1 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-9 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-9 prim-core action) (collide-action solid))
|
|
(set! (-> v1-9 transform-index) 30)
|
|
(set-vector! (-> v1-9 local-sphere) 0.0 0.0 0.0 65536.0)
|
|
(set! (-> s3-1 total-prims) (the-as uint 1))
|
|
(set! (-> s3-1 root-prim) v1-9)
|
|
)
|
|
(set! (-> s3-1 nav-radius) 8192.0)
|
|
(let ((v1-11 (-> s3-1 root-prim)))
|
|
(set! (-> s3-1 backup-collide-as) (-> v1-11 prim-core collide-as))
|
|
(set! (-> s3-1 backup-collide-with) (-> v1-11 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-1))
|
|
)
|
|
)
|
|
((3)
|
|
(let ((s3-2 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-15 (new 'process 'collide-shape-prim-mesh s3-2 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-15 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-15 prim-core action) (collide-action solid))
|
|
(set! (-> v1-15 transform-index) 30)
|
|
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 65536.0)
|
|
(set! (-> s3-2 total-prims) (the-as uint 1))
|
|
(set! (-> s3-2 root-prim) v1-15)
|
|
)
|
|
(set! (-> s3-2 nav-radius) 8192.0)
|
|
(let ((v1-17 (-> s3-2 root-prim)))
|
|
(set! (-> s3-2 backup-collide-as) (-> v1-17 prim-core collide-as))
|
|
(set! (-> s3-2 backup-collide-with) (-> v1-17 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-2))
|
|
)
|
|
)
|
|
((4)
|
|
(let ((s3-3 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-21 (new 'process 'collide-shape-prim-mesh s3-3 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-21 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-21 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-21 prim-core action) (collide-action solid))
|
|
(set! (-> v1-21 transform-index) 30)
|
|
(set-vector! (-> v1-21 local-sphere) 0.0 0.0 0.0 65536.0)
|
|
(set! (-> s3-3 total-prims) (the-as uint 1))
|
|
(set! (-> s3-3 root-prim) v1-21)
|
|
)
|
|
(set! (-> s3-3 nav-radius) 8192.0)
|
|
(let ((v1-23 (-> s3-3 root-prim)))
|
|
(set! (-> s3-3 backup-collide-as) (-> v1-23 prim-core collide-as))
|
|
(set! (-> s3-3 backup-collide-with) (-> v1-23 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-3))
|
|
)
|
|
)
|
|
((5)
|
|
(let ((s3-4 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-27 (new 'process 'collide-shape-prim-mesh s3-4 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-27 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-27 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-27 prim-core action) (collide-action solid))
|
|
(set! (-> v1-27 transform-index) 18)
|
|
(set-vector! (-> v1-27 local-sphere) 0.0 0.0 0.0 65536.0)
|
|
(set! (-> s3-4 total-prims) (the-as uint 1))
|
|
(set! (-> s3-4 root-prim) v1-27)
|
|
)
|
|
(set! (-> s3-4 nav-radius) 8192.0)
|
|
(let ((v1-29 (-> s3-4 root-prim)))
|
|
(set! (-> s3-4 backup-collide-as) (-> v1-29 prim-core collide-as))
|
|
(set! (-> s3-4 backup-collide-with) (-> v1-29 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-4))
|
|
)
|
|
)
|
|
((6)
|
|
(let ((s3-5 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-33 (new 'process 'collide-shape-prim-mesh s3-5 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-33 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-33 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-33 prim-core action) (collide-action solid))
|
|
(set! (-> v1-33 transform-index) 30)
|
|
(set-vector! (-> v1-33 local-sphere) 0.0 0.0 0.0 65536.0)
|
|
(set! (-> s3-5 total-prims) (the-as uint 1))
|
|
(set! (-> s3-5 root-prim) v1-33)
|
|
)
|
|
(set! (-> s3-5 nav-radius) 8192.0)
|
|
(let ((v1-35 (-> s3-5 root-prim)))
|
|
(set! (-> s3-5 backup-collide-as) (-> v1-35 prim-core collide-as))
|
|
(set! (-> s3-5 backup-collide-with) (-> v1-35 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-5))
|
|
)
|
|
)
|
|
((7)
|
|
(let ((s3-6 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((v1-39 (new 'process 'collide-shape-prim-mesh s3-6 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-39 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-39 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-39 prim-core action) (collide-action solid))
|
|
(set! (-> v1-39 transform-index) 30)
|
|
(set-vector! (-> v1-39 local-sphere) 0.0 0.0 0.0 65536.0)
|
|
(set! (-> s3-6 total-prims) (the-as uint 1))
|
|
(set! (-> s3-6 root-prim) v1-39)
|
|
)
|
|
(set! (-> s3-6 nav-radius) 8192.0)
|
|
(let ((v1-41 (-> s3-6 root-prim)))
|
|
(set! (-> s3-6 backup-collide-as) (-> v1-41 prim-core collide-as))
|
|
(set! (-> s3-6 backup-collide-with) (-> v1-41 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-6))
|
|
)
|
|
)
|
|
(else
|
|
(let ((s3-7 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((s2-0 (new 'process 'collide-shape-prim-group s3-7 (the-as uint 8) 0)))
|
|
(set! (-> s3-7 total-prims) (the-as uint 9))
|
|
(set! (-> s2-0 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> s2-0 prim-core collide-with) (collide-spec jak player-list))
|
|
(set! (-> s2-0 prim-core action) (collide-action solid))
|
|
(set! (-> s2-0 transform-index) 3)
|
|
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 327680.0)
|
|
(set! (-> s3-7 root-prim) s2-0)
|
|
)
|
|
(let ((v1-52 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 7) (the-as uint 0))))
|
|
(set! (-> v1-52 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-52 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-52 prim-core action) (collide-action solid))
|
|
(set! (-> v1-52 transform-index) 11)
|
|
(set-vector! (-> v1-52 local-sphere) 0.0 114688.0 0.0 65536.0)
|
|
)
|
|
(let ((v1-54 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 6) (the-as uint 0))))
|
|
(set! (-> v1-54 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-54 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-54 prim-core action) (collide-action solid))
|
|
(set! (-> v1-54 transform-index) 10)
|
|
(set-vector! (-> v1-54 local-sphere) 0.0 114688.0 0.0 65536.0)
|
|
)
|
|
(let ((v1-56 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 5) (the-as uint 0))))
|
|
(set! (-> v1-56 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-56 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-56 prim-core action) (collide-action solid))
|
|
(set! (-> v1-56 transform-index) 9)
|
|
(set-vector! (-> v1-56 local-sphere) 0.0 114688.0 0.0 57344.0)
|
|
)
|
|
(let ((v1-58 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 4) (the-as uint 0))))
|
|
(set! (-> v1-58 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-58 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-58 prim-core action) (collide-action solid))
|
|
(set! (-> v1-58 transform-index) 8)
|
|
(set-vector! (-> v1-58 local-sphere) 0.0 114688.0 0.0 61440.0)
|
|
)
|
|
(let ((v1-60 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 3) (the-as uint 0))))
|
|
(set! (-> v1-60 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-60 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-60 prim-core action) (collide-action solid))
|
|
(set! (-> v1-60 transform-index) 7)
|
|
(set-vector! (-> v1-60 local-sphere) 0.0 114688.0 0.0 61440.0)
|
|
)
|
|
(let ((v1-62 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 2) (the-as uint 0))))
|
|
(set! (-> v1-62 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-62 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-62 prim-core action) (collide-action solid))
|
|
(set! (-> v1-62 transform-index) 6)
|
|
(set-vector! (-> v1-62 local-sphere) -8192.0 114688.0 0.0 57344.0)
|
|
)
|
|
(let ((v1-64 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 1) (the-as uint 0))))
|
|
(set! (-> v1-64 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-64 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-64 prim-core action) (collide-action solid))
|
|
(set! (-> v1-64 transform-index) 5)
|
|
(set-vector! (-> v1-64 local-sphere) -4096.0 114688.0 0.0 57344.0)
|
|
)
|
|
(let ((v1-66 (new 'process 'collide-shape-prim-mesh s3-7 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-66 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-66 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-66 prim-core action) (collide-action solid))
|
|
(set! (-> v1-66 transform-index) 4)
|
|
(set-vector! (-> v1-66 local-sphere) 0.0 114688.0 0.0 65536.0)
|
|
)
|
|
(set! (-> s3-7 nav-radius) 8192.0)
|
|
(let ((v1-68 (-> s3-7 root-prim)))
|
|
(set! (-> s3-7 backup-collide-as) (-> v1-68 prim-core collide-as))
|
|
(set! (-> s3-7 backup-collide-with) (-> v1-68 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s3-7))
|
|
)
|
|
)
|
|
)
|
|
(set! (-> this root trans quad) (-> arg0 quad))
|
|
(case arg1
|
|
((1)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-a" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
((2)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-b" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
((3)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-c" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
((4)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-d" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
((5)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-e" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
((6)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-f" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
((7)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-g" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(logior! (-> this draw status) (draw-control-status no-draw-bounds))
|
|
)
|
|
(else
|
|
(initialize-skeleton
|
|
this
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-tomb-boss-catwalk-main" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> this root pause-adjust-distance) 245760.0)
|
|
(set! (-> this which-look) arg1)
|
|
(quaternion-set! (-> this root quat) 0.0 1.0 0.0 0.0)
|
|
(transform-post)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 11 of type tomb-boss-catwalk
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! ((this tomb-boss-catwalk) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(let ((a2-1 (res-lump-value arg0 'mode uint128 :time -1000000000.0)))
|
|
(tomb-boss-catwalk-method-22 this (-> arg0 extra trans) (the-as int a2-1))
|
|
)
|
|
(cleanup-for-death this)
|
|
(deactivate this)
|
|
(go (method-of-object this idle))
|
|
(none)
|
|
)
|
|
|
|
;; definition for function tomb-boss-catwalk-init-by-other
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defbehavior tomb-boss-catwalk-init-by-other tomb-boss-catwalk ((arg0 vector) (arg1 int))
|
|
(tomb-boss-catwalk-method-22 self arg0 arg1)
|
|
(set! (-> self event-hook) (-> (method-of-object self idle) event))
|
|
(set! (-> self draw light-index) (the-as uint 2))
|
|
(go-virtual idle)
|
|
(none)
|
|
)
|
|
|
|
;; definition of type tomb-boss-catwalk-main
|
|
(deftype tomb-boss-catwalk-main (tomb-boss-catwalk)
|
|
()
|
|
)
|
|
|
|
;; definition for method 3 of type tomb-boss-catwalk-main
|
|
(defmethod inspect ((this tomb-boss-catwalk-main))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type tomb-boss-catwalk inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; definition of type widow-bomb
|
|
(deftype widow-bomb (process-focusable)
|
|
((traj trajectory :inline)
|
|
(explode-part sparticle-launch-control)
|
|
(trail-part sparticle-launch-control)
|
|
(warning-glow-part sparticle-launch-control)
|
|
(warning-spark-part sparticle-launch-control)
|
|
(impact impact-control :inline)
|
|
(which-trajectory int32)
|
|
(next-countdown-tick time-frame)
|
|
(skid-part sparticle-launch-control)
|
|
(x-rotate float)
|
|
(y-rotate float)
|
|
(spin-jm joint-mod)
|
|
(firework-sound-played symbol)
|
|
(steam-sound sound-id)
|
|
(launch vector :inline)
|
|
(launch-pos vector :inline)
|
|
(fizzle-timer time-frame)
|
|
)
|
|
(:state-methods
|
|
freefall
|
|
back-atcha
|
|
explode
|
|
smoke
|
|
idle
|
|
)
|
|
(:methods
|
|
(widow-bomb-method-32 (_type_) none)
|
|
(widow-bomb-method-33 (_type_) none)
|
|
(widow-bomb-method-34 (_type_) none)
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type widow-bomb
|
|
(defmethod inspect ((this widow-bomb))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-focusable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Ttraj: #<trajectory @ #x~X>~%" (-> this traj))
|
|
(format #t "~2Texplode-part: ~A~%" (-> this explode-part))
|
|
(format #t "~2Ttrail-part: ~A~%" (-> this trail-part))
|
|
(format #t "~2Twarning-glow-part: ~A~%" (-> this warning-glow-part))
|
|
(format #t "~2Twarning-spark-part: ~A~%" (-> this warning-spark-part))
|
|
(format #t "~2Timpact: #<impact-control @ #x~X>~%" (-> this impact))
|
|
(format #t "~2Twhich-trajectory: ~D~%" (-> this which-trajectory))
|
|
(format #t "~2Tnext-countdown-tick: ~D~%" (-> this next-countdown-tick))
|
|
(format #t "~2Tskid-part: ~A~%" (-> this skid-part))
|
|
(format #t "~2Tx-rotate: ~f~%" (-> this x-rotate))
|
|
(format #t "~2Ty-rotate: ~f~%" (-> this y-rotate))
|
|
(format #t "~2Tspin-jm: ~A~%" (-> this spin-jm))
|
|
(format #t "~2Tfirework-sound-played: ~A~%" (-> this firework-sound-played))
|
|
(format #t "~2Tsteam-sound: ~D~%" (-> this steam-sound))
|
|
(format #t "~2Tlaunch: #<vector @ #x~X>~%" (-> this launch))
|
|
(format #t "~2Tlaunch-pos: #<vector @ #x~X>~%" (-> this launch-pos))
|
|
(format #t "~2Tfizzle-timer: ~D~%" (-> this fizzle-timer))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-widow-bomb widow-bomb widow-bomb-lod0-jg widow-bomb-idle-ja
|
|
((widow-bomb-lod0-mg (meters 20)) (widow-bomb-lod1-mg (meters 40)) (widow-bomb-lod2-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 4)
|
|
)
|
|
|
|
;; definition for method 34 of type widow-bomb
|
|
;; INFO: Used lq/sq
|
|
;; ERROR: Stack slot load at 48 mismatch: defined as size 4, got size 16
|
|
;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16
|
|
;; ERROR: Stack slot load at 48 mismatch: defined as size 4, got size 16
|
|
;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16
|
|
;; ERROR: Stack slot load at 48 mismatch: defined as size 4, got size 16
|
|
;; ERROR: Stack slot load at 64 mismatch: defined as size 4, got size 16
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod widow-bomb-method-34 ((this widow-bomb))
|
|
(local-vars (sv-48 float) (sv-64 float))
|
|
(let ((s5-0 (new 'stack-no-clear 'quaternion))
|
|
(gp-0 (new 'stack-no-clear 'quaternion))
|
|
)
|
|
(let ((s3-0 quaternion-set!)
|
|
(s2-0 s5-0)
|
|
(s1-0 (sin (/ (-> this x-rotate) 2)))
|
|
(s0-0 0.0)
|
|
)
|
|
(set! sv-48 (the-as float 0.0))
|
|
(let ((t0-0 (cos (/ (-> this x-rotate) 2))))
|
|
(s3-0 s2-0 s1-0 s0-0 sv-48 t0-0)
|
|
)
|
|
)
|
|
(let ((s3-1 quaternion-set!)
|
|
(s2-1 gp-0)
|
|
(s1-1 0.0)
|
|
(s0-1 (sin (/ (-> this y-rotate) 2)))
|
|
)
|
|
(set! sv-64 (the-as float 0.0))
|
|
(let ((t0-1 (cos (/ (-> this y-rotate) 2))))
|
|
(s3-1 s2-1 s1-1 s0-1 sv-64 t0-1)
|
|
)
|
|
)
|
|
(quaternion-normalize! (quaternion*! (-> this spin-jm quat) gp-0 s5-0))
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function widow-bomb-handler
|
|
(defbehavior widow-bomb-handler widow-bomb ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
|
(local-vars (v1-13 float))
|
|
(rlet ((acc :class vf)
|
|
(vf0 :class vf)
|
|
(vf1 :class vf)
|
|
(vf2 :class vf)
|
|
)
|
|
(init-vf0-vector)
|
|
(case arg2
|
|
(('attack)
|
|
(cond
|
|
((= (-> arg0 type) target)
|
|
(let ((gp-0 (new 'stack-no-clear 'vector))
|
|
(f30-0 32768.0)
|
|
)
|
|
(let* ((s4-0 (ppointer->process (-> self parent)))
|
|
(v1-5 (if (type? s4-0 widow)
|
|
(the-as widow s4-0)
|
|
)
|
|
)
|
|
)
|
|
(vector-! gp-0 (-> self root trans) (-> (the-as widow arg0) root trans))
|
|
(set! (-> gp-0 y) 0.0)
|
|
(cond
|
|
(v1-5
|
|
(if (-> v1-5 flying)
|
|
(set! f30-0 16384.0)
|
|
)
|
|
(let ((s4-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-5 node-list data 3)))
|
|
(s5-1 (new 'stack-no-clear 'vector))
|
|
)
|
|
(let ((f28-0 20480.0))
|
|
(vector-! s4-1 s4-1 (-> self root trans))
|
|
(let ((t9-2 vector-normalize!)
|
|
(a0-14 gp-0)
|
|
(v1-9 s4-1)
|
|
)
|
|
(t9-2 a0-14 (sqrtf (+ (* (-> v1-9 x) (-> v1-9 x)) (* (-> v1-9 z) (-> v1-9 z)))))
|
|
)
|
|
(set! (-> gp-0 y) (-> s4-1 y))
|
|
(vector-! s5-1 s4-1 gp-0)
|
|
(let* ((f0-6 f28-0)
|
|
(f0-8 (* f0-6 f0-6))
|
|
)
|
|
(.lvf vf1 (&-> s5-1 quad))
|
|
(.add.w.vf vf2 vf0 vf0 :mask #b1)
|
|
(.mul.vf vf1 vf1 vf1)
|
|
(.mul.x.vf acc vf2 vf1 :mask #b1)
|
|
(.add.mul.y.vf acc vf2 vf1 acc :mask #b1)
|
|
(.add.mul.z.vf vf1 vf2 vf1 acc :mask #b1)
|
|
(.mov v1-13 vf1)
|
|
(if (< f0-8 v1-13)
|
|
(vector-normalize! s5-1 f28-0)
|
|
)
|
|
)
|
|
)
|
|
(vector+! gp-0 gp-0 s5-1)
|
|
)
|
|
)
|
|
(else
|
|
(vector-normalize! gp-0 200704.0)
|
|
)
|
|
)
|
|
)
|
|
(vector+! gp-0 gp-0 (-> self root trans))
|
|
(setup-from-to-duration-and-height! (-> self traj) (-> self root trans) gp-0 225.0 f30-0)
|
|
)
|
|
(send-event (ppointer->process (-> self parent)) 'bomb-kicked)
|
|
(go-virtual back-atcha)
|
|
)
|
|
(else
|
|
(go-virtual explode)
|
|
)
|
|
)
|
|
)
|
|
(('fizzle)
|
|
(let* ((gp-1 (current-time))
|
|
(f30-1 600.0)
|
|
(v1-34 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
|
(v1-35 (the-as number (logior #x3f800000 v1-34)))
|
|
(v0-7 (the-as object (- gp-1 (the-as time-frame (the int (* f30-1 (+ -1.0 (the-as float v1-35))))))))
|
|
)
|
|
(set! (-> self fizzle-timer) (the-as time-frame v0-7))
|
|
v0-7
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function widow-bomb-back-handler
|
|
(defbehavior widow-bomb-back-handler widow-bomb ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
|
|
(case arg2
|
|
(('impact-control)
|
|
(let* ((s4-0 (ppointer->process (-> self parent)))
|
|
(s5-0 (if (type? s4-0 widow)
|
|
(the-as widow s4-0)
|
|
)
|
|
)
|
|
)
|
|
(when s5-0
|
|
(let ((a1-3 (vector<-cspace! (new 'stack-no-clear 'vector) (-> s5-0 node-list data 3))))
|
|
(when (and (< (vector-vector-distance (-> self root trans) a1-3) 49152.0) (not (-> s5-0 flying)))
|
|
(send-event s5-0 'bomb-hit (-> self root trans) 1)
|
|
(go-virtual explode)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(let ((s5-1 arg0))
|
|
(when (if (type? s5-1 widow)
|
|
s5-1
|
|
)
|
|
(send-event arg0 'bomb-hit (-> self root trans) 1)
|
|
(go-virtual explode)
|
|
)
|
|
)
|
|
)
|
|
(('fizzle)
|
|
(let* ((gp-1 (current-time))
|
|
(f30-0 600.0)
|
|
(v1-34 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
|
(v1-35 (the-as number (logior #x3f800000 v1-34)))
|
|
(v0-6 (the-as object (- gp-1 (the-as time-frame (the int (* f30-0 (+ -1.0 (the-as float v1-35))))))))
|
|
)
|
|
(set! (-> self fizzle-timer) (the-as time-frame v0-6))
|
|
v0-6
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate freefall (widow-bomb)
|
|
:virtual #t
|
|
:event widow-bomb-back-handler
|
|
:enter (behavior ()
|
|
(set-time! (-> self state-time))
|
|
)
|
|
:trans (behavior ()
|
|
(if (and (nonzero? (-> self fizzle-timer)) (time-elapsed? (-> self fizzle-timer) (seconds 3)))
|
|
(go-virtual explode)
|
|
)
|
|
(+! (-> self x-rotate) 1092.2667)
|
|
(+! (-> self y-rotate) 728.1778)
|
|
(widow-bomb-method-34 self)
|
|
(spawn-with-cspace (-> self part) (joint-node widow-bomb-lod0-jg main))
|
|
(cond
|
|
((time-elapsed? (-> self state-time) (seconds 4))
|
|
(go-virtual explode)
|
|
)
|
|
(else
|
|
(vector-v++!
|
|
(-> self root transv)
|
|
(compute-acc-due-to-gravity (the-as collide-shape-moving (-> self root)) (new-stack-vector0) 1.0)
|
|
)
|
|
(let ((a2-1 (new 'stack-no-clear 'collide-query)))
|
|
(set! (-> a2-1 collide-with) (collide-spec backgnd enemy obstacle hit-by-others-list pusher))
|
|
(set! (-> a2-1 ignore-process0) self)
|
|
(set! (-> a2-1 ignore-process1) #f)
|
|
(set! (-> a2-1 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
|
|
(set! (-> a2-1 action-mask) (collide-action solid))
|
|
(fill-cache-integrate-and-collide (-> self root) (-> self root transv) a2-1 (meters 0))
|
|
)
|
|
)
|
|
)
|
|
(ja :num! (loop!))
|
|
)
|
|
:code sleep-code
|
|
:post transform-post
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate back-atcha (widow-bomb)
|
|
:virtual #t
|
|
:event widow-bomb-back-handler
|
|
:enter (behavior ()
|
|
(set-time! (-> self state-time))
|
|
(initialize
|
|
(-> self impact)
|
|
self
|
|
3
|
|
4096.0
|
|
(collide-spec backgnd enemy obstacle hit-by-others-list player-list)
|
|
)
|
|
(let ((v1-5 (-> self root root-prim)))
|
|
(logior! (-> v1-5 prim-core collide-with) (collide-spec enemy))
|
|
(logclear! (-> v1-5 prim-core collide-with) (collide-spec jak))
|
|
)
|
|
)
|
|
:trans (behavior ()
|
|
(if (and (nonzero? (-> self fizzle-timer)) (time-elapsed? (-> self fizzle-timer) (seconds 3)))
|
|
(go-virtual explode)
|
|
)
|
|
(+! (-> self x-rotate) 4369.067)
|
|
(+! (-> self y-rotate) 3458.8445)
|
|
(widow-bomb-method-34 self)
|
|
(cond
|
|
((time-elapsed? (-> self state-time) (the int (-> self traj time)))
|
|
(compute-transv-at-time (-> self traj) (-> self traj time) (-> self root transv))
|
|
(vector-float*! (-> self root transv) (-> self root transv) 300.0)
|
|
(go-virtual freefall)
|
|
)
|
|
(else
|
|
(compute-trans-at-time
|
|
(-> self traj)
|
|
(the float (- (current-time) (-> self state-time)))
|
|
(-> self root trans)
|
|
)
|
|
(update-from-cspace (-> self impact))
|
|
(when (time-elapsed? (-> self state-time) 1)
|
|
(let* ((a1-4 (new 'stack-no-clear 'collide-query))
|
|
(f0-10 (impact-control-method-11
|
|
(-> self impact)
|
|
a1-4
|
|
self
|
|
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noproj #x1 :noendlessfall #x1)
|
|
)
|
|
)
|
|
)
|
|
(when (< 0.0 f0-10)
|
|
(set! (-> self root trans quad) (-> self impact trans 1 quad))
|
|
(compute-transv-at-time
|
|
(-> self traj)
|
|
(the float (- (current-time) (-> self state-time)))
|
|
(-> self root transv)
|
|
)
|
|
(vector-float*! (-> self root transv) (-> self root transv) 300.0)
|
|
(go-virtual freefall)
|
|
)
|
|
)
|
|
)
|
|
(spawn-with-cspace (-> self part) (joint-node widow-bomb-lod0-jg main))
|
|
)
|
|
)
|
|
(ja :num! (loop!))
|
|
)
|
|
:code sleep-code
|
|
:post transform-post
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate explode (widow-bomb)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(let* ((a0-1 (target-pos 0))
|
|
(f0-0 (vector-vector-distance-squared a0-1 (-> self root trans)))
|
|
(f1-0 16384.0)
|
|
)
|
|
(if (< f0-0 (* f1-0 f1-0))
|
|
(send-event
|
|
*target*
|
|
'attack
|
|
#f
|
|
(static-attack-info ((id (new-attack-id)) (mode 'explode) (shove-up (meters 4)) (shove-back (meters 2))))
|
|
)
|
|
)
|
|
)
|
|
(activate! *camera-smush-control* 819.2 37 210 1.0 0.995 (-> self clock))
|
|
(ja-channel-set! 0)
|
|
(let ((v1-12 (-> self root root-prim)))
|
|
(set! (-> v1-12 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-12 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(sound-play "w-bomb-explode")
|
|
(set-time! (-> self state-time))
|
|
)
|
|
:trans (behavior ()
|
|
(cond
|
|
((not (time-elapsed? (-> self state-time) (seconds 2)))
|
|
(let ((a1-0 (new 'stack-no-clear 'vector)))
|
|
(set! (-> a1-0 quad) (-> self root trans quad))
|
|
(+! (-> a1-0 y) 2048.0)
|
|
(spawn (-> self explode-part) a1-0)
|
|
)
|
|
)
|
|
((not (-> self child))
|
|
(deactivate self)
|
|
)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
:post ja-post
|
|
)
|
|
|
|
;; definition for method 32 of type widow-bomb
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod widow-bomb-method-32 ((this widow-bomb))
|
|
(spawn-with-cspace (-> this part) (-> this node-list data 3))
|
|
(sound-play "w-bomb-steam" :id (-> this steam-sound) :position (-> this root trans))
|
|
(let ((s5-0 (the-as int (- (current-time) (-> this state-time)))))
|
|
(if (nonzero? (-> this fizzle-timer))
|
|
(set! s5-0
|
|
(max (the-as time-frame s5-0) (- (seconds 12) (- (seconds 3) (- (current-time) (-> this fizzle-timer)))))
|
|
)
|
|
)
|
|
(if (< 3600 s5-0)
|
|
(go (method-of-object this explode))
|
|
)
|
|
(when (< 3000 s5-0)
|
|
(spawn-with-cspace (-> this warning-spark-part) (-> this node-list data 3))
|
|
(when (not (-> this firework-sound-played))
|
|
(set! (-> this firework-sound-played) #t)
|
|
(sound-play "w-bomb-firewrks")
|
|
)
|
|
)
|
|
(let* ((v1-27 (* s5-0 s5-0))
|
|
(a0-10 3600)
|
|
(v1-28 (- (* a0-10 a0-10) v1-27))
|
|
)
|
|
(when (< v1-28 (-> this next-countdown-tick))
|
|
(let ((a0-14 540))
|
|
(set! (-> this next-countdown-tick) (the-as time-frame (- v1-28 (mod v1-28 (* a0-14 a0-14)))))
|
|
)
|
|
(let ((s5-2 (new 'stack-no-clear 'vector)))
|
|
(vector<-cspace! s5-2 (-> this node-list data 7))
|
|
(spawn (-> this warning-glow-part) s5-2)
|
|
(vector<-cspace! s5-2 (-> this node-list data 6))
|
|
(spawn (-> this warning-glow-part) s5-2)
|
|
(vector<-cspace! s5-2 (-> this node-list data 5))
|
|
(spawn (-> this warning-glow-part) s5-2)
|
|
(vector<-cspace! s5-2 (-> this node-list data 4))
|
|
(spawn (-> this warning-glow-part) s5-2)
|
|
)
|
|
(sound-play "w-bomb-timer")
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate smoke (widow-bomb)
|
|
:virtual #t
|
|
:event widow-bomb-handler
|
|
:enter (behavior ()
|
|
(set-time! (-> self state-time))
|
|
(let* ((v1-2 3600)
|
|
(v1-3 (* v1-2 v1-2))
|
|
(a0-0 540)
|
|
)
|
|
(set! (-> self next-countdown-tick) (the-as time-frame (- v1-3 (mod v1-3 (* a0-0 a0-0)))))
|
|
)
|
|
(set! (-> self steam-sound) (new-sound-id))
|
|
)
|
|
:exit (behavior ()
|
|
(sound-stop (-> self steam-sound))
|
|
)
|
|
:trans (behavior ()
|
|
(widow-bomb-method-32 self)
|
|
(ja :num! (loop!))
|
|
)
|
|
:code sleep-code
|
|
:post ja-post
|
|
)
|
|
|
|
;; definition for method 33 of type widow-bomb
|
|
(defmethod widow-bomb-method-33 ((this widow-bomb))
|
|
(let ((gp-0 (new 'stack-no-clear 'matrix)))
|
|
(set-vector! (-> gp-0 vector 1) 0.0 1.0 0.0 1.0)
|
|
(vector-! (-> gp-0 vector 2) (the-as vector (-> this impact trans)) (-> this impact trans 1))
|
|
(vector-cross! (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1) (-> gp-0 vector 2))
|
|
(vector-normalize! (the-as vector (-> gp-0 vector)) 1.0)
|
|
(vector-cross! (-> gp-0 vector 2) (the-as vector (-> gp-0 vector)) (-> gp-0 vector 1))
|
|
(vector<-cspace! (-> gp-0 trans) (-> this node-list data 3))
|
|
(set! (-> gp-0 vector 0 w) 0.0)
|
|
(set! (-> gp-0 vector 1 w) 0.0)
|
|
(set! (-> gp-0 vector 2 w) 0.0)
|
|
(set! (-> gp-0 trans w) 1.0)
|
|
(spawn-with-matrix (-> this skid-part) gp-0)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (widow-bomb)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('touch 'bonk)
|
|
(if (< (-> self which-trajectory) 2)
|
|
(send-event
|
|
*target*
|
|
'attack
|
|
#f
|
|
(static-attack-info ((id (new-attack-id)) (shove-up (meters 1)) (shove-back (meters 3))))
|
|
)
|
|
)
|
|
)
|
|
(('impact-control)
|
|
(if (and (!= proc self) (!= proc (-> self parent)))
|
|
(send-event proc 'bomb-hit (-> self root trans) 1)
|
|
)
|
|
)
|
|
(('fizzle)
|
|
(let* ((gp-0 (current-time))
|
|
(f30-0 600.0)
|
|
(v1-17 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
|
(v1-18 (the-as number (logior #x3f800000 v1-17)))
|
|
(v0-0 (the-as object (- gp-0 (the-as time-frame (the int (* f30-0 (+ -1.0 (the-as float v1-18))))))))
|
|
)
|
|
(set! (-> self fizzle-timer) (the-as time-frame v0-0))
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(widow-bomb-handler proc argc message block)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(set-time! (-> self state-time))
|
|
(initialize (-> self impact) self 3 4096.0 (collide-spec backgnd obstacle hit-by-others-list player-list))
|
|
)
|
|
:exit (behavior ()
|
|
(when (nonzero? (-> self fizzle-timer))
|
|
(let* ((gp-0 (current-time))
|
|
(f30-0 600.0)
|
|
(v1-4 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
|
(v1-5 (the-as number (logior #x3f800000 v1-4)))
|
|
)
|
|
(set! (-> self fizzle-timer) (- gp-0 (the-as time-frame (the int (* f30-0 (+ -1.0 (the-as float v1-5)))))))
|
|
)
|
|
)
|
|
)
|
|
:trans (behavior ()
|
|
(let ((v1-0 (-> self which-trajectory)))
|
|
(cond
|
|
((zero? v1-0)
|
|
(+! (-> self x-rotate) 4369.067)
|
|
(+! (-> self y-rotate) 3458.8445)
|
|
)
|
|
((= v1-0 1)
|
|
(+! (-> self x-rotate) 7281.778)
|
|
(set! (-> self y-rotate) 0.0)
|
|
)
|
|
(else
|
|
(seek! (-> self x-rotate) 65353.957 7281.778)
|
|
)
|
|
)
|
|
)
|
|
(if (< 65536.0 (-> self x-rotate))
|
|
(+! (-> self x-rotate) -65536.0)
|
|
)
|
|
(if (< 65536.0 (-> self y-rotate))
|
|
(+! (-> self y-rotate) -65536.0)
|
|
)
|
|
(widow-bomb-method-34 self)
|
|
(when (< (-> self root scale x) 1.0)
|
|
(let ((f0-17 (fmin 1.0 (+ 0.025 (-> self root scale x)))))
|
|
(set-vector! (-> self root scale) f0-17 f0-17 f0-17 1.0)
|
|
)
|
|
)
|
|
(cond
|
|
((time-elapsed? (-> self state-time) (the int (-> self traj time)))
|
|
(let ((v1-29 (-> self which-trajectory)))
|
|
(cond
|
|
((zero? v1-29)
|
|
(set! (-> self which-trajectory) 1)
|
|
(compute-trans-at-time
|
|
(-> self traj)
|
|
(fmin (-> self traj time) (the float (- (current-time) (-> self state-time))))
|
|
(-> self root trans)
|
|
)
|
|
(set-time! (-> self state-time))
|
|
(let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (the-as vector (-> self traj)))))
|
|
(set! (-> gp-1 y) 0.0)
|
|
(vector-normalize! gp-1 12288.0)
|
|
(vector+! gp-1 gp-1 (-> self root trans))
|
|
(setup-from-to-duration-and-height! (-> self traj) (-> self root trans) gp-1 75.0 4096.0)
|
|
)
|
|
(widow-bomb-method-33 self)
|
|
(sound-play "w-bomb-part1")
|
|
)
|
|
((= v1-29 1)
|
|
(set! (-> self which-trajectory) 2)
|
|
(compute-trans-at-time
|
|
(-> self traj)
|
|
(fmin (-> self traj time) (the float (- (current-time) (-> self state-time))))
|
|
(-> self root trans)
|
|
)
|
|
(set-time! (-> self state-time))
|
|
(let ((gp-4 (vector-! (new 'stack-no-clear 'vector) (-> self root trans) (the-as vector (-> self traj)))))
|
|
(set! (-> gp-4 y) 0.0)
|
|
(vector-normalize! gp-4 4096.0)
|
|
(vector+! gp-4 gp-4 (-> self root trans))
|
|
(setup-from-to-duration-and-height! (-> self traj) (-> self root trans) gp-4 37.5 1024.0)
|
|
)
|
|
(widow-bomb-method-33 self)
|
|
(sound-play "w-bomb-part2")
|
|
)
|
|
((= v1-29 2)
|
|
(compute-trans-at-time
|
|
(-> self traj)
|
|
(fmin (-> self traj time) (the float (- (current-time) (-> self state-time))))
|
|
(-> self root trans)
|
|
)
|
|
(set! (-> self which-trajectory) 3)
|
|
(let* ((gp-6 (-> self state-time))
|
|
(f30-0 300.0)
|
|
(v1-77 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
|
|
(v1-78 (the-as number (logior #x3f800000 v1-77)))
|
|
)
|
|
(set! (-> self state-time) (+ gp-6 (the int (* f30-0 (+ -1.0 (the-as float v1-78))))))
|
|
)
|
|
(widow-bomb-method-33 self)
|
|
)
|
|
(else
|
|
(go-virtual smoke)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
((< (-> self which-trajectory) 3)
|
|
(compute-trans-at-time
|
|
(-> self traj)
|
|
(fmin (-> self traj time) (the float (- (current-time) (-> self state-time))))
|
|
(-> self root trans)
|
|
)
|
|
(when (and (zero? (-> self which-trajectory))
|
|
(not (time-elapsed? (-> self state-time) (the int (* 0.75 (-> self traj time)))))
|
|
)
|
|
(vector+float*! (-> self launch-pos) (-> self launch-pos) (-> self launch) (-> self clock time-adjust-ratio))
|
|
(vector-lerp!
|
|
(-> self root trans)
|
|
(-> self launch-pos)
|
|
(-> self root trans)
|
|
(parameter-ease-sin-clamp
|
|
(* 1.3333334 (/ (the float (- (current-time) (-> self state-time))) (-> self traj time)))
|
|
)
|
|
)
|
|
)
|
|
(spawn-with-cspace (-> self trail-part) (joint-node widow-bomb-lod0-jg main))
|
|
(when (zero? (-> self which-trajectory))
|
|
(update-from-cspace (-> self impact))
|
|
(when (time-elapsed? (-> self state-time) (seconds 0.05))
|
|
(let ((f0-42 (impact-control-method-11
|
|
(-> self impact)
|
|
(new 'stack-no-clear 'collide-query)
|
|
self
|
|
(new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1)
|
|
)
|
|
)
|
|
)
|
|
(if (< 0.0 f0-42)
|
|
(go-virtual explode)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(ja :num! (loop!))
|
|
)
|
|
:code sleep-code
|
|
:post (behavior ()
|
|
(transform-post)
|
|
(do-push-aways (-> self root))
|
|
)
|
|
)
|
|
|
|
;; definition for method 10 of type widow-bomb
|
|
(defmethod deactivate ((this widow-bomb))
|
|
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
|
(if (nonzero? (-> this explode-part))
|
|
(kill-and-free-particles (-> this explode-part))
|
|
)
|
|
(if (nonzero? (-> this trail-part))
|
|
(kill-and-free-particles (-> this trail-part))
|
|
)
|
|
(if (nonzero? (-> this warning-glow-part))
|
|
(kill-and-free-particles (-> this warning-glow-part))
|
|
)
|
|
(if (nonzero? (-> this warning-spark-part))
|
|
(kill-and-free-particles (-> this warning-spark-part))
|
|
)
|
|
(if (nonzero? (-> this skid-part))
|
|
(kill-and-free-particles (-> this warning-spark-part))
|
|
)
|
|
(call-parent-method this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 7 of type widow-bomb
|
|
(defmethod relocate ((this widow-bomb) (offset int))
|
|
(if (nonzero? (-> this explode-part))
|
|
(&+! (-> this explode-part) offset)
|
|
)
|
|
(if (nonzero? (-> this trail-part))
|
|
(&+! (-> this trail-part) offset)
|
|
)
|
|
(if (nonzero? (-> this warning-glow-part))
|
|
(&+! (-> this warning-glow-part) offset)
|
|
)
|
|
(if (nonzero? (-> this warning-spark-part))
|
|
(&+! (-> this warning-spark-part) offset)
|
|
)
|
|
(if (nonzero? (-> this skid-part))
|
|
(&+! (-> this skid-part) offset)
|
|
)
|
|
(if (nonzero? (-> this spin-jm))
|
|
(&+! (-> this spin-jm) offset)
|
|
)
|
|
(call-parent-method this offset)
|
|
)
|
|
|
|
;; definition for function widow-bomb-reaction
|
|
(defbehavior widow-bomb-reaction widow ((arg0 control-info) (arg1 collide-query) (arg2 vector) (arg3 vector))
|
|
(cshape-reaction-update-state arg0 arg1 arg3)
|
|
(vector--float*!
|
|
arg2
|
|
arg3
|
|
(-> arg0 surface-normal)
|
|
(* (vector-dot arg3 (-> arg0 surface-normal)) (rand-vu-float-range 1.2 1.4))
|
|
)
|
|
(send-event (-> arg0 process) 'impact-control)
|
|
(-> arg0 status)
|
|
)
|
|
|
|
;; definition for function widow-bomb-init-by-other
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defbehavior widow-bomb-init-by-other widow-bomb ((arg0 vector) (arg1 vector) (arg2 float) (arg3 float) (arg4 vector))
|
|
(let ((s1-0 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s1-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s1-0 reaction) widow-bomb-reaction)
|
|
(set! (-> s1-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec enemy))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec backgnd jak bot hit-by-others-list player-list))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid))
|
|
(set! (-> v1-6 transform-index) 3)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 0.0 0.0 4096.0)
|
|
(set! (-> s1-0 total-prims) (the-as uint 1))
|
|
(set! (-> s1-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s1-0 nav-radius) (* 0.75 (-> s1-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s1-0 root-prim)))
|
|
(set! (-> s1-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s1-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> s1-0 event-self) 'impact-control)
|
|
(set! (-> self root) s1-0)
|
|
)
|
|
(set! (-> self root trans quad) (-> arg0 quad))
|
|
(initialize-skeleton
|
|
self
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-widow-bomb" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> self part) (create-launch-control (-> *part-group-id-table* 712) self))
|
|
(set! (-> self explode-part) (create-launch-control (-> *part-group-id-table* 711) self))
|
|
(set! (-> self trail-part) (create-launch-control (-> *part-group-id-table* 722) self))
|
|
(set! (-> self warning-glow-part) (create-launch-control (-> *part-group-id-table* 724) self))
|
|
(set! (-> self warning-spark-part) (create-launch-control (-> *part-group-id-table* 723) self))
|
|
(set! (-> self skid-part) (create-launch-control (-> *part-group-id-table* 725) self))
|
|
(set-vector! (-> self root scale) 0.5 0.5 0.5 1.0)
|
|
(if (< (-> arg0 y) (-> arg1 y))
|
|
(set! arg3 (+ arg3 (- (-> arg1 y) (-> arg0 y))))
|
|
)
|
|
(let ((a3-3 (* 0.0000061035157 (vector-vector-xz-distance arg0 arg1) arg2)))
|
|
(setup-from-to-duration-and-height! (-> self traj) arg0 arg1 a3-3 arg3)
|
|
)
|
|
(let ((v1-42 (new 'stack-no-clear 'vector)))
|
|
(vector-! v1-42 arg1 arg0)
|
|
(set! (-> v1-42 y) 0.0)
|
|
(let ((f30-1 (atan (-> v1-42 x) (-> v1-42 z))))
|
|
(quaternion-set! (-> self root quat) 0.0 (sin (/ f30-1 2)) 0.0 (cos (/ f30-1 2)))
|
|
)
|
|
)
|
|
(set! (-> self which-trajectory) 0)
|
|
(set! (-> self x-rotate) 0.0)
|
|
(set! (-> self y-rotate) 0.0)
|
|
(logclear! (-> self mask) (process-mask actor-pause))
|
|
(set! (-> self spin-jm) (new 'process 'joint-mod (joint-mod-mode joint-set*) self 3))
|
|
(set! (-> self firework-sound-played) #f)
|
|
(set! (-> self steam-sound) (new 'static 'sound-id))
|
|
(set! (-> self launch-pos quad) (-> self root trans quad))
|
|
(set! (-> self launch quad) (-> arg4 quad))
|
|
(set! (-> self fizzle-timer) 0)
|
|
(go-virtual idle)
|
|
(none)
|
|
)
|
|
|
|
;; definition of type heart-mar
|
|
(deftype heart-mar (process-drawable)
|
|
((root collide-shape-moving :override)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type heart-mar
|
|
(defmethod inspect ((this heart-mar))
|
|
(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-heart-mar heart-mar heart-mar-lod0-jg heart-mar-idle-ja
|
|
((heart-mar-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 4)
|
|
:origin-joint-index 3
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (heart-mar)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('frame)
|
|
(let ((v1-3 (ja-group)))
|
|
(when (not (and v1-3 (= v1-3 heart-mar-grab-success-ja)))
|
|
(ja :group! heart-mar-grab-success-ja :num! min)
|
|
(set! (-> self draw bounds w) 81920.0)
|
|
(setup-masks (-> self draw) 2 0)
|
|
)
|
|
)
|
|
(if (and (< (ja-aframe-num 0) 775.0) (>= (the-as float (-> block param 0)) 775.0))
|
|
(setup-masks (-> self draw) 0 4)
|
|
)
|
|
(if (>= (the-as float (-> block param 0)) 834.0)
|
|
(deactivate self)
|
|
)
|
|
(set-tombboss-gem-light! (lerp-scale 1.0 0.0 (ja-aframe-num 0) 760.0 800.0))
|
|
(ja :num-func num-func-identity :frame-num (ja-aframe (the-as float (-> block param 0)) 0))
|
|
(let ((v0-9 (the-as object (logclear (-> self mask) (process-mask sleep-code)))))
|
|
(set! (-> self mask) (the-as process-mask v0-9))
|
|
v0-9
|
|
)
|
|
)
|
|
(('grab-done)
|
|
(deactivate self)
|
|
)
|
|
)
|
|
)
|
|
:code (behavior ()
|
|
(until #f
|
|
(logior! (-> self mask) (process-mask sleep-code))
|
|
(suspend)
|
|
(ja-post)
|
|
)
|
|
#f
|
|
)
|
|
)
|
|
|
|
;; definition for function heart-mar-init-by-other
|
|
;; INFO: Used lq/sq
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defbehavior heart-mar-init-by-other heart-mar ((arg0 vector))
|
|
(set! (-> self root) (the-as collide-shape-moving (new 'process 'trsqv)))
|
|
(set! (-> self root trans quad) (-> arg0 quad))
|
|
(initialize-skeleton
|
|
self
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-heart-mar" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(setup-masks (-> self draw) 0 2)
|
|
(quaternion-set! (-> self root quat) 0.0 1.0 0.0 0.0)
|
|
(set! (-> self root pause-adjust-distance) 245760.0)
|
|
(ja-post)
|
|
(add-connection *part-engine* self 3 self 3253 (new 'static 'vector :w 819200.0))
|
|
(set! (-> self draw light-index) (the-as uint 17))
|
|
(set-tombboss-gem-light! 1.0)
|
|
(go-virtual idle)
|
|
(none)
|
|
)
|
|
|
|
;; definition of type tomb-boss-pillar
|
|
(deftype tomb-boss-pillar (process-drawable)
|
|
((root collide-shape-moving :override)
|
|
(explode-part sparticle-launch-control)
|
|
(segs-shot int32)
|
|
(last-pillar-hit time-frame)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
break-it
|
|
broken
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type tomb-boss-pillar
|
|
(defmethod inspect ((this tomb-boss-pillar))
|
|
(when (not this)
|
|
(set! this this)
|
|
(goto cfg-4)
|
|
)
|
|
(let ((t9-0 (method-of-type process-drawable inspect)))
|
|
(t9-0 this)
|
|
)
|
|
(format #t "~2Texplode-part: ~A~%" (-> this explode-part))
|
|
(format #t "~2Tsegs-shot: ~D~%" (-> this segs-shot))
|
|
(format #t "~2Tlast-pillar-hit: ~D~%" (-> this last-pillar-hit))
|
|
(label cfg-4)
|
|
this
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup skel-tomb-boss-pillar tomb-boss-pillar tomb-boss-pillar-lod0-jg tomb-boss-pillar-idle-ja
|
|
((tomb-boss-pillar-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 4 0 9)
|
|
)
|
|
|
|
;; definition for function damage-pillar
|
|
(defbehavior damage-pillar tomb-boss-pillar ()
|
|
(case (-> self segs-shot)
|
|
((1)
|
|
(setup-masks (-> self draw) 0 2)
|
|
)
|
|
((2)
|
|
(setup-masks (-> self draw) 0 6)
|
|
)
|
|
((3)
|
|
(setup-masks (-> self draw) 0 14)
|
|
)
|
|
((4)
|
|
(setup-masks (-> self draw) 0 30)
|
|
)
|
|
((5)
|
|
(setup-masks (-> self draw) 0 62)
|
|
)
|
|
((6)
|
|
(setup-masks (-> self draw) 0 126)
|
|
)
|
|
((7)
|
|
(setup-masks (-> self draw) 0 254)
|
|
)
|
|
((8)
|
|
(setup-masks (-> self draw) 0 510)
|
|
)
|
|
((9)
|
|
(setup-masks (-> self draw) 0 1022)
|
|
)
|
|
((10)
|
|
(setup-masks (-> self draw) 0 2046)
|
|
)
|
|
((11)
|
|
(setup-masks (-> self draw) 0 4094)
|
|
)
|
|
((12)
|
|
(setup-masks (-> self draw) 0 8190)
|
|
)
|
|
((13)
|
|
(setup-masks (-> self draw) 0 #x3ffe)
|
|
)
|
|
((14)
|
|
(setup-masks (-> self draw) 0 #x7ffe)
|
|
)
|
|
((15)
|
|
(setup-masks (-> self draw) 0 #xfffe)
|
|
)
|
|
((16)
|
|
(setup-masks (-> self draw) 0 #x1fffe)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for function tomb-boss-pillar-shrink-collision
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior tomb-boss-pillar-shrink-collision tomb-boss-pillar ()
|
|
(let ((v1-1 (the-as collide-shape-prim-group (-> self root root-prim))))
|
|
(let ((a0-1 (-> v1-1 child 0)))
|
|
(set! (-> a0-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> a0-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(let ((v1-3 (-> v1-1 child 1)))
|
|
(set! (-> v1-3 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-3 prim-core collide-with) (collide-spec jak bot player-list))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate broken (tomb-boss-pillar)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(set! (-> self draw bounds w) 36864.0)
|
|
(ja :group! tomb-boss-pillar-break-ja :num! max)
|
|
(tomb-boss-pillar-shrink-collision)
|
|
(ja-post)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate break-it (tomb-boss-pillar)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(set! (-> self draw bounds w) 245760.0)
|
|
(set-time! (-> self state-time))
|
|
)
|
|
:trans (behavior ()
|
|
(if (not (time-elapsed? (-> self state-time) (seconds 1)))
|
|
(spawn-with-cspace (-> self explode-part) (joint-node tomb-boss-pillar-lod0-jg a))
|
|
)
|
|
(let ((v1-9 (ja-group)))
|
|
(cond
|
|
((and v1-9 (= v1-9 tomb-boss-pillar-break-ja))
|
|
(ja :num! (seek!))
|
|
(if (ja-done? 0)
|
|
(go-virtual broken)
|
|
)
|
|
)
|
|
(else
|
|
(ja :group! tomb-boss-pillar-break-ja :num! min)
|
|
(activate! *camera-smush-control* 819.2 37 210 1.0 0.995 (-> self clock))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
:post ja-post
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (tomb-boss-pillar)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('attack)
|
|
(let ((gp-0 proc))
|
|
(when (if (type? gp-0 widow-shot)
|
|
gp-0
|
|
)
|
|
(+! (-> self segs-shot) 1)
|
|
(damage-pillar)
|
|
(cond
|
|
((>= (-> self segs-shot) 16)
|
|
(go-virtual break-it)
|
|
)
|
|
((time-elapsed? (-> self last-pillar-hit) (seconds 2))
|
|
(process-spawn
|
|
part-tracker
|
|
:init part-tracker-init
|
|
(-> *part-group-id-table* 718)
|
|
0
|
|
#f
|
|
#f
|
|
self
|
|
0
|
|
:to *entity-pool*
|
|
)
|
|
(set-time! (-> self last-pillar-hit))
|
|
(sound-play "pillar-hit" :position (-> self root trans))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(let ((v1-3 (-> (the-as collide-shape-prim-group (-> self root root-prim)) child 1)))
|
|
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(set-time! (-> self state-time))
|
|
)
|
|
:exit (behavior ()
|
|
(let ((v1-2 (-> self entity extra perm)))
|
|
(logior! (-> v1-2 status) (entity-perm-status bit-5))
|
|
(set! (-> v1-2 user-object 1) (-> self segs-shot))
|
|
)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; definition for method 10 of type tomb-boss-pillar
|
|
(defmethod deactivate ((this tomb-boss-pillar))
|
|
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
|
|
(if (nonzero? (-> this explode-part))
|
|
(kill-and-free-particles (-> this explode-part))
|
|
)
|
|
(call-parent-method this)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 7 of type tomb-boss-pillar
|
|
(defmethod relocate ((this tomb-boss-pillar) (offset int))
|
|
(if (nonzero? (-> this explode-part))
|
|
(&+! (-> this explode-part) offset)
|
|
)
|
|
(call-parent-method this offset)
|
|
)
|
|
|
|
;; definition for method 11 of type tomb-boss-pillar
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! ((this tomb-boss-pillar) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
|
|
(set! (-> s4-0 total-prims) (the-as uint 3))
|
|
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> s3-0 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> s3-0 prim-core action) (collide-action solid))
|
|
(set! (-> s3-0 transform-index) 3)
|
|
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0)
|
|
(set! (-> s4-0 root-prim) s3-0)
|
|
)
|
|
(let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
|
|
(set! (-> v1-9 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-9 prim-core action) (collide-action solid))
|
|
(set! (-> v1-9 transform-index) 3)
|
|
(set-vector! (-> v1-9 local-sphere) 0.0 0.0 0.0 16384.0)
|
|
)
|
|
(let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-11 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-11 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-11 prim-core action) (collide-action solid))
|
|
(set! (-> v1-11 transform-index) 3)
|
|
(set-vector! (-> v1-11 local-sphere) 0.0 0.0 0.0 8192.0)
|
|
)
|
|
(set! (-> s4-0 nav-radius) 8192.0)
|
|
(let ((v1-13 (-> s4-0 root-prim)))
|
|
(set! (-> s4-0 backup-collide-as) (-> v1-13 prim-core collide-as))
|
|
(set! (-> s4-0 backup-collide-with) (-> v1-13 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s4-0))
|
|
)
|
|
(process-drawable-from-entity! this arg0)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-tomb-boss-pillar" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(transform-post)
|
|
(set! (-> this explode-part) (create-launch-control (-> *part-group-id-table* 719) this))
|
|
(set! (-> this last-pillar-hit) 0)
|
|
(let ((v1-23 (-> this entity extra perm)))
|
|
(logior! (-> v1-23 status) (entity-perm-status bit-5))
|
|
(set! (-> this segs-shot) (the-as int (-> v1-23 user-object 1)))
|
|
)
|
|
(damage-pillar)
|
|
(if (>= (-> this segs-shot) 16)
|
|
(go (method-of-object this broken))
|
|
(go (method-of-object this idle))
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition of type tomb-boss-firepot
|
|
(deftype tomb-boss-firepot (process-drawable)
|
|
((root collide-shape-moving :override)
|
|
)
|
|
(:state-methods
|
|
idle
|
|
break-it
|
|
broken
|
|
)
|
|
)
|
|
|
|
;; definition for method 3 of type tomb-boss-firepot
|
|
(defmethod inspect ((this tomb-boss-firepot))
|
|
(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-tomb-boss-firepot tomb-boss-firepot tomb-boss-firepot-lod0-jg tomb-boss-firepot-idle-ja
|
|
((tomb-boss-firepot-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 4 0 9)
|
|
)
|
|
|
|
;; definition for function tomb-boss-firepot-shrink-collision
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defbehavior tomb-boss-firepot-shrink-collision tomb-boss-firepot ()
|
|
(let ((v1-1 (the-as collide-shape-prim-group (-> self root root-prim))))
|
|
(let ((a0-1 (-> v1-1 child 0)))
|
|
(set! (-> a0-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> a0-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(let ((v1-3 (-> v1-1 child 1)))
|
|
(set! (-> v1-3 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-3 prim-core collide-with) (collide-spec jak bot player-list))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate broken (tomb-boss-firepot)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(set! (-> self draw bounds w) 36864.0)
|
|
(ja :group! tomb-boss-firepot-break-ja :num! max)
|
|
(tomb-boss-firepot-shrink-collision)
|
|
(ja-post)
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate break-it (tomb-boss-firepot)
|
|
:virtual #t
|
|
:enter (behavior ()
|
|
(process-entity-status! self (entity-perm-status subtask-complete) #t)
|
|
(tomb-boss-firepot-shrink-collision)
|
|
(set! (-> self draw bounds w) 245760.0)
|
|
(ja :group! tomb-boss-firepot-break-ja :num! min)
|
|
(let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000)))
|
|
(when gp-1
|
|
(let ((t9-4 (method-of-type part-tracker activate)))
|
|
(t9-4
|
|
(the-as part-tracker gp-1)
|
|
*entity-pool*
|
|
(symbol->string (-> part-tracker symbol))
|
|
(the-as pointer #x70004000)
|
|
)
|
|
)
|
|
(let ((t9-5 run-function-in-process)
|
|
(a0-4 gp-1)
|
|
(a1-4 part-tracker-init)
|
|
(a2-6 (-> *part-group-id-table* 720))
|
|
(a3-1 0)
|
|
(t0-0 #f)
|
|
(t1-0 #f)
|
|
(t2-0 #f)
|
|
(t3-0 *launch-matrix*)
|
|
)
|
|
(set! (-> t3-0 trans quad) (-> self root trans quad))
|
|
((the-as (function object object object object object object object object none) t9-5)
|
|
a0-4
|
|
a1-4
|
|
a2-6
|
|
a3-1
|
|
t0-0
|
|
t1-0
|
|
t2-0
|
|
t3-0
|
|
)
|
|
)
|
|
(-> gp-1 ppointer)
|
|
)
|
|
)
|
|
)
|
|
:trans (behavior ()
|
|
(ja :num! (seek!))
|
|
(if (ja-done? 0)
|
|
(go-virtual broken)
|
|
)
|
|
)
|
|
:code sleep-code
|
|
:post ja-post
|
|
)
|
|
|
|
;; failed to figure out what this is:
|
|
(defstate idle (tomb-boss-firepot)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
|
|
(case message
|
|
(('attack)
|
|
(let ((gp-0 proc))
|
|
(when (if (type? gp-0 widow-shot)
|
|
(the-as widow-shot gp-0)
|
|
)
|
|
(let ((v1-2 (the-as object (-> block param 1)))
|
|
(gp-1 (new 'stack-no-clear 'vector))
|
|
)
|
|
(cond
|
|
((logtest? (attack-mask attacker-velocity) (-> (the-as attack-info v1-2) mask))
|
|
(set! (-> gp-1 quad) (-> (the-as attack-info v1-2) attacker-velocity quad))
|
|
)
|
|
(else
|
|
(let* ((a3-1 (the-as object (-> block param 0)))
|
|
(a1-4 (-> (the-as touching-shapes-entry a3-1) head))
|
|
)
|
|
(get-intersect-point gp-1 a1-4 (-> self root) (the-as touching-shapes-entry a3-1))
|
|
)
|
|
(vector-! gp-1 (-> self root trans) gp-1)
|
|
)
|
|
)
|
|
(let ((s5-1 (quaternion->matrix (new 'stack-no-clear 'matrix) (-> self root quat))))
|
|
(vector-flatten! gp-1 gp-1 (-> s5-1 vector 1))
|
|
(when (!= (vector-normalize-ret-len! gp-1 1.0) 0.0)
|
|
(set! (-> s5-1 vector 2 quad) (-> gp-1 quad))
|
|
(vector-cross! (the-as vector (-> s5-1 vector)) (-> s5-1 vector 1) (-> s5-1 vector 2))
|
|
(matrix->quaternion (-> self root quat) s5-1)
|
|
)
|
|
)
|
|
)
|
|
(go-virtual break-it)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:enter (behavior ()
|
|
(let ((v1-3 (-> (the-as collide-shape-prim-group (-> self root root-prim)) child 1)))
|
|
(set! (-> v1-3 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-3 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
)
|
|
:code sleep-code
|
|
)
|
|
|
|
;; definition for method 11 of type tomb-boss-firepot
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! ((this tomb-boss-firepot) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
|
|
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
|
|
(set! (-> s4-0 total-prims) (the-as uint 3))
|
|
(set! (-> s3-0 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> s3-0 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> s3-0 prim-core action) (collide-action solid))
|
|
(set! (-> s3-0 transform-index) 5)
|
|
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0)
|
|
(set! (-> s4-0 root-prim) s3-0)
|
|
)
|
|
(let ((v1-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-9 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-9 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-9 prim-core action) (collide-action solid))
|
|
(set! (-> v1-9 transform-index) 5)
|
|
(set-vector! (-> v1-9 local-sphere) 0.0 0.0 0.0 16384.0)
|
|
)
|
|
(let ((v1-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
|
|
(set! (-> v1-11 prim-core collide-as) (collide-spec obstacle))
|
|
(set! (-> v1-11 prim-core collide-with) (collide-spec jak bot player-list))
|
|
(set! (-> v1-11 prim-core action) (collide-action solid))
|
|
(set! (-> v1-11 transform-index) 5)
|
|
(set-vector! (-> v1-11 local-sphere) 0.0 0.0 0.0 16384.0)
|
|
)
|
|
(set! (-> s4-0 nav-radius) 8192.0)
|
|
(let ((v1-13 (-> s4-0 root-prim)))
|
|
(set! (-> s4-0 backup-collide-as) (-> v1-13 prim-core collide-as))
|
|
(set! (-> s4-0 backup-collide-with) (-> v1-13 prim-core collide-with))
|
|
)
|
|
(set! (-> this root) (the-as collide-shape-moving s4-0))
|
|
)
|
|
(process-drawable-from-entity! this arg0)
|
|
(initialize-skeleton
|
|
this
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-tomb-boss-firepot" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(set! (-> this root pause-adjust-distance) 245760.0)
|
|
(transform-post)
|
|
(if (and (-> this entity) (logtest? (-> this entity extra perm status) (entity-perm-status subtask-complete)))
|
|
(go (method-of-object this broken))
|
|
(go (method-of-object this idle))
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 15 of type hud-widow
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod draw ((this hud-widow))
|
|
(set-hud-piece-position! (-> this sprites 1) (the int (+ 462.0 (* 130.0 (-> this offset)))) 350)
|
|
(set-as-offset-from! (the-as hud-sprite (-> this sprites)) (the-as vector4w (-> this sprites 1)) -32 0)
|
|
(set-as-offset-from! (-> this sprites 5) (the-as vector4w (-> this sprites 1)) -62 14)
|
|
(set-as-offset-from! (-> this sprites 6) (the-as vector4w (-> this sprites 1)) -32 14)
|
|
(let ((s5-0 (-> this values 0 current))
|
|
(f30-0 (* 0.01 (the float (-> this values 1 current))))
|
|
)
|
|
(set-as-offset-from! (-> this sprites 4) (the-as vector4w (-> this sprites 1)) -92 15)
|
|
(cond
|
|
((= s5-0 1)
|
|
(set! (-> this sprites 4 color x) 0)
|
|
(set! (-> this sprites 4 color y) 255)
|
|
(set! f30-0 (+ 2.0 f30-0))
|
|
)
|
|
((= s5-0 2)
|
|
(set! (-> this sprites 4 color y) 255)
|
|
(set! (-> this sprites 4 color x) 255)
|
|
(set! f30-0 (+ 1.0 f30-0))
|
|
)
|
|
((= s5-0 3)
|
|
(set! (-> this sprites 4 color x) 255)
|
|
(set! (-> this sprites 4 color y) 0)
|
|
0
|
|
)
|
|
(else
|
|
(set! f30-0 0.0)
|
|
)
|
|
)
|
|
(set! (-> this sprites 4 scale-x) (* -7.25 f30-0))
|
|
)
|
|
(let ((f30-1 (* 0.01 (the float (-> this values 2 current)))))
|
|
(set-as-offset-from! (-> this sprites 3) (the-as vector4w (-> this sprites 1)) -84 4)
|
|
(cond
|
|
((< f30-1 0.5)
|
|
(set! (-> this sprites 3 color x) 255)
|
|
(set! (-> this sprites 3 color y) (the int (lerp 0.0 255.0 (* 2.0 f30-1))))
|
|
)
|
|
(else
|
|
(set! (-> this sprites 3 color x) (the int (lerp 255.0 0.0 (* 2.0 (+ -0.5 f30-1)))))
|
|
(set! (-> this sprites 3 color y) 255)
|
|
)
|
|
)
|
|
(set! (-> this sprites 3 scale-x) (* -18.25 f30-1))
|
|
)
|
|
((method-of-type hud draw) this)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 17 of type hud-widow
|
|
;; WARN: Return type mismatch int vs none.
|
|
(defmethod init-callback ((this hud-widow))
|
|
(set! (-> this gui-id)
|
|
(add-process *gui-control* this (gui-channel hud-middle-right) (gui-action hidden) (-> this name) 81920.0 0)
|
|
)
|
|
(set! (-> this values 0 target) 1)
|
|
(set! (-> this values 1 target) 100)
|
|
(logior! (-> this flags) (hud-flags show))
|
|
(set! (-> this sprites 0 tex) (get-texture hud-bmech-health-01 level-default-minimap))
|
|
(set! (-> this sprites 0 flags) (the-as uint 4))
|
|
(set! (-> this sprites 1 tex) (get-texture hud-bmech-health-02 level-default-minimap))
|
|
(set! (-> this sprites 1 flags) (the-as uint 4))
|
|
(set! (-> this sprites 5 tex) (get-texture hud-bmech-health-03 level-default-minimap))
|
|
(set! (-> this sprites 5 scale-x) 0.5)
|
|
(set! (-> this sprites 5 flags) (the-as uint 4))
|
|
(set! (-> this sprites 6 tex) (get-texture hud-bmech-health-03 level-default-minimap))
|
|
(set! (-> this sprites 6 scale-x) 0.5)
|
|
(set! (-> this sprites 6 flags) (the-as uint 4))
|
|
(set! (-> this sprites 4 tex) (get-texture hud-bmech-health-04 level-default-minimap))
|
|
(set! (-> this sprites 4 scale-y) 3.25)
|
|
(set! (-> this sprites 4 color z) 0)
|
|
(set! (-> this sprites 4 flags) (the-as uint 4))
|
|
(set! (-> this sprites 3 tex) (get-texture hud-bmech-health-04 level-default-minimap))
|
|
(set! (-> this sprites 3 scale-y) 1.5)
|
|
(set! (-> this sprites 3 color z) 0)
|
|
(set! (-> this sprites 3 flags) (the-as uint 4))
|
|
0
|
|
(none)
|
|
)
|