mirror of
https://github.com/open-goal/jak-project
synced 2026-07-29 23:49:11 -04:00
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:
+1
-1
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
+1652
File diff suppressed because it is too large
Load Diff
+1541
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
)
|
||||
+2457
File diff suppressed because it is too large
Load Diff
+782
@@ -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)
|
||||
)
|
||||
+1477
File diff suppressed because it is too large
Load Diff
+1929
File diff suppressed because it is too large
Load Diff
+674
@@ -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
@@ -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)
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
+1267
File diff suppressed because it is too large
Load Diff
+7
-7
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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)
|
||||
)
|
||||
+1153
File diff suppressed because it is too large
Load Diff
+1261
File diff suppressed because it is too large
Load Diff
+1
-1
@@ -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)))
|
||||
|
||||
+2030
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user