;;-*-Lisp-*- (in-package goal) ;; definition of type pipe-grunt (deftype pipe-grunt (grunt) ((pipe-front vector :inline) (pipe-dir vector :inline) ) (:methods (pipe-grunt-method-186 (_type_) vector) ) ) ;; definition for method 3 of type pipe-grunt (defmethod inspect ((this pipe-grunt)) (when (not this) (set! this this) (goto cfg-4) ) (let ((t9-0 (method-of-type grunt inspect))) (t9-0 this) ) (format #t "~2Tpipe-front: #~%" (-> this pipe-front)) (format #t "~2Tpipe-dir: #~%" (-> this pipe-dir)) (label cfg-4) this ) ;; definition for method 66 of type pipe-grunt (defmethod go-ambush ((this pipe-grunt)) (go (method-of-object this ambush)) ) ;; definition for method 186 of type pipe-grunt (defmethod pipe-grunt-method-186 ((this pipe-grunt)) (let ((gp-0 (new 'static 'vector :x -1187061.8 :y -278487.03 :z 8090870.0 :w 1.0))) (let ((v1-0 (new 'static 'vector :x -1148026.9 :y -278487.03 :z 8112414.5 :w 1.0)) (s3-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) ) (vector-! s3-0 v1-0 gp-0) (let ((f30-0 (vector-length s3-0))) (vector-normalize! s3-0 1.0) (vector-rotate90-around-y! s4-0 s3-0) (vector-normalize-copy! (-> this event-param-point) s3-0 (rnd-float-range this 0.0 f30-0)) ) (vector-normalize! s4-0 (rnd-float-range this -16384.0 16384.0)) (vector+! (-> this event-param-point) (-> this event-param-point) s4-0) ) (vector+! (-> this event-param-point) (-> this event-param-point) gp-0) ) ) ;; failed to figure out what this is: (defstate ambush (pipe-grunt) :virtual #t :event enemy-event-handler :enter (behavior () (set-time! (-> self state-time)) (logior! (-> self enemy-flags) (enemy-flag alert)) (logclear! (-> self enemy-flags) (enemy-flag use-notice-distance directed directed-ready)) (let ((v1-7 (-> self root root-prim))) (set! (-> v1-7 prim-core collide-as) (-> self root backup-collide-as)) (set! (-> v1-7 prim-core collide-with) (-> self root backup-collide-with)) ) (logclear! (-> self draw status) (draw-control-status no-draw)) (let ((v1-10 self)) (set! (-> v1-10 enemy-flags) (the-as enemy-flag (logclear (-> v1-10 enemy-flags) (enemy-flag enemy-flag36)))) (set! (-> v1-10 nav callback-info) *nav-enemy-null-callback-info*) ) 0 (set-vector! (-> self pipe-front) -1198776.4 -224337.92 8087470.0 1.0) (vector-! (-> self pipe-dir) (-> self pipe-front) (-> self root trans)) (vector-normalize! (-> self pipe-dir) 1.0) (quaternion-look-at! (-> self root quat) (-> self pipe-dir) *up-vector*) (set! (-> self charge-anim) (-> *grunt-global-info* charge-anim (rnd-int-count self 3))) (vector-normalize-copy! (-> self root transv) (-> self pipe-dir) (-> self charge-anim travel-speed)) (let ((gp-0 (new 'stack-no-clear 'vector))) (vector-rotate90-around-y! gp-0 (-> self pipe-dir)) (vector-normalize! gp-0 (rnd-float-range self -4096.0 4096.0)) (move-by-vector! (-> self root) gp-0) ) ) :trans (behavior () (let ((gp-0 (new 'stack-no-clear 'vector))) (set! (-> gp-0 quad) (-> self root trans quad)) (vector-v++! gp-0 (-> self root transv)) (move-to-point! (-> self root) gp-0) (let ((v1-4 (new 'stack-no-clear 'vector))) (vector-! v1-4 (-> self pipe-front) gp-0) (when (< (vector-dot v1-4 (-> self pipe-dir)) 0.0) (pipe-grunt-method-186 self) (set! (-> self enemy-flags) (the-as enemy-flag (logclear (-> self enemy-flags) (enemy-flag jump-check-blocked))) ) (send-event self 'jump 0 (-> self event-param-point)) ) ) ) ) :code (behavior () (let ((f30-0 (rnd-float-range self 0.9 1.1))) (ja-channel-push! 1 0) (until #f (let ((a1-2 (-> self draw art-group data (-> self charge-anim anim-index)))) (ja-no-eval :group! a1-2 :num! (seek! max f30-0) :frame-num 0.0) ) (until (ja-done? 0) (suspend) (ja :num! (seek! max f30-0)) ) ) ) #f ) :post nav-enemy-simple-post )