Files
jak-project/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc
T

2485 lines
104 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 176) (new 'static 'sparticle-launch-group
:length 21
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag screen-space)
:name "group-jungle-binoculars"
:launcher
(new 'static 'inline-array sparticle-group-item 21
(sp-item 803)
(sp-item 804)
(sp-item 805)
(sp-item 806)
(sp-item 807)
(sp-item 808)
(sp-item 809)
(sp-item 810)
(sp-item 811)
(sp-item 812)
(sp-item 813)
(sp-item 814)
(sp-item 815)
(sp-item 816)
(sp-item 817)
(sp-item 818)
(sp-item 819)
(sp-item 820)
(sp-item 821)
(sp-item 822)
(sp-item 823)
)
:bounds (new 'static 'sphere :w 4096.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 823) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x28 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 1.0))
(sp-flt spt-rot-z (degrees -45.0))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 0.0))
(sp-flt spt-conerot-radius (meters 1.45))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 815) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees -15.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 30.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 816) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 15.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 60.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 817) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 75.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 120.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 818) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 105.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 150.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 819) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 165.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 210.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 820) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 195.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 240.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 821) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 255.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 300.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 822) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x26 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.5))
(sp-flt spt-rot-z (degrees 285.0))
(sp-flt spt-scale-y (meters 0.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 330.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 811) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x27 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.75))
(sp-flt spt-rot-z (degrees 0.0))
(sp-flt spt-scale-y (meters 0.75))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 0.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 812) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x27 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.75))
(sp-flt spt-rot-z (degrees 90.0))
(sp-flt spt-scale-y (meters 0.75))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 90.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 813) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x27 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.75))
(sp-flt spt-rot-z (degrees 180.0))
(sp-flt spt-scale-y (meters 0.75))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 180.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 814) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x27 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.75))
(sp-flt spt-rot-z (degrees 270.0))
(sp-flt spt-scale-y (meters 0.75))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-flt spt-conerot-z (degrees 270.0))
(sp-flt spt-conerot-radius (meters 1.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 803) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 13
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters -2.9))
(sp-flt spt-y (meters 2.1))
(sp-flt spt-scale-x (meters 4.5))
(sp-flt spt-scale-y (meters 3.0))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 804) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 13
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters 1.11))
(sp-flt spt-y (meters 2.1))
(sp-flt spt-scale-x (meters 4.5))
(sp-flt spt-scale-y (meters 3.0))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 805) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters -1.11))
(sp-flt spt-y (meters 2.1))
(sp-flt spt-scale-x (meters 3.0))
(sp-flt spt-rot-z (degrees -90.0))
(sp-flt spt-scale-y (meters 4.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 806) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters 2.9))
(sp-flt spt-y (meters 2.1))
(sp-flt spt-scale-x (meters 3.0))
(sp-flt spt-rot-z (degrees -90.0))
(sp-flt spt-scale-y (meters 4.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 807) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters -2.9))
(sp-flt spt-y (meters -2.1))
(sp-flt spt-scale-x (meters 3.0))
(sp-flt spt-rot-z (degrees 90.0))
(sp-flt spt-scale-y (meters 4.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 808) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters 1.11))
(sp-flt spt-y (meters -2.1))
(sp-flt spt-scale-x (meters 3.0))
(sp-flt spt-rot-z (degrees 90.0))
(sp-flt spt-scale-y (meters 4.5))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 809) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters -1.11))
(sp-flt spt-y (meters -2.1))
(sp-flt spt-scale-x (meters 4.5))
(sp-flt spt-rot-z (degrees 180.0))
(sp-flt spt-scale-y (meters 3.0))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 810) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x25 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters 2.9))
(sp-flt spt-y (meters -2.1))
(sp-flt spt-scale-x (meters 4.5))
(sp-flt spt-rot-z (degrees 180.0))
(sp-flt spt-scale-y (meters 3.0))
(sp-flt spt-r 128.0)
(sp-flt spt-g 128.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 128.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit9)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 689)
(new 'static 'sparticle-launch-group
:length 4
:duration #xbb8
:linger-duration #x5dc
:name "group-jungle-binoculars-aligned"
:launcher
(new 'static 'inline-array sparticle-group-item 4 (sp-item 2840) (sp-item 2863) (sp-item 2864) (sp-item 2865))
:bounds (new 'static 'sphere :w 40960.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2865) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-rnd-flt spt-num 1.0 5.0 1.0)
(sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.1) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 0.0 32.0 1.0)
(sp-rnd-flt spt-g 0.0 96.0 1.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.006666667) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-flt spt-fade-a 0.85333335)
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-int-plain-rnd spt-next-time 75 74 1)
(sp-launcher-by-id spt-next-launcher 2866)
(sp-rnd-flt spt-conerot-x (degrees -360.0) (degrees 720.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees -1440.0) (degrees 2880.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2866)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.85333335) (sp-end))
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2864) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 20
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-rnd-flt spt-num 1.0 1.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 0.0 32.0 1.0)
(sp-rnd-flt spt-g 0.0 96.0 1.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-y (meters -0.0033333334) (meters 0.006666667) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-flt spt-fade-a 4.266667)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-int-plain-rnd spt-next-time 15 14 1)
(sp-launcher-by-id spt-next-launcher 2867)
(sp-rnd-flt spt-conerot-x (degrees -360.0) (degrees 720.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees -360.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters -2.0) (meters 4.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2867)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -4.266667) (sp-end))
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2863) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 15
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 0.15)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 32.0 1.0)
(sp-rnd-flt spt-g 128.0 96.0 1.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 128.0)
(sp-flt spt-scalevel-x (meters -0.0125))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.8)
(sp-int spt-timer 120)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2840) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 11
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-scale-x (meters 13.0) (meters 5.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 0.0 32.0 1.0)
(sp-rnd-flt spt-g 0.0 96.0 1.0)
(sp-rnd-flt spt-b 128.0 128.0 1.0)
(sp-rnd-flt spt-a 64.0 32.0 1.0)
(sp-int spt-timer 5)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-end)
)
)
)
;; definition of type periscope
(deftype periscope (process-drawable)
((root-override collide-shape :offset 112)
(y-offset meters :offset-assert 176)
(y-offset-grips meters :offset-assert 180)
(height meters :offset-assert 184)
(turn degrees :offset-assert 188)
(tilt degrees :offset-assert 192)
(target-turn degrees :offset-assert 196)
(target-tilt degrees :offset-assert 200)
(base vector :inline :offset-assert 208)
(reflector-trans vector :inline :offset-assert 224)
(next-reflector-trans vector :inline :offset-assert 240)
(prev-reflector-trans vector :inline :offset-assert 256)
(old-camera-matrix matrix :inline :offset-assert 272)
(reflector (pointer reflector) :offset-assert 336)
(gauge-rot degrees :offset-assert 340)
(lock-time uint64 :offset-assert 344)
(aligned? symbol :offset-assert 352)
(raised? symbol :offset-assert 356)
(player-touching-grips? symbol :offset-assert 360)
(grips-moving? symbol :offset-assert 364)
(sound-id sound-id :offset-assert 368)
(rise-sound-id sound-id :offset-assert 372)
(grips-sound-id sound-id :offset-assert 376)
(grips joint-mod-set-world :offset-assert 380)
(part-aligned sparticle-launch-control :offset-assert 384)
)
:heap-base #x120
:method-count-assert 20
:size-assert #x184
:flag-assert #x1401200184
(:states
periscope-activate
periscope-idle
periscope-player-control
periscope-power-on
periscope-wait-for-player
periscope-wait-for-power-input
)
)
;; definition for method 3 of type periscope
(defmethod inspect periscope ((obj periscope))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Ty-offset: (meters ~m)~%" (-> obj y-offset))
(format #t "~T~Ty-offset-grips: (meters ~m)~%" (-> obj y-offset-grips))
(format #t "~T~Theight: (meters ~m)~%" (-> obj height))
(format #t "~T~Tturn: (deg ~r)~%" (-> obj turn))
(format #t "~T~Ttilt: (deg ~r)~%" (-> obj tilt))
(format #t "~T~Ttarget-turn: (deg ~r)~%" (-> obj target-turn))
(format #t "~T~Ttarget-tilt: (deg ~r)~%" (-> obj target-tilt))
(format #t "~T~Tbase: ~`vector`P~%" (-> obj base))
(format #t "~T~Treflector-trans: ~`vector`P~%" (-> obj reflector-trans))
(format #t "~T~Tnext-reflector-trans: ~`vector`P~%" (-> obj next-reflector-trans))
(format #t "~T~Tprev-reflector-trans: ~`vector`P~%" (-> obj prev-reflector-trans))
(format #t "~T~Told-camera-matrix: ~`matrix`P~%" (-> obj old-camera-matrix))
(format #t "~T~Treflector: #x~X~%" (-> obj reflector))
(format #t "~T~Tgauge-rot: (deg ~r)~%" (-> obj gauge-rot))
(format #t "~T~Tlock-time: ~D~%" (-> obj lock-time))
(format #t "~T~Taligned?: ~A~%" (-> obj aligned?))
(format #t "~T~Traised?: ~A~%" (-> obj raised?))
(format #t "~T~Tplayer-touching-grips?: ~A~%" (-> obj player-touching-grips?))
(format #t "~T~Tgrips-moving?: ~A~%" (-> obj grips-moving?))
(format #t "~T~Tsound-id: ~D~%" (-> obj sound-id))
(format #t "~T~Trise-sound-id: ~D~%" (-> obj rise-sound-id))
(format #t "~T~Tgrips-sound-id: ~D~%" (-> obj grips-sound-id))
(format #t "~T~Tgrips: ~A~%" (-> obj grips))
(format #t "~T~Tpart-aligned: ~A~%" (-> obj part-aligned))
obj
)
;; definition for method 7 of type periscope
;; INFO: Return type mismatch process-drawable vs periscope.
(defmethod relocate periscope ((obj periscope) (arg0 int))
(if (nonzero? (-> obj grips))
(&+! (-> obj grips) arg0)
)
(if (nonzero? (-> obj part-aligned))
(&+! (-> obj part-aligned) arg0)
)
(the-as periscope ((method-of-type process-drawable relocate) obj arg0))
)
;; definition for method 10 of type periscope
(defmethod deactivate periscope ((obj periscope))
(if (nonzero? (-> obj part-aligned))
(kill-and-free-particles (-> obj part-aligned))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition of type reflector
(deftype reflector (process-drawable)
((parent-override (pointer periscope) :offset 12)
(root-override collide-shape :offset 112)
)
:heap-base #x40
:method-count-assert 20
:size-assert #xb0
:flag-assert #x14004000b0
(:states
reflector-idle
)
)
;; definition for method 3 of type reflector
(defmethod inspect reflector ((obj reflector))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
obj
)
;; definition of type reflector-origin
(deftype reflector-origin (process-drawable)
((reflector-trans vector :inline :offset-assert 176)
(next-reflector-trans vector :inline :offset-assert 192)
(reflector uint32 :offset-assert 208)
(next basic :offset-assert 212)
(blocker entity-actor :offset-assert 216)
)
:heap-base #x70
:method-count-assert 20
:size-assert #xdc
:flag-assert #x14007000dc
(:states
reflector-origin-idle
)
)
;; definition for method 3 of type reflector-origin
(defmethod inspect reflector-origin ((obj reflector-origin))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Treflector-trans: ~`vector`P~%" (-> obj reflector-trans))
(format #t "~T~Tnext-reflector-trans: ~`vector`P~%" (-> obj next-reflector-trans))
(format #t "~T~Treflector: #x~X~%" (-> obj reflector))
(format #t "~T~Tnext: ~A~%" (-> obj next))
(format #t "~T~Tblocker: ~A~%" (-> obj blocker))
obj
)
;; definition of type reflector-mirror
(deftype reflector-mirror (process-drawable)
((root-override collide-shape :offset 112)
(beam-end vector :inline :offset-assert 176)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xc0
:flag-assert #x14005000c0
(:states
reflector-mirror-broken
reflector-mirror-idle
)
)
;; definition for method 3 of type reflector-mirror
(defmethod inspect reflector-mirror ((obj reflector-mirror))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tbeam-end: #<vector @ #x~X>~%" (-> obj beam-end))
obj
)
;; failed to figure out what this is:
(defskelgroup *periscope-base-sg* periscope
0
3
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 23.5 0 24)
:longest-edge (meters 4.5)
)
;; failed to figure out what this is:
(defskelgroup *periscope-mirror-sg* periscope
4
7
((5 (meters 20)) (6 (meters 999999)))
:bounds (static-spherem 0 0 0 5)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defskelgroup *reflector-mirror-sg* reflector-mirror
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 9 0 9)
:longest-edge (meters 3)
)
;; failed to figure out what this is:
(defskelgroup *reflector-mirror-break-sg* reflector-mirror
4
6
((5 (meters 999999)))
:bounds (static-spherem 0 9 0 9)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate cam-periscope (camera-slave)
:event
cam-standard-event-handler
:enter
(behavior ()
(when (not (-> self enter-has-run))
(set! (-> (new 'stack-no-clear 'vector) quad) (the-as uint128 0))
(let ((v1-2 (-> self change-event-from)))
(set! (-> self trans quad) (-> (the-as periscope (-> v1-2 0)) reflector-trans quad))
(matrix-rotate-yx!
(the-as matrix (-> self tracking))
(-> (the-as periscope (-> v1-2 0)) turn)
(-> (the-as periscope (-> v1-2 0)) tilt)
)
)
(set! (-> self blend-from-type) (the-as uint 0))
(set! (-> self blend-to-type) (the-as uint 0))
0
)
(none)
)
:trans
(behavior ()
(if (zero? (logand (-> *camera* master-options) 2))
(cam-slave-go cam-free-floating)
)
(none)
)
:code
(behavior ()
(local-vars (sv-32 int) (sv-48 int))
(let* ((gp-0 (-> self change-event-from))
(f28-0 (the-as float (-> (the-as periscope (-> gp-0 0)) tilt)))
(f30-0 (the-as float (-> (the-as periscope (-> gp-0 0)) turn)))
(s5-0 (new 'stack-no-clear 'vector))
)
(while #t
(when (not (or (paused?) (-> (the-as periscope (-> self change-event-from 0)) aligned?)))
(vector-reset! s5-0)
(when *camera-read-analog*
(let ((f26-0 (analog-input
(the-as int (+ (-> *cpad-list* cpads 0 rightx) -256 (-> *cpad-list* cpads 0 leftx)))
0.0
48.0
110.0
-1.0
)
)
(f0-0 (analog-input
(the-as int (+ (-> *cpad-list* cpads 0 righty) -256 (-> *cpad-list* cpads 0 lefty)))
0.0
48.0
110.0
-1.0
)
)
)
(set! (-> s5-0 y) (- (-> s5-0 y) (* 136.53334 (- f26-0))))
(set! (-> s5-0 x) (- (-> s5-0 x) (* 136.53334 (- f0-0))))
(cond
((and (= f26-0 0.0) (= f0-0 0.0))
(sound-stop (-> (the-as periscope (-> gp-0 0)) sound-id))
)
(else
(let ((s4-0 sound-play-by-name)
(s3-0 (make-u128 101 (the-as uint #x706f6373656c6574)))
(s2-0 (-> (the-as periscope (-> gp-0 0)) sound-id))
(s1-0 1024)
(s0-0 0)
)
(set! sv-32 0)
(set! sv-48 1)
(let ((t2-0 (target-pos 0)))
(the-as int (s4-0 (the-as sound-name s3-0) s2-0 s1-0 s0-0 sv-32 sv-48 (the-as symbol t2-0)))
)
)
)
)
)
)
(cond
((< 136.53334 (-> s5-0 x))
(set! (-> s5-0 x) 136.53334)
)
((< (-> s5-0 x) -136.53334)
(set! (-> s5-0 x) -136.53334)
)
)
(cond
((< 136.53334 (-> s5-0 y))
(set! (-> s5-0 y) 136.53334)
)
((< (-> s5-0 y) -136.53334)
(set! (-> s5-0 y) -136.53334)
)
)
(+! f30-0 (* (-> s5-0 y) (-> *display* time-adjust-ratio)))
(set! f28-0 (fmax -12743.111 (fmin 12743.111 (+ f28-0 (* (-> s5-0 x) (-> *display* time-adjust-ratio))))))
(matrix-rotate-yx! (the-as matrix (-> self tracking)) f30-0 f28-0)
)
(suspend)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate reflector-idle (reflector)
:code
(behavior ()
(let ((gp-0 (new 'stack-no-clear 'vector)))
(while #t
(set! (-> gp-0 x) (-> self parent-override 0 tilt))
(set! (-> gp-0 y) (-> self parent-override 0 turn))
(set! (-> gp-0 z) 0.0)
(set! (-> gp-0 w) 1.0)
(quaternion-zxy! (-> self root-override quat) gp-0)
(set! (-> self root-override trans quad)
(-> self parent-override 0 node-list data 6 bone transform vector 3 quad)
)
(ja-post)
(dummy-47 (-> self root-override))
(suspend)
)
)
(none)
)
)
;; definition for function reflector-init-by-other
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defbehavior reflector-init-by-other reflector ((arg0 vector))
(set! (-> self entity) (-> self parent-override 0 entity))
(let ((s5-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s4-0 prim-core collide-as) (collide-kind wall-object))
(set! (-> s4-0 collide-with) (collide-kind target))
(set! (-> s4-0 prim-core action) (collide-action solid))
(set! (-> s4-0 prim-core offense) (collide-offense indestructible))
(set! (-> s4-0 transform-index) 0)
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0)
(set-root-prim! s5-0 s4-0)
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(backup-collide-with-as s5-0)
(set! (-> self root-override) s5-0)
)
(set! (-> self root-override trans quad) (-> arg0 quad))
(initialize-skeleton self *periscope-mirror-sg* '())
(logclear! (-> self mask) (process-mask actor-pause))
(go reflector-idle)
(none)
)
;; definition for function periscope-crosshair
;; Used lq/sq
(defbehavior periscope-crosshair periscope ()
(let ((s3-0 (matrix-local->world #f #f))
(s5-0 (new 'static 'vector4w-4))
(s4-0 (new 'static 'vector))
(gp-0 #f)
)
(set! (-> self turn) (vector-y-angle (-> s3-0 vector 2)))
(set! (-> self tilt) (- (vector-x-angle (-> s3-0 vector 2))))
(set! (-> s4-0 quad) (-> self next-reflector-trans quad))
(set! (-> s4-0 w) 1.0)
(init-for-transform *identity-matrix*)
(transform-float-point s4-0 (the-as vector4w (-> s5-0 quad)))
(let* ((v1-1 (-> self link))
(s4-1 (and (-> v1-1 next) (-> v1-1 next extra process)))
(v1-5 (if (and (nonzero? s4-1) (type-type? (-> s4-1 type) periscope))
s4-1
)
)
)
(when (or (not v1-5) (-> (the-as periscope v1-5) raised?))
(cond
((>= (-> s5-0 vector 0 z) 0)
(set! (-> s5-0 vector 0 x) (+ (/ (-> s5-0 vector 0 x) 16) -2048))
(set! (-> s5-0 vector 0 y) (- (- 2048 (/ (-> s5-0 vector 0 y) 16))))
(let ((v1-15 (abs (-> s5-0 vector 0 x))))
(cond
((and (< v1-15 20) (let ((v1-17 (abs (-> s5-0 vector 0 y))))
(< v1-17 10)
)
)
(when (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))))
(sound-stop (-> self sound-id))
(sound-play-by-name
(static-sound-name "beam-connect")
(new-sound-id)
1024
0
0
1
(the-as symbol (target-pos 0))
)
)
(process-entity-status! self (entity-perm-status complete) #t)
(set! gp-0 #t)
)
(else
(process-entity-status! self (entity-perm-status complete) #f)
)
)
)
)
(else
(process-entity-status! self (entity-perm-status complete) #f)
)
)
)
)
(let* ((s5-2 (position-in-front-of-camera! (new 'stack-no-clear 'vector) 40960.0 0.0))
(v1-28
(vector-normalize! (vector-! (new 'stack-no-clear 'vector) (-> self next-reflector-trans) s5-2) 20480.0)
)
(s4-4 (vector+! (new 'stack-no-clear 'vector) s5-2 v1-28))
)
(init-for-transform *identity-matrix*)
(let ((v1-30 (transform-float-point s4-4 (new 'stack 'vector4w))))
(when (>= (-> v1-30 z) 0)
(set! (-> v1-30 x) (+ (/ (-> v1-30 x) 16) -2048))
(set! (-> v1-30 y) (- (- 2048 (/ (-> v1-30 y) 16))))
)
(let ((f0-9 (- (atan (the float (-> v1-30 x)) (the float (- (-> v1-30 y)))))))
(set! (-> self gauge-rot) (deg-seek (-> self gauge-rot) f0-9 (* 131072.0 (-> *display* seconds-per-frame))))
)
)
)
(let ((f0-13 (-> self gauge-rot)))
(set! (-> *part-id-table* 823 init-specs 3 initial-valuef) (+ -8192.0 f0-13))
(set! (-> *part-id-table* 823 init-specs 11 initial-valuef) f0-13)
(if gp-0
(set! (-> *part-id-table* 823 init-specs 1 initial-valuef) 0.0)
(set! (-> *part-id-table* 823 init-specs 1 initial-valuef) 1.0)
)
(set! (-> *part-id-table* 815 init-specs 3 initial-valuef) (- -2730.6667 f0-13))
(set! (-> *part-id-table* 815 init-specs 11 initial-valuef) (- 5461.3335 f0-13))
(set! (-> *part-id-table* 816 init-specs 3 initial-valuef) (- 2730.6667 f0-13))
(set! (-> *part-id-table* 816 init-specs 11 initial-valuef) (- 10922.667 f0-13))
(set! (-> *part-id-table* 817 init-specs 3 initial-valuef) (- 13653.333 f0-13))
(set! (-> *part-id-table* 817 init-specs 11 initial-valuef) (- 21845.334 f0-13))
(set! (-> *part-id-table* 818 init-specs 3 initial-valuef) (- 19114.666 f0-13))
(set! (-> *part-id-table* 818 init-specs 11 initial-valuef) (- 27306.666 f0-13))
(set! (-> *part-id-table* 819 init-specs 3 initial-valuef) (- 30037.334 f0-13))
(set! (-> *part-id-table* 819 init-specs 11 initial-valuef) (- 38229.332 f0-13))
(set! (-> *part-id-table* 820 init-specs 3 initial-valuef) (- 35498.668 f0-13))
(set! (-> *part-id-table* 820 init-specs 11 initial-valuef) (- 43690.668 f0-13))
(set! (-> *part-id-table* 821 init-specs 3 initial-valuef) (- 46421.332 f0-13))
(set! (-> *part-id-table* 821 init-specs 11 initial-valuef) (- 54613.332 f0-13))
(set! (-> *part-id-table* 822 init-specs 3 initial-valuef) (- 51882.668 f0-13))
(set! (-> *part-id-table* 822 init-specs 11 initial-valuef) (- 60074.668 f0-13))
(set! (-> *part-id-table* 811 init-specs 3 initial-valuef) (- f0-13))
(set! (-> *part-id-table* 811 init-specs 11 initial-valuef) (- f0-13))
(set! (-> *part-id-table* 812 init-specs 3 initial-valuef) (- 16384.0 f0-13))
(set! (-> *part-id-table* 812 init-specs 11 initial-valuef) (- 16384.0 f0-13))
(set! (-> *part-id-table* 813 init-specs 3 initial-valuef) (- 32768.0 f0-13))
(set! (-> *part-id-table* 813 init-specs 11 initial-valuef) (- 32768.0 f0-13))
(set! (-> *part-id-table* 814 init-specs 3 initial-valuef) (- 49152.0 f0-13))
(set! (-> *part-id-table* 814 init-specs 11 initial-valuef) (- 49152.0 f0-13))
)
(spawn (-> self part) *zero-vector*)
(let ((s4-5 (new 'stack-no-clear 'vector))
(s3-2 (new 'stack-no-clear 'vector))
(s5-4 (new 'stack-no-clear 'vector))
)
(set! (-> s4-5 quad) (-> (camera-pos) quad))
(vector-! s3-2 (-> self prev-reflector-trans) s4-5)
(vector-normalize! s3-2 1.0)
(vector+*! s5-4 s4-5 s3-2 20480.0)
(spawn (-> self part-aligned) s5-4)
(when gp-0
(vector-! s3-2 (-> self next-reflector-trans) s4-5)
(vector-normalize! s3-2 1.0)
(vector+*! s5-4 s4-5 s3-2 20480.0)
(spawn (-> self part-aligned) s5-4)
)
)
(set! (-> self aligned?) gp-0)
gp-0
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 825) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 23
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 4.5)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.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 32.0)
(sp-rnd-flt spt-g 0.0 64.0 1.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 96.0)
(sp-flt spt-vel-y (meters 0.010666667))
(sp-flt spt-scalevel-x (meters -0.008333334))
(sp-rnd-flt spt-rotvel-z (degrees -0.99999994) (degrees 1.9999999) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -0.17777778)
(sp-flt spt-fade-a -0.53333336)
(sp-flt spt-accel-y 0.68266666)
(sp-int spt-timer 165)
(sp-cpuinfo-flags bit2 bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-z (degrees 90.0))
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 2.3) 1.0)
(sp-end)
)
)
)
;; definition for function periscope-find-next
;; Used lq/sq
(defbehavior periscope-find-next periscope ()
(let ((gp-0 (-> self link next)))
(let ((a0-0 (-> self link prev)))
(when a0-0
(set! (-> self prev-reflector-trans quad) (-> a0-0 extra trans quad))
(+! (-> self prev-reflector-trans y) (res-lump-float a0-0 'height-info))
)
)
(cond
(gp-0
(set! (-> self next-reflector-trans quad) (-> gp-0 extra trans quad))
(let ((f0-3 (+ (-> self next-reflector-trans y) (res-lump-float gp-0 'height-info))))
(set! (-> self next-reflector-trans y) f0-3)
f0-3
)
)
(else
(let ((v1-9 (res-lump-struct (-> self entity) 'alt-vector structure))
(v0-2 (the-as object (-> self next-reflector-trans)))
)
(set! (-> (the-as vector v0-2) quad) (-> (the-as vector v1-9) quad))
v0-2
)
)
)
)
)
;; definition for function periscope-set-target-direction
(defbehavior periscope-set-target-direction periscope ((arg0 vector))
(let ((f30-0 (vector-xz-length arg0)))
(set! (-> self target-turn) (atan (-> arg0 x) (-> arg0 z)))
(let ((f0-5 (atan (- (-> arg0 y)) f30-0)))
(set! (-> self target-tilt) f0-5)
f0-5
)
)
)
;; definition for function periscope-find-aim-at-angles
;; Used lq/sq
(defbehavior periscope-find-aim-at-angles periscope ()
(let ((a0-0 (-> self link next))
(gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
)
(when a0-0
(set! (-> gp-0 quad) (-> a0-0 extra trans quad))
(+! (-> gp-0 y) (res-lump-float a0-0 'height-info))
(vector-! s5-0 gp-0 (-> self reflector-trans))
(vector-normalize! s5-0 1.0)
(periscope-set-target-direction s5-0)
)
)
)
;; definition for function periscope-find-reflection-angles
;; Used lq/sq
(defbehavior periscope-find-reflection-angles periscope ()
(let ((a0-0 (-> self link next))
(s2-0 (-> self link prev))
(s3-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
(gp-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
)
(when (and s2-0 a0-0)
(set! (-> s3-0 quad) (-> a0-0 extra trans quad))
(+! (-> s3-0 y) (res-lump-float a0-0 'height-info))
(vector-! s5-0 s3-0 (-> self reflector-trans))
(vector-normalize! s5-0 1.0)
(set! (-> s3-0 quad) (-> s2-0 extra trans quad))
(+! (-> s3-0 y) (res-lump-float s2-0 'height-info))
(vector-! gp-0 s3-0 (-> self reflector-trans))
(vector-normalize! gp-0 1.0)
(vector+! s4-0 gp-0 s5-0)
(vector-normalize! s4-0 1.0)
(periscope-set-target-direction s4-0)
)
)
)
;; definition for function periscope-has-power-input?
(defbehavior periscope-has-power-input? periscope ()
(let ((v1-1 (-> self link prev)))
(if v1-1
(logtest? (-> v1-1 extra perm status) (entity-perm-status complete))
)
)
)
;; definition for function periscope-draw-beam-impact
;; INFO: Return type mismatch int vs none.
(defbehavior periscope-draw-beam-impact periscope ()
(when (periscope-has-power-input?)
(update! (-> self sound))
(if (logtest? (-> self draw status) (draw-status drwf03))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 825)
(-> self reflector-trans)
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
0
(none)
)
;; definition for function periscope-draw-beam
;; INFO: Return type mismatch int vs none.
(defbehavior periscope-draw-beam periscope ()
(if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))
(draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans))
)
0
(none)
)
;; definition for function periscope-update-joints
(defbehavior periscope-update-joints periscope ()
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 to) (the-as process 0.0))
(set! (-> a1-0 from) (the-as process (-> self turn)))
(set! (-> a1-0 num-params) (the-as int 0.0))
(set! (-> a1-0 message) (the-as symbol 1.0))
(quaternion-zxy! (-> self root-override quat) (the-as vector a1-0))
)
(set! (-> self root-override trans y) (+ -184320.0 (-> self y-offset) (-> self base y)))
(let ((f0-10 (+ (- (+ (-> self base y) (-> self y-offset)) (-> self height)) (-> self y-offset-grips))))
(set! (-> self grips transform trans y) f0-10)
f0-10
)
)
;; definition for function periscope-post
;; INFO: Return type mismatch int vs none.
(defbehavior periscope-post periscope ()
(periscope-draw-beam)
(periscope-draw-beam-impact)
(periscope-update-joints)
(ja-post)
(dummy-47 (-> self root-override))
0
(none)
)
;; definition for function periscope-test-task-complete?
(defbehavior periscope-test-task-complete? periscope ()
(local-vars (sv-16 symbol))
(set! sv-16 #t)
(apply-all
(-> self link)
(lambda ((arg0 entity-actor) (arg1 (pointer symbol)))
(the-as
object
(when (and (= (-> arg0 etype) periscope) (zero? (logand (-> arg0 extra perm status) (entity-perm-status complete))))
(set! (-> arg1 0) #f)
#t
)
)
)
(& sv-16)
)
sv-16
)
;; definition for function peri-beamcam-init-by-other
;; INFO: Return type mismatch object vs (pointer process).
(defun peri-beamcam-init-by-other ((arg0 string))
(with-pp
(let ((gp-0 (entity-by-name "junglecam-1")))
(the-as
(pointer process)
(cond
(gp-0
(cond
((name= arg0 "reflector-mirror-2")
(let ((s5-1 (get-process *default-dead-pool* pov-camera #x4000)))
(when s5-1
(let ((t9-3 (method-of-type pov-camera activate)))
(t9-3 (the-as pov-camera s5-1) pp 'pov-camera (the-as pointer #x70004000))
)
(run-now-in-process
s5-1
pov-camera-init-by-other
(-> gp-0 extra trans)
*junglecam-sg*
"tower1"
0
#f
'((0 ambient camera "gamcam14"))
)
(-> s5-1 ppointer)
)
)
)
((name= arg0 "periscope-11")
(let ((s5-2 (get-process *default-dead-pool* pov-camera #x4000)))
(when s5-2
(let ((t9-7 (method-of-type pov-camera activate)))
(t9-7 (the-as pov-camera s5-2) pp 'pov-camera (the-as pointer #x70004000))
)
(run-now-in-process
s5-2
pov-camera-init-by-other
(-> gp-0 extra trans)
*junglecam-sg*
"tower2"
0
#f
'((0 ambient camera "gamcam15") (0 want-force-vis jungle #t) (0 want-force-vis village1 #t))
)
(-> s5-2 ppointer)
)
)
)
((name= arg0 "periscope-12")
(let ((s5-3 (get-process *default-dead-pool* pov-camera #x4000)))
(when s5-3
(let ((t9-11 (method-of-type pov-camera activate)))
(t9-11 (the-as pov-camera s5-3) pp 'pov-camera (the-as pointer #x70004000))
)
(run-now-in-process
s5-3
pov-camera-init-by-other
(-> gp-0 extra trans)
*junglecam-sg*
"tower3"
0
#f
'((0 ambient camera "gamcam16"))
)
(-> s5-3 ppointer)
)
)
)
((name= arg0 "periscope-13")
(let ((s5-4 (get-process *default-dead-pool* pov-camera #x4000)))
(when s5-4
(let ((t9-15 (method-of-type pov-camera activate)))
(t9-15 (the-as pov-camera s5-4) pp 'pov-camera (the-as pointer #x70004000))
)
(run-now-in-process
s5-4
pov-camera-init-by-other
(-> gp-0 extra trans)
*junglecam-sg*
"tower4"
0
#f
'((0 ambient camera "gamcam17"))
)
(-> s5-4 ppointer)
)
)
)
((name= arg0 "periscope-14")
(let ((s5-5 (get-process *default-dead-pool* pov-camera #x4000)))
(when s5-5
(let ((t9-19 (method-of-type pov-camera activate)))
(t9-19 (the-as pov-camera s5-5) pp 'pov-camera (the-as pointer #x70004000))
)
(run-now-in-process
s5-5
pov-camera-init-by-other
(-> gp-0 extra trans)
*junglecam-sg*
"tower5"
0
#f
'((0 ambient camera "gamcam18") (0 want-force-vis jungle #t) (0 want-force-vis village1 #t))
)
(-> s5-5 ppointer)
)
)
)
((name= arg0 "periscope-15")
(let ((s5-6 (get-process *default-dead-pool* pov-camera #x4000)))
(when s5-6
(let ((t9-23 (method-of-type pov-camera activate)))
(t9-23 (the-as pov-camera s5-6) pp 'pov-camera (the-as pointer #x70004000))
)
(run-now-in-process
s5-6
pov-camera-init-by-other
(-> gp-0 extra trans)
*junglecam-sg*
"beamcam"
0
#f
'((0 ambient camera "gamcam19")
(0 want-force-vis jungle #t)
(0 want-force-vis village1 #t)
(0 display-level village1 movie)
)
)
(-> s5-6 ppointer)
)
)
)
(else
(format #t "ERROR<GMJ>: don't know which peri-beamcam to play for ~S~%" arg0)
)
)
)
(else
(format #t "ERROR<GMJ>: couldn't find junglecam-1 to initialize peri-beamcam~%")
)
)
)
)
)
)
;; definition for function periscope-debug-trans
;; INFO: Return type mismatch int vs none.
(defbehavior periscope-debug-trans periscope ()
0
(none)
)
;; failed to figure out what this is:
(defstate periscope-idle (periscope)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('activate)
(logclear! (-> self mask) (process-mask actor-pause))
(go periscope-activate)
)
)
)
:enter
(behavior ()
(clear-collide-with-as (-> self root-override))
(none)
)
:exit
(behavior ()
(restore-collide-with-as (-> self root-override))
(logclear! (-> self draw status) (draw-status drwf01))
(none)
)
:trans
periscope-debug-trans
:code
(behavior ()
(logior! (-> self mask) (process-mask actor-pause))
(set! (-> self raised?) #f)
(set! (-> self y-offset) 0.0)
(set! (-> self y-offset-grips) (+ -20480.0 (-> self height)))
(set! (-> self tilt) 16384.0)
(set! (-> self turn) (+ 18204.445 (-> self target-turn)))
(periscope-update-joints)
(ja-post)
(suspend)
(dummy-47 (-> self root-override))
(logior! (-> self draw status) (draw-status drwf01))
(while #t
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate periscope-activate (periscope)
:exit
(behavior ()
(sound-stop (-> self rise-sound-id))
(sound-play-by-name
(static-sound-name "eco-tower-stop")
(new-sound-id)
1024
0
0
1
(the-as symbol (-> self base))
)
(none)
)
:trans
periscope-debug-trans
:code
(behavior ()
(local-vars (v1-13 symbol))
(logclear! (-> self mask) (process-mask actor-pause))
(set! (-> self state-time) (-> *display* base-frame-counter))
(link-to-next-and-prev-actor (-> self link))
(periscope-find-next)
(periscope-find-reflection-angles)
(when (< 61440.0 (-> self height))
(set! (-> self y-offset) (+ -61440.0 (-> self height)))
(set! (-> self turn) (+ 18204.445 (-> self target-turn)))
)
(until (and v1-13 (= (-> self turn) (-> self target-turn)) (= (-> self tilt) (-> self target-tilt)))
(sound-play-by-name
(static-sound-name "eco-tower-rise")
(-> self rise-sound-id)
1024
0
0
1
(the-as symbol (-> self base))
)
(set! (-> self y-offset)
(seek (-> self y-offset) (-> self height) (* 16384.0 (-> *display* seconds-per-frame)))
)
(set! (-> self turn)
(seek (-> self turn) (-> self target-turn) (* 7281.778 (-> *display* seconds-per-frame)))
)
(set! (-> self tilt)
(seek (-> self tilt) (-> self target-tilt) (* 7281.778 (-> *display* seconds-per-frame)))
)
(set! (-> self raised?) (< (+ -12288.0 (-> self height)) (-> self y-offset)))
(periscope-update-joints)
(suspend)
(set! v1-13 (= (-> self y-offset) (-> self height)))
)
(set! (-> self raised?) #t)
(go periscope-wait-for-power-input)
(none)
)
:post
periscope-post
)
;; failed to figure out what this is:
(defstate periscope-wait-for-power-input (periscope)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(set! (-> self raised?) #t)
(let ((f30-0 (+ -20480.0 (-> self height))))
(until (= (-> self y-offset-grips) f30-0)
(set! (-> self y-offset-grips)
(seek (-> self y-offset-grips) f30-0 (* 16384.0 (-> *display* seconds-per-frame)))
)
(periscope-update-joints)
(suspend)
)
)
(dummy-47 (-> self root-override))
(set! (-> self y-offset) (-> self height))
(while #t
(if (periscope-has-power-input?)
(go periscope-wait-for-player)
)
(suspend)
)
(none)
)
:post
(the-as (function none :behavior periscope) ja-post)
)
;; definition for function target-close-to-point?
;; INFO: Return type mismatch basic vs symbol.
(defun target-close-to-point? ((arg0 vector) (arg1 float))
(the-as symbol (and *target* (>= arg1 (vector-vector-distance arg0 (-> *target* control trans)))))
)
;; failed to figure out what this is:
(defstate periscope-wait-for-player (periscope)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch)
(when (and *target* (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048)
(zero? (logand (-> *target* control status) 1))
)
)
)
(when ((method-of-type touching-shapes-entry prims-touching?)
(the-as touching-shapes-entry (-> arg3 param 0))
(the-as collide-shape-moving (-> self root-override))
(the-as uint 1)
)
(let ((v0-0 (the-as object #t)))
(set! (-> self player-touching-grips?) (the-as symbol v0-0))
v0-0
)
)
)
)
(('change-mode)
(level-hint-spawn
(game-text-id jungle-mirrors-tutorial)
"sksp0049"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(go periscope-player-control)
)
)
)
:exit
(behavior ()
(sound-stop (-> self grips-sound-id))
(none)
)
:code
(behavior ()
(hide-hud)
(logclear! (-> self mask) (process-mask actor-pause))
(set! (-> self raised?) #t)
(set! (-> self grips-moving?) #t)
(let ((f30-0 8192.0)
(gp-0 (res-lump-value (-> self entity) 'text-id uint128))
)
(until (= (-> self y-offset-grips) f30-0)
(if (nonzero? gp-0)
(level-hint-spawn (game-text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none))
)
(sound-play-by-name
(static-sound-name "site-moves")
(-> self grips-sound-id)
1024
0
0
1
(the-as symbol (-> self grips transform))
)
(set! (-> self y-offset-grips)
(seek (-> self y-offset-grips) f30-0 (* 16384.0 (-> *display* seconds-per-frame)))
)
(periscope-update-joints)
(suspend)
)
)
(set! (-> self grips-moving?) #f)
(set! (-> self player-touching-grips?) #f)
(let ((gp-1 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
(s3-0 (new 'stack-no-clear 'vector))
)
(while #t
(set! (-> s5-0 quad) (-> self node-list data 4 bone transform vector 3 quad))
(let ((a0-10 s5-0)
(f30-1 81920.0)
)
(when (and *target* (>= f30-1 (vector-vector-distance a0-10 (-> *target* control trans))))
(when (logtest? (-> *target* control status) 1)
(let ((f0-7 (fmax 4096.0 (fmin 12288.0 (+ (- 5120.0 (-> self base y)) (-> *target* control trans y))))))
(set! (-> self y-offset-grips)
(seek (-> self y-offset-grips) f0-7 (* 16384.0 (-> *display* seconds-per-frame)))
)
)
)
(vector-! gp-1 (target-pos 0) (-> self base))
(vector-z-quaternion! s4-0 (-> self grips transform quat))
(quaternion-rotate-y-to-vector!
(-> self grips transform quat)
(-> self grips transform quat)
(the-as quaternion gp-1)
(* 27306.666 (-> *display* seconds-per-frame))
)
(vector-z-quaternion! s3-0 (-> self grips transform quat))
(set! (-> self grips-moving?) (< (vector-dot s4-0 s3-0) (cos 182.04445)))
(periscope-update-joints)
(dummy-47 (-> self root-override))
(when (and (-> self player-touching-grips?) (not (level-hint-displayed?)))
(set! (-> self player-touching-grips?) #f)
(hide-hud)
(level-hint-surpress!)
(kill-current-level-hint '() '(sidekick voicebox) 'exit)
(when (and (hud-hidden?) (can-grab-display? (the-as process-taskable self)))
(let ((s2-2
(new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((v1-43 s2-2))
(set! (-> v1-43 width) (the float 440))
)
(let ((v1-44 s2-2))
(set! (-> v1-44 height) (the float 80))
)
(set! (-> s2-2 flags) (font-flags shadow kerning large))
(print-game-text (lookup-text! *common-text* (game-text-id press-to-use) #f) s2-2 #f 128 22)
)
(when (cpad-pressed? 0 circle)
(set! (-> self grips-moving?) #f)
(while #t
(send-event *target* 'change-mode 'periscope self)
(hide-hud)
(suspend)
(hide-hud)
(suspend)
)
)
)
)
)
)
(if (not (periscope-has-power-input?))
(go periscope-wait-for-power-input)
)
(suspend)
)
)
(none)
)
:post
(behavior ()
(if (-> self grips-moving?)
(sound-play-by-name
(static-sound-name "site-moves")
(-> self grips-sound-id)
1024
0
0
1
(the-as symbol (-> self grips transform))
)
(sound-stop (-> self grips-sound-id))
)
(periscope-draw-beam-impact)
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate periscope-player-control (periscope)
:exit
(behavior ()
(logclear! (-> self reflector 0 draw status) (draw-status drwf01))
(periscope-find-reflection-angles)
(set! (-> self turn) (-> self target-turn))
(set! (-> self tilt) (-> self target-tilt))
(none)
)
:trans
(behavior ()
(hide-hud)
(none)
)
:code
(behavior ()
(set! (-> self lock-time) (the-as uint (-> *display* base-frame-counter)))
(link-to-next-and-prev-actor (-> self link))
(periscope-find-next)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) self)
(set! (-> a1-0 num-params) 0)
(set! (-> a1-0 message) 'activate)
(let ((t9-2 send-event-function)
(v1-5 (-> self link))
)
(t9-2 (the-as process-tree (and (-> v1-5 next) (-> v1-5 next extra process))) a1-0)
)
)
(periscope-find-aim-at-angles)
(set! (-> self turn) (-> self target-turn))
(set! (-> self tilt) (-> self target-tilt))
(let ((v1-10 (res-lump-data (-> self entity) 'rotoffset (pointer float))))
(cond
(v1-10
(+! (-> self turn) (-> v1-10 0))
(+! (-> self tilt) (-> v1-10 1))
)
(else
(set! (-> self turn) (+ 910.2222 (-> self turn)))
)
)
)
(case (get-aspect-ratio)
(('aspect16x9)
(set! (-> *part-id-table* 823 init-specs 12 initial-valuef) 5120.0)
(set! (-> *part-id-table* 815 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 816 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 817 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 818 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 819 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 820 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 821 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 822 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 811 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 812 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 813 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 814 init-specs 12 initial-valuef) 3276.8)
(set! (-> *part-id-table* 803 init-specs 2 initial-valuef) -10854.4)
(set! (-> *part-id-table* 803 init-specs 3 initial-valuef) 6553.6)
(set! (-> *part-id-table* 804 init-specs 2 initial-valuef) 4546.56)
(set! (-> *part-id-table* 804 init-specs 3 initial-valuef) 6553.6)
(set! (-> *part-id-table* 805 init-specs 2 initial-valuef) -4546.56)
(set! (-> *part-id-table* 805 init-specs 3 initial-valuef) 6553.6)
(set! (-> *part-id-table* 806 init-specs 2 initial-valuef) 10854.4)
(set! (-> *part-id-table* 806 init-specs 3 initial-valuef) 6553.6)
(set! (-> *part-id-table* 807 init-specs 2 initial-valuef) -10854.4)
(set! (-> *part-id-table* 807 init-specs 3 initial-valuef) -6553.6)
(set! (-> *part-id-table* 808 init-specs 2 initial-valuef) 4546.56)
(set! (-> *part-id-table* 808 init-specs 3 initial-valuef) -6553.6)
(set! (-> *part-id-table* 809 init-specs 2 initial-valuef) -4546.56)
(set! (-> *part-id-table* 809 init-specs 3 initial-valuef) -6553.6)
(set! (-> *part-id-table* 810 init-specs 2 initial-valuef) 10854.4)
(set! (-> *part-id-table* 810 init-specs 3 initial-valuef) -6553.6)
)
(('aspect4x3)
(set! (-> *part-id-table* 823 init-specs 12 initial-valuef) 5939.2)
(set! (-> *part-id-table* 815 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 816 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 817 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 818 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 819 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 820 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 821 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 822 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 811 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 812 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 813 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 814 init-specs 12 initial-valuef) 4096.0)
(set! (-> *part-id-table* 803 init-specs 2 initial-valuef) -11878.4)
(set! (-> *part-id-table* 803 init-specs 3 initial-valuef) 8601.6)
(set! (-> *part-id-table* 804 init-specs 2 initial-valuef) 4546.56)
(set! (-> *part-id-table* 804 init-specs 3 initial-valuef) 8601.6)
(set! (-> *part-id-table* 805 init-specs 2 initial-valuef) -4546.56)
(set! (-> *part-id-table* 805 init-specs 3 initial-valuef) 8601.6)
(set! (-> *part-id-table* 806 init-specs 2 initial-valuef) 11878.4)
(set! (-> *part-id-table* 806 init-specs 3 initial-valuef) 8601.6)
(set! (-> *part-id-table* 807 init-specs 2 initial-valuef) -11878.4)
(set! (-> *part-id-table* 807 init-specs 3 initial-valuef) -8601.6)
(set! (-> *part-id-table* 808 init-specs 2 initial-valuef) 4546.56)
(set! (-> *part-id-table* 808 init-specs 3 initial-valuef) -8601.6)
(set! (-> *part-id-table* 809 init-specs 2 initial-valuef) -4546.56)
(set! (-> *part-id-table* 809 init-specs 3 initial-valuef) -8601.6)
(set! (-> *part-id-table* 810 init-specs 2 initial-valuef) 11878.4)
(set! (-> *part-id-table* 810 init-specs 3 initial-valuef) -8601.6)
)
)
(let* ((gp-0 (-> self old-camera-matrix))
(a2-1 (matrix-local->world #f #f))
(v1-191 (-> a2-1 vector 0 quad))
(a0-8 (-> a2-1 vector 1 quad))
(a1-3 (-> a2-1 vector 2 quad))
(a2-2 (-> a2-1 vector 3 quad))
)
(set! (-> gp-0 vector 0 quad) v1-191)
(set! (-> gp-0 vector 1 quad) a0-8)
(set! (-> gp-0 vector 2 quad) a1-3)
(set! (-> gp-0 vector 3 quad) a2-2)
)
(send-event *camera* 'change-state cam-periscope 0)
(logior! (-> self reflector 0 draw status) (draw-status drwf01))
(suspend)
(while #t
(if (not (-> self aligned?))
(set! (-> self lock-time) (the-as uint (-> *display* base-frame-counter)))
)
(periscope-crosshair)
(when (or (cpad-pressed? 0 triangle x)
(and (-> self aligned?) (>= (- (-> *display* base-frame-counter) (the-as int (-> self lock-time))) 900))
)
(sound-stop (-> self sound-id))
(if (periscope-test-task-complete?)
(close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder))
)
(while #t
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) self)
(set! (-> a1-6 num-params) 0)
(set! (-> a1-6 message) 'end-mode)
(when (send-event-function *target* a1-6)
(cond
((and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))
(let ((gp-1 (ppointer->handle (peri-beamcam-init-by-other (the-as string (-> self name))))))
(suspend)
(while (and *target* (= (-> *target* next-state name) 'target-periscope))
(periscope-crosshair)
(suspend)
)
(logclear! (-> self reflector 0 draw status) (draw-status drwf01))
(periscope-find-reflection-angles)
(set! (-> self turn) (-> self target-turn))
(set! (-> self tilt) (-> self target-tilt))
(set! *camera-init-mat* (-> self old-camera-matrix))
(send-event *camera* 'change-state *camera-base-mode* 0)
(set! *camera-init-mat* #f)
(while (handle->process (the-as handle gp-1))
(suspend)
)
)
(let ((gp-2 (get-process *default-dead-pool* process #x4000)))
(when gp-2
(let ((t9-18 (method-of-type process activate)))
(t9-18 gp-2 self 'process (the-as pointer #x70004000))
)
(run-next-time-in-process
gp-2
(lambda ((arg0 string))
(while (or (-> *setting-control* current ambient)
(-> *setting-control* current movie)
(-> *setting-control* current hint)
)
(suspend)
)
(cond
((name= arg0 "periscope-11")
(level-hint-spawn
(game-text-id jungle-mirrors-follow-the-beam)
"sksp0053"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
((name= arg0 "periscope-12")
(level-hint-spawn
(game-text-id jungle-mirrors-go-to-the-next-tower)
"sksp0052"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
((name= arg0 "periscope-15")
(level-hint-spawn
(game-text-id jungle-mirrors-completion-talk-to-mayor)
"sksp0018"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
)
(none)
)
(-> self name)
)
(-> gp-2 ppointer)
)
)
)
(else
(set! *camera-init-mat* (-> self old-camera-matrix))
(send-event *camera* 'change-state *camera-base-mode* 0)
(set! *camera-init-mat* #f)
)
)
(if (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))
(go periscope-power-on)
(go periscope-wait-for-player)
)
)
)
(suspend)
)
)
(suspend)
)
(none)
)
:post
(behavior ()
(periscope-draw-beam)
(periscope-update-joints)
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate periscope-power-on (periscope)
:trans
periscope-debug-trans
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(set! (-> self y-offset) (-> self height))
(link-to-next-and-prev-actor (-> self link))
(periscope-find-reflection-angles)
(set! (-> self turn) (-> self target-turn))
(set! (-> self tilt) (-> self target-tilt))
(let ((f30-0 (+ -20480.0 (-> self height))))
(until (= (-> self y-offset-grips) f30-0)
(set! (-> self y-offset-grips)
(seek (-> self y-offset-grips) f30-0 (* 16384.0 (-> *display* seconds-per-frame)))
)
(periscope-update-joints)
(sound-play-by-name
(static-sound-name "site-moves")
(-> self grips-sound-id)
1024
0
0
1
(the-as symbol (-> self grips transform))
)
(suspend)
)
)
(sound-stop (-> self grips-sound-id))
(ja-post)
(while #t
(suspend)
)
(none)
)
:post
periscope-post
)
;; definition for method 11 of type periscope
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! periscope ((obj periscope) (arg0 entity-actor))
(stack-size-set! (-> obj main-thread) 512)
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others))))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0)))
(set! (-> s3-0 prim-core collide-as) (collide-kind wall-object))
(set! (-> s3-0 collide-with) (collide-kind target))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set! (-> s3-0 transform-index) 0)
(set-vector! (-> s3-0 local-sphere) 0.0 96256.0 0.0 98304.0)
(set-root-prim! s4-0 s3-0)
(let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0))))
(set! (-> s2-0 prim-core collide-as) (collide-kind wall-object))
(set! (-> s2-0 collide-with) (collide-kind target))
(set! (-> s2-0 prim-core action) (collide-action solid))
(set! (-> s2-0 prim-core offense) (collide-offense indestructible))
(set! (-> s2-0 transform-index) 3)
(set-vector! (-> s2-0 local-sphere) 0.0 96256.0 0.0 98304.0)
(append-prim s3-0 s2-0)
)
(let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s2-1 prim-core collide-as) (collide-kind wall-object))
(set! (-> s2-1 collide-with) (collide-kind target))
(set! (-> s2-1 prim-core action) (collide-action solid))
(set! (-> s2-1 prim-core offense) (collide-offense indestructible))
(set! (-> s2-1 transform-index) 4)
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 9216.0)
(append-prim s3-0 s2-1)
)
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1))))
(set! (-> s2-2 prim-core collide-as) (collide-kind wall-object))
(set! (-> s2-2 collide-with) (collide-kind target))
(set! (-> s2-2 prim-core offense) (collide-offense no-offense))
(set! (-> s2-2 transform-index) 4)
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 11264.0)
(append-prim s3-0 s2-2)
)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(set! (-> obj height) (res-lump-float (-> obj entity) 'height-info))
(set! (-> obj y-offset) (-> obj height))
(set! (-> obj y-offset-grips) (+ -20480.0 (-> obj height)))
(set! (-> obj base quad) (-> obj root-override trans quad))
(set! (-> obj reflector-trans quad) (-> obj base quad))
(+! (-> obj reflector-trans y) (-> obj height))
(let ((s5-1 (get-process *default-dead-pool* reflector #x4000)))
(set! (-> obj reflector)
(the-as (pointer reflector) (when s5-1
(let ((t9-14 (method-of-type reflector activate)))
(t9-14 (the-as reflector s5-1) obj 'reflector (the-as pointer #x70004000))
)
(run-now-in-process s5-1 reflector-init-by-other (-> obj reflector-trans))
(-> s5-1 ppointer)
)
)
)
)
(set! (-> obj link) (new 'process 'actor-link-info obj))
(periscope-find-next)
(initialize-skeleton obj *periscope-base-sg* '())
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 176) obj))
(set! (-> obj part-aligned) (create-launch-control (-> *part-group-id-table* 689) obj))
(set! (-> obj grips) (new 'process 'joint-mod-set-world obj 4 #t))
(transformq-copy! (-> obj grips transform) (the-as transformq (-> obj root-override trans)))
(periscope-find-reflection-angles)
(set! (-> obj turn) (-> obj target-turn))
(set! (-> obj tilt) (-> obj target-tilt))
(periscope-update-joints)
(set! (-> obj grips-moving?) #f)
(set! (-> obj sound-id) (new-sound-id))
(set! (-> obj sound) (new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "eco-beam")
:volume #x400
:fo-max 50
)
(-> obj reflector-trans)
)
)
(set! (-> obj rise-sound-id) (new-sound-id))
(set! (-> obj grips-sound-id) (new-sound-id))
(set! (-> obj root-override nav-radius) 8192.0)
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
(cond
((and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
(go periscope-power-on)
)
((periscope-has-power-input?)
(set! (-> obj y-offset-grips) 8192.0)
(go periscope-wait-for-player)
)
(else
(go periscope-idle)
)
)
(none)
)
;; definition for function reflector-origin-update
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defbehavior reflector-origin-update reflector-origin ((arg0 entity-actor))
(when arg0
(set! (-> self next-reflector-trans quad) (-> arg0 extra trans quad))
(+! (-> self next-reflector-trans y) (res-lump-float arg0 'height-info))
)
0
(none)
)
;; failed to figure out what this is:
(defstate reflector-origin-idle (reflector-origin)
:code
(behavior ()
(reflector-origin-update (-> self blocker))
(while (zero? (logand (-> self blocker extra perm status) (entity-perm-status complete)))
(suspend)
)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) self)
(set! (-> a1-0 num-params) 0)
(set! (-> a1-0 message) 'activate)
(let ((t9-1 send-event-function)
(v1-6 (-> self link))
)
(t9-1 (the-as process-tree (and (-> v1-6 next) (-> v1-6 next extra process))) a1-0)
)
)
(reflector-origin-update (-> self link next))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(vector-! gp-0 (-> self next-reflector-trans) (-> self reflector-trans))
(vector-normalize! gp-0 819200.0)
(vector+! (-> self next-reflector-trans) (-> self reflector-trans) gp-0)
)
(let ((gp-1 #f))
(until gp-1
(let* ((v1-13 (-> self link))
(s5-0 (and (-> v1-13 next) (-> v1-13 next extra process)))
(v1-17 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) periscope))
s5-0
)
)
)
(if v1-17
(set! gp-1 (-> (the-as periscope v1-17) raised?))
)
)
(suspend)
)
)
(process-entity-status! self (entity-perm-status complete) #t)
(reflector-origin-update (-> self link next))
(while #t
(suspend)
)
(none)
)
:post
(behavior ()
(draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans))
(none)
)
)
;; definition for method 11 of type reflector-origin
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! reflector-origin ((obj reflector-origin) (arg0 entity-actor))
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(logclear! (-> obj mask) (process-mask actor-pause))
(set! (-> obj link) (new 'process 'actor-link-info obj))
(set! (-> obj blocker) (entity-actor-lookup arg0 'alt-actor 0))
(set! (-> obj reflector-trans quad) (-> obj root trans quad))
(go reflector-origin-idle)
(none)
)
;; failed to figure out what this is:
(defstate reflector-mirror-idle (reflector-mirror)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('attack)
(sound-play-by-name (static-sound-name "mirror-smash") (new-sound-id) 1024 0 0 1 #t)
enter-state
(go reflector-mirror-broken)
)
)
)
:exit
(behavior ()
(stop! (-> self sound))
(none)
)
:code
(behavior ()
(let ((gp-0 (new-stack-vector0)))
(set! (-> gp-0 quad) (-> self root-override trans quad))
(set! (-> gp-0 y) (+ 49152.0 (-> gp-0 y)))
(while #t
(draw-power-beam gp-0 (-> self beam-end))
(update! (-> self sound))
(when (logtest? (-> self draw status) (draw-status drwf03))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 825)
(-> self beam-end)
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
(when (and *target* (>= 24576.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))))
(start-hint-timer (game-text-id jungle-mirrors-break-the-mirror-jak))
(level-hint-spawn
(game-text-id jungle-mirrors-break-the-mirror-jak)
"sksp0050"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
)
(suspend)
)
)
(none)
)
:post
(the-as (function none :behavior reflector-mirror) ja-post)
)
;; failed to figure out what this is:
(defstate reflector-mirror-broken (reflector-mirror)
:code
(behavior ()
(local-vars (a0-0 none))
(ja-channel-set! 0)
(clear-collide-with-as (-> self root-override))
(ja-post)
(let ((s5-0 (entity-actor-count (-> self entity) 'alt-actor)))
(dotimes (s4-0 s5-0)
(while (let ((s3-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> s3-0 from) self)
(set! (-> s3-0 num-params) 0)
(set! (-> s3-0 message) 'stop)
(let ((s2-0 send-event-function)
(v1-3 (entity-actor-lookup (-> self entity) 'alt-actor s4-0))
)
(not (s2-0
(if v1-3
(-> v1-3 extra process)
)
s3-0
)
)
)
)
(suspend)
)
)
)
(when (not a0-0)
(ambient-hint-spawn "gamcam21" (the-as vector #f) *entity-pool* 'camera)
(let* ((gp-1 (get-process *default-dead-pool* manipy #x4000))
(v1-11 (when gp-1
(let ((t9-8 (method-of-type manipy activate)))
(t9-8 (the-as manipy gp-1) self 'manipy (the-as pointer #x70004000))
)
(run-now-in-process
gp-1
manipy-init
(-> self root-override trans)
(-> self entity)
*reflector-mirror-break-sg*
#f
)
(-> gp-1 ppointer)
)
)
)
(send-event (ppointer->process v1-11) 'anim-mode 'play1)
)
(let ((gp-2 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) gp-2) 150)
(suspend)
)
)
(process-grab? *target*)
(while (or (-> self child) (-> *setting-control* current ambient))
(suspend)
)
(process-release? *target*)
(peri-beamcam-init-by-other (the-as string (-> self name)))
(process-entity-status! self (entity-perm-status complete) #t)
(close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder-a))
(while (-> self child)
(suspend)
)
)
(logior! (-> self mask) (process-mask actor-pause))
(while #t
(suspend)
)
(none)
)
)
;; definition for method 11 of type reflector-mirror
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! reflector-mirror ((obj reflector-mirror) (arg0 entity-actor))
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0)))
(set! (-> s3-0 prim-core collide-as) (collide-kind enemy))
(set! (-> s3-0 collide-with) (collide-kind target))
(set! (-> s3-0 prim-core action) (collide-action solid))
(set! (-> s3-0 prim-core offense) (collide-offense touch))
(set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 49152.0)
(set-root-prim! s4-0 s3-0)
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s2-0 prim-core collide-as) (collide-kind enemy))
(set! (-> s2-0 collide-with) (collide-kind target))
(set! (-> s2-0 prim-core action) (collide-action solid))
(set! (-> s2-0 prim-core offense) (collide-offense touch))
(set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 6963.2)
(append-prim s3-0 s2-0)
)
(let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s2-1 prim-core collide-as) (collide-kind enemy))
(set! (-> s2-1 collide-with) (collide-kind target))
(set! (-> s2-1 prim-core action) (collide-action solid))
(set! (-> s2-1 prim-core offense) (collide-offense touch))
(set-vector! (-> s2-1 local-sphere) 0.0 18432.0 0.0 6963.2)
(append-prim s3-0 s2-1)
)
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s2-2 prim-core collide-as) (collide-kind enemy))
(set! (-> s2-2 collide-with) (collide-kind target))
(set! (-> s2-2 prim-core action) (collide-action solid))
(set! (-> s2-2 prim-core offense) (collide-offense touch))
(set-vector! (-> s2-2 local-sphere) 0.0 30720.0 0.0 8192.0)
(append-prim s3-0 s2-2)
)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(logclear! (-> obj mask) (process-mask actor-pause))
(set! (-> obj link) (new 'process 'actor-link-info obj))
(initialize-skeleton obj *reflector-mirror-sg* '())
(set-vector! (-> obj beam-end) 1805721.6 167936.0 -932659.2 1.0)
(set! (-> obj sound) (new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "eco-beam")
:volume #x400
:fo-max 50
)
(-> obj beam-end)
)
)
(cond
((and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
enter-state
#t
(go reflector-mirror-broken)
)
(else
(go reflector-mirror-idle)
)
)
(none)
)
;; definition for function draw-power-beam
;; INFO: Return type mismatch int vs none.
(defun draw-power-beam ((arg0 vector) (arg1 vector))
(when (line-in-view-frustum? arg0 arg1)
(let ((s4-1 (vector-! (new 'stack-no-clear 'vector) arg1 arg0)))
(vector-length s4-1)
(let ((t2-0 (new 'stack-no-clear 'collide-mesh-cache-tri)))
0.0
(if (>= (fill-and-probe-using-line-sphere
*collide-cache*
arg0
s4-1
6144.0
(collide-kind target)
(the-as process #f)
(the-as collide-tri-result t2-0)
1
)
0.0
)
(send-event *target* 'get-pickup 3 5.0)
)
)
)
(if (and (< 4096.0 (vector-vector-distance (camera-pos) arg0))
(< 4096.0 (vector-vector-distance (camera-pos) arg1))
)
(draw-eco-beam arg0 arg1)
)
)
0
(none)
)