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

3187 lines
153 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: sig0-course.gc
;; name in dgo: sig0-course
;; dgos: ATE
(declare-type sig0-course bot-course)
;; DECOMP BEGINS
(deftype sig-atoll (sig)
((sig-course sig0-course :offset 652)
)
:heap-base #x3b0
:method-count-assert 260
:size-assert #x430
:flag-assert #x10403b00430
(:methods
(sig-atoll-method-259 (_type_) symbol 259)
)
)
(deftype sig0-course (bot-course)
((liftcat-speech-index int8 :offset-assert 48)
(first-liftcat-speeches (array int16) :offset-assert 52)
(second-liftcat-speeches (array int16) :offset-assert 56)
)
:method-count-assert 9
:size-assert #x3c
:flag-assert #x90000003c
)
;; WARN: Return type mismatch object vs symbol.
(defmethod alive? sig-atoll ((obj sig-atoll))
(let ((t9-0 (method-of-type bot alive?)))
(the-as symbol (and (t9-0 obj) (-> obj next-state) (let ((v1-3 (-> obj next-state name)))
(or (= v1-3 'waiting-far)
(= v1-3 'waiting-close)
(= v1-3 'waiting-turn)
(= v1-3 'waiting-crouched)
(= v1-3 'charge-plasma)
)
)
)
)
)
)
;; WARN: Return type mismatch object vs none.
(defmethod go-idle sig-atoll ((obj sig-atoll))
(cond
((task-node-closed? (game-task-node atoll-sig-resolution))
(cleanup-for-death obj)
(go (method-of-object obj die-fast))
)
(else
(go (method-of-object obj waiting-crouched))
)
)
(none)
)
;; WARN: Return type mismatch object vs symbol.
(defmethod sig-atoll-method-259 sig-atoll ((obj sig-atoll))
(let ((v1-0 *target*))
(the-as symbol (and v1-0
(not (logtest? (-> v1-0 focus-status) (focus-status edge-grab)))
(>= (- (-> v1-0 control trans y) (-> obj sig-course spots 11 center y)) -819.2)
)
)
)
)
(defun sig0-first-battle-too-far ((arg0 sig-atoll))
(let ((gp-0 (bot-simple-check-too-far arg0)))
(cond
((and (zero? gp-0) (< 24576.0 (- (-> (get-trans *target* 1) y) (-> arg0 sig-course spots 2 center y))))
(set! gp-0 1)
)
((>= (-> (target-pos 0) z) -3399680.0)
(set! gp-0 2)
)
)
gp-0
)
)
(defun sig0-tank-check-too-far ((arg0 sig-atoll))
(let ((gp-0 (bot-simple-check-too-far arg0)))
(if (and (zero? gp-0) (not (sig-atoll-method-259 arg0)))
(set! gp-0 1)
)
gp-0
)
)
(defun sig0-gangway-check-too-far ((arg0 sig-atoll))
(let ((gp-0 (bot-simple-check-too-far arg0)))
(when (nonzero? gp-0)
(let* ((s5-1 (-> arg0 sig-course spots))
(f0-0 (vector-segment-distance-point!
(target-pos 0)
(the-as vector (-> s5-1 18))
(the-as vector (-> s5-1 19))
(the-as vector #f)
)
)
)
(cond
((< f0-0 45056.0)
(set! gp-0 0)
)
((< f0-0 110592.0)
(set! gp-0 1)
)
)
)
)
gp-0
)
)
(defun sig0-final-snipers-check-too-far ((arg0 sig-atoll))
(let ((gp-0 (bot-simple-check-too-far arg0)))
(when (or (zero? gp-0) (= gp-0 1))
(let ((f0-1 (- (-> (get-trans *target* 1) y) (-> arg0 sig-course spots 38 center y))))
(cond
((>= f0-1 53248.0)
(set! gp-0 2)
)
((>= f0-1 34816.0)
(set! gp-0 1)
)
)
)
)
gp-0
)
)
(defun sig0-say-look-out-if-should ((arg0 sig-atoll))
(when (logtest? (-> arg0 bot-task-bits) 4)
(when (not (logtest? (-> arg0 bot-task-bits) 16))
(let ((s5-0 (handle->process (-> arg0 focus handle))))
(when s5-0
(let ((v1-9 (if (type? s5-0 nav-enemy)
s5-0
)
)
)
(when v1-9
(if (>= 20480.0 (- (-> (the-as process-focusable v1-9) root-override trans y) (-> arg0 root-override2 trans y)))
(logior! (-> arg0 bot-task-bits) 16)
)
)
)
)
)
)
(if (and (logtest? (-> arg0 bot-task-bits) 16)
(not (speech-playing? arg0 26))
(not (channel-active? arg0 (the-as uint 0)))
)
(play-speech arg0 26)
)
)
(none)
)
(defun sig-say-waste-the-suckers-if-should ((arg0 sig-atoll))
(if (and (logtest? (-> arg0 bot-task-bits) 8)
(not (speech-playing? arg0 25))
(not (channel-active? arg0 (the-as uint 0)))
)
(play-speech arg0 25)
)
(none)
)
(define *sig0-course*
(new 'static 'sig0-course
:speech-count #x34
:spot-count #x2a
:too-far-warn-speeches (new 'static 'bot-speech-list-shuffle
:flags #xa
:last-local-index -1
:speech-indexes (new 'static 'boxed-array :type int16 35 36 37)
)
:too-far-fail-speeches (new 'static 'bot-speech-list-shuffle
:flags #xa
:last-local-index -1
:speech-indexes (new 'static 'boxed-array :type int16 38 43 44 45 48 49 50 51)
)
:attack-player-speeches (new 'static 'bot-speech-list
:flags #x2
:last-local-index -1
:speech-indexes (new 'static 'boxed-array :type int16 42 41 39 40 46 47)
)
:default-check-too-far 'bot-simple-check-too-far
:waypoints (new 'static 'boxed-array :type bot-waypoint
(new 'static 'bot-waypoint
:waypoint-id 1
:skip-to #xa
:on-set (lambda ((arg0 sig-atoll) (arg1 bot-speech-list-shuffle))
(let ((a0-1 20))
(set! (-> arg0 hit-points) a0-1)
(set! (-> arg0 enemy-info-override default-hit-points) a0-1)
)
(let ((a1-1 (new 'stack-no-clear 'vector)))
(set-vector! a1-1 0.0 32768.0 0.0 1.0)
(quaternion-zxy! (-> arg0 root-override2 quat) a1-1)
)
(clear-speech-flags! arg0)
(logior! (-> arg0 focus-status) (focus-status disable))
(let ((v1-9 (get-current-task-event (-> arg0 task))))
(if (= (-> v1-9 action) (game-task-action say))
(add-process
*gui-control*
arg0
(gui-channel art-load)
(gui-action queue)
(the-as string (-> v1-9 scene))
-99.0
0
)
)
)
(let ((v1-11 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-11 bytes 5) (the-as uint 1))
(set! (-> v1-11 bytes 6) (the-as uint 0))
(set! (-> v1-11 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-11) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when *target*
(let* ((s5-0 (target-pos 0))
(f1-0 (vector-vector-xz-distance (-> arg1 root-override2 trans) s5-0))
(f0-1 (- (-> s5-0 x) (-> arg1 root-override2 trans x)))
(f2-2 (- (-> s5-0 z) (-> arg1 root-override2 trans z)))
)
(when (and (>= f2-2 -40960.0)
(or (>= 40960.0 f1-0) (< f2-2 24576.0) (and (< f2-2 192512.0) (or (< f0-1 -81920.0) (< 53248.0 f0-1))))
)
(let ((v1-19 (get-current-task-event (-> arg1 task))))
(cond
((= (-> v1-19 action) (game-task-action say))
(when (scene-play arg1 (the-as string (-> v1-19 scene)) #f)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 2 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 3 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
)
)
)
)
#f
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 2
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(stop-speech arg0 (the-as uint 0) #f)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) (the-as uint 1))
(set! (-> v1-3 bytes 6) (the-as uint 0))
(set! (-> v1-3 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-3) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (when (scene-release? arg1)
(reset-warn-time! arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 3 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 3
:skip-to #xa
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(if (demo?)
(talker-spawn-func (-> *talker-speech* 77) *entity-pool* (target-pos 0) (the-as region #f))
)
(process-entity-status! arg0 (entity-perm-status no-kill) #t)
(logclear! (-> arg0 focus-status) (focus-status disable))
(logior! (-> arg0 bot-flags) (bot-flags bf06))
(set! (-> arg0 too-far-warn-dist) 286720.0)
(set-setting! 'airlock #f 0 0)
(let ((a1-3 (new 'stack-no-clear 'array 'symbol 3)))
(set! (-> a1-3 2) 'atoll3)
(set! (-> a1-3 1) 'atoll2)
(set! (-> a1-3 0) 'atoll1)
(want-sound-banks *load-state* a1-3)
)
(play-speech arg0 0)
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) (process->ppointer pp))
(set! (-> a1-5 num-params) 0)
(set! (-> a1-5 message) 'trigger)
(let ((t9-7 send-event-function)
(v1-21 (-> arg0 actor-group 0 data 0 actor))
)
(t9-7
(if v1-21
(-> v1-21 extra process)
)
a1-5
)
)
)
(let ((v1-25 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-25 bytes 5) (the-as uint 1))
(set! (-> v1-25 bytes 6) (the-as uint 1))
(set! (-> v1-25 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-25) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 4 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
)
:on-update (lambda ((arg0 sig-atoll))
(if (and (logtest? (-> arg0 bot-task-bits) 2)
(not (speech-playing? arg0 33))
(not (channel-active? arg0 (the-as uint 0)))
)
(play-speech arg0 33)
)
(none)
)
:on-skipping-here #f
:check-too-far 'sig0-first-battle-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 4
:skip-to #xa
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 too-far-warn-dist) 286720.0)
(let ((v1-2 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-2 bytes 5) (the-as uint 1))
(set! (-> v1-2 bytes 6) (the-as uint 2))
(set! (-> v1-2 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-2) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (with-pp
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 1)
(set! (-> a1-1 message) 'query)
(set! (-> a1-1 param 0) (the-as uint 'beaten))
(let ((t9-0 send-event-function)
(v1-6 (-> arg1 actor-group 0 data 0 actor))
)
(when (t9-0
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 5 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(if (and (logtest? (-> arg0 bot-task-bits) 2)
(not (speech-playing? arg0 33))
(not (channel-active? arg0 (the-as uint 0)))
)
(play-speech arg0 33)
)
(none)
)
:on-skipping-here #f
:check-too-far 'sig0-first-battle-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 5
:skip-to #xa
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-choose-piston arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 4))
(set! (-> v1-1 bytes 6) (the-as uint 3))
(set! (-> v1-1 bytes 7) (the-as uint 4))
(set! (-> v1-1 bytes 8) (the-as uint 5))
(set! (-> v1-1 bytes 9) (the-as uint 6))
(set! (-> v1-1 bytes 10) (the-as uint 1))
(set! (-> v1-1 bytes 11) (the-as uint 1))
(set! (-> v1-1 bytes 12) (the-as uint 2))
(set! (-> v1-1 bytes 13) (the-as uint 2))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-choose-piston v1-1) check-done)
(lambda ((arg0 sigt-choose-piston) (arg1 sig-atoll))
(when (sigt-choose-piston-method-12 arg0 arg1)
(reset-warn-time! arg1)
(set! (-> arg1 platform-index) (-> arg0 actor-indexes (-> arg0 which-spot)))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 6 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(if (and (not (speech-playing? arg0 1))
(not (channel-active? arg0 (the-as uint 0)))
(< (-> arg0 root-override2 trans z) (-> (target-pos 0) z))
)
(play-speech arg0 1)
)
(none)
)
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 6
:nav-mesh-index 1
:skip-to #xa
:on-set (lambda ((arg0 sig-atoll))
(logior! (-> arg0 focus-status) (focus-status ignore))
(let ((gp-0 7)
(s5-0 8)
)
(when (= (-> arg0 platform-index) 2)
(set! gp-0 9)
(set! s5-0 10)
)
(let ((v1-6 (get-task-by-type (-> arg0 ai-ctrl) sigt-riding-piston arg0)))
(set! (-> v1-6 bytes 5) (the-as uint 2))
(set! (-> v1-6 bytes 6) (the-as uint gp-0))
(set! (-> v1-6 bytes 7) (the-as uint s5-0))
(set! (-> v1-6 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-riding-piston v1-6) check-done)
(the-as
(function sigt-riding-piston sig symbol)
(lambda ((arg0 ai-task-control) (arg1 sig-atoll)) (when (ai-task-control-method-12 arg0 arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 7 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(when (not (channel-active? arg0 (the-as uint 0)))
(if (and (not (speech-playing? arg0 1)) (< (-> arg0 root-override2 trans z) (-> (target-pos 0) z)))
(play-speech arg0 1)
)
)
(none)
)
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 7
:nav-mesh-index 1
:skip-to #xa
:on-set (lambda ((arg0 sig-atoll))
(reset-warn-time! arg0)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) (the-as uint 1))
(set! (-> v1-3 bytes 6) (the-as uint 11))
(set! (-> v1-3 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-3) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 1)
(set! (-> a1-1 message) 'query)
(set! (-> a1-1 param 0) (the-as uint 'beaten))
(let ((t9-0 send-event-function)
(v1-6 (-> arg1 actor-group 0 data 3 actor))
)
(when (t9-0
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
(cond
((sig-atoll-method-259 arg1)
(let ((a0-4 (-> arg1 actor-group 0 data 4 actor)))
(set! (-> arg1 poi-handle) (ppointer->handle (if a0-4
(process->ppointer (-> a0-4 extra process))
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 8 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
((not (speech-playing? arg1 3))
(play-speech arg1 3)
(reset-warn-time! arg1)
#f
)
)
)
)
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'sig0-tank-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 8
:nav-mesh-index 1
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(logclear! (-> arg0 focus-status) (focus-status ignore))
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sig-tank" -99.0 0)
(let ((v1-6 (-> arg0 entity extra perm)))
(logior! (-> v1-6 status) (entity-perm-status bit-5))
(set! (-> arg0 plasma charge-speed) (if (logtest? (-> v1-6 user-uint8 0) 1)
0.5
0.25
)
)
)
(play-speech arg0 2)
(let ((v1-14 (get-task-by-type (-> arg0 ai-ctrl) sigt-charge-plasma arg0)))
(set! (-> v1-14 bytes 5) (the-as uint 3))
(set! (-> v1-14 bytes 6) (the-as uint 12))
(set! (-> v1-14 bytes 7) (the-as uint 13))
(set! (-> v1-14 bytes 8) (the-as uint 14))
(set! (-> v1-14 bytes 10) (the-as uint 4))
(set! (-> (the-as sigt-charge-plasma v1-14) check-done)
(the-as
(function sigt-charge-plasma sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(if (and (not (channel-active? arg1 (the-as uint 0))) (sig-atoll-method-259 arg1))
(sig-plasma-method-9 (-> arg1 plasma))
)
(when (and (sig-plasma-method-13 (-> arg1 plasma)) (scene-play arg1 "atoll-sig-tank" #f))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 9 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'sig0-tank-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 9
:nav-mesh-index 1
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 15))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (scene-release? arg1)
(clear-poi-and-focus! arg1)
(reset-warn-time! arg1)
(let ((v1-8 (-> arg1 entity extra perm)))
(logior! (-> v1-8 status) (entity-perm-status bit-5))
(set! (-> v1-8 user-int8 0) (the-as int (logior (-> v1-8 user-uint8 0) 1)))
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 10 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 10
:nav-mesh-index 2
:skip-to #xf
:on-set (lambda ((arg0 sig-atoll))
(play-speech arg0 4)
(logior! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 36864.0)
(let ((v1-6 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-6 bytes 5) (the-as uint 2))
(set! (-> v1-6 bytes 6) (the-as uint 16))
(set! (-> v1-6 bytes 7) (the-as uint 17))
(set! (-> v1-6 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-6) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(cond
((and (logtest? (-> arg1 actor-group 0 data 5 actor extra perm status) (entity-perm-status dead))
(logtest? (-> arg1 actor-group 0 data 6 actor extra perm status) (entity-perm-status dead))
)
(logclear! (-> arg1 focus-status) (focus-status disable))
(set! (-> arg1 notice-enemy-dist) 122880.0)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 11 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
(else
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(if (and (not (speech-playing? arg1 5))
(not (channel-active? arg1 (the-as uint 0)))
(let ((f0-1 73728.0))
(>= (* f0-1 f0-1) (vector-vector-xz-distance-squared (target-pos 0) (-> arg1 root-override2 trans)))
)
)
(play-speech arg1 5)
)
)
#f
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here (lambda ((arg0 sig-atoll))
(set-action!
*gui-control*
(gui-action stop)
(the-as sound-id 1)
(gui-channel art-load)
(gui-action none)
(the-as string #f)
(the-as (function gui-connection symbol) #f)
(the-as process #f)
)
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(logclear! (-> arg0 focus-status) (focus-status disable))
(process-entity-status! arg0 (entity-perm-status no-kill) #t)
(logior! (-> arg0 bot-flags) (bot-flags bf06))
(set! (-> arg0 notice-enemy-dist) 122880.0)
(clear-poi-and-focus! arg0)
(send-event arg0 'move-trans (-> arg0 sig-course spots 16))
(send-event *target* 'continue (get-continue-by-name *game-info* "sig0-hiding-behind-blocks"))
(none)
)
:check-too-far 'sig0-gangway-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 11
:nav-mesh-index 2
:skip-to #xf
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 sig-course liftcat-speech-index) 0)
(let ((f0-0 (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
(f1-0 98304.0)
)
(if (>= f0-0 (* f1-0 f1-0))
(logior! (-> arg0 waypoint-bits) 2)
)
)
(play-speech arg0 6)
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-10 bytes 5) (the-as uint 1))
(set! (-> v1-10 bytes 6) (the-as uint 20))
(set! (-> v1-10 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-10) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(when (and (not (logtest? (-> arg1 waypoint-bits) 4))
(outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
)
(set! (-> arg1 waypoint-bits) (logand -5 (-> arg1 waypoint-bits)))
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 0)
(set! (-> a1-2 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-14 (-> arg1 actor-group 0 data 7 actor))
)
(t9-1
(if v1-14
(-> v1-14 extra process)
)
a1-2
)
)
)
)
)
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) (process->ppointer pp))
(set! (-> a1-3 num-params) 0)
(set! (-> a1-3 message) 'query)
(let ((t9-2 send-event-function)
(v1-21 (-> arg1 actor-group 0 data 8 actor))
)
(case (t9-2
(if v1-21
(-> v1-21 extra process)
)
a1-3
)
((2)
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(logior! (-> arg1 waypoint-bits) 1)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) (process->ppointer pp))
(set! (-> a1-4 num-params) 0)
(set! (-> a1-4 message) 'beaten)
(let ((t9-3 send-event-function)
(v1-34 (-> arg1 actor-group 0 data 7 actor))
)
(t9-3
(if v1-34
(-> v1-34 extra process)
)
a1-4
)
)
)
)
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) (process->ppointer pp))
(set! (-> a1-5 num-params) 1)
(set! (-> a1-5 message) 'query)
(set! (-> a1-5 param 0) (the-as uint 'beaten))
(let ((t9-4 send-event-function)
(v1-43 (-> arg1 actor-group 0 data 7 actor))
)
(when (and (t9-4
(if v1-43
(-> v1-43 extra process)
)
a1-5
)
(outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 12 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
)
)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(cond
((and (logtest? (-> arg0 waypoint-bits) 2)
(outside-spot-radius? arg0 (the-as bot-spot #f) (the-as vector #f) #f)
)
(set! (-> arg0 waypoint-bits) (logand -3 (-> arg0 waypoint-bits)))
(let ((f0-0 98304.0))
(if (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
(play-speech arg0 34)
)
)
)
((and (logtest? (-> arg0 waypoint-bits) 2)
(let ((f0-3 49152.0))
(>= (* f0-3 f0-3) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
)
)
(set! (-> arg0 waypoint-bits) (logand -3 (-> arg0 waypoint-bits)))
(play-speech arg0 34)
)
(else
(when (and (outside-spot-radius? arg0 (the-as bot-spot #f) (the-as vector #f) #f)
(not (channel-active? arg0 (the-as uint 0)))
)
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-7 from) (process->ppointer pp))
(set! (-> a1-7 num-params) 0)
(set! (-> a1-7 message) 'query)
(let ((t9-9 send-event-function)
(v1-28 (-> arg0 actor-group 0 data 8 actor))
)
(when (and (zero? (t9-9
(if v1-28
(-> v1-28 extra process)
)
a1-7
)
)
(let ((f0-6 98304.0))
(>= (* f0-6 f0-6) (vector-vector-xz-distance-squared (target-pos 0) (-> arg0 root-override2 trans)))
)
)
(when (and (demo?)
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 1))
(logtest? (-> arg0 waypoint-bits) 16)
)
(set! (-> arg0 waypoint-bits) (logand -17 (-> arg0 waypoint-bits)))
(talker-spawn-func (-> *talker-speech* 80) *entity-pool* (target-pos 0) (the-as region #f))
)
(when (or (not (logtest? (-> arg0 waypoint-bits) 8))
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 8))
)
(if (and (demo?) (zero? (logand (-> arg0 waypoint-bits) 8)))
(logior! (-> arg0 waypoint-bits) 16)
)
(logior! (-> arg0 waypoint-bits) 8)
(let* ((s5-4 (-> arg0 sig-course))
(s4-1 (-> s5-4 liftcat-speech-index))
)
(play-speech arg0 (-> s5-4 first-liftcat-speeches s4-1))
(let ((v1-62 (+ s4-1 1)))
(if (>= v1-62 (-> s5-4 first-liftcat-speeches length))
(set! v1-62 0)
)
(set! (-> s5-4 liftcat-speech-index) v1-62)
)
)
(set! (-> arg0 waypoint-time0) (-> pp clock frame-counter))
)
)
)
)
)
)
)
(none)
)
)
:on-skipping-here #f
:check-too-far 'sig0-gangway-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 12
:nav-mesh-index 3
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(if (< -86016.0 (- (-> (target-pos 0) z) (-> arg0 sig-course spots 20 center z)))
(play-speech arg0 9)
)
(let ((a0-3 (-> arg0 actor-group 0 data 10 actor)))
(set! (-> arg0 poi-handle) (ppointer->handle (if a0-3
(process->ppointer (-> a0-3 extra process))
)
)
)
)
(let ((v1-13 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-13 bytes 5) (the-as uint 2))
(set! (-> v1-13 bytes 6) (the-as uint 21))
(set! (-> v1-13 bytes 7) (the-as uint 22))
(set! (-> v1-13 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-13) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(set! (-> arg1 too-far-warn-dist) 184320.0)
(set! (-> arg1 too-far-fail-dist-delta) 122880.0)
(cond
((not (logtest? (-> arg1 waypoint-bits) 1))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
(f1-0 81920.0)
)
(cond
((and (< f0-2 (* f1-0 f1-0))
(not (channel-active? arg1 (the-as uint 0)))
(process-grab? arg1 #t)
(process-grab? *target* #t)
)
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
(logior! (-> arg1 waypoint-bits) 1)
(process-grab? arg1 #f)
(process-grab? *target* #f)
(reset-warn-time! arg1)
(play-speech arg1 10)
(set-setting! 'entity-name "camera-68" 0 0)
)
(else
(set! (-> arg1 too-far-warn-dist) 81920.0)
(set! (-> arg1 too-far-fail-dist-delta) 225280.0)
)
)
)
)
)
((begin (reset-warn-time! arg1) (logtest? (-> arg1 waypoint-bits) 2))
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 4.5))
(process-release? arg1)
(process-release? *target*)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 13 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 3))
(remove-setting! 'entity-name)
(logior! (-> arg1 waypoint-bits) 2)
(set-setting! 'sound-mode #f 0 1)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 13
:nav-mesh-index 3
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sniper-a" -99.0 0)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-6 (-> arg0 actor-group 0 data 9 actor))
)
(t9-1
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
)
)
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) sigt-charge-plasma arg0)))
(set! (-> v1-10 bytes 5) (the-as uint 2))
(set! (-> v1-10 bytes 6) (the-as uint 21))
(set! (-> v1-10 bytes 7) (the-as uint 22))
(set! (-> v1-10 bytes 10) (the-as uint 10))
(set! (-> (the-as sigt-charge-plasma v1-10) check-done)
(the-as
(function sigt-charge-plasma sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(cond
((sig-plasma-method-10 (-> arg1 plasma))
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-1 send-event-function)
(v1-9 (-> arg1 actor-group 0 data 9 actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-1
)
)
)
(logior! (-> arg1 waypoint-bits) 1)
)
(let ((s5-0 *target*))
(if (and s5-0 (let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-2 send-event-function)
(v1-21 (-> arg1 actor-group 0 data 9 actor))
)
(and (t9-2
(if v1-21
(-> v1-21 extra process)
)
a1-2
)
(not (channel-active? arg1 (the-as uint 0)))
(not (logtest? (-> s5-0 focus-status) (focus-status edge-grab)))
(>= (- (-> s5-0 control trans y) (-> arg1 root-override2 trans y)) -4096.0)
)
)
)
)
(sig-plasma-method-9 (-> arg1 plasma))
)
)
(when (and (sig-plasma-method-13 (-> arg1 plasma)) (scene-play arg1 "atoll-sniper-a" #f))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 14 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (logtest? (-> arg1 waypoint-bits) 1)
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-8 from) (process->ppointer pp))
(set! (-> a1-8 num-params) 0)
(set! (-> a1-8 message) 'resume)
(let ((t9-10 send-event-function)
(v1-54 (-> arg1 actor-group 0 data 9 actor))
)
(t9-10
(if v1-54
(-> v1-54 extra process)
)
a1-8
)
)
)
(set! (-> arg1 waypoint-bits) (logand -2 (-> arg1 waypoint-bits)))
)
)
)
#f
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 14
:nav-mesh-index 3
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 2))
(set! (-> v1-1 bytes 6) (the-as uint 21))
(set! (-> v1-1 bytes 7) (the-as uint 22))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (scene-release? arg1)
(let ((a1-1 (new 'stack-no-clear 'vector)))
(set-vector! a1-1 0.0 -16384.0 0.0 1.0)
(quaternion-zxy! (-> arg1 root-override2 quat) a1-1)
)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(let ((v1-6 (-> arg1 sig-course spots)))
(vector-lerp! s5-0 (the-as vector (-> v1-6 21)) (the-as vector (-> v1-6 22)) 0.5)
)
(move-to-point! (-> arg1 root-override2) s5-0)
)
(clear-poi-and-focus! arg1)
(remove-setting! 'sound-mode)
(reset-warn-time! arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 15 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 15
:nav-mesh-index 3
:skip-to #x17
:on-set (lambda ((arg0 sig-atoll))
(play-speech arg0 11)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) (the-as uint 1))
(set! (-> v1-3 bytes 6) (the-as uint 23))
(set! (-> v1-3 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-3) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(when (or (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-1 send-event-function)
(v1-9 (-> arg1 actor-group 0 data 11 actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-2
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 16 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(b! (not (channel-active? arg0 (the-as uint 0))) cfg-2 :delay (empty-form))
(set! (-> arg0 waypoint-time0) (-> pp clock frame-counter))
(b! #t cfg-21 :delay (nop!))
(label cfg-2)
(b!
(not (and (not (speech-playing? arg0 12))
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 0.75))
)
)
cfg-7
:delay (empty-form)
)
(play-speech arg0 12)
(b! #t cfg-21 :delay (nop!))
(label cfg-7)
(if (and (not (speech-playing? arg0 13))
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 0.5))
(outside-spot-radius? arg0 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) (process->ppointer pp))
(set! (-> a1-5 num-params) 1)
(set! (-> a1-5 message) 'query)
(set! (-> a1-5 param 0) (the-as uint 'beaten))
(let ((t9-5 send-event-function)
(v1-26 (-> arg0 actor-group 0 data 11 actor))
)
(not (t9-5
(if v1-26
(-> v1-26 extra process)
)
a1-5
)
)
)
)
)
(play-speech arg0 13)
)
(label cfg-21)
(none)
)
)
:on-skipping-here (lambda ((arg0 sig-atoll))
(with-pp
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(clear-poi-and-focus! arg0)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-2 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 7 actor))
)
(t9-2
(if v1-8
(-> v1-8 extra process)
)
a1-1
)
)
)
(logclear! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 122880.0)
(send-event arg0 'move-trans (-> arg0 sig-course spots 21))
(send-event *target* 'continue (get-continue-by-name *game-info* "sig0-down-ramp"))
(none)
)
)
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 16
:nav-mesh-index 3
:skip-to #x17
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 24))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (with-pp
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 1)
(set! (-> a1-1 message) 'query)
(set! (-> a1-1 param 0) (the-as uint 'beaten))
(let ((t9-0 send-event-function)
(v1-6 (-> arg1 actor-group 0 data 11 actor))
)
(when (t9-0
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 17 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(if (and (not (speech-playing? arg0 13))
(not (channel-active? arg0 (the-as uint 0)))
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-2 send-event-function)
(v1-11 (-> arg0 actor-group 0 data 11 actor))
)
(not (t9-2
(if v1-11
(-> v1-11 extra process)
)
a1-2
)
)
)
)
)
(play-speech arg0 13)
)
(none)
)
)
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 17
:nav-mesh-index 3
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 waypoint-time0) 0)
(let ((a0-1 (-> arg0 actor-group 0 data 13 actor)))
(set! (-> arg0 poi-handle) (ppointer->handle (if a0-1
(process->ppointer (-> a0-1 extra process))
)
)
)
)
(play-speech arg0 14)
(let ((v1-9 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-9 bytes 5) (the-as uint 2))
(set! (-> v1-9 bytes 6) (the-as uint 25))
(set! (-> v1-9 bytes 7) (the-as uint 26))
(set! (-> v1-9 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-9) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(set! (-> arg1 too-far-warn-dist) 184320.0)
(set! (-> arg1 too-far-fail-dist-delta) 122880.0)
(cond
((zero? (-> arg1 waypoint-time0))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
(f1-0 73728.0)
)
(cond
((and (< f0-2 (* f1-0 f1-0))
(not (channel-active? arg1 (the-as uint 0)))
(process-grab? arg1 #t)
(process-grab? *target* #t)
)
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
(process-grab? arg1 #f)
(process-grab? *target* #f)
(play-speech arg1 15)
(reset-warn-time! arg1)
(set-setting! 'entity-name "camera-69" 0 0)
)
(else
(set! (-> arg1 too-far-warn-dist) 73728.0)
(set! (-> arg1 too-far-fail-dist-delta) 233472.0)
)
)
)
)
)
((begin (reset-warn-time! arg1) (logtest? (-> arg1 waypoint-bits) 1))
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 4.5))
(process-release? arg1)
(process-release? *target*)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 18 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 3))
(remove-setting! 'entity-name)
(logior! (-> arg1 waypoint-bits) 1)
(set-setting! 'sound-mode #f 0 1)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 18
:nav-mesh-index 3
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sniper-b" -99.0 0)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-6 (-> arg0 actor-group 0 data 12 actor))
)
(t9-1
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
)
)
(play-speech arg0 16)
(let ((v1-12 (get-task-by-type (-> arg0 ai-ctrl) sigt-charge-plasma arg0)))
(set! (-> v1-12 bytes 5) (the-as uint 2))
(set! (-> v1-12 bytes 6) (the-as uint 25))
(set! (-> v1-12 bytes 7) (the-as uint 26))
(set! (-> v1-12 bytes 10) (the-as uint 13))
(set! (-> (the-as sigt-charge-plasma v1-12) check-done)
(the-as
(function sigt-charge-plasma sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(cond
((sig-plasma-method-10 (-> arg1 plasma))
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-1 send-event-function)
(v1-9 (-> arg1 actor-group 0 data 12 actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-1
)
)
)
(logior! (-> arg1 waypoint-bits) 1)
)
(if (and *target*
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-2 send-event-function)
(v1-22 (-> arg1 actor-group 0 data 12 actor))
)
(and (t9-2
(if v1-22
(-> v1-22 extra process)
)
a1-2
)
(not (channel-active? arg1 (the-as uint 0)))
(let ((f0-0 102400.0))
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
)
)
)
)
)
(sig-plasma-method-9 (-> arg1 plasma))
)
(when (and (sig-plasma-method-13 (-> arg1 plasma)) (scene-play arg1 "atoll-sniper-b" #f))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 19 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (logtest? (-> arg1 waypoint-bits) 1)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) (process->ppointer pp))
(set! (-> a1-9 num-params) 0)
(set! (-> a1-9 message) 'resume)
(let ((t9-12 send-event-function)
(v1-53 (-> arg1 actor-group 0 data 12 actor))
)
(t9-12
(if v1-53
(-> v1-53 extra process)
)
a1-9
)
)
)
(set! (-> arg1 waypoint-bits) (logand -2 (-> arg1 waypoint-bits)))
)
)
)
#f
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 19
:nav-mesh-index 3
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 2))
(set! (-> v1-1 bytes 6) (the-as uint 25))
(set! (-> v1-1 bytes 7) (the-as uint 26))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (and (not (logtest? (-> arg1 waypoint-bits) 1)) (scene-release? arg1))
(remove-setting! 'sound-mode)
(clear-poi-and-focus! arg1)
(reset-warn-time! arg1)
(play-speech arg1 17)
(logior! (-> arg1 waypoint-bits) 1)
)
(when (and (logtest? (-> arg1 waypoint-bits) 1) (not (channel-active? arg1 (the-as uint 0))))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 20 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 20
:nav-mesh-index 4
:skip-to #x17
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 27))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 21 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(if (and (>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 1.5))
(not (speech-playing? arg0 18))
(not (channel-active? arg0 (the-as uint 0)))
)
(play-speech arg0 18)
)
(none)
)
)
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 21
:nav-mesh-index 5
:skip-to #x17
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 sig-course liftcat-speech-index) 0)
(let ((v1-2 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-2 bytes 5) (the-as uint 1))
(set! (-> v1-2 bytes 6) (the-as uint 29))
(set! (-> v1-2 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-2) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'query)
(let* ((t9-0 send-event-function)
(v1-4 (-> arg1 actor-group 0 data 15 actor))
(v1-6 (t9-0
(if v1-4
(-> v1-4 extra process)
)
a1-1
)
)
)
(cond
((zero? v1-6)
(when (not (channel-active? arg1 (the-as uint 0)))
(let ((s5-0 (-> arg1 root-override2 trans))
(s4-0 (-> arg1 sig-course spots))
(f0-0 163840.0)
)
(when (and (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared s5-0 (target-pos 0)))
(let ((f0-3 86016.0))
(or (>= (* f0-3 f0-3) (vector-vector-xz-distance-squared s5-0 (the-as vector (-> s4-0 28))))
(let ((f0-6 102400.0))
(>= (* f0-6 f0-6) (vector-vector-xz-distance-squared s5-0 (the-as vector (-> s4-0 29))))
)
)
)
)
(when (or (not (logtest? (-> arg1 waypoint-bits) 2))
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 8))
)
(logior! (-> arg1 waypoint-bits) 2)
(let* ((s5-1 (-> arg1 sig-course))
(s4-1 (-> s5-1 liftcat-speech-index))
)
(play-speech arg1 (-> s5-1 second-liftcat-speeches s4-1))
(let ((v1-35 (+ s4-1 1)))
(if (>= v1-35 (-> s5-1 second-liftcat-speeches length))
(set! v1-35 0)
)
(set! (-> s5-1 liftcat-speech-index) v1-35)
)
)
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
)
)
)
)
)
((= v1-6 2)
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(logior! (-> arg1 waypoint-bits) 1)
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-8 from) (process->ppointer pp))
(set! (-> a1-8 num-params) 0)
(set! (-> a1-8 message) 'beaten)
(let ((t9-7 send-event-function)
(v1-48 (-> arg1 actor-group 0 data 14 actor))
)
(t9-7
(if v1-48
(-> v1-48 extra process)
)
a1-8
)
)
)
)
(if (and (not (speech-playing? arg1 20)) (not (channel-active? arg1 (the-as uint 0))))
(play-speech arg1 20)
)
(when (and (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((a1-13 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-13 from) (process->ppointer pp))
(set! (-> a1-13 num-params) 1)
(set! (-> a1-13 message) 'query)
(set! (-> a1-13 param 0) (the-as uint 'beaten))
(let ((t9-12 send-event-function)
(v1-68 (-> arg1 actor-group 0 data 14 actor))
)
(t9-12
(if v1-68
(-> v1-68 extra process)
)
a1-13
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 22 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 22
:nav-mesh-index #x6
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 waypoint-time0) 0)
(let ((a0-1 (-> arg0 actor-group 0 data 16 actor)))
(set! (-> arg0 poi-handle) (ppointer->handle (if a0-1
(process->ppointer (-> a0-1 extra process))
)
)
)
)
(if (not (speech-playing? arg0 20))
(play-speech arg0 20)
)
(let ((v1-12 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-12 bytes 5) (the-as uint 1))
(set! (-> v1-12 bytes 6) (the-as uint 30))
(set! (-> v1-12 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-12) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(set! (-> arg1 too-far-warn-dist) 184320.0)
(set! (-> arg1 too-far-fail-dist-delta) 122880.0)
(cond
((zero? (-> arg1 waypoint-time0))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
(f1-0 61440.0)
)
(cond
((and (< f0-2 (* f1-0 f1-0))
(not (channel-active? arg1 (the-as uint 0)))
(process-grab? arg1 #t)
(process-grab? *target* #t)
)
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
(process-grab? arg1 #f)
(process-grab? *target* #f)
(reset-warn-time! arg1)
(play-speech arg1 21)
(set-setting! 'entity-name "camera-70" 0 0)
)
(else
(set! (-> arg1 too-far-warn-dist) 61440.0)
(set! (-> arg1 too-far-fail-dist-delta) 245760.0)
)
)
)
)
)
((begin (reset-warn-time! arg1) (logtest? (-> arg1 waypoint-bits) 1))
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 4.5))
(process-release? arg1)
(process-release? *target*)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 23 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 3))
(remove-setting! 'entity-name)
(logior! (-> arg1 waypoint-bits) 1)
(set-setting! 'sound-mode #f 0 1)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 23
:nav-mesh-index #x6
:skip-to #x1f
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sniper-c" -99.0 0)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-6 (-> arg0 actor-group 0 data 17 actor))
)
(t9-1
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
)
)
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) sigt-charge-plasma arg0)))
(set! (-> v1-10 bytes 5) (the-as uint 1))
(set! (-> v1-10 bytes 6) (the-as uint 30))
(set! (-> v1-10 bytes 10) (the-as uint 16))
(set! (-> (the-as sigt-charge-plasma v1-10) check-done)
(the-as
(function sigt-charge-plasma sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(cond
((sig-plasma-method-10 (-> arg1 plasma))
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-1 send-event-function)
(v1-9 (-> arg1 actor-group 0 data 17 actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-1
)
)
)
(logior! (-> arg1 waypoint-bits) 1)
)
(if (and *target*
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-2 send-event-function)
(v1-22 (-> arg1 actor-group 0 data 17 actor))
)
(and (t9-2
(if v1-22
(-> v1-22 extra process)
)
a1-2
)
(not (channel-active? arg1 (the-as uint 0)))
(let ((f0-0 102400.0))
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
)
)
)
)
)
(sig-plasma-method-9 (-> arg1 plasma))
)
(when (and (sig-plasma-method-13 (-> arg1 plasma))
(and (>= (- (-> (target-pos 0) y) (-> arg1 sig-course spots 30 center y)) -8192.0)
(scene-play arg1 "atoll-sniper-c" #f)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 24 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (logtest? (-> arg1 waypoint-bits) 1)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) (process->ppointer pp))
(set! (-> a1-9 num-params) 0)
(set! (-> a1-9 message) 'resume)
(let ((t9-13 send-event-function)
(v1-57 (-> arg1 actor-group 0 data 17 actor))
)
(t9-13
(if v1-57
(-> v1-57 extra process)
)
a1-9
)
)
)
(set! (-> arg1 waypoint-bits) (logand -2 (-> arg1 waypoint-bits)))
)
)
)
#f
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here (lambda ((arg0 sig-atoll))
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(logclear! (-> arg0 focus-status) (focus-status disable))
(clear-poi-and-focus! arg0)
(set! (-> arg0 notice-enemy-dist) 122880.0)
(send-event arg0 'move-trans (-> arg0 sig-course spots 30))
(send-event *target* 'continue (get-continue-by-name *game-info* "sig0-charge-gun-for-sniper-c"))
(none)
)
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 24
:nav-mesh-index #x6
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 30))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (when (scene-release? arg1)
(clear-poi-and-focus! arg1)
(remove-setting! 'sound-mode)
(reset-warn-time! arg1)
(play-speech arg1 22)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 25 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 25
:nav-mesh-index #x6
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(logior! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 36864.0)
(let ((v1-4 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-4 bytes 5) (the-as uint 1))
(set! (-> v1-4 bytes 6) (the-as uint 31))
(set! (-> v1-4 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-4) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 26 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll)) (sig-say-waste-the-suckers-if-should arg0) (none))
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 26
:nav-mesh-index #x7
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 32))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 27 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll)) (sig-say-waste-the-suckers-if-should arg0) (none))
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 27
:nav-mesh-index #x8
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(logclear! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 122880.0)
(let ((v1-4 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-4 bytes 5) (the-as uint 1))
(set! (-> v1-4 bytes 6) (the-as uint 33))
(set! (-> v1-4 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-4) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (with-pp
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 1)
(set! (-> a1-1 message) 'query)
(set! (-> a1-1 param 0) (the-as uint 'beaten))
(let ((t9-0 send-event-function)
(v1-6 (-> arg1 actor-group 0 data 18 actor))
)
(when (t9-0
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 28 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll)) (sig-say-waste-the-suckers-if-should arg0) (none))
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 28
:nav-mesh-index #x8
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 waypoint-time0) 0)
(let ((a1-0 (-> arg0 actor-group 0 data 19 actor)))
(set! (-> arg0 poi-handle) (ppointer->handle (if a1-0
(process->ppointer (-> a1-0 extra process))
)
)
)
)
(let ((v1-7 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-7 bytes 5) (the-as uint 1))
(set! (-> v1-7 bytes 6) (the-as uint 34))
(set! (-> v1-7 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-7) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(set! (-> arg1 too-far-warn-dist) 184320.0)
(set! (-> arg1 too-far-fail-dist-delta) 122880.0)
(cond
((zero? (-> arg1 waypoint-time0))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((f0-2 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
(f1-0 73728.0)
)
(cond
((and (< f0-2 (* f1-0 f1-0))
(not (channel-active? arg1 (the-as uint 0)))
(process-grab? arg1 #t)
(process-grab? *target* #t)
)
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
(process-grab? arg1 #f)
(process-grab? *target* #f)
(reset-warn-time! arg1)
(play-speech arg1 23)
(set-setting! 'entity-name "camera-71" 0 0)
)
(else
(set! (-> arg1 too-far-warn-dist) 73728.0)
(set! (-> arg1 too-far-fail-dist-delta) 233472.0)
)
)
)
)
)
((begin (reset-warn-time! arg1) (logtest? (-> arg1 waypoint-bits) 1))
(when (and (not (logtest? (-> arg1 waypoint-bits) 2))
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 0.1))
)
(remove-setting! 'string-startup-vector)
(logior! (-> arg1 waypoint-bits) 2)
)
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 3.5))
(process-release? arg1)
(process-release? *target*)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 29 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 2))
(set-setting! 'string-startup-vector 'abs (new 'static 'vector :x 1.0) 0)
(remove-setting! 'entity-name)
(logior! (-> arg1 waypoint-bits) 1)
(set-setting! 'sound-mode #f 0 1)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 29
:nav-mesh-index #x8
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sniper-d" -99.0 0)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-6 (-> arg0 actor-group 0 data 20 actor))
)
(t9-1
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
)
)
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) sigt-charge-plasma arg0)))
(set! (-> v1-10 bytes 5) (the-as uint 1))
(set! (-> v1-10 bytes 6) (the-as uint 34))
(set! (-> v1-10 bytes 10) (the-as uint 19))
(set! (-> (the-as sigt-charge-plasma v1-10) check-done)
(the-as
(function sigt-charge-plasma sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(cond
((sig-plasma-method-10 (-> arg1 plasma))
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-1 send-event-function)
(v1-9 (-> arg1 actor-group 0 data 20 actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-1
)
)
)
(logior! (-> arg1 waypoint-bits) 1)
)
(if (and *target*
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-2 send-event-function)
(v1-22 (-> arg1 actor-group 0 data 20 actor))
)
(and (t9-2
(if v1-22
(-> v1-22 extra process)
)
a1-2
)
(not (channel-active? arg1 (the-as uint 0)))
(let ((f0-0 102400.0))
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
)
)
)
)
)
(sig-plasma-method-9 (-> arg1 plasma))
)
(when (and (sig-plasma-method-13 (-> arg1 plasma)) (scene-play arg1 "atoll-sniper-d" #f))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 30 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (logtest? (-> arg1 waypoint-bits) 1)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) (process->ppointer pp))
(set! (-> a1-9 num-params) 0)
(set! (-> a1-9 message) 'resume)
(let ((t9-12 send-event-function)
(v1-53 (-> arg1 actor-group 0 data 20 actor))
)
(t9-12
(if v1-53
(-> v1-53 extra process)
)
a1-9
)
)
)
(set! (-> arg1 waypoint-bits) (logand -2 (-> arg1 waypoint-bits)))
)
)
)
#f
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 30
:nav-mesh-index #x8
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 34))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (and (not (logtest? (-> arg1 waypoint-bits) 1)) (scene-release? arg1))
(clear-poi-and-focus! arg1)
(remove-setting! 'sound-mode)
(reset-warn-time! arg1)
(play-speech arg1 24)
(logior! (-> arg1 waypoint-bits) 1)
)
(when (and (logtest? (-> arg1 waypoint-bits) 1) (not (channel-active? arg1 (the-as uint 0))))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 31 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 31
:nav-mesh-index #x9
:skip-to #x25
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(logior! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 36864.0)
(let ((v1-6 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-6 bytes 5) (the-as uint 1))
(set! (-> v1-6 bytes 6) (the-as uint 35))
(set! (-> v1-6 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-6) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (and (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(not (channel-active? arg1 (the-as uint 0)))
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 32 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(cond
((not (logtest? (-> arg0 bot-task-bits) 4))
(when (and (>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 0.25))
(< (-> arg0 sig-course spots 36 center x) (-> (target-pos 0) x))
)
(logior! (-> arg0 bot-task-bits) 4)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 0)
(set! (-> a1-0 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-14 (-> arg0 actor-group 0 data 21 actor))
)
(t9-1
(if v1-14
(-> v1-14 extra process)
)
a1-0
)
)
)
)
)
(else
(sig0-say-look-out-if-should arg0)
)
)
(none)
)
)
:on-skipping-here (lambda ((arg0 sig-atoll))
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(logclear! (-> arg0 focus-status) (focus-status disable))
(clear-poi-and-focus! arg0)
(set! (-> arg0 notice-enemy-dist) 122880.0)
(send-event arg0 'move-trans (-> arg0 sig-course spots 34))
(send-event *target* 'continue (get-continue-by-name *game-info* "sig0-cross-water"))
(none)
)
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 32
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(logclear! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 122880.0)
(when (not (logtest? (-> arg0 bot-task-bits) 4))
(logior! (-> arg0 bot-task-bits) 4)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 0)
(set! (-> a1-0 message) 'trigger)
(let ((t9-0 send-event-function)
(v1-14 (-> arg0 actor-group 0 data 21 actor))
)
(t9-0
(if v1-14
(-> v1-14 extra process)
)
a1-0
)
)
)
)
(let ((v1-18 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-18 bytes 5) (the-as uint 1))
(set! (-> v1-18 bytes 6) (the-as uint 37))
(set! (-> v1-18 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-18) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (when (logtest? (-> arg1 waypoint-bits) 1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 33 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(sig0-say-look-out-if-should arg0)
(when (and (not (logtest? (-> arg0 waypoint-bits) 1))
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 8))
)
(logior! (-> arg0 waypoint-bits) 1)
(logior! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 16384.0)
)
(none)
)
)
:on-skipping-here #f
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 33
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) (the-as uint 1))
(set! (-> v1-3 bytes 6) (the-as uint 38))
(set! (-> v1-3 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-3) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(cond
((logtest? (bot-flags bf19) (-> arg1 bot-flags))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 34 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
(else
(if (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(set! (-> arg1 bot-flags) (logior (bot-flags bf20) (-> arg1 bot-flags)))
(logclear! (-> arg1 bot-flags) (bot-flags bf20))
)
#f
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 34
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 1)
(set! (-> a1-0 message) 'query)
(set! (-> a1-0 param 0) (the-as uint 'die-count))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 21 actor))
)
(set! (-> arg0 waypoint-int32a) (the-as int (t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
)
)
(let ((v1-12 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-12 bytes 5) (the-as uint 1))
(set! (-> v1-12 bytes 6) (the-as uint 38))
(set! (-> v1-12 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-12) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (when (not (logtest? (bot-flags bf19) (-> arg1 bot-flags)))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 35 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
)
:on-update (lambda ((arg0 sig-atoll))
(with-pp
(cond
((not (speech-playing? arg0 27))
(if (>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 0.5))
(play-speech arg0 27)
)
)
((not (logtest? (-> arg0 waypoint-bits) 1))
(when (speech-ended? arg0 27)
(logior! (-> arg0 waypoint-bits) 1)
(logclear! (-> arg0 focus-status) (focus-status disable))
(set! (-> arg0 notice-enemy-dist) 122880.0)
(set! (-> arg0 waypoint-time0) (-> pp clock frame-counter))
)
)
((not (logtest? (-> arg0 waypoint-bits) 2))
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) (process->ppointer pp))
(set! (-> a1-3 num-params) 1)
(set! (-> a1-3 message) 'query)
(set! (-> a1-3 param 0) (the-as uint 'die-count))
(let ((t9-3 send-event-function)
(v1-26 (-> arg0 actor-group 0 data 21 actor))
)
(cond
((or (>= (- (the-as int (t9-3
(if v1-26
(-> v1-26 extra process)
)
a1-3
)
)
(the-as uint (-> arg0 waypoint-int32a))
)
5
)
(>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 10))
)
(set! (-> arg0 bot-flags) (logior (bot-flags bf21) (-> arg0 bot-flags)))
(logior! (-> arg0 waypoint-bits) 2)
)
(else
(if (and (>= (- (-> pp clock frame-counter) (-> arg0 waypoint-time0)) (seconds 4))
(not (speech-playing? arg0 28))
)
(play-speech arg0 28)
)
)
)
)
)
)
)
(none)
)
)
:on-skipping-here #f
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 35
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(play-speech arg0 29)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-1 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 21 actor))
)
(t9-1
(if v1-8
(-> v1-8 extra process)
)
a1-1
)
)
)
(let ((v1-12 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-12 bytes 5) (the-as uint 1))
(set! (-> v1-12 bytes 6) (the-as uint 37))
(set! (-> v1-12 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-12) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (with-pp
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 1)
(set! (-> a1-1 message) 'query)
(set! (-> a1-1 param 0) (the-as uint 'beaten))
(let ((t9-0 send-event-function)
(v1-6 (-> arg1 actor-group 0 data 21 actor))
)
(when (t9-0
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
(clear-poi-and-focus! arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 36 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 36
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) (the-as uint 1))
(set! (-> v1-3 bytes 6) (the-as uint 39))
(set! (-> v1-3 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-3) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(when (and (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(not (channel-active? arg1 (the-as uint 0)))
)
(let ((f0-0 122880.0))
(if (>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
(play-speech arg1 30)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 37 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 37
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(set! (-> arg0 too-far-warn-dist) 327680.0)
(set! (-> arg0 too-far-fail-dist-delta) 163840.0)
(set! (-> arg0 waypoint-time0) 0)
(let ((a0-1 (-> arg0 actor-group 0 data 22 actor)))
(set! (-> arg0 poi-handle) (ppointer->handle (if a0-1
(process->ppointer (-> a0-1 extra process))
)
)
)
)
(reset-warn-time! arg0)
(let ((v1-11 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-11 bytes 5) (the-as uint 1))
(set! (-> v1-11 bytes 6) (the-as uint 40))
(set! (-> v1-11 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-11) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(cond
((zero? (-> arg1 waypoint-time0))
(when (outside-spot-radius? arg1 (the-as bot-spot #f) (the-as vector #f) #f)
(let ((f0-0 (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
(f1-0 61440.0)
)
(cond
((and (< f0-0 (* f1-0 f1-0))
(not (channel-active? arg1 (the-as uint 0)))
(process-grab? arg1 #t)
(process-grab? *target* #t)
)
(set! (-> arg1 waypoint-time0) (-> pp clock frame-counter))
(process-grab? arg1 #f)
(process-grab? *target* #f)
(reset-warn-time! arg1)
(play-speech arg1 31)
(set-setting! 'entity-name "camera-72" 0 0)
)
(else
(set! (-> arg1 too-far-warn-dist) 61440.0)
(set! (-> arg1 too-far-fail-dist-delta) 430080.0)
)
)
)
)
)
((begin (reset-warn-time! arg1) (logtest? (-> arg1 waypoint-bits) 1))
(when (and (not (logtest? (-> arg1 waypoint-bits) 2))
(>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 0.1))
)
(remove-setting! 'string-startup-vector)
(logior! (-> arg1 waypoint-bits) 2)
)
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 4.5))
(process-release? arg1)
(process-release? *target*)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 38 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (>= (- (-> pp clock frame-counter) (-> arg1 waypoint-time0)) (seconds 3))
(set-setting! 'string-startup-vector 'abs (new 'static 'vector :x -1.0) 0)
(remove-setting! 'entity-name)
(logior! (-> arg1 waypoint-bits) 1)
(set-setting! 'sound-mode #f 0 1)
)
)
)
#f
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here (lambda ((arg0 sig-atoll))
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(logclear! (-> arg0 focus-status) (focus-status disable))
(logior! (-> arg0 bot-flags) (bot-flags bf06))
(set! (-> arg0 notice-enemy-dist) 122880.0)
(clear-poi-and-focus! arg0)
(send-event arg0 'move-trans (-> arg0 sig-course spots 38))
(send-event *target* 'continue (get-continue-by-name *game-info* "sig0-show-sniper-e"))
(none)
)
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 38
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(with-pp
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "atoll-sniper-e" -99.0 0)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'trigger)
(let ((t9-1 send-event-function)
(v1-6 (-> arg0 actor-group 0 data 23 actor))
)
(t9-1
(if v1-6
(-> v1-6 extra process)
)
a1-1
)
)
)
(let ((v1-10 (get-task-by-type (-> arg0 ai-ctrl) sigt-charge-plasma arg0)))
(set! (-> v1-10 bytes 5) (the-as uint 1))
(set! (-> v1-10 bytes 6) (the-as uint 40))
(set! (-> v1-10 bytes 10) (the-as uint 22))
(set! (-> (the-as sigt-charge-plasma v1-10) check-done)
(the-as
(function sigt-charge-plasma sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll))
(with-pp
(cond
((sig-plasma-method-10 (-> arg1 plasma))
(when (not (logtest? (-> arg1 waypoint-bits) 1))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'beaten)
(let ((t9-1 send-event-function)
(v1-9 (-> arg1 actor-group 0 data 23 actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-1
)
)
)
(logior! (-> arg1 waypoint-bits) 1)
)
(when (and *target*
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 1)
(set! (-> a1-2 message) 'query)
(set! (-> a1-2 param 0) (the-as uint 'beaten))
(let ((t9-2 send-event-function)
(v1-22 (-> arg1 actor-group 0 data 23 actor))
)
(and (t9-2
(if v1-22
(-> v1-22 extra process)
)
a1-2
)
(not (channel-active? arg1 (the-as uint 0)))
(let ((f0-0 102400.0))
(>= (* f0-0 f0-0) (vector-vector-xz-distance-squared (-> arg1 root-override2 trans) (target-pos 0)))
)
)
)
)
)
(sig-plasma-method-9 (-> arg1 plasma))
(if (and (not (speech-playing? arg1 32))
(and (>= (-> arg1 plasma level) 1.0) (-> arg1 next-state) (= (-> arg1 next-state name) 'charge-plasma))
)
(play-speech arg1 32)
)
)
(when (and (sig-plasma-method-13 (-> arg1 plasma))
(not (channel-active? arg1 (the-as uint 0)))
(scene-play arg1 "atoll-sniper-e" #f)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 39 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
)
(else
(when (logtest? (-> arg1 waypoint-bits) 1)
(let ((a1-12 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-12 from) (process->ppointer pp))
(set! (-> a1-12 num-params) 0)
(set! (-> a1-12 message) 'resume)
(let ((t9-15 send-event-function)
(v1-66 (-> arg1 actor-group 0 data 23 actor))
)
(t9-15
(if v1-66
(-> v1-66 extra process)
)
a1-12
)
)
)
(set! (-> arg1 waypoint-bits) (logand -2 (-> arg1 waypoint-bits)))
)
)
)
#f
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'sig0-final-snipers-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 39
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) (the-as uint 1))
(set! (-> v1-1 bytes 6) (the-as uint 40))
(set! (-> v1-1 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-1) check-done)
(the-as
(function sigt-wait-spot sig symbol)
(lambda ((arg0 object) (arg1 sig-atoll)) (when (scene-release? arg1)
(clear-poi-and-focus! arg1)
(remove-setting! 'sound-mode)
(reset-warn-time! arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 40 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
(new 'static 'bot-waypoint
:waypoint-id 40
:nav-mesh-index #xa
:skip-to -1
:on-set (lambda ((arg0 sig-atoll))
(task-node-close! (game-task-node atoll-sig-resolution))
(process-entity-status! arg0 (entity-perm-status bit-4) #f)
(logclear! (-> arg0 enemy-flags) (enemy-flag use-notice-distance))
(logclear! (-> arg0 bot-flags) (bot-flags bf06))
(bot-method-196 arg0)
(set! (-> arg0 bot-flags) (logior (bot-flags bf22) (-> arg0 bot-flags)))
(if (demo?)
(send-event *target* 'continue (get-continue-by-name *game-info* "demo-restart"))
)
(let ((v1-16 (get-task-by-type (-> arg0 ai-ctrl) sigt-wait-spot arg0)))
(set! (-> v1-16 bytes 5) (the-as uint 1))
(set! (-> v1-16 bytes 6) (the-as uint 41))
(set! (-> v1-16 bytes 4) (the-as uint -1))
(set! (-> (the-as sigt-wait-spot v1-16) check-done)
(the-as (function sigt-wait-spot sig symbol) (lambda () #f))
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'bot-check-too-far-always-okay
)
)
:speeches (new 'static 'inline-array bot-speech-info 52
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt003")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt004")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt005")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt006")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt007")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt008")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt020")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt009")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt010")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt011")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt012")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt013")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt014")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt058")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt015")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt021")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt022")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt023")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt024")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt057")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt059")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt025")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt026")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt027")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt028")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt019")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt029")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt030")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt031")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt032")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt039")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt033")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt038")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt036")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt037")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt043")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt044")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt045")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt049")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt046")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt047")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt056")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt082")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt054")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt052")
(new 'static 'bot-speech-info :flags (speech-flags sf01) :hold-time #x5a :slave-id -1 :name "sigt053")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt083")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt087")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt089")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt090")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt091")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id -1 :name "sigt092")
)
:speech-tunings (new 'static 'inline-array bot-speech-tuning 1
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max #x78 :fo-curve #xb :trans? #t)
)
:spots (new 'static 'inline-array bot-spot 42
(new 'static 'bot-spot :center (new 'static 'vector :x 2341970.0 :y 4915.2 :z -3590061.8 :w 16384.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2294497.2 :y 5529.6 :z -3631104.0 :w 49152.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2222940.2 :y 4505.6 :z -3746652.2 :w 28672.0))
(new 'static 'bot-spot
:center (new 'static 'vector :x 2244567.0 :y 4259.84 :z -3795067.0 :w 8192.0)
:blocked-xz-dist 12288.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2217410.5 :y 5160.96 :z -3782819.8 :w 8192.0)
:blocked-xz-dist 12288.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2192261.0 :y 4915.2 :z -3784007.8 :w 8192.0)
:blocked-xz-dist 12288.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2160926.8 :y 5283.84 :z -3787817.0 :w 8192.0)
:blocked-xz-dist 12288.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2227036.2 :y 62382.08 :z -3838361.5 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2204221.5 :y 62382.08 :z -3836395.5 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2196521.0 :y 62382.08 :z -3837337.5 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2174771.2 :y 62382.08 :z -3838484.5 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot :center (new 'static 'vector :x 2190704.8 :y 62382.08 :z -3870187.5 :w 16384.0))
(new 'static 'bot-spot
:center (new 'static 'vector :x 2216222.8 :y 62382.08 :z -3853189.0 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2216059.0 :y 62382.08 :z -3863265.2 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 2215854.0 :y 62382.08 :z -3873341.5 :w 4096.0)
:blocked-xz-dist 8192.0
)
(new 'static 'bot-spot :center (new 'static 'vector :x 2239406.0 :y 62382.08 :z -3848929.2 :w 12288.0))
(new 'static 'bot-spot
:center (new 'static 'vector :x 1997209.6 :y 53739.52 :z -3898613.8 :w 4096.0)
:blocked-xz-dist 6144.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 1988894.8 :y 53739.52 :z -3888701.5 :w 4096.0)
:blocked-xz-dist 6144.0
)
(new 'static 'bot-spot :center (new 'static 'vector :x 2043289.6 :y 53739.52 :z -3884318.8 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1721098.2 :y 53739.52 :z -3884318.8 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1742438.4 :y 53821.44 :z -3885301.8 :w 16384.0))
(new 'static 'bot-spot
:center (new 'static 'vector :x 1734860.8 :y 53698.56 :z -4004085.8 :w 6144.0)
:blocked-xz-dist 6144.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 1731543.0 :y 53698.56 :z -4017602.5 :w 6144.0)
:blocked-xz-dist 6144.0
)
(new 'static 'bot-spot :center (new 'static 'vector :x 1492582.4 :y 3850.24 :z -3921797.0 :w 73728.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1431347.2 :y 7127.04 :z -4036894.8 :w 16384.0))
(new 'static 'bot-spot
:center (new 'static 'vector :x 1407754.2 :y 6184.96 :z -4143308.8 :w 6144.0)
:blocked-xz-dist 6144.0
)
(new 'static 'bot-spot
:center (new 'static 'vector :x 1407426.5 :y 5980.16 :z -4121272.2 :w 6144.0)
:blocked-xz-dist 6144.0
)
(new 'static 'bot-spot :center (new 'static 'vector :x 1414840.4 :y 53698.56 :z -4339835.0 :w 47104.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1394319.4 :y 53698.56 :z -4419051.5 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1453342.8 :y 53575.68 :z -4515963.0 :w 12288.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1591091.2 :y 53698.56 :z -4761313.5 :w 12288.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1732485.1 :y 53493.76 :z -4682547.0 :w 11264.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1879244.8 :y 4628.48 :z -4555899.0 :w 14336.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1847214.1 :y 8028.16 :z -4351385.5 :w 24576.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 1859297.2 :y 7536.64 :z -4371702.0 :w 10240.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2036899.9 :y 4956.16 :z -4314726.5 :w 32768.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2024038.4 :y 5201.92 :z -4323574.0 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2155069.5 :y 4915.2 :z -4291543.0 :w 24576.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2155069.5 :y 4915.2 :z -4291543.0 :w 10240.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2272133.0 :y 5734.4 :z -4268851.0 :w 16384.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2389196.8 :y 6553.6 :z -4246282.0 :w 12288.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 2389196.8 :y 6553.6 :z -4246282.0 :w 26624.0))
)
:first-liftcat-speeches (new 'static 'boxed-array :type int16 7 8 19)
:second-liftcat-speeches (new 'static 'boxed-array :type int16 19 8 7)
)
)
(set! (-> *bot-course-table* course 0) *sig0-course*)