Files
jak-project/test/decompiler/reference/jak3/levels/comb/comb-obs_REF.gc
T
Matt Dallmeyer 70ea2a1f67 jak3 - fill out some text-id entries (#3494)
Slam Dozer > Ram Rod
2024-05-30 21:49:10 -04:00

1343 lines
47 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type comb-elevator
(deftype comb-elevator (elevator)
()
)
;; definition for method 3 of type comb-elevator
(defmethod inspect ((this comb-elevator))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type elevator inspect)))
(t9-0 this)
)
(label cfg-4)
this
)
;; failed to figure out what this is:
(defskelgroup skel-comb-elevator min-elevator min-elevator-lod0-jg min-elevator-idle-ja
((min-elevator-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 11)
)
;; definition for method 31 of type comb-elevator
(defmethod get-art-group ((this comb-elevator))
(art-group-get-by-name *level* "skel-comb-elevator" (the-as (pointer level) #f))
)
;; definition for method 32 of type comb-elevator
;; WARN: Return type mismatch collide-shape-moving vs none.
(defmethod init-collision! ((this comb-elevator))
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) cshape-reaction-default)
(set! (-> s5-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
(set! (-> s5-0 total-prims) (the-as uint 3))
(set! (-> s4-0 prim-core collide-as) (collide-spec pusher))
(set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list))
(set! (-> s4-0 prim-core action) (collide-action solid rideable))
(set! (-> s4-0 transform-index) 3)
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 45056.0)
(set! (-> s5-0 root-prim) s4-0)
)
(pusher-init s5-0)
(let ((v1-15 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-15 prim-core collide-as) (collide-spec pusher))
(set! (-> v1-15 prim-core collide-with) (collide-spec jak bot player-list))
(set! (-> v1-15 prim-core action) (collide-action solid rideable))
(set! (-> v1-15 transform-index) 3)
(set-vector! (-> v1-15 local-sphere) 0.0 0.0 0.0 45056.0)
)
(let ((v1-18 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint (shl #xfe00 16)))))
(set! (-> v1-18 prim-core action) (collide-action solid))
(set! (-> v1-18 transform-index) 3)
(set-vector! (-> v1-18 local-sphere) 0.0 0.0 0.0 45056.0)
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(let ((v1-21 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-21 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-21 prim-core collide-with))
)
(set! (-> this root) s5-0)
)
(none)
)
;; definition for method 29 of type comb-elevator
;; WARN: Return type mismatch sound-spec vs none.
(defmethod init-bounce-params! ((this comb-elevator))
(call-parent-method this)
(setup-masks (-> this draw) 1 2)
(set! (-> this draw light-index) (the-as uint 1))
(set! (-> this bounce-scale) 0.0)
(set! (-> this sound-running-loop) (static-sound-spec "min-elevator" :group 0))
(none)
)
;; definition for method 34 of type comb-elevator
;; WARN: Return type mismatch int vs none.
(defmethod base-plat-method-34 ((this comb-elevator))
0
(none)
)
;; definition of type comb-pillar
(deftype comb-pillar (process-focusable)
((center-pos vector :inline)
(attack-vel vector :inline)
(exploder-params joint-exploder-static-params)
(exploder-skel skeleton-group)
(exploder-anim uint32)
(hit-points float)
(incoming-attack-id int32)
)
(:state-methods
idle
explode
)
(:methods
(update-fade (_type_) none)
(set-cspec! (_type_) none)
(go-explode (_type_) none)
(set-attack-vel! (_type_ vector) none)
(on-attack (_type_ process attack-info object) symbol)
(on-impulse (_type_ rigid-body-impact) symbol)
)
)
;; definition for method 3 of type comb-pillar
(defmethod inspect ((this comb-pillar))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-focusable inspect)))
(t9-0 this)
)
(format #t "~2Tcenter-pos: #<vector @ #x~X>~%" (-> this center-pos))
(format #t "~2Tattack-vel: #<vector @ #x~X>~%" (-> this attack-vel))
(format #t "~2Texploder-params: ~A~%" (-> this exploder-params))
(format #t "~2Texploder-skel: ~A~%" (-> this exploder-skel))
(format #t "~2Texploder-anim: ~D~%" (-> this exploder-anim))
(format #t "~2Thit-points: ~f~%" (-> this hit-points))
(format #t "~2Tincoming-attack-id: ~D~%" (-> this incoming-attack-id))
(label cfg-4)
this
)
;; failed to figure out what this is:
(defskelgroup skel-comb-pillar comb-pillar comb-pillar-lod0-jg comb-pillar-idle-ja
((comb-pillar-lod0-mg (meters 999999)))
:bounds (static-spherem 0 70 0 75)
)
;; failed to figure out what this is:
(defskelgroup skel-comb-pillar-explode comb-pillar comb-pillar-explode-lod0-jg comb-pillar-explode-idle-ja
((comb-pillar-explode-lod0-mg (meters 999999)))
:bounds (static-spherem 0 6.5 0 7)
)
;; definition for symbol *comb-pillar-explode-params*, type joint-exploder-static-params
(define *comb-pillar-explode-params*
(new 'static 'joint-exploder-static-params
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 19 :parent-joint-index -1)
)
:collide-spec (collide-spec backgnd)
:art-level #f
)
)
;; definition for method 11 of type comb-pillar
(defmethod init-from-entity! ((this comb-pillar) (arg0 entity-actor))
(let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 penetrated-by) (penetrate))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0)))
(set! (-> s4-0 total-prims) (the-as uint 2))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set-vector! (-> s3-0 local-sphere) 0.0 286720.0 0.0 307200.0)
(set! (-> s4-0 root-prim) s3-0)
)
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-6 prim-core action) (collide-action solid))
(set! (-> v1-6 transform-index) 3)
(set-vector! (-> v1-6 local-sphere) 0.0 286720.0 0.0 307200.0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-9 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-9 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-9 prim-core collide-with))
)
(set! (-> this root) s4-0)
)
(process-drawable-from-entity! this arg0)
(let ((s5-1 (new 'stack-no-clear 'inline-array 'vector 1)))
(vector-y-quaternion! (-> s5-1 0) (-> this root quat))
(vector+float*! (-> this center-pos) (-> this root trans) (-> s5-1 0) 286720.0)
)
(initialize-skeleton
this
(the-as skeleton-group (art-group-get-by-name *level* "skel-comb-pillar" (the-as (pointer level) #f)))
(the-as pair 0)
)
(logclear! (-> this mask) (process-mask actor-pause))
(set! (-> this hit-points) 8.0)
(set! (-> this exploder-params) *comb-pillar-explode-params*)
(set! (-> this exploder-skel)
(the-as skeleton-group (art-group-get-by-name *level* "skel-comb-pillar-explode" (the-as (pointer level) #f)))
)
(set! (-> this exploder-anim) (the-as uint 7))
(set! (-> this draw lod-set lod 0 dist) 1228800.0)
(set! (-> this draw lod-set lod 1 dist) 1232896.0)
(set-cspec! this)
(go (method-of-object this idle))
)
;; definition for method 31 of type comb-pillar
;; WARN: Return type mismatch int vs none.
(defmethod set-cspec! ((this comb-pillar))
(iterate-prims
(-> this root)
(lambda ((arg0 collide-shape-prim))
(set! (-> arg0 prim-core collide-with) (collide-spec
backgnd
jak
bot
crate
civilian
enemy
obstacle
vehicle-sphere
hit-by-player-list
hit-by-others-list
player-list
collectable
pusher
shield
vehicle-sphere-no-probe
)
)
(set! (-> arg0 prim-core collide-as) (collide-spec obstacle vehicle-sphere vehicle-mesh))
(none)
)
)
(update-transforms (-> this root))
0
(none)
)
;; definition for method 30 of type comb-pillar
;; WARN: Return type mismatch int vs none.
(defmethod update-fade ((this comb-pillar))
(let ((f0-2 (fmax 0.0 (+ -81920.0 (vector-vector-distance (-> this center-pos) (camera-pos)))))
(f1-0 40960.0)
)
(cond
((< f0-2 f1-0)
(logior! (-> this draw status) (draw-control-status force-fade))
(set! (-> this draw force-fade) (the-as uint (the int (* 128.0 (/ f0-2 f1-0)))))
)
(else
(logclear! (-> this draw status) (draw-control-status force-fade))
)
)
)
(ja-post)
0
(none)
)
;; definition for method 32 of type comb-pillar
;; WARN: Return type mismatch int vs none.
(defmethod go-explode ((this comb-pillar))
(logclear! (-> this mask) (process-mask actor-pause))
(let ((v1-3 (-> this root root-prim)))
(set! (-> v1-3 prim-core collide-as) (collide-spec))
(set! (-> v1-3 prim-core collide-with) (collide-spec))
)
0
(logior! (-> this root penetrated-by) (penetrate vehicle))
(go (method-of-object this explode))
0
(none)
)
;; definition for method 27 of type comb-pillar
(defmethod get-inv-mass ((this comb-pillar))
0.125
)
;; definition for method 33 of type comb-pillar
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod set-attack-vel! ((this comb-pillar) (arg0 vector))
(set! (-> this attack-vel quad) (-> arg0 quad))
(if (< 81920.0 (vector-length (-> this attack-vel)))
(vector-normalize! (-> this attack-vel) 81920.0)
)
0
(none)
)
;; definition for method 34 of type comb-pillar
(defmethod on-attack ((this comb-pillar) (arg0 process) (arg1 attack-info) (arg2 object))
(vector-reset! (-> this attack-vel))
(let ((a1-1 (new 'stack-no-clear 'vector))
(f30-0 0.0)
)
(vector-reset! a1-1)
(when (logtest? (attack-mask attacker-velocity) (-> arg1 mask))
(vector-float*! a1-1 (-> arg1 attacker-velocity) 1.0)
(set-attack-vel! this a1-1)
)
(when (logtest? (attack-mask damage) (-> arg1 mask))
(if (>= (-> arg1 damage) 2.0)
(set! f30-0 (-> arg1 damage))
)
)
(set! (-> this hit-points) (- (-> this hit-points) f30-0))
)
(if (< (-> this hit-points) 0.0)
(go-explode this)
)
#t
)
;; definition for method 35 of type comb-pillar
(defmethod on-impulse ((this comb-pillar) (arg0 rigid-body-impact))
(let ((a1-1 (new 'stack-no-clear 'vector)))
(vector-float*! a1-1 (-> arg0 normal) (-> arg0 impulse))
(set-attack-vel! this a1-1)
)
(when (< 286720.0 (-> arg0 impulse))
(go-explode this)
#t
)
)
;; failed to figure out what this is:
(defstate idle (comb-pillar)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('impact-impulse)
(let ((a1-1 (-> block param 0)))
(on-impulse self (the-as rigid-body-impact a1-1))
)
)
(('attack)
(let ((s4-0 (the-as object (-> block param 1))))
(get-penetrate-using-from-attack-event (the-as process-drawable proc) block)
(when (!= (-> (the-as attack-info s4-0) id) (-> self incoming-attack-id))
(set! (-> self incoming-attack-id) (the-as int (-> (the-as attack-info s4-0) id)))
(on-attack self proc (the-as attack-info s4-0) (-> block param 0))
)
)
)
)
)
:code (behavior ()
(until #f
(suspend)
)
#f
)
:post (behavior ()
(update-fade self)
)
)
;; failed to figure out what this is:
(defstate explode (comb-pillar)
:virtual #t
:enter (behavior ()
(logior! (-> self draw status) (draw-control-status no-draw))
)
:code (behavior ()
(sound-play "sentry-explode")
(let ((gp-1 (new 'stack 'joint-exploder-tuning (the-as uint 0))))
(set! (-> gp-1 duration) (seconds 4))
(set! (-> gp-1 gravity) -163840.0)
(set! (-> gp-1 rot-speed) 5.0)
(vector+!
(-> gp-1 fountain-rand-transv-lo)
(new 'static 'vector :x -40960.0 :y 40960.0 :z -40960.0 :w 1.0)
(-> self attack-vel)
)
(vector+!
(-> gp-1 fountain-rand-transv-hi)
(new 'static 'vector :x 40960.0 :y 122880.0 :z 40960.0 :w 1.0)
(-> self attack-vel)
)
(process-spawn
joint-exploder
(-> self exploder-skel)
(-> self exploder-anim)
gp-1
(-> self exploder-params)
:name "joint-exploder"
:to self
:unk 0
)
)
(let ((gp-2 (current-time)))
(until (time-elapsed? gp-2 (seconds 2))
(suspend)
)
)
(cleanup-for-death self)
)
:post #f
)
;; definition of type comb-block
(deftype comb-block (process-focusable)
((attack-vel vector :inline)
(exploder-params joint-exploder-static-params)
(exploder-skel skeleton-group)
(exploder-anim uint32)
(hit-points float)
(incoming-attack-id int32)
(parts sparticle-launch-control 4)
)
(:state-methods
idle
explode
)
(:methods
(spawn-parts (_type_) none)
(set-cspec! (_type_) none)
(go-explode (_type_) none)
(set-attack-vel! (_type_ vector) none)
(on-attack (_type_ process attack-info object) symbol)
(on-impact (_type_ rigid-body-impact) symbol)
)
)
;; definition for method 3 of type comb-block
(defmethod inspect ((this comb-block))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-focusable inspect)))
(t9-0 this)
)
(format #t "~2Tattack-vel: #<vector @ #x~X>~%" (-> this attack-vel))
(format #t "~2Texploder-params: ~A~%" (-> this exploder-params))
(format #t "~2Texploder-skel: ~A~%" (-> this exploder-skel))
(format #t "~2Texploder-anim: ~D~%" (-> this exploder-anim))
(format #t "~2Thit-points: ~f~%" (-> this hit-points))
(format #t "~2Tincoming-attack-id: ~D~%" (-> this incoming-attack-id))
(format #t "~2Tparts[4] @ #x~X~%" (-> this parts))
(label cfg-4)
this
)
;; failed to figure out what this is:
(defskelgroup skel-comb-block comb-obstacle comb-obstacle-lod0-jg comb-obstacle-idle-ja
((comb-obstacle-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 11)
:origin-joint-index 5
)
;; failed to figure out what this is:
(defskelgroup skel-comb-block-explode comb-obstacle comb-obstacle-explode-lod0-jg comb-obstacle-explode-idle-ja
((comb-obstacle-explode-lod0-mg (meters 999999)))
:bounds (static-spherem 0 6.5 0 7)
)
;; definition for symbol *comb-block-explode-params*, type joint-exploder-static-params
(define *comb-block-explode-params*
(new 'static 'joint-exploder-static-params
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 19 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 20 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 21 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 22 :parent-joint-index -1)
)
:collide-spec (collide-spec backgnd)
:art-level #f
)
)
;; definition for method 7 of type comb-block
(defmethod relocate ((this comb-block) (offset int))
(dotimes (v1-0 4)
(if (nonzero? (-> this parts v1-0))
(&+! (-> this parts v1-0) offset)
)
)
(call-parent-method this offset)
)
;; definition for method 10 of type comb-block
(defmethod deactivate ((this comb-block))
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
(dotimes (s5-0 4)
(let ((a0-1 (-> this parts s5-0)))
(if (nonzero? a0-1)
(kill-particles a0-1)
)
)
)
(call-parent-method this)
(none)
)
;; definition for method 11 of type comb-block
(defmethod init-from-entity! ((this comb-block) (arg0 entity-actor))
(let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 penetrated-by) (penetrate))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0)))
(set! (-> s4-0 total-prims) (the-as uint 2))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 61440.0)
(set! (-> s4-0 root-prim) s3-0)
)
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(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 61440.0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-9 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-9 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-9 prim-core collide-with))
)
(set! (-> this root) s4-0)
)
(process-drawable-from-entity! this arg0)
(initialize-skeleton
this
(the-as skeleton-group (art-group-get-by-name *level* "skel-comb-block" (the-as (pointer level) #f)))
(the-as pair 0)
)
(logclear! (-> this mask) (process-mask actor-pause))
(set! (-> this hit-points) 0.1)
(set! (-> this exploder-params) *comb-block-explode-params*)
(set! (-> this exploder-skel)
(the-as skeleton-group (art-group-get-by-name *level* "skel-comb-block-explode" (the-as (pointer level) #f)))
)
(set! (-> this exploder-anim) (the-as uint 6))
(set! (-> this draw lod-set lod 0 dist) 1228800.0)
(set! (-> this draw lod-set lod 1 dist) 1232896.0)
(dotimes (s5-2 4)
(set! (-> this parts s5-2) (create-launch-control (-> *part-group-id-table* 1235) this))
)
(set-cspec! this)
(go (method-of-object this idle))
)
;; definition for method 31 of type comb-block
;; WARN: Return type mismatch int vs none.
(defmethod set-cspec! ((this comb-block))
(iterate-prims
(-> this root)
(lambda ((arg0 collide-shape-prim))
(set! (-> arg0 prim-core collide-with) (collide-spec
backgnd
jak
bot
crate
civilian
enemy
obstacle
vehicle-sphere
hit-by-player-list
hit-by-others-list
player-list
collectable
pusher
shield
vehicle-sphere-no-probe
)
)
(set! (-> arg0 prim-core collide-as) (collide-spec obstacle vehicle-sphere vehicle-mesh))
(none)
)
)
(update-transforms (-> this root))
0
(none)
)
;; definition for method 30 of type comb-block
;; WARN: Return type mismatch int vs none.
(defmethod spawn-parts ((this comb-block))
(dotimes (s5-0 4)
(let ((v1-0 (+ s5-0 5)))
(spawn (-> this parts s5-0) (-> this node-list data v1-0 bone transform trans))
)
)
(ja-post)
0
(none)
)
;; definition for method 32 of type comb-block
;; WARN: Return type mismatch int vs none.
(defmethod go-explode ((this comb-block))
(logclear! (-> this mask) (process-mask actor-pause))
(let ((v1-3 (-> this root root-prim)))
(set! (-> v1-3 prim-core collide-as) (collide-spec))
(set! (-> v1-3 prim-core collide-with) (collide-spec))
)
0
(logior! (-> this root penetrated-by) (penetrate vehicle))
(go (method-of-object this explode))
0
(none)
)
;; definition for method 27 of type comb-block
(defmethod get-inv-mass ((this comb-block))
0.5
)
;; definition for method 33 of type comb-block
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod set-attack-vel! ((this comb-block) (arg0 vector))
(set! (-> this attack-vel quad) (-> arg0 quad))
(if (< 81920.0 (vector-length (-> this attack-vel)))
(vector-normalize! (-> this attack-vel) 81920.0)
)
0
(none)
)
;; definition for method 34 of type comb-block
(defmethod on-attack ((this comb-block) (arg0 process) (arg1 attack-info) (arg2 object))
(vector-reset! (-> this attack-vel))
(let ((a1-1 (new 'stack-no-clear 'vector))
(f30-0 1.0)
)
(vector-reset! a1-1)
(when (logtest? (attack-mask attacker-velocity) (-> arg1 mask))
(vector-float*! a1-1 (-> arg1 attacker-velocity) 1.0)
(set-attack-vel! this a1-1)
)
(if (logtest? (attack-mask damage) (-> arg1 mask))
(set! f30-0 (-> arg1 damage))
)
(set! (-> this hit-points) (- (-> this hit-points) f30-0))
)
(if (< (-> this hit-points) 0.0)
(go-explode this)
)
#t
)
;; definition for method 35 of type comb-block
(defmethod on-impact ((this comb-block) (arg0 rigid-body-impact))
(let ((a1-1 (new 'stack-no-clear 'vector)))
(vector-float*! a1-1 (-> arg0 normal) (-> arg0 impulse))
(set-attack-vel! this a1-1)
)
(when (< 286720.0 (-> arg0 impulse))
(go-explode this)
#t
)
)
;; failed to figure out what this is:
(defstate idle (comb-block)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('impact-impulse)
(let ((a1-1 (-> block param 0)))
(on-impact self (the-as rigid-body-impact a1-1))
)
)
(('attack)
(let ((s4-0 (the-as object (-> block param 1))))
(get-penetrate-using-from-attack-event (the-as process-drawable proc) block)
(when (!= (-> (the-as attack-info s4-0) id) (-> self incoming-attack-id))
(set! (-> self incoming-attack-id) (the-as int (-> (the-as attack-info s4-0) id)))
(on-attack self proc (the-as attack-info s4-0) (-> block param 0))
)
)
)
)
)
:code (behavior ()
(until #f
(ja-no-eval :group! (ja-group) :num! (seek!) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek!))
)
)
#f
)
:post (behavior ()
(spawn-parts self)
)
)
;; failed to figure out what this is:
(defstate explode (comb-block)
:virtual #t
:enter (behavior ()
(logior! (-> self draw status) (draw-control-status no-draw))
)
:code (behavior ()
(sound-play "sentry-explode")
(let ((gp-1 (new 'stack-no-clear 'explosion-init-params)))
(set! (-> gp-1 spawn-point quad) (-> self node-list data 5 bone transform trans quad))
(quaternion-identity! (-> gp-1 spawn-quat))
(set! (-> gp-1 radius) 40960.0)
(set! (-> gp-1 scale) 1.0)
(set! (-> gp-1 group) (-> *part-group-id-table* 217))
(set! (-> gp-1 collide-with)
(collide-spec backgnd jak crate civilian enemy obstacle vehicle-sphere hit-by-others-list player-list pusher)
)
(set! (-> gp-1 damage) 7.0)
(set! (-> gp-1 damage-scale) 1.0)
(set! (-> gp-1 vehicle-damage-factor) 1.0)
(set! (-> gp-1 vehicle-impulse-factor) 1.0)
(set! (-> gp-1 ignore-proc) (process->handle #f))
(explosion-spawn gp-1 (the-as process-drawable *default-pool*))
)
(let ((gp-2 (new 'stack 'joint-exploder-tuning (the-as uint 0))))
(set! (-> gp-2 duration) (seconds 4))
(set! (-> gp-2 gravity) -163840.0)
(set! (-> gp-2 rot-speed) 10.0)
(vector+!
(-> gp-2 fountain-rand-transv-lo)
(new 'static 'vector :x -245760.0 :y 245760.0 :z -245760.0 :w 1.0)
(-> self attack-vel)
)
(vector+!
(-> gp-2 fountain-rand-transv-hi)
(new 'static 'vector :x 245760.0 :y 245760.0 :z 245760.0 :w 1.0)
(-> self attack-vel)
)
(process-spawn
joint-exploder
(-> self exploder-skel)
(-> self exploder-anim)
gp-2
(-> self exploder-params)
:name "joint-exploder"
:to self
:unk 0
)
)
(let ((gp-3 (current-time)))
(until (time-elapsed? gp-3 (seconds 2))
(suspend)
)
)
(cleanup-for-death self)
)
:post #f
)
;; definition of type comb-energy-ring
(deftype comb-energy-ring (process-focusable)
((speed float)
(hum-id sound-id)
(bolt lightning-bolt)
(shocked-player symbol)
)
(:state-methods
idle
)
(:methods
(update-sound-and-bolt (_type_) none)
(set-cspec! (_type_) none)
(comb-energy-ring-method-31 (_type_) none)
(init-bolt! (_type_) none)
(update-bolt (_type_ vector vector) none)
)
)
;; definition for method 3 of type comb-energy-ring
(defmethod inspect ((this comb-energy-ring))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-focusable inspect)))
(t9-0 this)
)
(format #t "~2Tspeed: ~f~%" (-> this speed))
(format #t "~2Thum-id: ~D~%" (-> this hum-id))
(format #t "~2Tbolt: ~A~%" (-> this bolt))
(format #t "~2Tshocked-player: ~A~%" (-> this shocked-player))
(label cfg-4)
this
)
;; failed to figure out what this is:
(defskelgroup skel-comb-energy-ring comb-energy-ring comb-energy-ring-lod0-jg comb-energy-ring-idle-ja
((comb-energy-ring-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 29)
)
;; failed to figure out what this is:
(if #t
(set! *comb-energy-ring-lightning-width* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 0.5 :y 4.5 :z 5.5 :w 6.5)
:one-over-x-deltas (new 'static 'vector :x 4.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
;; failed to figure out what this is:
(if (or (zero? *comb-energy-ring-lightning*) (!= loading-level global))
(set! *comb-energy-ring-lightning* (new 'loading-level 'lightning-appearance))
)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* base-alpha) 1.0)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* tex-id) (the-as uint #x403f00))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* blend-mode) (the-as uint 1))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* alpha-1-curve) *curve-unity*)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* alpha-1-mode) (the-as uint 3))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* alpha-1-repeat-dist) 262144.0)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* alpha-2-curve) #f)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* alpha-2-mode) (the-as uint 3))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* alpha-2-repeat-dist) 4096.0)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* width-curve) *comb-energy-ring-lightning-width*)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* width-mode) (the-as uint 2))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* width-repeat-dist) 4096.0)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* uv-repeat-dist) 28672.0)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* regenerate-time-start) (seconds 0.167))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* regenerate-time-end) (seconds 0.25))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* width-range-start) 18841.6)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* width-range-end) 20480.0)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* fade-time) (seconds 0.1))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* uv-shift?) #f)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* uv-shift-speed) (seconds 0.1))
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* use-sprite-bucket?) #t)
;; failed to figure out what this is:
(set! (-> *comb-energy-ring-lightning* use-accurate-interp?) #t)
;; definition for method 32 of type comb-energy-ring
;; WARN: Return type mismatch int vs none.
(defmethod init-bolt! ((this comb-energy-ring))
(set! (-> this bolt) (new 'process 'lightning-bolt))
(init! (-> this bolt) 4 16 *comb-energy-ring-lightning*)
0
(none)
)
;; definition for method 33 of type comb-energy-ring
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod update-bolt ((this comb-energy-ring) (arg0 vector) (arg1 vector))
(let ((gp-0 (-> this bolt)))
(set! (-> gp-0 inner-point-travel-time) (seconds 1))
(set! (-> gp-0 snap-inner-points?) #t)
(set! (-> gp-0 fractal-reduction) 0.4)
(set! (-> gp-0 generate-mode) (the-as uint 1))
(set! (-> gp-0 appearance) *comb-energy-ring-lightning*)
(set! (-> gp-0 num-active-spans) 1)
(dotimes (v1-6 4)
(set! (-> gp-0 spans data v1-6 random-offset-size-start) 4096.0)
(set! (-> gp-0 spans-internal data v1-6 num-inner-points) 14)
(set! (-> gp-0 spans data v1-6 inner-random-offset-size) 4096.0)
)
(set! (-> gp-0 span-pts-start data 0 quad) (-> arg0 quad))
(set! (-> gp-0 span-pts-start data 2 quad) (-> arg0 quad))
(set! (-> gp-0 span-pts-start data 1 quad) (-> arg1 quad))
(set! (-> gp-0 span-pts-start data 3 quad) (-> arg1 quad))
(set! (-> gp-0 spans data 0 random-offset-size-start) 0.0)
(set! (-> gp-0 spans data 1 random-offset-size-start) 0.0)
(set! (-> gp-0 spans data 2 random-offset-size-start) 0.0)
(set! (-> gp-0 spans data 3 random-offset-size-start) 0.0)
(set! (-> gp-0 spans-internal data 3 num-inner-points) 0)
(if (and (!= (lightning-bolt-method-14 gp-0) 0) (!= (lightning-bolt-method-14 gp-0) 1))
(lightning-bolt-method-13 gp-0 1)
)
(lightning-bolt-method-11 gp-0)
(lightning-bolt-method-12 gp-0)
)
0
(none)
)
;; definition for method 11 of type comb-energy-ring
(defmethod init-from-entity! ((this comb-energy-ring) (arg0 entity-actor))
(let ((s4-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 penetrated-by) (the-as penetrate -1))
(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 action) (collide-action solid))
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 114688.0)
(set! (-> s4-0 root-prim) s3-0)
)
(let ((v1-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> v1-7 prim-core action) (collide-action solid))
(set! (-> v1-7 transform-index) 6)
)
(let ((v1-9 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> v1-9 prim-core action) (collide-action solid))
(set! (-> v1-9 transform-index) 5)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(let ((v1-12 (-> s4-0 root-prim)))
(set! (-> s4-0 backup-collide-as) (-> v1-12 prim-core collide-as))
(set! (-> s4-0 backup-collide-with) (-> v1-12 prim-core collide-with))
)
(set! (-> s4-0 event-self) 'touched)
(set! (-> this root) s4-0)
)
(process-drawable-from-entity! this arg0)
(initialize-skeleton
this
(the-as skeleton-group (art-group-get-by-name *level* "skel-comb-energy-ring" (the-as (pointer level) #f)))
(the-as pair 0)
)
(logclear! (-> this mask) (process-mask actor-pause))
(init-bolt! this)
(set! (-> this shocked-player) #f)
(set! (-> this speed) (rand-vu-float-range 0.25 0.5))
(set! (-> this draw lod-set lod 0 dist) 1228800.0)
(set! (-> this draw lod-set lod 1 dist) 1232896.0)
(set! (-> this hum-id) (new 'static 'sound-id))
(set-cspec! this)
(go (method-of-object this idle))
)
;; definition for method 7 of type comb-energy-ring
;; WARN: Return type mismatch process-focusable vs comb-energy-ring.
(defmethod relocate ((this comb-energy-ring) (offset int))
(if (nonzero? (-> this bolt))
(&+! (-> this bolt) offset)
)
(the-as comb-energy-ring ((method-of-type process-focusable relocate) this offset))
)
;; definition for method 30 of type comb-energy-ring
;; WARN: Return type mismatch int vs none.
(defmethod set-cspec! ((this comb-energy-ring))
(iterate-prims
(-> this root)
(lambda ((arg0 collide-shape-prim))
(set! (-> arg0 prim-core collide-with) (collide-spec
backgnd
jak
bot
crate
civilian
enemy
obstacle
vehicle-sphere
hit-by-player-list
hit-by-others-list
player-list
collectable
pusher
shield
vehicle-sphere-no-probe
)
)
(set! (-> arg0 prim-core collide-as) (collide-spec obstacle vehicle-sphere vehicle-mesh))
(none)
)
)
(let ((s5-0 (-> this root root-prim)))
(mem-copy!
(the-as pointer (-> (the-as collide-shape-prim-group s5-0) child 0 local-sphere))
(the-as pointer (new 'static 'vector :w 16384.0))
16
)
(mem-copy!
(the-as pointer (-> (the-as collide-shape-prim-group s5-0) child 1 local-sphere))
(the-as pointer (new 'static 'vector :w 16384.0))
16
)
)
(update-transforms (-> this root))
0
(none)
)
;; definition for method 29 of type comb-energy-ring
;; WARN: Return type mismatch int vs none.
(defmethod update-sound-and-bolt ((this comb-energy-ring))
(cond
((< (vector-vector-distance (-> this root trans) (target-pos 0)) 409600.0)
(if (zero? (-> this hum-id))
(set! (-> this hum-id) (new-sound-id))
)
(sound-play "rotating-arc" :id (-> this hum-id))
)
(else
(when (nonzero? (-> this hum-id))
(sound-stop (-> this hum-id))
(set! (-> this hum-id) (new 'static 'sound-id))
0
)
)
)
(ja-post)
(update-transforms (-> this root))
(let ((v1-13 (-> this root root-prim)))
(update-bolt
this
(the-as vector (-> (the-as collide-shape-prim-group v1-13) child 0 prim-core))
(the-as vector (-> (the-as collide-shape-prim-group v1-13) child 1 prim-core))
)
)
0
(none)
)
;; definition for method 27 of type comb-energy-ring
(defmethod get-inv-mass ((this comb-energy-ring))
0.125
)
;; failed to figure out what this is:
(defstate idle (comb-energy-ring)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('touched)
(format #t "energy-ring got touched event from ~s~%" proc)
(when (not (-> self shocked-player))
(set! (-> self shocked-player) #t)
(sound-play "ring-shock")
(send-event
proc
'attack
#f
(static-attack-info
:mask (vehicle-impulse-factor)
((id (new-attack-id)) (damage 32.0) (vehicle-damage-factor 1.0) (vehicle-impulse-factor 0.0))
)
)
)
)
)
)
:code (behavior ()
(until #f
(ja-no-eval :group! (ja-group) :num! (seek! max (-> self speed)) :frame-num 0.0)
(until (ja-done? 0)
(suspend)
(ja :num! (seek! max (-> self speed)))
)
)
#f
)
:post (behavior ()
(update-sound-and-bolt self)
)
)
;; definition of type comb-turbo
(deftype comb-turbo (process-drawable)
((root collide-shape :override)
(touch-time time-frame)
(player-got symbol)
(boost float)
(plane vector :inline)
(mat matrix :inline)
)
(:state-methods
idle
die
)
(:methods
(init-collision! (_type_) none)
(init-fields! (_type_) none)
(comb-turbo-method-24 (_type_) none)
)
)
;; definition for method 3 of type comb-turbo
(defmethod inspect ((this comb-turbo))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 this)
)
(format #t "~2Ttouch-time: ~D~%" (-> this touch-time))
(format #t "~2Tplayer-got: ~A~%" (-> this player-got))
(format #t "~2Tboost: ~f~%" (-> this boost))
(format #t "~2Tplane: #<vector @ #x~X>~%" (-> this plane))
(format #t "~2Tmat: #<matrix @ #x~X>~%" (-> this mat))
(label cfg-4)
this
)
;; failed to figure out what this is:
(defstate idle (comb-turbo)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(format #t "comb-turbo: got event ~s from ~s~%" message proc)
(when (= message 'touched)
(let ((s5-1 proc))
(when (and (if (type? s5-1 vehicle)
s5-1
)
(not (-> self player-got))
)
(set! (-> self player-got) #t)
(send-event proc 'turbo-pad (-> self boost))
(let ((v0-1 (current-time)))
(set! (-> self touch-time) v0-1)
v0-1
)
)
)
)
)
:code sleep-code
:post (behavior ()
(if (and (-> self player-got) (time-elapsed? (-> self touch-time) (seconds 3)))
(go-virtual die)
)
0
)
)
;; failed to figure out what this is:
(defstate die (comb-turbo)
:virtual #t
:code (behavior ()
(set-time! (-> self state-time))
(let ((v1-3 (-> self root root-prim)))
(set! (-> v1-3 prim-core collide-as) (collide-spec))
(set! (-> v1-3 prim-core collide-with) (collide-spec))
)
0
(until (time-elapsed? (-> self state-time) (seconds 2))
(suspend)
)
)
)
;; definition for method 22 of type comb-turbo
;; WARN: Return type mismatch int vs none.
(defmethod init-collision! ((this comb-turbo))
(let ((s5-0 (new 'process 'collide-shape this (collide-list-enum usually-hit-by-player))))
(set! (-> s5-0 penetrate-using) (the-as penetrate -1))
(set! (-> s5-0 penetrated-by) (the-as penetrate -1))
(let ((v1-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> v1-4 prim-core collide-as) (collide-spec obstacle))
(set-vector! (-> v1-4 local-sphere) 0.0 0.0 0.0 32768.0)
(set! (-> s5-0 total-prims) (the-as uint 1))
(set! (-> s5-0 root-prim) v1-4)
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(let ((v1-7 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-7 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-7 prim-core collide-with))
)
(set! (-> s5-0 event-self) 'touched)
(set! (-> this root) s5-0)
)
0
(none)
)
;; definition for method 23 of type comb-turbo
;; INFO: Used lq/sq
;; WARN: Return type mismatch int vs none.
(defmethod init-fields! ((this comb-turbo))
(let ((s5-0 (-> this mat)))
(let ((s4-0 (new 'stack-no-clear 'quaternion)))
(quaternion-rotate-local-y! s4-0 (-> this root quat) 16384.0)
(quaternion->matrix s5-0 s4-0)
)
(set! (-> s5-0 trans quad) (-> this root trans quad))
(set! (-> this plane quad) (-> s5-0 rvec quad))
)
(set! (-> this plane w) (- (vector-dot (-> this plane) (-> this root trans))))
(update-transforms (-> this root))
(set! (-> this player-got) #f)
(set! (-> this boost) 1.0)
(set-time! (-> this touch-time))
0
(none)
)
;; definition for method 11 of type comb-turbo
(defmethod init-from-entity! ((this comb-turbo) (arg0 entity-actor))
(init-collision! this)
(process-drawable-from-entity! this arg0)
(init-fields! this)
(go (method-of-object this idle))
)
;; definition of type task-manager-lightjak-training-shield
(deftype task-manager-lightjak-training-shield (task-manager)
((gui-id sound-id)
)
(:methods
(print-text (_type_ text-id) none)
)
)
;; definition for method 3 of type task-manager-lightjak-training-shield
(defmethod inspect ((this task-manager-lightjak-training-shield))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type task-manager inspect)))
(t9-0 this)
)
(format #t "~2Tgui-id: ~D~%" (-> this gui-id))
(label cfg-4)
this
)
;; definition for method 32 of type task-manager-lightjak-training-shield
;; WARN: Return type mismatch float vs none.
(defmethod print-text ((this task-manager-lightjak-training-shield) (arg0 text-id))
(when (= (get-status *gui-control* (-> this gui-id)) (gui-status active))
(let ((s5-1
(new 'stack 'font-context *font-default-matrix* 32 290 0.0 (font-color default) (font-flags shadow kerning))
)
)
(set! (-> s5-1 flags) (font-flags shadow kerning middle middle-vert large))
(let ((v1-4 s5-1))
(set! (-> v1-4 width) (the float 440))
)
(let ((v1-5 s5-1))
(set! (-> v1-5 height) (the float 80))
)
(let ((v1-6 s5-1))
(set! (-> v1-6 scale) 0.8)
)
(let ((s4-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* arg0 #f))
(s4-0 *temp-string* s5-1 #f 44 (bucket-id hud-draw-hud-alpha))
)
)
)
(none)
)
;; failed to figure out what this is:
(defstate active (task-manager-lightjak-training-shield)
:virtual #t
:enter (behavior ()
(if *target*
(send-event *target* 'get-pickup (pickup-type eco-pill-light) 100.0)
)
(set! (-> self gui-id)
(add-process *gui-control* self (gui-channel message) (gui-action play) (-> self name) 81920.0 0)
)
(let ((t1-1 (the-as uint #x3810000040020)))
(set-setting! 'features 'clear (shr t1-1 32) t1-1)
)
)
:exit (behavior ()
(send-event *target* 'get-pickup (pickup-type health) 100.0)
)
:code (behavior ()
(while (not (and *target*
(focus-test? *target* light)
(and (focus-test? *target* light) (nonzero? (-> *target* lightjak)))
(nonzero? (-> *target* lightjak shield-start-time))
)
)
(if (not (and *target* (focus-test? *target* light)))
(send-event *target* 'get-pickup (pickup-type eco-pill-light) 100.0)
)
(print-text self (text-id text-05f8))
(suspend)
)
(let ((gp-0 (current-time)))
(until (time-elapsed? gp-0 (seconds 6))
(print-text self (text-id light-jak-shield-how-to))
(suspend)
)
)
(send-event *target* 'end-mode 'lightjak)
(go-virtual complete)
)
)