Files
jak-project/test/decompiler/reference/jak1/levels/rolling/rolling-race-ring_REF.gc
T

1082 lines
36 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type race-ring
(deftype race-ring (process-drawable)
((rot-y float)
(face-vec vector :inline)
(part-track handle)
(keep-part-track-alive symbol)
(timeout time-frame)
(alt-actor entity-actor)
(alt-task uint8)
(cyl cylinder-flat :inline)
(old-hips vector :inline)
)
(:states
race-ring-active
race-ring-idle
race-ring-wait
)
)
;; definition for method 3 of type race-ring
(defmethod inspect ((this race-ring))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 this)
)
(format #t "~T~Trot-y: ~f~%" (-> this rot-y))
(format #t "~T~Tface-vec: #<vector @ #x~X>~%" (-> this face-vec))
(format #t "~T~Tpart-track: ~D~%" (-> this part-track))
(format #t "~T~Tkeep-part-track-alive: ~A~%" (-> this keep-part-track-alive))
(format #t "~T~Ttimeout: ~D~%" (-> this timeout))
(format #t "~T~Talt-actor: ~A~%" (-> this alt-actor))
(format #t "~T~Talt-task: ~D~%" (-> this alt-task))
(format #t "~T~Tcyl: #<cylinder-flat @ #x~X>~%" (-> this cyl))
(format #t "~T~Told-hips: #<vector @ #x~X>~%" (-> this old-hips))
this
)
;; failed to figure out what this is:
(defpartgroup group-rolling-ring
:id 457
:linger-duration (seconds 0)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 1773 :fade-after (meters 100) :falloff-to (meters 100))
(sp-item 1774 :fade-after (meters 80))
(sp-item 1775 :flags (is-3d))
(sp-item 1776 :flags (is-3d))
)
)
;; failed to figure out what this is:
(defpart 1773
:init-specs ((:texture (starflash effects))
(:num 2.0 2.0)
(:scale-x (meters 1) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0 1 64.0)
(:g 0.0)
(:b 64.0 1 64.0)
(:a 64.0)
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:fade-a -1.4222221)
(:timer (seconds 0.14))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 4.5))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1774
:init-specs ((:texture (starflash effects))
(:num 1.0)
(:scale-x (meters 1) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0 1 64.0)
(:g 0.0)
(:b 64.0 1 64.0)
(:a 64.0)
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:fade-a -1.4222221)
(:timer (seconds 0.14))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 4.5))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1775
:init-specs ((:texture (water-ring effects))
(:num 1.0)
(:scale-x (meters 10))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees -1) (degrees 2))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 96.0 32.0)
(:fade-a -8.533334)
(:timer (seconds 0.035))
(:flags (bit2 bit3))
)
)
;; failed to figure out what this is:
(defpart 1776
:init-specs ((:texture (middot effects))
(:num 1.0)
(:scale-x (meters 12))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees 0))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:timer (seconds 0.017))
(:flags (bit2 bit3))
)
)
;; failed to figure out what this is:
(defpartgroup group-rolling-spawn-ring
:id 458
:duration (seconds 0.017)
:linger-duration (seconds 0.47)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 1777 :fade-after (meters 100) :falloff-to (meters 100))
(sp-item 1778 :flags (is-3d))
(sp-item 1779 :flags (is-3d))
)
)
;; failed to figure out what this is:
(defpart 1777
:init-specs ((:texture (starflash effects))
(:num 32.0)
(:scale-x (meters 1) (meters 3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0 1 64.0)
(:g 0.0)
(:b 64.0 1 64.0)
(:a 0.0 63 1.0)
(:vel-y (meters 0.03))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:timer (seconds 0.5))
(:flags (bit3))
(:next-time (seconds 0.067) (seconds 0.065))
(:next-launcher 1780)
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 0))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1780
:init-specs ((:r 64.0 1 64.0)
(:g 0.0)
(:b 64.0 1 64.0)
(:a 0.0 63 1.0)
(:next-time (seconds 0.067) (seconds 0.065))
(:next-launcher 1780)
)
)
;; failed to figure out what this is:
(defpart 1778
:init-specs ((:texture (water-ring effects))
(:num 1.0)
(:scale-x (meters 0))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees -1) (degrees 2))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 96.0 32.0)
(:scalevel-x (meters 0.06666667))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 0.5))
(:flags (bit2 bit3 left-multiply-quat))
(:next-time (seconds 0.017))
(:next-launcher 1781)
)
)
;; failed to figure out what this is:
(defpart 1781
:init-specs ((:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:next-time (seconds 0.017))
(:next-launcher 1781)
)
)
;; failed to figure out what this is:
(defpart 1779
:init-specs ((:texture (middot effects))
(:num 1.0)
(:scale-x (meters 0))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees 0))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:scalevel-x (meters 0.08))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 0.5))
(:flags (bit2 bit3 left-multiply-quat))
(:next-time (seconds 0.017))
(:next-launcher 1782)
)
)
;; failed to figure out what this is:
(defpart 1782
:init-specs ((:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:next-time (seconds 0.017))
(:next-launcher 1782)
)
)
;; failed to figure out what this is:
(defpartgroup group-rolling-explode-ring
:id 459
:duration (seconds 0.017)
:linger-duration (seconds 0.5)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 1783 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1784 :flags (is-3d)))
)
;; failed to figure out what this is:
(defpart 1783
:init-specs ((:texture (starflash effects))
(:num 64.0)
(:scale-x (meters 1) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0 1 64.0)
(:g 0.0)
(:b 64.0 1 64.0)
(:a 32.0 96.0)
(:vel-y (meters 0.1) (meters 0.033333335))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:fade-a -0.85333335)
(:friction 0.9)
(:timer (seconds 0.5))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 4.5))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1784
:init-specs ((:texture (water-ring effects))
(:num 2.0)
(:scale-x (meters 10))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees -1) (degrees 2))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 128.0 1 127.0)
(:g 0.0)
(:b 128.0 1 127.0)
(:a 128.0)
(:scalevel-x (meters 0.06666667))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.85333335)
(:timer (seconds 0.5))
(:flags (bit2 bit3))
)
)
;; definition for function race-ring-set-particle-rotation-callback
;; INFO: Return type mismatch int vs none.
(defun race-ring-set-particle-rotation-callback ((arg0 part-tracker))
(let ((f0-0 (-> (the-as (pointer race-ring) (-> arg0 userdata)) 0 rot-y)))
(set! (-> *part-id-table* 1773 init-specs 15 initial-valuef) f0-0)
(set! (-> *part-id-table* 1774 init-specs 15 initial-valuef) f0-0)
(set! (-> *part-id-table* 1775 init-specs 4 initial-valuef) (+ -182.04445 f0-0))
(set! (-> *part-id-table* 1776 init-specs 4 initial-valuef) f0-0)
(set! (-> *part-id-table* 1777 init-specs 17 initial-valuef) f0-0)
(set! (-> *part-id-table* 1778 init-specs 4 initial-valuef) f0-0)
(set! (-> *part-id-table* 1779 init-specs 4 initial-valuef) f0-0)
(set! (-> *part-id-table* 1783 init-specs 17 initial-valuef) f0-0)
(set! (-> *part-id-table* 1784 init-specs 4 initial-valuef) f0-0)
)
0
(none)
)
;; failed to figure out what this is:
(defpartgroup group-rolling-ring-blue
:id 460
:linger-duration (seconds 0)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 1785 :fade-after (meters 100) :falloff-to (meters 100))
(sp-item 1786 :fade-after (meters 80))
(sp-item 1787 :flags (is-3d))
(sp-item 1788 :flags (is-3d))
)
)
;; failed to figure out what this is:
(defpart 1785
:init-specs ((:texture (starflash effects))
(:num 2.0 2.0)
(:scale-x (meters 1) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 64.0 1 64.0)
(:b 64.0 1 64.0)
(:a 64.0)
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:fade-a -1.4222221)
(:timer (seconds 0.14))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 4.5))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1786
:init-specs ((:texture (starflash effects))
(:num 1.0)
(:scale-x (meters 1) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 64.0 1 64.0)
(:b 64.0 1 64.0)
(:a 64.0)
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:fade-a -1.4222221)
(:timer (seconds 0.14))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 4.5))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1787
:init-specs ((:texture (water-ring effects))
(:num 1.0)
(:scale-x (meters 10))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees -1) (degrees 2))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 96.0 32.0)
(:fade-a -8.533334)
(:timer (seconds 0.035))
(:flags (bit2 bit3))
)
)
;; failed to figure out what this is:
(defpart 1788
:init-specs ((:texture (middot effects))
(:num 1.0)
(:scale-x (meters 12))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees 0))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:timer (seconds 0.017))
(:flags (bit2 bit3))
)
)
;; failed to figure out what this is:
(defpartgroup group-rolling-spawn-ring-blue
:id 461
:duration (seconds 0.017)
:linger-duration (seconds 0.47)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 1789 :fade-after (meters 100) :falloff-to (meters 100))
(sp-item 1790 :flags (is-3d))
(sp-item 1791 :flags (is-3d))
)
)
;; failed to figure out what this is:
(defpart 1789
:init-specs ((:texture (starflash effects))
(:num 32.0)
(:scale-x (meters 1) (meters 3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 64.0 1 64.0)
(:b 64.0 1 64.0)
(:a 0.0 63 1.0)
(:vel-y (meters 0.03))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:timer (seconds 0.5))
(:flags (bit3))
(:next-time (seconds 0.067) (seconds 0.065))
(:next-launcher 1792)
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 0))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1792
:init-specs ((:r 0.0)
(:g 64.0 1 64.0)
(:b 64.0 1 64.0)
(:a 0.0 63 1.0)
(:next-time (seconds 0.067) (seconds 0.065))
(:next-launcher 1792)
)
)
;; failed to figure out what this is:
(defpart 1790
:init-specs ((:texture (water-ring effects))
(:num 1.0)
(:scale-x (meters 0))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees -1) (degrees 2))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 96.0 32.0)
(:scalevel-x (meters 0.06666667))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 0.5))
(:flags (bit2 bit3 left-multiply-quat))
(:next-time (seconds 0.017))
(:next-launcher 1793)
)
)
;; failed to figure out what this is:
(defpart 1793
:init-specs ((:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:next-time (seconds 0.017))
(:next-launcher 1793)
)
)
;; failed to figure out what this is:
(defpart 1791
:init-specs ((:texture (middot effects))
(:num 1.0)
(:scale-x (meters 0))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees 0))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:scalevel-x (meters 0.08))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 0.5))
(:flags (bit2 bit3 left-multiply-quat))
(:next-time (seconds 0.017))
(:next-launcher 1794)
)
)
;; failed to figure out what this is:
(defpart 1794
:init-specs ((:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 32.0 32.0)
(:next-time (seconds 0.017))
(:next-launcher 1794)
)
)
;; failed to figure out what this is:
(defpartgroup group-rolling-explode-ring-blue
:id 462
:duration (seconds 0.017)
:linger-duration (seconds 0.5)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 1795 :fade-after (meters 100) :falloff-to (meters 100)) (sp-item 1796 :flags (is-3d)))
)
;; failed to figure out what this is:
(defpart 1795
:init-specs ((:texture (starflash effects))
(:num 64.0)
(:scale-x (meters 1) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 64.0 1 64.0)
(:b 64.0 1 64.0)
(:a 32.0 96.0)
(:vel-y (meters 0.1) (meters 0.033333335))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:fade-a -0.85333335)
(:friction 0.9)
(:timer (seconds 0.5))
(:flags (bit2 bit3))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-radius (meters 4.5))
(:rotate-y (degrees 0))
)
)
;; failed to figure out what this is:
(defpart 1796
:init-specs ((:texture (water-ring effects))
(:num 2.0)
(:scale-x (meters 10))
(:rot-x (degrees 0) (degrees 360))
(:rot-y (degrees -1) (degrees 2))
(:rot-z (degrees 90))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 128.0 1 127.0)
(:b 128.0 1 127.0)
(:a 128.0)
(:scalevel-x (meters 0.06666667))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.85333335)
(:timer (seconds 0.5))
(:flags (bit2 bit3))
)
)
;; definition for function race-ring-blue-set-particle-rotation-callback
;; INFO: Return type mismatch int vs none.
(defun race-ring-blue-set-particle-rotation-callback ((arg0 part-tracker))
(let ((f0-0 (-> (the-as (pointer race-ring) (-> arg0 userdata)) 0 rot-y)))
(set! (-> *part-id-table* 1785 init-specs 15 initial-valuef) f0-0)
(set! (-> *part-id-table* 1786 init-specs 15 initial-valuef) f0-0)
(set! (-> *part-id-table* 1787 init-specs 4 initial-valuef) (+ -182.04445 f0-0))
(set! (-> *part-id-table* 1788 init-specs 4 initial-valuef) f0-0)
(set! (-> *part-id-table* 1789 init-specs 17 initial-valuef) f0-0)
(set! (-> *part-id-table* 1790 init-specs 4 initial-valuef) f0-0)
(set! (-> *part-id-table* 1791 init-specs 4 initial-valuef) f0-0)
(set! (-> *part-id-table* 1795 init-specs 17 initial-valuef) f0-0)
(set! (-> *part-id-table* 1796 init-specs 4 initial-valuef) f0-0)
)
0
(none)
)
;; failed to figure out what this is:
(defskelgroup *race-ring-sg* race-ring race-ring-lod0-jg race-ring-race-ring-idle-ja
((race-ring-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; definition for function first-ring?
(defun first-ring? ((arg0 race-ring))
(not (-> arg0 alt-actor))
)
;; definition for function last-ring?
(defun last-ring? ((arg0 race-ring))
(not (-> arg0 link next))
)
;; failed to figure out what this is:
(defstate race-ring-active (race-ring)
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(local-vars (v0-0 symbol))
(case message
(('notify)
(when (and (= (-> block param 0) 'die) (= proc (-> self part-track process 0)))
(cond
((= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-ring-blue
-1
race-ring-blue-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
(set! v0-0 #t)
(set! (-> self keep-part-track-alive) v0-0)
)
(else
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-ring
-1
race-ring-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
(set! v0-0 #t)
(set! (-> self keep-part-track-alive) v0-0)
)
)
v0-0
)
)
)
)
:enter (behavior ()
(cond
((first-ring? self)
(logior! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #f)
)
(else
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #t)
)
)
(set! (-> self keep-part-track-alive) #f)
(if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-spawn-ring-blue
-1
race-ring-blue-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-spawn-ring
-1
race-ring-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
)
(set! (-> self old-hips quad) (-> (target-pos 26) quad))
(+! (-> self old-hips x) 1.0)
(set! (-> self state-time) (-> *display* game-frame-counter))
)
:exit (behavior ()
(sound-play "close-racering")
(let ((a0-3 (handle->process (-> self part-track))))
(if a0-3
(deactivate a0-3)
)
)
(if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-explode-ring-blue
-1
race-ring-blue-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-explode-ring
-1
race-ring-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
)
(cond
((first-ring? self)
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #t)
)
(else
(logior! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #f)
)
)
)
:trans (behavior ()
(if (nonzero? (-> self sound))
(update! (-> self sound))
)
(cond
((handle->process (-> self part-track))
(if (-> self keep-part-track-alive)
(set-time! (-> (the-as part-tracker (-> self part-track process 0)) start-time))
)
)
((= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-ring-blue
-1
race-ring-blue-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
(set! (-> self keep-part-track-alive) #t)
)
(else
(set! (-> self part-track) (ppointer->handle (process-spawn
part-tracker
:init part-tracker-init
group-rolling-ring
-1
race-ring-set-particle-rotation-callback
(-> self ppointer)
#f
(-> self root trans)
:to self
)
)
)
(set! (-> self keep-part-track-alive) #t)
)
)
(cond
((not (last-ring? self))
)
((= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(spool-push *art-control* "race-ring-second-anim" 0 self -99.0)
)
(else
(spool-push *art-control* "race-ring-anim" 0 self -99.0)
)
)
)
:code (behavior ()
(loop
(suspend)
(cond
((first-ring? self)
)
((>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self timeout))
(level-hint-spawn
(text-id rolling-ring-chase-fail)
"sksp0121"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(ambient-hint-spawn "st-lose" (the-as vector #f) *entity-pool* 'stinger)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) self)
(set! (-> a1-2 num-params) 0)
(set! (-> a1-2 message) 'activate)
(let ((t9-3 send-event-function)
(v1-7 (-> self alt-actor))
)
(t9-3
(if v1-7
(-> v1-7 extra process)
)
a1-2
)
)
)
(go race-ring-idle)
)
)
(when *target*
(let ((gp-0 (new 'stack-no-clear 'vector)))
(set! (-> gp-0 quad) (-> self old-hips quad))
(set! (-> self old-hips quad) (-> (target-pos 26) quad))
(vector-! gp-0 gp-0 (-> self old-hips))
(when (>= (ray-flat-cyl-intersect (-> self cyl) (-> self old-hips) gp-0) 0.0)
(level-hint-spawn
(text-id rolling-ring-chase-1-hint)
"sksp0119"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(level-hint-spawn
(text-id rolling-ring-chase-2-hint)
"sksp0120"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
(cond
((first-ring? self)
(close-specific-task! (-> self entity extra perm task) (task-status need-hint))
(entity-birth-no-kill (-> self link next))
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) self)
(set! (-> a1-9 num-params) 0)
(set! (-> a1-9 message) 'activate)
(let ((t9-12 send-event-function)
(v1-30 (-> self link next))
)
(t9-12
(if v1-30
(-> v1-30 extra process)
)
a1-9
)
)
)
)
((last-ring? self)
(let ((gp-2 (ppointer->handle (process-spawn othercam self 4 #f #t :to self)))
(s5-2 (ppointer->handle (process-spawn
fuel-cell
:init fuel-cell-init-as-clone
(process->handle self)
(-> self entity extra perm task)
:to self
)
)
)
)
(if *target*
(logior! (-> *target* mask) (process-mask sleep))
)
(close-specific-task! (-> self entity extra perm task) (task-status need-reminder))
(logclear! (-> self draw status) (draw-status hidden))
(logior! (-> self draw status) (draw-status skip-bones))
(if (= (-> self entity extra perm task) (game-task rolling-ring-chase-2))
(ja-play-spooled-anim
(new 'static 'spool-anim :name "race-ring-second-anim" :index 4 :parts 2 :command-list '())
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
(ja-play-spooled-anim
(new 'static 'spool-anim :name "race-ring-anim" :index 3 :parts 2 :command-list '())
(the-as art-joint-anim #f)
(the-as art-joint-anim #f)
(the-as (function process-drawable symbol) false-func)
)
)
(logclear! (-> self draw status) (draw-status skip-bones))
(logior! (-> self draw status) (draw-status hidden))
(cond
((handle->process (the-as int gp-2))
(deactivate (-> gp-2 process 0))
)
(else
)
)
(if *target*
(logclear! (-> *target* mask) (process-mask sleep))
)
(let ((a0-54 (handle->process s5-2)))
(if a0-54
(send-event a0-54 'stop-cloning)
)
)
)
)
(else
(entity-birth-no-kill (-> self link next))
(let ((a1-22 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-22 from) self)
(set! (-> a1-22 num-params) 0)
(set! (-> a1-22 message) 'activate)
(let ((t9-26 send-event-function)
(v1-86 (-> self link next))
)
(t9-26
(if v1-86
(-> v1-86 extra process)
)
a1-22
)
)
)
)
)
(go race-ring-idle)
)
)
)
)
)
:post ja-post
)
;; failed to figure out what this is:
(defstate race-ring-wait (race-ring)
:code (behavior ()
(if (nonzero? (-> self sound))
(stop! (-> self sound))
)
(loop
(suspend)
(when (= (get-task-status (the-as game-task (-> self alt-task))) (task-status invalid))
(close-specific-task! (-> self entity extra perm task) (task-status need-hint))
(logclear! (-> self mask) (process-mask actor-pause))
(go race-ring-active)
)
)
)
)
;; failed to figure out what this is:
(defstate race-ring-idle (race-ring)
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('activate)
(logclear! (-> self mask) (process-mask actor-pause))
(go race-ring-active)
)
)
)
:code (behavior ()
(if (nonzero? (-> self sound))
(stop! (-> self sound))
)
(loop
(suspend)
)
)
)
;; definition for method 11 of type race-ring
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! ((this race-ring) (arg0 entity-actor))
(let ((a0-1 arg0))
(if (not (entity-actor-lookup a0-1 'next-actor 0))
(stack-size-set! (-> this main-thread) 512)
)
)
(set! (-> this root) (new 'process 'trsqv))
(process-drawable-from-entity! this arg0)
(initialize-skeleton this *race-ring-sg* '())
(set! (-> this root pause-adjust-distance) 122880.0)
(set! (-> this link) (new 'process 'actor-link-info this))
(set! (-> this part-track) (the-as handle #f))
(set! (-> this alt-actor) (entity-actor-lookup arg0 'alt-actor 0))
(logior! (-> this draw status) (draw-status hidden))
(set! (-> this sound)
(new 'process 'ambient-sound (static-sound-spec "loop-racering" :fo-max 40) (-> this root trans))
)
(let ((f0-1 (res-lump-float arg0 'timeout)))
(set! (-> this timeout) (the-as time-frame (the int (* 300.0 f0-1))))
)
(let ((s4-0 (new 'stack-no-clear 'vector)))
(cond
((-> this link next)
(vector-! (-> this face-vec) (-> this link next extra trans) (-> this root trans))
)
((-> this link prev)
(vector-! (-> this face-vec) (-> this root trans) (-> this link prev extra trans))
)
)
(vector-flatten! (-> this face-vec) (-> this face-vec) (new 'static 'vector :y 1.0))
(vector-normalize! (-> this face-vec) 1.0)
(cond
((and (-> this link next) (-> this link prev))
(vector-! s4-0 (-> this link prev extra trans) (-> this root trans))
(vector-flatten! s4-0 s4-0 (new 'static 'vector :y 1.0))
(vector-normalize! s4-0 1.0)
(vector+! s4-0 s4-0 (-> this face-vec))
(vector-normalize! s4-0 1.0)
(set! (-> this rot-y) (acos (vector-dot s4-0 (new 'static 'vector :z 1.0))))
(if (< (vector-dot s4-0 (new 'static 'vector :x 1.0)) 0.0)
(set! (-> this rot-y) (- (-> this rot-y)))
)
)
(else
(set! (-> this rot-y) (acos (vector-dot (-> this face-vec) (new 'static 'vector :z 1.0))))
(if (< (vector-dot (-> this face-vec) (new 'static 'vector :x 1.0)) 0.0)
(set! (-> this rot-y) (- (-> this rot-y)))
)
(+! (-> this rot-y) 16384.0)
)
)
)
(+! (-> this rot-y) (res-lump-float arg0 'rotoffset))
(set-vector! (-> this cyl axis) (cos (-> this rot-y)) 0.0 (- (sin (-> this rot-y))) 1.0)
(vector+float*! (-> this cyl origin) (-> this root trans) (-> this cyl axis) -2048.0)
(set! (-> this cyl radius) 24576.0)
(set! (-> this cyl length) 4096.0)
(cond
((and (first-ring? this)
(!= (get-task-status (-> this entity extra perm task)) (task-status invalid))
(!= (get-task-status (-> this entity extra perm task)) 7)
)
(set! (-> this alt-task) (res-lump-value (-> this entity) 'alt-task uint))
(if (or (= (-> this alt-task) 0)
(= (get-task-status (the-as game-task (-> this alt-task))) (task-status invalid))
)
(go race-ring-active)
(go race-ring-wait)
)
)
((and (last-ring? this) (= (get-task-status (-> this entity extra perm task)) (task-status need-resolution)))
(let ((s5-2 (new 'stack-no-clear 'vector)))
(logclear! (-> this draw status) (draw-status hidden))
(ja-post)
(vector<-cspace! s5-2 (-> this node-list data 5))
(logior! (-> this draw status) (draw-status hidden))
(birth-pickup-at-point
s5-2
(pickup-type fuel-cell)
(the float (-> this entity extra perm task))
#f
this
(the-as fact-info #f)
)
)
)
((and (last-ring? this) (!= (get-task-status (-> this entity extra perm task)) (task-status invalid)))
)
)
(set! (-> this event-hook) (-> race-ring-idle event))
(go race-ring-idle)
(none)
)