jak-project/goal_src/jak2/levels/ruins/ruins-scenes.gc
Tyler Wilding dd0a8a17b2
docs - first chunk of work documenting the files I glossed over (#2130)
- started documenting the files I glossed over, some are totally done,
others are just partially done
- I changed the decompiler to automatically initialize the
art-group-info from the json file. This makes updating gsrc, even a
single file at a time, have consistent naming
- Though I disabled this functionality for jak 1, as I have no idea if
using the ntsc art groups will cause a regression for different versions
- fix indentation for docstrings -- it still doesn't look great, but
this is now a formatting concern, rather than the docstring having a
bunch of happen-stance leading whitespace.
2023-01-15 11:33:39 -05:00

1705 lines
64 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: ruins-scenes.gc
;; name in dgo: ruins-scenes
;; dgos: RUI
;; DECOMP BEGINS
(defpartgroup group-ruins-slide-sparks :id 281 :bounds (static-bspherem 0 0 0 8) :parts ((sp-item 1247)))
(defpart 1247
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #x92 :page #xc))
(sp-rnd-flt spt-num 3.0 3.0 1.0)
(sp-flt spt-scale-x (meters 2.5))
(sp-int spt-rot-x 4)
(sp-flt spt-scale-y (meters 0.033))
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 128.0)
(sp-flt spt-omega 4.096)
(sp-rnd-flt spt-vel-y (meters 0.06666667) (meters 0.06666667) 1.0)
(sp-rnd-flt spt-fade-g -0.85 -1.7 1.0)
(sp-flt spt-fade-b -8.0)
(sp-rnd-flt spt-fade-a -0.21333334 -0.21333334 1.0)
(sp-rnd-flt spt-accel-y -6.826667 -2.7306666 1.0)
(sp-flt spt-friction 0.97)
(sp-int-plain-rnd spt-timer 50 149 1)
(sp-cpuinfo-flags sp-cpuinfo-flag-3)
(sp-func spt-func 'sparticle-motion-blur)
(sp-rnd-flt spt-conerot-x (degrees 45.0) (degrees 30.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 45.0) (degrees 90.0) 1.0)
)
)
(defskelgroup skel-awning awning awning-lod0-jg awning-idle-ja
((awning-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 3
)
(defskelgroup skel-flag flag flag-lod0-jg flag-idle-ja
((flag-lod0-mg (meters 20)) (flag-lod1-mg (meters 999999)))
:bounds (static-spherem 0 0 0 10)
:origin-joint-index 3
)
(defskelgroup skel-movie-flag flag flag-lod0-jg flag-idle-ja
((flag-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 3
)
(defskelgroup skel-precipice-a precipice-a precipice-a-lod0-jg precipice-a-idle-ja
((precipice-a-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 18
)
(defskelgroup skel-precipice-b precipice-b precipice-b-lod0-jg precipice-b-idle-ja
((precipice-b-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 26
)
(defskelgroup skel-ruins-tower-a ruins-tower-a ruins-tower-a-lod0-jg ruins-tower-a-idle-ja
((ruins-tower-a-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 1000)
:origin-joint-index 49
)
(defskelgroup skel-ruins-tower-b ruins-tower-b ruins-tower-b-lod0-jg ruins-tower-b-idle-ja
((ruins-tower-b-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 46
)
(defskelgroup skel-ruins-tower-c ruins-tower-c ruins-tower-c-lod0-jg ruins-tower-c-idle-ja
((ruins-tower-c-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 25
)
(defskelgroup skel-ruins-tower-d ruins-tower-d ruins-tower-d-lod0-jg ruins-tower-d-idle-ja
((ruins-tower-d-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 9
)
(defskelgroup skel-ruins-tower-e ruins-tower-e ruins-tower-e-lod0-jg ruins-tower-e-idle-ja
((ruins-tower-e-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 53
)
(defskelgroup skel-ruins-tower-f ruins-tower-f ruins-tower-f-lod0-jg ruins-tower-f-idle-ja
((ruins-tower-f-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 3
)
(defskelgroup skel-ruins-tower-rp ruins-tower-rp ruins-tower-rp-lod0-jg ruins-tower-rp-idle-ja
((ruins-tower-rp-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 1000)
:origin-joint-index 4
)
(defskelgroup skel-zipline zipline zipline-lod0-jg zipline-idle-ja
((zipline-lod0-mg (meters 999999)))
:bounds (static-spherem 0 0 0 100)
:origin-joint-index 4
)
(defun ruins-slide-sparks ((arg0 object) (position vector))
"Generates simple sparks (2D particles) at the location specified. This is used in the cutscene.
@param position The position to render the sparks at
TODO - first arg type?"
(let ((launch-func sp-launch-particles-var)
(2d-sys *sp-particle-system-2d*)
(sp-launcher (-> *part-id-table* 1247))
(matrix *launch-matrix*)
)
(set! (-> matrix trans quad) (-> position quad))
(launch-func
2d-sys
sp-launcher
matrix
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
0
(none)
)
(defpartgroup group-tower-test
:id 282
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 2)
:parts ((sp-item 1248))
)
(defpart 1248
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xbb :page #xc))
(sp-flt spt-num 0.0)
(sp-rnd-flt spt-scale-x (meters 10.5) (meters 0.25) 1.0)
(sp-flt spt-rot-x 2048.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 255.0)
(sp-rnd-flt spt-g 0.0 64.0 1.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3)
(sp-flt spt-userdata 4096.0)
)
)
(defpartgroup group-ruins-talkbox-speak
:id 283
:flags (unk-4 unk-6)
:bounds (static-bspherem 0 0 0 2)
:rotate ((degrees 4) (degrees 0) (degrees 0))
:parts ((sp-item 1249 :flags (is-3d bit6 bit7)))
)
(defpart 1249
:init-specs ((sp-tex spt-texture (new 'static 'texture-id :index #xcb :page #xc))
(sp-rnd-flt spt-num 0.0 0.3 1.0)
(sp-flt spt-y (meters 0.15))
(sp-flt spt-z (meters 0.4))
(sp-flt spt-scale-x (meters 0.1))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 16.0)
(sp-rnd-flt spt-vel-y (meters 0.0016666667) (meters 0.006666667) 1.0)
(sp-rnd-flt spt-scalevel-x (meters 0.01) (meters 0.0033333334) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-int spt-timer 100)
(sp-cpuinfo-flags sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 left-multiply-quat)
(sp-flt spt-userdata 2048.0)
(sp-int spt-next-time 50)
(sp-launcher-by-id spt-next-launcher 1250)
(sp-flt spt-rotate-y (degrees 0.0))
)
)
(defpart 1250
:init-specs ((sp-flt spt-fade-a -0.32))
)
(scene-method-16 (new 'static 'scene
:name "ruins-tower-victory"
:extra #f
:info #f
:mask-to-clear #x1282000
:entity "scene-stage-10"
:art-group "scenecamera"
:anim "ruins-tower-victory"
:parts 16
:command-list '((0 (kill "flag-1"))
(0 (kill "ruins-precipice-2"))
(0 (fadein (seconds (new 'static 'bfloat :data 0.166))))
(49 (part-tracker "group-land-poof-drt" entity "movie-flag" joint "poleA"))
(162 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"cd"
track
#t
duration
(frame-range 162 171)
)
)
(162 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"cf"
track
#t
duration
(frame-range 162 223)
)
)
(164 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"by"
track
#t
duration
(frame-range 164 235)
)
)
(164 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"cc"
track
#t
duration
(frame-range 164 172)
)
)
(172 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bs"
track
#t
duration
(frame-range 172 224)
)
)
(173 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bv"
track
#t
duration
(frame-range 173 227)
)
)
(174 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"br"
track
#t
duration
(frame-range 174 224)
)
)
(177 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bn"
track
#t
duration
(frame-range 177 226)
)
)
(177 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bq"
track
#t
duration
(frame-range 177 240)
)
)
(181 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bi"
track
#t
duration
(frame-range 181 251)
)
)
(183 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bj"
track
#t
duration
(frame-range 183 260)
)
)
(185 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bo"
track
#t
duration
(frame-range 185 257)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"a"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"b"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"c"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"d"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"e"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"g"
track
#t
duration
(frame-range 217 257)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"h"
track
#t
duration
(frame-range 217 257)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"i"
track
#t
duration
(frame-range 217 257)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"k"
track
#t
duration
(frame-range 217 261)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"l"
track
#t
duration
(frame-range 217 261)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"m"
track
#t
duration
(frame-range 217 261)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"n"
track
#t
duration
(frame-range 217 261)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"p"
track
#t
duration
(frame-range 217 261)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"q"
track
#t
duration
(frame-range 217 232)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"am"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"an"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"aq"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"ap"
track
#t
duration
(frame-range 217 266)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ar"
track
#t
duration
(frame-range 217 281)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"as"
track
#t
duration
(frame-range 217 243)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"av"
track
#t
duration
(frame-range 217 234)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"aw"
track
#t
duration
(frame-range 217 229)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ax"
track
#t
duration
(frame-range 217 233)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ay"
track
#t
duration
(frame-range 217 268)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"az"
track
#t
duration
(frame-range 217 288)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bb"
track
#t
duration
(frame-range 217 294)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bc"
track
#t
duration
(frame-range 217 267)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bd"
track
#t
duration
(frame-range 217 253)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bf"
track
#t
duration
(frame-range 217 238)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bg"
track
#t
duration
(frame-range 217 232)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bh"
track
#t
duration
(frame-range 217 257)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bk"
track
#t
duration
(frame-range 217 232)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bl"
track
#t
duration
(frame-range 217 239)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bm"
track
#t
duration
(frame-range 217 228)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bp"
track
#t
duration
(frame-range 217 225)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bt"
track
#t
duration
(frame-range 217 227)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bu"
track
#t
duration
(frame-range 217 226)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"bw"
track
#t
duration
(frame-range 217 223)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ce"
track
#t
duration
(frame-range 217 224)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"cg"
track
#t
duration
(frame-range 217 223)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ch"
track
#t
duration
(frame-range 217 237)
)
)
(217 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ci"
track
#t
duration
(frame-range 217 242)
)
)
(223 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-a"
joint
"o"
track
#t
duration
(frame-range 223 261)
)
)
(223 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"be"
track
#t
duration
(frame-range 223 238)
)
)
(228 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"at"
track
#t
duration
(frame-range 228 234)
)
)
(263 (part-tracker
"group-ruins-tower-trailer"
entity
"precipice-b"
joint
"ba"
track
#t
duration
(frame-range 263 281)
)
)
(282 (part-tracker
"group-ruins-tower-splash"
entity
"precipice-b"
joint
"ar"
track
#t
duration
(frame-range 282 283)
)
)
(282 (part-tracker
"group-ruins-tower-splash"
entity
"precipice-b"
joint
"ba"
track
#t
duration
(frame-range 282 283)
)
)
(353 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(354 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(355 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(356 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(357 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(358 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(359 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(360 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(361 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(362 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(363 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(364 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(365 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(366 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(367 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(368 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(369 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(370 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(371 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(372 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(373 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(374 (joint-eval ruins-slide-sparks entity "jak-highres" joint "LbigToe"))
(440 (task-close! "ruins-tower-resolution"))
(487 (part-tracker "group-land-poof-drt" entity "jak-highres" joint "LbigToe"))
(499 (part-tracker "group-land-poof-drt" entity "jak-highres" joint "LbigToe"))
(537 (part-tracker "group-land-poof-drt" entity "sidekick-highres" joint "main"))
(596 (part-tracker
"group-ruins-tower-explosion-medium"
entity
"ruins-tower-rp"
joint
"a_explode"
track
#t
duration
(frame-range 596 635)
)
)
(598 (part-tracker
"group-ruins-tower-explosion-large"
entity
"ruins-tower-rp"
joint
"as_explode"
track
#t
duration
(frame-range 598 635)
)
)
(612 (part-tracker
"group-ruins-tower-explosion-medium"
entity
"ruins-tower-rp"
joint
"at_explode"
track
#t
duration
(frame-range 612 635)
)
)
(623 (part-tracker
"group-ruins-tower-explosion-small"
entity
"ruins-tower-rp"
joint
"hm_explode"
track
#t
duration
(frame-range 623 635)
)
)
(635 (part-tracker
"group-ruins-tower-trailer-medium"
entity
"ruins-tower-rp"
joint
"a_trailer"
track
#t
duration
(frame-range 635 769)
)
)
(635 (part-tracker
"group-ruins-tower-trailer-large"
entity
"ruins-tower-rp"
joint
"as_trailer"
track
#t
duration
(frame-range 635 739)
)
)
(635 (part-tracker
"group-ruins-tower-trailer-medium"
entity
"ruins-tower-rp"
joint
"at_trailer"
track
#t
duration
(frame-range 635 741)
)
)
(635 (part-tracker
"group-ruins-tower-trailer-small"
entity
"ruins-tower-rp"
joint
"hm_trailer"
track
#t
duration
(frame-range 635 766)
)
)
(716 (part-tracker
"group-ruins-tower-splash-large"
entity
"ruins-tower-rp"
joint
"as_splash"
track
#t
duration
(frame-range 716 820)
)
)
(738 (part-tracker
"group-ruins-tower-splash-medium"
entity
"ruins-tower-rp"
joint
"at_splash"
track
#t
duration
(frame-range 738 820)
)
)
(762 (part-tracker
"group-ruins-tower-splash-medium"
entity
"ruins-tower-rp"
joint
"a_splash"
track
#t
duration
(frame-range 762 820)
)
)
(764 (part-tracker
"group-ruins-tower-splash-large"
entity
"ruins-tower-a"
joint
"a"
track
#t
duration
(frame-range 764 764)
)
)
(779 (part-tracker
"group-ruins-tower-splash-small"
entity
"ruins-tower-rp"
joint
"hm_splash"
track
#t
duration
(frame-range 779 820)
)
)
(780 (part-tracker
"group-ruins-tower-splash"
entity
"ruins-tower-e"
joint
"hm"
track
#t
duration
(frame-range 780 780)
)
)
(925 (fadeout (seconds (new 'static 'bfloat :data 0.166))))
)
:cut-list '(126 156 221 266 341 426 476 583 638 675 741 821)
:wait-ground-time (seconds 1)
:draw-target #f
:abort #t
:actor (new 'static 'boxed-array :type scene-actor
(new 'static 'scene-actor
:name "scenecamera"
:level #f
:art-group "skel-scenecamera"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:camera 4
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sidekick-highres"
:level 'sagehut
:art-group "skel-sidekick-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jak-highres"
:level 'sagehut
:art-group "skel-jak-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "awning"
:level 'ruins
:art-group "skel-awning"
:prefix ""
:draw-frames '((min max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "movie-flag"
:level 'ruins
:art-group "skel-movie-flag"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "precipice-a"
:level 'ruins
:art-group "skel-precipice-a"
:prefix ""
:draw-frames '((min max))
:scissor-frames '((min max))
:shadow-mask #x6
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "precipice-b"
:level 'ruins
:art-group "skel-precipice-b"
:prefix ""
:draw-frames '((min max))
:scissor-frames '((min max))
:shadow-mask #x6
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-a"
:level 'sagehut
:art-group "skel-ruins-tower-a"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-b"
:level 'sagehut
:art-group "skel-ruins-tower-b"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-c"
:level 'sagehut
:art-group "skel-ruins-tower-c"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-d"
:level 'sagehut
:art-group "skel-ruins-tower-d"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-e"
:level 'sagehut
:art-group "skel-ruins-tower-e"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-f"
:level 'sagehut
:art-group "skel-ruins-tower-f"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "ruins-tower-rp"
:level 'sagehut
:art-group "skel-ruins-tower-rp"
:prefix ""
:draw-frames '((440 max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "torn-highres"
:level 'sagehut
:art-group "skel-torn-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "zipline"
:level 'ruins
:art-group "skel-zipline"
:prefix ""
:draw-frames '((min max))
:scissor-frames '((min max))
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
)
:load-point-obj "ruins-movie"
:end-point-obj "ruins-movie"
:borrow '()
:sfx-volume -1.0
:ambient-volume -1.0
:music-volume -1.0
:blackout-end #t
:peaceful #t
:music-delay 1500.0
:save #t
)
)
(deftype flag (process-drawable)
"The flag in the ruins mission.
The scale will be linearly-interpolated based on the distance from the camera"
()
:heap-base #x50
:method-count-assert 21
:size-assert #xc8
:flag-assert #x15005000c8
(:methods
(idle () _type_ :state 20)
)
)
(defstate idle (flag)
:virtual #t
:code (the-as (function none :behavior flag) sleep-code)
:post (behavior ()
(ja :num! (loop!))
(let ((flag-scale (lerp-scale 1.0 2.5 (vector-vector-distance (camera-pos) (-> self root trans)) 81920.0 901120.0))
)
(set-vector! (-> self root scale) flag-scale flag-scale flag-scale 1.0)
)
(set! (-> *part-id-table* 267 init-specs 4 initial-valuef) 24576.0)
(set! (-> *part-id-table* 270 init-specs 3 initial-valuef) 65536.0)
(set! (-> *part-id-table* 268 init-specs 9 initial-valuef) 20.0)
(spawn (-> self part) (-> self root trans))
(when (task-complete? *game-info* (game-task ruins-tower))
(cleanup-for-death self)
(deactivate self)
)
(ja-post)
(none)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! flag ((obj flag) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(logclear! (-> obj mask) (process-mask actor-pause))
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-flag" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 78) obj))
(add-icon! *minimap* obj (the-as uint 16) (the-as int #f) (the-as vector #t) 0)
(go (method-of-object obj idle))
(none)
)
(deftype ruins-precipice (process-drawable)
"The edge of the ruins tower that the flag stands on
Touching it flips the `play?` field which will trigger the cutscene"
((play? symbol :offset-assert 200)
)
:heap-base #x50
:method-count-assert 21
:size-assert #xcc
:flag-assert #x15005000cc
(:methods
(idle () _type_ :state 20)
)
)
(defskelgroup skel-ruins-precipice ruins-precipice ruins-precipice-lod0-jg ruins-precipice-idle-ja
((ruins-precipice-lod0-mg (meters 999999)))
:bounds (static-spherem 5 0 5 12)
:origin-joint-index 3
)
(defstate idle (ruins-precipice)
:virtual #t
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
(the-as
object
(case event-type
(('trigger)
(when (not (-> self play?))
(set! (-> self play?) #t)
(process-spawn scene-player :init scene-player-init "ruins-tower-victory" #t #f)
)
)
(('touch 'attack)
(when (and (not (-> self play?)) *target* (zero? (logand (focus-status dark) (-> *target* focus-status))))
(set! (-> self play?) #t)
(process-spawn scene-player :init scene-player-init "ruins-tower-victory" #t #f)
)
)
)
)
)
:code (behavior ()
(until #f
(when (task-complete? *game-info* (game-task ruins-tower))
(cleanup-for-death self)
(deactivate self)
)
(if (and (and *target*
(and (>= 122880.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))
(zero? (logand (focus-status teleporting) (-> *target* focus-status)))
)
)
(< (fabs (- (-> self root trans y) (-> *target* control trans y))) 40960.0)
)
(gui-control-method-12
*gui-control*
self
(gui-channel art-load)
(gui-action queue)
"ruins-tower-victory"
0
-99.0
(new 'static 'sound-id)
)
)
(ja-post)
(suspend)
)
#f
(none)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod init-from-entity! ruins-precipice ((obj ruins-precipice) (arg0 entity-actor))
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
This commonly includes things such as:
- stack size
- collision information
- loading the skeleton group / bones
- sounds"
(let ((cshape (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((cshape-mesh (new 'process 'collide-shape-prim-mesh cshape (the-as uint 0) (the-as uint 0))))
(set! (-> cshape-mesh prim-core collide-as) (collide-spec obstacle))
(set! (-> cshape-mesh prim-core collide-with) (collide-spec jak player-list))
(set! (-> cshape-mesh prim-core action) (collide-action solid))
(set! (-> cshape-mesh transform-index) 3)
(set-vector! (-> cshape-mesh local-sphere) 2048.0 0.0 2048.0 49152.0)
(set! (-> cshape total-prims) (the-as uint 1))
(set! (-> cshape root-prim) cshape-mesh)
)
(set! (-> cshape nav-radius) (* 0.75 (-> cshape root-prim local-sphere w)))
(let ((v1-5 (-> cshape root-prim)))
(set! (-> cshape backup-collide-as) (-> v1-5 prim-core collide-as))
(set! (-> cshape backup-collide-with) (-> v1-5 prim-core collide-with))
)
(set! (-> obj root) cshape)
)
(process-drawable-from-entity! obj arg0)
(vector+! (-> obj root trans) (-> obj root trans) (new 'static 'vector :z 28672.0 :w 1.0))
(quaternion-rotate-y! (-> obj root quat) (-> obj root quat) -7198.0376)
(initialize-skeleton
obj
(the-as skeleton-group (art-group-get-by-name *level* "skel-ruins-precipice" (the-as (pointer uint32) #f)))
(the-as pair 0)
)
(set! (-> obj play?) #f)
(go (method-of-object obj idle))
(none)
)
(scene-method-16 (new 'static 'scene
:name "ruins-sacred-victory"
:extra #f
:info #f
:mask-to-clear #x1282000
:entity "scene-stage-10"
:art-group "scenecamera"
:anim "ruins-sacred-victory"
:parts 5
:command-list '((0 (want-force-vis 'sagehut #t))
(0 (fadein (seconds (new 'static 'bfloat :data 0.5))))
(545 (fadeout (seconds (new 'static 'bfloat :data 1.5))))
(10000 (task-close! "ruins-enemy-resolution"))
)
:cut-list '(61 151 211 301 396)
:wait-ground-time (seconds 1)
:draw-target #f
:abort #t
:actor (new 'static 'boxed-array :type scene-actor
(new 'static 'scene-actor
:name "scenecamera"
:level #f
:art-group "skel-scenecamera"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:camera 4
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sidekick-highres"
:level 'sagehut
:art-group "skel-sidekick-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jak-highres"
:level 'sagehut
:art-group "skel-jak-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
)
:load-point-obj "ruins-hut"
:end-point-obj "ruins-hut"
:borrow '()
:sfx-volume -1.0
:ambient-volume -1.0
:music-volume -1.0
:blackout-end #t
:peaceful #t
:music-delay 1500.0
:save #t
)
)
(scene-method-16
(new 'static 'scene
:name "ruins-get-to-hut-res"
:extra #f
:info #f
:mask-to-clear #x1282000
:entity "scene-stage-71"
:art-group "scenecamera"
:anim "ruins-get-to-hut-res"
:parts 14
:command-list '((-10
(want-force-vis 'sagehut #t)
(fadein (seconds (new 'static 'bfloat :data 0.333)))
(apply ,(lambda () (set-setting! 'rain 'abs 0 0) (none)))
)
(1 (joint-eval start-seed-effect entity "life-seed"))
(340 (part-tracker
"group-ruins-talkbox-speak"
entity
"talk-box"
joint
"main"
track
#t
duration
(frame-range 340 1630)
)
)
(10000 (task-close! "ruins-mech-resolution"))
)
:cut-list '(91 203 359 446 868 906 1137 1471 1540)
:wait-ground-time (seconds 1)
:draw-target #f
:abort #t
:actor (new 'static 'boxed-array :type scene-actor
(new 'static 'scene-actor
:name "scenecamera"
:level #f
:art-group "skel-scenecamera"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:camera 4
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sidekick-highres"
:level 'sagehut
:art-group "skel-sidekick-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jak-highres"
:level 'sagehut
:art-group "skel-jak-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "life-seed"
:level 'sagehut
:art-group "skel-life-seed"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "talk-box"
:level #f
:art-group "skel-talk-box"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
)
:load-point-obj "ruins-hut"
:end-point-obj (new 'static 'continue-point
:name "ruins-hut"
:level #f
:trans (new 'static 'vector :x 4333992.0 :y 205114.58 :z -2276633.5 :w 1.0)
:quat (new 'static 'vector :y -0.488 :w 0.8727)
:camera-trans (new 'static 'vector :x 4346192.5 :y 222824.45 :z -2308073.0 :w 1.0)
:camera-rot (new 'static 'inline-array vector3s 3
(new 'static 'vector3s :data (new 'static 'array float 3 0.9253 0.0 0.379))
(new 'static 'vector3s :data (new 'static 'array float 3 -0.0801 0.9773 0.1957))
(new 'static 'vector3s :data (new 'static 'array float 3 -0.3704 -0.2114 0.9044))
)
:on-goto '(apply
,(lambda ()
(kill-by-type mech *active-pool*)
(process-spawn
mech
:init mech-init
(entity-by-type mech)
(new 'static 'matrix3
:vector (new 'static 'inline-array vector 3
(new 'static 'vector :x 4140712.0 :y 147454.36 :z -2034059.6 :w 1.0)
(new 'static 'vector :w 1.0)
(new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
(process->handle *target*)
#x42c80000
:to *target*
)
(none)
)
)
:vis-nick 'ruins
:want (new 'static 'inline-array level-buffer-state 6
(new 'static 'level-buffer-state :name 'ruins :display? 'display :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name 'sagehut :display? 'display :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name #f :display? #f :force-vis? #f :force-inside? #f)
)
:want-sound (new 'static 'array symbol 3 'ruins1 'ruins3 'mech)
)
:borrow '()
:sfx-volume -1.0
:ambient-volume -1.0
:music-volume -1.0
:blackout-end #t
:peaceful #t
:music-delay 1500.0
:save #t
)
)