;;-*-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: #~%" (-> 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*)