Files
jak-project/test/decompiler/reference/jak2/levels/tomb/widow-extras_REF.gc
T

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)
)