jak-project/goal_src/jak2/levels/sewer/sewer-scenes.gc

1340 lines
40 KiB
Common Lisp
Raw Normal View History

;;-*-Lisp-*-
(in-package goal)
;; name: sewer-scenes.gc
;; name in dgo: sewer-scenes
;; dgos: SEB, SWB
(declare-type sew-gunturret enemy)
;; DECOMP BEGINS
(defpartgroup group-sewer-explode0
:id 151
:duration (seconds 3)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 2)
:parts ((sp-item 1458 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 32) :length (seconds 0.085))
(sp-item 1459 :period (seconds 32) :length (seconds 0.035) :offset 10)
(sp-item 1460 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 32) :length (seconds 0.335) :offset 25)
(sp-item 1461 :fade-after (meters 60) :period (seconds 32) :length (seconds 0.117) :offset 10)
(sp-item 1462 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1463 :period (seconds 32) :length (seconds 0.017))
(sp-item 1464 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1465 :period (seconds 32) :length (seconds 0.017))
)
)
(defpart 1463
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:y (meters -2.5))
(:scale-x (meters 32))
(:rot-x (degrees 45))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 96.0)
(:scalevel-x (meters 0.5))
(:rotvel-z (degrees 0.3))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g -1.28)
(:fade-b -5.1)
(:fade-a 0.0)
(:timer (seconds 0.217))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 40960.0)
(:next-time (seconds 0.1))
(:next-launcher 1466)
)
)
(defpart 1466
:init-specs ((:scalevel-x (meters -0.2857143))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g -3.6571429)
(:fade-b 0.0)
(:fade-a -2.7428572)
)
)
(defpart 1465
:init-specs ((:texture (new 'static 'texture-id :index #xca :page #xc))
(:num 1.0)
(:scale-x (meters 120))
(:rot-x (degrees 45))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 24.0)
(:scalevel-x (meters 0.13333334))
(:rotvel-z (degrees 0.3))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g -4.266667)
(:fade-b -4.266667)
(:fade-a 0.0)
(:timer (seconds 0.5))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
(:userdata 40960.0)
(:next-time (seconds 0.25))
(:next-launcher 1467)
)
)
(defpart 1467
:init-specs ((:scalevel-x (meters 0))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.85333335)
(:fade-g -1.7066667)
(:fade-b -1.7066667)
(:fade-a -0.64)
)
)
(defpart 1461
:init-specs ((:texture (new 'static 'texture-id :index #x92 :page #xc))
(:num 16.0)
(:y (meters -3.5) (meters 2))
(:scale-x (meters 2.5))
(:rot-x 4)
(:scale-y (meters 0.1) (meters 0.2))
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 64.0 32.0)
(:omega (degrees 0.0675))
(:vel-y (meters 0.26666668) (meters 0.2))
(:fade-b -8.0)
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
(:friction 0.9 0.08)
(:timer (seconds 1.5) (seconds 0.997))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.05))
(:next-launcher 1468)
(:conerot-x (degrees 0) (degrees 140))
(:conerot-y (degrees 0) (degrees 10000))
(:rotate-y (degrees 90))
)
)
(defpart 1468
:init-specs ((:r 255.0)
(:g 255.0)
(:b 0.0)
(:fade-r 0.0)
(:fade-g -2.6133332)
(:fade-b -1.7066667)
(:fade-a -0.096 -0.096)
(:next-time (seconds 0.25))
(:next-launcher 1469)
)
)
(defpart 1469
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))
)
(defpart 1464
:init-specs ((:texture (new 'static 'texture-id :index #x34 :page #xc))
(:num 5.0 5.0)
(:y (meters -2.5))
(:scale-x (meters 3) (meters 2))
(:rot-x 4)
(:rot-z (degrees 0) (degrees 360) :store)
(:scale-y (meters 8) (meters 4))
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 32.0 32.0)
(:vel-y (meters 0.033333335) (meters 0.06666667))
(:scalevel-x (meters 0.033333335) (meters 0.13333334))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g -0.36)
(:fade-b -4.24)
(:fade-a -0.26666668)
(:friction 0.92 0.02)
(:timer (seconds 3.335))
(:flags (sp-cpuinfo-flag-2))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.085))
(:next-launcher 1470)
(:conerot-x '*sp-temp*)
(:rotate-y (degrees 90))
(:conerot-radius (meters 0) (meters 2))
)
)
(defpart 1470
:init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.55)
(:fade-g -2.95)
(:fade-b -3.3)
(:next-time (seconds 0.1) (seconds 0.03))
(:next-launcher 1471)
)
)
(defpart 1471
:init-specs ((:scalevel-x (meters 0.008333334) (meters 0.008333334))
(:scalevel-y :copy scalevel-x)
(:fade-r -1.2944444)
(:fade-g -0.7111111)
(:fade-b -0.2)
(:fade-a -0.225 -0.225)
)
)
(defpart 1462
:init-specs ((:texture (new 'static 'texture-id :index #x33 :page #xc))
(:birth-func 'birth-func-texture-group)
(:num 16.0 10.0)
(:y (meters -2.5))
(:scale-x (meters 3) (meters 2))
(:rot-z (degrees 0))
(:scale-y (meters 6.8) (meters 1.2))
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 32.0 32.0)
(:vel-y (meters 0) (meters 0.13333334))
(:scalevel-x (meters 0.06666667) (meters 0.13333334))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g -0.36)
(:fade-b -4.24)
(:fade-a -0.32)
(:friction 0.94)
(:timer (seconds 3.335))
(:flags (sp-cpuinfo-flag-2))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc03300))
(:next-time (seconds 0.085))
(:next-launcher 1472)
(:conerot-x (degrees 0) (degrees 360))
(:rotate-y (degrees 90))
(:conerot-radius (meters 0) (meters 8))
)
)
(defpart 1472
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:next-time (seconds 0.017) (seconds 0.065)) (:next-launcher 1473))
)
(defpart 1473
:init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.44)
(:fade-g -2.36)
(:fade-b -2.64)
(:next-time (seconds 0.117) (seconds 0.047))
(:next-launcher 1474)
)
)
(defpart 1474
:init-specs ((:scalevel-x (meters 0.008333334) (meters 0.008333334))
(:scalevel-y :copy scalevel-x)
(:fade-r -1.2)
(:fade-g -0.7111111)
(:fade-b -0.2)
(:fade-a -0.06545454 -0.06545454)
(:next-time (seconds 0.5) (seconds 0.097))
(:next-launcher 1475)
)
)
(defpart 1475
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.1125))
)
(defpart 1460
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
(:num 6.0 8.0)
(:x (meters 0.25))
(:y (meters -2.5))
(:scale-x (meters 3) (meters 5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 16.0 48.0)
(:vel-y (meters 0.06666667) (meters 0.4))
(:scalevel-x (meters 0.013333334) (meters 0.013333334))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g -0.18)
(:fade-b -2.12)
(:accel-y (meters -0.00033333333) (meters -0.0023333333))
(:friction 0.88 0.02)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2))
(:next-time (seconds 0.117) (seconds 0.047))
(:next-launcher 1476)
(:conerot-x (degrees 0) (degrees 360))
(:rotate-y (degrees 90))
(:conerot-radius (meters 3) (meters 5))
)
)
(defpart 1476
:init-specs ((:scalevel-x (meters 0.0016666667))
(:scalevel-y :copy scalevel-x)
(:fade-r 0.0)
(:fade-g 0.02)
(:fade-b 0.23555556)
(:next-time (seconds 0.15) (seconds 0.047))
(:next-launcher 1477)
)
)
(defpart 1477
:init-specs ((:fade-r -0.5543478) (:fade-g -0.5543478) (:fade-b -0.5543478) (:fade-a -0.10666667 -0.10666667))
)
(defpart 1458
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 4.0 8.0)
(:x (meters 0) (meters 0.6))
(:y (meters -2.5))
(:scale-x (meters 8.5) (meters 8))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 70.0 20.0)
(:g 70.0 20.0)
(:b 70.0 20.0)
(:a 0.0 40.0)
(:vel-y (meters 0) (meters 0.2))
(:scalevel-x (meters 0.033333335) (meters 0.086666666))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:fade-r 3.3)
(:fade-g 3.12)
(:fade-b 1.18)
(:fade-a 1.76)
(:friction 0.89)
(:timer (seconds 2.367))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
(:next-time (seconds 0.117) (seconds 0.047))
(:next-launcher 1478)
(:conerot-x (degrees -1440) (degrees 2880))
(:rotate-y (degrees 90))
)
)
(defpart 1478
:init-specs ((:scalevel-x (meters 0.0033333334))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.53333336)
(:fade-g -1.9666667)
(:fade-b -2.2)
(:fade-a -0.41666666)
(:next-time (seconds 0.15) (seconds 0.047))
(:next-launcher 1479)
)
)
(defpart 1479
:init-specs ((:scalevel-x (meters 0))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.38833332)
(:fade-g -0.21333334)
(:fade-b -0.028333334)
(:fade-a -0.38833332)
)
)
(defpart 1459
:init-specs ((:texture (new 'static 'texture-id :index #x31 :page #xc))
(:num 9.0)
(:y (meters -2.5))
(:scale-x (meters 4) (meters 8))
(:rot-x 4)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 1) (meters 0.5))
(:r 128.0 128.0)
(:g 96.0)
(:b 64.0)
(:a 64.0 64.0)
(:scalevel-x (meters 0.13333334) (meters 0.4))
(:fade-g 1.6)
(:fade-b 3.2)
(:fade-a -1.6)
(:timer (seconds 0.3))
(:flags (sp-cpuinfo-flag-2))
)
)
(defpartgroup group-sewer-explode1
:id 346
:duration (seconds 3)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 2)
:parts ((sp-item 1458 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 32) :length (seconds 0.085))
(sp-item 1459 :period (seconds 32) :length (seconds 0.035) :offset 10)
(sp-item 1460 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 32) :length (seconds 0.335) :offset 25)
(sp-item 1461 :fade-after (meters 60) :period (seconds 32) :length (seconds 0.117) :offset 10)
(sp-item 1462 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1463 :period (seconds 32) :length (seconds 0.017))
(sp-item 1464 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1465 :period (seconds 32) :length (seconds 0.017))
)
)
(defpartgroup group-sewer-explode2
:id 347
:duration (seconds 3)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 2)
:parts ((sp-item 1458 :fade-after (meters 200) :falloff-to (meters 200) :period (seconds 32) :length (seconds 0.067))
(sp-item 1459 :period (seconds 32) :length (seconds 0.035) :offset 10)
(sp-item 1460 :fade-after (meters 120) :falloff-to (meters 120) :period (seconds 32) :length (seconds 0.335) :offset 25)
(sp-item 1461 :fade-after (meters 60) :period (seconds 32) :length (seconds 0.117) :offset 5)
(sp-item 1462 :period (seconds 32) :length (seconds 0.167) :offset 10)
(sp-item 1463 :period (seconds 32) :length (seconds 0.017))
(sp-item 1464 :period (seconds 32) :length (seconds 0.135) :offset 15)
(sp-item 1465 :period (seconds 32) :length (seconds 0.017))
(sp-item 1480 :period (seconds 32) :length (seconds 2.667))
)
)
(defpart 1480
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.25 0.2)
(:x (meters 0) (meters 16))
(:y (meters -4))
(:scale-x (meters 4) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 0.0)
(:vel-y (meters 0.01) (meters 0.016666668))
(:scalevel-x (meters 0.013333334) (meters 0.013333334))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.10666667 0.13333334)
(:accel-y (meters -0.00016666666) (meters -0.00033333333))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2))
(:next-time (seconds 1))
(:next-launcher 1481)
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 1481
:init-specs ((:fade-a -0.08 -0.08))
)
(defpartgroup group-sewer-gun-laser-beam
:id 348
:flags (unk-4)
:bounds (static-bspherem 0 0 0 1)
:parts ((sp-item 1482 :flags (bit6 bit7)) (sp-item 1483 :flags (bit6 bit7)) (sp-item 1484 :flags (is-3d bit6 bit7)))
)
(defpart 1483
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:scale-x (meters 0.4) (meters 0.1))
(:rot-x (degrees 1.125))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 32.0 8.0)
(:b :copy g)
(:a 48.0 16.0)
(:rotvel-z (degrees 0.3))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 1.0)
(:rotate-y (degrees 0))
)
)
(defpart 1482
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:scale-x (meters 0.1) (meters 0.05))
(:rot-x (degrees 1.125))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 128.0)
(:b :copy g)
(:a 64.0 32.0)
(:rotvel-z (degrees 0.3))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 glow))
(:userdata 1.0)
(:rotate-y (degrees 0))
)
)
(defpart 1484
:init-specs ((:texture (new 'static 'texture-id :index #x4c :page #xc))
(:num 3.0)
(:z (meters 8))
(:scale-x (meters 0.025) (meters 0.005))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y (meters 20))
(:r 255.0)
(:g :copy r)
(:b :copy g)
(:a 20.0 8.0)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 left-multiply-quat))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#xc04c00
#xc04d00
#xc04e00
#xc04f00
#xc05000
#xc05100
#xc05200
#xc05300
#xc05400
#xc05500
#xc05600
#xc05700
#xc05800
#xc05900
#xc05a00
#xc05b00
#xc05c00
#xc05d00
#xc05e00
#xc05f00
#xc06000
#xc06100
#xc06200
#xc06300
#xc06400
#xc06500
#xc06600
#xc06700
#xc06800
#xc06900
#xc06a00
#xc06b00
)
)
(:func 'sparticle-texture-animate)
(:rotate-y (degrees 0))
)
)
(defpartgroup group-sewer-key-pull-out
:id 349
:linger-duration (seconds 1.5)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1485) (sp-item 1486) (sp-item 1487))
)
(defpart 1485
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 2.0)
(:scale-x (meters 1) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 138.0)
(:g 85.0 16.0)
(:b 64.0 16.0)
(:a 16.0 32.0)
(:vel-y (meters 0.02) (meters 0.01))
(:scalevel-x (meters 0.0033333334))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.16)
(:accel-y (meters -0.00033333333))
(:friction 0.95)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 60) (degrees 30))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 1486
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 8.0)
(:scale-x (meters 0.5) (meters 0.25))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 96.0 16.0)
(:b 64.0 16.0)
(:a 16.0 16.0)
(:vel-y (meters 0.053333335) (meters 0.02))
(:scalevel-x (meters 0.0016666667))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.21333334)
(:accel-y (meters -0.00033333333))
(:friction 0.95)
(:timer (seconds 0.5))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 60) (degrees 30))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 1487
:init-specs ((:texture (new 'static 'texture-id :index #x26 :page #xc))
(:num 32.0)
(:x (meters -0.4) (meters 0.8))
(:y (meters -0.1) (meters 0.4))
(:z (meters -0.4) (meters 0.8))
(:scale-x (meters 0.03) (meters 0.02))
(:scale-y :copy scale-x)
(:r 148.0)
(:g 85.0 16.0)
(:b 64.0 16.0)
(:a 64.0 64.0)
(:vel-y (meters 0.015) (meters 0.006666667))
(:fade-a -0.42666668)
(:accel-y (meters -0.0013333333) (meters 0.00066666666))
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 30) (degrees 50.000004))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0.5))
)
)
(scene-method-16
(new 'static 'scene
:name "sewer-drain-res"
:extra #f
:info #f
:mask-to-clear (process-mask movie enemy platform projectile)
:entity "scene-stage-30"
:art-group "scenecamera"
:anim "sewer-drain-res"
:parts 8
:command-list '((0 (task-close! "sewer-board-resolution") (fadein (frame-time-30 10)))
(400 (part-tracker "group-sewer-key-pull-out" entity "sew-gold-key" joint "key" duration (frame-time 5)))
)
:cut-list '(70 330 441 498 591)
: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 'sewer
:art-group "skel-sidekick-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jak-highres"
:level 'sewer
:art-group "skel-jak-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sew-gold-key"
:level 'sewer
:art-group "skel-sew-gold-key"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
)
:load-point-obj "sewer-start"
:end-point-obj #f
: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 "sewer-blow-up-statue-res"
:extra #f
:info #f
:mask-to-clear (process-mask movie enemy platform projectile)
:entity "scene-stage-40"
:art-group "scenecamera"
:anim "sewer-blow-up-statue-res"
:parts 15
:command-list '((0
(kill "sewer-part-366")
(kill "sewer-part-367")
(kill "sewer-part-368")
(kill "sewer-part-369")
(fadein (seconds (new 'static 'bfloat :data 0.333)))
(send-event "jinx-sewer-1" 'hide #t)
(send-event "grim-sewer-1" 'hide #t)
(send-event "mog-sewer-1" 'hide #t)
)
(200
(send-event "jinx" 'segment 1024 770)
(send-event "mog" 'segment 32768 131074)
(send-event "grim" 'segment 16 770)
)
(362 (send-event "jinx" 'segment 0 6208) (send-event "mog" 'segment 0 16384) (send-event "grim" 'segment 0 8))
(365 (send-event "sew-mar-statue-5" 'hide))
(375
(part-tracker
"group-sewer-explode0"
entity
"particleman"
joint
"particleA"
track
#t
duration
(frame-range (new 'static 'bfloat :data 375.0) (new 'static 'bfloat :data 475.0))
)
)
(377 (apply ,(lambda :behavior scene-player () (set-sewesc-explosion!))))
(390
(apply ,(lambda :behavior scene-player () (set-sewesc-explosion!)))
(part-tracker
"group-sewer-explode1"
entity
"particleman"
joint
"particleB"
track
#t
duration
(frame-range (new 'static 'bfloat :data 390.0) (new 'static 'bfloat :data 490.0))
)
)
(395
(apply ,(lambda :behavior scene-player () (set-sewesc-explosion!)))
(part-tracker
"group-sewer-explode2"
entity
"particleman"
joint
"particleC"
track
#t
duration
(frame-range (new 'static 'bfloat :data 395.0) (new 'static 'bfloat :data 495.0))
)
)
(418 (apply ,(lambda :behavior scene-player () (set-sewesc-explosion!))))
(2340 (fadeout (seconds (new 'static 'bfloat :data 0.333))))
(10000
(send-event "sew-mar-statue-5" 'trigger)
(task-close! "sewer-escort-resolution")
(talker-spawn "krew003")
)
)
:cut-list '(86 161 296 326 361 376 396 416 539 571 620 681 731 781)
: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 "particleman"
:level 'sewesc
:art-group "skel-particleman"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sidekick-highres"
:level 'sewesc
:art-group "skel-sidekick-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jak-highres"
:level 'sewesc
:art-group "skel-jak-highres"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sew-mar-statue-explode-a"
:level 'sewesc
:art-group "skel-sew-mar-statue-explode-a"
:prefix "a-"
:draw-frames '((min max))
:scissor-frames '((369 376) (541 542) (620 692) (731 781))
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sew-mar-statue-explode-b"
:level 'sewesc
:art-group "skel-sew-mar-statue-explode-b"
:prefix "b-"
:draw-frames '((min max))
:scissor-frames '((369 376) (541 542) (620 692) (731 781))
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "heart-of-mar"
:level 'sewesc
:art-group "skel-heart-of-mar"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jinx"
:level 'sewesc
:art-group "skel-jinx"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:draw-seg #x1ae2
:no-draw-seg #x3e51c
)
(new 'static 'scene-actor
:name "mog"
:level 'sewesc
:art-group "skel-jinx"
:prefix "mog-"
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:draw-seg #x26002
:no-draw-seg #x19ffc
)
(new 'static 'scene-actor
:name "grim"
:level 'sewesc
:art-group "skel-jinx"
:prefix "grim-"
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:draw-seg #x28e
:no-draw-seg #x3fd70
)
)
:load-point-obj "sewesc-start"
:end-point-obj (new 'static 'continue-point
:name "sewesc-start"
:level #f
:flags (continue-flags change-continue)
:trans (new 'static 'vector :x 5541148.0 :y -363968.9 :z 2435194.5 :w 1.0)
:quat (new 'static 'vector :y 0.0482 :w 0.9988)
:camera-trans (new 'static 'vector :x 5518817.0 :y -344878.7 :z 2399633.5 :w 1.0)
:camera-rot (new 'static 'inline-array vector3s 3
(new 'static 'vector3s :data (new 'static 'array float 3 0.8481 0.0 -0.5297))
(new 'static 'vector3s :data (new 'static 'array float 3 0.0787 0.9888 0.126))
(new 'static 'vector3s :data (new 'static 'array float 3 0.5238 -0.1486 0.8387))
)
:on-goto #f
:vis-nick 'sewesc
:want (new 'static 'inline-array level-buffer-state 6
(new 'static 'level-buffer-state :name 'sewescb :display? 'display :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name 'sewesc :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 'sewer4 'sewer5 'sewer6)
)
: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-task #xb0
)
)
(deftype fake-jinx-bomb-info (basic)
((handle handle :offset-assert 8)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
(define *fake-jinx-bomb-info* (new 'static 'fake-jinx-bomb-info))
(set! (-> *fake-jinx-bomb-info* handle) (the-as handle #f))
(scene-method-16
(new 'static 'scene
:name "sewer-hosehead"
:extra #f
:info #f
:mask-to-clear (process-mask movie)
:entity "scene-stage-66"
:art-group "scenecamera"
:anim "sewer-hosehead"
:parts 4
:command-list '((0
(fadein (seconds (new 'static 'bfloat :data 0.333)))
(send-event "jinx-sewer-1" 'hide #t)
(send-event "grim-sewer-1" 'hide #t)
(send-event "mog-sewer-1" 'hide #t)
(send-event "jinx" 'segment 0 1026)
(send-event "mog" 'segment 0 32770)
(send-event "grim" 'segment 0 18)
(kill "sew-wall-3")
(send-event "jinx-sewer-1" 'request 'no-bomb)
(apply
,(lambda :behavior scene-player
()
(let ((gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'quaternion))
)
(set-vector! gp-0 5705928.5 -364089.75 2060228.6 1.0)
(quaternion-identity! s5-0)
(set! (-> *fake-jinx-bomb-info* handle)
(ppointer->handle
(process-spawn
jinx-bomb
gp-0
s5-0
(level-get *level* 'sewesc)
0
#f
#f
:to (ppointer->process (-> *setting-control* user-current movie))
)
)
)
)
(none)
)
)
)
(13
(apply
,(lambda :behavior scene-player
()
(send-event (handle->process (-> *fake-jinx-bomb-info* handle)) 'trigger)
(none)
)
)
)
(128 (apply ,(lambda :behavior scene-player () (spawn-hosehead-fakes) (none))))
(184
(apply
,(lambda :behavior scene-player
()
(hosehead-fake-trigger 8)
(hosehead-fake-trigger 9)
(hosehead-fake-trigger 12)
(hosehead-fake-trigger 19)
(hosehead-fake-trigger 20)
(none)
)
)
)
(211 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 7) (none))))
(237 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 10) (hosehead-fake-trigger 22) (none))))
(249 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 3) (none))))
(256 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 11) (none))))
(257 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 2) (none))))
(260 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 25) (none))))
(262 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 15) (none))))
(265 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 29) (none))))
(268
(send-event "hal-sewer-1" 'hosehead-fake 14)
(apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 14) (none)))
)
(275
(send-event "hal-sewer-1" 'hosehead-fake 13)
(apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 13) (none)))
)
(293 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 4) (hosehead-fake-trigger 23) (none))))
(299 (apply ,(lambda :behavior scene-player () (hosehead-fake-trigger 24) (none))))
(354 (send-event *target* 'change-mode 'gun #f (unbox 1)))
(368
(part-tracker "group-sewer-gun-laser-beam" entity "gun" joint "laser" track #t duration (frame-range 368 400))
)
(10000
(send-event "jinx-sewer-1" 'hide #f)
(send-event "grim-sewer-1" 'hide #f)
(send-event "mog-sewer-1" 'hide #f)
(task-close! "sewer-escort-explode-wall2")
)
)
:cut-list '(55 181 350)
: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 'sewesc
:art-group "skel-sidekick-highres"
:prefix ""
:draw-frames '((min 181) (350 max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "jak-highres"
:level 'sewesc
:art-group "skel-jak-highres"
:prefix ""
:draw-frames '((min 181) (350 max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "sew-wall"
:level 'sewesc
:art-group "skel-sew-wall"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "hosehead"
:level 'sewesc
:art-group "skel-hosehead"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
)
(new 'static 'scene-actor
:name "gun"
:level #f
:art-group "skel-gun"
:prefix ""
:draw-frames '((350 max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:no-draw-seg #x4
)
(new 'static 'scene-actor
:name "jinx"
:level 'sewesc
:art-group "skel-jinx"
:prefix ""
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:draw-seg #x1ae2
:no-draw-seg #x3e51c
)
(new 'static 'scene-actor
:name "mog"
:level 'sewesc
:art-group "skel-jinx"
:prefix "mog-"
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:draw-seg #x26002
:no-draw-seg #x19ffc
)
(new 'static 'scene-actor
:name "grim"
:level 'sewesc
:art-group "skel-jinx"
:prefix "grim-"
:draw-frames '((min max))
:scissor-frames '()
:light-index #x1e
:flags #x1
:shadow-flags -1
:shadow-volume-joint #f
:draw-seg #x28e
:no-draw-seg #x3fd70
)
)
:load-point-obj "sewesc-start"
:end-point-obj (new 'static 'continue-point
:name "sewesc-start"
:level #f
:flags (continue-flags change-continue)
:trans (new 'static 'vector :x 5608474.5 :y -363960.3 :z 1988017.4 :w 1.0)
:quat (new 'static 'vector :y -0.6775 :w -0.7354)
:camera-trans (new 'static 'vector :x 5562796.5 :y -344327.78 :z 1985962.4 :w 1.0)
:camera-rot (new 'static 'inline-array vector3s 3
(new 'static 'vector3s :data (new 'static 'array float 3 0.0457 0.0 -0.9989))
(new 'static 'vector3s :data (new 'static 'array float 3 0.1258 0.992 0.0057))
(new 'static 'vector3s :data (new 'static 'array float 3 0.9909 -0.126 0.0454))
)
:on-goto #f
:vis-nick 'sewesc
:want (new 'static 'inline-array level-buffer-state 6
(new 'static 'level-buffer-state :name 'sewescb :display? 'display :force-vis? #f :force-inside? #f)
(new 'static 'level-buffer-state :name 'sewesc :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 'sewer4 'sewer5 'sewer6)
)
: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-task #xaf
)
)
(defmethod draw hud-gunturret ((obj hud-gunturret))
(set-hud-piece-position!
(the-as hud-sprite (-> obj sprites))
(the int (+ 457.0 (* 130.0 (-> obj offset))))
205
)
(format (clear (-> obj strings 0 text)) "~D" (-> obj values 0 current))
(set-as-offset-from! (the-as hud-sprite (-> obj strings 0 pos)) (the-as vector4w (-> obj sprites)) -20 24)
((method-of-type hud draw) obj)
0
(none)
)
(defmethod update-values hud-gunturret ((obj hud-gunturret))
(set! (-> obj values 0 target) (the int (-> *game-info* counter)))
((method-of-type hud update-values) obj)
0
(none)
)
(defmethod init-callback hud-gunturret ((obj hud-gunturret))
(set! (-> obj level) (level-get *level* 'sewerb))
(set! (-> obj gui-id)
(add-process *gui-control* obj (gui-channel hud-middle-right) (gui-action hidden) (-> obj name) 81920.0 0)
)
(logior! (-> obj flags) (hud-flags show))
(set! (-> obj sprites 0 tex) (lookup-texture-by-id (new 'static 'texture-id :page #xd37)))
(set! (-> obj sprites 0 flags) (the-as uint 4))
(set! (-> obj sprites 0 scale-x) 0.7)
(set! (-> obj sprites 0 scale-y) 0.7)
(alloc-string-if-needed obj 0)
(set! (-> obj strings 0 scale) 0.6)
(set! (-> obj strings 0 flags) (font-flags kerning middle large))
0
(none)
)
(set-subtask-hook!
*game-info*
(game-task-node sewer-enemy-blow-up-turrets)
TASK_MANAGER_INIT_HOOK
(lambda :behavior task-manager
()
(while (!= (level-status *level* 'sewer) 'active)
(suspend)
)
(set! (-> *game-info* controller 0) (process->handle self))
(let ((a0-6 (entity-by-type sew-gunturret)))
(set! (-> self actor-group 0) (res-lump-struct a0-6 'actor-groups (pointer entity-actor)))
)
(when (-> self actor-group 0)
(set! (-> self data-int32 0) (the-as int (-> self actor-group 0 0)))
(set! (-> self data-int32 1) (the-as int (-> self actor-group 0 0)))
)
(when (-> self actor-group 0)
(dotimes (gp-1 (the-as int (-> self actor-group 0 0)))
(let ((t0-1 (-> (&+ (-> self actor-group 0) (* gp-1 8)) 3)))
(if t0-1
(add-icon! *minimap* self (the-as uint 16) (the-as int #f) (the-as vector t0-1) 0)
)
)
)
#f
)
)
)
(set-subtask-hook!
*game-info*
(game-task-node sewer-enemy-blow-up-turrets)
TASK_MANAGER_CODE_HOOK
(lambda :behavior task-manager
()
(local-vars (sv-96 int) (sv-100 float) (sv-104 vector))
(set! (-> self start-time) (current-time))
(set! (-> self hud-timer) (ppointer->handle (process-spawn hud-gunturret :init hud-init-by-other :to self)))
(while (> (-> self data-int32 0) 0)
(when (!= (level-status *level* 'sewer) 'active)
(send-event (handle->process (-> self hud-timer)) 'hide-and-die)
(while (-> self child)
(suspend)
)
(deactivate self)
)
(set! sv-96 (-> self data-int32 1))
(set! sv-100 4095996000.0)
(set! sv-104 (target-pos 0))
(when (-> self actor-group 0)
(dotimes (gp-2 (the-as int (-> self actor-group 0 0)))
(let ((s5-0 (-> (&+ (-> self actor-group 0) (* gp-2 8)) 3)))
(let ((f0-1 (vector-vector-distance sv-104 (-> s5-0 extra trans))))
(if (< f0-1 sv-100)
(set! sv-100 f0-1)
)
)
(if (and s5-0 (logtest? (-> s5-0 extra perm status) (entity-perm-status dead)))
(set! sv-96 (+ sv-96 -1))
)
)
)
)
(when (< sv-96 (-> self data-int32 0))
(case sv-96
((3)
(talker-spawn-func (-> *talker-speech* 462) *entity-pool* (target-pos 0) (the-as region #f))
)
((2)
(talker-spawn-func (-> *talker-speech* 463) *entity-pool* (target-pos 0) (the-as region #f))
)
((1)
(talker-spawn-func (-> *talker-speech* 464) *entity-pool* (target-pos 0) (the-as region #f))
)
)
)
(let ((v1-51 sv-96))
(set! (-> self data-int32 0) v1-51)
(set! (-> *game-info* counter) (the float v1-51))
)
(when (and (= (-> self data-int32 1) sv-96)
(and (< sv-100 122880.0) (>= (- (current-time) (-> self beep-time)) (seconds 40)))
)
(talker-spawn-func (-> *talker-speech* 53) *entity-pool* (target-pos 0) (the-as region #f))
(set! (-> self beep-time) (current-time))
)
(suspend)
)
(go-virtual complete)
)
)