jak-project/goal_src/jak3/levels/desert/des-burning-bush.gc
Matt Dallmeyer 70ea2a1f67
jak3 - fill out some text-id entries (#3494)
Slam Dozer > Ram Rod
2024-05-30 21:49:10 -04:00

1631 lines
59 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: des-burning-bush.gc
;; name in dgo: des-burning-bush
;; dgos: CTA, WASALL
(deftype des-burning-bush-stack-var0 (structure)
((mat matrix :inline :offset 0)
(vec0 vector :inline :offset 64)
(vec1 vector :inline :offset 128)
(vec2 vector :inline :offset 160)
(quat quaternion :inline :offset 176)
(vec3 vector :inline :offset 192)
)
)
(deftype des-burning-bush-stack-var1 (structure)
((word0 int32 :offset 0)
(fnt-origin-x int32 :offset 4)
(scale float :offset 8)
)
)
(deftype bbush-menu-state (structure)
((cur int8 :offset 0)
(idx int8 :offset 1)
(fnt-height int32 :offset 4)
(fnt-origin-x int32 :offset 8)
(fnt-origin-y int32 :offset 12)
)
)
;; DECOMP BEGINS
(defpartgroup group-desert-totem-eye-glow
:id 379
:flags (sp0 sp4)
:bounds (static-bspherem 0 0 0 5)
:parts ((sp-item 1584 :flags (sp6 sp7)))
)
(defpart 1584
:init-specs ((:texture (glow-soft level-default-sprite))
(:num 1.0)
(:x (meters 0))
(:y (meters 0))
(:z (meters 0))
(:scale-x (meters 0.8))
(:rot-x (degrees 1.125))
(:scale-y (meters 1.2))
(:r 80.0 20.0)
(:g 255.0)
(:b 255.0)
(:a 40.0 4.0)
(:omega (degrees 4511.25))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 819.2)
(:rotate-y (degrees 0))
)
)
(defpartgroup group-desert-totem-eye-glow-pre
:id 380
:flags (sp0 sp4)
:bounds (static-bspherem 0 0 0 5)
:parts ((sp-item 1585 :flags (sp6 sp7)) (sp-item 1586 :flags (sp6 sp7)))
)
(defpart 1585
:init-specs ((:texture (glow-hotdot level-default-sprite))
(:num 1.0)
(:x (meters 0))
(:y (meters 0))
(:z (meters 0))
(:scale-x (meters 0.8))
(:rot-x (degrees 2.25))
(:scale-y (meters 1.5))
(:r 80.0 20.0)
(:g 255.0)
(:b 255.0)
(:a 0.0)
(:omega (degrees 4511.25))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 4096.0)
(:rotate-y (degrees 0))
)
)
(defpart 1586
:init-specs ((:texture (glow-hotdot level-default-sprite))
(:num 1.0)
(:x (meters 0))
(:y (meters 0))
(:z (meters 0))
(:scale-x (meters 0.8))
(:rot-x (degrees 2.25))
(:scale-y (meters 1.2))
(:r 80.0 20.0)
(:g 255.0)
(:b 255.0)
(:a 0.0)
(:omega (degrees 4511.25))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 4096.0)
(:rotate-y (degrees 0))
)
)
(deftype bbush-menu-item (structure)
((text text-id)
(node game-task-node)
)
)
(deftype bbush-menu (structure)
((title-text text-id)
(req-text text-id)
(req-check (function symbol))
(item-count int8)
(items bbush-menu-item 10 :inline)
)
)
(define *bbush-menu*
(new 'static 'bbush-menu
:title-text (text-id text-0624)
:req-text (text-id bring-sand-shark-heat-seeker-dust-demon-desert-screamer)
:req-check (lambda ()
(case (-> *game-info* current-vehicle)
(((vehicle-type-u8 v-snake) (vehicle-type-u8 v-fox) (vehicle-type-u8 v-mirage) (vehicle-type-u8 v-x-ride))
#t
)
(else
#f
)
)
)
:item-count 5
:items (new 'static 'inline-array bbush-menu-item 10
(new 'static 'bbush-menu-item
:text (text-id text-0629)
:node (game-task-node desert-bbush-air-time-introduction)
)
(new 'static 'bbush-menu-item
:text (text-id text-0628)
:node (game-task-node desert-bbush-total-air-time-introduction)
)
(new 'static 'bbush-menu-item
:text (text-id text-062b)
:node (game-task-node desert-bbush-jump-distance-introduction)
)
(new 'static 'bbush-menu-item
:text (text-id text-062a)
:node (game-task-node desert-bbush-total-jump-distance-introduction)
)
(new 'static 'bbush-menu-item
:text (text-id text-062c)
:node (game-task-node desert-bbush-roll-count-introduction)
)
(new 'static 'bbush-menu-item)
(new 'static 'bbush-menu-item)
(new 'static 'bbush-menu-item)
(new 'static 'bbush-menu-item)
(new 'static 'bbush-menu-item)
)
)
)
(deftype des-burning-bush (process-focusable)
((task game-task-control)
(part-off sparticle-launch-control)
(angle float)
(time float)
(rotmin float)
(rotmax float)
(bb-perm entity-perm)
(menu bbush-menu)
(menu-node game-task-node-info)
(menu-exit? symbol)
(menu-have-req? symbol)
(message-id text-id)
(required-vehicles game-vehicles)
)
(:state-methods
idle
talking
menu
collect-gems
)
(:methods
(des-burning-bush-method-32 (_type_) none)
(des-burning-bush-method-33 (_type_) none)
(des-burning-bush-method-34 (_type_) object)
(des-burning-bush-method-35 (_type_) none)
(des-burning-bush-method-36 (_type_) none)
(des-burning-bush-method-37 (_type_) none)
(des-burning-bush-method-38 (_type_) none)
)
)
(defskelgroup skel-des-burning-bush des-burning-bush des-burning-bush-lod0-jg des-burning-bush-idle-ja
((des-burning-bush-lod0-mg (meters 999999)))
:bounds (static-spherem 0 1.5 0 3.5)
)
(defmethod des-burning-bush-method-36 ((this des-burning-bush))
(let ((a0-2 (get-current-task-event (-> this task))))
(if (= (-> a0-2 action) (game-task-action menu))
(go (method-of-object this menu))
(go (method-of-object this talking))
)
)
0
(none)
)
(defstate idle (des-burning-bush)
:virtual #t
:exit (behavior ()
'()
)
:trans (behavior ()
(local-vars (v1-43 process))
(setup-masks (-> self draw) 2 4)
(let ((gp-0 (get-current-task-event (-> self task)))
(s5-0 #f)
)
(let ((s4-0 (new 'stack-no-clear 'matrix)))
(let* ((a2-1 (-> self node-list data 3 bone transform))
(v1-5 (-> a2-1 rvec quad))
(a0-2 (-> a2-1 uvec quad))
(a1-1 (-> a2-1 fvec quad))
(a2-2 (-> a2-1 trans quad))
)
(set! (-> s4-0 rvec quad) v1-5)
(set! (-> s4-0 uvec quad) a0-2)
(set! (-> s4-0 fvec quad) a1-1)
(set! (-> s4-0 trans quad) a2-2)
)
(when (< (vector-dot
(-> s4-0 fvec)
(vector-! (new 'stack-no-clear 'vector) (camera-pos) (matrix->trans s4-0 (new 'stack-no-clear 'vector)))
)
0.0
)
)
)
(cond
(#f
(set! s5-0 #t)
)
((= (-> gp-0 action) (game-task-action show))
(setup-masks (-> self draw) 4 2)
)
((= (-> gp-0 action) (game-task-action play))
)
((= (-> gp-0 action) (game-task-action menu))
)
(else
)
)
(cond
((and (not s5-0)
(or (= (-> gp-0 action) (game-task-action show)) (= (-> gp-0 action) (game-task-action menu)))
(and (des-burning-bush-method-34 self) (can-display-query? self (the-as string #f) -99.0))
)
(let ((s5-1
(new 'stack 'font-context *font-default-matrix* 32 300 0.0 (font-color default) (font-flags shadow kerning))
)
(gp-1 (-> gp-0 tex))
)
(set! (-> s5-1 flags) (font-flags shadow kerning large))
(let ((v1-28 s5-1))
(set! (-> v1-28 width) (the float 340))
)
(let ((v1-29 s5-1))
(set! (-> v1-29 height) (the float 80))
)
(let ((v1-30 s5-1)
(a0-16 (-> *setting-control* user-default language))
)
(set! (-> v1-30 scale) (if (or (= a0-16 (language-enum korean)) (= a0-16 (language-enum russian)))
0.9
0.7
)
)
)
(let ((v1-33 (-> self entity extra perm)))
(logior! (-> v1-33 status) (entity-perm-status bit-5))
(set! (-> self bb-perm) v1-33)
(logior! (-> v1-33 status) (entity-perm-status bit-14))
)
(cond
((and (nonzero? (-> self required-vehicles))
(or (not (logtest? (-> self required-vehicles) (ash 1 (the-as int (-> *game-info* current-vehicle)))))
(begin
(set! v1-43 (handle->process (-> *vehicle-info* handle-by-vehicle-type (-> *game-info* current-vehicle))))
(not v1-43)
)
(< 245760.0 (vector-vector-distance (-> (the-as vehicle v1-43) root trans) (target-pos 0)))
)
)
(print-game-text
(lookup-text! *common-text* (text-id bring-sand-shark) #f)
s5-1
#f
44
(bucket-id hud-draw-hud-alpha)
)
)
(else
(cond
((zero? (-> self bb-perm user-object 0))
(let ((s4-2 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (text-id text-061d) #f) gp-1)
(s4-2 *temp-string* s5-1 #f 44 (bucket-id hud-draw-hud-alpha))
)
(logior! (-> *hud-skullgem* 0 flags) (hud-flags show))
)
(else
(let ((s4-3 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (text-id press-triangle-to-talk) #f))
(s4-3 *temp-string* s5-1 #f 44 (bucket-id hud-draw-hud-alpha))
)
)
)
(when (cpad-pressed? 0 triangle)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle))
(cond
((and (zero? (-> self bb-perm user-object 0))
(or (= gp-1 (the int (-> *target* game gem)))
(< (the-as uint gp-1) (the-as uint (the int (-> *target* game gem))))
)
)
(set! (-> self bb-perm user-object 0) 1)
(go-virtual collect-gems)
)
((= (-> self bb-perm user-object 0) 1)
(des-burning-bush-method-36 self)
)
(else
(sound-play "skull-negative")
)
)
)
)
)
)
)
(else
(if *hud-skullgem*
(logclear! (-> *hud-skullgem* 0 flags) (hud-flags show))
)
)
)
)
)
:code sleep-code
:post (behavior ()
(rlet ((acc :class vf)
(vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(vf7 :class vf)
)
(init-vf0-vector)
(when *target*
(let* ((a0-0 (-> *target* neck))
(t9-0 (method-of-object a0-0 look-at!))
(a1-0 (new 'stack-no-clear 'vector))
)
(let ((v1-5 (-> self root trans)))
(let ((a2-0 *up-vector*))
(let ((a3-1 12288.0))
(.mov vf7 a3-1)
)
(.lvf vf5 (&-> a2-0 quad))
)
(.lvf vf4 (&-> v1-5 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.svf (&-> a1-0 quad) vf6)
(t9-0 a0-0 a1-0 #f self)
)
)
(des-burning-bush-method-35 self)
)
)
)
(defstate collect-gems (des-burning-bush)
:virtual #t
:enter (behavior ()
(set-time! (-> self state-time))
)
:exit (behavior ()
(process-release? *target*)
)
:code (behavior ()
(until (process-grab? *target* #f)
(suspend)
)
(suspend)
(let ((gp-0 (-> (get-current-task-event (-> self task)) tex)))
(format 0 "skull-cost: ~d~%" gp-0)
(set! (-> *target* game gem) (- (-> *target* game gem) (the float gp-0)))
(until (time-elapsed? (-> self state-time) (* 45 (the-as int gp-0)))
(suspend)
)
)
(des-burning-bush-method-36 self)
)
:post (behavior ()
(des-burning-bush-method-35 self)
)
)
(defstate talking (des-burning-bush)
:virtual #t
:enter (behavior ()
(set-setting! 'minimap 'clear 0.0 (minimap-flag minimap))
(set! (-> self time) -1.0)
(process-entity-status! self (entity-perm-status no-kill) #t)
)
:exit (behavior ()
(remove-setting! 'music-volume)
(remove-setting! 'sfx-volume)
(remove-setting! 'dialog-volume)
(remove-setting! 'minimap)
(send-event *camera* 'change-target *target*)
(remove-setting! 'interp-time)
(remove-setting! 'mode-name)
)
:trans (behavior ()
(rlet ((acc :class vf)
(vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(vf7 :class vf)
)
(init-vf0-vector)
(let ((gp-0 (new 'stack-no-clear 'des-burning-bush-stack-var0)))
(when (!= (-> self time) -1.0)
(quaternion-rotate-local-y!
(-> gp-0 quat)
(-> self root quat)
(lerp-scale (-> self rotmin) (-> self rotmax) (sin (* 7281.778 (-> self time))) -1.0 1.0)
)
(vector-orient-by-quat! (-> gp-0 vec2) (new 'static 'vector :y 16384.0 :z 40960.0 :w 1.0) (-> gp-0 quat))
(vector+! (-> gp-0 vec1) (-> self root trans) (-> gp-0 vec2))
(set! (-> *camera* slave 0 trans quad) (-> gp-0 vec1 quad))
(let ((v1-10 (-> gp-0 vec2)))
(let ((a0-9 (-> self root trans)))
(let ((a1-4 *up-vector*))
(let ((a2-4 12288.0))
(.mov vf7 a2-4)
)
(.lvf vf5 (&-> a1-4 quad))
)
(.lvf vf4 (&-> a0-9 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.svf (&-> v1-10 quad) vf6)
)
(vector-! (-> gp-0 vec3) (-> gp-0 vec2) (-> gp-0 vec1))
(forward-down->inv-matrix
(the-as matrix (-> *camera* slave 0 tracking))
(-> gp-0 vec3)
(-> *camera* local-down)
)
)
(let* ((v1-17 (-> gp-0 mat))
(a3-1 (-> self node-list data 3 bone transform))
(a0-14 (-> a3-1 rvec quad))
(a1-8 (-> a3-1 uvec quad))
(a2-6 (-> a3-1 fvec quad))
(a3-2 (-> a3-1 trans quad))
)
(set! (-> v1-17 rvec quad) a0-14)
(set! (-> v1-17 uvec quad) a1-8)
(set! (-> v1-17 fvec quad) a2-6)
(set! (-> v1-17 trans quad) a3-2)
)
(matrix->trans (-> gp-0 mat) (-> gp-0 vec2))
(vector-! (-> gp-0 vec2) (camera-pos) (-> gp-0 vec2))
(when (< (vector-dot (-> gp-0 mat fvec) (-> gp-0 vec2)) 0.0)
(matrix-rotate-y! (the-as matrix (-> gp-0 vec0)) 32768.0)
(matrix*! (-> gp-0 mat) (the-as matrix (-> gp-0 vec0)) (-> gp-0 mat))
)
)
(+! (-> self angle) (* 100.0 (rand-vu)))
)
)
:code (behavior ()
(set-setting! 'mode-name 'cam-really-fixed 0.0 0)
(suspend)
(until (process-grab? *target* #f)
(suspend)
)
(suspend)
(if *target*
(set! (-> *target* neck flex-blend) 1.0)
)
(add-setting! 'music-volume 'rel (-> *setting-control* user-current music-volume-movie) 0)
(add-setting! 'sfx-volume 'rel (-> *setting-control* user-current sfx-volume-movie) 0)
(add-setting! 'dialog-volume 'rel (-> *setting-control* user-current dialog-volume-talker) 0)
(set-time! (-> self state-time))
(let* ((v1-21 (get-current-task-event (-> self task)))
(gp-0 (add-process *gui-control* self (gui-channel bbush) (gui-action play) (-> v1-21 scene) -99.0 0))
)
(let ((s5-0 (current-time)))
(while (and (nonzero? (get-status *gui-control* gp-0)) (not (time-elapsed? s5-0 (seconds 60))))
(set! (-> self time) (* 0.0033333334 (the float (- (current-time) (-> self state-time)))))
(suspend)
(when (cpad-pressed? 0 triangle)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle))
(sound-play "inter-burn-bush")
(goto cfg-13)
)
)
)
(label cfg-13)
(set-action!
*gui-control*
(gui-action stop)
gp-0
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
)
(until (process-release? *target*)
(suspend)
)
(task-node-close! (-> self task current-node) 'event)
(go-virtual idle)
)
:post (behavior ()
(rlet ((acc :class vf)
(vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(vf7 :class vf)
)
(init-vf0-vector)
(when *target*
(let* ((a0-0 (-> *target* neck))
(t9-0 (method-of-object a0-0 look-at!))
(a1-0 (new 'stack-no-clear 'vector))
)
(let ((v1-5 (-> self root trans)))
(let ((a2-0 *up-vector*))
(let ((a3-1 12288.0))
(.mov vf7 a3-1)
)
(.lvf vf5 (&-> a2-0 quad))
)
(.lvf vf4 (&-> v1-5 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.svf (&-> a1-0 quad) vf6)
(t9-0 a0-0 a1-0 #f self)
)
)
(des-burning-bush-method-35 self)
)
)
)
(defmethod des-burning-bush-method-37 ((this des-burning-bush))
(let ((s5-0 (new 'stack-no-clear 'bbush-menu-state)))
(set! (-> s5-0 cur) 0)
(set! (-> s5-0 idx) 0)
(dotimes (s4-0 (-> this menu item-count))
(let* ((s2-0 (-> this menu items s4-0))
(s3-0 (task-node-open? (-> s2-0 node)))
(v1-2 (task-node-closed? (-> s2-0 node)))
)
(when (or s3-0 v1-2)
(if v1-2
(set! (-> s5-0 idx) s4-0)
)
(+! (-> s5-0 cur) 1)
)
)
)
(when (cpad-pressed? 0 down l-analog-down)
(+! (-> s5-0 idx) 1)
(if (< (+ (-> s5-0 cur) -1) (-> s5-0 idx))
(set! (-> s5-0 idx) (+ (-> s5-0 cur) -1))
(sound-play "menu-up-down")
)
)
(when (cpad-pressed? 0 up l-analog-up)
(+! (-> s5-0 idx) -1)
(cond
((< (-> s5-0 idx) 0)
(set! (-> s5-0 idx) 0)
0
)
(else
(sound-play "menu-up-down")
)
)
)
(task-node-close! (-> this menu items (-> s5-0 idx) node) 'event)
(when (cpad-pressed? 0 confirm)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle circle x confirm))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle circle x confirm))
(set! (-> this menu-node) (-> *game-info* sub-task-list (-> this menu items (-> s5-0 idx) node)))
(set! (-> this menu-exit?) #t)
)
(when (cpad-pressed? 0 triangle)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle circle x confirm))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle circle x confirm))
(dotimes (s4-3 (-> this menu item-count))
(let ((v1-57 (-> this menu items s4-3)))
(task-node-open! (-> v1-57 node) 'event)
)
)
(set! (-> this menu-node) #f)
(set! (-> this menu-exit?) #t)
)
(let ((s4-4
(new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
)
)
1.0
(let* ((v1-67 (-> *setting-control* user-default language))
(f30-0 (cond
((= v1-67 (language-enum korean))
1.8
)
((= v1-67 (language-enum russian))
1.5
)
((= v1-67 (language-enum english))
1.3
)
((= v1-67 (language-enum german))
1.3
)
((= v1-67 (language-enum spanish))
1.1
)
((= v1-67 (language-enum portuguese))
1.0
)
(else
1.2
)
)
)
)
(set! (-> s5-0 fnt-height) 40)
(set! (-> s5-0 fnt-origin-x) 36)
(set! (-> s5-0 fnt-origin-y) (- 228 (* (-> s5-0 cur) (/ (-> s5-0 fnt-height) 2))))
(set! (-> s4-4 flags) (font-flags shadow kerning middle middle-vert large))
(let ((v1-74 s4-4))
(set! (-> v1-74 width) (the float 440))
)
(let ((v1-75 s4-4))
(set! (-> v1-75 height) (the float 50))
)
(let ((v1-76 s4-4))
(set! (-> v1-76 scale) (* 0.8 f30-0))
)
(let ((v1-77 s4-4)
(a1-7 (-> s5-0 fnt-origin-x))
(a0-61 40)
)
(set! (-> v1-77 origin x) (the float a1-7))
(set! (-> v1-77 origin y) (the float a0-61))
)
(let ((a0-62 s4-4))
(set! (-> a0-62 color) (font-color progress-old-yellow))
)
(let ((s3-3 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (-> this menu title-text) #f))
(s3-3 *temp-string* s4-4 #f 44 (bucket-id hud-draw-hud-alpha))
)
(let ((v1-81 s4-4))
(set! (-> v1-81 height) (the float (-> s5-0 fnt-height)))
)
(dotimes (s3-4 (-> s5-0 cur))
(let ((v1-82 s4-4)
(a1-11 (-> s5-0 fnt-origin-x))
(a0-68 (-> s5-0 fnt-origin-y))
)
(set! (-> v1-82 origin x) (the float a1-11))
(set! (-> v1-82 origin y) (the float a0-68))
)
(let ((v1-83 s4-4))
(set! (-> v1-83 scale) (* f30-0 (if (= s3-4 (-> s5-0 idx))
0.45
0.4
)
)
)
)
(let ((v1-84 s4-4))
(set! (-> v1-84 color) (if (= s3-4 (-> s5-0 idx))
(font-color progress-old-selected)
(font-color default)
)
)
)
(let ((s2-2 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (-> this menu items s3-4 text) #f))
(s2-2 *temp-string* s4-4 #f 44 (bucket-id hud-draw-hud-alpha))
)
(+! (-> s5-0 fnt-origin-y) (-> s5-0 fnt-height))
)
)
)
)
0
(none)
)
(defmethod des-burning-bush-method-38 ((this des-burning-bush))
(when (or (cpad-pressed? 0 confirm) (cpad-pressed? 0 triangle))
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle circle x confirm))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle circle x confirm))
(set! (-> this menu-node) #f)
(set! (-> this menu-exit?) #t)
)
(let ((s5-0
(new 'stack 'font-context *font-default-matrix* 0 0 0.0 (font-color default) (font-flags shadow kerning))
)
)
(let ((s4-0 (new 'stack-no-clear 'des-burning-bush-stack-var1)))
(set! (-> s4-0 word0) 120)
(set! (-> s4-0 fnt-origin-x) 36)
(let ((v1-14 (-> *setting-control* user-default language)))
(set! (-> s4-0 scale) (if (or (= v1-14 (language-enum korean)) (= v1-14 (language-enum russian)))
0.9
0.7
)
)
)
(set! (-> s5-0 flags) (font-flags shadow kerning middle middle-vert large))
(let ((v1-18 s5-0)
(a1-2 (-> s4-0 fnt-origin-x))
(a0-21 40)
)
(set! (-> v1-18 origin x) (the float a1-2))
(set! (-> v1-18 origin y) (the float a0-21))
)
(let ((v1-19 s5-0))
(set! (-> v1-19 width) (the float 440))
)
(let ((v1-20 s5-0))
(set! (-> v1-20 height) (the float 50))
)
(let ((v1-21 s5-0))
(set! (-> v1-21 scale) 1.0)
)
(let ((a0-25 s5-0))
(set! (-> a0-25 color) (font-color progress-old-yellow))
)
(let ((s3-0 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (-> this menu title-text) #f))
(s3-0 *temp-string* s5-0 #f 44 (bucket-id hud-draw-hud-alpha))
)
(let ((v1-25 s5-0))
(set! (-> v1-25 height) (the float 230))
)
(let ((v1-26 s5-0)
(a1-6 (-> s4-0 fnt-origin-x))
(a0-31 98)
)
(set! (-> v1-26 origin x) (the float a1-6))
(set! (-> v1-26 origin y) (the float a0-31))
)
(let ((v1-27 s5-0))
(set! (-> v1-27 scale) (-> s4-0 scale))
)
(let ((a0-32 s5-0))
(set! (-> a0-32 color) (font-color default))
)
(let ((s3-1 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (-> this menu req-text) #f))
(s3-1 *temp-string* s5-0 #f 44 (bucket-id hud-draw-hud-alpha))
)
(let ((v1-31 s5-0)
(a1-10 (-> s4-0 fnt-origin-x))
(a0-37 328)
)
(set! (-> v1-31 origin x) (the float a1-10))
(set! (-> v1-31 origin y) (the float a0-37))
)
(let ((v1-32 s5-0))
(set! (-> v1-32 height) (the float 50))
)
(let ((v1-33 s5-0))
(set! (-> v1-33 scale) (-> s4-0 scale))
)
)
(let ((a0-39 s5-0))
(set! (-> a0-39 color) (font-color default))
)
(let ((gp-1 print-game-text))
(format (clear *temp-string*) (lookup-text! *common-text* (text-id text-007c) #f))
(gp-1 *temp-string* s5-0 #f 44 (bucket-id hud-draw-hud-alpha))
)
)
0
(none)
)
(defstate menu (des-burning-bush)
:virtual #t
:enter (behavior ()
(set-setting! 'minimap 'clear 0.0 (minimap-flag minimap))
(set-setting! 'allow-progress #f 0.0 0)
(set! (-> self time) -1.0)
(set! (-> self menu-exit?) #f)
(set! (-> self menu-have-req?) #t)
(set! (-> self menu) *bbush-menu*)
(let ((t9-2 (-> self menu req-check)))
(if t9-2
(set! (-> self menu-have-req?) (t9-2))
)
)
(set-time! (-> self state-time))
)
:exit (behavior ()
(remove-setting! 'minimap)
(remove-setting! 'allow-progress)
(send-event *camera* 'change-target *target*)
(remove-setting! 'interp-time)
(remove-setting! 'mode-name)
)
:trans (behavior ()
(rlet ((acc :class vf)
(vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(vf7 :class vf)
)
(init-vf0-vector)
(when (and (time-elapsed? (-> self state-time) (seconds 1.5)) (not (-> self menu-exit?)))
(if (-> self menu-have-req?)
(des-burning-bush-method-37 self)
(des-burning-bush-method-38 self)
)
)
(when (!= (-> self time) -1.0)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(new 'stack-no-clear 'vector)
(vector+! gp-0 (-> self root trans) (vector-orient-by-quat!
(new 'stack-no-clear 'vector)
(new 'static 'vector :y 24166.4 :z 32768.0 :w 1.0)
(-> self root quat)
)
)
(set! (-> *camera* slave 0 trans quad) (-> gp-0 quad))
(let ((t9-3 forward-down->inv-matrix)
(a0-7 (-> *camera* slave 0 tracking))
(a1-1 (new 'stack-no-clear 'vector))
(v1-23 (new 'stack-no-clear 'vector))
)
(let ((a2-2 (-> self root trans)))
(let ((a3-0 *up-vector*))
(let ((t0-1 24166.4))
(.mov vf7 t0-1)
)
(.lvf vf5 (&-> a3-0 quad))
)
(.lvf vf4 (&-> a2-2 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.svf (&-> v1-23 quad) vf6)
(t9-3 (the-as matrix a0-7) (vector-! a1-1 v1-23 gp-0) (-> *camera* local-down))
)
)
)
)
)
:code (behavior ()
(set-setting! 'mode-name 'cam-really-fixed 0.0 0)
(suspend)
(until (process-grab? *target* #f)
(suspend)
)
(set! (-> self time) 0.0)
(while (not (-> self menu-exit?))
(suspend)
)
(when (-> self menu-node)
(set! (-> self message-id) (text-id null))
(let ((a0-2 (-> self menu-node))
(v1-7 (the-as game-task-event #f))
)
(countdown (a1-3 (-> a0-2 when-open length))
(let ((a2-3 (-> a0-2 when-open a1-3)))
(if (= (-> self task actor) (-> a2-3 actor))
(set! v1-7 a2-3)
)
)
)
(if v1-7
(set! (-> self message-id)
(the-as
text-id
(add-process *gui-control* self (gui-channel bbush) (gui-action play) (-> v1-7 scene) -99.0 0)
)
)
)
)
(let ((gp-0 (current-time)))
(until (time-elapsed? gp-0 (seconds 0.25))
(suspend)
)
)
(set-time! (-> self state-time))
(while (and (nonzero? (get-status *gui-control* (the-as sound-id (-> self message-id))))
(not (time-elapsed? (-> self state-time) (seconds 60)))
)
(set! (-> self time) (* 0.0033333334 (the float (- (current-time) (-> self state-time)))))
(suspend)
(when (cpad-pressed? 0 triangle)
(logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle))
(logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle))
(sound-play "inter-burn-bush")
)
)
(set-action!
*gui-control*
(gui-action stop)
(the-as sound-id (-> self message-id))
(gui-channel none)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
)
(until (process-release? *target*)
(suspend)
)
(go-virtual idle)
)
:post (behavior ()
(rlet ((acc :class vf)
(vf0 :class vf)
(vf4 :class vf)
(vf5 :class vf)
(vf6 :class vf)
(vf7 :class vf)
)
(init-vf0-vector)
(when *target*
(let* ((a0-0 (-> *target* neck))
(t9-0 (method-of-object a0-0 look-at!))
(a1-0 (new 'stack-no-clear 'vector))
)
(let ((v1-5 (-> self root trans)))
(let ((a2-0 *up-vector*))
(let ((a3-1 20480.0))
(.mov vf7 a3-1)
)
(.lvf vf5 (&-> a2-0 quad))
)
(.lvf vf4 (&-> v1-5 quad))
)
(.add.x.vf vf6 vf0 vf0 :mask #b1000)
(.mul.x.vf acc vf5 vf7 :mask #b111)
(.add.mul.w.vf vf6 vf4 vf0 acc :mask #b111)
(.svf (&-> a1-0 quad) vf6)
(t9-0 a0-0 a1-0 #f self)
)
)
(des-burning-bush-method-35 self)
)
)
)
(defmethod des-burning-bush-method-35 ((this des-burning-bush))
(when (nonzero? (-> this part))
(let ((s5-0 (get-current-task-event (-> this task))))
(let ((v1-5 (-> this entity extra perm)))
(logior! (-> v1-5 status) (entity-perm-status bit-5))
(set! (-> this bb-perm) v1-5)
(logior! (-> v1-5 status) (entity-perm-status bit-14))
)
(let* ((f30-0 (lerp-scale 15.0 128.0 (vector-vector-distance (camera-pos) (-> this root trans)) 163840.0 245760.0))
(f28-0 15.0)
(v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-10 (the-as number (logior #x3f800000 v1-9)))
(f0-4 (+ f28-0 (* (+ -1.0 (the-as float v1-10)) f30-0)))
)
(cond
((or (= (-> s5-0 action) (game-task-action play))
(= (-> s5-0 action) (game-task-action show))
(= (-> s5-0 action) (game-task-action menu))
)
(cond
((= (-> this bb-perm user-object 0) 1)
(spawn-from-cspace (-> this part-off) (-> this node-list data 4))
(spawn-from-cspace (-> this part-off) (-> this node-list data 5))
)
(else
(set! (-> *part-id-table* 1585 init-specs 11 initial-valuef) f0-4)
(set! (-> *part-id-table* 1586 init-specs 11 initial-valuef) (* 0.5 f0-4))
(spawn-from-cspace (-> this part) (-> this node-list data 4))
(spawn-from-cspace (-> this part) (-> this node-list data 5))
)
)
)
(else
)
)
)
)
)
0
(none)
)
(defmethod des-burning-bush-method-34 ((this des-burning-bush))
(let* ((gp-1 (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> this root trans)))
(f30-0 (vector-dot (vector-x-quaternion! (new 'stack-no-clear 'vector) (-> this root quat)) gp-1))
(f0-2 (vector-dot (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> this root quat)) gp-1))
)
(and *target*
(not (focus-test? *target* pilot))
(< (fabs f30-0) 10240.0)
(< 0.0 f0-2)
(< (fabs f0-2) 20480.0)
)
)
)
(defmethod des-burning-bush-method-32 ((this des-burning-bush))
(let ((s5-0 (new 'process 'collide-shape-moving this (collide-list-enum usually-hit-by-player))))
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) cshape-reaction-default)
(set! (-> s5-0 no-reaction)
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
)
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
(set! (-> v1-6 prim-core collide-as) (collide-spec crate))
(set! (-> v1-6 prim-core collide-with) (collide-spec jak player-list tobot))
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
(set! (-> v1-6 transform-index) 3)
(set-vector! (-> v1-6 local-sphere) 0.0 0.0 0.0 20480.0)
(set! (-> s5-0 total-prims) (the-as uint 1))
(set! (-> s5-0 root-prim) v1-6)
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(let ((v1-9 (-> s5-0 root-prim)))
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
)
(set! (-> this root) s5-0)
)
0
(none)
)
(defmethod des-burning-bush-method-33 ((this des-burning-bush))
(initialize-skeleton
this
(the-as skeleton-group (art-group-get-by-name *level* "skel-des-burning-bush" (the-as (pointer level) #f)))
(the-as pair 0)
)
0
(none)
)
;; WARN: Return type mismatch process-focusable vs des-burning-bush.
(defmethod relocate ((this des-burning-bush) (offset int))
(if (nonzero? (-> this task))
(&+! (-> this task) offset)
)
(if (nonzero? (-> this part-off))
(&+! (-> this part-off) offset)
)
(the-as des-burning-bush ((method-of-type process-focusable relocate) this offset))
)
(defmethod deactivate ((this des-burning-bush))
"Make a process dead, clean it up, remove it from the active pool, and return to dead pool."
(if (nonzero? (-> this part-off))
(kill-particles (-> this part-off))
)
((method-of-type process-focusable deactivate) this)
(none)
)
(defmethod run-logic? ((this des-burning-bush))
"Should this process be run? Checked by execute-process-tree."
(or (not (logtest? (-> this mask) (process-mask actor-pause)))
(or (and (nonzero? (-> this draw))
(logtest? (-> this draw status) (draw-control-status on-screen))
(>= (+ (-> *ACTOR-bank* pause-dist) (-> this root pause-adjust-distance))
(vector-vector-distance (-> this root trans) (math-camera-pos))
)
)
(and (nonzero? (-> this skel)) (!= (-> this skel root-channel 0) (-> this skel channel)))
(and (nonzero? (-> this draw)) (logtest? (-> this draw status) (draw-control-status uninited)))
)
)
)
(defmethod init-from-entity! ((this des-burning-bush) (arg0 entity-actor))
(des-burning-bush-method-32 this)
(process-drawable-from-entity! this arg0)
(des-burning-bush-method-33 this)
(let ((f0-0 (res-lump-float (-> this entity) 'rotoffset)))
(if (!= f0-0 0.0)
(quaternion-rotate-local-y! (-> this root quat) (-> this root quat) f0-0)
)
)
(set! (-> this required-vehicles) (res-lump-value arg0 'vehicle-type-mask game-vehicles :time -1000000000.0))
(set! (-> this rotmin) (res-lump-float arg0 'rotmin :default -5461.3335))
(set! (-> this rotmax) (res-lump-float arg0 'rotmax :default 5461.3335))
(set! (-> this task)
(new 'process 'game-task-control (res-lump-value arg0 'task-actor game-task-actor :time -1000000000.0))
)
(set! (-> this angle) 0.0)
(set! (-> this root pause-adjust-distance) 819200.0)
(set! (-> this part) (create-launch-control (-> *part-group-id-table* 380) this))
(set! (-> this part-off) (create-launch-control (-> *part-group-id-table* 379) this))
(transform-post)
(go (method-of-object this idle))
)
(deftype burning-bush-get-on-info (structure)
((trans vector :inline)
(quat quaternion :inline)
(camera-trans vector :inline)
(camera-rot float 9)
(time float)
(fov float)
)
)
(define *burning-bush-get-on-info*
(new 'static 'boxed-array :type burning-bush-get-on-info
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 15826067.0 :y 294066.6 :z 2348413.8 :w 1.0)
:quat (new 'static 'quaternion :x 0.0009 :y 0.4808 :z 0.0009 :w -0.8768)
:camera-trans (new 'static 'vector :x 15828972.0 :y 307578.47 :z 2379081.2 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.9999 0.0 0.0074 -0.0009 0.9911 -0.1331 -0.0074 -0.1331 -0.991)
:time 6000.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 3697802.5 :y 412520.44 :z 6895680.5 :w 1.0)
:quat (new 'static 'quaternion :y 0.9992 :w 0.0389)
:camera-trans (new 'static 'vector :x 3630403.2 :y 428921.66 :z 6831057.5 :w 1.0)
:camera-rot (new 'static 'array float 9 0.8029 0.0 -0.596 0.0794 0.991 0.1069 0.5907 -0.1332 0.7957)
:time 6900.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 5819480.5 :y 388060.38 :z 1678595.2 :w 1.0)
:quat (new 'static 'quaternion :x 0.0013 :y -0.1948 :z -0.0003 :w 0.9808)
:camera-trans (new 'static 'vector :x 5774928.5 :y 468702.4 :z 1851368.2 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.8883 0.0 -0.4591 0.0899 0.9806 -0.174 0.4502 -0.1959 -0.8711)
:time 9000.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 12843417.0 :y 89547.57 :z 11022830.0 :w 1.0)
:quat (new 'static 'quaternion :x 0.0015 :y 0.8039 :z 0.0002 :w 0.5946)
:camera-trans (new 'static 'vector :x 12865863.0 :y 96517.734 :z 11012419.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.4931 0.0 0.8699 0.2364 0.9623 -0.134 -0.8372 0.2718 0.4745)
:time 5100.0
:fov 14563.556
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 11575935.0 :y 108180.27 :z 14247904.0 :w 1.0)
:quat (new 'static 'quaternion :y -0.1133 :w 0.9935)
:camera-trans (new 'static 'vector :x 11535285.0 :y 121128.55 :z 14248524.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.0416 0.0 -0.9991 0.1031 0.9946 0.0042 0.9937 -0.1031 0.0413)
:time 9000.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 5470401.5 :y 51780.402 :z 7791442.5 :w 1.0)
:quat (new 'static 'quaternion :y 0.8257 :z 0.0015 :w 0.5639)
:camera-trans (new 'static 'vector :x 5550344.5 :y 55626.137 :z 7814714.0 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.2121 0.0 0.9772 -0.0007 0.9999 -0.0001 -0.9772 -0.0007 -0.2121)
:time 3900.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 2951720.2 :y 185922.36 :z 12151224.0 :w 1.0)
:quat (new 'static 'quaternion :x -0.0014 :y 0.4042 :z 0.0005 :w 0.9146)
:camera-trans (new 'static 'vector :x 2932693.0 :y 185689.3 :z 12123397.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.9698 0.0 -0.2435 -0.1039 0.9044 -0.4138 0.2202 0.4266 0.8771)
:time 6000.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 12339974.0 :y 181197.2 :z 1548690.2 :w 1.0)
:quat (new 'static 'quaternion :y 0.4266 :w 0.9044)
:camera-trans (new 'static 'vector :x 12309206.0 :y 227872.36 :z 1644105.8 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.9842 0.0 0.1767 -0.0231 0.9913 -0.1291 -0.1751 -0.1311 -0.9757)
:time 6000.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 7752197.0 :y 216207.36 :z 923399.8 :w 1.0)
:quat (new 'static 'quaternion :y -0.951 :w 0.3089)
:camera-trans (new 'static 'vector :x 7668311.0 :y 260772.25 :z 917091.56 :w 1.0)
:camera-rot (new 'static 'array float 9 0.2895 0.0 -0.9571 0.4737 0.8689 0.1433 0.8317 -0.4949 0.2515)
:time 5100.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 1969225.4 :y 140065.6 :z 5292424.5 :w 1.0)
:quat (new 'static 'quaternion :y 0.788 :w -0.6156)
:camera-trans (new 'static 'vector :x 2006893.0 :y 160366.19 :z 5227043.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.752 0.0 0.659 0.0335 0.9987 -0.0383 -0.6582 0.0509 0.751)
:time 8400.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 12238691.0 :y 98111.9 :z 11890045.0 :w 1.0)
:quat (new 'static 'quaternion :x -0.0014 :y 0.5531 :z -0.0006 :w 0.833)
:camera-trans (new 'static 'vector :x 12326140.0 :y 148922.38 :z 11845758.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.7859 0.0 0.6183 -0.166 0.9632 0.211 -0.5956 -0.2684 0.757)
:time 6000.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 9236149.0 :y 43447.5 :z 6553425.0 :w 1.0)
:quat (new 'static 'quaternion :y 0.7227 :w 0.6911)
:camera-trans (new 'static 'vector :x 9367670.0 :y 67202.664 :z 6607653.5 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.3072 0.0 0.9516 0.1112 0.9931 0.0359 -0.9451 0.1169 -0.3051)
:time 4800.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 10618439.0 :y 113487.875 :z 10291461.0 :w 1.0)
:quat (new 'static 'quaternion :x -0.0008 :y 0.9917 :z -0.0011 :w 0.1277)
:camera-trans (new 'static 'vector :x 10764415.0 :y 127953.305 :z 10306016.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.0476 0.0 0.9988 -0.1626 0.9866 0.0077 -0.9855 -0.1628 0.047)
:time 7500.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 529121.7 :y 98823.375 :z 13884964.0 :w 1.0)
:quat (new 'static 'quaternion :y -0.9481 :w -0.3177)
:camera-trans (new 'static 'vector :x 722918.2 :y 101507.07 :z 13901837.0 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.2403 0.0 0.9706 0.264 0.9623 0.0653 -0.934 0.2719 -0.2313)
:time 7200.0
:fov 16384.0
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 2273161.2 :y 250537.17 :z 15519410.0 :w 1.0)
:quat (new 'static 'quaternion :x -0.0007 :y -0.0731 :z -0.0014 :w 0.9973)
:camera-trans (new 'static 'vector :x 2312609.5 :y 318328.84 :z 15637414.0 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.9419 0.0 0.3356 -0.0852 0.9671 -0.2393 -0.3246 -0.254 -0.911)
:time 9300.0
:fov 14563.556
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 16549387.0 :y 106001.2 :z 6772071.0 :w 1.0)
:quat (new 'static 'quaternion :y 0.8949 :w 0.4461)
:camera-trans (new 'static 'vector :x 16576971.0 :y 121950.21 :z 6763736.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.4199 0.0 0.9075 -0.1935 0.9769 0.0895 -0.8866 -0.2132 0.4102)
:time 5400.0
:fov 14563.556
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 15726801.0 :y 114936.22 :z 295390.4 :w 1.0)
:quat (new 'static 'quaternion :x -0.0014 :y -0.7325 :z 0.0007 :w -0.6807)
:camera-trans (new 'static 'vector :x 15773588.0 :y 124979.2 :z 296459.88 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.0256 0.0 0.9996 -0.0761 0.997 -0.0019 -0.9967 -0.0762 -0.0255)
:time 6300.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 9514424.0 :y 84128.56 :z -182453.05 :w 1.0)
:quat (new 'static 'quaternion :x -0.0015 :y 0.8943 :w 0.4472)
:camera-trans (new 'static 'vector :x 9527463.0 :y 95552.305 :z -169796.81 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.7222 0.0 0.6916 -0.0674 0.9952 -0.0704 -0.6883 -0.0975 -0.7188)
:time 6300.0
:fov 14563.556
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 9272824.0 :y 78754.2 :z -690128.9 :w 1.0)
:quat (new 'static 'quaternion :x 0.0002 :y 0.0607 :z 0.0013 :w 0.9981)
:camera-trans (new 'static 'vector :x 9232619.0 :y 192907.27 :z -843155.44 :w 1.0)
:camera-rot (new 'static 'array float 9 0.9996 0.0 -0.0251 0.0133 0.8478 0.53 0.0213 -0.5302 0.8475)
:time 7800.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 9916865.0 :y 155500.14 :z -484290.56 :w 1.0)
:quat (new 'static 'quaternion :x -0.0013 :y 0.8336 :z 0.0005 :w -0.5522)
:camera-trans (new 'static 'vector :x 10009599.0 :y 164922.58 :z -486762.9 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.2507 0.0 0.968 -0.0206 0.9997 -0.0053 -0.9678 -0.0213 -0.2506)
:time 7500.0
:fov 14563.556
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 9770632.0 :y 73132.85 :z -612405.7 :w 1.0)
:quat (new 'static 'quaternion :y 0.0576 :z -0.0015 :w -0.9983)
:camera-trans (new 'static 'vector :x 9774927.0 :y 94098.64 :z -681817.3 :w 1.0)
:camera-rot (new 'static 'array float 9 0.9577 0.0 0.2876 -0.0753 0.965 0.251 -0.2776 -0.262 0.9242)
:time 8100.0
:fov 7281.778
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 6649945.5 :y 156115.36 :z -1471328.6 :w 1.0)
:quat (new 'static 'quaternion :x -0.0008 :y -0.731 :z 0.0013 :w -0.6823)
:camera-trans (new 'static 'vector :x 6694340.5 :y 174896.75 :z -1490136.6 :w 1.0)
:camera-rot (new 'static 'array float 9 0.0245 0.0 0.9996 -0.1697 0.9854 0.0041 -0.9851 -0.1698 0.0241)
:time 6900.0
:fov 14563.556
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 7562680.5 :y 78961.05 :z -2169692.2 :w 1.0)
:quat (new 'static 'quaternion :x 0.0007 :y 0.734 :z 0.0012 :w 0.679)
:camera-trans (new 'static 'vector :x 7570156.5 :y 92349.65 :z -2207594.0 :w 1.0)
:camera-rot (new 'static 'array float 9 0.8539 0.0 0.5203 -0.0666 0.9917 0.1093 -0.516 -0.128 0.8469)
:time 7800.0
:fov 10922.667
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 6538078.0 :y 288967.88 :z -777354.9 :w 1.0)
:quat (new 'static 'quaternion :x 0.0011 :y -0.8817 :z 0.0005 :w -0.4716)
:camera-trans (new 'static 'vector :x 6568851.5 :y 306831.78 :z -770489.94 :w 1.0)
:camera-rot (new 'static 'array float 9 -0.4012 0.0 0.9159 -0.151 0.9863 -0.0661 -0.9034 -0.1648 -0.3957)
:time 6600.0
:fov 12743.111
)
(new 'static 'burning-bush-get-on-info
:trans (new 'static 'vector :x 6656705.5 :y 123696.74 :z -1911393.5 :w 1.0)
:quat (new 'static 'quaternion :x 0.0011 :y 0.3455 :z 0.0007 :w 0.9383)
:camera-trans (new 'static 'vector :x 6681104.0 :y 137490.02 :z -1923000.8 :w 1.0)
:camera-rot (new 'static 'array float 9 0.3877 0.0 0.9217 -0.2533 0.9614 0.1065 -0.8862 -0.2748 0.3727)
:time 5100.0
:fov 14563.556
)
)
)
(deftype task-manager-desert-bbush-get-to (task-manager)
((skill handle)
(update-fov? symbol)
)
(:methods
(task-manager-desert-bbush-get-to-method-32 (_type_) none)
)
)
(defmethod task-manager-desert-bbush-get-to-method-32 ((this task-manager-desert-bbush-get-to))
(if (= (status-of-level-and-borrows *level* 'waswide #f) 'active)
(set-setting! 'extra-bank '((wascity3 bbush1)) 0.0 0)
(set-setting! 'extra-bank '((desert2 bbush1)) 0.0 0)
)
0
(none)
)
(defmethod set-time-limit ((this task-manager-desert-bbush-get-to))
(let ((t9-0 (method-of-type task-manager set-time-limit)))
(t9-0 this)
)
(task-manager-desert-bbush-get-to-method-32 this)
(set-setting! 'airlock #f 0.0 0)
(set! (-> this update-fov?) #f)
(when (nonzero? (-> this skill))
(let ((a0-5 (handle->process (-> this skill))))
(if a0-5
(deactivate a0-5)
)
)
)
(none)
)
(defstate active (task-manager-desert-bbush-get-to)
:virtual #t
:event (behavior ((proc process) (argc int) (message symbol) (block event-message-block))
(case message
(('notify)
(case (-> block param 0)
(('pickup)
(send-event self 'complete)
)
(('die)
(send-event self 'fail)
)
)
)
(else
(task-manager-event-handler proc argc message block)
)
)
)
:code (behavior ()
(set-setting! 'minimap 'clear 0.0 (minimap-flag minimap))
(while (not (process-grab? *target* #f))
(suspend)
)
(let ((t1-1 (new 'stack 'fact-info self (pickup-type eco-pill-random) (-> *FACT-bank* default-eco-pill-green-inc)))
(a0-3 (new 'stack-no-clear 'vector))
)
(logior! (-> t1-1 options) (actor-option fade-out))
(set! (-> t1-1 fade-time)
(the-as time-frame (the int (-> *burning-bush-get-on-info* (-> self info index) time)))
)
(set! (-> a0-3 quad) (-> *burning-bush-get-on-info* (-> self info index) trans quad))
(+! (-> a0-3 y) 4096.0)
(set! (-> self skill)
(ppointer->handle
(birth-pickup-at-point a0-3 (pickup-type skill) (-> *FACT-bank* super-skill-inc) #t self t1-1)
)
)
)
(set-time! (-> self start-time))
(set! (-> self time-limit)
(the-as time-frame (the int (+ 300.0 (-> *burning-bush-get-on-info* (-> self info index) time))))
)
(suspend)
(send-event (handle->process (-> self skill)) 'get-notify self)
(set-setting! 'interp-time 'abs 0.0 0)
(set-setting! 'mode-name 'cam-fixed 0.0 0)
(set! (-> *ACTOR-bank* birth-max) 1000)
(suspend)
(let ((f30-0 (-> *camera* settings fov)))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set! (-> s5-0 quad) (-> *camera-combiner* trans quad))
(let ((gp-0 (new 'stack-no-clear 'matrix)))
(let* ((a2-7 (-> *camera-combiner* inv-camera-rot))
(v1-46 (-> a2-7 rvec quad))
(a0-15 (-> a2-7 uvec quad))
(a1-15 (-> a2-7 fvec quad))
(a2-8 (-> a2-7 trans quad))
)
(set! (-> gp-0 rvec quad) v1-46)
(set! (-> gp-0 uvec quad) a0-15)
(set! (-> gp-0 fvec quad) a1-15)
(set! (-> gp-0 trans quad) a2-8)
)
(let ((s4-0 (new 'stack 'transformq)))
(let ((v1-52 (-> *burning-bush-get-on-info* (-> self info index)))
(a1-17 (new 'stack-no-clear 'matrix))
)
(set! (-> s4-0 trans quad) (-> v1-52 camera-trans quad))
(set-vector! (-> s4-0 scale) 1.0 1.0 1.0 1.0)
(set! (-> a1-17 rvec x) (-> v1-52 camera-rot 0))
(set! (-> a1-17 rvec y) (-> v1-52 camera-rot 1))
(set! (-> a1-17 rvec z) (-> v1-52 camera-rot 2))
(set! (-> a1-17 rvec w) 0.0)
(set! (-> a1-17 uvec x) (-> v1-52 camera-rot 3))
(set! (-> a1-17 uvec y) (-> v1-52 camera-rot 4))
(set! (-> a1-17 uvec z) (-> v1-52 camera-rot 5))
(set! (-> a1-17 uvec w) 0.0)
(set! (-> a1-17 fvec x) (-> v1-52 camera-rot 6))
(set! (-> a1-17 fvec y) (-> v1-52 camera-rot 7))
(set! (-> a1-17 fvec z) (-> v1-52 camera-rot 8))
(set! (-> a1-17 fvec w) 0.0)
(set! (-> a1-17 trans x) 0.0)
(set! (-> a1-17 trans y) 0.0)
(set! (-> a1-17 trans z) 0.0)
(set! (-> a1-17 trans w) 1.0)
(matrix->quaternion (-> s4-0 quat) a1-17)
)
(send-event *camera* 'teleport-to-transformq s4-0)
)
(set! (-> self update-fov?) #t)
(let ((s4-1 (current-time)))
(until (time-elapsed? s4-1 (seconds 3))
(set! (-> *camera* slave 0 fov) (-> *burning-bush-get-on-info* (-> self info index) fov))
(suspend)
)
)
(set! (-> self update-fov?) #f)
(set! (-> *camera-combiner* trans quad) (-> s5-0 quad))
(let ((a2-15 (-> *camera-combiner* inv-camera-rot))
(v1-75 (-> gp-0 rvec quad))
(a0-24 (-> gp-0 uvec quad))
(a1-19 (-> gp-0 fvec quad))
(a3-5 (-> gp-0 trans quad))
)
(set! (-> a2-15 rvec quad) v1-75)
(set! (-> a2-15 uvec quad) a0-24)
(set! (-> a2-15 fvec quad) a1-19)
(set! (-> a2-15 trans quad) a3-5)
)
)
)
(set! (-> *camera* settings fov) f30-0)
)
(remove-setting! 'minimap)
(set! (-> *ACTOR-bank* birth-max) 1000)
(let ((a0-28 (get-continue-by-name *game-info* (-> self node-info reset fail-info retry continue)))
(gp-1 (new 'static 'vector :z 1.0))
)
(when a0-28
(move-camera! a0-28)
(set-vector!
gp-1
(-> *camera-combiner* inv-camera-rot uvec x)
(-> *camera-combiner* inv-camera-rot uvec y)
(-> *camera-combiner* inv-camera-rot uvec z)
1.0
)
(vector-negate-in-place! gp-1)
(set-setting! 'string-startup-vector 'abs gp-1 0)
)
)
(persist-with-delay *setting-control* 'interp-time (seconds 0.5) 'interp-time 'abs 0.0 0)
(remove-setting! 'fov)
(remove-setting! 'interp-time)
(remove-setting! 'mode-name)
(while (not (process-release? *target*))
(suspend)
)
(until #f
(hud-timer-handler self)
(suspend)
)
#f
)
)
(deftype wascity-burning-bush (des-burning-bush)
()
)
(defskelgroup skel-wascity-burning-bush wascity-burning-bush wascity-burning-bush-lod0-jg wascity-burning-bush-idle-ja
((wascity-burning-bush-lod0-mg (meters 999999)))
:bounds (static-spherem 0 1.5 0 3.5)
)
(defmethod init-from-entity! ((this wascity-burning-bush) (arg0 entity-actor))
(des-burning-bush-method-32 this)
(process-drawable-from-entity! this arg0)
(des-burning-bush-method-33 this)
(let ((f0-0 (res-lump-float (-> this entity) 'rotoffset)))
(if (!= f0-0 0.0)
(quaternion-rotate-local-y! (-> this root quat) (-> this root quat) f0-0)
)
)
(set! (-> this rotmin) (res-lump-float arg0 'rotmin :default -5461.3335))
(set! (-> this rotmax) (res-lump-float arg0 'rotmax :default 5461.3335))
(set! (-> this task)
(new 'process 'game-task-control (res-lump-value arg0 'task-actor game-task-actor :time -1000000000.0))
)
(set! (-> this angle) 0.0)
(set! (-> this root pause-adjust-distance) 819200.0)
(set! (-> this part) (create-launch-control (-> *part-group-id-table* 381) this))
(set! (-> this part-off) (create-launch-control (-> *part-group-id-table* 382) this))
(transform-post)
(go (method-of-object this idle))
)
(defmethod des-burning-bush-method-33 ((this wascity-burning-bush))
(initialize-skeleton
this
(the-as
skeleton-group
(art-group-get-by-name *level* "skel-wascity-burning-bush" (the-as (pointer level) #f))
)
(the-as pair 0)
)
0
(none)
)
(defmethod des-burning-bush-method-35 ((this wascity-burning-bush))
(let ((v1-1 (get-current-task-event (-> this task))))
(let ((a0-4 (-> this entity extra perm)))
(logior! (-> a0-4 status) (entity-perm-status bit-5))
(set! (-> this bb-perm) a0-4)
(logior! (-> a0-4 status) (entity-perm-status bit-14))
)
(cond
((= (-> this bb-perm user-object 0) 1)
(if (nonzero? (-> v1-1 action))
(spawn-from-cspace (-> this part) (-> this node-list data 3))
)
)
((= (-> v1-1 action) (game-task-action show))
(spawn-from-cspace (-> this part) (-> this node-list data 3))
)
((= (-> v1-1 action) (game-task-action play))
(spawn-from-cspace (-> this part-off) (-> this node-list data 3))
)
((= (-> v1-1 action) (game-task-action menu))
(spawn-from-cspace (-> this part-off) (-> this node-list data 3))
)
(else
)
)
)
0
(none)
)
(deftype city-des-burning-bush (des-burning-bush)
()
)