Files
jak-project/test/decompiler/reference/jak2/levels/sewer/hal2-course_REF.gc
T
Tyler Wilding e975eab15a decompiler: Apply docstring indentation fix to all game versions (#3614)
Previously was only applying to game versions above Jak 2, Fixes #3342
2024-07-29 21:57:07 -04:00

4207 lines
195 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type hal2-course
(deftype hal2-course (bot-course)
((sentries1-reminders (array int16))
(sentries2-reminders (array int16))
(bomb2-reminders bot-speech-list)
)
)
;; definition for method 3 of type hal2-course
(defmethod inspect ((this hal2-course))
(when (not this)
(set! this this)
(goto cfg-4)
)
(format #t "[~8x] ~A~%" this (-> this type))
(format #t "~1Tcourse-id: ~D~%" (-> this course-id))
(format #t "~1Tspeech-count: ~D~%" (-> this speech-count))
(format #t "~1Tspot-count: ~D~%" (-> this spot-count))
(format #t "~1Tretry-cookie: ~D~%" (-> this retry-cookie))
(format #t "~1Ttoo-far-warn-speeches: ~A~%" (-> this too-far-warn-speeches))
(format #t "~1Ttoo-far-fail-speeches: ~A~%" (-> this too-far-fail-speeches))
(format #t "~1Tattack-player-speeches: ~A~%" (-> this attack-player-speeches))
(format #t "~1Tdefault-check-too-far: ~A~%" (-> this default-check-too-far))
(format #t "~1Twaypoints: ~A~%" (-> this waypoints))
(format #t "~1Tspeeches: #x~X~%" (-> this speeches))
(format #t "~1Tspeech-tunings: #x~X~%" (-> this speech-tunings))
(format #t "~1Tdirs: #x~X~%" (-> this dirs))
(format #t "~1Tspots: #x~X~%" (-> this spots))
(format #t "~1Tsentries1-reminders: ~A~%" (-> this sentries1-reminders))
(format #t "~1Tsentries2-reminders: ~A~%" (-> this sentries2-reminders))
(format #t "~1Tbomb2-reminders: ~A~%" (-> this bomb2-reminders))
(label cfg-4)
this
)
;; definition of type hal-sewer
(deftype hal-sewer (hal)
((hal2-course hal2-course :overlay-at course)
(sentries1-reminder-index int8)
(sentries2-reminder-index int8)
(test-plane plane :inline :offset 1040)
)
(:methods
(hal-sewer-method-227 (_type_) symbol)
(hal-sewer-method-228 (_type_) none)
(hal-sewer-method-229 (_type_) symbol)
(hal-sewer-method-230 (_type_ process-focusable process-focusable) symbol)
(hal-sewer-method-231 (_type_ int) symbol)
)
)
;; definition for method 3 of type hal-sewer
(defmethod inspect ((this hal-sewer))
(when (not this)
(set! this this)
(goto cfg-4)
)
(let ((t9-0 (method-of-type hal inspect)))
(t9-0 this)
)
(format #t "~2Tsentries1-reminder-index: ~D~%" (-> this sentries1-reminder-index))
(format #t "~2Tsentries2-reminder-index: ~D~%" (-> this sentries2-reminder-index))
(format #t "~2Ttest-plane: #<plane @ #x~X>~%" (-> this test-plane))
(label cfg-4)
this
)
;; definition for method 116 of type hal-sewer
;; WARN: Return type mismatch object vs none.
(defmethod go-idle ((this hal-sewer))
(cond
((task-node-closed? (game-task-node sewer-escort-resolution))
(cleanup-for-death this)
(go (method-of-object this die-fast))
)
(else
(go (method-of-object this idle))
)
)
(none)
)
;; definition for method 210 of type hal-sewer
;; WARN: Return type mismatch float vs none.
(defmethod init! ((this hal-sewer))
"Set defaults for various fields."
(let ((t9-0 (method-of-type hal init!)))
(t9-0 this)
)
(set! (-> this too-far-warn-dist-default) 409600.0)
(set! (-> this too-far-fail-dist-delta-default) 163840.0)
(none)
)
;; definition for method 74 of type hal-sewer
(defmethod general-event-handler ((this hal-sewer) (arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
"Handles various events for the enemy
@TODO - unsure if there is a pattern for the events and this should have a more specific name"
(case arg2
(('notify)
(case (-> arg3 param 0)
(('jinx-bomb)
(logior! (-> this bot-task-bits) (bot-task-bits botbits-0))
#t
)
(else
((method-of-type hal general-event-handler) this arg0 arg1 arg2 arg3)
)
)
)
(else
((method-of-type hal general-event-handler) this arg0 arg1 arg2 arg3)
)
)
)
;; definition for function hal2-default-check-too-far
(defun hal2-default-check-too-far ((arg0 hal-sewer))
(let ((s5-0 (-> *target* control trans))
(f30-0 40960000.0)
)
(countdown (s4-0 3)
(let ((v1-6 (handle->process (-> arg0 slave-handle s4-0))))
(when v1-6
(let ((f0-0 (vector-vector-xz-distance s5-0 (-> (the-as process-drawable v1-6) root trans))))
(if (< f0-0 f30-0)
(set! f30-0 f0-0)
)
)
)
)
)
(let ((v0-1 0))
(let ((f0-1 (-> arg0 too-far-warn-dist)))
(when (>= f30-0 f0-1)
(let* ((v1-15 (-> arg0 actor-group 0 data 1 actor))
(a0-9 (if v1-15
(-> v1-15 extra process)
)
)
)
(cond
((and a0-9 (logtest? (bot-flags bf19) (-> (the-as hal a0-9) bot-flags)))
(set! v0-1 2)
)
((>= (- f30-0 f0-1) (-> arg0 too-far-fail-dist-delta))
(set! v0-1 2)
)
(else
(set! v0-1 1)
)
)
)
)
)
v0-1
)
)
)
;; definition for function hal2-near-start-check-too-far
(defun hal2-near-start-check-too-far ((arg0 hal-sewer))
(let ((gp-0 0))
(let ((v1-0 (target-pos 0)))
(cond
((>= (-> v1-0 z) 2399957.0)
(set! gp-0 2)
)
((>= (-> v1-0 z) 2221453.2)
(set! gp-0 1)
)
((and (>= (-> v1-0 y) -159744.0) (>= (-> (get-trans *target* 1) y) -159744.0))
(set! gp-0 2)
)
)
)
gp-0
)
)
;; definition for function hal2-below-elevator-a-check-too-far
(defun hal2-below-elevator-a-check-too-far ((arg0 hal-sewer))
(let ((gp-0 0))
(if (and (>= (-> (target-pos 0) y) -212402.17) (>= (-> (get-trans *target* 1) y) -212402.17))
(set! gp-0 2)
)
gp-0
)
)
;; definition for function hal2-force-fail-check-too-far
(defun hal2-force-fail-check-too-far ((arg0 hal-sewer))
(let ((gp-0 0))
(if (and (not (channel-active? arg0 (gui-channel none))) (logtest? (bot-flags bf24) (-> arg0 bot-flags)))
(set! gp-0 2)
)
gp-0
)
)
;; definition for function hal2-onslaught-check-too-far
(defun hal2-onslaught-check-too-far ((arg0 hal-sewer))
(let ((gp-0 (hal2-default-check-too-far arg0)))
(if (>= 1884160.0 (-> (target-pos 0) z))
(set! gp-0 2)
)
gp-0
)
)
;; definition for method 229 of type hal-sewer
(defmethod hal-sewer-method-229 ((this hal-sewer))
(let ((a0-1 *target*))
(when a0-1
(let ((v1-1 (get-trans a0-1 0)))
(and (>= 5632000.0 (-> v1-1 x))
(>= (-> v1-1 x) 5529600.0)
(>= 2068480.0 (-> v1-1 z))
(>= (-> v1-1 z) 1921024.0)
)
)
)
)
)
;; definition for method 231 of type hal-sewer
(defmethod hal-sewer-method-231 ((this hal-sewer) (arg0 int))
(countdown (v1-0 3)
(let* ((a2-4 (-> this actor-group 0 data (+ arg0 v1-0) actor))
(a3-2 (if a2-4
(-> a2-4 extra process)
)
)
)
(if (and a3-2 (not (logtest? (-> (the-as process-focusable a3-2) focus-status) (focus-status dead))))
(return #f)
)
)
)
#t
)
;; definition for method 230 of type hal-sewer
;; INFO: Used lq/sq
(defmethod hal-sewer-method-230 ((this hal-sewer) (arg0 process-focusable) (arg1 process-focusable))
(when (and arg0 arg1)
(let ((gp-0 (new 'stack-no-clear 'collide-query)))
(set! (-> gp-0 start-pos quad) (-> arg0 root trans quad))
(+! (-> gp-0 start-pos y) 8192.0)
(vector-! (-> gp-0 move-dist) (get-trans arg1 3) (-> gp-0 start-pos))
(let ((v1-5 gp-0))
(set! (-> v1-5 radius) 2048.0)
(set! (-> v1-5 collide-with) (collide-spec backgnd obstacle hit-by-others-list pusher))
(set! (-> v1-5 ignore-process0) arg0)
(set! (-> v1-5 ignore-process1) #f)
(set! (-> v1-5 ignore-pat) (new 'static 'pat-surface :noentity #x1 :nojak #x1 :probe #x1 :noendlessfall #x1))
(set! (-> v1-5 action-mask) (collide-action solid))
)
(< (fill-and-probe-using-line-sphere *collide-cache* gp-0) 0.0)
)
)
)
;; definition for method 227 of type hal-sewer
(defmethod hal-sewer-method-227 ((this hal-sewer))
(let* ((a0-1 (-> this actor-group 0 data 1 actor))
(v1-3 (if a0-1
(-> a0-1 extra process)
)
)
)
(when v1-3
(let ((s5-0 (the-as process #f)))
(let ((f30-0 0.0)
(s4-0 (-> (the-as process-drawable v1-3) root trans))
)
(countdown (s3-0 3)
(let* ((v1-10 (-> this actor-group 0 data (+ s3-0 7) actor))
(s2-0 (if v1-10
(-> v1-10 extra process)
)
)
)
(when s2-0
(let ((f0-0 (vector-vector-distance-squared s4-0 (-> (the-as process-drawable s2-0) root trans))))
(when (or (not s5-0) (< f0-0 f30-0))
(set! s5-0 s2-0)
(set! f30-0 f0-0)
)
)
)
)
)
)
(when s5-0
(let* ((a0-5 this)
(t9-1 (method-of-object a0-5 hal-sewer-method-230))
(v1-23 (-> this actor-group 0 data 1 actor))
)
(t9-1
a0-5
(the-as process-focusable (if v1-23
(-> v1-23 extra process)
)
)
(the-as process-focusable s5-0)
)
)
)
)
)
)
)
;; definition for method 228 of type hal-sewer
;; WARN: Return type mismatch bot-flags vs none.
(defmethod hal-sewer-method-228 ((this hal-sewer))
(with-pp
(let ((s5-0 (-> this actor-group 0 data 18)))
(cond
((logtest? (bot-flags bf22) (-> this bot-flags))
(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 'path-pos?))
(let ((t9-0 send-event-function)
(v1-9 (-> s5-0 actor))
)
(when (= (t9-0
(if v1-9
(-> v1-9 extra process)
)
a1-0
)
1.0
)
(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 'player-standing-on?))
(let ((t9-1 send-event-function)
(v1-18 (-> s5-0 actor))
)
(when (t9-1
(if v1-18
(-> v1-18 extra process)
)
a1-1
)
(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) 'move-to)
(set! (-> a1-2 param 0) (the-as uint 'top))
(let ((t9-2 send-event-function)
(v1-25 (-> s5-0 actor))
)
(t9-2
(if v1-25
(-> v1-25 extra process)
)
a1-2
)
)
)
(logclear! (-> this bot-flags) (bot-flags bf22))
(logior! (-> this bot-flags) (bot-flags bf23))
)
)
)
)
)
)
)
((logtest? (bot-flags bf23) (-> this bot-flags))
(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 'path-pos?))
(let ((t9-3 send-event-function)
(v1-38 (-> s5-0 actor))
)
(if (= (t9-3
(if v1-38
(-> v1-38 extra process)
)
a1-3
)
0.0
)
(logclear! (-> this bot-flags) (bot-flags bf23))
)
)
)
)
(else
(let ((a0-14 *target*))
(when (and a0-14 (>= -294912.0 (-> (get-trans a0-14 0) y)))
(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) 'move-to)
(set! (-> a1-5 param 0) (the-as uint 'bottom))
(let ((t9-5 send-event-function)
(v1-51 (-> s5-0 actor))
)
(t9-5
(if v1-51
(-> v1-51 extra process)
)
a1-5
)
)
)
(logior! (-> this bot-flags) (bot-flags bf22))
)
)
)
)
)
(none)
)
)
;; definition for symbol *hal2-course*, type hal2-course
(define *hal2-course*
(new 'static 'hal2-course
:course-id #x5
:speech-count #x52
:spot-count #x5
:too-far-warn-speeches (new 'static 'bot-speech-list-shuffle
:flags #xa
:last-local-index -1
:speech-indexes (new 'static 'boxed-array :type int16 15 16 17 18 19 20)
)
:waypoints (new 'static 'boxed-array :type bot-waypoint
(new 'static 'bot-waypoint
:waypoint-id 1
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(clear-speech-flags! arg0)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) 1)
(set! (-> v1-3 bytes 6) 0)
(set! (-> v1-3 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-3) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(cond
((not (logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-0)))
(when (and s3-0 s4-0 s5-0)
(logior! (-> arg1 waypoint-bits) (waypoint-bits wabits-0))
(set! (-> arg1 slave-handle 0) (process->handle s3-0))
(set! (-> arg1 slave-handle 1) (process->handle s4-0))
(set! (-> arg1 slave-handle 2) (process->handle s5-0))
)
#f
)
((not (logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-1)))
(logior! (-> arg1 waypoint-bits) (waypoint-bits wabits-1))
(hal-method-226 arg1)
(send-event s3-0 'request 'waypoint 2)
(send-event s4-0 'request 'waypoint 2)
(send-event s5-0 'request 'waypoint 2)
#f
)
(else
(let ((a0-17 s3-0))
(when (and (and a0-17 (let ((s3-1 1))
(< s3-1 (the-as int (send-event a0-17 'query 'waypoint)))
)
)
(let ((a0-19 s4-0))
(and a0-19 (let ((s4-1 1))
(< s4-1 (the-as int (send-event a0-19 'query 'waypoint)))
)
)
)
(let ((a0-21 s5-0))
(and a0-21 (let ((s5-1 1))
(< s5-1 (the-as int (send-event a0-21 'query 'waypoint)))
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 2 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 2
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) 1)
(set! (-> v1-1 bytes 6) 0)
(set! (-> v1-1 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 5 actor))
(a0-1 (if v1-3
(-> v1-3 extra process)
)
)
)
(if (or (not a0-1)
(or (not (logtest? (-> a0-1 entity extra perm status) (entity-perm-status subtask-complete)))
(< -176128.0 (-> (target-pos 0) y))
)
)
(set-time! (-> arg1 waypoint-time0))
)
)
(cond
((logtest? (bot-flags bf19 bf20 bf21) (-> arg1 bot-flags))
(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
)
((time-elapsed? (-> arg1 waypoint-time0) (seconds 0.5))
(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 #f
)
(new 'static 'bot-waypoint
:waypoint-id 3
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(play-speech arg0 0)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) 1)
(set! (-> v1-3 bytes 6) 0)
(set! (-> v1-3 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-3) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(local-vars (a0-8 process) (a0-13 process))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(if (and (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.1))
(let ((a0-3 s3-0))
(and a0-3 (< (the-as int (send-event a0-3 'query 'waypoint)) 3))
)
)
(send-event s3-0 'request 'waypoint 3)
)
(if (and (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.75))
(begin (set! a0-8 s4-0) a0-8)
(< (the-as int (send-event a0-8 'query 'waypoint)) 3)
)
(send-event s4-0 'request 'waypoint 3)
)
(if (and (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.9))
(begin (set! a0-13 s5-0) a0-13)
(< (the-as int (send-event a0-13 'query 'waypoint)) 3)
)
(send-event s5-0 'request 'waypoint 3)
)
(cond
((logtest? (bot-flags bf19 bf20 bf21) (-> arg1 bot-flags))
(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
)
((and (>= (- (-> (target-pos 0) x) (-> arg1 root trans x)) -65536.0)
(or (not s3-0) (>= (the-as int (send-event s3-0 'query 'waypoint)) 3))
(or (not s4-0) (>= (the-as int (send-event s4-0 'query 'waypoint)) 3))
(or (not s5-0) (>= (the-as int (send-event s5-0 'query 'waypoint)) 3))
)
(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 #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 4
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(if (not (logtest? (bot-flags bf19 bf20 bf21) (-> arg0 bot-flags)))
(play-speech arg0 1)
)
(let* ((v1-8 (-> arg0 actor-group 0 data 1 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg0 actor-group 0 data 3 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(let* ((v1-18 (-> arg0 actor-group 0 data 2 actor))
(s3-0 (if v1-18
(-> v1-18 extra process)
)
)
)
(process-entity-status! arg0 (entity-perm-status no-kill) #t)
(process-entity-status! s4-0 (entity-perm-status no-kill) #t)
(process-entity-status! s5-0 (entity-perm-status no-kill) #t)
(process-entity-status! s3-0 (entity-perm-status no-kill) #t)
(let ((a0-7 (-> arg0 actor-group 0 data 4 actor)))
(if a0-7
(toggle-status (the-as entity-actor a0-7) (entity-perm-status no-kill) #t)
)
)
(send-event s4-0 'request 'health-meter #t)
(send-event s5-0 'request 'health-meter #t)
(send-event s3-0 'request 'health-meter #t)
(send-event s4-0 'request 'waypoint 3)
(send-event s3-0 'request 'waypoint 3)
)
(send-event s5-0 'request 'waypoint 3)
)
(let ((v1-62 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-62 bytes 5) 1)
(set! (-> v1-62 bytes 6) 1)
(set! (-> v1-62 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-62) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(local-vars (a0-8 process))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(let ((a0-1 s3-0))
(if (and (and a0-1 (= (send-event a0-1 'query 'waypoint) 3))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 1.5))
)
(send-event s3-0 'request 'waypoint 9)
)
)
(when (and (not (channel-active? arg1 (gui-channel none)))
(not (speech-playing? arg1 6))
(begin (set! a0-8 s3-0) a0-8)
(>= (the-as int (send-event a0-8 'query 'waypoint)) 9)
)
(play-speech arg1 6)
(play-speech arg1 7)
)
(let ((a0-11 s5-0))
(if (and (and a0-11 (= (send-event a0-11 'query 'waypoint) 3))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 1.6))
)
(send-event s5-0 'request 'waypoint 9)
)
)
(let ((a0-16 s4-0))
(if (and (and a0-16 (= (send-event a0-16 'query 'waypoint) 3))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 1.8))
)
(send-event s4-0 'request 'waypoint 9)
)
)
(when (and (time-elapsed? (-> arg1 waypoint-time0) (seconds 4))
(not (speech-playing? arg1 2))
(not (channel-active? arg1 (gui-channel none)))
)
(play-speech arg1 2)
(play-speech arg1 3)
(play-speech arg1 4)
(play-speech arg1 5)
)
(when (and (or (not s3-0) (>= (the-as int (send-event s3-0 'query 'waypoint)) 9))
(or (not s4-0) (>= (the-as int (send-event s4-0 'query 'waypoint)) 9))
(or (not s5-0) (>= (the-as int (send-event s5-0 'query 'waypoint)) 9))
)
(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
)
)
#f
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-near-start-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 9
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(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) 'move-to)
(set! (-> a1-0 param 0) (the-as uint 'bottom))
(let ((t9-0 send-event-function)
(v1-7 (-> arg0 actor-group 0 data 4 actor))
)
(t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-0
)
)
)
(let ((v1-11 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-11 bytes 5) 1)
(set! (-> v1-11 bytes 6) 2)
(set! (-> v1-11 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-11) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(local-vars (v1-125 symbol))
(with-pp
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(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 'path-pos?))
(let ((t9-0 send-event-function)
(v1-22 (-> arg1 actor-group 0 data 4 actor))
)
(if (< (t9-0
(if v1-22
(-> v1-22 extra process)
)
a1-1
)
1.0
)
(set-time! (-> arg1 waypoint-time0))
)
)
)
(let ((a0-3 s3-0))
(if (and (and a0-3 (= (send-event a0-3 'query 'waypoint) 9))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.1))
)
(send-event s3-0 'request 'waypoint 11)
)
)
(let ((a0-8 s4-0))
(if (and (and a0-8 (= (send-event a0-8 'query 'waypoint) 9))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.9))
)
(send-event s4-0 'request 'waypoint 11)
)
)
(let ((a0-13 s5-0))
(if (and (and a0-13 (= (send-event a0-13 'query 'waypoint) 9))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.7))
)
(send-event s5-0 'request 'waypoint 11)
)
)
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-8 from) (process->ppointer pp))
(set! (-> a1-8 num-params) 1)
(set! (-> a1-8 message) 'query)
(set! (-> a1-8 param 0) (the-as uint 'idle))
(let ((t9-7 send-event-function)
(v1-87 (-> arg1 actor-group 0 data 6 actor))
)
(cond
((t9-7
(if v1-87
(-> v1-87 extra process)
)
a1-8
)
(let ((a0-20 s3-0))
(when (and (and a0-20 (>= (the-as int (send-event a0-20 'query 'waypoint)) 11))
(and (not (speech-playing? arg1 12))
(not (speech-playing? arg1 8))
(not (channel-active? arg1 (gui-channel none)))
)
)
(play-speech arg1 8)
(play-speech arg1 9)
(play-speech arg1 10)
(play-speech arg1 11)
)
)
)
((let ((a1-17 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-17 from) (process->ppointer pp))
(set! (-> a1-17 num-params) 1)
(set! (-> a1-17 message) 'query)
(set! (-> a1-17 param 0) (the-as uint 'hostile))
(let ((t9-16 send-event-function)
(v1-119 (-> arg1 actor-group 0 data 6 actor))
)
(t9-16
(if v1-119
(-> v1-119 extra process)
)
a1-17
)
)
)
(b! (speech-playing? arg1 12) cfg-77 :likely-delay (set! v1-125 #f))
(set! v1-125 (hal-sewer-method-227 arg1))
(label cfg-77)
(when v1-125
(stop-speech arg1 (the-as uint 0) #f)
(play-speech arg1 12)
(play-speech arg1 13)
(play-speech arg1 14)
)
)
)
)
)
(when (and (or (not s3-0) (>= (the-as int (send-event s3-0 'query 'waypoint)) 11))
(or (not s4-0) (>= (the-as int (send-event s4-0 'query 'waypoint)) 11))
(or (not s5-0) (>= (the-as int (send-event s5-0 'query 'waypoint)) 11))
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(cond
((speech-playing? arg1 12)
(let ((a1-28 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-28 from) (process->ppointer pp))
(set! (-> a1-28 num-params) 1)
(set! (-> a1-28 message) 'query)
(set! (-> a1-28 param 0) (the-as uint 'beaten))
(let ((t9-28 send-event-function)
(v1-163 (-> arg1 actor-group 0 data 6 actor))
)
(if (t9-28
(if v1-163
(-> v1-163 extra process)
)
a1-28
)
(go-to-waypoint! arg1 20 #f)
(go-to-waypoint! arg1 16 #f)
)
)
)
)
(else
(go-to-waypoint! arg1 11 #f)
)
)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-near-start-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 11
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 12))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(let ((v1-12 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-12 bytes 5) 1)
(set! (-> v1-12 bytes 6) 2)
(set! (-> v1-12 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-12) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(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-7 (-> arg1 actor-group 0 data 6 actor))
)
(b!
(not (t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-1
)
)
cfg-6
:delay (empty-form)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 20 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(let ((v0-4 #t))
(b! #t cfg-17 :delay (nop!))
(label cfg-6)
(set! v0-4
(when (and (not (speech-playing? arg1 12)) (let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) (process->ppointer pp))
(set! (-> a1-6 num-params) 1)
(set! (-> a1-6 message) 'query)
(set! (-> a1-6 param 0) (the-as uint 'hostile))
(let ((t9-5 send-event-function)
(v1-27 (-> arg1 actor-group 0 data 6 actor))
)
(and (t9-5
(if v1-27
(-> v1-27 extra process)
)
a1-6
)
(hal-sewer-method-227 arg1)
)
)
)
)
(stop-speech arg1 (the-as uint 0) #f)
(play-speech arg1 12)
(play-speech arg1 13)
(play-speech arg1 14)
(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
)
)
(label cfg-17)
v0-4
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-below-elevator-a-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 16
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(set-vector! (-> arg0 test-plane) -1.0 0.0 0.0 4870144.0)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 16))
(let ((t9-0 send-event-function)
(v1-9 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-9
(-> v1-9 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 16))
(let ((t9-1 send-event-function)
(v1-20 (-> arg0 actor-group 0 data 3 actor))
)
(t9-1
(if v1-20
(-> v1-20 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 16))
(let ((t9-2 send-event-function)
(v1-31 (-> arg0 actor-group 0 data 2 actor))
)
(t9-2
(if v1-31
(-> v1-31 extra process)
)
a1-2
)
)
)
(let ((v1-35 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-35 bytes 5) 1)
(set! (-> v1-35 bytes 6) 2)
(set! (-> v1-35 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-35) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(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-7 (-> arg1 actor-group 0 data 6 actor))
)
(when (t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-1
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 20 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return (the-as symbol #t))
)
)
)
(let* ((v1-22 (-> arg1 actor-group 0 data 7 actor))
(a0-6 (if v1-22
(-> v1-22 extra process)
)
)
(v1-27 (-> arg1 actor-group 0 data 9 actor))
(s4-0 (if v1-27
(-> v1-27 extra process)
)
)
(v1-32 (-> arg1 actor-group 0 data 8 actor))
(s5-0 (if v1-32
(-> v1-32 extra process)
)
)
)
(the-as
symbol
(when (and (or (not a0-6)
(>= (vector4-dot (get-trans (the-as process-focusable a0-6) 0) (the-as vector (-> arg1 test-plane))) 0.0)
)
(or (not s4-0)
(>= (vector4-dot (get-trans (the-as process-focusable s4-0) 0) (the-as vector (-> arg1 test-plane))) 0.0)
)
(or (not s5-0)
(>= (vector4-dot (get-trans (the-as process-focusable s5-0) 0) (the-as vector (-> arg1 test-plane))) 0.0)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 17 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
)
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-below-elevator-a-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 17
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 17))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 17))
(let ((t9-1 send-event-function)
(v1-19 (-> arg0 actor-group 0 data 3 actor))
)
(t9-1
(if v1-19
(-> v1-19 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 17))
(let ((t9-2 send-event-function)
(v1-30 (-> arg0 actor-group 0 data 2 actor))
)
(t9-2
(if v1-30
(-> v1-30 extra process)
)
a1-2
)
)
)
(let ((v1-34 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-34 bytes 5) 1)
(set! (-> v1-34 bytes 6) 2)
(set! (-> v1-34 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-34) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer)) (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-7 (-> arg1 actor-group 0 data 6 actor))
)
(when (t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-1
)
(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 'hal2-below-elevator-a-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 20
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 20))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 20))
(let ((t9-1 send-event-function)
(v1-19 (-> arg0 actor-group 0 data 3 actor))
)
(t9-1
(if v1-19
(-> v1-19 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 20))
(let ((t9-2 send-event-function)
(v1-30 (-> arg0 actor-group 0 data 2 actor))
)
(t9-2
(if v1-30
(-> v1-30 extra process)
)
a1-2
)
)
)
(let ((a0-7 (-> arg0 actor-group 0 data 4 actor)))
(if a0-7
(toggle-status (the-as entity-actor a0-7) (entity-perm-status no-kill) #f)
)
)
(let ((a0-8 (-> arg0 actor-group 0 data 11 actor)))
(if a0-8
(toggle-status (the-as entity-actor a0-8) (entity-perm-status no-kill) #t)
)
)
(let ((v1-44 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-44 bytes 5) 1)
(set! (-> v1-44 bytes 6) 2)
(set! (-> v1-44 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-44) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(when (not (channel-active? arg1 (gui-channel none)))
(cond
((speech-playing? arg1 12)
(if (not (speech-playing? arg1 22))
(play-speech arg1 22)
)
)
(else
(if (and (not (speech-playing? arg1 21)) (let* ((a0-6 arg1)
(t9-5 (method-of-object a0-6 hal-sewer-method-230))
(v1-17 (-> arg1 actor-group 0 data 1 actor))
)
(t9-5
a0-6
(the-as process-focusable (if v1-17
(-> v1-17 extra process)
)
)
*target*
)
)
)
(play-speech arg1 21)
)
)
)
)
(let* ((v1-25 (-> arg1 actor-group 0 data 1 actor))
(a0-8 (if v1-25
(-> v1-25 extra process)
)
)
)
(when (or (not a0-8) (>= (the-as int (send-event a0-8 'query 'waypoint)) 20))
(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 #f
:on-skipping-here #f
:check-too-far 'hal2-below-elevator-a-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 21
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) 1)
(set! (-> v1-1 bytes 6) 2)
(set! (-> v1-1 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(local-vars (v1-40 int))
(with-pp
(cond
((speech-playing? arg1 23)
(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 10 actor))
)
(when (t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-2
)
(cond
((or (speech-playing? arg1 24) (speech-playing? arg1 77))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 23 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
(else
(when (not (channel-active? arg1 (gui-channel none)))
(cond
((zero? (rnd-int-count arg1 2))
(play-speech arg1 24)
(play-speech arg1 25)
(play-speech arg1 26)
(play-speech arg1 27)
)
((begin (play-speech arg1 77) (play-speech arg1 78) (set! v1-40 (rnd-int-count arg1 4)) (zero? v1-40))
(play-speech arg1 79)
)
((= v1-40 1)
(play-speech arg1 80)
)
((= v1-40 2)
(play-speech arg1 68)
)
(else
(play-speech arg1 81)
)
)
)
#f
)
)
)
)
)
)
(else
(when (not (channel-active? arg1 (gui-channel none)))
(play-speech arg1 23)
(let ((a1-23 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-23 from) (process->ppointer pp))
(set! (-> a1-23 num-params) 0)
(set! (-> a1-23 message) 'trigger)
(let ((t9-22 send-event-function)
(v1-58 (-> arg1 actor-group 0 data 10 actor))
)
(t9-22
(if v1-58
(-> v1-58 extra process)
)
a1-23
)
)
)
(let ((a1-24 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-24 from) (process->ppointer pp))
(set! (-> a1-24 num-params) 2)
(set! (-> a1-24 message) 'request)
(set! (-> a1-24 param 0) (the-as uint 'waypoint))
(set! (-> a1-24 param 1) (the-as uint 22))
(let ((t9-23 send-event-function)
(v1-69 (-> arg1 actor-group 0 data 1 actor))
)
(t9-23
(if v1-69
(-> v1-69 extra process)
)
a1-24
)
)
)
(let ((a1-25 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-25 from) (process->ppointer pp))
(set! (-> a1-25 num-params) 2)
(set! (-> a1-25 message) 'request)
(set! (-> a1-25 param 0) (the-as uint 'waypoint))
(set! (-> a1-25 param 1) (the-as uint 22))
(let ((t9-24 send-event-function)
(v1-80 (-> arg1 actor-group 0 data 3 actor))
)
(t9-24
(if v1-80
(-> v1-80 extra process)
)
a1-25
)
)
)
(let ((a1-26 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-26 from) (process->ppointer pp))
(set! (-> a1-26 num-params) 2)
(set! (-> a1-26 message) 'request)
(set! (-> a1-26 param 0) (the-as uint 'waypoint))
(set! (-> a1-26 param 1) (the-as uint 22))
(let ((t9-25 send-event-function)
(v1-91 (-> arg1 actor-group 0 data 2 actor))
)
(t9-25
(if v1-91
(-> v1-91 extra process)
)
a1-26
)
)
)
#f
)
)
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 23
:nav-mesh-index -1
:skip-to 29
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 23))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 23))
(let ((t9-1 send-event-function)
(v1-19 (-> arg0 actor-group 0 data 3 actor))
)
(t9-1
(if v1-19
(-> v1-19 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 23))
(let ((t9-2 send-event-function)
(v1-30 (-> arg0 actor-group 0 data 2 actor))
)
(t9-2
(if v1-30
(-> v1-30 extra process)
)
a1-2
)
)
)
(let ((v1-34 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-34 bytes 5) 1)
(set! (-> v1-34 bytes 6) 2)
(set! (-> v1-34 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-34) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer)) (cond
((logtest? (-> arg1 bot-task-bits) (bot-task-bits botbits-0))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 24 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
(else
(set-time! (-> arg1 waypoint-time0))
#f
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here (lambda ((arg0 hal-sewer))
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(send-event arg0 'move-trans (-> arg0 hal2-course spots 2))
(send-event *target* 'continue (get-continue-by-name *game-info* "hal2-plant-first-bomb"))
(let* ((v1-18 (-> arg0 actor-group 0 data 1 actor))
(s4-0 (if v1-18
(-> v1-18 extra process)
)
)
(v1-23 (-> arg0 actor-group 0 data 3 actor))
(s5-1 (if v1-23
(-> v1-23 extra process)
)
)
(v1-28 (-> arg0 actor-group 0 data 2 actor))
(gp-1 (if v1-28
(-> v1-28 extra process)
)
)
)
(send-event s4-0 'skip)
(send-event s5-1 'skip)
(send-event gp-1 'skip)
(send-event s4-0 'request 'health-meter #t)
(send-event s5-1 'request 'health-meter #t)
(send-event gp-1 'request 'health-meter #t)
)
(none)
)
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 24
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) 1)
(set! (-> v1-1 bytes 6) 2)
(set! (-> v1-1 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(with-pp
(let ((v1-3 (-> arg1 actor-group 0 data 1 actor)))
(if v1-3
(-> v1-3 extra process)
)
)
(let ((v1-8 (-> arg1 actor-group 0 data 3 actor)))
(if v1-8
(-> v1-8 extra process)
)
)
(let ((v1-13 (-> arg1 actor-group 0 data 2 actor)))
(if v1-13
(-> v1-13 extra process)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.4))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 24))
(let ((t9-0 send-event-function)
(v1-27 (-> arg1 actor-group 0 data 3 actor))
)
(t9-0
(if v1-27
(-> v1-27 extra process)
)
a1-1
)
)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.75))
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 24))
(let ((t9-1 send-event-function)
(v1-42 (-> arg1 actor-group 0 data 2 actor))
)
(t9-1
(if v1-42
(-> v1-42 extra process)
)
a1-2
)
)
)
)
(if (and (not (speech-playing? arg1 28))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 2))
(not (channel-active? arg1 (gui-channel none)))
)
(play-speech arg1 28)
)
(when (logtest? (-> arg1 bot-task-bits) (bot-task-bits botbits-1))
(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 #f
)
(new 'static 'bot-waypoint
:waypoint-id 25
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a0-1 (-> arg0 actor-group 0 data 11 actor)))
(if a0-1
(toggle-status (the-as entity-actor a0-1) (entity-perm-status no-kill) #f)
)
)
(let ((a0-2 (-> arg0 actor-group 0 data 18 actor)))
(if a0-2
(toggle-status (the-as entity-actor a0-2) (entity-perm-status no-kill) #t)
)
)
(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) 'request)
(set! (-> a1-2 param 0) (the-as uint 'bomb-recoil))
(let ((t9-2 send-event-function)
(v1-17 (-> arg0 actor-group 0 data 1 actor))
)
(t9-2
(if v1-17
(-> v1-17 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) 1)
(set! (-> a1-3 message) 'request)
(set! (-> a1-3 param 0) (the-as uint 'bomb-recoil))
(let ((t9-3 send-event-function)
(v1-27 (-> arg0 actor-group 0 data 3 actor))
)
(t9-3
(if v1-27
(-> v1-27 extra process)
)
a1-3
)
)
)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) (process->ppointer pp))
(set! (-> a1-4 num-params) 1)
(set! (-> a1-4 message) 'request)
(set! (-> a1-4 param 0) (the-as uint 'bomb-recoil))
(let ((t9-4 send-event-function)
(v1-37 (-> arg0 actor-group 0 data 2 actor))
)
(t9-4
(if v1-37
(-> v1-37 extra process)
)
a1-4
)
)
)
(let ((v1-41 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-41 bytes 5) 1)
(set! (-> v1-41 bytes 6) 2)
(set! (-> v1-41 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-41) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(with-pp
(cond
((time-elapsed? (-> arg1 waypoint-time0) (seconds 1.5))
(cond
((logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-0))
(when (and (not (speech-playing? arg1 29)) (not (speech-playing? arg1 30)))
(if (zero? (rnd-int-count arg1 2))
(play-speech arg1 29)
(play-speech arg1 30)
)
)
)
(else
(when (not (speech-playing? arg1 31))
(play-speech arg1 31)
(play-speech arg1 32)
(play-speech arg1 33)
)
)
)
)
(else
(let ((a0-11 *target*))
(if (and a0-11 (focus-test? a0-11 hit))
(logior! (-> arg1 waypoint-bits) (waypoint-bits wabits-0))
)
)
)
)
(let ((v1-34 (-> arg1 actor-group 0 data 1 actor)))
(if v1-34
(-> v1-34 extra process)
)
)
(let ((v1-39 (-> arg1 actor-group 0 data 3 actor)))
(if v1-39
(-> v1-39 extra process)
)
)
(let ((v1-44 (-> arg1 actor-group 0 data 2 actor)))
(if v1-44
(-> v1-44 extra process)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 2))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) (process->ppointer pp))
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'request)
(set! (-> a1-10 param 0) (the-as uint 'waypoint))
(set! (-> a1-10 param 1) (the-as uint 26))
(let ((t9-9 send-event-function)
(v1-58 (-> arg1 actor-group 0 data 3 actor))
)
(t9-9
(if v1-58
(-> v1-58 extra process)
)
a1-10
)
)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 2.5))
(let ((a1-11 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-11 from) (process->ppointer pp))
(set! (-> a1-11 num-params) 2)
(set! (-> a1-11 message) 'request)
(set! (-> a1-11 param 0) (the-as uint 'waypoint))
(set! (-> a1-11 param 1) (the-as uint 26))
(let ((t9-10 send-event-function)
(v1-73 (-> arg1 actor-group 0 data 2 actor))
)
(t9-10
(if v1-73
(-> v1-73 extra process)
)
a1-11
)
)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 3.5))
(let ((a1-12 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-12 from) (process->ppointer pp))
(set! (-> a1-12 num-params) 2)
(set! (-> a1-12 message) 'request)
(set! (-> a1-12 param 0) (the-as uint 'waypoint))
(set! (-> a1-12 param 1) (the-as uint 26))
(let ((t9-11 send-event-function)
(v1-87 (-> arg1 actor-group 0 data 1 actor))
)
(t9-11
(if v1-87
(-> v1-87 extra process)
)
a1-12
)
)
)
(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 #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 26
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(set-vector! (-> arg0 test-plane) 0.29 0.0 -0.957 194109.44)
(let ((v1-2 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-2 bytes 5) 1)
(set! (-> v1-2 bytes 6) 3)
(set! (-> v1-2 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-2) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((s5-0 arg1)
(s4-0 (method-of-object s5-0 hal-sewer-method-230))
(v1-4 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-4
(-> v1-4 extra process)
)
)
(v1-9 (-> arg1 actor-group 0 data 13 actor))
)
(when (or (s4-0 s5-0 (the-as process-focusable s3-0) (the-as process-focusable (when v1-9
(let ((s2-0 (-> v1-9 extra process)))
(if (type? s2-0 process-focusable)
s2-0
)
)
)
)
)
(>= (vector4-dot (math-camera-pos) (the-as vector (-> arg1 test-plane))) 0.0)
)
(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 #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 27
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(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) 'cue-chase)
(let ((t9-0 send-event-function)
(v1-5 (-> arg0 actor-group 0 data 14 actor))
)
(t9-0
(if v1-5
(-> v1-5 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 27))
(let ((t9-1 send-event-function)
(v1-16 (-> arg0 actor-group 0 data 1 actor))
)
(t9-1
(if v1-16
(-> v1-16 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 27))
(let ((t9-2 send-event-function)
(v1-27 (-> arg0 actor-group 0 data 3 actor))
)
(t9-2
(if v1-27
(-> v1-27 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) 2)
(set! (-> a1-3 message) 'request)
(set! (-> a1-3 param 0) (the-as uint 'waypoint))
(set! (-> a1-3 param 1) (the-as uint 27))
(let ((t9-3 send-event-function)
(v1-38 (-> arg0 actor-group 0 data 2 actor))
)
(t9-3
(if v1-38
(-> v1-38 extra process)
)
a1-3
)
)
)
(let ((v1-42 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-42 bytes 5) 1)
(set! (-> v1-42 bytes 6) 3)
(set! (-> v1-42 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-42) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(with-pp
(hal-sewer-method-228 arg1)
(when (not (channel-active? arg1 (gui-channel none)))
(cond
((not (speech-playing? arg1 34))
(let* ((s5-0 arg1)
(s4-0 (method-of-object s5-0 hal-sewer-method-230))
(v1-12 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-12
(-> v1-12 extra process)
)
)
(v1-17 (-> arg1 actor-group 0 data 13 actor))
)
(if (s4-0
s5-0
(the-as process-focusable s3-0)
(the-as process-focusable (when v1-17
(let ((s2-0 (-> v1-17 extra process)))
(if (type? s2-0 process-focusable)
s2-0
)
)
)
)
)
(play-speech arg1 34)
)
)
)
((and (not (speech-playing? arg1 38))
(< (vector4-dot (math-camera-pos) (the-as vector (-> arg1 test-plane))) 0.0)
)
(play-speech arg1 38)
)
)
)
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-8 from) (process->ppointer pp))
(set! (-> a1-8 num-params) 1)
(set! (-> a1-8 message) 'query)
(set! (-> a1-8 param 0) (the-as uint 'beaten))
(let ((t9-9 send-event-function)
(v1-38 (-> arg1 actor-group 0 data 12 actor))
)
(cond
((t9-9
(if v1-38
(-> v1-38 extra process)
)
a1-8
)
(when (not (logtest? (bot-flags bf22 bf23) (-> arg1 bot-flags)))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 29 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
((and (time-elapsed? (-> arg1 waypoint-time0) (seconds 4))
(>= (vector4-dot (math-camera-pos) (the-as vector (-> arg1 test-plane))) 0.0)
)
(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 #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 28
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(play-speech arg0 35)
(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) 'cue-chase)
(let ((t9-1 send-event-function)
(v1-7 (-> arg0 actor-group 0 data 16 actor))
)
(t9-1
(if v1-7
(-> v1-7 extra process)
)
a1-1
)
)
)
(let ((v1-11 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-11 bytes 5) 1)
(set! (-> v1-11 bytes 6) 3)
(set! (-> v1-11 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-11) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(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-7 (-> arg1 actor-group 0 data 12 actor))
(s5-0 (t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-1
)
)
(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-16 (-> arg1 actor-group 0 data 15 actor))
(s4-0 (t9-1
(if v1-16
(-> v1-16 extra process)
)
a1-2
)
)
)
(when (not (channel-active? arg1 (gui-channel none)))
(cond
((and (not (speech-playing? arg1 36)) (not s5-0) (not s4-0))
(play-speech arg1 36)
)
((not (speech-playing? arg1 37))
(play-speech arg1 37)
)
)
)
(hal-sewer-method-228 arg1)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 1.75))
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-8 from) (process->ppointer pp))
(set! (-> a1-8 num-params) 2)
(set! (-> a1-8 message) 'request)
(set! (-> a1-8 param 0) (the-as uint 'waypoint))
(set! (-> a1-8 param 1) (the-as uint 28))
(let ((t9-8 send-event-function)
(v1-46 (-> arg1 actor-group 0 data 1 actor))
)
(t9-8
(if v1-46
(-> v1-46 extra process)
)
a1-8
)
)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 2.75))
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) (process->ppointer pp))
(set! (-> a1-9 num-params) 2)
(set! (-> a1-9 message) 'request)
(set! (-> a1-9 param 0) (the-as uint 'waypoint))
(set! (-> a1-9 param 1) (the-as uint 28))
(let ((t9-9 send-event-function)
(v1-61 (-> arg1 actor-group 0 data 3 actor))
)
(t9-9
(if v1-61
(-> v1-61 extra process)
)
a1-9
)
)
)
)
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 3.5))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) (process->ppointer pp))
(set! (-> a1-10 num-params) 2)
(set! (-> a1-10 message) 'request)
(set! (-> a1-10 param 0) (the-as uint 'waypoint))
(set! (-> a1-10 param 1) (the-as uint 28))
(let ((t9-10 send-event-function)
(v1-76 (-> arg1 actor-group 0 data 2 actor))
)
(t9-10
(if v1-76
(-> v1-76 extra process)
)
a1-10
)
)
)
)
(when (and s5-0 s4-0 (not (logtest? (bot-flags bf22 bf23) (-> arg1 bot-flags))))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 29 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 29
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(play-speech arg0 39)
(play-speech arg0 40)
(play-speech arg0 41)
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) (process->ppointer pp))
(set! (-> a1-3 num-params) 2)
(set! (-> a1-3 message) 'request)
(set! (-> a1-3 param 0) (the-as uint 'waypoint))
(set! (-> a1-3 param 1) (the-as uint 34))
(let ((t9-3 send-event-function)
(v1-14 (-> arg0 actor-group 0 data 1 actor))
)
(t9-3
(if v1-14
(-> v1-14 extra process)
)
a1-3
)
)
)
(let ((v1-18 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-18 bytes 5) 1)
(set! (-> v1-18 bytes 6) 3)
(set! (-> v1-18 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-18) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(local-vars (a0-10 process))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s5-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s3-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 1.75))
(send-event s4-0 'request 'waypoint 34)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 2.25))
(send-event s3-0 'request 'waypoint 34)
)
(when (and (not (channel-active? arg1 (gui-channel none)))
(and (not (speech-playing? arg1 42))
(not (speech-playing? arg1 43))
(begin
(let ((v1-45 (-> arg1 actor-group 0 data 1 actor)))
(set! a0-10 (if v1-45
(-> v1-45 extra process)
)
)
)
a0-10
)
(>= (the-as int (send-event a0-10 'query 'waypoint)) 33)
)
)
(if (zero? (rnd-int-count arg1 2))
(play-speech arg1 42)
(play-speech arg1 43)
)
(play-speech arg1 44)
(play-speech arg1 45)
)
(let ((a0-16 s5-0))
(when (and (and a0-16 (= (send-event a0-16 'query 'waypoint) 34))
(let ((a0-18 s4-0))
(and a0-18 (= (send-event a0-18 'query 'waypoint) 34))
)
(let ((a0-20 s3-0))
(and (and a0-20 (= (send-event a0-20 'query 'waypoint) 34))
(outside-spot-radius? (the-as bot s5-0) (the-as bot-spot #f) (the-as vector #f) #f)
(outside-spot-radius? (the-as bot s4-0) (the-as bot-spot #f) (the-as vector #f) #f)
(outside-spot-radius? (the-as bot s3-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
)
)
(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 #f
:on-skipping-here (lambda ((arg0 hal-sewer))
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(send-event arg0 'move-trans (-> arg0 hal2-course spots 3))
(send-event *target* 'continue (get-continue-by-name *game-info* "hal2-go-elevator2"))
(let* ((v1-18 (-> arg0 actor-group 0 data 1 actor))
(a0-7 (if v1-18
(-> v1-18 extra process)
)
)
(v1-23 (-> arg0 actor-group 0 data 3 actor))
(s5-1 (if v1-23
(-> v1-23 extra process)
)
)
(v1-28 (-> arg0 actor-group 0 data 2 actor))
(gp-1 (if v1-28
(-> v1-28 extra process)
)
)
)
(send-event a0-7 'skip)
(send-event s5-1 'skip)
(send-event gp-1 'skip)
)
(none)
)
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 35
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 35))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 35))
(let ((t9-1 send-event-function)
(v1-19 (-> arg0 actor-group 0 data 3 actor))
)
(t9-1
(if v1-19
(-> v1-19 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 35))
(let ((t9-2 send-event-function)
(v1-30 (-> arg0 actor-group 0 data 2 actor))
)
(t9-2
(if v1-30
(-> v1-30 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) 1)
(set! (-> a1-3 message) 'move-to)
(set! (-> a1-3 param 0) (the-as uint 'bottom))
(let ((t9-3 send-event-function)
(v1-40 (-> arg0 actor-group 0 data 18 actor))
)
(t9-3
(if v1-40
(-> v1-40 extra process)
)
a1-3
)
)
)
(let ((v1-44 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-44 bytes 5) 1)
(set! (-> v1-44 bytes 6) 3)
(set! (-> v1-44 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-44) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(with-pp
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(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 'path-pos?))
(let ((t9-0 send-event-function)
(v1-22 (-> arg1 actor-group 0 data 18 actor))
)
(cond
((< (t9-0
(if v1-22
(-> v1-22 extra process)
)
a1-1
)
1.0
)
(set-time! (-> arg1 waypoint-time0))
)
(else
(if (and (not (speech-playing? arg1 46)) (not (channel-active? arg1 (gui-channel none))))
(play-speech arg1 46)
)
)
)
)
)
(let ((a0-6 s3-0))
(if (and (and a0-6 (= (send-event a0-6 'query 'waypoint) 35))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.1))
)
(send-event s3-0 'request 'waypoint 37)
)
)
(let ((a0-11 s4-0))
(if (and (and a0-11 (= (send-event a0-11 'query 'waypoint) 35))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.9))
)
(send-event s4-0 'request 'waypoint 37)
)
)
(let ((a0-16 s5-0))
(if (and (and a0-16 (= (send-event a0-16 'query 'waypoint) 35))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.7))
)
(send-event s5-0 'request 'waypoint 37)
)
)
(when (and (or (not s3-0) (>= (the-as int (send-event s3-0 'query 'waypoint)) 37))
(or (not s4-0) (>= (the-as int (send-event s4-0 'query 'waypoint)) 37))
(or (not s5-0) (>= (the-as int (send-event s5-0 'query 'waypoint)) 37))
)
(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 #f
)
(new 'static 'bot-waypoint
:waypoint-id 37
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) 1)
(set! (-> v1-1 bytes 6) 3)
(set! (-> v1-1 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(when (and (not (speech-playing? arg1 47))
(not (channel-active? arg1 (gui-channel none)))
s4-0
(focus-test? (the-as process-focusable s4-0) touch-water)
)
(play-speech arg1 47)
(play-speech arg1 48)
)
(when (or (>= (-> (target-pos 0) x) 5207572.5)
(>= (-> (the-as process-focusable s3-0) root trans x) 5120000.0)
(>= (-> (the-as process-focusable s4-0) root trans x) 5120000.0)
(>= (-> (the-as process-focusable s5-0) root trans x) 5120000.0)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 41 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 41
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a0-1 (-> arg0 actor-group 0 data 18 actor)))
(if a0-1
(toggle-status (the-as entity-actor a0-1) (entity-perm-status no-kill) #f)
)
)
(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) 'cue-chase)
(let ((t9-1 send-event-function)
(v1-10 (-> arg0 actor-group 0 data 20 actor))
)
(t9-1
(if v1-10
(-> v1-10 extra process)
)
a1-1
)
)
)
(let ((v1-14 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-14 bytes 5) 1)
(set! (-> v1-14 bytes 6) 3)
(set! (-> v1-14 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-14) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(with-pp
(if (and (not (speech-playing? arg1 52))
(speech-playing? arg1 49)
(not (channel-active? arg1 (gui-channel none)))
(let ((v1-10 (-> arg1 actor-group 0 data 20 actor)))
(not (if v1-10
(-> v1-10 extra process)
)
)
)
(let ((v1-15 (-> arg1 actor-group 0 data 21 actor)))
(not (if v1-15
(-> v1-15 extra process)
)
)
)
(let ((v1-20 (-> arg1 actor-group 0 data 22 actor)))
(or (if v1-20
(-> v1-20 extra process)
)
(let ((a0-7 (-> arg1 actor-group 0 data 23 actor)))
(if a0-7
(-> a0-7 extra process)
)
)
)
)
)
(play-speech arg1 52)
)
(cond
((not (logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-0)))
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.5))
(logior! (-> arg1 waypoint-bits) (waypoint-bits wabits-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) 'cue-chase)
(let ((t9-4 send-event-function)
(v1-42 (-> arg1 actor-group 0 data 21 actor))
)
(t9-4
(if v1-42
(-> v1-42 extra process)
)
a1-5
)
)
)
(stop-speech arg1 (the-as uint 0) #f)
(play-speech arg1 49)
(play-speech arg1 50)
(play-speech arg1 51)
)
#f
)
((not (logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-1)))
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 4))
(logior! (-> arg1 waypoint-bits) (waypoint-bits wabits-1))
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) (process->ppointer pp))
(set! (-> a1-10 num-params) 0)
(set! (-> a1-10 message) 'cue-chase)
(let ((t9-9 send-event-function)
(v1-66 (-> arg1 actor-group 0 data 22 actor))
)
(t9-9
(if v1-66
(-> v1-66 extra process)
)
a1-10
)
)
)
)
#f
)
((not (logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-2)))
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 5))
(logior! (-> arg1 waypoint-bits) (waypoint-bits wabits-2))
(let ((a1-11 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-11 from) (process->ppointer pp))
(set! (-> a1-11 num-params) 0)
(set! (-> a1-11 message) 'cue-chase)
(let ((t9-10 send-event-function)
(v1-82 (-> arg1 actor-group 0 data 23 actor))
)
(t9-10
(if v1-82
(-> v1-82 extra process)
)
a1-11
)
)
)
)
#f
)
(else
(let ((a1-12 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-12 from) (process->ppointer pp))
(set! (-> a1-12 num-params) 1)
(set! (-> a1-12 message) 'query)
(set! (-> a1-12 param 0) (the-as uint 'beaten))
(let ((t9-11 send-event-function)
(v1-92 (-> arg1 actor-group 0 data 19 actor))
)
(when (t9-11
(if v1-92
(-> v1-92 extra process)
)
a1-12
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 42 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 42
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(if (zero? (rnd-int-count arg0 2))
(play-speech arg0 53)
(play-speech arg0 54)
)
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) (process->ppointer pp))
(set! (-> a1-3 num-params) 2)
(set! (-> a1-3 message) 'request)
(set! (-> a1-3 param 0) (the-as uint 'waypoint))
(set! (-> a1-3 param 1) (the-as uint 42))
(let ((t9-3 send-event-function)
(v1-14 (-> arg0 actor-group 0 data 1 actor))
)
(t9-3
(if v1-14
(-> v1-14 extra process)
)
a1-3
)
)
)
(let ((v1-18 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-18 bytes 5) 1)
(set! (-> v1-18 bytes 6) 3)
(set! (-> v1-18 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-18) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.4))
(send-event s4-0 'request 'waypoint 42)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.7))
(send-event s5-0 'request 'waypoint 42)
)
(cond
((hal-sewer-method-231 arg1 24)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 44 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
((let ((a0-11 s3-0))
(or (and (or (not a0-11) (>= (the-as int (send-event a0-11 'query 'waypoint)) 42))
(outside-spot-radius? (the-as bot s3-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
(let ((a0-14 s4-0))
(and (or (not a0-14) (>= (the-as int (send-event a0-14 'query 'waypoint)) 42))
(outside-spot-radius? (the-as bot s4-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
)
(let ((a0-17 s5-0))
(and (or (not a0-17) (>= (the-as int (send-event a0-17 'query 'waypoint)) 42))
(outside-spot-radius? (the-as bot s5-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 43 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 43
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(logclear! (-> arg0 bot-flags) (bot-flags bf24))
(reset-warn-time! arg0)
(if (and (not (logtest? (-> arg0 bot-task-bits) (bot-task-bits botbits-4))) (not (hal-sewer-method-231 arg0 24)))
(play-speech arg0 55)
)
(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) 'cue-chase)
(let ((t9-3 send-event-function)
(v1-17 (-> arg0 actor-group 0 data 24 actor))
)
(t9-3
(if v1-17
(-> v1-17 extra process)
)
a1-2
)
)
)
(let ((v1-21 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-21 bytes 5) 1)
(set! (-> v1-21 bytes 6) 3)
(set! (-> v1-21 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-21) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(when (hal-sewer-method-231 arg1 24)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 44 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
(cond
((logtest? (-> arg1 bot-task-bits) (bot-task-bits botbits-2 botbits-4))
(logclear! (-> arg1 bot-flags) (bot-flags bf24))
(reset-warn-time! arg1)
(set-time! (-> arg1 waypoint-time0))
(when (not (channel-active? arg1 (gui-channel none)))
(let ((v1-22 *target*))
(when (and v1-22 (focus-test? v1-22 in-air) (not (logtest? (-> v1-22 focus-status) (focus-status hit))))
(cond
((not (speech-playing? arg1 58))
(play-speech arg1 58)
)
((not (speech-playing? arg1 59))
(play-speech arg1 59)
)
((not (speech-playing? arg1 60))
(play-speech arg1 60)
(play-speech arg1 61)
)
)
)
)
)
)
((channel-active? arg1 (gui-channel none))
(reset-warn-time! arg1)
(set-time! (-> arg1 waypoint-time0))
)
(else
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 11))
(set-time! (-> arg1 waypoint-time0))
(let ((v1-55 (-> arg1 sentries1-reminder-index))
(a1-14 (-> arg1 hal2-course sentries1-reminders))
)
(cond
((< v1-55 (-> a1-14 length))
(set! (-> arg1 sentries1-reminder-index) (+ v1-55 1))
(play-speech arg1 (-> a1-14 v1-55))
)
(else
(logior! (-> arg1 bot-flags) (bot-flags bf24))
)
)
)
)
)
)
#f
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-force-fail-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 44
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(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) 'request)
(set! (-> a1-0 param 0) (the-as uint 'replace-bomb))
(let ((t9-0 send-event-function)
(v1-7 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-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) 'cue-chase)
(let ((t9-1 send-event-function)
(v1-15 (-> arg0 actor-group 0 data 27 actor))
)
(t9-1
(if v1-15
(-> v1-15 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 44))
(let ((t9-2 send-event-function)
(v1-26 (-> arg0 actor-group 0 data 1 actor))
)
(t9-2
(if v1-26
(-> v1-26 extra process)
)
a1-2
)
)
)
(let ((v1-30 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-30 bytes 5) 1)
(set! (-> v1-30 bytes 6) 3)
(set! (-> v1-30 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-30) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.2))
(send-event s4-0 'request 'waypoint 44)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.4))
(send-event s5-0 'request 'waypoint 44)
)
(cond
((hal-sewer-method-231 arg1 27)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 48 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
((let ((a0-11 s3-0))
(or (and (or (not a0-11) (>= (the-as int (send-event a0-11 'query 'waypoint)) 47))
(outside-spot-radius? (the-as bot s3-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
(let ((a0-14 s4-0))
(and (or (not a0-14) (>= (the-as int (send-event a0-14 'query 'waypoint)) 47))
(outside-spot-radius? (the-as bot s4-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
)
(let ((a0-17 s5-0))
(and (or (not a0-17) (>= (the-as int (send-event a0-17 'query 'waypoint)) 47))
(outside-spot-radius? (the-as bot s5-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 47 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 47
:nav-mesh-index -1
:skip-to 48
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(logclear! (-> arg0 bot-flags) (bot-flags bf24))
(reset-warn-time! arg0)
(if (and (not (logtest? (-> arg0 bot-task-bits) (bot-task-bits botbits-5))) (not (hal-sewer-method-231 arg0 27)))
(play-speech arg0 62)
)
(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) 'cue-chase)
(let ((t9-3 send-event-function)
(v1-17 (-> arg0 actor-group 0 data 27 actor))
)
(t9-3
(if v1-17
(-> v1-17 extra process)
)
a1-2
)
)
)
(let ((v1-21 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-21 bytes 5) 1)
(set! (-> v1-21 bytes 6) 3)
(set! (-> v1-21 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-21) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(when (hal-sewer-method-231 arg1 27)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 48 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
(return #t)
)
(cond
((logtest? (-> arg1 bot-task-bits) (bot-task-bits botbits-3 botbits-5))
(logclear! (-> arg1 bot-flags) (bot-flags bf24))
(reset-warn-time! arg1)
(set-time! (-> arg1 waypoint-time0))
(when (not (channel-active? arg1 (gui-channel none)))
(let ((v1-22 *target*))
(when (and v1-22 (focus-test? v1-22 in-air) (not (logtest? (-> v1-22 focus-status) (focus-status hit))))
(cond
((not (speech-playing? arg1 64))
(play-speech arg1 64)
)
((not (speech-playing? arg1 65))
(play-speech arg1 65)
)
)
)
)
)
)
((channel-active? arg1 (gui-channel none))
(reset-warn-time! arg1)
(set-time! (-> arg1 waypoint-time0))
)
(else
(when (time-elapsed? (-> arg1 waypoint-time0) (seconds 9))
(let ((v1-46 (-> arg1 sentries2-reminder-index))
(a1-11 (-> arg1 hal2-course sentries2-reminders))
)
(cond
((< v1-46 (-> a1-11 length))
(set! (-> arg1 sentries2-reminder-index) (+ v1-46 1))
(play-speech arg1 (-> a1-11 v1-46))
(set-time! (-> arg1 waypoint-time0))
)
(else
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 20))
(logior! (-> arg1 bot-flags) (bot-flags bf24))
)
)
)
)
)
)
)
#f
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-force-fail-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 48
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'waypoint))
(set! (-> a1-0 param 1) (the-as uint 48))
(let ((t9-0 send-event-function)
(v1-8 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-8
(-> v1-8 extra process)
)
a1-0
)
)
)
(play-speech arg0 66)
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "sewer-hosehead" -99.0 0)
(let ((v1-16 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-16 bytes 5) 1)
(set! (-> v1-16 bytes 6) 4)
(set! (-> v1-16 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-16) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(with-pp
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s5-0 (if v1-3
(-> v1-3 extra process)
)
)
)
(let* ((v1-8 (-> arg1 actor-group 0 data 3 actor))
(s3-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s4-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(when (and (logtest? (-> arg1 waypoint-bits) (waypoint-bits wabits-0))
(time-elapsed? (-> arg1 waypoint-time0) (seconds 0.25))
)
(logclear! (-> arg1 waypoint-bits) (waypoint-bits wabits-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) 'beaten)
(let ((t9-0 send-event-function)
(v1-29 (-> arg1 actor-group 0 data 19 actor))
)
(t9-0
(if v1-29
(-> v1-29 extra process)
)
a1-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) 'die-fast)
(let ((t9-1 send-event-function)
(v1-37 (-> arg1 actor-group 0 data 22 actor))
)
(t9-1
(if v1-37
(-> v1-37 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) 'die-fast)
(let ((t9-2 send-event-function)
(v1-45 (-> arg1 actor-group 0 data 23 actor))
)
(t9-2
(if v1-45
(-> v1-45 extra process)
)
a1-3
)
)
)
(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) 'die-fast)
(let ((t9-3 send-event-function)
(v1-53 (-> arg1 actor-group 0 data 20 actor))
)
(t9-3
(if v1-53
(-> v1-53 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) 0)
(set! (-> a1-5 message) 'die-fast)
(let ((t9-4 send-event-function)
(v1-61 (-> arg1 actor-group 0 data 21 actor))
)
(t9-4
(if v1-61
(-> v1-61 extra process)
)
a1-5
)
)
)
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) (process->ppointer pp))
(set! (-> a1-6 num-params) 0)
(set! (-> a1-6 message) 'die-fast)
(let ((t9-5 send-event-function)
(v1-69 (-> arg1 actor-group 0 data 24 actor))
)
(t9-5
(if v1-69
(-> v1-69 extra process)
)
a1-6
)
)
)
(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) 'die-fast)
(let ((t9-6 send-event-function)
(v1-77 (-> arg1 actor-group 0 data 25 actor))
)
(t9-6
(if v1-77
(-> v1-77 extra process)
)
a1-7
)
)
)
(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) 'die-fast)
(let ((t9-7 send-event-function)
(v1-85 (-> arg1 actor-group 0 data 26 actor))
)
(t9-7
(if v1-85
(-> v1-85 extra process)
)
a1-8
)
)
)
(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) 'die-fast)
(let ((t9-8 send-event-function)
(v1-93 (-> arg1 actor-group 0 data 27 actor))
)
(t9-8
(if v1-93
(-> v1-93 extra process)
)
a1-9
)
)
)
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) (process->ppointer pp))
(set! (-> a1-10 num-params) 0)
(set! (-> a1-10 message) 'die-fast)
(let ((t9-9 send-event-function)
(v1-101 (-> arg1 actor-group 0 data 28 actor))
)
(t9-9
(if v1-101
(-> v1-101 extra process)
)
a1-10
)
)
)
(let ((a1-11 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-11 from) (process->ppointer pp))
(set! (-> a1-11 num-params) 0)
(set! (-> a1-11 message) 'die-fast)
(let ((t9-10 send-event-function)
(v1-109 (-> arg1 actor-group 0 data 29 actor))
)
(t9-10
(if v1-109
(-> v1-109 extra process)
)
a1-11
)
)
)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.2))
(send-event s3-0 'request 'waypoint 48)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 0.4))
(send-event s4-0 'request 'waypoint 48)
)
)
(when (and (not (channel-active? arg1 (gui-channel none))) (not (speech-playing? arg1 67)))
(let* ((v1-141 (-> arg1 actor-group 0 data 1 actor))
(s4-1 (if v1-141
(-> v1-141 extra process)
)
)
)
(if (and s4-1
(>= 65536.0 (vector-vector-xz-distance (target-pos 0) (-> (the-as process-focusable s4-1) root trans)))
)
(play-speech arg1 67)
)
)
)
(let ((a0-36 s5-0))
(when (and (and a0-36 (>= (the-as int (send-event a0-36 'query 'waypoint)) 54))
(outside-spot-radius? (the-as bot s5-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 54 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here (lambda ((arg0 hal-sewer))
(ai-task-control-method-12 (-> arg0 ai-ctrl) arg0)
(send-event arg0 'move-trans (-> arg0 hal2-course spots 4))
(send-event *target* 'continue (get-continue-by-name *game-info* "hal2-wall2"))
(let* ((v1-18 (-> arg0 actor-group 0 data 1 actor))
(s5-1 (if v1-18
(-> v1-18 extra process)
)
)
(v1-23 (-> arg0 actor-group 0 data 3 actor))
(s4-0 (if v1-23
(-> v1-23 extra process)
)
)
(v1-28 (-> arg0 actor-group 0 data 2 actor))
(s3-0 (if v1-28
(-> v1-28 extra process)
)
)
)
(send-event s5-1 'request 'replace-bomb)
(send-event s5-1 'skip)
(send-event s4-0 'skip)
(send-event s3-0 'skip)
)
(logior! (-> arg0 waypoint-bits) (waypoint-bits wabits-0))
(none)
)
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 54
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(play-speech arg0 69)
(let ((v1-3 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-3 bytes 5) 1)
(set! (-> v1-3 bytes 6) 4)
(set! (-> v1-3 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-3) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(a0-1 (if v1-3
(-> v1-3 extra process)
)
)
)
(when (and a0-1 (>= (the-as int (send-event a0-1 'query 'waypoint)) 55))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 55 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 55
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) 1)
(set! (-> v1-1 bytes 6) 4)
(set! (-> v1-1 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(local-vars (a0-3 process))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s5-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s3-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(if (and (not (speech-playing? arg1 70))
(and (not (channel-active? arg1 (gui-channel none)))
(begin (set! a0-3 s5-0) a0-3)
(>= (the-as int (send-event a0-3 'query 'waypoint)) 56)
)
)
(play-speech arg1 70)
)
(let ((a0-5 s5-0))
(when (and (and a0-5 (>= (the-as int (send-event a0-5 'query 'waypoint)) 56))
(let ((a0-7 s4-0))
(and a0-7 (>= (the-as int (send-event a0-7 'query 'waypoint)) 54))
)
(let ((a0-9 s3-0))
(and (and a0-9 (>= (the-as int (send-event a0-9 'query 'waypoint)) 54))
(outside-spot-radius? (the-as bot s5-0) (the-as bot-spot #f) (the-as vector #f) #f)
(outside-spot-radius? (the-as bot s4-0) (the-as bot-spot #f) (the-as vector #f) #f)
(outside-spot-radius? (the-as bot s3-0) (the-as bot-spot #f) (the-as vector #f) #f)
)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 56 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 56
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(logclear! (-> arg0 bot-flags) (bot-flags bf24))
(reset-warn-time! arg0)
(set! (-> arg0 waypoint-time0) 0)
(let ((v1-5 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-5 bytes 5) 1)
(set! (-> v1-5 bytes 6) 4)
(set! (-> v1-5 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-5) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(cond
((hal-sewer-method-229 arg1)
(logclear! (-> arg1 bot-flags) (bot-flags bf24))
(reset-warn-time! arg1)
(when (and (not (channel-active? arg1 (gui-channel none))) (scene-play arg1 "sewer-hosehead" #f))
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 57 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
(else
(cond
((channel-active? arg1 (gui-channel none))
(set! (-> arg1 waypoint-time0) (+ (current-time) (seconds 9)))
)
((>= (current-time) (-> arg1 waypoint-time0))
(let ((a1-8
(bot-speech-list-method-9
(-> arg1 hal2-course bomb2-reminders)
arg1
(-> arg1 hal2-course speeches)
(speech-flags)
)
)
)
(if (>= a1-8 0)
(play-speech arg1 a1-8)
(logior! (-> arg1 bot-flags) (bot-flags bf24))
)
)
)
)
)
)
#f
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-force-fail-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 57
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(let ((v1-1 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-1 bytes 5) 1)
(set! (-> v1-1 bytes 6) 4)
(set! (-> v1-1 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-1) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer)) (when (scene-release? arg1)
(reset-warn-time! arg1)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 58 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
(none)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
(new 'static 'bot-waypoint
:waypoint-id 58
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(reset-warn-time! arg0)
(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-7 (-> arg0 actor-group 0 data 31 actor))
)
(t9-1
(if v1-7
(-> v1-7 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'waypoint))
(set! (-> a1-1 param 1) (the-as uint 58))
(let ((t9-2 send-event-function)
(v1-18 (-> arg0 actor-group 0 data 1 actor))
)
(t9-2
(if v1-18
(-> v1-18 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'waypoint))
(set! (-> a1-2 param 1) (the-as uint 58))
(let ((t9-3 send-event-function)
(v1-29 (-> arg0 actor-group 0 data 3 actor))
)
(t9-3
(if v1-29
(-> v1-29 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) 2)
(set! (-> a1-3 message) 'request)
(set! (-> a1-3 param 0) (the-as uint 'waypoint))
(set! (-> a1-3 param 1) (the-as uint 58))
(let ((t9-4 send-event-function)
(v1-40 (-> arg0 actor-group 0 data 2 actor))
)
(t9-4
(if v1-40
(-> v1-40 extra process)
)
a1-3
)
)
)
(set-setting! 'allow-look-around #f 0.0 0)
(let ((v1-46 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-46 bytes 5) 1)
(set! (-> v1-46 bytes 6) 4)
(set! (-> v1-46 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-46) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer)) (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-7 (-> arg1 actor-group 0 data 31 actor))
)
(when (t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-1
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 59 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-onslaught-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 59
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(reset-warn-time! arg0)
(remove-setting! 'allow-look-around)
(play-speech arg0 74)
(add-process *gui-control* arg0 (gui-channel art-load) (gui-action queue) "sewer-blow-up-statue-res" -99.0 0)
(set-vector! (-> arg0 test-plane) -0.67 0.0 0.74 2007695.4)
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) (process->ppointer pp))
(set! (-> a1-3 num-params) 2)
(set! (-> a1-3 message) 'request)
(set! (-> a1-3 param 0) (the-as uint 'waypoint))
(set! (-> a1-3 param 1) (the-as uint 58))
(let ((t9-4 send-event-function)
(v1-17 (-> arg0 actor-group 0 data 3 actor))
)
(t9-4
(if v1-17
(-> v1-17 extra process)
)
a1-3
)
)
)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) (process->ppointer pp))
(set! (-> a1-4 num-params) 2)
(set! (-> a1-4 message) 'request)
(set! (-> a1-4 param 0) (the-as uint 'waypoint))
(set! (-> a1-4 param 1) (the-as uint 58))
(let ((t9-5 send-event-function)
(v1-28 (-> arg0 actor-group 0 data 2 actor))
)
(t9-5
(if v1-28
(-> v1-28 extra process)
)
a1-4
)
)
)
(let ((v1-32 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-32 bytes 5) 1)
(set! (-> v1-32 bytes 6) 4)
(set! (-> v1-32 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-32) check-done)
(the-as
(function halt-wait-spot hal symbol)
(lambda ((arg0 object) (arg1 hal-sewer))
(let* ((v1-3 (-> arg1 actor-group 0 data 1 actor))
(s3-0 (if v1-3
(-> v1-3 extra process)
)
)
(v1-8 (-> arg1 actor-group 0 data 3 actor))
(s4-0 (if v1-8
(-> v1-8 extra process)
)
)
(v1-13 (-> arg1 actor-group 0 data 2 actor))
(s5-0 (if v1-13
(-> v1-13 extra process)
)
)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 2))
(send-event s5-0 'request 'waypoint 59)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 3))
(send-event s3-0 'request 'waypoint 59)
)
(if (time-elapsed? (-> arg1 waypoint-time0) (seconds 4))
(send-event s4-0 'request 'waypoint 59)
)
(when (not (channel-active? arg1 (gui-channel none)))
(cond
((and (not (speech-playing? arg1 75)) (time-elapsed? (-> arg1 waypoint-time0) (seconds 6)))
(play-speech arg1 75)
(play-speech arg1 76)
)
(else
(when (and (>= (vector4-dot (-> (the-as process-focusable s3-0) root trans) (the-as vector (-> arg1 test-plane))) 0.0)
(>= (vector4-dot (-> (the-as process-focusable s4-0) root trans) (the-as vector (-> arg1 test-plane))) 0.0)
(>= (vector4-dot (-> (the-as process-focusable s5-0) root trans) (the-as vector (-> arg1 test-plane))) 0.0)
)
(let ((a0-18 *target*))
(when (and a0-18
(and (>= (vector4-dot (get-trans a0-18 0) (the-as vector (-> arg1 test-plane))) 0.0)
(scene-play arg1 "sewer-blow-up-statue-res" #f)
)
)
(ai-task-control-method-12 (-> arg1 ai-ctrl) arg1)
(go-to-waypoint! arg1 67 #f)
(ai-task-control-method-10 (-> arg1 ai-ctrl) arg1)
#t
)
)
)
)
)
)
)
(none)
)
)
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far 'hal2-default-check-too-far
)
(new 'static 'bot-waypoint
:waypoint-id 67
:nav-mesh-index -1
:skip-to -1
:on-set (lambda ((arg0 hal-sewer))
(with-pp
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) (process->ppointer pp))
(set! (-> a1-0 num-params) 2)
(set! (-> a1-0 message) 'request)
(set! (-> a1-0 param 0) (the-as uint 'health-meter))
(set! (-> a1-0 param 1) (the-as uint #f))
(let ((t9-0 send-event-function)
(v1-7 (-> arg0 actor-group 0 data 1 actor))
)
(t9-0
(if v1-7
(-> v1-7 extra process)
)
a1-0
)
)
)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) (process->ppointer pp))
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'request)
(set! (-> a1-1 param 0) (the-as uint 'health-meter))
(set! (-> a1-1 param 1) (the-as uint #f))
(let ((t9-1 send-event-function)
(v1-17 (-> arg0 actor-group 0 data 3 actor))
)
(t9-1
(if v1-17
(-> v1-17 extra process)
)
a1-1
)
)
)
(let ((a1-2 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-2 from) (process->ppointer pp))
(set! (-> a1-2 num-params) 2)
(set! (-> a1-2 message) 'request)
(set! (-> a1-2 param 0) (the-as uint 'health-meter))
(set! (-> a1-2 param 1) (the-as uint #f))
(let ((t9-2 send-event-function)
(v1-27 (-> arg0 actor-group 0 data 2 actor))
)
(t9-2
(if v1-27
(-> v1-27 extra process)
)
a1-2
)
)
)
(let ((v1-31 (get-task-by-type (-> arg0 ai-ctrl) halt-wait-spot arg0)))
(set! (-> v1-31 bytes 5) 1)
(set! (-> v1-31 bytes 6) 4)
(set! (-> v1-31 bytes 4) 0)
(set! (-> (the-as halt-wait-spot v1-31) check-done)
(the-as (function halt-wait-spot hal symbol) (lambda () #f))
)
)
(none)
)
)
:on-update #f
:on-skipping-here #f
:check-too-far #f
)
)
:speeches (new 'static 'inline-array bot-speech-info 82
(new 'static 'bot-speech-info :hold-time #x5a :name "hal001")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal002")
(new 'static 'bot-speech-info :name "hal003")
(new 'static 'bot-speech-info :slave-id 1 :name "hal120")
(new 'static 'bot-speech-info :slave-id 2 :name "hal119")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal121")
(new 'static 'bot-speech-info :name "hal004")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal122")
(new 'static 'bot-speech-info :name "hal006")
(new 'static 'bot-speech-info :slave-id 2 :name "hal123")
(new 'static 'bot-speech-info :slave-id 1 :name "hal124")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal125")
(new 'static 'bot-speech-info :name "hal007")
(new 'static 'bot-speech-info :slave-id 2 :name "hal126")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 1 :name "hal127")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal008")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal009")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 1 :name "hal010")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal011")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal012")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 1 :name "hal013")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal045")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal044")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal048")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal049")
(new 'static 'bot-speech-info :slave-id 2 :name "hal084")
(new 'static 'bot-speech-info :slave-id 1 :name "hal030")
(new 'static 'bot-speech-info :name "hal050")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal051")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal053")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal054")
(new 'static 'bot-speech-info :slave-id 2 :name "hal085")
(new 'static 'bot-speech-info :name "hal052")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 1 :name "hal031")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal055")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal128")
(new 'static 'bot-speech-info :slave-id 1 :name "hal032")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal058")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal057")
(new 'static 'bot-speech-info :name "hal059")
(new 'static 'bot-speech-info :slave-id 2 :name "hal129")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal060")
(new 'static 'bot-speech-info :hold-time #x1e0 :slave-id 1 :name "hal021")
(new 'static 'bot-speech-info :hold-time #x1e0 :slave-id 1 :name "hal019")
(new 'static 'bot-speech-info :hold-time #xf0 :slave-id 2 :name "hal024")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal029")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal027")
(new 'static 'bot-speech-info :slave-id 1 :name "hal020")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal026")
(new 'static 'bot-speech-info :name "hal061")
(new 'static 'bot-speech-info :slave-id 1 :name "hal033")
(new 'static 'bot-speech-info :slave-id 2 :name "hal022")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal165")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal063")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal064")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal066")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal067")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal068")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :tuning-id 1 :name "hal086")
(new 'static 'bot-speech-info :tuning-id 1 :name "hal069")
(new 'static 'bot-speech-info :slave-id 2 :tuning-id 1 :name "hal087")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal070")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal065")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal071")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal072")
(new 'static 'bot-speech-info :hold-time #x5a :tuning-id 1 :name "hal073")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal047")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal046")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal074")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal182")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal094")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal108")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 1 :name "hal111")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal109")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal081")
(new 'static 'bot-speech-info :hold-time #x96 :name "hal082")
(new 'static 'bot-speech-info :hold-time #x5a :slave-id 2 :name "hal132")
(new 'static 'bot-speech-info :hold-time #x12c :name "hal097")
(new 'static 'bot-speech-info :hold-time #x2a3 :name "hal090")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal091")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal096")
(new 'static 'bot-speech-info :hold-time #x5a :name "hal114")
)
:speech-tunings (new 'static 'inline-array bot-speech-tuning 2
(new 'static 'bot-speech-tuning :fo-min 10 :fo-max 70 :fo-curve 11 :trans? #t)
(new 'static 'bot-speech-tuning :fo-min 30 :fo-max #x96 :fo-curve 11 :trans? #t)
)
:dirs (new 'static 'inline-array vector 8
(new 'static 'vector :x 1.0 :w 1.0)
(new 'static 'vector :z -1.0 :w 1.0)
(new 'static 'vector :x -1.0 :w 1.0)
(new 'static 'vector :z -1.0 :w 1.0)
(new 'static 'vector :x 0.62 :z -0.78 :w 1.0)
(new 'static 'vector :x 0.98 :z 0.19 :w 1.0)
(new 'static 'vector :z 1.0 :w 1.0)
(new 'static 'vector :x 1.0 :w 1.0)
)
:spots (new 'static 'inline-array bot-spot 5
(new 'static 'bot-spot :center (new 'static 'vector :x 4641423.5 :y -207175.69 :z 2093178.9 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 4739932.0 :y -207216.64 :z 2096578.5 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 4922614.0 :y -212992.0 :z 2115420.2 :w 9216.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 4707983.5 :y -256819.2 :z 1450844.1 :w 4096.0))
(new 'static 'bot-spot :center (new 'static 'vector :x 5692252.0 :y -373432.3 :z 1996718.1 :w 4096.0))
)
:sentries1-reminders (new 'static 'boxed-array :type int16 56 57)
:sentries2-reminders (new 'static 'boxed-array :type int16 63)
:bomb2-reminders (new 'static 'bot-speech-list
:last-local-index -1
:speech-indexes (new 'static 'boxed-array :type int16 73 71 72)
)
)
)
;; failed to figure out what this is:
(set! (-> *bot-course-table* course 5) *hal2-course*)