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

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

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

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

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

* decomp: finish `snow-bumper`

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

* decomp: finish `spider-egg`

* decomp: finish `puffer`

* decomp: finish `driller-lurker`

* decomp: finish `dark-crystal`

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

* decomp: finish `gnawer`

* decomp: finish `mother-spider-egg`

* decomp: finish `swamp-blimp`

* stuck: `mistycannon` prebind function signature

* decomp: finish `citb-plat`

* decomp: finish `darkvine`

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

* decomp: finish `launcherdoor`

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

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

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

* decomp: finish `voicebox`

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

* decomp: finish `bully`

* decomp: finish `seagull`

* fixed up after merge conflicts

* decomp: finish `jungle-mirrors`

* update gsrc

* double checked files, fixed issues

* decomp: revert change to projectile methods

* decomp: some more fixes

* address feedback

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

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