decomp: Re-attempting previously blocked state decomp files (#907)

* blocked: `part-tester` - `code` handler thinks it returns nothing

* blocked: `crates` finished but `go` is returning none causing issues

* blocked: `(event ram-boss-idle)::snow-ram-boss` expression building fails due to delay slot issue

* decomp: finish `snow-ram` | `seagull` blocked, new static data issue

* decomp: finish `snow-bumper`

* stuck: `snow-ball` close, can't figure out a type made on the stack

* decomp: finish `spider-egg`

* decomp: finish `puffer`

* decomp: finish `driller-lurker`

* decomp: finish `dark-crystal`

* stuck: `kermit` - mostly done but stuck on a joint related callback arg

* decomp: finish `gnawer`

* decomp: finish `mother-spider-egg`

* decomp: finish `swamp-blimp`

* stuck: `mistycannon` prebind function signature

* decomp: finish `citb-plat`

* decomp: finish `darkvine`

* blocked: `jungle-mirrors` - issues with `link` macro

* decomp: finish `launcherdoor`

* decomp: finish `quicksandlurker` except for 1 unused function

* stuck: `balloonlurker` - `(code balloonlurker-mine-explode)` has some weird joint related code

* stuck: need to decompile an asm func in `orbit-plat`

* decomp: finish `voicebox`

* blocked: `mother-spider` has issues where `go` returns none

* decomp: finish `bully`

* decomp: finish `seagull`

* fixed up after merge conflicts

* decomp: finish `jungle-mirrors`

* update gsrc

* double checked files, fixed issues

* decomp: revert change to projectile methods

* decomp: some more fixes

* address feedback

* fix up remaining method calls in `cam-states`

* fix jungle-mirrors
This commit is contained in:
Tyler Wilding
2021-12-11 13:27:24 -05:00
committed by GitHub
parent fe9c5c10d1
commit 7edfc8bcec
84 changed files with 54467 additions and 19070 deletions
+1 -1
View File
@@ -384,7 +384,7 @@
(if *display-cam-los-debug*
(format *stdcon* "ride edge~%")
)
(let ((s4-2 (new 'stack-no-clear 'collide-mesh-cache-tri))
(let ((s4-2 (new 'stack-no-clear 'collide-tri-result))
(gp-5 (new 'stack-no-clear 'vector))
(s5-2 (new 'stack-no-clear 'vector))
)
+10 -10
View File
@@ -1325,7 +1325,7 @@
(defun cam-string-find-position-rel! ((arg0 vector))
(let ((s5-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
(s3-0 (new 'stack-no-clear 'bone))
(s3-0 (new 'stack-no-clear 'collide-tri-result))
(f30-0 0.0)
(s2-0 (new 'stack-no-clear 'matrix))
)
@@ -1344,7 +1344,7 @@
(the-as float 409.6)
#x4a09
(the-as process #f)
(the-as collide-mesh-cache-tri s3-0)
s3-0
2
)
0.0
@@ -2608,7 +2608,7 @@
;; definition for function cam-string-find-hidden
;; INFO: Return type mismatch int vs none.
(defbehavior cam-string-find-hidden camera-slave ()
(let ((s4-0 (new 'stack-no-clear 'collide-mesh-cache-tri))
(let ((s4-0 (new 'stack-no-clear 'collide-tri-result))
(s5-0 (new 'stack-no-clear 'vector))
(gp-0 (new 'stack-no-clear 'vector))
)
@@ -2696,7 +2696,7 @@
(s5-2 (new-stack-vector0))
(gp-2 0)
)
(let ((s4-2 (new 'stack-no-clear 'collide-mesh-cache-tri))
(let ((s4-2 (new 'stack-no-clear 'collide-tri-result))
(s3-1 (new 'stack-no-clear 'vector))
)
(when *debug-segment*
@@ -2748,7 +2748,7 @@
)
(vector+float*! (-> self string-trans) (-> self string-trans) s5-2 f0-24)
)
(vector-! s3-1 (-> self string-trans) (-> s4-2 normal))
(vector-! s3-1 (-> self string-trans) (-> s4-2 intersect))
(vector-normalize! s3-1 (the-as float 1.0))
(vector-flatten! (-> self velocity) (-> self velocity) s3-1)
(set! f30-2 (- f30-2 (* f30-2 f28-1)))
@@ -3012,7 +3012,7 @@
(vector+! (-> self desired-pos) (-> self desired-pos) (-> *camera* tpos-curr-adj))
(set! (-> self string-trans quad) (-> self desired-pos quad))
(vector-reset! (-> self velocity))
(let ((s4-0 (new 'stack-no-clear 'collide-mesh-cache-tri))
(let ((s4-0 (new 'stack-no-clear 'collide-tri-result))
(s5-0 (new 'stack-no-clear 'vector))
(gp-1 (new 'stack-no-clear 'vector))
)
@@ -3155,7 +3155,7 @@
(s4-0 4)
(s2-0 0)
)
(let ((s3-0 (new 'stack-no-clear 'collide-mesh-cache-tri)))
(let ((s3-0 (new 'stack-no-clear 'collide-tri-result)))
(while (and
(< 0.01 f30-1)
(and (< (-> *CAMERA-bank* min-detectable-velocity) (vector-length (-> self velocity))) (> s4-0 0))
@@ -3180,7 +3180,7 @@
(cond
((>= f28-0 0.0)
(vector+float*! (-> self trans) (-> self trans) gp-2 f28-0)
(set! (-> s5-0 quad) (-> s3-0 bbox4w min quad))
(set! (-> s5-0 quad) (-> s3-0 normal quad))
(vector-flatten! (-> self velocity) (-> self velocity) s5-0)
(set! f30-1 (- f30-1 (* f30-1 f28-0)))
(set! s2-0 1)
@@ -3439,7 +3439,7 @@
(let ((f30-2 1.0)
(gp-3 (new-stack-vector0))
(s5-3 4)
(s4-3 (new 'stack-no-clear 'collide-mesh-cache-tri))
(s4-3 (new 'stack-no-clear 'collide-tri-result))
)
(while (and
(< 0.01 f30-2)
@@ -3457,7 +3457,7 @@
(cond
((>= f28-0 0.0)
(vector+float*! (-> self trans) (-> self trans) gp-3 f28-0)
(vector-flatten! (-> self velocity) (-> self velocity) (the-as vector (-> s4-3 bbox4w)))
(vector-flatten! (-> self velocity) (-> self velocity) (-> s4-3 normal))
(set! f30-2 (- f30-2 (* f30-2 f28-0)))
(let ((s3-2 (new-stack-vector0)))
(vector-! s3-2 (-> self trans) (-> *camera* tpos-curr-adj))
+51 -51
View File
@@ -427,57 +427,57 @@
;; definition of type camera-slave
(deftype camera-slave (process)
((trans vector :inline :offset-assert 112)
(fov float :offset-assert 128)
(fov0 float :offset-assert 132)
(fov1 float :offset-assert 136)
(fov-index cam-index :inline :offset-assert 144)
(tracking cam-rotation-tracker :inline :offset-assert 192)
(view-off-param float :offset-assert 400)
(unknown-symbol symbol :offset 412)
(view-off vector :inline :offset-assert 416)
(min-z-override float :offset-assert 432)
(view-flat vector :inline :offset-assert 448)
(string-vel-dir uint32 :offset-assert 464)
(string-trans vector :inline :offset-assert 480)
(position-spline tracking-spline :inline :offset-assert 496)
(pivot-pt vector :inline :offset-assert 2144)
(pivot-rad float :offset-assert 2160)
(circular-follow vector :inline :offset-assert 2176)
(max-angle-offset float :offset-assert 2192)
(max-angle-curr float :offset-assert 2196)
(options uint32 :offset-assert 2200)
(cam-entity entity :offset-assert 2204)
(velocity vector :inline :offset-assert 2208)
(desired-pos vector :inline :offset-assert 2224)
(time-dist-too-far uint32 :offset-assert 2240)
(los-state slave-los-state :offset-assert 2244)
(good-point vector :inline :offset-assert 2256)
(los-tgt-spline-pt int32 :offset-assert 2272)
(los-tgt-spline-pt-incarnation int32 :offset-assert 2276)
(los-last-pos vector :inline :offset-assert 2288)
(intro-curve curve :inline :offset-assert 2304)
(intro-offset vector :inline :offset-assert 2336)
(intro-t float :offset-assert 2352)
(intro-t-step float :offset-assert 2356)
(outro-exit-value float :offset-assert 2360)
(spline-exists basic :offset-assert 2364)
(spline-curve curve :inline :offset-assert 2368)
(spline-offset vector :inline :offset-assert 2400)
(index cam-index :inline :offset-assert 2416)
(saved-pt vector :inline :offset-assert 2464)
(spline-tt float :offset-assert 2480)
(spline-follow-dist float :offset-assert 2484)
(change-event-from uint32 :offset-assert 2488)
(enter-has-run symbol :offset-assert 2492)
(blend-from-type uint64 :offset-assert 2496)
(blend-to-type uint64 :offset-assert 2504)
(have-phony-joystick basic :offset-assert 2512)
(phony-joystick-x float :offset-assert 2516)
(phony-joystick-y float :offset-assert 2520)
(string-min-val vector :inline :offset-assert 2528)
(string-max-val vector :inline :offset-assert 2544)
(string-val-locked basic :offset-assert 2560)
((trans vector :inline :offset-assert 112)
(fov float :offset-assert 128)
(fov0 float :offset-assert 132)
(fov1 float :offset-assert 136)
(fov-index cam-index :inline :offset-assert 144)
(tracking cam-rotation-tracker :inline :offset-assert 192)
(view-off-param float :offset-assert 400)
(unknown-symbol symbol :offset 412)
(view-off vector :inline :offset-assert 416)
(min-z-override float :offset-assert 432)
(view-flat vector :inline :offset-assert 448)
(string-vel-dir uint32 :offset-assert 464)
(string-trans vector :inline :offset-assert 480)
(position-spline tracking-spline :inline :offset-assert 496)
(pivot-pt vector :inline :offset-assert 2144)
(pivot-rad float :offset-assert 2160)
(circular-follow vector :inline :offset-assert 2176)
(max-angle-offset float :offset-assert 2192)
(max-angle-curr float :offset-assert 2196)
(options uint32 :offset-assert 2200)
(cam-entity entity :offset-assert 2204)
(velocity vector :inline :offset-assert 2208)
(desired-pos vector :inline :offset-assert 2224)
(time-dist-too-far uint32 :offset-assert 2240)
(los-state slave-los-state :offset-assert 2244)
(good-point vector :inline :offset-assert 2256)
(los-tgt-spline-pt int32 :offset-assert 2272)
(los-tgt-spline-pt-incarnation int32 :offset-assert 2276)
(los-last-pos vector :inline :offset-assert 2288)
(intro-curve curve :inline :offset-assert 2304)
(intro-offset vector :inline :offset-assert 2336)
(intro-t float :offset-assert 2352)
(intro-t-step float :offset-assert 2356)
(outro-exit-value float :offset-assert 2360)
(spline-exists basic :offset-assert 2364)
(spline-curve curve :inline :offset-assert 2368)
(spline-offset vector :inline :offset-assert 2400)
(index cam-index :inline :offset-assert 2416)
(saved-pt vector :inline :offset-assert 2464)
(spline-tt float :offset-assert 2480)
(spline-follow-dist float :offset-assert 2484)
(change-event-from (pointer process-drawable) :offset-assert 2488)
(enter-has-run symbol :offset-assert 2492)
(blend-from-type uint64 :offset-assert 2496)
(blend-to-type uint64 :offset-assert 2504)
(have-phony-joystick basic :offset-assert 2512)
(phony-joystick-x float :offset-assert 2516)
(phony-joystick-y float :offset-assert 2520)
(string-min-val vector :inline :offset-assert 2528)
(string-max-val vector :inline :offset-assert 2544)
(string-val-locked basic :offset-assert 2560)
)
:heap-base #x9a0
:method-count-assert 14
+2 -2
View File
@@ -947,11 +947,11 @@
(cond
(*camera*
(set! (-> self options) (-> *camera* slave-options))
(set! (-> self change-event-from) (-> *camera* changer))
(set! (-> self change-event-from) (the-as (pointer process-drawable) (-> *camera* changer)))
)
(else
(set! (-> self options) (the-as uint 0))
(set! (-> self change-event-from) (the-as uint #f))
(set! (-> self change-event-from) (the-as (pointer process-drawable) #f))
)
)
(cond
+1 -1
View File
@@ -180,7 +180,7 @@
:flag-assert #x2100008670
(:methods
(dummy-9 (_type_) none 9)
(dummy-10 (_type_ vector vector float int process collide-mesh-cache-tri int) float 10)
(dummy-10 (_type_ vector vector float int process collide-tri-result int) float 10)
(dummy-11 (_type_ collide-using-spheres-params) none 11)
(fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12)
(dummy-13 (_type_ bounding-box uint process-drawable uint) none 13)
+1 -1
View File
@@ -20,7 +20,7 @@
(deftype part-tester (process)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(old-group basic :offset-assert 120)
(old-group sparticle-launch-group :offset-assert 120)
)
:heap-base #x100
:method-count-assert 14
+294
View File
@@ -0,0 +1,294 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type camera-voicebox
(deftype camera-voicebox (camera-slave)
()
:heap-base #x9a0
:method-count-assert 14
:size-assert #xa04
:flag-assert #xe09a00a04
)
;; definition for method 3 of type camera-voicebox
(defmethod inspect camera-voicebox ((obj camera-voicebox))
(let ((t9-0 (method-of-type camera-slave inspect)))
(t9-0 obj)
)
obj
)
;; definition of type voicebox
(deftype voicebox (process-drawable)
((parent-override (pointer camera-voicebox) :offset 12)
(base-trans vector :inline :offset-assert 176)
(seeker cam-float-seeker :inline :offset-assert 192)
(blend float :offset-assert 216)
(twist float :offset-assert 220)
(hint handle :offset-assert 224)
)
:heap-base #x80
:method-count-assert 23
:size-assert #xe8
:flag-assert #x17008000e8
(:methods
(enter () _type_ :state 20)
(idle () _type_ :state 21)
(exit () _type_ :state 22)
)
)
;; definition for method 3 of type voicebox
(defmethod inspect voicebox ((obj voicebox))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tbase-trans: ~`vector`P~%" (-> obj base-trans))
(format #t "~T~Tseeker: #<cam-float-seeker @ #x~X>~%" (-> obj seeker))
(format #t "~T~Tblend: ~f~%" (-> obj blend))
(format #t "~T~Ttwist: ~f~%" (-> obj twist))
(format #t "~T~Thint: ~D~%" (-> obj hint))
obj
)
;; failed to figure out what this is:
(defstate empty-state (process)
:code
(the-as (function none :behavior process) nothing)
)
;; failed to figure out what this is:
(defskelgroup *voicebox-sg* speaker
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 4)
:longest-edge (meters 0)
)
;; definition for function voicebox-track
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defbehavior voicebox-track voicebox ()
(let ((gp-0 (new 'stack-no-clear 'vector))
(s5-0 (new 'stack-no-clear 'vector))
)
(set! (-> gp-0 quad) (-> self parent-override 0 trans quad))
(set! (-> s5-0 quad) (-> (target-pos 68) quad))
(when *target*
(let ((a2-0 (vector-z-quaternion! (new-stack-vector0) (-> *target* control unknown-quaternion00))))
(vector+float*! s5-0 s5-0 a2-0 (* -16384.0 (- 1.0 (-> self blend))))
)
)
(vector-lerp! (-> self root trans) gp-0 s5-0 (-> self blend))
)
(+!
(-> self root trans y)
(* 1638.4 (sin (* 54.613335 (the float (mod (-> *display* base-frame-counter) 1200)))))
)
(let ((gp-1 (new 'stack-no-clear 'quaternion)))
(forward-up->quaternion
gp-1
(vector-normalize! (vector-! (new 'stack-no-clear 'vector) (target-pos 37) (-> self root trans)) 1.0)
(new 'static 'vector :y 1.0 :w 1.0)
)
(rotate-toward-orientation! (-> self root) gp-1 65536.0 5461.3335)
)
(when *target*
(let* ((gp-2 (-> *target* control))
(s4-2 (-> self root trans))
(f0-8
(deg-diff (y-angle gp-2) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-2 (-> gp-2 trans))))
)
)
(if (< 0.0 f0-8)
(set! (-> self twist) (seek (-> self twist) -0.4 (* 0.3 (-> *display* seconds-per-frame))))
(set! (-> self twist) (seek (-> self twist) 0.4 (* 0.3 (-> *display* seconds-per-frame))))
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) self)
(set! (-> a1-9 num-params) 0)
(set! (-> a1-9 message) 'blocked-side?)
(case (send-event-function (ppointer->process (-> self parent-override)) a1-9)
((1)
(set! (-> self twist) 0.5)
)
((2)
(set! (-> self twist) -0.5)
)
((3)
(set! (-> self twist) 0.0)
)
)
)
(send-event (ppointer->process (-> self parent-override)) 'joystick (-> self twist) -1.0)
)
(set! (-> self root scale x) (lerp-scale 1.0 0.0 (-> self blend) 0.8 1.0))
(set! (-> self root scale y) (-> self root scale x))
(set! (-> self root scale z) (-> self root scale x))
0
(none)
)
;; failed to figure out what this is:
(defstate enter (voicebox)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2
(('die)
(go-virtual exit)
)
)
)
:trans
(behavior ()
(voicebox-track)
(if (< 0.1 (-> self blend))
(point-toward-point-clear-roll-pitch! (-> self root) (target-pos 0))
)
(none)
)
:code
(behavior ()
(set-setting! *setting-control* self 'sound-flava #f 20.0 6)
(if (and *target* (logtest? (-> *target* control root-prim prim-core action) 512))
(send-event
(ppointer->process (-> self parent-override))
'set-dist
(new 'static 'vector :z 8192.0 :w 1.0)
(new 'static 'vector :y 20480.0 :z 12288.0 :w 1.0)
)
(send-event
(ppointer->process (-> self parent-override))
'set-dist
(new 'static 'vector :z 16384.0 :w 1.0)
(new 'static 'vector :y 20480.0 :z 40960.0 :w 1.0)
)
)
(init-cam-float-seeker (-> self seeker) 1.0 0.01 0.022222223 0.1)
(set! (-> self seeker target) 0.0)
(while (< 0.0001 (-> self blend))
(update! (-> self seeker) 0.0)
(set! (-> self blend) (-> self seeker value))
(suspend)
)
(set! (-> self blend) 0.0)
(go-virtual idle)
(none)
)
:post
(the-as (function none :behavior voicebox) ja-post)
)
;; failed to figure out what this is:
(defstate idle (voicebox)
:virtual #t
:event
(-> (method-of-type voicebox enter) event)
:trans
voicebox-track
:code
(behavior ()
(while #t
(suspend)
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) 1.0)
(joint-control-channel-group-eval! a0-0 (the-as art-joint-anim #f) num-func-loop!)
)
)
(none)
)
:post
(the-as (function none :behavior voicebox) ja-post)
)
;; failed to figure out what this is:
(defstate exit (voicebox)
:virtual #t
:trans
voicebox-track
:code
(behavior ()
(clear-pending-settings-from-process *setting-control* self 'sound-flava)
(set! (-> self state-time) (-> *display* base-frame-counter))
(set! (-> self seeker target) 1.0)
(while (and (< (-> self blend) 0.9999) (not (and
(not (handle->process (-> self hint)))
(>= (- (-> *display* base-frame-counter) (-> self state-time)) 15)
(-> *setting-control* current hint)
)
)
)
(update! (-> self seeker) 0.0)
(set! (-> self blend) (-> self seeker value))
(suspend)
)
(set! (-> self blend) 1.0)
(send-event (ppointer->process (-> self parent-override)) 'go empty-state)
(suspend)
0
(none)
)
:post
(the-as (function none :behavior voicebox) ja-post)
)
;; definition for function voicebox-init-by-other
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defbehavior voicebox-init-by-other voicebox ((arg0 vector) (arg1 handle))
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self hint) arg1)
(set! (-> self root trans quad) (-> arg0 quad))
(set! (-> self base-trans quad) (-> arg0 quad))
(initialize-skeleton self *voicebox-sg* '())
(set! (-> self blend) 1.0)
(go-virtual enter)
(none)
)
;; failed to figure out what this is:
(defstate cam-voicebox (camera-voicebox)
:event
(-> cam-string event)
:enter
(-> cam-string enter)
:trans
(behavior ()
(if (zero? (logand (-> *camera* master-options) 2))
(deactivate self)
)
(none)
)
:code
(-> cam-string code)
)
;; definition for function voicebox-spawn
(defun voicebox-spawn ((arg0 process) (arg1 vector))
(with-pp
(let* ((s3-0 (get-process *camera-dead-pool* camera-voicebox #x4000))
(s4-0 (when s3-0
(let ((t9-1 (method-of-type camera-voicebox activate)))
(t9-1 (the-as camera-voicebox s3-0) arg0 'camera-voicebox (the-as pointer #x70004000))
)
(run-now-in-process s3-0 cam-slave-init cam-voicebox #f)
(-> s3-0 ppointer)
)
)
)
(when s4-0
(let ((s5-1 (get-process *default-dead-pool* voicebox #x4000)))
(when s5-1
(let ((t9-4 (method-of-type voicebox activate)))
(t9-4 (the-as voicebox s5-1) (ppointer->process s4-0) 'voicebox (the-as pointer #x70004000))
)
(run-now-in-process s5-1 voicebox-init-by-other arg1 (process->handle pp))
(-> s5-1 ppointer)
)
)
)
)
)
)
+2 -2
View File
@@ -377,7 +377,7 @@
(point-in-bounds? (_type_ vector) symbol 10)
(dummy-11 (_type_ vector) none 11)
(dummy-12 () none 12)
(dummy-13 () none 13)
(dummy-13 (_type_ vector vector) vector 13)
(set-current-poly! (_type_ nav-poly) none 14)
(set-target-pos! (_type_ vector) none 15)
(dummy-16 (_type_ vector) nav-poly 16)
@@ -391,7 +391,7 @@
(dummy-24 (_type_ float clip-travel-vector-to-mesh-return-info) none 24)
(dummy-25 (_type_ vector float) symbol 25)
(dummy-26 (_type_) none 26)
(dummy-27 () none 27)
(dummy-27 (_type_) none 27)
(dummy-28 (_type_ int) none 28)
(should-display? (_type_) symbol 29)
(dummy-30 () none 30)
+6 -6
View File
@@ -1843,9 +1843,9 @@
(-> self control unknown-vector11)
(-> self control unknown-vector14)
)
(let ((a1-3 (new 'stack-no-clear 'collide-edge-hold-list)))
(set! (-> a1-3 num-allocs) (the-as uint 1))
(set! (-> a1-3 num-attempts) (the-as uint *touching-list*))
(let ((a1-3 (new 'stack-no-clear 'overlaps-others-params)))
(set! (-> a1-3 options) (the-as uint 1))
(set! (-> a1-3 tlist) *touching-list*)
(dummy-40 (-> self control) a1-3)
)
(post-flag-setup)
@@ -1955,9 +1955,9 @@
(-> self control unknown-vector11)
(-> self control unknown-vector14)
)
(let ((a1-2 (new 'stack-no-clear 'collide-edge-hold-list)))
(set! (-> a1-2 num-allocs) (the-as uint 1))
(set! (-> a1-2 num-attempts) (the-as uint *touching-list*))
(let ((a1-2 (new 'stack-no-clear 'overlaps-others-params)))
(set! (-> a1-2 options) (the-as uint 1))
(set! (-> a1-2 tlist) *touching-list*)
(dummy-40 (-> self control) a1-2)
)
(target-calc-camera-pos)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -197,7 +197,7 @@ nav-enemy-default-event-handler
;; definition for function babak-with-cannon-compute-ride-point
;; Used lq/sq
(defun babak-with-cannon-compute-ride-point ((arg0 mistycannon) (arg1 vector))
(set! (-> arg1 quad) (-> arg0 root trans quad))
(set! (-> arg1 quad) (-> arg0 root-override trans quad))
(let ((a1-4 (new 'static 'vector :y 18149.377 :z -17289.217 :w 1.0))
(a2-0 (-> arg0 node-list data 3 bone transform))
)
+252
View File
@@ -0,0 +1,252 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type launcherdoor
(deftype launcherdoor (process-drawable)
((root-override collide-shape :offset 112)
(notify-player-passed-thru? symbol :offset-assert 176)
(thresh-y float :offset-assert 180)
(open-speed float :offset-assert 184)
(close-speed float :offset-assert 188)
(load-mode symbol :offset-assert 192)
)
:heap-base #x60
:method-count-assert 20
:size-assert #xc4
:flag-assert #x14006000c4
)
;; definition for method 3 of type launcherdoor
(defmethod inspect launcherdoor ((obj launcherdoor))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tnotify-player-passed-thru?: ~A~%" (-> obj notify-player-passed-thru?))
(format #t "~T~Tthresh-y: ~f~%" (-> obj thresh-y))
(format #t "~T~Topen-speed: ~f~%" (-> obj open-speed))
(format #t "~T~Tclose-speed: ~f~%" (-> obj close-speed))
(format #t "~T~Tload-mode: ~A~%" (-> obj load-mode))
obj
)
;; failed to figure out what this is:
(defskelgroup *launcherdoor-sg* launcherdoor
0
-1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 0 0 4)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defskelgroup *launcherdoor-maincave-sg* launcherdoor-maincave
0
-1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 0 0 4)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate launcherdoor-closed (launcherdoor)
:code
(behavior ((arg0 symbol))
(if (not arg0)
(sound-play-by-name (static-sound-name "ldoor-close") (new-sound-id) 1024 0 0 1 #t)
)
(when *target*
(case (-> *target* current-level name)
(('jungle 'jungleb)
(send-event *target* 'no-load-wait 6000)
)
)
)
(restore-collide-with-as (-> self root-override))
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 param 0) 0.0)
(set! (-> a0-7 param 1) 1.0)
(joint-control-channel-group! a0-7 (the-as art-joint-anim #f) num-func-seek!)
)
(when arg0
(let ((v1-22 (-> self skel root-channel 0)))
(set! (-> v1-22 num-func) num-func-identity)
(set! (-> v1-22 frame-num) 0.0)
)
(set! (-> self draw force-lod) 1)
)
(suspend)
(while #t
(if (and
*target*
(= (-> *target* control unknown-surface00 name) 'launch-jump)
(< (-> *target* control trans y) (-> self thresh-y))
)
(go launcherdoor-open #f)
)
(let ((a0-13 (-> self skel root-channel 0)))
(set! (-> a0-13 param 0) 0.0)
(set! (-> a0-13 param 1) (-> self close-speed))
(joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-seek!)
)
(suspend)
(when (ja-done? 0)
(set! (-> self draw force-lod) 1)
(when (-> self notify-player-passed-thru?)
(set! (-> self notify-player-passed-thru?) #f)
(let* ((gp-1 (-> self entity))
(s5-1 (entity-actor-count gp-1 'alt-actor))
)
(dotimes (s4-1 s5-1)
(let ((v1-43 (entity-actor-lookup gp-1 'alt-actor s4-1)))
(if v1-43
(send-event
(if v1-43
(-> v1-43 extra process)
)
'notify
)
)
)
)
)
(case (-> self load-mode)
(('jungle)
(load-state-want-levels 'village1 'jungle)
(load-state-want-display-level 'village1 'display)
)
)
)
)
)
(none)
)
:post
(the-as (function none :behavior launcherdoor) ja-post)
)
;; failed to figure out what this is:
(defstate launcherdoor-open (launcherdoor)
:code
(behavior ((arg0 symbol))
(if (not arg0)
(sound-play-by-name (static-sound-name "ldoor-open") (new-sound-id) 1024 0 0 1 #t)
)
(set! (-> self draw force-lod) 0)
(clear-collide-with-as (-> self root-override))
(let ((a0-4 (-> self skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1)))
(set! (-> a0-4 param 1) 1.0)
(joint-control-channel-group! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
(when arg0
(let ((v1-16 (-> self skel root-channel 0)))
(set! (-> v1-16 num-func) num-func-identity)
(set! (-> v1-16 frame-num) (the float (+ (-> v1-16 frame-group data 0 length) -1)))
)
)
(while #t
(when (or
(not *target*)
(!= (-> *target* control unknown-surface00 name) 'launch-jump)
(< (+ 4096.0 (-> self root-override trans y)) (-> *target* control trans y))
)
(when (and *target* (< (-> self thresh-y) (-> *target* control trans y)))
(let ((a1-3 (res-lump-struct (-> self entity) 'continue-name structure)))
(when a1-3
(let ((v1-36 (set-continue! *game-info* (the-as basic a1-3))))
(load-commands-set! *level* (-> v1-36 load-commands))
)
)
)
(set! (-> self notify-player-passed-thru?) #t)
)
(go launcherdoor-closed #f)
)
(let ((a0-16 (-> self skel root-channel 0)))
(set! (-> a0-16 param 0) (the float (+ (-> a0-16 frame-group data 0 length) -1)))
(set! (-> a0-16 param 1) (-> self open-speed))
(joint-control-channel-group-eval! a0-16 (the-as art-joint-anim #f) num-func-seek!)
)
(suspend)
)
(none)
)
:post
(the-as (function none :behavior launcherdoor) ja-post)
)
;; definition for method 11 of type launcherdoor
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! launcherdoor ((obj launcherdoor) (arg0 entity-actor))
(set! (-> obj notify-player-passed-thru?) #f)
(set! (-> obj open-speed) 4.0)
(set! (-> obj close-speed) 2.0)
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set! (-> s3-0 transform-index) 0)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0)
(set-root-prim! s4-0 s3-0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(cond
((= (-> (if (-> obj entity)
(-> obj entity extra level)
(-> *level* level-default)
)
name
)
'maincave
)
(set! (-> obj close-speed) 4.0)
(initialize-skeleton obj *launcherdoor-maincave-sg* '())
(ja-channel-set! 1)
(let ((s5-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> obj draw art-group data 3))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
)
(else
(initialize-skeleton obj *launcherdoor-sg* '())
(ja-channel-set! 1)
(let ((s5-2 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-2
(the-as art-joint-anim (-> obj draw art-group data 3))
num-func-identity
)
(set! (-> s5-2 frame-num) 0.0)
)
)
)
(transform-post)
(case (-> obj entity extra level name)
(('jungle)
(set! (-> obj draw shadow-mask) (the-as uint 28))
)
)
(set! (-> obj load-mode) (-> (if (-> obj entity)
(-> obj entity extra level)
(-> *level* level-default)
)
name
)
)
(set! (-> obj thresh-y) (+ -81920.0 (-> obj root-override trans y)))
(if (and *target* (= (-> *target* control unknown-surface00 name) 'launch-jump))
(go launcherdoor-open #t)
(go launcherdoor-closed #t)
)
(none)
)
+1 -1
View File
@@ -3933,7 +3933,7 @@
(when (and arg1 (nonzero? (-> self looping-sound 0)))
(update! (-> self looping-sound 0))
(when (and *target* (zero? (logand (-> *target* state-flags) #x80f8)))
(let ((t2-0 (new 'stack-no-clear 'collide-mesh-cache-tri))
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result))
(a2-0 (new 'stack-no-clear 'vector))
)
(vector-! a2-0 gp-0 s4-0)
+448
View File
@@ -0,0 +1,448 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type darkvine
(deftype darkvine (process-drawable)
((root-override collide-shape :offset 112)
(speed float :offset-assert 176)
(tip-index int8 :offset-assert 180)
(dangerous symbol :offset-assert 184)
(vulnerable symbol :offset-assert 188)
(hit-player symbol :offset-assert 192)
(touch-time uint64 :offset-assert 200)
(player-attack-id int32 :offset-assert 208)
)
:heap-base #x70
:method-count-assert 20
:size-assert #xd4
:flag-assert #x14007000d4
)
;; definition for method 3 of type darkvine
(defmethod inspect darkvine ((obj darkvine))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tspeed: ~f~%" (-> obj speed))
(format #t "~T~Ttip-index: ~D~%" (-> obj tip-index))
(format #t "~T~Tdangerous: ~A~%" (-> obj dangerous))
(format #t "~T~Tvulnerable: ~A~%" (-> obj vulnerable))
(format #t "~T~Thit-player: ~A~%" (-> obj hit-player))
(format #t "~T~Ttouch-time: ~D~%" (-> obj touch-time))
(format #t "~T~Tplayer-attack-id: ~D~%" (-> obj player-attack-id))
obj
)
;; definition for method 12 of type darkvine
(defmethod run-logic? darkvine ((obj darkvine))
(or
(zero? (logand (-> obj mask) (process-mask actor-pause)))
(or
(and
(nonzero? (-> obj draw))
(logtest? (-> obj draw status) 8)
(>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance))
(vector-vector-distance (-> obj root-override trans) (math-camera-pos))
)
)
(and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel)))
(and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16))
)
)
)
;; failed to figure out what this is:
(defskelgroup *darkvine-sg* darkvine
0
3
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 2 0 3.5)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 175)
(new 'static 'sparticle-launch-group
:length 3
:duration #x96
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-darkvine-puffs"
:launcher
(new 'static 'inline-array sparticle-group-item 3 (sp-item 800) (sp-item 801) (sp-item 802))
:bounds
(new 'static 'sphere :y 8192.0 :w 12288.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 800) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 19
(sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2))
(sp-flt spt-num 0.8)
(sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0)
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 30.0 20.0 1.0)
(sp-rnd-flt spt-g 25.0 10.0 1.0)
(sp-rnd-flt spt-b 10.0 5.0 1.0)
(sp-rnd-flt spt-a 0.0 32.0 1.0)
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
(sp-flt spt-vel-y (meters 0.013333334))
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
(sp-flt spt-fade-a 0.1882353)
(sp-flt spt-accel-y -2.048)
(sp-int spt-timer 255)
(sp-cpuinfo-flags bit2 bit12)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 802) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 18
(sp-tex spt-texture (new 'static 'texture-id :index #x1d :page #x2))
(sp-flt spt-num 0.25)
(sp-rnd-flt spt-x (meters 0.0) (meters 0.6) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.2) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 45.0 45.0 1.0)
(sp-rnd-flt spt-g 45.0 10.0 1.0)
(sp-rnd-flt spt-b 20.0 6.0 1.0)
(sp-flt spt-a 96.0)
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0)
(sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667)
(sp-flt spt-accel-y -2.7306666)
(sp-int spt-timer 375)
(sp-cpuinfo-flags bit2 bit12)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 801) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 18
(sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2))
(sp-flt spt-num 0.5)
(sp-rnd-flt spt-x (meters 0.0) (meters 0.6) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.4) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-scale-y (meters 0.1) (meters 0.1) 1.0)
(sp-rnd-flt spt-r 10.0 6.0 1.0)
(sp-rnd-flt spt-g 40.0 90.0 1.0)
(sp-rnd-flt spt-b 10.0 6.0 1.0)
(sp-flt spt-a 96.0)
(sp-rnd-flt spt-vel-x (meters 0.0016666667) (meters 0.0033333334) 1.0)
(sp-rnd-flt spt-vel-y (meters 0.01) (meters 0.013333334) 1.0)
(sp-rnd-int-flt spt-rotvel-z (degrees -1.2) 1 436.90668)
(sp-flt spt-accel-y -1.3653333)
(sp-int spt-timer 600)
(sp-cpuinfo-flags bit2 bit12)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; definition for function darkvine-event-handler
;; INFO: Return type mismatch none vs object.
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 50]
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code? [OP: 52]
(defbehavior darkvine-event-handler darkvine ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'touch)
(dummy-45 (-> self root-override))
(when (-> self dangerous)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 2)
(set! (-> a1-1 message) 'attack)
(set! (-> a1-1 param 0) (-> arg3 param 0))
(set! (-> a1-1 param 1) (the-as uint (new 'static 'attack-info)))
(if (send-event-function arg0 a1-1)
(dummy-54 (-> self root-override) 2 0)
)
)
)
)
((= v1-0 'attack)
(let ((v1-10 (-> arg3 param 2)))
(cond
((!= v1-10 (-> self player-attack-id))
(set! (-> self player-attack-id) (the-as int v1-10))
(when (-> self vulnerable)
(dummy-45 (-> self root-override))
(go darkvine-retreat)
)
)
(else
'push
)
)
)
)
)
)
)
)
;; failed to figure out what this is:
(defstate darkvine-idle (darkvine)
:event
darkvine-event-handler
:code
(behavior ()
(set! (-> self dangerous) #t)
(set! (-> self vulnerable) #t)
(let ((f30-0 0.0))
(while #t
(if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1)
(go darkvine-die #f)
)
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 3)))
(set! (-> a0-3 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 3)) data 0 length) -1))
)
(set! (-> a0-3 param 1) (-> self speed))
(set! (-> a0-3 frame-num) 0.0)
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 3)) num-func-seek!)
)
(until (ja-done? 0)
(if (and (>= (ja-aframe-num 0) 120.0) (>= 180.0 (ja-aframe-num 0)))
(seek-toward-yaw-angle! (-> self root-override) f30-0 32768.0 150)
)
(suspend)
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1)))
(set! (-> a0-7 param 1) (-> self speed))
(joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!)
)
)
(set! f30-0 (if (rand-vu-percent? 0.5)
(+ 16384.0 f30-0)
(+ -16384.0 f30-0)
)
)
)
)
(none)
)
:post
(behavior ()
(when (and
(-> self hit-player)
(or (not *target*) (>= (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15))
)
(dummy-54 (-> self root-override) 2 4)
(set! (-> self hit-player) #f)
)
(transform-post)
(if *target*
(look-at-enemy!
(-> *target* neck)
(vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data (-> self tip-index)))
'nothing
self
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate darkvine-retreat (darkvine)
:event
darkvine-event-handler
:code
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(set! (-> self dangerous) #f)
(set! (-> self vulnerable) #f)
(logclear! (-> self mask) (process-mask actor-pause))
(ja-channel-push! 1 45)
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
(set! (-> a0-2 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
)
(until (ja-done? 0)
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 800)
(-> self root-override trans)
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
(suspend)
(let ((a0-4 (-> self skel root-channel 0)))
(set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1)))
(set! (-> a0-4 param 1) 1.0)
(joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!)
)
)
(ja-channel-set! 0)
(let ((gp-0 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) gp-0) 600)
(suspend)
)
)
(let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-1
(let ((t9-7 (method-of-type part-tracker activate)))
(t9-7 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
gp-1
part-tracker-init
(-> *part-group-id-table* 175)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-1 ppointer)
)
)
(let ((gp-2 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) gp-2) 150)
(suspend)
)
)
(set! (-> self dangerous) #t)
(logior! (-> self mask) (process-mask actor-pause))
(ja-channel-set! 1)
(let ((a0-11 (-> self skel root-channel 0)))
(set! (-> a0-11 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
(set! (-> a0-11 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
)
(set! (-> a0-11 param 1) 1.0)
(set! (-> a0-11 frame-num) 0.0)
(joint-control-channel-group! a0-11 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-12 (-> self skel root-channel 0)))
(set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1)))
(set! (-> a0-12 param 1) 1.0)
(joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!)
)
)
(go darkvine-idle)
(none)
)
:post
(-> darkvine-idle post)
)
;; failed to figure out what this is:
(defstate darkvine-die (darkvine)
:code
(behavior ((arg0 symbol))
(logclear! (-> self mask) (process-mask actor-pause))
(if arg0
(ja-channel-set! 1)
(ja-channel-push! 1 150)
)
(clear-collide-with-as (-> self root-override))
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 6))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(while (!= (-> self skel root-channel 0) (-> self skel channel))
(suspend)
)
(logior! (-> self mask) (process-mask sleep))
(anim-loop)
(none)
)
:post
(-> darkvine-idle post)
)
;; definition for method 11 of type darkvine
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! darkvine ((obj darkvine) (arg0 entity-actor))
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0)))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3072))
(set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 16384.0)
(set-root-prim! s4-0 s3-0)
(let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
(set! (-> s2-0 prim-core collide-as) (the-as uint 256))
(set! (-> s2-0 collide-with) (the-as uint 16))
(set! (-> s2-0 prim-core action) (the-as uint 3073))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 5)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3276.8)
(append-prim s3-0 s2-0)
)
(let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
(set! (-> s2-1 prim-core collide-as) (the-as uint 256))
(set! (-> s2-1 collide-with) (the-as uint 16))
(set! (-> s2-1 prim-core action) (the-as uint 3073))
(set! (-> s2-1 prim-core offense) 4)
(set! (-> s2-1 transform-index) 6)
(set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 2867.2)
(append-prim s3-0 s2-1)
)
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
(set! (-> s2-2 prim-core collide-as) (the-as uint 256))
(set! (-> s2-2 collide-with) (the-as uint 16))
(set! (-> s2-2 prim-core action) (the-as uint 3073))
(set! (-> s2-2 prim-core offense) 4)
(set! (-> s2-2 transform-index) 7)
(set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 2457.6)
(append-prim s3-0 s2-2)
)
(let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2))))
(set! (-> s2-3 prim-core collide-as) (the-as uint 256))
(set! (-> s2-3 collide-with) (the-as uint 16))
(set! (-> s2-3 prim-core action) (the-as uint 3073))
(set! (-> s2-3 prim-core offense) 4)
(set! (-> s2-3 transform-index) 8)
(set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0)
(append-prim s3-0 s2-3)
)
)
(set! (-> s4-0 nav-radius) 2048.0)
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(set! (-> obj tip-index) 8)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *darkvine-sg* '())
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
(set! (-> obj hit-player) #f)
(set! (-> obj speed) (rand-vu-float-range 0.95 1.05))
(if (logtest? (get-reminder (get-task-control (game-task jungle-plant)) 0) 1)
(go darkvine-die #t)
)
(go darkvine-idle)
(none)
)
File diff suppressed because it is too large Load Diff
+782
View File
@@ -0,0 +1,782 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type dark-crystal
(deftype dark-crystal (process-drawable)
((root-override collide-shape :offset 112)
(crystal-num int32 :offset-assert 176)
(underwater? symbol :offset-assert 180)
(explode-danger-radius float :offset-assert 184)
(lit-color-mult vector :inline :offset-assert 192)
(lit-color-emissive vector :inline :offset-assert 208)
(unlit-color-mult vector :inline :offset-assert 224)
(unlit-color-emissive vector :inline :offset-assert 240)
)
:heap-base #x90
:method-count-assert 22
:size-assert #x100
:flag-assert #x1600900100
(:methods
(dummy-20 (_type_) none 20)
(dummy-21 (_type_) symbol 21)
)
)
;; definition for method 3 of type dark-crystal
(defmethod inspect dark-crystal ((obj dark-crystal))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tcrystal-num: ~D~%" (-> obj crystal-num))
(format #t "~T~Tunderwater?: ~A~%" (-> obj underwater?))
(format #t "~T~Texplode-danger-radius: ~f~%" (-> obj explode-danger-radius))
(format #t "~T~Tlit-color-mult: #<vector @ #x~X>~%" (-> obj lit-color-mult))
(format #t "~T~Tlit-color-emissive: #<vector @ #x~X>~%" (-> obj lit-color-emissive))
(format #t "~T~Tunlit-color-mult: #<vector @ #x~X>~%" (-> obj unlit-color-mult))
(format #t "~T~Tunlit-color-emissive: #<vector @ #x~X>~%" (-> obj unlit-color-emissive))
obj
)
;; failed to figure out what this is:
(defskelgroup *dark-crystal-sg* dark-crystal
0
-1
((1 (meters 999999)))
:bounds (static-spherem 0 3.4 0 3.8)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defskelgroup *dark-crystal-explode-sg* dark-crystal
3
-1
((4 (meters 999999)))
:bounds (static-spherem 0 -15 0 50)
:longest-edge (meters 0)
)
;; definition for symbol *dark-crystal-flash-delays*, type (array int32)
(define
*dark-crystal-flash-delays*
(the-as (array int32)
(new 'static 'boxed-array :type int32 :length 9 :allocated-length 9 #xb4 #x96 #x78 90 60 30 15 7 3)
)
)
;; definition for symbol *dark-crystal-exploder-params*, type joint-exploder-static-params
(define
*dark-crystal-exploder-params*
(new 'static 'joint-exploder-static-params
:joints
(new
'static
'boxed-array
:type joint-exploder-static-joint-params :length 15 :allocated-length 15
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1)
(new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 322)
(new 'static 'sparticle-launch-group
:length 69
:duration #x4b
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-dark-crystal-gnd-explode"
:launcher
(new 'static 'inline-array sparticle-group-item 69
(sp-item 2153 :fade-after (meters 100.0) :period 600 :length 5 :binding 296)
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 296 :flags (start-dead launch-asap) :binding 297)
(sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead))
(sp-item 2154 :period 600 :length 5)
(sp-item 2155 :period 600 :length 40)
(sp-item 2156 :period 600 :length 20)
(sp-item 2157 :period 600 :length 20)
)
:bounds (new 'static 'sphere :w 65536.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2153) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 16
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 32.0)
(sp-rnd-flt spt-x (meters -2.0) (meters 4.0) 1.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 2.0) 1.0)
(sp-rnd-flt spt-z -8192.0 16384.0 1.0)
(sp-flt spt-scale-x (meters 0.1))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.026666667) 1.0)
(sp-flt spt-accel-y -1.3653333)
(sp-flt spt-friction 0.94)
(sp-int spt-timer 240)
(sp-cpuinfo-flags bit3)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 140.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2155) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 22
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 24.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 128.0 1.0)
(sp-rnd-flt spt-g 0.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-rnd-flt spt-a 32.0 96.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0)
(sp-flt spt-scalevel-x (meters -0.0026666666))
(sp-copy-from-other spt-scalevel-y -4)
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
(sp-flt spt-friction 0.9)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit14)
(sp-int-plain-rnd spt-next-time 30 89 1)
(sp-launcher-by-id spt-next-launcher 2158)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2158)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end))
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2157) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 15
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 12.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
(sp-flt spt-scale-x (meters 0.3))
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0)
(sp-flt spt-scale-y (meters 12.0))
(sp-rnd-flt spt-r 64.0 192.0 1.0)
(sp-rnd-flt spt-g 0.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-rnd-flt spt-a 32.0 64.0 1.0)
(sp-flt spt-scalevel-y (meters 1.04))
(sp-flt spt-fade-a -1.6)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2154) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 13
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-y (meters 2.0))
(sp-flt spt-scale-x (meters 24.0))
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 192.0 64.0 1.0)
(sp-rnd-flt spt-g 0.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-flt spt-a 128.0)
(sp-flt spt-fade-a -2.3272727)
(sp-int spt-timer 54)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2156)
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 16.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 0.0 96.0 1.0)
(sp-rnd-flt spt-g 0.0 32.0 1.0)
(sp-rnd-flt spt-b 64.0 32.0 1.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0)
(sp-flt spt-scalevel-x (meters 0.02))
(sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -0.28444445)
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
(sp-flt spt-friction 0.8)
(sp-int spt-timer 510)
(sp-cpuinfo-flags bit2 bit14)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 323) (new 'static 'sparticle-launch-group
:length 6
:duration #x4b
:linger-duration #x2ee0
:flags (sp-group-flag use-local-clock)
:name "group-dark-crystal-water-explode"
:launcher
(new 'static 'inline-array sparticle-group-item 6
(sp-item 2159 :period 600 :length 5)
(sp-item 2160 :period 600 :length 40)
(sp-item 2161 :period 600 :length 20)
(sp-item 2162 :period 600 :length 20)
(sp-item 2163 :period 600 :length 75)
(sp-item 2164 :period 600 :length 75)
)
:bounds (new 'static 'sphere :w 65536.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2160) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 23
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 24.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.4) (meters 0.8) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 128.0 1.0)
(sp-rnd-flt spt-g 128.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-rnd-flt spt-a 32.0 96.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.16) 1.0)
(sp-flt spt-scalevel-x (meters -0.0026666666))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-g -0.4)
(sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0)
(sp-flt spt-friction 0.9)
(sp-int spt-timer 300)
(sp-cpuinfo-flags bit2 bit14)
(sp-int-plain-rnd spt-next-time 30 89 1)
(sp-launcher-by-id spt-next-launcher 2158)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2162) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 17
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 12.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
(sp-flt spt-scale-x (meters 0.3))
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0)
(sp-flt spt-scale-y (meters 12.0))
(sp-rnd-flt spt-r 128.0 128.0 1.0)
(sp-rnd-flt spt-g 128.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-rnd-flt spt-a 32.0 64.0 1.0)
(sp-flt spt-scalevel-y (meters 1.04))
(sp-flt spt-fade-r -1.0666667)
(sp-flt spt-fade-g -2.1333334)
(sp-flt spt-fade-a -1.6)
(sp-int spt-timer 60)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2159) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 14
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-y (meters 2.0))
(sp-flt spt-scale-x (meters 24.0))
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 192.0 64.0 1.0)
(sp-rnd-flt spt-g 128.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-flt spt-a 128.0)
(sp-flt spt-fade-g -2.0)
(sp-flt spt-fade-a -2.3272727)
(sp-int spt-timer 54)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2161)
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 26
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 16.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 3.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.5) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 96.0 1.0)
(sp-rnd-flt spt-g 128.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 32.0 1.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.04) 1.0)
(sp-flt spt-scalevel-x (meters 0.02))
(sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -0.2)
(sp-flt spt-fade-g -0.2)
(sp-flt spt-fade-b 0.0)
(sp-flt spt-fade-a -0.28444445)
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
(sp-flt spt-friction 0.8)
(sp-int spt-timer 510)
(sp-cpuinfo-flags bit2 bit14)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 4.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2163) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 32.0)
(sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 6.0) 1.0)
(sp-rnd-flt spt-z -16384.0 32768.0 1.0)
(sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.05) 1.0)
(sp-rnd-flt spt-scale-y (meters 0.125) (meters 0.025) 1.0)
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0)
(sp-flt spt-fade-a 0.8)
(sp-int spt-timer 12000)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-flt spt-userdata 143360.0)
(sp-func spt-func 'check-water-level-above-and-die)
(sp-int-plain-rnd spt-next-time 30 29 1)
(sp-launcher-by-id spt-next-launcher 2165)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2165)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a 0.0) (sp-end))
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2164) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 4.0)
(sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0)
(sp-rnd-flt spt-y (meters 1.0) (meters 6.0) 1.0)
(sp-rnd-flt spt-z -16384.0 32768.0 1.0)
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.15) 1.0)
(sp-rnd-flt spt-scale-y (meters 0.2) (meters 0.1) 1.0)
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.006666667) 1.0)
(sp-flt spt-fade-a 0.8)
(sp-int spt-timer 12000)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-flt spt-userdata 143360.0)
(sp-func spt-func 'check-water-level-above-and-die)
(sp-int-plain-rnd spt-next-time 30 29 1)
(sp-launcher-by-id spt-next-launcher 2165)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(defstate dark-crystal-idle (dark-crystal)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack)
(if (= (-> arg0 type) target)
(level-hint-spawn
(game-text-id dark-crystal-run-away)
"sksp0334"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
(close-specific-task! (game-task cave-dark-crystals) (task-status need-hint))
(go dark-crystal-activate)
)
)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate dark-crystal-activate (dark-crystal)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(dotimes (gp-0 (-> *dark-crystal-flash-delays* length))
(sound-play-by-name (static-sound-name "warning") (new-sound-id) 1024 0 0 1 #t)
(set! (-> self draw color-mult quad) (-> self lit-color-mult quad))
(set! (-> self draw color-emissive quad) (-> self lit-color-emissive quad))
(set! (-> self state-time) (-> *display* base-frame-counter))
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30)
(suspend)
)
(set! (-> self draw color-mult quad) (-> self unlit-color-mult quad))
(set! (-> self draw color-emissive quad) (-> self unlit-color-emissive quad))
(set! (-> self state-time) (-> *display* base-frame-counter))
(let ((s5-1 (-> *dark-crystal-flash-delays* gp-0)))
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) s5-1)
(suspend)
)
)
)
(go dark-crystal-explode)
(none)
)
)
;; failed to figure out what this is:
(defstate dark-crystal-explode (dark-crystal)
:code
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(logclear! (-> self mask) (process-mask actor-pause))
(clear-collide-with-as (-> self root-override))
(let ((gp-0 (new 'stack 'joint-exploder-tuning 0)))
(when (-> self underwater?)
(set! (-> gp-0 duration) (the-as uint 1200))
(set! (-> gp-0 gravity) -20480.0)
(set! (-> gp-0 rot-speed) 4.2)
(set-vector! (-> gp-0 fountain-rand-transv-lo) -40960.0 20480.0 -40960.0 1.0)
(set-vector! (-> gp-0 fountain-rand-transv-hi) 40960.0 49152.0 40960.0 1.0)
)
(let ((s5-0 (get-process *default-dead-pool* joint-exploder #x4000)))
(when s5-0
(let ((t9-3 (method-of-type joint-exploder activate)))
(t9-3 (the-as joint-exploder s5-0) self 'joint-exploder (the-as pointer #x70004000))
)
(run-now-in-process
s5-0
joint-exploder-init-by-other
*dark-crystal-explode-sg*
5
gp-0
*dark-crystal-exploder-params*
)
(-> s5-0 ppointer)
)
)
)
(activate! *camera-smush-control* 819.2 37 210 1.0 0.995)
(let ((gp-1 (dummy-21 self)))
(suspend)
(ja-channel-set! 0)
(ja-post)
(logior! (-> self draw status) 2)
(dummy-20 self)
(if (-> self underwater?)
(sound-play-by-name (static-sound-name "water-explosion") (new-sound-id) 1024 0 0 1 #t)
(sound-play-by-name (static-sound-name "crystal-explode") (new-sound-id) 1024 0 0 1 #t)
)
(let ((s5-3 (get-process *default-dead-pool* part-tracker #x4000)))
(when s5-3
(let ((t9-15 (method-of-type part-tracker activate)))
(t9-15 (the-as part-tracker s5-3) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
s5-3
part-tracker-init
(if (-> self underwater?)
(-> *part-group-id-table* 323)
(-> *part-group-id-table* 322)
)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> s5-3 ppointer)
)
)
(let ((s5-4 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s5-4) 75)
(suspend)
)
)
(if gp-1
(go dark-crystal-spawn-fuel-cell)
)
)
(dummy-18 self)
(until (not (-> self child))
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate dark-crystal-spawn-fuel-cell (dark-crystal)
:event
(the-as
(function process int symbol event-message-block object :behavior dark-crystal)
process-drawable-fuel-cell-handler
)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(clear-collide-with-as (-> self root-override))
(level-hint-spawn
(game-text-id dark-crystal-last-one)
"sksp0327"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(ja-channel-set! 0)
(ja-post)
(logior! (-> self draw status) 2)
(if (not (task-complete? *game-info* (-> self entity extra perm task)))
(birth-pickup-at-point
(-> self root-override trans)
(pickup-type fuel-cell)
(the float (-> self entity extra perm task))
#t
self
(the-as fact-info #f)
)
)
(suspend)
(until (not (-> self child))
(suspend)
)
(aybabtu 2)
(dummy-18 self)
(none)
)
)
;; definition for method 20 of type dark-crystal
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod dummy-20 dark-crystal ((obj dark-crystal))
(when *target*
(let ((s5-0 (new 'stack-no-clear 'vector))
(s3-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
)
(set! (-> s5-0 quad) (-> obj root-override trans quad))
(set! (-> s5-0 y) (+ 6144.0 (-> s5-0 y)))
(set! (-> s3-0 quad) (-> (target-pos 0) quad))
(set! (-> s3-0 y) (+ 6144.0 (-> s3-0 y)))
(when (>= (-> obj explode-danger-radius) (vector-vector-distance s5-0 s3-0))
(vector-! s4-0 s3-0 s5-0)
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
(if (< (dummy-10 *collide-cache* s5-0 s4-0 819.2 1 obj t2-0 1) 0.0)
(send-event *target* 'attack #f (new 'static 'attack-info))
)
)
)
)
)
(none)
)
;; definition for method 21 of type dark-crystal
(defmethod dummy-21 dark-crystal ((obj dark-crystal))
(let ((s5-0 #f))
(when (nonzero? (-> obj crystal-num))
(let* ((s4-0 (get-task-control (game-task cave-dark-crystals)))
(s3-0 (logior (get-reminder s4-0 3) (ash 1 (-> obj crystal-num))))
)
(save-reminder s4-0 s3-0 3)
(when (= s3-0 62)
(set! s5-0 #t)
(process-entity-status! obj (entity-perm-status complete) #t)
)
)
)
s5-0
)
)
;; definition for method 11 of type dark-crystal
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! dark-crystal ((obj dark-crystal) (arg0 entity-actor))
(set-vector! (-> obj unlit-color-mult) 0.5 0.5 0.5 1.0)
(set-vector! (-> obj unlit-color-emissive) 0.0 0.0 0.0 0.0)
(set-vector! (-> obj lit-color-mult) 1.0 1.0 1.0 1.0)
(set-vector! (-> obj lit-color-emissive) 1.0 1.0 1.0 0.0)
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
(let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player))))
(let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 512))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set! (-> s3-0 transform-index) 0)
(set-vector! (-> s3-0 local-sphere) 0.0 6963.2 0.0 15564.8)
(set-root-prim! s4-0 s3-0)
)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *dark-crystal-sg* '())
(set! (-> obj mask) (logior (process-mask attackable) (-> obj mask)))
(set! (-> obj draw color-mult quad) (-> obj unlit-color-mult quad))
(set! (-> obj draw color-emissive quad) (-> obj unlit-color-emissive quad))
(set! (-> obj underwater?) (= (res-lump-value arg0 'mode uint128) 1))
(set! (-> obj explode-danger-radius) (res-lump-float arg0 'extra-radius :default 28672.0))
(set! (-> obj crystal-num) (res-lump-value arg0 'extra-id int))
(set-vector! (-> obj root-override scale) 2.0 2.0 2.0 1.0)
(ja-channel-push! 1 0)
(let ((s5-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
(go dark-crystal-spawn-fuel-cell)
(go dark-crystal-idle)
)
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+674
View File
@@ -0,0 +1,674 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type mother-spider-egg
(deftype mother-spider-egg (process-drawable)
((parent-override (pointer mother-spider) :offset 12)
(root-override collide-shape-moving :offset 112)
(anim-speed float :offset-assert 176)
(part2 sparticle-launch-control :offset-assert 180)
(falling-start-time uint64 :offset-assert 184)
(fall-dest vector :inline :offset-assert 192)
(fall-dest-normal vector :inline :offset-assert 208)
(broken-look lod-set :inline :offset-assert 224)
(traj trajectory :inline :offset-assert 272)
(shadow-pos vector :inline :offset-assert 320)
)
:heap-base #xe0
:method-count-assert 22
:size-assert #x150
:flag-assert #x1600e00150
(:methods
(dummy-20 (_type_) none 20)
(draw-egg-shadow (_type_ vector symbol) symbol 21)
)
)
;; definition for method 3 of type mother-spider-egg
(defmethod inspect mother-spider-egg ((obj mother-spider-egg))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tanim-speed: ~f~%" (-> obj anim-speed))
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
(format #t "~T~Tfalling-start-time: ~D~%" (-> obj falling-start-time))
(format #t "~T~Tfall-dest: #<vector @ #x~X>~%" (-> obj fall-dest))
(format #t "~T~Tfall-dest-normal: #<vector @ #x~X>~%" (-> obj fall-dest-normal))
(format #t "~T~Tbroken-look: #<lod-set @ #x~X>~%" (-> obj broken-look))
(format #t "~T~Ttraj: #<trajectory @ #x~X>~%" (-> obj traj))
(format #t "~T~Tshadow-pos: #<vector @ #x~X>~%" (-> obj shadow-pos))
obj
)
;; failed to figure out what this is:
(defskelgroup *mother-spider-egg-unbroken-sg* spider-egg
0
-1
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
:bounds (static-spherem 0 1 0 2)
:longest-edge (meters 0)
:shadow 4
)
;; failed to figure out what this is:
(defskelgroup *mother-spider-egg-broken-sg* spider-egg
5
-1
((6 (meters 20)) (7 (meters 40)) (8 (meters 999999)))
:bounds (static-spherem 0 1 0 2)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 324) (new 'static 'sparticle-launch-group
:length 2
:duration #x5
:linger-duration #x384
:flags (sp-group-flag use-local-clock)
:name "group-spider-egg-hatches"
:launcher
(new 'static 'inline-array sparticle-group-item 2
(sp-item 2018 :fade-after (meters 50.0) :falloff-to (meters 50.0))
(sp-item 2071 :fade-after (meters 50.0) :falloff-to (meters 50.0))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2071) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 16
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 16.0)
(sp-flt spt-y (meters 0.5))
(sp-flt spt-scale-x (meters 0.1))
(sp-int spt-rot-x 4)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-scale-y (meters 0.1))
(sp-flt spt-r 255.0)
(sp-flt spt-g 64.0)
(sp-flt spt-b 255.0)
(sp-rnd-flt spt-a 32.0 96.0 1.0)
(sp-int spt-timer 225)
(sp-cpuinfo-flags bit2 bit3)
(sp-int spt-next-time 75)
(sp-launcher-by-id spt-next-launcher 2072)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2072)
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5
(sp-flt spt-scale-x (meters 0.1))
(sp-flt spt-scale-y (meters 2.0))
(sp-flt spt-scalevel-y (meters 0.2))
(sp-flt spt-fade-a -1.4222223)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2018) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 24
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 8.0)
(sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.0) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 32.0 32.0 1.0)
(sp-rnd-flt spt-g 0.0 16.0 1.0)
(sp-rnd-flt spt-b 32.0 32.0 1.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0)
(sp-flt spt-scalevel-x (meters 0.006666667))
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 1.2) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 1.4222223)
(sp-flt spt-accel-y 0.27306667)
(sp-int spt-timer 375)
(sp-cpuinfo-flags bit2 bit12 bit14)
(sp-int spt-next-time 45)
(sp-launcher-by-id spt-next-launcher 2073)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2073)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end))
)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 325) (new 'static 'sparticle-launch-group
:length 1
:duration #x5
:linger-duration #x177
:flags (sp-group-flag use-local-clock)
:name "group-spider-egg-explodes"
:launcher
(new 'static 'inline-array sparticle-group-item 1
(sp-item 2074 :fade-after (meters 50.0) :falloff-to (meters 50.0))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 2074) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 22
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 8.0)
(sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 32.0 32.0 1.0)
(sp-rnd-flt spt-g 0.0 16.0 1.0)
(sp-rnd-flt spt-b 32.0 32.0 1.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0)
(sp-flt spt-scalevel-x (meters 0.006666667))
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 1.2) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a -1.4222223)
(sp-flt spt-accel-y 0.27306667)
(sp-int spt-timer 375)
(sp-cpuinfo-flags bit2 bit12 bit14)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0)
(sp-end)
)
)
)
;; definition for method 21 of type mother-spider-egg
;; Used lq/sq
(defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol))
(cond
((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8))
(let ((s5-0 (new 'stack-no-clear 'collide-tri-result))
(a1-1 (new 'stack-no-clear 'vector))
(a2-1 (new 'stack-no-clear 'vector))
)
(set! (-> a1-1 quad) (-> obj root-override trans quad))
(set! (-> a1-1 y) (+ 1228.8 (-> a1-1 y)))
(set-vector! a2-1 0.0 -61440.0 0.0 1.0)
(cond
((>= (dummy-10 *collide-cache* a1-1 a2-1 7372.8 1 obj s5-0 1) 0.0)
(let ((v1-11 (-> obj draw shadow-ctrl)))
(set! (-> v1-11 settings flags) (logand -33 (-> v1-11 settings flags)))
)
0
(let ((v1-14 (-> obj draw shadow-ctrl)))
(set! (-> v1-14 settings bot-plane w) (- (+ -4096.0 (-> s5-0 intersect y))))
)
0
(let ((v1-17 (-> obj draw shadow-ctrl)))
(set! (-> v1-17 settings top-plane w) (- (+ 6144.0 (-> s5-0 intersect y))))
)
0
(return #t)
)
(else
(let ((v1-22 (-> obj draw shadow-ctrl)))
(logior! (-> v1-22 settings flags) 32)
)
0
)
)
)
)
(else
(let ((v1-25 (-> obj draw shadow-ctrl)))
(logior! (-> v1-25 settings flags) 32)
)
0
)
)
#f
)
;; failed to figure out what this is:
(defstate mother-spider-egg-falling (mother-spider-egg)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack)
(go mother-spider-egg-die-while-falling)
)
)
)
:enter
(behavior () (set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter))) (none))
:trans
(behavior ()
(let ((f30-0 (fmin
(the float (- (-> *display* base-frame-counter) (the-as int (-> self falling-start-time))))
(-> self traj time)
)
)
)
(let ((f28-0 (/ f30-0 (-> self traj time))))
(eval-position! (-> self traj) f30-0 (-> self root-override trans))
(let ((f0-3 (lerp 0.3 0.4 f28-0)))
(set-vector! (-> self root-override scale) f0-3 f0-3 f0-3 1.0)
)
)
(when (= f30-0 (-> self traj time))
(sound-play-by-name (static-sound-name "eggs-lands") (new-sound-id) 1024 0 0 1 #t)
(go mother-spider-egg-on-ground)
)
)
(draw-egg-shadow self (-> self shadow-pos) #t)
(none)
)
:code
(behavior ()
(ja-channel-push! 1 0)
(while #t
(let ((a0-1 (-> self skel root-channel 0)))
(set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
(set! (-> a0-1 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
)
(set! (-> a0-1 param 1) (-> self anim-speed))
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1)))
(set! (-> a0-2 param 1) (-> self anim-speed))
(joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(none)
)
:post
(the-as (function none :behavior mother-spider-egg) transform-post)
)
;; failed to figure out what this is:
(defstate mother-spider-egg-on-ground (mother-spider-egg)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as
object
(cond
((= v1-0 'touch)
(dummy-55 (-> self root-override) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)
)
((= v1-0 'attack)
(go mother-spider-egg-die)
)
)
)
)
)
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(if (not (draw-egg-shadow self (-> self shadow-pos) #t))
(set! (-> self shadow-pos quad) (-> self fall-dest quad))
)
(none)
)
:trans
(behavior ()
(if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 600)
(go mother-spider-egg-hatch)
)
(draw-egg-shadow self (-> self shadow-pos) #f)
(none)
)
:code
(behavior ()
(ja-channel-push! 1 30)
(let ((gp-0 (new 'stack-no-clear 'quaternion))
(s5-0 (new 'stack-no-clear 'quaternion))
)
(let ((s3-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
)
(quaternion-copy! gp-0 (-> self root-override quat))
(set-vector! s4-0 0.0 1.0 0.0 1.0)
(set! (-> s3-0 quad) (-> self fall-dest-normal quad))
(vector-normalize! s3-0 1.0)
(quaternion-from-two-vectors! s5-0 s4-0 s3-0)
)
(quaternion*! s5-0 s5-0 gp-0)
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 11)))
(set! (-> a0-7 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 11)) data 0 length) -1))
)
(set! (-> a0-7 param 1) 1.3)
(set! (-> a0-7 frame-num) 0.0)
(joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 11)) num-func-seek!)
)
(until (ja-done? 0)
(let* ((f0-8 (ja-frame-num 0))
(v1-19 (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
)
(f0-9 (/ f0-8 (the float (+ (-> v1-19 data 0 length) -1))))
)
(quaternion-slerp! (-> self root-override quat) gp-0 s5-0 f0-9)
)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
(set! (-> a0-10 param 1) 1.3)
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(while #t
(let ((a0-12 (-> self skel root-channel 0)))
(set! (-> a0-12 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
(set! (-> a0-12 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
)
(set! (-> a0-12 param 1) (-> self anim-speed))
(set! (-> a0-12 frame-num) 0.0)
(joint-control-channel-group! a0-12 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-13 (-> self skel root-channel 0)))
(set! (-> a0-13 param 0) (the float (+ (-> a0-13 frame-group data 0 length) -1)))
(set! (-> a0-13 param 1) (-> self anim-speed))
(joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(none)
)
:post
(the-as (function none :behavior mother-spider-egg) transform-post)
)
;; failed to figure out what this is:
(defstate mother-spider-egg-hatch (mother-spider-egg)
:trans
(behavior ()
(when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8))
(let ((a1-0 (new 'stack-no-clear 'vector)))
(set! (-> a1-0 quad) (-> self fall-dest quad))
(compute-and-draw-shadow
(-> self root-override trans)
a1-0
(-> self fall-dest-normal)
(the-as vector 7372.8)
81920.0
(the-as float 0)
)
)
)
(none)
)
:code
(behavior ()
(send-event (ppointer->process (-> self parent-override)) 'trigger)
(clear-collide-with-as (-> self root-override))
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-3 (method-of-type part-tracker activate)))
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
gp-0
part-tracker-init
(-> *part-group-id-table* 324)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 60)
(let ((a0-7 (-> self skel root-channel 0)))
(set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
(set! (-> a0-7 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
)
(set! (-> a0-7 param 1) 1.0)
(set! (-> a0-7 frame-num) 0.0)
(joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-8 (-> self skel root-channel 0)))
(set! (-> a0-8 param 0) (the float (+ (-> a0-8 frame-group data 0 length) -1)))
(set! (-> a0-8 param 1) 1.0)
(joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-seek!)
)
)
(let ((v1-37 (-> self draw shadow-ctrl)))
(logior! (-> v1-37 settings flags) 32)
)
0
(go mother-spider-egg-die-exit)
(none)
)
:post
(the-as (function none :behavior mother-spider-egg) transform-post)
)
;; failed to figure out what this is:
(defstate mother-spider-egg-die (mother-spider-egg)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(let ((v1-3 (-> self draw shadow-ctrl)))
(logior! (-> v1-3 settings flags) 32)
)
0
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 30)
(clear-collide-with-as (-> self root-override))
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-4 (method-of-type part-tracker activate)))
(t9-4 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
gp-0
part-tracker-init
(-> *part-group-id-table* 325)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
(set! (-> a0-9 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
)
(set! (-> a0-9 param 1) 1.0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
(set! (-> a0-10 param 1) 1.0)
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
)
)
(go mother-spider-egg-die-exit)
(none)
)
:post
(the-as (function none :behavior mother-spider-egg) ja-post)
)
;; failed to figure out what this is:
(defstate mother-spider-egg-die-while-falling (mother-spider-egg)
:trans
(behavior ()
(let ((f0-2 (fmin
(the float (- (-> *display* base-frame-counter) (the-as int (-> self falling-start-time))))
(-> self traj time)
)
)
)
(eval-position! (-> self traj) f0-2 (-> self root-override trans))
)
(none)
)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(clear-collide-with-as (-> self root-override))
(let ((v1-5 (-> self draw shadow-ctrl)))
(logior! (-> v1-5 settings flags) 32)
)
0
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-2 (method-of-type part-tracker activate)))
(t9-2 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
gp-0
part-tracker-init
(-> *part-group-id-table* 325)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 30)
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
(set! (-> a0-9 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
)
(set! (-> a0-9 param 1) 1.0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
(set! (-> a0-10 param 1) 1.0)
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
)
)
(go mother-spider-egg-die-exit)
(none)
)
:post
(the-as (function none :behavior mother-spider-egg) ja-post)
)
;; failed to figure out what this is:
(defstate mother-spider-egg-die-exit (mother-spider-egg)
:code
(behavior ()
(send-event (ppointer->process (-> self parent-override)) 'untrigger)
(logior! (-> self draw status) 2)
(let ((v1-8 (-> self draw shadow-ctrl)))
(logior! (-> v1-8 settings flags) 32)
)
0
(set! (-> self root-override nav-flags) (logand -2 (-> self root-override nav-flags)))
(set! (-> self root-override nav-flags) (logand -3 (-> self root-override nav-flags)))
(clear-collide-with-as (-> self root-override))
(until (not (-> self child))
(suspend)
)
(none)
)
)
;; definition for function mother-spider-egg-init-by-other
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defbehavior mother-spider-egg-init-by-other mother-spider-egg ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 vector))
(set! (-> self entity) arg0)
(set! (-> self anim-speed) (rand-vu-float-range 0.8 1.2))
(set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter)))
(set! (-> self fall-dest quad) (-> arg2 quad))
(set! (-> self fall-dest-normal quad) (-> arg3 quad))
(let ((s4-1 (new 'process 'collide-shape-moving self (collide-list-enum usually-hit-by-player))))
(set! (-> s4-1 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-1 reaction) default-collision-reaction)
(set! (-> s4-1 no-reaction)
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
)
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 1)
(set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4)
(set-root-prim! s4-1 s3-0)
)
(set! (-> s4-1 nav-radius) 4096.0)
(backup-collide-with-as s4-1)
(set! (-> self root-override) s4-1)
)
(set! (-> self root-override trans quad) (-> arg1 quad))
(set-vector! (-> self root-override scale) 0.3 0.3 0.3 1.0)
(quaternion-copy! (-> self root-override quat) (-> self parent-override 0 root-override quat))
(logior! (-> self mask) (process-mask actor-pause))
(set! (-> self mask) (logior (process-mask enemy) (-> self mask)))
(set! (-> self mask) (logior (process-mask attackable) (-> self mask)))
(initialize-skeleton self *mother-spider-egg-unbroken-sg* '())
(dummy-9 (-> self broken-look) *mother-spider-egg-broken-sg* (-> self draw art-group) (-> self entity))
(set! (-> self draw shadow-ctrl) (new 'process 'shadow-control 0.0 0.0 614400.0 (the-as float 60) 245760.0))
(set! (-> self nav) (new 'process 'nav-control (-> self root-override) 16 40960.0))
(logior! (-> self nav flags) (nav-control-flags display-marks bit3 bit5 bit6 bit7))
(set! (-> self root-override nav-flags) (logand -2 (-> self root-override nav-flags)))
(logior! (-> self root-override nav-flags) 2)
(set! (-> self nav extra-nav-sphere quad) (-> self fall-dest quad))
(set! (-> self nav extra-nav-sphere w) 4096.0)
(setup-from-to-height! (-> self traj) (-> self root-override trans) arg2 4096.0 -4.551111)
(create-connection!
*cavecrystal-light-control*
self
(-> self entity)
(the-as (function object object object object object) cavecrystal-light-control-default-callback)
-1
4096.0
)
(go mother-spider-egg-falling)
(none)
)
+15 -13
View File
@@ -32,6 +32,7 @@
(trans-u float :offset-assert 4)
(swing-arc-u float :offset-assert 8)
)
:pack-me
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
@@ -105,7 +106,8 @@
;; definition of type mother-spider
(deftype mother-spider (process-drawable)
((mode uint64 :offset-assert 176)
((root-override collide-shape :offset 112)
(mode uint64 :offset-assert 176)
(damage int32 :offset-assert 184)
(baby-count int32 :offset-assert 188)
(max-baby-count int32 :offset-assert 192)
@@ -153,18 +155,18 @@
:size-assert #x1f0
:flag-assert #x20018001f0
(:methods
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 () none 24)
(dummy-25 () none 25)
(dummy-26 () none 26)
(dummy-27 () none 27)
(dummy-28 () none 28)
(dummy-29 () none 29)
(dummy-30 () none 30)
(dummy-31 () none 31)
(TODO-RENAME-20 (_type_ vector vector) symbol 20)
(TODO-RENAME-21 (_type_ vector float symbol) symbol 21)
(dummy-22 (_type_ matrix vector) float 22)
(TODO-RENAME-23 (_type_) none 23)
(TODO-RENAME-24 (_type_) number 24)
(letgo-player? (_type_) symbol 25)
(grab-player? (_type_) symbol 26)
(STUB-27 (_type_) none 27)
(STUB-28 (_type_) none 28)
(TODO-RENAME-29 (_type_ symbol symbol) none 29)
(spawn-child (_type_ vector vector symbol) int 30)
(is-player-stuck? (_type_) symbol 31)
)
)
File diff suppressed because it is too large Load Diff
+7 -7
View File
@@ -463,7 +463,7 @@
(logtest? (-> obj draw status) 8)
(< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0)
)
(let ((s3-1 (new 'stack-no-clear 'collide-mesh-cache-tri))
(let ((s3-1 (new 'stack-no-clear 'collide-tri-result))
(a1-1 (new 'stack-no-clear 'vector))
(a2-0 (new 'stack-no-clear 'vector))
)
@@ -471,10 +471,10 @@
(set! (-> a1-1 y) (+ -8192.0 (-> a1-1 y)))
(set-vector! a2-0 0.0 -81920.0 0.0 1.0)
(when (>= (dummy-10 *collide-cache* a1-1 a2-0 8192.0 1 pp s3-1 1) 0.0)
(set! (-> s3-1 normal w) 8192.0)
(set! (-> s3-1 intersect w) 8192.0)
(when (and
(sphere-in-view-frustum? (the-as sphere (-> s3-1 normal)))
(< 822083600.0 (vector-vector-distance-squared (-> s3-1 normal) (camera-pos)))
(sphere-in-view-frustum? (the-as sphere (-> s3-1 intersect)))
(< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos)))
)
(set! s4-0 #t)
(let ((v1-17 s5-0))
@@ -482,11 +482,11 @@
)
0
(let ((v1-19 s5-0))
(set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 normal y))))
(set! (-> v1-19 settings bot-plane w) (- (+ -8192.0 (-> s3-1 intersect y))))
)
0
(let ((v1-21 s5-0))
(set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 normal y))))
(set! (-> v1-21 settings top-plane w) (- (+ 6144.0 (-> s3-1 intersect y))))
)
0
(let ((s2-2 (new 'stack-no-clear 'bounding-box)))
@@ -495,7 +495,7 @@
(vector+float! (-> s2-2 min) s1-1 -18432.0)
(vector+float! (-> s2-2 max) s1-1 18432.0)
)
(add-spheres! s2-2 (the-as (pointer sphere) (-> s3-1 normal)) 1)
(add-spheres! s2-2 (the-as (pointer sphere) (-> s3-1 intersect)) 1)
(let ((f0-17 (* 0.5 (vector-vector-distance (-> s2-2 min) (-> s2-2 max)))))
(set-vector!
(-> obj draw bounds)
+360
View File
@@ -0,0 +1,360 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type spider-egg
(deftype spider-egg (process-drawable)
((root-override collide-shape-moving :offset 112)
(notify-actor entity-actor :offset-assert 176)
(broken-look lod-set :inline :offset-assert 180)
)
:heap-base #x70
:method-count-assert 20
:size-assert #xd5
:flag-assert #x14007000d5
)
;; definition for method 3 of type spider-egg
(defmethod inspect spider-egg ((obj spider-egg))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tnotify-actor: ~A~%" (-> obj notify-actor))
(format #t "~T~Tbroken-look: #<lod-set @ #x~X>~%" (-> obj broken-look))
obj
)
;; failed to figure out what this is:
(defskelgroup *spider-egg-unbroken-sg* spider-egg
0
-1
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
:bounds (static-spherem 0 1 0 2)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defskelgroup *spider-egg-broken-sg* spider-egg
5
-1
((6 (meters 20)) (7 (meters 40)) (8 (meters 999999)))
:bounds (static-spherem 0 1 0 2)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate spider-egg-idle (spider-egg)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(local-vars (v0-0 none))
(let ((v1-0 arg2))
(the-as
object
(cond
((= v1-0 'touch)
(dummy-55 (-> self root-override) arg0 (the-as touching-shapes-entry (-> arg3 param 0)) 0.7 6144.0 16384.0)
)
((= v1-0 'can-spawn?)
(return (the-as object #t))
v0-0
)
((= v1-0 'notify-spawned)
(go spider-egg-hatch)
)
((= v1-0 'attack)
(go spider-egg-die)
)
)
)
)
)
:enter
(behavior ((arg0 symbol)) (set! (-> self state-time) (-> *display* base-frame-counter)) (none))
:code
(behavior ((arg0 symbol))
(let ((f30-0 (rand-vu-float-range 0.8 1.2)))
(cond
(arg0
(ja-channel-set! 1)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
(set! (-> gp-1 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
)
(set! (-> gp-1 param 1) f30-0)
(set! (-> gp-1 frame-num)
(rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
data
0
length
)
-1
)
)
)
)
(joint-control-channel-group! gp-1 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1)))
(set! (-> a0-5 param 1) f30-0)
(joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(else
(ja-channel-push! 1 60)
)
)
(while #t
(let ((gp-2 (rand-vu-int-range 2 6)))
(dotimes (s5-0 gp-2)
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 9)))
(set! (-> a0-9 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 9)) data 0 length) -1))
)
(set! (-> a0-9 param 1) f30-0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
(set! (-> a0-10 param 1) f30-0)
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
)
(ja-channel-push! 1 30)
(let ((a0-13 (-> self skel root-channel 0)))
(set! (-> a0-13 frame-group) (the-as art-joint-anim (-> self draw art-group data 13)))
(set! (-> a0-13 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 13)) data 0 length) -1))
)
(set! (-> a0-13 param 1) 1.0)
(set! (-> a0-13 frame-num) 0.0)
(joint-control-channel-group! a0-13 (the-as art-joint-anim (-> self draw art-group data 13)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-14 (-> self skel root-channel 0)))
(set! (-> a0-14 param 0) (the float (+ (-> a0-14 frame-group data 0 length) -1)))
(set! (-> a0-14 param 1) 1.0)
(joint-control-channel-group-eval! a0-14 (the-as art-joint-anim #f) num-func-seek!)
)
)
(ja-channel-push! 1 30)
)
)
(none)
)
:post
(the-as (function none :behavior spider-egg) ja-post)
)
;; failed to figure out what this is:
(defstate spider-egg-hatch (spider-egg)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(local-vars (v0-0 symbol))
(case arg2
(('can-spawn?)
(return (the-as object #f))
v0-0
)
)
)
:code
(behavior ()
(dummy-18 self)
(logclear! (-> self mask) (process-mask actor-pause))
(clear-collide-with-as (-> self root-override))
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-3 (method-of-type part-tracker activate)))
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
gp-0
part-tracker-init
(-> *part-group-id-table* 324)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 60)
(let ((a0-8 (-> self skel root-channel 0)))
(set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 10)))
(set! (-> a0-8 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1))
)
(set! (-> a0-8 param 1) 1.0)
(set! (-> a0-8 frame-num) 0.0)
(joint-control-channel-group! a0-8 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1)))
(set! (-> a0-9 param 1) 1.0)
(joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!)
)
)
(logior! (-> self draw status) 2)
(until (not (-> self child))
(suspend)
)
(none)
)
:post
(the-as (function none :behavior spider-egg) ja-post)
)
;; failed to figure out what this is:
(defstate spider-egg-die (spider-egg)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(local-vars (v0-0 symbol))
(case arg2
(('can-spawn?)
(return (the-as object #f))
v0-0
)
)
)
:code
(behavior ()
(dummy-18 self)
(logclear! (-> self mask) (process-mask actor-pause))
(when (-> self notify-actor)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) self)
(set! (-> a1-0 num-params) 1)
(set! (-> a1-0 message) 'notify)
(set! (-> a1-0 param 0) (the-as uint 'die))
(let ((t9-1 send-event-function)
(v1-9 (-> self notify-actor))
)
(t9-1
(if v1-9
(-> v1-9 extra process)
)
a1-0
)
)
)
)
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-3 (method-of-type part-tracker activate)))
(t9-3 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000))
)
(run-now-in-process
gp-0
part-tracker-init
(-> *part-group-id-table* 325)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(lods-assign! (-> self draw) (-> self broken-look))
(ja-channel-push! 1 30)
(clear-collide-with-as (-> self root-override))
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 12)))
(set! (-> a0-9 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 12)) data 0 length) -1))
)
(set! (-> a0-9 param 1) 1.0)
(set! (-> a0-9 frame-num) 0.0)
(joint-control-channel-group! a0-9 (the-as art-joint-anim (-> self draw art-group data 12)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-10 (-> self skel root-channel 0)))
(set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1)))
(set! (-> a0-10 param 1) 1.0)
(joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!)
)
)
(logior! (-> self draw status) 2)
(until (not (-> self child))
(suspend)
)
(none)
)
:post
(the-as (function none :behavior spider-egg) ja-post)
)
;; definition for method 11 of type spider-egg
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! spider-egg ((obj spider-egg) (arg0 entity-actor))
(set! (-> obj mask) (logior (process-mask enemy) (-> obj mask)))
(set! (-> obj mask) (logior (process-mask attackable) (-> obj mask)))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
)
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0))))
(set! (-> s3-0 prim-core collide-as) (the-as uint 256))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 1)
(set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4)
(set-root-prim! s4-0 s3-0)
)
(set! (-> s4-0 nav-radius) 4096.0)
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *spider-egg-unbroken-sg* '())
(dummy-9 (-> obj broken-look) *spider-egg-broken-sg* (-> obj draw art-group) (-> obj entity))
(set-vector! (-> obj root-override scale) 0.4 0.4 0.4 1.0)
(if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1)))
(go process-drawable-art-error "no ground")
)
(set! (-> obj root-override trans y) (+ -409.6 (-> obj root-override trans y)))
(let ((s4-1 (new 'stack-no-clear 'vector)))
(set! (-> s4-1 quad) (-> obj root-override surface-normal quad))
(+! (-> s4-1 x) (rand-vu-float-range -0.2 0.2))
(+! (-> s4-1 z) (rand-vu-float-range -0.2 0.2))
(vector-normalize! s4-1 1.0)
(quaternion-axis-angle!
(-> obj root-override quat)
(-> s4-1 x)
(-> s4-1 y)
(-> s4-1 z)
(rand-vu-float-range 0.0 65536.0)
)
)
(dummy-47 (-> obj root-override))
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
(if (> (entity-actor-count arg0 'alt-actor) 0)
(set! (-> obj notify-actor) (entity-actor-lookup arg0 'alt-actor 0))
(set! (-> obj notify-actor) #f)
)
(go spider-egg-idle #t)
(none)
)
+515
View File
@@ -0,0 +1,515 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type snow-bumper
(deftype snow-bumper (process-drawable)
((bumper-id int32 :offset-assert 176)
(base-shove-ry float :offset-assert 180)
(max-shove-diff-ry float :offset-assert 184)
(part2 sparticle-launch-control :offset-assert 188)
(last-shoved-player-time uint64 :offset-assert 192)
)
:heap-base #x60
:method-count-assert 22
:size-assert #xc8
:flag-assert #x16006000c8
(:methods
(dummy-20 (_type_) none 20)
(shove-player (_type_ process-drawable) none 21)
)
)
;; definition for method 3 of type snow-bumper
(defmethod inspect snow-bumper ((obj snow-bumper))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tbumper-id: ~D~%" (-> obj bumper-id))
(format #t "~T~Tbase-shove-ry: ~f~%" (-> obj base-shove-ry))
(format #t "~T~Tmax-shove-diff-ry: ~f~%" (-> obj max-shove-diff-ry))
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
(format #t "~T~Tlast-shoved-player-time: ~D~%" (-> obj last-shoved-player-time))
obj
)
;; failed to figure out what this is:
(defskelgroup *snow-bumper-sg* snow-bumper
0
-1
((1 (meters 20)) (2 (meters 999999)))
:bounds (static-spherem 0 2.2 0 3.4)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 519)
(new 'static 'sparticle-launch-group
:length 1
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-snow-bumper-idle"
:launcher
(new 'static 'inline-array sparticle-group-item 1
(sp-item 1893 :fade-after (meters 90.0) :falloff-to (meters 90.0) :period 25 :length 10)
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 1893) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 15.0)
(sp-flt spt-y (meters 1.5))
(sp-flt spt-z 0.0)
(sp-flt spt-scale-x (meters 1.5))
(sp-flt spt-scale-y (meters 6.0))
(sp-flt spt-r 0.0)
(sp-flt spt-g 64.0)
(sp-rnd-flt spt-b 64.0 32.0 1.0)
(sp-rnd-flt spt-a 32.0 64.0 1.0)
(sp-flt spt-vel-y (meters 0.013333334))
(sp-flt spt-scalevel-x (meters 0.0038461538))
(sp-flt spt-scalevel-y (meters -0.03076923))
(sp-flt spt-fade-a 0.0)
(sp-int spt-timer 25)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-flt spt-conerot-x (degrees 90.0))
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 5.0))
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 520) (new 'static 'sparticle-launch-group
:length 1
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-snow-bumper-shove"
:launcher
(new 'static 'inline-array sparticle-group-item 1 (sp-item 1895))
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 1895) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 19
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 16.0)
(sp-flt spt-x (meters 5.5))
(sp-flt spt-y (meters 1.5))
(sp-flt spt-z 0.0)
(sp-flt spt-scale-x (meters 2.0))
(sp-flt spt-scale-y (meters 6.0))
(sp-rnd-flt spt-r 64.0 32.0 1.0)
(sp-flt spt-g 64.0)
(sp-flt spt-b 0.0)
(sp-flt spt-a 64.0)
(sp-flt spt-vel-x (meters 0.033333335))
(sp-flt spt-scalevel-x (meters 0.008333334))
(sp-flt spt-scalevel-y (meters 0.2))
(sp-flt spt-fade-a 0.0)
(sp-int spt-timer 25)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 45.0) 1.0)
(sp-end)
)
)
)
;; definition for method 21 of type snow-bumper
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defmethod shove-player snow-bumper ((obj snow-bumper) (arg0 process-drawable))
(with-pp
(let ((s5-0 (new 'stack-no-clear 'vector)))
(vector-! s5-0 (-> arg0 root trans) (-> obj root trans))
(set! (-> s5-0 y) 0.0)
(vector-normalize! s5-0 1.0)
(let* ((f0-3 (atan (-> s5-0 x) (-> s5-0 z)))
(f30-0 (-> obj base-shove-ry))
(f28-0 (-> obj max-shove-diff-ry))
(f0-4 (deg- f0-3 f30-0))
)
(when (< f28-0 (fabs f0-4))
(let ((f30-1 (if (>= f0-4 0.0)
(+ f30-0 f28-0)
(- f30-0 f28-0)
)
)
)
(set-vector! s5-0 (sin f30-1) 0.0 (cos f30-1) 1.0)
)
)
)
(let ((f0-12 (+ -16384.0 (atan (-> s5-0 x) (-> s5-0 z)))))
(set! (-> *part-id-table* 1895 init-specs 17 initial-valuef) (+ -4096.0 f0-12))
)
(spawn (-> obj part2) (-> obj root trans))
(let ((s3-1 (new 'stack-no-clear 'vector)))
(vector-normalize-copy! s3-1 s5-0 32768.0)
(vector+! s3-1 s3-1 (-> obj root trans))
(vector-! s5-0 s3-1 (-> arg0 root trans))
)
(let ((f30-3 (vector-xz-length s5-0)))
(vector-normalize! s5-0 1.0)
(let ((a1-12 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-12 from) pp)
(set! (-> a1-12 num-params) 2)
(set! (-> a1-12 message) 'shove)
(set! (-> a1-12 param 0) (the-as uint #f))
(let ((v1-16 (new 'static 'attack-info :mask #xc2)))
(set! (-> v1-16 vector quad) (-> s5-0 quad))
(set! (-> v1-16 shove-up) 4096.0)
(set! (-> v1-16 shove-back) f30-3)
(set! (-> a1-12 param 1) (the-as uint v1-16))
)
(if (send-event-function *target* a1-12)
(set! (-> obj last-shoved-player-time) (the-as uint (-> *display* base-frame-counter)))
)
)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate snow-bumper-active-far-idle (snow-bumper)
:trans
(behavior ()
(if (and *target* (>= 135895450000.0 (vector-vector-xz-distance-squared (-> self root trans) (target-pos 0))))
(go snow-bumper-active-close-idle)
)
0
(none)
)
:code
(behavior ()
(transform-post)
(suspend)
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate snow-bumper-active-close-idle (snow-bumper)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack 'bonk)
(when (= (-> arg0 type) target)
(let ((gp-0 (-> arg3 param 0)))
(when (and
(>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0)))
((method-of-type touching-shapes-entry prims-touching?)
(the-as touching-shapes-entry gp-0)
(the-as collide-shape-moving (-> self root))
(the-as uint 1)
)
)
(close-specific-task! (game-task snow-bumpers) (task-status need-hint))
(go snow-bumper-deactivate)
)
)
)
)
)
)
:trans
(behavior ()
(cond
(*target*
(let* ((gp-0 (target-pos 0))
(f30-0 (vector-vector-xz-distance (-> self root trans) gp-0))
(f28-0 (- (-> gp-0 y) (-> self root trans y)))
)
(if (< 368640.0 f30-0)
(go snow-bumper-active-far-idle)
)
(if (and
(>= (- (-> *display* base-frame-counter) (the-as int (-> self last-shoved-player-time))) 150)
(>= 20480.0 f30-0)
(>= f28-0 -4096.0)
(>= 11059.2 f28-0)
)
(shove-player self *target*)
)
)
)
(else
(go snow-bumper-active-far-idle)
)
)
(spawn (-> self part) (-> self root trans))
(update! (-> self sound))
(none)
)
:code
(behavior ()
(transform-post)
(suspend)
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate snow-bumper-deactivate (snow-bumper)
:exit
(behavior () (stop! (-> self sound)) (logior! (-> self mask) (process-mask actor-pause)) (none))
:trans
(the-as (function none :behavior snow-bumper) rider-trans)
:code
(behavior ()
(local-vars (sv-16 symbol))
(logclear! (-> self mask) (process-mask actor-pause))
(sound-play-by-name (static-sound-name "bumper-pwr-dwn") (new-sound-id) 1024 0 0 1 #t)
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
(set! (-> a0-3 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
)
(set! (-> a0-3 param 1) 0.05)
(set! (-> a0-3 frame-num) 0.0)
(joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
)
(until (ja-done? 0)
(spawn (-> self part) (-> self root trans))
(update! (-> self sound))
(suspend)
(let ((a0-6 (-> self skel root-channel 0)))
(set! (-> a0-6 param 0) (the float (+ (-> a0-6 frame-group data 0 length) -1)))
(set! (-> a0-6 param 1) 0.05)
(joint-control-channel-group-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!)
)
)
(stop! (-> self sound))
(set! (-> self state-time) (-> *display* base-frame-counter))
(until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150)
(suspend)
)
(let ((a0-10 (-> self skel root-channel 0)))
(set! (-> a0-10 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
(set! (-> a0-10 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
)
(set! (-> a0-10 param 1) 0.02)
(set! (-> a0-10 frame-num) 0.0)
(joint-control-channel-group! a0-10 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-11 (-> self skel root-channel 0)))
(set! (-> a0-11 param 0) (the float (+ (-> a0-11 frame-group data 0 length) -1)))
(set! (-> a0-11 param 1) 0.02)
(joint-control-channel-group-eval! a0-11 (the-as art-joint-anim #f) num-func-seek!)
)
)
(process-entity-status! self (entity-perm-status complete) #t)
(set! sv-16 (the-as symbol #f))
(apply-all (-> self link) actor-link-subtask-complete-hook (& sv-16))
(when sv-16
(save-reminder (get-task-control (game-task snow-bumpers)) (-> self bumper-id) 0)
(go snow-bumper-spawn-fuel-cell)
)
(go snow-bumper-inactive-idle)
(none)
)
:post
(the-as (function none :behavior snow-bumper) rider-post)
)
;; failed to figure out what this is:
(defstate snow-bumper-spawn-fuel-cell (snow-bumper)
:code
(behavior ()
(ja-channel-set! 1)
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 5))
num-func-identity
)
(set! (-> gp-0 frame-num)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
)
)
(transform-post)
(if (not (task-complete? *game-info* (-> self entity extra perm task)))
(birth-pickup-at-point
(-> self root trans)
(pickup-type fuel-cell)
(the float (-> self entity extra perm task))
#t
self
(the-as fact-info #f)
)
)
(until (not (-> self child))
(suspend)
)
(go snow-bumper-inactive-idle)
(none)
)
)
;; failed to figure out what this is:
(defstate snow-bumper-inactive-idle (snow-bumper)
:code
(behavior ()
(set! (-> self root nav-radius) 6963.2)
(ja-channel-set! 1)
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 5))
num-func-identity
)
(set! (-> gp-0 frame-num)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
)
)
(transform-post)
(suspend)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
0
(none)
)
)
;; definition for method 10 of type snow-bumper
(defmethod deactivate snow-bumper ((obj snow-bumper))
(if (nonzero? (-> obj part2))
(kill-and-free-particles (-> obj part2))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition for method 7 of type snow-bumper
;; INFO: Return type mismatch process-drawable vs snow-bumper.
(defmethod relocate snow-bumper ((obj snow-bumper) (arg0 int))
(if (nonzero? (-> obj part2))
(&+! (-> obj part2) arg0)
)
(the-as
snow-bumper
((the-as (function process-drawable int process-drawable) (find-parent-method snow-bumper 7)) obj arg0)
)
)
;; definition for method 11 of type snow-bumper
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod init-from-entity! snow-bumper ((obj snow-bumper) (arg0 entity-actor))
(local-vars (sv-16 res-tag))
(set! (-> obj last-shoved-player-time) (the-as uint 0))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0)))
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3))
(set-vector! (-> s3-0 local-sphere) 0.0 9011.2 0.0 13926.4)
(set-root-prim! s4-0 s3-0)
(let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1))))
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-0 collide-with) (the-as uint 16))
(set! (-> s2-0 prim-core action) (the-as uint 3))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 6)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2)
(append-prim s3-0 s2-0)
)
(let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2))))
(set! (-> s2-1 prim-core collide-as) (the-as uint 512))
(set! (-> s2-1 collide-with) (the-as uint 16))
(set! (-> s2-1 prim-core action) (the-as uint 1))
(set! (-> s2-1 prim-core offense) 4)
(set! (-> s2-1 transform-index) 3)
(set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4)
(append-prim s3-0 s2-1)
)
)
(set! (-> s4-0 nav-radius) 20480.0)
(backup-collide-with-as s4-0)
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *snow-bumper-sg* '())
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 519) obj))
(set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 520) obj))
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
(set! (-> obj link) (new 'process 'actor-link-info obj))
(set! (-> obj bumper-id) (+ (actor-count-before (-> obj link)) 1))
(set! (-> obj sound) (new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "snow-bumper")
:volume #x400
:fo-max 40
)
(-> obj root trans)
)
)
(ja-channel-set! 1)
(let ((s5-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> obj draw art-group data 3))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(transform-post)
(set! (-> obj base-shove-ry) 0.0)
(set! (-> obj max-shove-diff-ry) 32768.0)
(set! sv-16 (new 'static 'res-tag))
(let ((v1-52 (res-lump-data (-> obj entity) 'rotmin (pointer float) :tag-ptr (& sv-16))))
(when v1-52
(set! (-> obj base-shove-ry) (-> v1-52 0))
(set! (-> obj max-shove-diff-ry) (-> v1-52 1))
)
)
(cond
((and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
(if (and
(= (get-reminder (get-task-control (game-task snow-bumpers)) 0) (-> obj bumper-id))
(not (task-complete? *game-info* (-> obj entity extra perm task)))
)
(go snow-bumper-spawn-fuel-cell)
(go snow-bumper-inactive-idle)
)
)
(else
(go snow-bumper-active-far-idle)
)
)
(none)
)
+5 -4
View File
@@ -3,7 +3,8 @@
;; definition of type ram
(deftype ram (process-drawable)
((ram-id int32 :offset-assert 176)
((root-override collide-shape-moving :offset 112)
(ram-id int32 :offset-assert 176)
(give-fuel-cell? symbol :offset-assert 180)
(give-fuel-cell-anim spool-anim :offset-assert 184)
(part2 sparticle-launch-control :offset-assert 188)
@@ -15,9 +16,9 @@
:size-assert #xe0
:flag-assert #x17007000e0
(:methods
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-20 (_type_) object 20)
(dummy-21 (_type_) object 21)
(dummy-22 (_type_) symbol 22)
)
)
+592
View File
@@ -0,0 +1,592 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(defskelgroup *ram-sg* ram
0
4
((1 (meters 20)) (2 (meters 40)) (3 (meters 999999)))
:bounds (static-spherem 0 5 0 8.5)
:longest-edge (meters 7.7)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 526) (new 'static 'sparticle-launch-group
:length 2
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-ram-hit-wall"
:launcher
(new 'static 'inline-array sparticle-group-item 2
(sp-item 1921)
(sp-item 1922 :fade-after (meters 60.0) :falloff-to (meters 60.0))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 1920) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 18
(sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2))
(sp-rnd-flt spt-num 64.0 16.0 1.0)
(sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 16.0 1.0)
(sp-rnd-flt spt-g 128.0 48.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0)
(sp-flt spt-scalevel-x (meters -0.00066666666))
(sp-copy-from-other spt-scalevel-y -4)
(sp-rnd-flt spt-accel-y -20.48 13.653334 1.0)
(sp-rnd-flt spt-friction 0.92 0.05 1.0)
(sp-int spt-timer 210)
(sp-cpuinfo-flags bit0 bit3 bit12)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 170.0) 1.0)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 1922) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 19
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 8.0)
(sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 100.0)
(sp-flt spt-g 100.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 64.0 64.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-flt spt-fade-a -0.60952383)
(sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0)
(sp-int spt-timer 210)
(sp-cpuinfo-flags bit2 bit3 bit12)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 1921) (new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 13
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 100.0)
(sp-flt spt-g 100.0)
(sp-flt spt-b 128.0)
(sp-flt spt-a 96.0)
(sp-flt spt-fade-a -2.1333334)
(sp-int spt-timer 42)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set! (-> *part-group-id-table* 527) (new 'static 'sparticle-launch-group
:length 1
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-ram-wheel-puffs"
:launcher
(new 'static 'inline-array sparticle-group-item 1
(sp-item 1923 :fade-after (meters 70.0) :falloff-to (meters 70.0))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set! (-> *part-id-table* 1923)
(new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0)
(sp-rnd-flt spt-z -2048.0 4096.0 1.0)
(sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0)
(sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 100.0)
(sp-flt spt-g 100.0)
(sp-flt spt-b 128.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0033333334) 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0)
(sp-flt spt-fade-a -0.26666668)
(sp-flt spt-accel-y -1.3653333)
(sp-int spt-timer 120)
(sp-cpuinfo-flags bit2)
(sp-end)
)
)
)
;; definition for method 20 of type ram
(defmethod dummy-20 ram ((obj ram))
(let ((gp-0 (-> obj part)))
(when (nonzero? gp-0)
(let ((a2-0 (-> obj node-list data 8 bone transform))
(s5-0 (new 'stack-no-clear 'vector))
)
(set-vector! s5-0 0.0 0.0 -49152.0 1.0)
(vector-matrix*! s5-0 s5-0 a2-0)
(set! (-> *part-id-table* 1920 init-specs 16 initial-valuef) (+ 16384.0 (-> obj orient-ry)))
(spawn gp-0 s5-0)
)
)
)
)
;; definition for method 21 of type ram
(defmethod dummy-21 ram ((obj ram))
(let ((gp-0 (-> obj part2)))
(let ((s3-0 (new 'stack-no-clear 'vector))
(s4-0 (new 'stack-no-clear 'vector))
)
(vector<-cspace! s3-0 (-> obj node-list data 5))
(set-vector! s4-0 13312.0 -5324.8 0.0 1.0)
(vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry))
(vector+! s4-0 s4-0 s3-0)
(spawn gp-0 s4-0)
(set-vector! s4-0 -13312.0 -5324.8 0.0 1.0)
(vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry))
(vector+! s4-0 s4-0 s3-0)
(spawn gp-0 s4-0)
)
(let ((s3-1 (new 'stack-no-clear 'vector))
(s4-1 (new 'stack-no-clear 'vector))
)
(vector<-cspace! s3-1 (-> obj node-list data 6))
(set-vector! s4-1 13312.0 -5324.8 0.0 1.0)
(vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry))
(vector+! s4-1 s4-1 s3-1)
(spawn gp-0 s4-1)
(set-vector! s4-1 -13312.0 -5324.8 0.0 1.0)
(vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry))
(vector+! s4-1 s4-1 s3-1)
(spawn gp-0 s4-1)
)
)
)
;; definition for method 22 of type ram
(defmethod dummy-22 ram ((obj ram))
(process-entity-status! obj (entity-perm-status complete) #t)
(let ((v1-0 (alt-actor-list-subtask-incomplete-count obj)))
(cond
((zero? v1-0)
(let ((v1-3 (-> obj entity extra perm)))
(logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage))
(set! (-> v1-3 user-int8 2) 1)
)
(if (not (task-complete? *game-info* (-> obj entity extra perm task)))
(return #t)
)
)
((= v1-0 1)
(close-specific-task! (game-task snow-ram) (task-status need-reminder))
)
(else
(close-specific-task! (game-task snow-ram) (task-status need-reminder-a))
)
)
)
#f
)
;; failed to figure out what this is:
(defstate ram-idle (ram)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack)
(when ((method-of-type touching-shapes-entry prims-touching?)
(the-as touching-shapes-entry (-> arg3 param 0))
(-> self root-override)
(the-as uint 1)
)
(let ((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) self)
(set! (-> a1-3 num-params) 2)
(set! (-> a1-3 message) 'attack)
(set! (-> a1-3 param 0) (-> arg3 param 0))
(let ((v1-7 (new 'static 'attack-info :mask #xc0)))
(set! (-> v1-7 shove-up) 2048.0)
(set! (-> v1-7 shove-back) 8192.0)
(set! (-> a1-3 param 1) (the-as uint v1-7))
)
(send-event-function arg0 a1-3)
)
)
)
)
)
:exit
(behavior () (logior! (-> self mask) (process-mask actor-pause)) (none))
:trans
(behavior ()
(rider-trans)
(if (-> self give-fuel-cell-anim)
(spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0)
)
(none)
)
:code
(behavior ()
(local-vars (sv-16 symbol))
(ja-channel-push! 1 22)
(while #t
(sound-play-by-name (static-sound-name "set-ram") (new-sound-id) 1024 0 0 1 #t)
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4)))
(set! (-> a0-2 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1))
)
(set! (-> a0-2 param 1) 1.0)
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!)
)
(until (ja-done? 0)
(suspend)
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1)))
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!)
)
)
(let ((gp-1 #f))
(sound-play-by-name (static-sound-name "slam-crash") (new-sound-id) 1024 0 0 1 #t)
(logclear! (-> self mask) (process-mask actor-pause))
(let ((a0-8 (-> self skel root-channel 0)))
(set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 5)))
(set! (-> a0-8 param 0)
(the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1))
)
(set! (-> a0-8 param 1) 1.0)
(set! (-> a0-8 frame-num) 0.0)
(joint-control-channel-group! a0-8 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!)
)
(until (ja-done? 0)
(let ((f30-0 (ja-aframe-num 0)))
(when (and (not gp-1) (>= f30-0 61.0))
(set! gp-1 #t)
(dummy-20 self)
)
(if (and (>= f30-0 62.0) (< f30-0 97.0))
(dummy-21 self)
)
)
(suspend)
(let ((a0-12 (-> self skel root-channel 0)))
(set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1)))
(set! (-> a0-12 param 1) 1.0)
(joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!)
)
)
)
(logior! (-> self mask) (process-mask actor-pause))
(set! sv-16 (the-as symbol #f))
(apply-function-forward (-> self link) actor-link-dead-hook (& sv-16))
(when (or sv-16 (nonzero? (-> self root-override riders num-riders)))
(let ((v1-67 (-> self entity extra perm)))
(logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage))
(set! (-> v1-67 user-int8 0) 1)
)
(send-event (ppointer->process (-> self child)) 'jump)
(go ram-fun-idle)
)
)
(none)
)
:post
(the-as (function none :behavior ram) rider-post)
)
;; failed to figure out what this is:
(defstate ram-fun-idle (ram)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(when (= (-> arg0 type) ram-boss)
(if (dummy-22 self)
(go ram-give-fuel-cell)
)
)
)
)
)
:trans
(behavior ()
(if (-> self give-fuel-cell-anim)
(spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0)
)
(none)
)
:code
(behavior ()
(if (-> self give-fuel-cell?)
(go ram-give-fuel-cell)
)
(ja-channel-push! 1 0)
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 6))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(transform-post)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
0
(none)
)
)
;; failed to figure out what this is:
(defstate ram-give-fuel-cell (ram)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(if (and (= (-> arg0 type) snowcam) (= (-> arg3 param 0) 'die))
(go ram-fun-idle)
)
)
)
)
:exit
(behavior ()
(process-entity-status! self (entity-perm-status bit-3) #f)
(logior! (-> self mask) (process-mask actor-pause))
(none)
)
:code
(behavior ()
(set! (-> self give-fuel-cell?) #f)
(ja-channel-push! 1 0)
(let ((gp-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-0
(the-as art-joint-anim (-> self draw art-group data 6))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(transform-post)
(when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim))
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #t)
(let* ((gp-1 (the-as snowcam (get-process *default-dead-pool* snowcam #x4000)))
(v1-14 (when gp-1
(let ((t9-6 (method-of-type snowcam activate)))
(t9-6 gp-1 self 'snowcam (the-as pointer #x70004000))
)
(run-now-in-process
gp-1
pov-camera-init-by-other
(-> self root-override trans)
*snowcam-sg*
(-> self give-fuel-cell-anim)
0
self
'()
)
(-> gp-1 ppointer)
)
)
)
(set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1))
)
(sound-play-by-name (static-sound-name "cell-prize") (new-sound-id) 1024 0 0 1 #t)
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
0
)
(go ram-fun-idle)
(none)
)
)
;; definition for method 10 of type ram
(defmethod deactivate ram ((obj ram))
(if (nonzero? (-> obj part2))
(kill-and-free-particles (-> obj part2))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition for method 7 of type ram
;; INFO: Return type mismatch process-drawable vs ram.
(defmethod relocate ram ((obj ram) (arg0 int))
(if (nonzero? (-> obj part2))
(&+! (-> obj part2) arg0)
)
(the-as ram ((method-of-type process-drawable relocate) obj arg0))
)
;; definition for method 11 of type ram
;; INFO: Return type mismatch object vs none.
(defmethod init-from-entity! ram ((obj ram) (arg0 entity-actor))
(set! (-> obj give-fuel-cell?) #f)
(set! (-> obj link) (new 'process 'actor-link-info obj))
(let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others))))
(set! (-> s4-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s4-0 reaction) default-collision-reaction)
(set! (-> s4-0 no-reaction)
(the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing)
)
(dummy-29 s4-0 1)
(let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0)))
(set! (-> s3-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3))
(set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 34816.0)
(set-root-prim! s4-0 s3-0)
(let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1))))
(set! (-> s2-0 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-0 collide-with) (the-as uint 16))
(set! (-> s2-0 prim-core action) (the-as uint 1))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 8)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0)
(append-prim s3-0 s2-0)
)
(let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2))))
(set! (-> s2-1 prim-core collide-as) (the-as uint 2048))
(set! (-> s2-1 collide-with) (the-as uint 16))
(set! (-> s2-1 prim-core action) (the-as uint 3))
(set! (-> s2-1 prim-core offense) 4)
(set! (-> s2-1 transform-index) 3)
(set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0)
(append-prim s3-0 s2-1)
)
(let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4))))
(set! (-> s2-2 prim-core collide-as) (the-as uint 256))
(set! (-> s2-2 collide-with) (the-as uint 16))
(set! (-> s2-2 prim-core offense) 0)
(set! (-> s2-2 transform-index) 3)
(set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8)
(append-prim s3-0 s2-2)
)
)
(set! (-> s4-0 nav-radius) 20480.0)
(backup-collide-with-as s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(initialize-skeleton obj *ram-sg* '())
(logior! (-> obj skel status) 1)
(ja-post)
(dummy-47 (-> obj root-override))
(set! (-> obj orient-ry) (quaternion-y-angle (-> obj root-override quat)))
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
(set! (-> obj part) (create-launch-control (-> *part-group-id-table* 526) obj))
(set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 527) obj))
(set! (-> obj ram-id) (res-lump-value arg0 'extra-id int))
(case (-> obj ram-id)
((1)
(set! (-> obj give-fuel-cell-anim)
(new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list '())
)
(set-vector! (-> obj fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0)
)
((2)
(set! (-> obj give-fuel-cell-anim)
(new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list '())
)
(set-vector! (-> obj fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0)
)
((3)
(set! (-> obj give-fuel-cell-anim)
(new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list '())
)
(set-vector! (-> obj fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0)
)
(else
(set! (-> obj give-fuel-cell-anim) #f)
)
)
(let ((s4-1 #f))
(if (nonzero? (-> obj entity extra perm user-int8 0))
(set! s4-1 #t)
)
(let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1)))
(when (not s3-1)
(when (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete)))
(set! s3-1 #t)
(if (and
(nonzero? (-> obj entity extra perm user-int8 2))
(not (task-complete? *game-info* (-> obj entity extra perm task)))
)
(birth-pickup-at-point
(-> obj fuel-cell-dest-pos)
(pickup-type fuel-cell)
(the float (-> obj entity extra perm task))
#f
obj
(the-as fact-info #f)
)
)
(go ram-fun-idle)
)
)
(cond
((and (not s3-1) (has-nav-mesh? arg0))
(cond
(s4-1
(let ((s5-1 (get-process *default-dead-pool* ram-boss #x4000)))
(when s5-1
(let ((t9-28 (method-of-type ram-boss activate)))
(t9-28 (the-as ram-boss s5-1) obj 'ram-boss (the-as pointer #x70004000))
)
(run-now-in-process s5-1 ram-boss-init-by-other (-> obj entity) obj #t)
(-> s5-1 ppointer)
)
)
(go ram-fun-idle)
)
(else
(let ((s5-2 (get-process *default-dead-pool* ram-boss #x4000)))
(when s5-2
(let ((t9-32 (method-of-type ram-boss activate)))
(t9-32 (the-as ram-boss s5-2) obj 'ram-boss (the-as pointer #x70004000))
)
(run-now-in-process s5-2 ram-boss-init-by-other (-> obj entity) obj #f)
(-> s5-2 ppointer)
)
)
(go ram-idle)
)
)
)
(else
(go ram-fun-idle)
)
)
)
)
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1570,7 +1570,7 @@
(set-vector! s5-0 -49152.0 10240.0 5529.6 1.0)
(vector+! s5-0 s5-0 (-> self entity extra trans))
(vector-! s4-0 gp-0 s5-0)
(let ((t2-0 (new 'stack-no-clear 'collide-mesh-cache-tri)))
(let ((t2-0 (new 'stack-no-clear 'collide-tri-result)))
0.0
(when (>= (dummy-10 *collide-cache* s5-0 s4-0 6144.0 16 (the-as process #f) t2-0 1) 0.0)
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
File diff suppressed because it is too large Load Diff