Files
jak-project/test/decompiler/reference/jak1/levels/finalboss/sage-finalboss_REF.gc
T

1091 lines
39 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup *robotboss-cinematic-sg* robotboss-cinematic robotboss-cinematic-lod0-jg robotboss-cinematic-idle-ja
((robotboss-cinematic-lod0-mg (meters 999999)))
:bounds (static-spherem 0 -10 0 2000)
)
;; failed to figure out what this is:
(defskelgroup *jak-white-sg* jak-white jak-white-lod0-jg jak-white-idle-ja
((jak-white-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 4)
)
;; failed to figure out what this is:
(defskelgroup *plat-eco-finalboss-unlit-sg* plat-eco-finalboss plat-eco-finalboss-lod0-jg plat-eco-finalboss-idle-ja
((plat-eco-finalboss-lod0-mg (meters 20))
(plat-eco-finalboss-lod1-mg (meters 40))
(plat-eco-finalboss-lod2-mg (meters 999999))
)
:bounds (static-spherem 0 0 0 3)
)
;; failed to figure out what this is:
(defskelgroup *plat-eco-finalboss-lit-sg* plat-eco-finalboss plat-eco-finalboss-lit-lod0-jg plat-eco-finalboss-idle-ja
((plat-eco-finalboss-lit-lod0-mg (meters 20))
(plat-eco-finalboss-lit-lod1-mg (meters 40))
(plat-eco-finalboss-lit-lod2-mg (meters 999999))
)
:bounds (static-spherem 0 0 0 3)
)
;; definition of type plat-eco-finalboss
(deftype plat-eco-finalboss (plat-eco)
((force-dest float)
(targ-dest float)
(dest float)
(speed float)
(touch-time time-frame)
)
)
;; definition for method 3 of type plat-eco-finalboss
(defmethod inspect ((this plat-eco-finalboss))
(let ((t9-0 (method-of-type plat-eco inspect)))
(t9-0 this)
)
(format #t "~T~Tforce-dest: ~f~%" (-> this force-dest))
(format #t "~T~Ttarg-dest: ~f~%" (-> this targ-dest))
(format #t "~T~Tdest: ~f~%" (-> this dest))
(format #t "~T~Tspeed: ~f~%" (-> this speed))
(format #t "~T~Ttouch-time: ~D~%" (-> this touch-time))
this
)
;; definition for method 23 of type plat-eco-finalboss
(defmethod get-unlit-skel ((this plat-eco-finalboss))
*plat-eco-finalboss-unlit-sg*
)
;; definition for method 27 of type plat-eco-finalboss
(defmethod get-lit-skel ((this plat-eco-finalboss))
*plat-eco-finalboss-lit-sg*
)
;; definition for method 26 of type plat-eco-finalboss
;; INFO: Return type mismatch int vs none.
(defmethod baseplat-method-26 ((this plat-eco-finalboss))
(set! (-> this force-dest) -1.0)
(set! (-> this targ-dest) -1.0)
(set! (-> this dest) 0.0)
(set! (-> this speed) 0.1)
(logclear! (-> this mask) (process-mask actor-pause))
(process-entity-status! this (entity-perm-status bit-3) #t)
(none)
)
;; failed to figure out what this is:
(defstate plat-path-active (plat-eco-finalboss)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('target)
(process-entity-status! self (entity-perm-status complete) #t)
(set! (-> self force-dest) (the-as float (-> block param 0)))
)
(('ridden 'edge-grabbed)
(if (time-elapsed? (-> self touch-time) (seconds 2))
(set! (-> self targ-dest) (cond
((= (-> self path-pos) 0.0)
(set! (-> self force-dest) -1.0)
0.99
)
((= (-> self path-pos) 0.99)
0.0
)
(else
(-> self targ-dest)
)
)
)
)
(set-time! (-> self touch-time))
#f
)
(else
(plat-event proc argc message block)
)
)
)
:enter (behavior ((arg0 plat))
(set-time! (-> self state-time))
(lods-assign! (-> self draw) (-> self lit-look))
(process-entity-status! self (entity-perm-status complete) #t)
(cond
(arg0
)
(else
(dotimes (gp-1 5)
(spawn-projectile-blue *target*)
)
)
)
)
:trans (behavior ()
(let ((s5-0 (eval-path-curve! (-> self path) (new 'stack-no-clear 'vector) 0.0 'interp))
(gp-0 (eval-path-curve! (-> self path) (new 'stack-no-clear 'vector) 1.0 'interp))
)
(if (time-elapsed? (-> self touch-time) (seconds 3))
(set! (-> self targ-dest) -1.0)
)
(set! (-> self dest)
(cond
((>= (-> self force-dest) 0.0)
(-> self force-dest)
)
((>= (-> self targ-dest) 0.0)
(-> self targ-dest)
)
((< (vector-vector-xz-distance (target-pos 0) s5-0) (vector-vector-xz-distance (target-pos 0) gp-0))
0.0
)
(else
0.99
)
)
)
)
(if (= (-> self state-time) (current-time))
(set! (-> self path-pos) (-> self dest))
)
(seek! (-> self path-pos) (-> self dest) (* (-> self speed) (seconds-per-frame)))
(eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp)
(if (< (vector-vector-distance (-> self root trans) (ear-trans)) 81920.0)
(sound-play "eco-plat-hover" :id (-> self sound-id) :position (the-as symbol (-> self root trans)))
)
(plat-trans)
(when (send-event *target* 'query 'powerup (pickup-type eco-yellow))
(process-entity-status! self (entity-perm-status complete) #t)
(set! (-> self force-dest) 0.0)
)
)
)
;; definition of type sage-finalboss-particle
(deftype sage-finalboss-particle (structure)
((part sparticle-launch-control)
(active symbol)
)
:allow-misaligned
)
;; definition for method 3 of type sage-finalboss-particle
(defmethod inspect ((this sage-finalboss-particle))
(format #t "[~8x] ~A~%" this 'sage-finalboss-particle)
(format #t "~Tpart: ~A~%" (-> this part))
(format #t "~Tactive: ~A~%" (-> this active))
this
)
;; definition of type sage-finalboss
(deftype sage-finalboss (process-taskable)
((redsage handle)
(bluesage handle)
(yellowsage handle)
(assistant handle)
(robotplat handle)
(robotboss handle)
(silodoor handle)
(jak-white handle)
(left-door entity-actor)
(right-door entity-actor)
(kick-in-the-door symbol)
(kick-the-credits symbol)
(credit-fade float)
(palette-val float)
(particle sage-finalboss-particle 9 :inline)
(particle-whiteout sparticle-launch-control)
(credits-played symbol)
)
(:states
sage-finalboss-credits
)
)
;; definition for method 3 of type sage-finalboss
(defmethod inspect ((this sage-finalboss))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 this)
)
(format #t "~T~Tredsage: ~D~%" (-> this redsage))
(format #t "~T~Tbluesage: ~D~%" (-> this bluesage))
(format #t "~T~Tyellowsage: ~D~%" (-> this yellowsage))
(format #t "~T~Tassistant: ~D~%" (-> this assistant))
(format #t "~T~Trobotplat: ~D~%" (-> this robotplat))
(format #t "~T~Trobotboss: ~D~%" (-> this robotboss))
(format #t "~T~Tsilodoor: ~D~%" (-> this silodoor))
(format #t "~T~Tjak-white: ~D~%" (-> this jak-white))
(format #t "~T~Tleft-door: ~A~%" (-> this left-door))
(format #t "~T~Tright-door: ~A~%" (-> this right-door))
(format #t "~T~Tkick-in-the-door: ~A~%" (-> this kick-in-the-door))
(format #t "~T~Tkick-the-credits: ~A~%" (-> this kick-the-credits))
(format #t "~T~Tcredit-fade: ~f~%" (-> this credit-fade))
(format #t "~T~Tpalette-val: ~f~%" (-> this palette-val))
(format #t "~T~Tparticle[9] @ #x~X~%" (-> this particle))
(format #t "~T~Tparticle-whiteout: ~A~%" (-> this particle-whiteout))
(format #t "~T~Tcredits-played: ~A~%" (-> this credits-played))
this
)
;; definition for method 7 of type sage-finalboss
;; INFO: Return type mismatch process-taskable vs sage-finalboss.
(defmethod relocate ((this sage-finalboss) (offset int))
(dotimes (v1-0 9)
(if (nonzero? (-> this particle v1-0 part))
(&+! (-> this particle v1-0 part) offset)
)
)
(if (nonzero? (-> this particle-whiteout))
(&+! (-> this particle-whiteout) offset)
)
(the-as sage-finalboss ((method-of-type process-taskable relocate) this offset))
)
;; definition for method 10 of type sage-finalboss
(defmethod deactivate ((this sage-finalboss))
(dotimes (s5-0 9)
(let ((a0-1 (-> this particle s5-0 part)))
(if (nonzero? a0-1)
(kill-and-free-particles a0-1)
)
)
)
(if (nonzero? (-> this particle-whiteout))
(kill-and-free-particles (-> this particle-whiteout))
)
((method-of-type process-taskable deactivate) this)
(none)
)
;; failed to figure out what this is:
(defskelgroup *sage-finalboss-sg* green-sagecage green-sagecage-lod0-jg green-sagecage-green-sagecage-idle-ja
((green-sagecage-lod0-mg (meters 20)) (green-sagecage-lod1-mg (meters 999999)))
:bounds (static-spherem 0 0 0 2.5)
:shadow green-sagecage-shadow-mg
)
;; definition for method 44 of type sage-finalboss
;; INFO: Return type mismatch object vs symbol.
(defmethod play-reminder ((this sage-finalboss))
(let ((s5-0 (entity-by-name "red-sagecage-1")))
(when s5-0
(set! (-> this redsage) (ppointer->handle (manipy-spawn (-> this root trans) s5-0 *redsage-sg* #f :to this)))
(send-event (handle->process (-> this redsage)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this redsage)) 'blend-shape #t)
(send-event (handle->process (-> this redsage)) 'center-joint 3)
(send-event (handle->process (-> this redsage)) 'origin-joint-index 3)
)
)
(let ((s5-1 (entity-by-name "blue-sagecage-1")))
(when s5-1
(set! (-> this bluesage)
(ppointer->handle (manipy-spawn (-> this root trans) s5-1 *bluesage-sg* #f :to this))
)
(send-event (handle->process (-> this bluesage)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this bluesage)) 'blend-shape #t)
(send-event (handle->process (-> this bluesage)) 'center-joint 3)
(send-event (handle->process (-> this bluesage)) 'origin-joint-index 3)
)
)
(let ((s5-2 (entity-by-name "yellow-sagecage-1")))
(the-as
symbol
(when s5-2
(set! (-> this yellowsage)
(ppointer->handle (manipy-spawn (-> this root trans) s5-2 *yellowsage-sg* #f :to this))
)
(send-event (handle->process (-> this yellowsage)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this yellowsage)) 'blend-shape #t)
(send-event (handle->process (-> this yellowsage)) 'center-joint 3)
(send-event (handle->process (-> this yellowsage)) 'origin-joint-index 3)
)
)
)
)
;; definition for method 45 of type sage-finalboss
;; INFO: Return type mismatch object vs symbol.
(defmethod process-taskable-method-45 ((this sage-finalboss))
(let ((s5-0 (entity-by-name "assistant-lavatube-end-3")))
(the-as
symbol
(when s5-0
(set! (-> this assistant)
(ppointer->handle (manipy-spawn (-> this root trans) s5-0 *assistant-lavatube-end-sg* #f :to this))
)
(let ((s5-1 (handle->process (-> this assistant))))
(if (the-as manipy s5-1)
(set! (-> (the-as manipy s5-1) draw level-index) (the-as uint (-> (level-get *level* 'finalboss) index)))
)
)
(send-event (handle->process (-> this assistant)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this assistant)) 'blend-shape #t)
(send-event (handle->process (-> this assistant)) 'center-joint 3)
(send-event (handle->process (-> this assistant)) 'origin-joint-index 3)
)
)
)
)
;; definition for method 32 of type sage-finalboss
;; INFO: Used lq/sq
(defmethod play-anim! ((this sage-finalboss) (arg0 symbol))
(case (current-status (-> this tasks))
(((task-status unknown))
(when arg0
(close-current! (-> this tasks))
(set-yaw-angle-clear-roll-pitch! (-> this root) 0.0)
)
(new 'static 'spool-anim
:name "green-sagecage-daxter-sacrifice"
:index 8
:parts 6
:command-list '((1 blackout 0) (236 joint "cameraB") (439 joint "camera"))
)
)
(((task-status need-introduction))
(when arg0
(set-yaw-angle-clear-roll-pitch! (-> this root) 0.0)
(close-current! (-> this tasks))
(set! (-> this jak-white)
(ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *jak-white-sg* #f :to this))
)
(send-event
(handle->process (-> this jak-white))
'eval
(lambda :behavior sage-finalboss () (set-vector! (-> self draw color-emissive) 0.5 0.5 0.5 0.0) (none))
)
(send-event (handle->process (-> this jak-white)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this jak-white)) 'origin-joint-index 3)
(send-event (handle->process (-> this jak-white)) 'blend-shape #t)
(set! (-> this robotboss)
(ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *robotboss-cinematic-sg* #f :to this))
)
(send-event (handle->process (-> this robotboss)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this robotboss)) 'origin-joint-index 3)
(let ((v1-67 (handle->process (-> this robotboss))))
(if (the-as manipy v1-67)
(set! (-> (the-as manipy v1-67) draw bounds w) 2048000.0)
)
)
(set! (-> this silodoor)
(ppointer->handle (manipy-spawn (-> this root trans) (-> this entity) *silodoor-sg* #f :to this))
)
(send-event (handle->process (-> this silodoor)) 'anim-mode 'clone-anim)
(let ((v1-84 (handle->process (-> this silodoor))))
(if (the-as manipy v1-84)
(set! (-> (the-as silodoor v1-84) draw bounds w) 2048000.0)
)
)
(send-event (process-by-name "silodoor-5" *active-pool*) 'hide)
(set-setting! 'music #f 0.0 0)
(set-setting! 'allow-progress #f 0.0 0)
)
(new 'static 'spool-anim
:name "green-sagecage-outro-beat-boss-a"
:index 9
:parts 8
:command-list '((0 send-event self activate-particle 0)
(0 send-event self activate-particle 1)
(0 send-event self activate-particle 7)
(1 blackout 0)
(61 joint "cameraB")
(71 send-event self activate-particle 2)
(156 joint "camera")
(216 joint "cameraB")
(259 send-event self deactivate-particle 2)
(259 send-event self activate-particle 3)
(268 send-event self activate-particle 4)
(270 send-event self deactivate-particle 3)
(270 send-event self deactivate-particle 0)
(270 send-event self deactivate-particle 1)
(271 joint "camera")
(269 send-event self activate-particle 5)
(272 send-event self flash)
(272 eval ,(lambda :behavior sage-finalboss
()
(let ((a0-1 (get-task-control (game-task finalboss-movies))))
(save-reminder a0-1 (logior (get-reminder a0-1 0) 1) 0)
)
(none)
)
)
(273 send-event self deactivate-particle 5)
(333 joint "cameraB")
(395 joint "camera")
(453 joint "cameraB")
(478 send-event self deactivate-particle 4)
(478 send-event self activate-particle 6)
(482 send-event self deactivate-particle 6)
(583 joint "camera")
(640 send-event self deactivate-particle 7)
)
)
)
(((task-status need-reminder-a))
(when arg0
(set-yaw-angle-clear-roll-pitch! (-> this root) 0.0)
(close-current! (-> this tasks))
(play-reminder this)
(process-taskable-method-45 this)
(set! (-> this kick-the-credits) #t)
(set! (-> this robotplat)
(ppointer->handle
(manipy-spawn (-> this root trans) (-> this entity) *plat-eco-finalboss-lit-sg* #f :to this)
)
)
(send-event (handle->process (-> this robotplat)) 'anim-mode 'clone-anim)
(send-event (handle->process (-> this robotplat)) 'origin-joint-index 3)
(set! (-> this old-target-pos trans quad)
(-> (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0) quad)
)
(quaternion-copy! (-> this old-target-pos quat) (new 'static 'quaternion :y -0.8472 :w 0.5312))
(set-setting! 'music #f 0.0 0)
(set-setting! 'sfx-volume 'abs 0.0 0)
(set-setting! 'ambient-volume 'abs 0.0 0)
(set-setting! 'allow-progress #f 0.0 0)
)
(new 'static 'spool-anim
:name "green-sagecage-outro-beat-boss-b"
:index 10
:parts 27
:command-list '((0 kill "crate-3250")
(0 kill "crate-3251")
(0 kill "crate-3252")
(0 kill "crate-3253")
(0 kill "crate-3254")
(0 kill "crate-3255")
(0 kill "crate-3256")
(0 kill "crate-3257")
(0 kill "crate-3258")
(0 kill "crate-3259")
(0 kill "plat-eco-finalboss-1")
(1 blackout 0)
(61 joint "cameraB")
(136 joint "camera")
(510 joint "cameraB")
(641 joint "camera")
(751 joint "cameraB")
(1096 joint "camera")
(1321 joint "cameraB")
(1521 joint "camera")
(1636 joint "cameraB")
(1751 joint "camera")
(1916 joint "cameraB")
(1996 joint "camera")
(2256 joint "cameraB")
)
)
)
(((task-status need-reminder))
(when arg0
(set-yaw-angle-clear-roll-pitch! (-> this root) -13116.667)
(close-current! (-> this tasks))
(process-taskable-method-45 this)
(send-event *camera* 'teleport)
(set-setting! 'allow-progress #f 0.0 0)
)
(cond
((target-has-all-the-cells?)
(new 'static 'spool-anim
:name "green-sagecage-outro-beat-boss-enough-cells"
:index 12
:parts 6
:command-list '((0 send-event self fade)
(1 blackout 0)
(65 joint "cameraB")
(104 joint "camera")
(134 joint "cameraB")
(165 joint "camera")
(292 joint "cameraB")
(488 joint "camera")
(488 auto-save auto-save)
)
)
)
(else
(if arg0
(set-setting! 'allow-progress #f 0.0 0)
)
(new 'static 'spool-anim
:name "green-sagecage-outro-beat-boss-need-cells"
:index 11
:parts 8
:command-list '((0 send-event self fade)
(1 blackout 0)
(65 joint "cameraB")
(104 joint "camera")
(134 joint "cameraB")
(165 joint "camera")
(292 joint "cameraB")
(488 joint "camera")
(488 auto-save auto-save)
)
)
)
)
)
(((task-status need-reward-speech))
(when arg0
(set-yaw-angle-clear-roll-pitch! (-> this root) -13116.667)
(close-current! (-> this tasks))
(process-taskable-method-45 this)
(set! (-> this left-door) (the-as entity-actor (entity-by-name "power-left-2")))
(set! (-> this right-door) (the-as entity-actor (entity-by-name "power-right-2")))
(set-setting! 'allow-progress #f 0.0 0)
)
(new 'static 'spool-anim
:name "green-sagecage-outro-big-finish"
:index 13
:parts 7
:command-list '((1 blackout 0)
(61 joint "cameraB")
(102 joint "camera")
(145 joint "cameraB")
(220 send-event "power-left-2" open)
(220 send-event "power-right-2" open)
(235 joint "camera")
(243 send-event self activate-particle 8)
(322 joint "cameraB")
(428 joint "camera")
(519 joint "cameraB")
(602 joint "camera")
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> this name)
(task-status->string (current-status (-> this tasks)))
)
)
(-> this draw art-group data 4)
)
)
)
;; definition for method 31 of type sage-finalboss
(defmethod get-art-elem ((this sage-finalboss))
(-> this draw art-group data 4)
)
;; definition for function sage-finalboss-credit-particle
;; INFO: Return type mismatch float vs none.
(defbehavior sage-finalboss-credit-particle sage-finalboss ()
(when (< 0.0 (-> self credit-fade))
(if (> (-> self part matrix) 0)
(set-vector!
(sprite-get-user-hvdf (-> self part matrix))
2048.0
2048.0
(+ -1024.0 (-> *math-camera* hvdf-off z))
(-> *math-camera* hvdf-off w)
)
)
(set! (-> *part-id-table* 2827 init-specs 8 initial-valuef) (* 128.0 (-> self credit-fade)))
(cond
((< (-> self credit-fade) 1.0)
(set! (-> *part-id-table* 2825 init-specs 1 initial-valuef) 0.0)
(set! (-> *part-id-table* 2826 init-specs 1 initial-valuef) 0.0)
)
(else
(set! (-> *part-id-table* 2825 init-specs 1 initial-valuef) 1.0)
(set! (-> *part-id-table* 2826 init-specs 1 initial-valuef) 0.3)
)
)
(spawn (-> self part) *zero-vector*)
(+! (-> self credit-fade) -0.008333334)
)
(none)
)
;; failed to figure out what this is:
(defstate play-anim (sage-finalboss)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('fade)
(set! (-> self credit-fade) 1.0)
)
(('flash)
(set! (-> self palette-val) 1.9921875)
)
(('activate-particle)
(let ((v0-0 (the-as object #t)))
(set! (-> self particle (-> block param 0) active) (the-as symbol v0-0))
v0-0
)
)
(('deactivate-particle)
(set! (-> self particle (-> block param 0) active) #f)
#f
)
)
)
:enter (behavior ()
(set! (-> self credit-fade) 0.0)
((-> (method-of-type process-taskable play-anim) enter))
)
:exit (behavior ()
(when (= (current-status (-> self tasks)) (task-status invalid))
(cond
((not (-> self credits-played))
(set! (-> self kick-the-credits) #t)
)
(else
(set-blackout-frames 0)
(initialize! *game-info* 'game (the-as game-save #f) "title-start")
)
)
)
(let ((a0-4 (handle->process (-> self redsage))))
(if a0-4
(deactivate a0-4)
)
)
(let ((a0-8 (handle->process (-> self bluesage))))
(if a0-8
(deactivate a0-8)
)
)
(let ((a0-12 (handle->process (-> self yellowsage))))
(if a0-12
(deactivate a0-12)
)
)
(let ((a0-16 (handle->process (-> self assistant))))
(if a0-16
(deactivate a0-16)
)
)
(let ((a0-20 (handle->process (-> self robotplat))))
(if a0-20
(deactivate a0-20)
)
)
(let ((a0-24 (handle->process (-> self robotboss))))
(if a0-24
(deactivate a0-24)
)
)
(let ((a0-28 (handle->process (-> self jak-white))))
(if a0-28
(deactivate a0-28)
)
)
(let ((a0-32 (handle->process (-> self silodoor))))
(if a0-32
(deactivate a0-32)
)
)
(when (-> self left-door)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) self)
(set! (-> a1-9 num-params) 2)
(set! (-> a1-9 message) 'brightness)
(set! (-> a1-9 param 0) (the-as uint 1.0))
(set! (-> a1-9 param 1) (the-as uint 0.0))
(let ((t9-11 send-event-function)
(v1-61 (-> self left-door))
)
(t9-11
(if v1-61
(-> v1-61 extra process)
)
a1-9
)
)
)
(set! (-> self left-door) #f)
)
(when (-> self right-door)
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) self)
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'brightness)
(set! (-> a1-10 param 0) (the-as uint 1.0))
(set! (-> a1-10 param 1) (the-as uint 0.0))
(let ((t9-12 send-event-function)
(v1-71 (-> self right-door))
)
(t9-12
(if v1-71
(-> v1-71 extra process)
)
a1-10
)
)
)
(set! (-> self right-door) #f)
)
(cond
((= (current-status (-> self tasks)) (task-status need-reward-speech))
(if (target-has-all-the-cells?)
(set! (-> self kick-in-the-door) #t)
(start 'play (get-continue-by-name *game-info* "finalboss-start"))
)
)
((= (current-status (-> self tasks)) (task-status invalid))
)
(else
(set-blackout-frames (seconds 100))
)
)
(dotimes (v1-84 9)
(set! (-> self particle v1-84 active) #f)
)
((-> (method-of-type process-taskable play-anim) exit))
)
:trans (behavior ()
(local-vars (f28-0 float))
(when (-> self left-door)
(let ((f30-0 (ja-aframe-num 0)))
0.0
(let ((f30-1
(cond
((< f30-0 235.0)
(set! f28-0 1.0)
0.0
)
((< 320.0 f30-0)
(set! f28-0 1.0)
0.0
)
(else
(if (> (-> self particle-whiteout matrix) 0)
(set-vector!
(sprite-get-user-hvdf (-> self particle-whiteout matrix))
2048.0
2048.0
(+ -1024.0 (-> *math-camera* hvdf-off z))
(-> *math-camera* hvdf-off w)
)
)
(set! (-> *part-id-table* 2965 init-specs 8 initial-valuef) (fmax 0.0 (fmin 128.0 (* 0.75 (+ -240.0 f30-0)))))
(spawn (-> self particle-whiteout) *zero-vector*)
(set! f28-0 (fmin 2.0 (fmax 0.0 (* 0.033333335 (+ -235.0 f30-0)))))
f28-0
)
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'brightness)
(set! (-> a1-1 param 0) (the-as uint f28-0))
(set! (-> a1-1 param 1) (the-as uint f30-1))
(let ((t9-3 send-event-function)
(v1-20 (-> self left-door))
)
(t9-3
(if v1-20
(-> v1-20 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) self)
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'brightness)
(set! (-> a1-2 param 0) (the-as uint f28-0))
(set! (-> a1-2 param 1) (the-as uint f30-1))
(let ((t9-4 send-event-function)
(v1-27 (-> self right-door))
)
(t9-4
(if v1-27
(-> v1-27 extra process)
)
a1-2
)
)
)
)
)
)
(when (and *target* (-> self particle 0 active))
(let ((a1-3 (new 'stack-no-clear 'vector)))
(set! (-> a1-3 quad) (-> *target* draw origin quad))
(set! (-> a1-3 y) 1970176.0)
(spawn (-> self particle 0 part) a1-3)
)
)
(when (and (handle->process (-> self jak-white)) (-> self particle 1 active))
(let ((a0-17 (handle->process (-> self jak-white))))
(spawn
(-> self particle 1 part)
(process-drawable-random-point! (the-as process-drawable a0-17) (new 'stack-no-clear 'vector))
)
)
)
(when (and (handle->process (-> self jak-white)) (-> self particle 2 active))
(let* ((v1-52 (handle->process (-> self jak-white)))
(a1-11 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-52) node-list data 52)))
)
(spawn (-> self particle 2 part) a1-11)
)
)
(when (and (handle->process (-> self jak-white)) (-> self particle 3 active))
(let* ((v1-63 (handle->process (-> self jak-white)))
(a1-15 (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable v1-63) node-list data 52)))
)
(spawn (-> self particle 3 part) a1-15)
)
)
(if (and (handle->process (-> self robotboss)) (-> self particle 4 active))
(spawn (-> self particle 4 part) (process-drawable-random-point!
(the-as process-drawable (handle->process (-> self robotboss)))
(new 'stack-no-clear 'vector)
)
)
)
(if (and (handle->process (-> self robotboss)) (-> self particle 5 active))
(spawn
(-> self particle 5 part)
(vector<-cspace!
(new 'stack-no-clear 'vector)
(-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 15)
)
)
)
(if (and (handle->process (-> self robotboss)) (-> self particle 6 active))
(spawn
(-> self particle 6 part)
(vector<-cspace!
(new 'stack-no-clear 'vector)
(-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 6)
)
)
)
(when (and (handle->process (-> self robotboss)) (-> self particle 7 active))
(let ((gp-4 (new 'stack-no-clear 'vector)))
(vector<-cspace! gp-4 (-> (the-as process-drawable (handle->process (-> self robotboss))) node-list data 7))
(spawn (-> self particle 7 part) gp-4)
)
)
(when (-> self particle 8 active)
(let ((gp-5 (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left))))
(a0-70 (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left))))
(a1-43 (new 'stack-no-clear 'vector))
)
(vector+! a1-43 (-> (the-as final-door gp-5) root trans) (-> (the-as final-door a0-70) root trans))
(vector-float*! a1-43 a1-43 0.5)
(spawn (-> self particle 8 part) a1-43)
)
)
(sage-finalboss-credit-particle)
(let* ((f0-14 (- 0.0 (-> self palette-val)))
(f0-15 (if (< 0.0 f0-14)
(fmin 0.025 f0-14)
(fmax -0.025 f0-14)
)
)
)
(+! (-> self palette-val) f0-15)
)
(set! (-> *palette-fade-controls* control 2 fade) (-> self palette-val))
(case (current-status (-> self tasks))
(((task-status need-introduction))
(spool-push *art-control* "green-sagecage-outro-beat-boss-a" 0 self -1.0)
)
(((task-status need-reminder-a))
(spool-push *art-control* "green-sagecage-outro-beat-boss-b" 0 self -1.0)
)
(((task-status need-reminder))
(if (target-has-all-the-cells?)
(spool-push *art-control* "green-sagecage-outro-beat-boss-enough-cells" 0 self -1.0)
(spool-push *art-control* "green-sagecage-outro-beat-boss-need-cells" 0 self -1.0)
)
)
(((task-status need-reward-speech))
(spool-push *art-control* "green-sagecage-outro-big-finish" 0 self -1.0)
)
)
((-> (method-of-type process-taskable play-anim) trans))
)
)
;; failed to figure out what this is:
(defstate sage-finalboss-credits (sage-finalboss)
:exit (behavior ()
(when (= (current-status (-> self tasks)) (task-status invalid))
(set-blackout-frames 0)
(initialize! *game-info* 'game (the-as game-save #f) "title-start")
)
)
:code (behavior ()
(local-vars (s5-0 symbol))
(set! (-> self credits-played) #t)
(set-blackout-frames 0)
(set-blackout-frames (seconds 0.05))
(remove-setting! 'sfx-volume)
(remove-setting! 'ambient-volume)
(set-setting! 'allow-pause #f 0.0 0)
(set-setting! 'allow-progress #f 0.0 0)
(set-setting! 'music 'ogreboss 0.0 0)
(set! (-> self state-time) (-> *display* game-frame-counter))
(logior! (-> self draw status) (draw-status hidden))
(let ((gp-0 (-> self mask)))
(load-state-want-display-level 'finalboss 'special)
(logclear! (-> self mask) (process-mask pause progress))
(add-setting! 'process-mask 'set 0.0 (process-mask pause progress target))
(apply-settings *setting-control*)
(let ((f30-0 0.0)
(f28-0 0.5)
)
(until s5-0
(hide-hud-quick)
(set! (-> self credit-fade) 1.0)
(sage-finalboss-credit-particle)
(set! s5-0 (draw-end-credits (the int f30-0)))
(if (and *cheat-mode* (cpad-pressed? 0 triangle))
(set! s5-0 #t)
)
(cond
((paused?)
)
((and (< 1300.0 f30-0) (cpad-hold? 0 circle x))
(set! f28-0 (seek f28-0 16.0 (* 4.0 (seconds-per-frame))))
(+! f30-0 (* f28-0 (-> *display* time-adjust-ratio)))
)
(else
(set! f28-0 (seek f28-0 0.5 (* 16.0 (seconds-per-frame))))
(+! f30-0 (* f28-0 (-> *display* time-adjust-ratio)))
)
)
(suspend)
)
)
(set! (-> self mask) gp-0)
)
(load-state-want-display-level 'finalboss 'display)
(remove-setting! 'allow-pause)
(remove-setting! 'allow-progress)
(remove-setting! 'process-mask)
(remove-setting! 'music)
(apply-settings *setting-control*)
(set-blackout-frames (seconds 0.05))
(suspend-for (seconds 0.05)
)
(go-virtual hidden)
)
)
;; definition for method 39 of type sage-finalboss
(defmethod should-display? ((this sage-finalboss))
#f
)
;; definition for function sage-finalboss-extra-trans
;; INFO: Return type mismatch object vs none.
(defbehavior sage-finalboss-extra-trans sage-finalboss ()
(case (current-status (-> self tasks))
(((task-status need-reminder-a) (task-status need-reminder))
(send-event self 'play-anim)
)
)
(none)
)
;; definition for function sage-finalboss-extra-enter
;; INFO: Return type mismatch object vs none.
(defbehavior sage-finalboss-extra-enter sage-finalboss ()
(cond
((-> self kick-the-credits)
(set! (-> self kick-the-credits) #f)
(go sage-finalboss-credits)
)
((-> self kick-in-the-door)
(set! (-> self kick-in-the-door) #f)
(entity-birth-no-kill (entity-by-type power-right))
(entity-birth-no-kill (entity-by-type power-left))
(send-event
*target*
'change-mode
'final-door
(search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-right)))
(search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left)))
)
)
)
(none)
)
;; failed to figure out what this is:
(defstate hidden (sage-finalboss)
:virtual #t
:enter (behavior ()
(sage-finalboss-extra-enter)
((-> (method-of-type process-taskable hidden) enter))
(remove-setting! 'allow-progress)
)
:trans (behavior ()
(sage-finalboss-extra-trans)
((-> (method-of-type process-taskable hidden) trans))
)
)
;; failed to figure out what this is:
(defstate idle (sage-finalboss)
:virtual #t
:enter (behavior ()
(sage-finalboss-extra-enter)
((-> (method-of-type process-taskable idle) enter))
)
:trans (behavior ()
(sage-finalboss-extra-trans)
((-> (method-of-type process-taskable idle) trans))
)
)
;; definition for method 11 of type sage-finalboss
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! ((this sage-finalboss) (arg0 entity-actor))
(process-taskable-method-40 this arg0 *sage-finalboss-sg* 3 40 (new 'static 'vector :w 4096.0) 5)
(set! (-> this tasks) (get-task-control (game-task finalboss-movies)))
(set! (-> this redsage) (the-as handle #f))
(set! (-> this bluesage) (the-as handle #f))
(set! (-> this yellowsage) (the-as handle #f))
(set! (-> this assistant) (the-as handle #f))
(set! (-> this robotplat) (the-as handle #f))
(set! (-> this robotboss) (the-as handle #f))
(set! (-> this jak-white) (the-as handle #f))
(set! (-> this silodoor) (the-as handle #f))
(set! (-> this left-door) #f)
(set! (-> this right-door) #f)
(set! (-> this kick-in-the-door) #f)
(set! (-> this kick-the-credits) #f)
(set! (-> this credits-played) #f)
(set! (-> this part) (create-launch-control group-2d-credits-mist this))
(set! (-> this part matrix) (sprite-allocate-user-hvdf))
(set! (-> this particle-whiteout) (create-launch-control group-2d-big-door-whiteout this))
(set! (-> this particle-whiteout matrix) (sprite-allocate-user-hvdf))
(set! (-> this particle 0 part) (create-launch-control group-target-white-eco-ground this))
(set! (-> this particle 1 part) (create-launch-control group-target-white-eco-joints this))
(set! (-> this particle 2 part) (create-launch-control group-target-white-eco-hand-glow this))
(set! (-> this particle 3 part) (create-launch-control group-target-white-eco-hand-shot this))
(set! (-> this particle 7 part) (create-launch-control group-robotboss-blue-smoke this))
(set! (-> this particle 4 part) (create-launch-control group-robotboss-joints this))
(set! (-> this particle 5 part) (create-launch-control group-robotboss-explode this))
(set! (-> this particle 6 part) (create-launch-control group-robotboss-splash this))
(set! (-> this particle 8 part) (create-launch-control group-bigdoor-open this))
(dotimes (v1-37 9)
(set! (-> this particle v1-37 active) #f)
)
(set! (-> this palette-val) 0.0)
(+! (-> this root trans y) 2048.0)
(if (not (should-display? this))
(go (method-of-object this hidden))
(go (method-of-object this idle))
)
(none)
)