decomp: Continuing full pass of gameplay code (#839)

* decomp: finish `babak` - :code is called in `(code nav-enemy-patrol babak)`

* decomp: almost finish `process-taskable`

* blocked: mistycannon / pelican

* decomp: finish `babak-with-cannon` write a script to fix gsrc

* decomp: finish `process-taskable`

* decomp: finish `flutflut` and `yakow`

* decomp: finish `fishermans-boat`

* blocked: state decomp `training-obs`

* decomp: finish `muse`

* decomp: finish `bonelurker`

* blocked: state decomp in `quicksandlurker`| `balloonlurker`

* decomp: finish `assistant-village2`

* scripts: script to help updating goal_src

* starting to update goal_src

* tests: update ref tests

* src: more src updating

* src: waiting on `process-taskable` and `muse`

* blocked: `citb-plat` state decomp

* decomp: finish `square-platform`

* blocked: `orbit-plat` due to overlays + static data

* decomp: finish `qbert-plat`

* blocked: almost finish `misty-conveyor`, sparticle-callback

* blocked: jungle-mirrors

* blocked: state decomp in `swamp-blimp`

* decomp: finish `swamp-bat`

* decomp: finish `swamp-rat`

* decomp: finish `swamp-rat-nest`

* blocked: state decomp `kermit`

* decomp: finish `cavecrystal-light`

* decomp: finish `spiderwebs`

* blocked: state decomp `dark-crystal`

* decomp: finish `baby-spider`

* decomp: finish `mother-spider-h`

* decomp: finish `mother-spider-proj`

* blocked: state decomp in `gnawer`

* blocked: state decomp in `driller-lurker`

* blocked: `sun-exit-chamber` breaks when adding handle cast

* decomp: finish `sunken-water`

* blocked: `target-tube` ShortCircuitElement::push_to_stack

* decomp: finish `sunken-fish`

* blocked: `minecart` decomp crash when adding stack cast

* decomp: finish `assistant-village3`

* decomp: finish `sage-village3`

* blocked: `cave-trap` done but ran into `go` issue

* blocked: `spider-egg` state decomp

* decomp: finish `target-snowball`

* blocked/stuck: `target-ice` decomp issue around cpad

* pausing: ice-cube has some weird collide-shape-prim handling

* blocked: `snow-ball` state decomp

* blocked: `snow-bumper` state decomp

* decomp: finish `snow-ram-h`

* decomp: finish `yeti`

* decomp: finish `assistant-lavatube`

* re-enable the float cast log

* decomp: updating to new sparticle definitions

* decomp: address feedback up to `swamp-rat-nest`

* address remaining feedback

* all-types: move the `pointer` def

* add back temporary `hud-hidden?`
This commit is contained in:
Tyler Wilding
2021-09-28 20:42:00 -04:00
committed by GitHub
parent 4e7cdc7498
commit dd959d0d0d
136 changed files with 55142 additions and 5105 deletions
@@ -427,7 +427,7 @@
(dummy-46 (_type_) none 46)
(dummy-47 (_type_) none 47)
(dummy-48 (_type_) none 48)
(dummy-49 () none 49)
(dummy-49 (_type_) none 49)
(dummy-50 (_type_) none 50)
(dummy-51 () none 51)
(dummy-52 () none 52)
@@ -507,7 +507,7 @@
(dummy-58 (_type_ vector) none 58)
(dummy-59 (_type_ vector uint float symbol symbol symbol) none 59)
(dummy-60 (_type_ float float symbol uint) none 60)
(dummy-61 () none 61)
(TODO-RENAME-61 (_type_ vector vector vector) none 61)
(dummy-62 (_type_ vector float) vector 62)
(dummy-63 () none 63)
(dummy-64 () none 64)
@@ -97,6 +97,7 @@
(unknown-vector61 vector :inline :offset 1504)
(unknown-float70 float :offset 1520)
(unknown-vector70 vector :inline :offset 1536)
(unknown-vector71 vector :inline :offset 1552)
(unknown-handle00 handle :offset 1600)
(unknown-sphere-array00 collide-shape-prim-sphere 3 :offset 1608)
(unknown-sphere00 collide-shape-prim-sphere :offset 1632)
+1 -1
View File
@@ -229,7 +229,7 @@
:flag-assert #xd00000014
(:methods
(login (_type_) _type_ 9)
(dummy-10 (_type_ string type) art-element 10)
(dummy-10 (_type_ string type) joint 10)
(dummy-11 (_type_ string type) int 11)
(dummy-12 (_type_) symbol 12)
)
@@ -18,7 +18,7 @@
(:methods
(new (symbol type process-drawable) _type_ 0)
(dummy-9 () none 9)
(dummy-10 () none 10)
(dummy-10 (_type_ symbol float int) none 10)
(dummy-11 () none 11)
(dummy-12 () none 12)
(set-channel-offset! (_type_ int) none 13)
+13 -13
View File
@@ -234,21 +234,21 @@
;; definition of type gui-query
(deftype gui-query (structure)
((x-position int32 :offset-assert 0)
(y-position int32 :offset-assert 4)
(message basic :offset-assert 8)
(decision basic :offset-assert 12)
(only-allow-cancel basic :offset-assert 16)
(no-msg basic :offset-assert 20)
(message-space int32 :offset-assert 24)
((x-position int32 :offset-assert 0)
(y-position int32 :offset-assert 4)
(message symbol :offset-assert 8)
(decision symbol :offset-assert 12)
(only-allow-cancel symbol :offset-assert 16)
(no-msg symbol :offset-assert 20)
(message-space int32 :offset-assert 24)
)
:pack-me
:method-count-assert 11
:size-assert #x1c
:flag-assert #xb0000001c
(:methods
(dummy-9 () none 9)
(dummy-10 () none 10)
(init! (_type_ symbol int int int symbol symbol) none 9)
(dummy-10 (_type_) symbol 10)
)
)
@@ -267,7 +267,7 @@
;; definition of type othercam
(deftype othercam (process)
((hand uint64 :offset-assert 112)
((hand handle :offset-assert 112)
(old-global-mask uint32 :offset-assert 120)
(mask-to-clear uint32 :offset-assert 124)
(cam-joint-index int32 :offset-assert 128)
@@ -275,9 +275,9 @@
(old-mat-z vector :inline :offset-assert 160)
(had-valid-frame basic :offset-assert 176)
(border-value basic :offset-assert 180)
(die? basic :offset-assert 184)
(survive-anim-end? basic :offset-assert 188)
(spooling? basic :offset-assert 192)
(die? symbol :offset-assert 184)
(survive-anim-end? symbol :offset-assert 188)
(spooling? symbol :offset-assert 192)
)
:heap-base #x60
:method-count-assert 14
File diff suppressed because it is too large Load Diff
@@ -74,7 +74,7 @@
(:methods
(dummy-9 (_type_ vector int float process-drawable) none 9)
(TODO-RENAME-10 (_type_ vector int float process-drawable) vector 10)
(dummy-11 (_type_ string symbol vector) none 11)
(dummy-11 (_type_ string symbol vector) symbol 11)
)
)
@@ -89,15 +89,16 @@
;; definition of type process-taskable
(deftype process-taskable (process-drawable)
((tasks task-control :offset-assert 176)
((root-override collide-shape :offset 112)
(tasks task-control :offset-assert 176)
(query gui-query :inline :offset-assert 180)
(old-target-pos transformq :inline :offset-assert 208)
(cell-for-task game-task :offset-assert 256)
(cell-x uint64 :offset-assert 264)
(cell-x handle :offset-assert 264)
(cam-joint-index int32 :offset-assert 272)
(skippable basic :offset-assert 276)
(blend-on-exit basic :offset-assert 280)
(camera uint64 :offset-assert 288)
(camera handle :offset-assert 288)
(will-talk symbol :offset-assert 296)
(talk-message uint32 :offset-assert 300)
(last-talk uint64 :offset-assert 304)
@@ -112,7 +113,7 @@
(music basic :offset-assert 360)
(have-music symbol :offset-assert 364)
(been-kicked symbol :offset-assert 368)
(cur-trans-hook function :offset-assert 372)
(cur-trans-hook (function none) :offset-assert 372)
(shadow-backup shadow-geo :offset-assert 376)
)
:heap-base #x110
@@ -120,38 +121,38 @@
:size-assert #x17c
:flag-assert #x350110017c
(:methods
(dummy-20 () none 20)
(release () _type_ :state 20)
(give-cell () _type_ :state 21)
(dummy-22 () none 22)
(enter-playing () none 23)
(play-accept () none 24)
(dummy-25 () none 25)
(query () none 26)
(lose () _type_ :state 22)
(enter-playing () _type_ :state 23)
(play-accept () _type_ :state 24)
(play-reject () _type_ :state 25)
(query () _type_ :state 26)
(play-anim () _type_ :state 27)
(hidden () _type_ :state 28)
(dummy-29 () none 29)
(be-clone (handle) _type_ :state 29)
(idle () _type_ :state 30)
(get-art-elem (_type_) art-element 31)
(play-anim! (_type_ symbol) basic 32)
(dummy-33 (_type_) none 33)
(dummy-34 (_type_) none 34)
(TODO-RENAME-34 (_type_ symbol) symbol 34)
(dummy-35 (_type_) none 35)
(dummy-36 (_type_) none 36)
(dummy-37 (_type_) none 37)
(get-spool-anim-or-?? (_type_ symbol) basic 36)
(spool-push-anim (_type_) none 37)
(dummy-38 (_type_) none 38)
(should-display? (_type_) symbol 39)
(dummy-40 (_type_ object skeleton-group int int vector int) none 40)
(initialize-collision (_type_ int) none 41)
(initialize-collision (_type_ int vector) none 41)
(dummy-42 (_type_) none 42)
(TODO-RENAME-43 (_type_) none 43)
(TODO-RENAME-43 (_type_) symbol 43)
(play-reminder (_type_) symbol 44)
(dummy-45 (_type_) none 45)
(dummy-46 (_type_) none 46)
(target-above-threshold? (_type_) symbol 47)
(draw-shadow (_type_) none 48)
(dummy-49 (_type_) none 49)
(dummy-50 (_type_) none 50)
(dummy-51 (_type_) none 51)
(draw-npc-shadow (_type_) none 48)
(hidden-other () _type_ :state 49)
(TODO-RENAME-50 (_type_) symbol 50)
(close-anim-file! (_type_) symbol 51)
(dummy-52 (_type_) none 52)
)
)
@@ -15,7 +15,7 @@
(func function :offset 4)
(tex uint32 :offset 4)
(pntr pointer :offset 4)
(sound basic :offset 4)
(sound sound-spec :offset 4)
)
:method-count-assert 9
:size-assert #x10
+2 -2
View File
@@ -384,11 +384,11 @@
(dummy-11 (_type_ vector) none 11)
(dummy-12 () none 12)
(dummy-13 () none 13)
(dummy-14 (_type_) none 14)
(set-current-poly! (_type_ nav-poly) none 14)
(set-target-pos! (_type_ vector) none 15)
(dummy-16 (_type_ vector) nav-poly 16)
(dummy-17 () none 17)
(dummy-18 () none 18)
(TODO-RENAME-18 (_type_ vector) nav-poly 18)
(dummy-19 (_type_ vector collide-shape-moving vector float) none 19)
(dummy-20 () none 20)
(dummy-21 () none 21)
@@ -2781,7 +2781,7 @@
(set-continue! *game-info* arg0)
(stack-size-set! (-> self main-thread) 1024)
(logior! (-> self mask) (process-mask target))
(set! (-> self state-hook) nothing)
(set! (-> self state-hook) (the-as (function none :behavior target) nothing))
(let ((s5-0 (new 'process 'control-info self (collide-list-enum player))))
(set! (-> self control) s5-0)
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
+25 -25
View File
@@ -3,31 +3,31 @@
;; definition of type target
(deftype target (process-drawable)
((control control-info :offset 112)
(fact-info-target fact-info-target :offset 144)
(skel2 basic :offset-assert 176)
(racer basic :offset-assert 180)
(game game-info :offset-assert 184)
(neck joint-mod :offset-assert 188)
(state-hook-time uint64 :offset-assert 192)
(state-hook function :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
(alt-cam-pos vector :inline :offset-assert 448)
(snowball basic :offset-assert 464)
(tube basic :offset-assert 468)
(flut basic :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud uint64 :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
((control control-info :offset 112)
(fact-info-target fact-info-target :offset 144)
(skel2 basic :offset-assert 176)
(racer basic :offset-assert 180)
(game game-info :offset-assert 184)
(neck joint-mod :offset-assert 188)
(state-hook-time uint64 :offset-assert 192)
(state-hook (function none :behavior target) :offset-assert 200)
(cam-user-mode symbol :offset-assert 204)
(sidekick (pointer sidekick) :offset-assert 208)
(manipy (pointer manipy) :offset-assert 212)
(attack-info attack-info :inline :offset-assert 224)
(attack-info-rec attack-info :inline :offset-assert 336)
(anim-seed uint64 :offset-assert 440)
(alt-cam-pos vector :inline :offset-assert 448)
(snowball snowball-info :offset-assert 464)
(tube tube-info :offset-assert 468)
(flut basic :offset-assert 472)
(current-level level :offset-assert 476)
(saved-pos transformq :inline :offset-assert 480)
(saved-owner uint64 :offset-assert 528)
(alt-neck-pos vector :inline :offset-assert 544)
(fp-hud uint64 :offset-assert 560)
(no-load-wait uint64 :offset-assert 568)
(no-look-around-wait uint64 :offset-assert 576)
)
:heap-base #x1e0
:method-count-assert 21
@@ -94,7 +94,7 @@
(run-now-in-process
s5-1
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*flutflut-naked-sg*
#f
@@ -138,7 +138,7 @@
(run-now-in-process
s5-2
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*flutflutegg-sg*
#f
+6 -7
View File
@@ -42,7 +42,7 @@
(defmethod dummy-52 bird-lady ((obj bird-lady))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -1024.0 f0-0)))
)
@@ -59,7 +59,7 @@
)
;; definition for method 48 of type bird-lady
(defmethod draw-shadow bird-lady ((obj bird-lady))
(defmethod draw-npc-shadow bird-lady ((obj bird-lady))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -71,7 +71,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -243,18 +243,17 @@
)
(cond
((< 0.66 f0-2)
(dummy-11 (-> obj ambient) "BIR-LO02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "BIR-LO02" #f (-> obj root-override trans))
)
((< 0.33 f0-2)
(dummy-11 (-> obj ambient) "BIR-LO03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "BIR-LO03" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "BIR-am08" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "BIR-am08" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; definition for method 47 of type bird-lady
+3 -5
View File
@@ -3,8 +3,7 @@
;; definition of type mayor
(deftype mayor (process-taskable)
((root-override collide-shape :offset 112)
)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
@@ -56,7 +55,7 @@
)
;; definition for method 48 of type mayor
(defmethod draw-shadow mayor ((obj mayor))
(defmethod draw-npc-shadow mayor ((obj mayor))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -68,7 +67,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -2149,7 +2148,6 @@
)
)
)
(none)
)
;; failed to figure out what this is:
+11 -12
View File
@@ -60,7 +60,7 @@
(defmethod dummy-52 sculptor ((obj sculptor))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0)))
)
@@ -74,7 +74,7 @@
)
;; definition for method 48 of type sculptor
(defmethod draw-shadow sculptor ((obj sculptor))
(defmethod draw-npc-shadow sculptor ((obj sculptor))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -86,7 +86,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -307,7 +307,7 @@
(run-now-in-process
s5-1
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*sculptor-muse-sg*
#f
@@ -390,30 +390,29 @@
)
(cond
((< 0.85714287 f0-2)
(dummy-11 (-> obj ambient) "SCU-LO01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-LO01" #f (-> obj root-override trans))
)
((< 0.71428573 f0-2)
(dummy-11 (-> obj ambient) "SCU-AM05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-AM05" #f (-> obj root-override trans))
)
((< 0.5714286 f0-2)
(dummy-11 (-> obj ambient) "SCU-AM06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-AM06" #f (-> obj root-override trans))
)
((< 0.42857143 f0-2)
(dummy-11 (-> obj ambient) "SCU-AM03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-AM03" #f (-> obj root-override trans))
)
((< 0.2857143 f0-2)
(dummy-11 (-> obj ambient) "SCU-AM04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-AM04" #f (-> obj root-override trans))
)
((< 0.14285715 f0-2)
(dummy-11 (-> obj ambient) "SCU-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-AM01" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "SCU-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SCU-AM02" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; failed to figure out what this is:
@@ -146,7 +146,10 @@
*target*
(>=
61440.0
(vector-vector-distance (-> self root trans) (-> *target* control trans))
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
(not
@@ -274,7 +277,3 @@
(dummy-42 obj)
(none)
)
@@ -0,0 +1,732 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type babak-with-cannon
(deftype babak-with-cannon (babak)
((cannon-ent entity :offset-assert 400)
(distance float :offset-assert 404)
)
:heap-base #x130
:method-count-assert 76
:size-assert #x198
:flag-assert #x4c01300198
)
;; definition for method 3 of type babak-with-cannon
(defmethod inspect babak-with-cannon ((obj babak-with-cannon))
(let ((t9-0 (method-of-type babak inspect)))
(t9-0 obj)
)
(format #t "~T~Tcannon-ent: ~A~%" (-> obj cannon-ent))
(format #t "~T~Tdistance: ~f~%" (-> obj distance))
obj
)
;; failed to figure out what this is:
nav-enemy-default-event-handler
;; failed to figure out what this is:
(defstate nav-enemy-idle (babak-with-cannon)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
nav-enemy-default-event-handler
)
:trans
(behavior ()
(if
(and
(and
*target*
(>=
(-> self enemy-info idle-distance)
(vector-vector-distance
(-> self collide-info trans)
(-> *target* control trans)
)
)
)
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
(-> self state-timeout)
)
)
(go-virtual nav-enemy-patrol)
)
(none)
)
:code
(behavior ()
(ja-channel-push! 1 22)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 frame-group)
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info idle-anim))
)
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info idle-anim))
)
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) 1.0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info idle-anim))
)
num-func-seek!
)
)
(until (ja-done? 0)
(ja-post)
(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) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(anim-loop)
(none)
)
:post
(the-as (function none :behavior babak-with-cannon) #f)
)
;; failed to figure out what this is:
(defstate nav-enemy-patrol (babak-with-cannon)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
nav-enemy-default-event-handler
)
:trans
(behavior ()
(when
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
30
)
(let ((f30-0 (- (-> (target-pos 0) y) (-> self collide-info trans y))))
(if
(and
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
900
)
(or
(or
(not *target*)
(<
(-> self distance)
(vector-vector-distance
(-> self collide-info trans)
(-> *target* control trans)
)
)
)
(< f30-0 -40960.0)
)
)
(go babak-run-to-cannon)
)
)
(when
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
(-> self state-timeout)
)
(if
(or
(not *target*)
(<
(-> self enemy-info idle-distance)
(vector-vector-distance
(-> self collide-info trans)
(-> *target* control trans)
)
)
)
(go-virtual nav-enemy-idle)
)
)
(if (nav-enemy-notice-player?)
(go-virtual nav-enemy-notice)
)
)
(none)
)
:code
(-> (method-of-type babak nav-enemy-patrol) code)
)
;; failed to figure out what this is:
(defstate babak-run-to-cannon (babak)
:event
(the-as
(function process int symbol event-message-block object :behavior babak)
nav-enemy-default-event-handler
)
:enter
(behavior ()
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
(set! (-> self nav destination-pos quad) (-> self entity extra trans quad))
(set! (-> self nav target-pos quad) (-> self entity extra trans quad))
(none)
)
:trans
(behavior ()
(if (nav-enemy-notice-player?)
(go-virtual nav-enemy-chase)
)
(if (logtest? (nav-control-flags bit19) (-> self nav flags))
(go babak-with-cannon-jump-onto-cannon)
)
(none)
)
:code
(behavior ()
(ja-channel-push! 1 22)
(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 8))
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 8))
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) 1.0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as art-joint-anim (-> self draw art-group data 8))
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) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
(none)
)
:post
(behavior ()
(nav-enemy-travel-post)
(none)
)
)
;; definition for function handle->process-safe
(defun handle->process-safe ((arg0 handle))
(let ((v0-0 (the-as process #f)))
(if (handle->process arg0)
(set! v0-0 (-> arg0 process 0))
)
v0-0
)
)
;; definition for function babak-with-cannon-compute-cannon-dir
;; Used lq/sq
(defun babak-with-cannon-compute-cannon-dir ((arg0 mistycannon) (arg1 vector))
(set! (-> arg1 quad) (-> arg0 node-list data 3 bone transform vector 2 quad))
arg1
)
;; 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))
(let ((a1-4 (new 'static 'vector :y 18149.377 :z -17289.217 :w 1.0))
(a2-0 (-> arg0 node-list data 3 bone transform))
)
(vector-matrix*! arg1 a1-4 a2-0)
)
arg1
)
;; definition for function babak-with-cannon-ride-cannon-post
(defbehavior babak-with-cannon-ride-cannon-post babak-with-cannon ()
(let* ((v1-0 (-> self cannon-ent))
(s5-0 (if v1-0
(-> v1-0 extra process)
)
)
(gp-0
(if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable))
s5-0
)
)
)
(when gp-0
(let ((s5-1 (new 'stack-no-clear 'vector)))
(babak-with-cannon-compute-cannon-dir (the-as mistycannon gp-0) s5-1)
(forward-up->quaternion (-> self collide-info quat) s5-1 *y-vector*)
)
(babak-with-cannon-compute-ride-point
(the-as mistycannon gp-0)
(-> self collide-info trans)
)
)
)
(nav-enemy-simple-post)
(none)
)
;; failed to figure out what this is:
(defstate babak-with-cannon-jump-onto-cannon (babak-with-cannon)
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
nav-enemy-jump-event-handler
)
:exit
(behavior ()
(logior! (-> self nav-enemy-flags) 24)
(none)
)
:code
(behavior ()
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
(set! (-> self rotate-speed) (-> self nav-info run-rotate-speed))
(set! (-> self turn-time) (the-as int (-> self nav-info run-turn-time)))
(set! (-> self nav-enemy-flags) (logand -25 (-> self nav-enemy-flags)))
(nav-enemy-neck-control-inactive)
(let* ((v1-7 (-> self cannon-ent))
(gp-0 (if v1-7
(-> v1-7 extra process)
)
)
(a0-2
(if
(and (nonzero? gp-0) (type-type? (-> gp-0 type) process-drawable))
gp-0
)
)
)
(cond
(a0-2
(babak-with-cannon-compute-ride-point
(the-as mistycannon a0-2)
(-> self event-param-point)
)
(nav-enemy-initialize-jump (-> self event-param-point))
)
(else
(go-virtual nav-enemy-idle)
)
)
)
(when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335))
(ja-channel-push! 1 60)
(nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445)
)
(logior! (-> self nav-enemy-flags) 16)
(nav-enemy-execute-jump)
(set! (-> self nav-enemy-flags) (logand -25 (-> self nav-enemy-flags)))
(let* ((v1-20 (-> self cannon-ent))
(gp-1 (if v1-20
(-> v1-20 extra process)
)
)
(a0-9
(if
(and (nonzero? gp-1) (type-type? (-> gp-1 type) process-drawable))
gp-1
)
)
)
(when a0-9
(let
((gp-2
(babak-with-cannon-compute-cannon-dir
(the-as mistycannon a0-9)
(new 'stack-no-clear 'vector)
)
)
)
(when (not (nav-enemy-facing-direction? gp-2 1820.4445))
(ja-channel-push! 1 60)
(nav-enemy-turn-to-face-dir gp-2 182.04445)
(forward-up->quaternion (-> self collide-info quat) gp-2 *y-vector*)
)
)
)
)
(ja-channel-push! 1 30)
(let ((a0-15 (-> self skel root-channel 0)))
(set!
(-> a0-15 frame-group)
(the-as art-joint-anim (-> self draw art-group data 17))
)
(set!
(-> a0-15 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 17))
data
0
length
)
-1
)
)
)
(set! (-> a0-15 param 1) 1.0)
(set! (-> a0-15 frame-num) 0.0)
(joint-control-channel-group!
a0-15
(the-as art-joint-anim (-> self draw art-group data 17))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(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) 1.0)
(joint-control-channel-group-eval!
a0-16
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(go babak-with-cannon-shooting)
(none)
)
:post
(the-as (function none :behavior babak-with-cannon) nav-enemy-jump-post)
)
;; failed to figure out what this is:
(defstate babak-with-cannon-jump-off-cannon (babak-with-cannon)
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
nav-enemy-jump-event-handler
)
:exit
(behavior ()
(logior! (-> self nav-enemy-flags) 24)
(none)
)
:code
(behavior ()
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
(nav-enemy-initialize-jump (-> self entity extra trans))
(nav-enemy-neck-control-look-at)
(set! (-> self nav-enemy-flags) (logand -25 (-> self nav-enemy-flags)))
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 frame-group)
(the-as art-joint-anim (-> self draw art-group data 17))
)
(set! (-> a0-2 param 0) 0.0)
(set! (-> a0-2 param 1) 2.0)
(set!
(-> a0-2 frame-num)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 17))
data
0
length
)
-1
)
)
)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> self draw art-group data 17))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-3 (-> self skel root-channel 0)))
(set! (-> a0-3 param 0) 0.0)
(set! (-> a0-3 param 1) 2.0)
(joint-control-channel-group-eval!
a0-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335))
(ja-channel-push! 1 60)
(nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445)
)
(logior! (-> self nav-enemy-flags) 16)
(nav-enemy-execute-jump)
(let ((a1-6 (dummy-16 (-> self nav) (-> self jump-dest))))
(set-current-poly! (-> self nav) a1-6)
)
(go-virtual nav-enemy-jump-land)
(none)
)
:post
(the-as (function none :behavior babak-with-cannon) nav-enemy-jump-post)
)
;; failed to figure out what this is:
(defstate babak-with-cannon-shooting (babak-with-cannon)
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
nav-enemy-default-event-handler
)
:enter
(behavior ()
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
(let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor 0)))
(if v1-2
(logior! (-> v1-2 extra perm status) (entity-perm-status complete))
)
)
(none)
)
:exit
(behavior ()
(let ((v1-0 (entity-actor-lookup (-> self entity) 'alt-actor 0)))
(if v1-0
(logclear! (-> v1-0 extra perm status) (entity-perm-status complete))
)
)
(none)
)
:trans
(behavior ()
(let ((f0-1 (- (-> (target-pos 0) y) (-> self collide-info trans y))))
(if
(and
(< -40960.0 f0-1)
(and
(and
*target*
(>=
(-> self distance)
(vector-vector-distance
(-> self collide-info trans)
(-> *target* control trans)
)
)
)
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
900
)
)
)
(go babak-with-cannon-jump-off-cannon)
)
)
(none)
)
:code
(behavior ()
(while #t
(suspend)
)
(none)
)
:post
babak-with-cannon-ride-cannon-post
)
;; failed to figure out what this is:
(defstate nav-enemy-die (babak-with-cannon)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
nav-enemy-default-event-handler
)
:trans
(behavior ()
(if (and *target* (= (-> *target* current-level name) 'beach))
(spool-push *art-control* "beachcam-cannon" 0 self -1.0)
)
(if (and *target* (= (-> *target* current-level name) 'misty))
(spool-push *art-control* "mistycam-cannon" 0 self -1.0)
)
(let
((t9-3
(->
(the-as (state nav-enemy) (find-parent-method babak-with-cannon 23))
trans
)
)
)
(if t9-3
(t9-3)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-fuel-cell (babak-with-cannon)
:virtual #t
:event
(the-as
(function process int symbol event-message-block object :behavior babak-with-cannon)
process-drawable-fuel-cell-handler
)
:code
(behavior ()
(ja-channel-set! 0)
(dummy-48 (-> self collide-info))
(ja-post)
(when (not (task-complete? *game-info* (-> self entity extra perm task)))
(when
(not
(and
(-> self entity)
(logtest?
(-> self entity extra perm status)
(entity-perm-status complete)
)
)
)
(process-entity-status! self (entity-perm-status complete) #t)
(if (and *target* (= (-> *target* current-level name) 'beach))
(beachcam-spawn)
)
(if (and *target* (= (-> *target* current-level name) 'misty))
(mistycam-spawn)
)
)
(if (not (-> self child))
(birth-pickup-at-point
(-> self collide-info trans)
6
(the float (-> self entity extra perm task))
#f
self
#f
)
)
(while (-> self child)
(suspend)
)
)
(dummy-18 self)
(none)
)
)
;; definition for method 39 of type babak-with-cannon
(defmethod common-post babak-with-cannon ((obj babak-with-cannon))
(cond
((= (level-status *level* 'beach) 'active)
(spool-push *art-control* "beachcam-cannon" 0 obj -99.0)
)
((= (level-status *level* 'misty) 'active)
(spool-push *art-control* "mistycam-cannon" 0 obj -99.0)
)
)
((method-of-type nav-enemy common-post) obj)
(none)
)
;; definition for method 11 of type babak-with-cannon
(defmethod
copy-defaults!
babak-with-cannon
((obj babak-with-cannon) (arg0 res-lump))
(initialize-collision obj)
(process-drawable-from-entity! obj arg0)
(TODO-RENAME-48 obj)
(set! (-> obj distance) (res-lump-float arg0 'distance :default 163840.0))
(set! (-> obj cannon-ent) (entity-actor-lookup (-> obj entity) 'alt-actor 0))
(logclear! (-> obj mask) (process-mask actor-pause))
(if
(or
(not
(and
(-> obj entity)
(logtest? (-> obj entity extra perm status) (entity-perm-status complete))
)
)
(zero? (logand (-> obj enemy-info options) 2))
)
(go (method-of-object obj nav-enemy-idle))
)
(go (method-of-object obj nav-enemy-fuel-cell))
(none)
)
+717
View File
@@ -0,0 +1,717 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type babak
(deftype babak (nav-enemy)
()
:heap-base #x120
:method-count-assert 76
:size-assert #x190
:flag-assert #x4c01200190
)
;; definition for method 3 of type babak
(defmethod inspect babak ((obj babak))
(let ((t9-0 (method-of-type nav-enemy inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "babak"
:bounds
(new 'static 'vector :y 8192.0 :w 12288.0)
:max-lod 2
:longest-edge (meters 1.0)
:version #x6
:shadow 4
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) -1)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *babak-sg* v1-1)
)
;; failed to figure out what this is:
(defstate nav-enemy-patrol (babak)
:virtual #t
:code
(behavior ()
(cond
((= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 10)
)
(ja-channel-push! 1 45)
(let ((gp-0 (-> self skel root-channel 0)))
(set!
(-> gp-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 6))
)
(set!
(-> gp-0 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 6))
data
0
length
)
-1
)
)
)
(set! (-> gp-0 param 1) 1.0)
(set! (-> gp-0 frame-num) (ja-aframe 12.0 0))
(joint-control-channel-group!
gp-0
(the-as art-joint-anim (-> self draw art-group data 6))
num-func-seek!
)
)
(until (ja-done? 0)
(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) 1.0)
(joint-control-channel-group-eval!
a0-7
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
(else
(ja-channel-push! 1 60)
)
)
((the-as
(function none)
(-> (method-of-type nav-enemy nav-enemy-patrol) code)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-chase (babak)
:virtual #t
:code
(behavior ()
(let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)))
(cond
((= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 14)
)
(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) 1.0)
(joint-control-channel-group!
a0-5
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-channel-push! 1 51)
(let ((a0-7 (-> self skel root-channel 0)))
(set!
(-> a0-7 frame-group)
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info run-anim))
)
)
(set!
(-> a0-7 param 0)
(the
float
(+
(->
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info run-anim))
)
data
0
length
)
-1
)
)
)
(set! (-> a0-7 param 1) f30-0)
(set! (-> a0-7 frame-num) 0.0)
(joint-control-channel-group!
a0-7
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info run-anim))
)
num-func-seek!
)
)
(until (ja-done? 0)
(ja-blend-eval)
(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) f30-0)
(joint-control-channel-group-eval!
a0-8
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
(else
(ja-channel-push! 1 60)
(let ((v1-42 (-> self skel root-channel 0)))
(set!
(-> v1-42 frame-group)
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info run-anim))
)
)
)
(let ((v1-45 (-> self skel root-channel 0)))
(set! (-> v1-45 num-func) num-func-identity)
(set! (-> v1-45 frame-num) 0.0)
)
)
)
(while #t
(suspend)
(let ((a0-17 (-> self skel root-channel 0)))
(set! (-> a0-17 param 0) f30-0)
(joint-control-channel-group-eval!
a0-17
(the-as art-joint-anim #f)
num-func-loop!
)
)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-stare (babak)
:virtual #t
:code
(behavior ()
(set! (-> self turn-time) 60)
(let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2)))
(when
(or
(logtest? (-> self nav-enemy-flags) 256)
(and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5))
)
(ja-channel-push! 1 30)
(let ((gp-0 (-> self skel root-channel 0)))
(set!
(-> gp-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 11))
)
(set! (-> gp-0 param 0) (ja-aframe 68.0 0))
(set! (-> gp-0 param 1) f30-0)
(set! (-> gp-0 frame-num) 0.0)
(joint-control-channel-group!
gp-0
(the-as art-joint-anim (-> self draw art-group data 11))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 param 0) (ja-aframe 68.0 0))
(set! (-> gp-1 param 1) f30-0)
(joint-control-channel-group-eval!
gp-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
(while #t
(when (not (nav-enemy-facing-player? 2730.6667))
(logior! (-> self nav-enemy-flags) 16)
(let ((a0-9 (-> self skel root-channel 0)))
(set! (-> a0-9 param 0) 1.0)
(joint-control-channel-group!
a0-9
(the-as art-joint-anim #f)
num-func-loop!
)
)
(ja-channel-push! 1 60)
(let ((v1-25 (-> self skel root-channel 0)))
(set!
(-> v1-25 frame-group)
(the-as art-joint-anim (-> self draw art-group data 16))
)
)
(let ((v1-28 (-> self skel root-channel 0)))
(set! (-> v1-28 num-func) num-func-identity)
(set! (-> v1-28 frame-num) 0.0)
)
(until (nav-enemy-facing-player? 1820.4445)
(ja-blend-eval)
(suspend)
(let ((a0-15 (-> self skel root-channel 0)))
(set! (-> a0-15 param 0) 0.75)
(joint-control-channel-group-eval!
a0-15
(the-as art-joint-anim #f)
num-func-loop!
)
)
)
(set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags)))
)
(if (not (= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(-> self draw art-group data 5)
)
)
(ja-channel-push! 1 60)
)
(let ((a0-23 (-> self skel root-channel 0)))
(set!
(-> a0-23 frame-group)
(the-as art-joint-anim (-> self draw art-group data 5))
)
(set!
(-> a0-23 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 5))
data
0
length
)
-1
)
)
)
(set! (-> a0-23 param 1) f30-0)
(set! (-> a0-23 frame-num) 0.0)
(joint-control-channel-group!
a0-23
(the-as art-joint-anim (-> self draw art-group data 5))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-24 (-> self skel root-channel 0)))
(set!
(-> a0-24 param 0)
(the float (+ (-> a0-24 frame-group data 0 length) -1))
)
(set! (-> a0-24 param 1) f30-0)
(joint-control-channel-group-eval!
a0-24
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(when (nav-enemy-rnd-percent? 0.3)
(ja-channel-push! 1 30)
(let ((gp-2 (-> self skel root-channel 0)))
(set!
(-> gp-2 frame-group)
(the-as art-joint-anim (-> self draw art-group data 11))
)
(set! (-> gp-2 param 0) (ja-aframe 68.0 0))
(set! (-> gp-2 param 1) f30-0)
(set! (-> gp-2 frame-num) 0.0)
(joint-control-channel-group!
gp-2
(the-as art-joint-anim (-> self draw art-group data 11))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((gp-3 (-> self skel root-channel 0)))
(set! (-> gp-3 param 0) (ja-aframe 68.0 0))
(set! (-> gp-3 param 1) f30-0)
(joint-control-channel-group-eval!
gp-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-give-up (babak)
:virtual #t
:code
(behavior ()
(set! (-> self rotate-speed) 218453.33)
(set! (-> self turn-time) 150)
(ja-channel-push! 1 45)
(let ((s4-0 (-> self collide-info))
(s5-0 (target-pos 0))
)
(when
(<
(fabs
(deg-diff
(y-angle s4-0)
(vector-y-angle
(vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans))
)
)
)
12743.111
)
(let ((a0-6 (-> self skel root-channel 0)))
(set!
(-> a0-6 frame-group)
(the-as art-joint-anim (-> self draw art-group data 9))
)
(set!
(-> a0-6 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 9))
data
0
length
)
-1
)
)
)
(set! (-> a0-6 param 1) 1.0)
(set! (-> a0-6 frame-num) 0.0)
(joint-control-channel-group!
a0-6
(the-as art-joint-anim (-> self draw art-group data 9))
num-func-seek!
)
)
(until (ja-done? 0)
(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) 1.0)
(joint-control-channel-group-eval!
a0-7
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
)
(logclear! (-> self nav flags) (nav-control-flags bit17 bit19))
(nav-enemy-get-new-patrol-point)
(let ((a0-12 (-> self skel root-channel 0)))
(set!
(-> a0-12 frame-group)
(the-as art-joint-anim (-> self draw art-group data 10))
)
(set!
(-> a0-12 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 10))
data
0
length
)
-1
)
)
)
(set! (-> a0-12 param 1) 1.0)
(set! (-> a0-12 frame-num) 0.0)
(joint-control-channel-group!
a0-12
(the-as art-joint-anim (-> self draw art-group data 10))
num-func-seek!
)
)
(until (ja-done? 0)
(seek-to-point-toward-point!
(-> self collide-info)
(-> self nav destination-pos)
(-> self rotate-speed)
(-> self turn-time)
)
(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!
)
)
)
(go-virtual nav-enemy-patrol)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-jump-land (babak)
:virtual #t
:code
(behavior ()
(let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 param 0)
(the float (+ (-> a0-0 frame-group data 0 length) -1))
)
(set! (-> a0-0 param 1) 1.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim #f)
num-func-seek!
)
)
(ja-channel-push! 1 22)
(let ((gp-0 (-> self skel root-channel 0)))
(set!
(-> gp-0 frame-group)
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info jump-land-anim))
)
)
(set! (-> gp-0 param 0) (ja-aframe 32.0 0))
(set! (-> gp-0 param 1) 0.5)
(set! (-> gp-0 frame-num) 0.0)
(joint-control-channel-group!
gp-0
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info jump-land-anim))
)
num-func-seek!
)
)
(until (ja-done? 0)
(ja-blend-eval)
(suspend)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 param 0) (ja-aframe 32.0 0))
(set! (-> gp-1 param 1) 0.5)
(joint-control-channel-group-eval!
gp-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(go-virtual nav-enemy-chase)
(none)
)
)
;; definition for symbol *babak-nav-enemy-info*, type nav-enemy-info
(define
*babak-nav-enemy-info*
(new 'static 'nav-enemy-info
:idle-anim 5
:walk-anim 6
:turn-anim 16
:notice-anim 7
:run-anim 8
:jump-anim 13
:jump-land-anim 14
:victory-anim 11
:taunt-anim 11
:die-anim 12
:neck-joint 5
:player-look-at-joint 5
:run-travel-speed (meters 6.0)
:run-rotate-speed (degrees 2880.0)
:run-acceleration (meters 1.0)
:run-turn-time #x1e
:walk-travel-speed (meters 3.0)
:walk-rotate-speed (degrees 720.0)
:walk-acceleration (meters 1.0)
:walk-turn-time #x96
:attack-shove-back (meters 3.0)
:attack-shove-up (meters 2.0)
:shadow-size (meters 2.0)
:notice-nav-radius (meters 2.0)
:nav-nearest-y-threshold (meters 10.0)
:notice-distance (meters 30.0)
:proximity-notice-distance (meters 20.0)
:stop-chase-distance (meters 40.0)
:frustration-distance (meters 8.0)
:frustration-time #x4b0
:die-anim-hold-frame 24.0
:jump-anim-start-frame 10.0
:jump-land-anim-end-frame 10000000000.0
:jump-height-min (meters 3.0)
:jump-height-factor 0.5
:jump-start-anim-speed 1.0
:shadow-max-y (meters 1.0)
:shadow-min-y (meters -1.0)
:shadow-locus-dist (meters 150.0)
:use-align #t
:draw-shadow #t
:move-to-ground #t
:hover-if-no-ground #f
:use-momentum #f
:use-flee #t
:use-proximity-notice #t
:use-jump-blocked #t
:use-jump-patrol #f
:gnd-collide-with #x1
:debug-draw-neck #f
:debug-draw-jump #f
)
)
;; definition for method 47 of type babak
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision babak ((obj babak))
(let
((s5-0
(new
'process
'collide-shape-moving
obj
(collide-list-enum usually-hit-by-player)
)
)
)
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) default-collision-reaction)
(set! (-> s5-0 no-reaction) nothing)
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0)))
(set! (-> s4-0 prim-core collide-as) (the-as uint 256))
(set! (-> s4-0 collide-with) (the-as uint 16))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0)
(dummy-46 s5-0)
(let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3))))
(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 4096.0 0.0 3072.0)
)
(dummy-28 s4-0)
(let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3))))
(set! (-> s3-1 prim-core collide-as) (the-as uint 256))
(set! (-> s3-1 collide-with) (the-as uint 16))
(set! (-> s3-1 prim-core action) (the-as uint 1))
(set! (-> s3-1 prim-core offense) 1)
(set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0)
)
(dummy-28 s4-0)
(let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1))))
(set! (-> s3-2 prim-core collide-as) (the-as uint 256))
(set! (-> s3-2 collide-with) (the-as uint 16))
(set! (-> s3-2 prim-core offense) 2)
(set! (-> s3-2 transform-index) 6)
(set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0)
)
(dummy-28 s4-0)
)
(set! (-> s5-0 nav-radius) 6144.0)
(dummy-50 s5-0)
(set! (-> s5-0 max-iteration-count) (the-as uint 2))
(set! (-> obj collide-info) s5-0)
)
0
(none)
)
;; definition for method 48 of type babak
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-48 babak ((obj babak))
(dummy-14 obj *babak-sg* '())
(TODO-RENAME-45 obj *babak-nav-enemy-info*)
(set! (-> obj neck up) (the-as uint 0))
(set! (-> obj neck nose) (the-as uint 1))
(set! (-> obj neck ear) (the-as uint 2))
0
(none)
)
;; definition for method 59 of type babak
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-59 babak ((obj babak))
(cond
((and
(and
(-> obj entity)
(logtest? (-> obj entity extra perm status) (entity-perm-status complete))
)
(logtest? (-> obj enemy-info options) 2)
)
(go (method-of-object obj nav-enemy-fuel-cell))
)
((logtest? (-> obj enemy-info options) 32)
(go (method-of-object obj nav-enemy-wait-for-cue))
)
(else
(go (method-of-object obj nav-enemy-idle))
)
)
0
(none)
)
+1 -1
View File
@@ -431,7 +431,7 @@ eco-door-event-handler
eco-door-event-handler
:code
(behavior ()
((method-of-object (-> self root-override) dummy-49))
(dummy-49 (-> self root-override))
(set! (-> self draw status) (logand -3 (-> self draw status)))
(let ((gp-0 (new 'stack 'overlaps-others-params)))
(set! (-> gp-0 options) (the-as uint 1))
+3 -3
View File
@@ -202,9 +202,9 @@
(TODO-RENAME-48 (_type_) none 48)
(TODO-RENAME-49 (_type_ nav-enemy-info) float 49)
(TODO-RENAME-50 (_type_ vector) symbol 50)
(dummy-51 (_type_) none 51)
(dummy-52 (_type_) none 52)
(dummy-53 (_type_) none 53)
(dummy-51 (_type_) float 51)
(dummy-52 (_type_ vector) vector 52)
(dummy-53 (_type_) symbol 53)
(dummy-54 (_type_) none 54)
(dummy-55 (_type_) none 55)
(dummy-56 (_type_) none 56)
+2 -2
View File
@@ -116,7 +116,7 @@
(dummy-54 (-> obj collide-info) 2 1)
(set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags)))
)
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
(when *target*
(if *target*
(look-at-enemy!
@@ -2781,7 +2781,7 @@ nav-enemy-default-event-handler
(set! a1-0 (dummy-16 (-> self nav) (-> self jump-dest)))
)
(if a1-0
(dummy-14 (-> self nav))
(set-current-poly! (-> self nav) a1-0)
)
)
(go-virtual nav-enemy-jump-land)
+11 -11
View File
@@ -367,8 +367,8 @@
(cm-joint-y meters :offset-assert 84)
(cm-joint-z meters :offset-assert 88)
(idle-distance meters :offset-assert 92)
(platform basic :offset-assert 96)
(sound-name basic :offset-assert 100)
(platform symbol :offset-assert 96)
(sound-name symbol :offset-assert 100)
)
:method-count-assert 9
:size-assert #x68
@@ -462,9 +462,9 @@
(:methods
(rigid-body-platform-idle () _type_ :state 20)
(rigid-body-platform-float () _type_ :state 21)
(TODO-RENAME-22 (_type_ vector basic) float 22)
(TODO-RENAME-23 (_type_ basic) none 23)
(TODO-RENAME-24 (_type_ rigid-body-control-point basic) none 24)
(TODO-RENAME-22 (_type_ vector float) float 22)
(TODO-RENAME-23 (_type_ float) none 23)
(TODO-RENAME-24 (_type_ rigid-body-control-point float) none 24)
(TODO-RENAME-25 (_type_) none 25)
(TODO-RENAME-26 (_type_) none 26)
(TODO-RENAME-27 (_type_ vector) none 27)
@@ -472,8 +472,8 @@
(TODO-RENAME-29 (_type_ rigid-body-platform-constants) none 29)
(TODO-RENAME-30 (_type_) none 30)
(TODO-RENAME-31 (_type_) none 31)
(dummy-32 (_type_) none 32)
(dummy-33 (_type_) none 33)
(dummy-32 (_type_) sound-id 32)
(dummy-33 (_type_) object 33)
(TODO-RENAME-34 (_type_) none 34)
)
)
@@ -540,7 +540,7 @@
(defmethod
TODO-RENAME-22
rigid-body-platform
((obj rigid-body-platform) (arg0 vector) (arg1 basic))
((obj rigid-body-platform) (arg0 vector) (arg1 float))
(let ((v1-0 (-> obj water-anim)))
0.0
(+ (the-as float (cond
@@ -572,7 +572,7 @@
(defmethod
TODO-RENAME-24
rigid-body-platform
((obj rigid-body-platform) (arg0 rigid-body-control-point) (arg1 basic))
((obj rigid-body-platform) (arg0 rigid-body-control-point) (arg1 float))
(set! (-> arg0 world-pos w) (TODO-RENAME-22 obj (-> arg0 world-pos) arg1))
(let* ((s4-0 (new 'stack-no-clear 'vector))
(f0-2 (- (-> arg0 world-pos w) (-> arg0 world-pos y)))
@@ -667,7 +667,7 @@
(defmethod
TODO-RENAME-23
rigid-body-platform
((obj rigid-body-platform) (arg0 basic))
((obj rigid-body-platform) (arg0 float))
(let ((s4-0 (-> obj rbody matrix)))
(dotimes (s3-0 (-> obj info control-point-count))
(let ((s2-0 (-> obj control-point-array data s3-0)))
@@ -715,7 +715,7 @@
)
(while (>= (-> obj sim-time-remaining) (* 0.5 f30-0))
(clear-force-torque! (-> obj rbody))
(TODO-RENAME-23 obj (the-as basic f28-0))
(TODO-RENAME-23 obj f28-0)
(dummy-10 (-> obj rbody) f30-0)
(set! (-> obj sim-time-remaining) (- (-> obj sim-time-remaining) f30-0))
)
@@ -136,7 +136,7 @@
(>=
61440.0
(vector-vector-distance
(-> self root trans)
(-> self root-override trans)
(-> *target* control trans)
)
)
@@ -151,30 +151,28 @@
#f
)
)
(let ((a0-1 (-> self tasks)))
(and
(not
(closed?
a0-1
(game-task firecanyon-assistant)
(task-status need-reward-speech)
)
(and
(not
(closed?
(-> self tasks)
(game-task firecanyon-assistant)
(task-status need-reward-speech)
)
(not (movie?))
(not (level-hint-displayed? (the-as symbol a0-1)))
(not
(and
*cheat-mode*
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3))
)
)
(not (movie?))
(not (level-hint-displayed?))
(not
(and
*cheat-mode*
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3))
)
(<
(-
(-> *display* base-frame-counter)
(the-as int (-> self state-time))
)
3000
)
(<
(-
(-> *display* base-frame-counter)
(the-as int (-> self state-time))
)
3000
)
)
)
@@ -0,0 +1,646 @@
;;-*-Lisp-*-
(in-package goal)
;; failed to figure out what this is:
(if (not (nmember "flutp" *kernel-packages*))
(set! *kernel-packages* (cons "flutp" *kernel-packages*))
)
;; definition of type flutflut
(deftype flutflut (process-drawable)
((root-override collide-shape-moving :offset 112)
(extra-trans vector :inline :offset-assert 176)
(condition int32 :offset-assert 192)
(auto-get-off symbol :offset-assert 196)
(cell handle :offset-assert 200)
(path-data path-control 2 :offset-assert 208)
(path-target path-control :offset 208)
(path-flut path-control :offset 212)
(touch-time uint64 :offset-assert 216)
)
:pack-me
:heap-base #x70
:method-count-assert 24
:size-assert #xe0
:flag-assert #x18007000e0
(:methods
(wait-for-start () _type_ :state 20)
(idle () _type_ :state 21)
(pickup ((state flutflut)) _type_ :state 22)
(wait-for-return () _type_ :state 23)
)
)
;; definition for method 3 of type flutflut
(defmethod inspect flutflut ((obj flutflut))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Textra-trans: ~`vector`P~%" (-> obj extra-trans))
(format #t "~T~Tcondition: ~D~%" (-> obj condition))
(format #t "~T~Tauto-get-off: ~A~%" (-> obj auto-get-off))
(format #t "~T~Tcell: ~D~%" (-> obj cell))
(format #t "~T~Tpath-data[2] @ #x~X~%" (-> obj path-data))
(format #t "~T~Tpath-target: ~A~%" (-> obj path-target))
(format #t "~T~Tpath-flut: ~A~%" (-> obj path-flut))
(format #t "~T~Ttouch-time: ~D~%" (-> obj touch-time))
obj
)
;; definition for method 7 of type flutflut
;; INFO: Return type mismatch process-drawable vs flutflut.
(defmethod relocate flutflut ((obj flutflut) (arg0 int))
(countdown (v1-0 2)
(if (-> obj path-data v1-0)
(&+! (-> obj path-data v1-0) arg0)
)
)
(the-as flutflut ((method-of-type process-drawable relocate) obj arg0))
)
;; definition for symbol *flutflut-shadow-control*, type shadow-control
(define
*flutflut-shadow-control*
(new 'static 'shadow-control
:settings
(new 'static 'shadow-settings
:center
(new 'static 'vector :w (the-as float #xa))
:shadow-dir
(new 'static 'vector :y -1.0 :w 614400.0)
:bot-plane (new 'static 'plane :y 1.0 :w 81920.0)
:top-plane (new 'static 'plane :y 1.0 :w -2867.2)
)
)
)
;; failed to figure out what this is:
(let
((v1-5
(new 'static 'skeleton-group
:art-group-name "flut-saddle"
:bounds (new 'static 'vector :w 14336.0)
:version #x6
:shadow 2
:sort 1
)
)
)
(set! (-> v1-5 jgeo) 0)
(set! (-> v1-5 janim) -1)
(set! (-> v1-5 mgeo 0) (the-as uint 1))
(set! (-> v1-5 lod-dist 0) 4095996000.0)
(set! *flutflut-sg* v1-5)
)
;; definition for function flutflut-effect
;; INFO: Return type mismatch int vs none.
(defbehavior flutflut-effect flutflut ()
(spawn (-> self part) (-> self root-override trans))
(update! (-> self sound))
0
(none)
)
;; failed to figure out what this is:
(defstate wait-for-start (flutflut)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'trans)
(vector+!
(the-as vector (-> arg3 param 0))
(-> self root-override trans)
(-> self extra-trans)
)
)
((= v1-0 'notify)
(let ((v0-1 (the-as structure #t)))
(set! (-> self auto-get-off) (the-as symbol v0-1))
v0-1
)
)
((or (= v1-0 'touch) (= v1-0 'attack))
(set!
(-> self touch-time)
(the-as uint (-> *display* base-frame-counter))
)
#f
)
)
)
)
)
:exit
(behavior ()
(set! (-> self root-override root-prim prim-core action) (the-as uint 0))
(set! (-> self root-override root-prim prim-core offense) 0)
0
(none)
)
:code
(behavior ()
(while #t
(let ((v1-0 (-> self condition)))
(cond
((or (zero? v1-0) (= v1-0 1))
(if
(or
(and
(task-complete? *game-info* (game-task beach-flutflut))
(or
(and
(zero? (-> self condition))
(task-closed?
(game-task village2-levitator)
(task-status need-hint)
)
)
(and
(= (-> self condition) 1)
(task-closed? (game-task village3-button) (task-status need-hint))
)
)
)
(and
*cheat-mode*
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3))
)
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
)
(goto cfg-75)
)
)
((= v1-0 4)
(if
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
(goto cfg-75)
)
)
((= v1-0 3)
(cond
((and
(task-complete? *game-info* (-> self entity extra perm task))
(not (handle->process (-> self cell)))
)
(when
(and
(-> self auto-get-off)
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) self)
(set! (-> a1-6 num-params) 0)
(set! (-> a1-6 message) 'end-mode)
(send-event-function *target* a1-6)
)
)
(set! (-> self auto-get-off) #f)
(go-virtual pickup (method-of-object self idle))
)
(set! (-> self auto-get-off) #f)
(if (= (-> self condition) 3)
(goto cfg-75)
)
(if
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
(<
(-
(-> *display* base-frame-counter)
(the-as int (-> self touch-time))
)
15
)
)
(go-virtual pickup (method-of-object self idle))
)
)
((not (handle->process (-> self cell)))
(set!
(-> self cell)
(ppointer->handle
(birth-pickup-at-point
(vector+!
(new 'stack-no-clear 'vector)
(-> self root-override trans)
(new 'static 'vector :y 8192.0 :w 1.0)
)
6
(the float (-> self entity extra perm task))
#f
self
(the-as symbol (-> self fact))
)
)
)
)
)
)
(else
(goto cfg-75)
)
)
)
(flutflut-effect)
(suspend)
)
(label cfg-75)
(if
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
(go-virtual wait-for-return)
(go-virtual idle)
)
(none)
)
)
;; failed to figure out what this is:
(defstate idle (flutflut)
:virtual #t
:event
(-> (method-of-type flutflut wait-for-start) event)
:enter
(behavior ()
(blocking-plane-destroy)
(blocking-plane-spawn (the-as curve-control (-> self path-target)))
(none)
)
:exit
(-> (method-of-type flutflut wait-for-start) exit)
:code
(behavior ()
(ja-channel-set! 1)
(let ((v1-2 (-> self skel root-channel 0)))
(set!
(-> v1-2 frame-group)
(the-as art-joint-anim (-> self draw art-group data 3))
)
)
(set! (-> self root-override root-prim prim-core action) (the-as uint 2049))
(set! (-> self root-override root-prim prim-core offense) 4)
(while #t
(if
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
(go-virtual wait-for-return)
)
(when (logtest? (-> self draw status) 8)
(if
(and
*target*
(>=
40960.0
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
(level-hint-spawn
(game-text-id flutflut-reminder)
"sksp0160"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
)
(when
(and
(and
*target*
(>=
20480.0
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
(not (movie?))
(not (level-hint-displayed?))
(!= (-> self condition) 4)
)
(hide-hud)
(level-hint-surpress!)
(kill-current-level-hint '() '(sidekick voicebox) 'exit)
(when
(and (hud-hidden?) (can-grab-display? (the-as process-taskable self)))
(let
((gp-0
(new
'stack
'font-context
*font-default-matrix*
32
160
0.0
(font-color default)
(font-flags shadow kerning)
)
)
)
(let ((v1-34 gp-0))
(set! (-> v1-34 width) (the float 440))
)
(let ((v1-35 gp-0))
(set! (-> v1-35 height) (the float 80))
)
(set! (-> gp-0 flags) (font-flags shadow kerning large))
(print-game-text
(lookup-text! *common-text* (game-text-id press-to-use) #f)
gp-0
#f
128
22
)
)
(if
(and
(logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle))
(let ((a1-7 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-7 from) self)
(set! (-> a1-7 num-params) 2)
(set! (-> a1-7 message) 'change-mode)
(set! (-> a1-7 param 0) (the-as uint 'flut))
(set! (-> a1-7 param 1) (the-as uint self))
(send-event-function *target* a1-7)
)
)
(go-virtual pickup (method-of-object self wait-for-return))
)
)
)
(flutflut-effect)
(suspend)
(let ((a0-26 (-> self skel root-channel 0)))
(set! (-> a0-26 param 0) 1.0)
(joint-control-channel-group-eval!
a0-26
(the-as art-joint-anim #f)
num-func-loop!
)
)
)
(none)
)
:post
(the-as (function none :behavior flutflut) ja-post)
)
;; failed to figure out what this is:
(defstate pickup (flutflut)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('draw)
(ja-channel-set! 1)
(let ((v1-3 (-> self skel root-channel 0)))
(set!
(-> v1-3 frame-group)
(the-as art-joint-anim (-> self draw art-group data 3))
)
)
(set!
(-> self root-override root-prim prim-core action)
(the-as uint 2049)
)
(set! (-> self root-override root-prim prim-core offense) 4)
(transform-post)
)
(('trans)
(vector+!
(the-as vector (-> arg3 param 0))
(-> self root-override trans)
(-> self extra-trans)
)
)
(('touch 'attack)
#f
)
)
)
:enter
(behavior ((arg0 (state flutflut)))
((-> arg0 enter))
(none)
)
:code
(behavior ((arg0 (state flutflut)))
(ja-channel-set! 0)
(ja-post)
(while (zero? (ja-group-size))
(if
(or
(not *target*)
(<
24576.0
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
(go arg0)
)
(flutflut-effect)
(suspend)
)
(while
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
(flutflut-effect)
(suspend)
)
(let ((s5-0 (-> *display* base-frame-counter)))
(until (>= (- (-> *display* base-frame-counter) s5-0) 300)
(flutflut-effect)
(suspend)
)
)
(go arg0)
(none)
)
)
;; failed to figure out what this is:
(defstate wait-for-return (flutflut)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(if
(and
(or (= arg2 'touch) (= arg2 'attack))
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 0)
(set! (-> a1-1 message) 'end-mode)
(send-event-function *target* a1-1)
)
)
(go-virtual pickup (method-of-object self idle))
)
(the-as object (if (= arg2 'trans)
(vector+!
(the-as vector (-> arg3 param 0))
(-> self root-override trans)
(-> self extra-trans)
)
)
)
)
:enter
(behavior ()
(blocking-plane-destroy)
(blocking-plane-spawn (the-as curve-control (-> self path-flut)))
(none)
)
:code
(behavior ()
(ja-channel-set! 0)
(ja-post)
(while #t
(if
(not
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
)
(go-virtual idle)
)
(flutflut-effect)
(suspend)
)
(none)
)
)
;; definition for method 11 of type flutflut
(defmethod copy-defaults! flutflut ((obj flutflut) (arg0 res-lump))
(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) 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 512))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(set-yaw-angle-clear-roll-pitch!
(-> obj root-override)
(res-lump-float arg0 'rotoffset)
)
(dummy-14 obj *flutflut-sg* '())
(logior! (-> obj skel status) 256)
(set! (-> obj draw shadow-ctrl) *flutflut-shadow-control*)
(let ((v1-24 (-> obj node-list data)))
(set! (-> v1-24 0 param0) cspace<-transformq+trans!)
(set! (-> v1-24 0 param1) (the-as basic (-> obj root-override trans)))
(set! (-> v1-24 0 param2) (the-as basic (-> obj extra-trans)))
)
(dotimes (s4-2 2)
(let ((v1-27 (new 'process 'curve-control obj 'path (the float (+ s4-2 1)))))
(set! (-> obj path-data s4-2) v1-27)
(if v1-27
(logior!
(-> v1-27 flags)
(path-control-flag display draw-line draw-point draw-text)
)
)
)
)
(set! (-> obj condition) (res-lump-value arg0 'index int))
(set!
(-> obj fact)
(new
'process
'fact-info
obj
(pickup-type eco-pill-random)
(-> *FACT-bank* default-pill-inc)
)
)
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 120) obj)
)
(set! (-> obj auto-get-off) #f)
(dummy-60 (-> obj root-override) 40960.0 40960.0 #t (the-as uint 1))
(set! (-> obj cell) (the-as handle #f))
(blocking-plane-spawn
(the-as
curve-control
(if
(and
*target*
(logtest? (-> *target* control root-prim prim-core action) #x4000)
)
(-> obj path-flut)
(-> obj path-target)
)
)
)
(set!
(-> obj sound)
(new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name-char
(new 'static 'array uint8 16
#x7a
#x6f
#x6f
#x6d
#x2d
#x74
#x65
#x6c
#x65
#x70
#x6f
#x72
#x74
#x0
#x0
#x0
)
:volume #x400
:fo-max 30
)
(-> obj root-override trans)
)
)
(go (method-of-object obj wait-for-start))
(none)
)
@@ -0,0 +1,345 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type assistant-lavatube-start
(deftype assistant-lavatube-start (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type assistant-lavatube-start
(defmethod inspect assistant-lavatube-start ((obj assistant-lavatube-start))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "assistant-lavatube-start"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *assistant-lavatube-start-sg* v1-1)
)
;; definition for method 32 of type assistant-lavatube-start
(defmethod
play-anim!
assistant-lavatube-start
((obj assistant-lavatube-start) (arg0 symbol))
(case (current-status (-> obj tasks))
((6)
(if arg0
(close-current! (-> obj tasks))
)
(new 'static 'spool-anim
:name "assistant-lavatube-start-resolution"
:index 5
:parts 11
:command-list
'(
((the binteger 232)
joint
"cameraB"
)
((the binteger 491)
joint
"camera"
)
((the binteger 866)
joint
"cameraB"
)
((the binteger 1061) joint "camera")
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string (the-as task-status (current-status (-> obj tasks))))
)
)
(get-art-elem obj)
)
)
)
;; definition for method 31 of type assistant-lavatube-start
(defmethod get-art-elem assistant-lavatube-start ((obj assistant-lavatube-start))
(-> obj draw art-group data 3)
)
;; failed to figure out what this is:
(defstate hidden (assistant-lavatube-start)
:virtual #t
:trans
(behavior ()
((-> (method-of-type process-taskable hidden) trans))
(when (and (cond
((and
*target*
(>=
61440.0
(vector-vector-distance
(-> self root-override trans)
(-> *target* control trans)
)
)
)
#t
)
(else
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
#f
)
)
(and
(not
(closed?
(-> self tasks)
(game-task lavatube-start)
(task-status need-reward-speech)
)
)
(not (movie?))
(not (level-hint-displayed?))
(not
(and
*cheat-mode*
(logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3))
)
)
(<
(-
(-> *display* base-frame-counter)
(the-as int (-> self state-time))
)
3000
)
)
)
(hide-hud)
(kill-current-level-hint '() '(sidekick voicebox) 'exit)
(when
(and
(seen-text? *game-info* (game-text-id assistant-lavatube-powercell-hint))
(hud-hidden?)
(can-grab-display? self)
(not (-> *setting-control* current hint))
)
(let
((gp-0
(new
'stack
'font-context
*font-default-matrix*
32
160
0.0
(font-color default)
(font-flags shadow kerning)
)
)
)
(let ((v1-26 gp-0))
(set! (-> v1-26 width) (the float 448))
)
(let ((v1-27 gp-0))
(set! (-> v1-27 height) (the float 80))
)
(let ((v1-28 gp-0))
(set! (-> v1-28 scale) 0.8)
)
(set! (-> gp-0 flags) (font-flags shadow kerning middle large))
(print-game-text
(lookup-text!
*common-text*
(game-text-id lavatube-powercell-req-text)
#f
)
gp-0
#f
128
22
)
)
)
(level-hint-spawn
(game-text-id assistant-lavatube-powercell-hint)
"asstva74"
(the-as entity #f)
*entity-pool*
(game-task none)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate idle (assistant-lavatube-start)
:virtual #t
:code
(behavior ()
(while #t
(when (!= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(get-art-elem self)
)
(ja-channel-push! 1 15)
(let ((v1-5 (-> self skel root-channel 0)))
(set!
(-> v1-5 frame-group)
(the-as art-joint-anim (-> self draw art-group data 3))
)
)
)
(let* ((f30-0 2.0)
(v1-7 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-8 (the-as number (logior #x3f800000 v1-7)))
)
(countdown (gp-0 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-8)))) 2))
(let ((a0-12 (-> self skel root-channel 0)))
(set! (-> a0-12 frame-group) (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
)
(set!
(-> a0-12 param 0)
(the float (+ (-> (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
data
0
length
)
-1
)
)
)
(set! (-> a0-12 param 1) 1.0)
(set! (-> a0-12 frame-num) 0.0)
(joint-control-channel-group!
a0-12
(if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
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) 1.0)
(joint-control-channel-group-eval!
a0-13
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
)
(ja-channel-push! 1 15)
(let ((a0-16 (-> self skel root-channel 0)))
(set!
(-> a0-16 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-16 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
data
0
length
)
-1
)
)
)
(set! (-> a0-16 param 1) 1.0)
(set! (-> a0-16 frame-num) 0.0)
(joint-control-channel-group!
a0-16
(the-as art-joint-anim (-> self draw art-group data 4))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-17 (-> self skel root-channel 0)))
(set!
(-> a0-17 param 0)
(the float (+ (-> a0-17 frame-group data 0 length) -1))
)
(set! (-> a0-17 param 1) 1.0)
(joint-control-channel-group-eval!
a0-17
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
(none)
)
)
;; definition for method 39 of type assistant-lavatube-start
(defmethod
should-display?
assistant-lavatube-start
((obj assistant-lavatube-start))
(first-any (-> obj tasks) #t)
(= (current-status (-> obj tasks)) 6)
)
;; definition for method 11 of type assistant-lavatube-start
(defmethod
copy-defaults!
assistant-lavatube-start
((obj assistant-lavatube-start) (arg0 res-lump))
(dummy-40
obj
arg0
*assistant-lavatube-start-sg*
3
29
(new 'static 'vector :w 4096.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task lavatube-start)))
(first-any (-> obj tasks) #t)
(dummy-42 obj)
(none)
)
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,287 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *cavecrystal-engine*, type engine
(define *cavecrystal-engine* (new 'loading-level 'engine 'cavecrystal 64))
;; definition of type cavecrystal-light
(deftype cavecrystal-light (structure)
((next cavecrystal-light :offset-assert 0)
(crystal-id int32 :offset-assert 4)
(intensity float :offset-assert 8)
(fade-start float :offset-assert 12)
(fade-end float :offset-assert 16)
(crystal-handle handle :offset-assert 24)
(trans vector :inline :offset-assert 32)
)
:method-count-assert 9
:size-assert #x30
:flag-assert #x900000030
)
;; definition for method 3 of type cavecrystal-light
(defmethod inspect cavecrystal-light ((obj cavecrystal-light))
(format #t "[~8x] ~A~%" obj 'cavecrystal-light)
(format #t "~Tnext: #<cavecrystal-light @ #x~X>~%" (-> obj next))
(format #t "~Tcrystal-id: ~D~%" (-> obj crystal-id))
(format #t "~Tintensity: ~f~%" (-> obj intensity))
(format #t "~Tfade-start: ~f~%" (-> obj fade-start))
(format #t "~Tfade-end: ~f~%" (-> obj fade-end))
(format #t "~Tcrystal-handle: ~D~%" (-> obj crystal-handle))
(format #t "~Ttrans: #<vector @ #x~X>~%" (-> obj trans))
obj
)
;; definition of type cavecrystal-light-control
(deftype cavecrystal-light-control (basic)
((active-count int32 :offset-assert 4)
(head cavecrystal-light :offset-assert 8)
(last-known-valid-time uint64 :offset-assert 16)
(crystal cavecrystal-light 7 :inline :offset-assert 32)
)
:method-count-assert 15
:size-assert #x170
:flag-assert #xf00000170
(:methods
(TODO-RENAME-9 (_type_ int float cavecrystal) object 9)
(TODO-RENAME-10 (_type_ vector) float 10)
(inc-intensites! (_type_) int 11)
(TODO-RENAME-12 (_type_) symbol 12)
(create-connection! (_type_ cavecrystal res-lump (function object object object object object) object object) connection 13)
(execute-connections (_type_) int 14)
)
)
;; definition for method 3 of type cavecrystal-light-control
(defmethod inspect cavecrystal-light-control ((obj cavecrystal-light-control))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tactive-count: ~D~%" (-> obj active-count))
(format #t "~Thead: #<cavecrystal-light @ #x~X>~%" (-> obj head))
(format #t "~Tlast-known-valid-time: ~D~%" (-> obj last-known-valid-time))
(format #t "~Tcrystal[7] @ #x~X~%" (-> obj crystal))
obj
)
;; definition for symbol *cavecrystal-light-control*, type cavecrystal-light-control
(define
*cavecrystal-light-control*
(new 'static 'cavecrystal-light-control :head #f)
)
;; definition for function cavecrystal-light-control-default-callback
;; INFO: Return type mismatch vector vs none.
;; Used lq/sq
(defun
cavecrystal-light-control-default-callback
((arg0 (pointer process-drawable)) (arg1 int) (arg2 float))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(let ((v1-1 (-> arg0 0 node-list)))
(if (and (>= arg1 0) (nonzero? v1-1))
(vector<-cspace! s5-0 (-> v1-1 data arg1))
(set! (-> s5-0 quad) (-> arg0 0 root trans quad))
)
)
(set! (-> s5-0 w) arg2)
(let ((f0-1 (TODO-RENAME-10 *cavecrystal-light-control* s5-0))
(a2-2 (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0))
(a1-5 (new 'static 'vector :x 0.05 :y 0.05 :z 0.05 :w 1.0))
)
(vector-lerp! (-> arg0 0 draw color-mult) a1-5 a2-2 f0-1)
)
)
(none)
)
;; definition for method 13 of type cavecrystal-light-control
(defmethod
create-connection!
cavecrystal-light-control
((obj cavecrystal-light-control)
(arg0 cavecrystal)
(arg1 res-lump)
(arg2 (function object object object object object))
(arg3 object)
(arg4 object)
)
(if (nonzero? (res-lump-value arg1 'crystal-light uint128))
(add-connection
*cavecrystal-engine*
arg0
arg2
(process->ppointer arg0)
arg3
arg4
)
)
)
;; definition for method 14 of type cavecrystal-light-control
(defmethod
execute-connections
cavecrystal-light-control
((obj cavecrystal-light-control))
(execute-connections *cavecrystal-engine* #f)
)
;; definition for method 12 of type cavecrystal-light-control
(defmethod
TODO-RENAME-12
cavecrystal-light-control
((obj cavecrystal-light-control))
(let ((v1-0 (-> obj last-known-valid-time))
(a1-1 (-> *display* base-frame-counter))
)
(when (!= v1-0 a1-1)
(set! (-> obj last-known-valid-time) (the-as uint a1-1))
(cond
((zero? v1-0)
(set! (-> obj active-count) 0)
(set! (-> obj head) #f)
(dotimes (v1-1 7)
(let ((a1-5 (-> obj crystal v1-1)))
(set! (-> a1-5 next) #f)
(set! (-> a1-5 crystal-id) v1-1)
(set! (-> a1-5 intensity) 0.0)
(set! (-> a1-5 fade-start) 20480.0)
(set! (-> a1-5 fade-end) 286720.0)
(set! (-> a1-5 crystal-handle) (the-as handle #f))
)
)
#f
)
(else
(when (> (-> obj active-count) 0)
(let ((v1-4 (the-as cavecrystal-light #f))
(a1-7 (-> obj head))
)
(while a1-7
(cond
((handle->process (-> a1-7 crystal-handle))
(set! v1-4 a1-7)
(set! a1-7 (-> a1-7 next))
)
(else
(let ((a2-4 (-> a1-7 next)))
(+! (-> obj active-count) -1)
(set! (-> a1-7 next) #f)
(set! (-> a1-7 intensity) 0.0)
(if v1-4
(set! (-> obj head) a2-4)
(set! (-> v1-4 next) a2-4)
)
(set! a1-7 a2-4)
)
)
)
)
)
#f
)
)
)
)
)
)
;; definition for method 11 of type cavecrystal-light-control
(defmethod
inc-intensites!
cavecrystal-light-control
((obj cavecrystal-light-control))
(set! (-> obj head) #f)
(let ((a1-0 (the-as cavecrystal-light #f))
(v0-0 0)
)
(dotimes (v1-0 7)
(let ((a2-3 (-> obj crystal v1-0)))
(set! (-> a2-3 next) #f)
(when (< 0.0 (-> a2-3 intensity))
(+! v0-0 1)
(if a1-0
(set! (-> a1-0 next) a2-3)
(set! (-> obj head) a2-3)
)
(set! a1-0 a2-3)
)
)
)
(set! (-> obj active-count) v0-0)
v0-0
)
)
;; definition for method 9 of type cavecrystal-light-control
;; Used lq/sq
(defmethod
TODO-RENAME-9
cavecrystal-light-control
((obj cavecrystal-light-control) (arg0 int) (arg1 float) (arg2 cavecrystal))
(TODO-RENAME-12 obj)
(when (or (< arg0 0) (>= arg0 7))
(format 0 "ERROR: Bogus cavecrystal id!~%")
(return #f)
)
(let ((s3-0 (-> obj crystal arg0)))
(cond
((and (< 0.0 arg1) (>= 0.0 (-> s3-0 intensity)))
(+! (-> obj active-count) 1)
(set! (-> s3-0 intensity) arg1)
(set! (-> s3-0 crystal-handle) (process->handle arg2))
(set! (-> s3-0 trans quad) (-> arg2 root-override trans quad))
(inc-intensites! obj)
)
((and (>= 0.0 arg1) (< 0.0 (-> s3-0 intensity)))
(+! (-> obj active-count) -1)
(set! (-> s3-0 intensity) 0.0)
(inc-intensites! obj)
)
((< 0.0 arg1)
(set! (-> s3-0 intensity) arg1)
)
)
(TODO-RENAME-10 *palette-fade-controls* (+ arg0 1) arg1 0.0 (-> s3-0 trans))
)
)
;; definition for method 10 of type cavecrystal-light-control
(defmethod
TODO-RENAME-10
cavecrystal-light-control
((obj cavecrystal-light-control) (arg0 vector))
(TODO-RENAME-12 obj)
(let ((s5-1 (-> obj head))
(f30-0 0.0)
)
(when s5-1
(until (not s5-1)
(let* ((f26-0 (-> s5-1 fade-start))
(f28-0 (- (-> s5-1 fade-end) f26-0))
(f1-1
(fmin
(fmax
0.0
(-
(- (vector-vector-distance (-> s5-1 trans) arg0) (-> arg0 w))
f26-0
)
)
f28-0
)
)
(f0-7 (* (- 1.0 (/ f1-1 f28-0)) (-> s5-1 intensity)))
)
(if (< f30-0 f0-7)
(set! f30-0 f0-7)
)
)
(set! s5-1 (-> s5-1 next))
)
(set! f30-0 (fmin 2.0 f30-0))
)
f30-0
)
)
@@ -0,0 +1,241 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type mother-spider-leg
(deftype mother-spider-leg (process-drawable)
((gravity float :offset-assert 176)
(transv vector :inline :offset-assert 192)
(facing-rot vector :inline :offset-assert 208)
(facing-rotv vector :inline :offset-assert 224)
)
:heap-base #x80
:method-count-assert 20
:size-assert #xf0
:flag-assert #x14008000f0
)
;; definition for method 3 of type mother-spider-leg
(defmethod inspect mother-spider-leg ((obj mother-spider-leg))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tgravity: ~f~%" (-> obj gravity))
(format #t "~T~Ttransv: #<vector @ #x~X>~%" (-> obj transv))
(format #t "~T~Tfacing-rot: #<vector @ #x~X>~%" (-> obj facing-rot))
(format #t "~T~Tfacing-rotv: #<vector @ #x~X>~%" (-> obj facing-rotv))
obj
)
;; definition of type mother-spider-thread
(deftype mother-spider-thread (structure)
((joint-index int32 :offset-assert 0)
(trans-u float :offset-assert 4)
(swing-arc-u float :offset-assert 8)
)
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
)
;; definition for method 3 of type mother-spider-thread
(defmethod inspect mother-spider-thread ((obj mother-spider-thread))
(format #t "[~8x] ~A~%" obj 'mother-spider-thread)
(format #t "~Tjoint-index: ~D~%" (-> obj joint-index))
(format #t "~Ttrans-u: ~f~%" (-> obj trans-u))
(format #t "~Tswing-arc-u: ~f~%" (-> obj swing-arc-u))
obj
)
;; definition of type mother-spider-leg-info
(deftype mother-spider-leg-info (structure)
((joint-index0 int32 :offset-assert 0)
(joint-index1 int32 :offset-assert 4)
(cprim-index int32 :offset-assert 8)
)
:method-count-assert 9
:size-assert #xc
:flag-assert #x90000000c
)
;; definition for method 3 of type mother-spider-leg-info
(defmethod inspect mother-spider-leg-info ((obj mother-spider-leg-info))
(format #t "[~8x] ~A~%" obj 'mother-spider-leg-info)
(format #t "~Tjoint-index0: ~D~%" (-> obj joint-index0))
(format #t "~Tjoint-index1: ~D~%" (-> obj joint-index1))
(format #t "~Tcprim-index: ~D~%" (-> obj cprim-index))
obj
)
;; definition of type mother-spider-history
(deftype mother-spider-history (structure)
((trans vector :inline :offset-assert 0)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
;; definition for method 3 of type mother-spider-history
(defmethod inspect mother-spider-history ((obj mother-spider-history))
(format #t "[~8x] ~A~%" obj 'mother-spider-history)
(format #t "~Ttrans: #<vector @ #x~X>~%" (-> obj trans))
obj
)
;; definition of type mother-spider-history-array
(deftype mother-spider-history-array (inline-array-class)
((data mother-spider-history :dynamic :offset-assert 16)
)
:method-count-assert 9
:size-assert #x10
:flag-assert #x900000010
)
;; definition for method 3 of type mother-spider-history-array
(defmethod
inspect
mother-spider-history-array
((obj mother-spider-history-array))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tlength: ~D~%" (-> obj length))
(format #t "~Tallocated-length: ~D~%" (-> obj allocated-length))
(format #t "~Tdata[0] @ #x~X~%" (-> obj data))
obj
)
;; failed to figure out what this is:
(set! (-> mother-spider-history-array heap-base) (the-as uint 16))
;; definition of type mother-spider
(deftype mother-spider (process-drawable)
((mode uint64 :offset-assert 176)
(damage int32 :offset-assert 184)
(baby-count int32 :offset-assert 188)
(max-baby-count int32 :offset-assert 192)
(birthing-counter int32 :offset-assert 196)
(spit-counter int32 :offset-assert 200)
(leg-socket-part-mask int32 :offset-assert 204)
(dist-from-anchor float :offset-assert 208)
(targ-dist-from-anchor float :offset-assert 212)
(idle-dist-from-anchor float :offset-assert 216)
(player-sticky-dist-from-anchor float :offset-assert 220)
(max-dist-from-anchor float :offset-assert 224)
(activate-xz-dist float :offset-assert 228)
(deactivate-xz-dist float :offset-assert 232)
(max-spit-xz-dist float :offset-assert 236)
(max-swing-radius float :offset-assert 240)
(spin-vel float :offset-assert 244)
(thread-speed float :offset-assert 248)
(thread-vel float :offset-assert 252)
(history mother-spider-history-array :offset-assert 256)
(history-len int32 :offset-assert 260)
(history-next-index int32 :offset-assert 264)
(hit? symbol :offset-assert 268)
(going-up? symbol :offset-assert 272)
(check-z-thresh? symbol :offset-assert 276)
(activate-z-thresh float :offset-assert 280)
(deactivate-z-thresh float :offset-assert 284)
(spawned-time uint64 :offset-assert 288)
(last-update-time uint64 :offset-assert 296)
(spin-time uint64 :offset-assert 304)
(last-spit-time uint64 :offset-assert 312)
(last-player-in-air-time uint64 :offset-assert 320)
(started-birthing-time uint64 :offset-assert 328)
(neck joint-mod :offset-assert 336)
(player-attack-id uint64 :offset-assert 344)
(leg-socket-part-time uint64 6 :offset-assert 352)
(orient-rot vector :inline :offset-assert 400)
(anchor-trans vector :inline :offset-assert 416)
(thread-min-trans vector :inline :offset-assert 432)
(swing-pos vector :inline :offset-assert 448)
(swing-base-pos vector :inline :offset-assert 464)
(swing-vel vector :inline :offset-assert 480)
)
:heap-base #x180
:method-count-assert 32
: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)
)
)
;; definition for method 3 of type mother-spider
(defmethod inspect mother-spider ((obj mother-spider))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tmode: ~D~%" (-> obj mode))
(format #t "~T~Tdamage: ~D~%" (-> obj damage))
(format #t "~T~Tbaby-count: ~D~%" (-> obj baby-count))
(format #t "~T~Tmax-baby-count: ~D~%" (-> obj max-baby-count))
(format #t "~T~Tbirthing-counter: ~D~%" (-> obj birthing-counter))
(format #t "~T~Tspit-counter: ~D~%" (-> obj spit-counter))
(format #t "~T~Tleg-socket-part-mask: ~D~%" (-> obj leg-socket-part-mask))
(format #t "~T~Tdist-from-anchor: ~f~%" (-> obj dist-from-anchor))
(format #t "~T~Ttarg-dist-from-anchor: ~f~%" (-> obj targ-dist-from-anchor))
(format #t "~T~Tidle-dist-from-anchor: ~f~%" (-> obj idle-dist-from-anchor))
(format
#t
"~T~Tplayer-sticky-dist-from-anchor: ~f~%"
(-> obj player-sticky-dist-from-anchor)
)
(format #t "~T~Tmax-dist-from-anchor: ~f~%" (-> obj max-dist-from-anchor))
(format #t "~T~Tactivate-xz-dist: ~f~%" (-> obj activate-xz-dist))
(format #t "~T~Tdeactivate-xz-dist: ~f~%" (-> obj deactivate-xz-dist))
(format #t "~T~Tmax-spit-xz-dist: ~f~%" (-> obj max-spit-xz-dist))
(format #t "~T~Tmax-swing-radius: ~f~%" (-> obj max-swing-radius))
(format #t "~T~Tspin-vel: ~f~%" (-> obj spin-vel))
(format #t "~T~Tthread-speed: ~f~%" (-> obj thread-speed))
(format #t "~T~Tthread-vel: ~f~%" (-> obj thread-vel))
(format #t "~T~Thistory: ~A~%" (-> obj history))
(format #t "~T~Thistory-len: ~D~%" (-> obj history-len))
(format #t "~T~Thistory-next-index: ~D~%" (-> obj history-next-index))
(format #t "~T~Thit?: ~A~%" (-> obj hit?))
(format #t "~T~Tgoing-up?: ~A~%" (-> obj going-up?))
(format #t "~T~Tcheck-z-thresh?: ~A~%" (-> obj check-z-thresh?))
(format #t "~T~Tactivate-z-thresh: ~f~%" (-> obj activate-z-thresh))
(format #t "~T~Tdeactivate-z-thresh: ~f~%" (-> obj deactivate-z-thresh))
(format #t "~T~Tspawned-time: ~D~%" (-> obj spawned-time))
(format #t "~T~Tlast-update-time: ~D~%" (-> obj last-update-time))
(format #t "~T~Tspin-time: ~D~%" (-> obj spin-time))
(format #t "~T~Tlast-spit-time: ~D~%" (-> obj last-spit-time))
(format
#t
"~T~Tlast-player-in-air-time: ~D~%"
(-> obj last-player-in-air-time)
)
(format #t "~T~Tstarted-birthing-time: ~D~%" (-> obj started-birthing-time))
(format #t "~T~Tneck: ~A~%" (-> obj neck))
(format #t "~T~Tplayer-attack-id: ~D~%" (-> obj player-attack-id))
(format
#t
"~T~Tleg-socket-part-time[6] @ #x~X~%"
(-> obj leg-socket-part-time)
)
(format #t "~T~Torient-rot: #<vector @ #x~X>~%" (-> obj orient-rot))
(format #t "~T~Tanchor-trans: #<vector @ #x~X>~%" (-> obj anchor-trans))
(format
#t
"~T~Tthread-min-trans: #<vector @ #x~X>~%"
(-> obj thread-min-trans)
)
(format #t "~T~Tswing-pos: #<vector @ #x~X>~%" (-> obj swing-pos))
(format #t "~T~Tswing-base-pos: #<vector @ #x~X>~%" (-> obj swing-base-pos))
(format #t "~T~Tswing-vel: #<vector @ #x~X>~%" (-> obj swing-vel))
obj
)
;; failed to figure out what this is:
0
@@ -0,0 +1,601 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type mother-spider-proj
(deftype mother-spider-proj (projectile)
((parent-process (pointer projectile) :offset 12)
(facing-dir vector :inline :offset-assert 416)
)
:heap-base #x140
:method-count-assert 29
:size-assert #x1b0
:flag-assert #x1d014001b0
)
;; definition for method 3 of type mother-spider-proj
(defmethod inspect mother-spider-proj ((obj mother-spider-proj))
(let ((t9-0 (method-of-type projectile inspect)))
(t9-0 obj)
)
(format #t "~T~Tfacing-dir: #<vector @ #x~X>~%" (-> obj facing-dir))
obj
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 326)
(new 'static 'sparticle-launch-group
:length 48
:duration #x12c
:linger-duration #x5dc
:name "group-mother-spider-proj-fly"
:launcher
(new 'static 'inline-array sparticle-group-item 48
(sp-item 718 :flags (launch-asap) :binding 716)
(sp-item 716 :flags (start-dead) :binding 717)
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
(sp-item 717 :flags (start-dead launch-asap))
)
:bounds (new 'static 'sphere :w 12288.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 718)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 9
(sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-scale-x (meters 0.01))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-a 0.0)
(sp-int spt-timer 1200)
(sp-cpuinfo-flags bit3)
(sp-func spt-func 'sparticle-track-root-prim)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 716)
(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 1.0)
(sp-flt spt-scale-x (meters 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 96.0 64.0 1.0)
(sp-rnd-flt spt-g 64.0 32.0 1.0)
(sp-rnd-flt spt-b 96.0 64.0 1.0)
(sp-flt spt-a 128.0)
(sp-flt spt-scalevel-x (meters -0.006666667))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -1.0666667)
(sp-flt spt-fade-g -1.0666667)
(sp-flt spt-fade-b 0.0)
(sp-int spt-timer 150)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 81)
(sp-launcher-by-id spt-next-launcher 720)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0)
(sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-flt spt-conerot-radius (meters 0.1))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 720)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 4
(sp-flt spt-fade-r 0.0)
(sp-flt spt-fade-g 0.0)
(sp-flt spt-fade-b 0.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 717)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 25
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-rnd-flt spt-num 1.0 5.0 1.0)
(sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 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 96.0 64.0 1.0)
(sp-rnd-flt spt-g 64.0 32.0 1.0)
(sp-rnd-flt spt-b 96.0 64.0 1.0)
(sp-flt spt-a 128.0)
(sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0)
(sp-flt spt-scalevel-x (meters -0.0026666666))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -1.0666667)
(sp-flt spt-fade-g -1.0666667)
(sp-flt spt-fade-b 0.0)
(sp-flt spt-accel-y -2.7306666)
(sp-flt spt-friction 0.97)
(sp-int-plain-rnd spt-timer 30 119 1)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 60)
(sp-launcher-by-id spt-next-launcher 720)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.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 0.4) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 327)
(new 'static 'sparticle-launch-group
:length 3
:duration #x5
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-mother-spider-proj-hit"
:launcher
(new 'static 'inline-array sparticle-group-item 3
(sp-item 722)
(sp-item 723)
(sp-item 724)
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 722)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 24
(sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2))
(sp-flt spt-num 64.0)
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 192.0 32.0 1.0)
(sp-rnd-flt spt-g 64.0 32.0 1.0)
(sp-rnd-flt spt-b 96.0 64.0 1.0)
(sp-flt spt-a 128.0)
(sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0)
(sp-flt spt-scalevel-x (meters -0.006666667))
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-r -0.7111111)
(sp-flt spt-fade-g -0.7111111)
(sp-flt spt-fade-b 0.0)
(sp-flt spt-accel-y -0.68266666)
(sp-rnd-flt spt-friction 0.85 0.05 1.0)
(sp-int-plain-rnd spt-timer 30 119 1)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 90)
(sp-launcher-by-id spt-next-launcher 720)
(sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.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 0.4) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 724)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 6.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-rnd-flt spt-r 96.0 64.0 1.0)
(sp-rnd-flt spt-g 64.0 32.0 1.0)
(sp-rnd-flt spt-b 96.0 64.0 1.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0)
(sp-flt spt-fade-r -0.35555556)
(sp-flt spt-fade-g -0.35555556)
(sp-flt spt-fade-b 0.0)
(sp-flt spt-fade-a -0.30476192)
(sp-rnd-flt spt-accel-y -0.68266666 0.68266666 1.0)
(sp-int spt-timer 210)
(sp-cpuinfo-flags bit2)
(sp-int spt-next-time 60)
(sp-launcher-by-id spt-next-launcher 720)
(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* 723)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 13
(sp-tex spt-texture (new 'static 'texture-id :index #xf :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-rnd-flt spt-r 128.0 32.0 1.0)
(sp-rnd-flt spt-g 64.0 32.0 1.0)
(sp-rnd-flt spt-b 128.0 32.0 1.0)
(sp-flt spt-a 96.0)
(sp-flt spt-fade-a -4.8)
(sp-int spt-timer 15)
(sp-cpuinfo-flags bit2)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 328)
(new 'static 'sparticle-launch-group
:length 1
:duration #x5
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-mother-spider-proj-die"
:launcher
(new 'static 'inline-array sparticle-group-item 1 (sp-item 722))
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; definition for method 24 of type mother-spider-proj
(defmethod dummy-24 mother-spider-proj ((obj mother-spider-proj))
(with-pp
(spawn
(-> obj part)
(the-as vector (-> obj root-override root-prim prim-core))
)
(let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry))))
(set! (-> s5-0 command) (sound-command set-param))
(set! (-> s5-0 id) (-> obj sound-id))
(let ((a1-1 (-> obj root-override trans)))
(let ((s4-0 pp))
(when (= a1-1 #t)
(if
(and
s4-0
(type-type? (-> s4-0 type) process-drawable)
(nonzero? (-> (the-as process-drawable s4-0) root))
)
(set! a1-1 (-> (the-as process-drawable s4-0) root trans))
(set! a1-1 (the-as vector #f))
)
)
)
(sound-trans-convert (-> s5-0 parms trans) a1-1)
)
(set! (-> s5-0 parms mask) (the-as uint 32))
(-> s5-0 id)
)
(let
((f0-5
(*
5120.0
(+
0.9
(*
0.1
(cos
(* 873.81335 (the float (mod (-> *display* base-frame-counter) 75)))
)
)
)
)
)
)
(find-ground-and-draw-shadow
(-> obj root-override trans)
(the-as vector #f)
f0-5
(the-as uint 1)
(the-as process #f)
0.0
81920.0
)
)
(none)
)
)
;; definition for function mother-spider-proj-update-velocity
;; INFO: Return type mismatch int vs none.
(defun mother-spider-proj-update-velocity ((arg0 mother-spider-proj))
(when
(>=
(vector-vector-xz-distance
(-> arg0 parent-process 0 root-override trans)
(-> arg0 target)
)
(vector-vector-xz-distance
(-> arg0 parent-process 0 root-override trans)
(-> arg0 root-override trans)
)
)
(let
((s3-1
(vector-!
(new 'stack-no-clear 'vector)
(-> arg0 target)
(-> arg0 root-override trans)
)
)
(s4-0 (new 'stack-no-clear 'vector))
(s5-0
(vector-normalize-copy!
(new 'stack-no-clear 'vector)
(-> arg0 root-override transv)
1.0
)
)
)
(if (logtest? (-> arg0 root-override status) 4)
(vector-flatten! s3-1 s3-1 (-> arg0 root-override local-normal))
)
(vector-normalize-copy! s4-0 s3-1 1.0)
(let ((s3-2 (new 'stack-no-clear 'vector)))
(matrix-from-two-vectors-max-angle-partial!
(the-as matrix s3-2)
s5-0
s4-0
(* (-> arg0 max-turn) (-> *display* seconds-per-frame))
(-> arg0 tween)
)
(vector-matrix*! s5-0 s5-0 (the-as matrix s3-2))
)
(vector-normalize! s5-0 1.0)
(vector-float*! (-> arg0 root-override transv) s5-0 (-> arg0 max-speed))
)
)
0
(none)
)
;; definition for method 26 of type mother-spider-proj
;; INFO: Return type mismatch int vs none.
(defmethod dummy-26 mother-spider-proj ((obj mother-spider-proj))
(let
((s5-0
(new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player))
)
)
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) projectile-collision-reaction)
(set! (-> s5-0 no-reaction) nothing)
(let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0))))
(set! (-> s4-0 prim-core collide-as) (the-as uint 1024))
(set! (-> s4-0 collide-with) (the-as uint 2973))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set! (-> s4-0 prim-core offense) 3)
(set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8)
)
(dummy-46 s5-0)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(dummy-50 s5-0)
(set! (-> s5-0 max-iteration-count) (the-as uint 2))
(set! (-> s5-0 event-self) 'touched)
(set! (-> obj root-override) s5-0)
)
(logclear! (-> obj mask) (process-mask enemy))
(logclear! (-> obj mask) (process-mask crate))
(logclear! (-> obj mask) (process-mask attackable))
(set! (-> obj mask) (logior (process-mask projectile) (-> obj mask)))
0
(none)
)
;; definition for method 27 of type mother-spider-proj
;; INFO: Return type mismatch sound-id vs none.
;; Used lq/sq
(defmethod dummy-27 mother-spider-proj ((obj mother-spider-proj))
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 326) obj)
)
(set! (-> obj max-speed) 32768.0)
(set! (-> obj update-velocity) mother-spider-proj-update-velocity)
(set! (-> obj max-turn) 5916.4443)
(set! (-> obj tween) 0.02)
(set! (-> obj attack-mode) 'mother-spider-proj)
(set! (-> obj timeout) (the-as uint 1200))
(set! (-> obj target quad) (-> (target-pos 0) quad))
(set! (-> obj target y) (+ 4915.2 (-> obj target y)))
(set! (-> obj target-base quad) (-> obj target quad))
(set!
(-> obj sound-id)
(sound-play-by-name
(static-sound-name "mother-track")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
)
(sound-play-by-name
(static-sound-name "mother-fire")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
(none)
)
;; definition for method 28 of type mother-spider-proj
;; INFO: Return type mismatch vector vs none.
;; Used lq/sq
(defmethod dummy-28 mother-spider-proj ((obj mother-spider-proj))
(when (and *target* (zero? (logand (-> *target* state-flags) #x80f8)))
(let ((gp-0 (-> obj target)))
(set! (-> gp-0 quad) (-> (target-pos 0) quad))
(set! (-> gp-0 y) (+ 4915.2 (-> gp-0 y)))
(let ((f0-2 (vector-vector-distance gp-0 (-> obj root-override trans)))
(a2-0 (new 'stack-no-clear 'vector))
)
(if (>= 0.0 f0-2)
(set! f0-2 409.6)
)
(set! (-> a2-0 quad) (-> *target* control transv quad))
(set! (-> a2-0 y) 0.0)
(let ((f0-3 (/ f0-2 (* 32768.0 (-> *display* seconds-per-frame)))))
(vector+float*! gp-0 gp-0 a2-0 (* f0-3 (-> *display* seconds-per-frame)))
)
)
)
)
(none)
)
;; failed to figure out what this is:
(defstate projectile-impact (mother-spider-proj)
:virtual #t
:code
(behavior ()
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-1 (method-of-type part-tracker activate)))
(t9-1
(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* 327)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(if (nonzero? (-> self sound-id))
(sound-stop (-> self sound-id))
)
(sound-play-by-name
(static-sound-name "mother-hit")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
(suspend)
(go-virtual projectile-die)
(none)
)
)
;; failed to figure out what this is:
(defstate projectile-dissipate (mother-spider-proj)
:virtual #t
:code
(behavior ()
(let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000)))
(when gp-0
(let ((t9-1 (method-of-type part-tracker activate)))
(t9-1
(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* 328)
-1
#f
#f
#f
(-> self root-override trans)
)
(-> gp-0 ppointer)
)
)
(if (nonzero? (-> self sound-id))
(sound-stop (-> self sound-id))
)
(suspend)
(go-virtual projectile-die)
(none)
)
)
@@ -0,0 +1,351 @@
;;-*-Lisp-*-
(in-package goal)
;; definition for symbol *spider-jump-mods*, type surface
(define
*spider-jump-mods*
(new 'static 'surface
:name 'jump
:turnv 131072.0
:turnvv 18204.445
:tiltv 32768.0
:tiltvv 131072.0
:transv-max 49152.0
:target-speed 49152.0
:seek0 0.6
:seek90 0.6
:seek180 0.6
:fric 0.2
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags #xc00
)
)
;; definition of type spiderwebs
(deftype spiderwebs (process-drawable)
((spring-height meters :offset-assert 176)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xb4
:flag-assert #x14005000b4
)
;; definition for method 3 of type spiderwebs
(defmethod inspect spiderwebs ((obj spiderwebs))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tspring-height: (meters ~m)~%" (-> obj spring-height))
obj
)
;; failed to figure out what this is:
(let
((v1-2
(new 'static 'skeleton-group
:art-group-name "spiderwebs"
:bounds (new 'static 'vector :w 14336.0)
:version #x6
)
)
)
(set! (-> v1-2 jgeo) 0)
(set! (-> v1-2 janim) -1)
(set! (-> v1-2 mgeo 0) (the-as uint 1))
(set! (-> v1-2 lod-dist 0) 4095996000.0)
(set! *spiderwebs-sg* v1-2)
)
;; definition for function spiderwebs-default-event-handler
;; INFO: Return type mismatch none vs object.
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?
(defbehavior
spiderwebs-default-event-handler spiderwebs
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((= v1-0 'bonk)
(let ((a1-1 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-1 from) self)
(set! (-> a1-1 num-params) 3)
(set! (-> a1-1 message) 'jump)
(set!
(-> a1-1 param 0)
(the-as uint (-> self spring-height))
)
(set!
(-> a1-1 param 1)
(the-as uint (-> self spring-height))
)
(set! (-> a1-1 param 2) (the-as uint *spider-jump-mods*))
(if (send-event-function arg0 a1-1)
(go spiderwebs-bounce)
)
)
)
((= v1-0 'touch)
(when (= (-> arg0 type) target)
(let* ((a0-8 (target-pos 0))
(f1-1 (- (-> a0-8 y) (-> self root trans y)))
)
(if
(and
(>= 2048.0 (fabs f1-1))
(and
(>=
13516.8
(vector-vector-distance a0-8 (-> self root trans))
)
(let
((a1-3 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-3 from) self)
(set! (-> a1-3 num-params) 3)
(set! (-> a1-3 message) 'jump)
(set!
(-> a1-3 param 0)
(the-as uint (-> self spring-height))
)
(set!
(-> a1-3 param 1)
(the-as uint (-> self spring-height))
)
(set!
(-> a1-3 param 2)
(the-as uint *spider-jump-mods*)
)
(send-event-function arg0 a1-3)
)
)
)
(go spiderwebs-bounce)
)
)
)
)
((= v1-0 'attack)
(if
(and
(= (-> arg3 param 1) 'flop)
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) self)
(set! (-> a1-4 num-params) 3)
(set! (-> a1-4 message) 'jump)
(set!
(-> a1-4 param 0)
(the-as uint (-> self spring-height))
)
(set!
(-> a1-4 param 1)
(the-as uint (-> self spring-height))
)
(set! (-> a1-4 param 2) (the-as uint *spider-jump-mods*))
(send-event-function arg0 a1-4)
)
)
(go spiderwebs-bounce)
)
#f
)
)
)
)
)
;; failed to figure out what this is:
(defstate spiderwebs-idle (spiderwebs)
:event
spiderwebs-default-event-handler
:code
(behavior ()
(logior! (-> self mask) (process-mask actor-pause))
(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 2))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(transform-post)
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate spiderwebs-bounce (spiderwebs)
:code
(behavior ()
(logclear! (-> self mask) (process-mask actor-pause))
(sound-play-by-name
(static-sound-name "web-tramp")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
(let ((gp-1 (-> self skel root-channel 0)))
(set!
(-> gp-1 frame-group)
(the-as art-joint-anim (-> self draw art-group data 2))
)
(set! (-> gp-1 param 0) (ja-aframe 10.0 0))
(set! (-> gp-1 param 1) 1.0)
(set! (-> gp-1 frame-num) 0.0)
(joint-control-channel-group!
gp-1
(the-as art-joint-anim (-> self draw art-group data 2))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((gp-2 (-> self skel root-channel 0)))
(set! (-> gp-2 param 0) (ja-aframe 10.0 0))
(set! (-> gp-2 param 1) 1.0)
(joint-control-channel-group-eval!
gp-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(set! (-> self event-hook) (-> spiderwebs-idle event))
(let ((gp-3 (-> self skel root-channel 0)))
(set!
(-> gp-3 frame-group)
(the-as art-joint-anim (-> self draw art-group data 2))
)
(set!
(-> gp-3 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 2))
data
0
length
)
-1
)
)
)
(set! (-> gp-3 param 1) 1.0)
(set! (-> gp-3 frame-num) (ja-aframe 10.0 0))
(joint-control-channel-group!
gp-3
(the-as art-joint-anim (-> self draw art-group data 2))
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 spiderwebs-idle)
(none)
)
:post
(the-as (function none :behavior spiderwebs) transform-post)
)
;; definition for method 11 of type spiderwebs
(defmethod copy-defaults! spiderwebs ((obj spiderwebs) (arg0 res-lump))
(set! (-> obj mask) (logior (process-mask platform) (-> obj mask)))
(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) nothing)
(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 2048))
(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) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) 13926.4)
(dummy-50 s4-0)
(set! (-> obj root) s4-0)
)
(process-drawable-from-entity! obj arg0)
(dummy-14 obj *spiderwebs-sg* '())
(set!
(-> obj spring-height)
(res-lump-float arg0 'spring-height :default 45056.0)
)
(ja-channel-set! 1)
(let ((a0-11 (-> obj skel root-channel 0)))
(set!
(-> a0-11 param 0)
(the float (+ (-> a0-11 frame-group data 0 length) -1))
)
(set! (-> a0-11 param 1) 1.0)
(joint-control-channel-group!
a0-11
(the-as art-joint-anim #f)
num-func-seek!
)
)
(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)
)
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
(transform-post)
(go spiderwebs-idle)
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -1717,7 +1717,7 @@
(run-now-in-process
s5-0
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*bonelurker-sg*
#f
@@ -2343,7 +2343,11 @@
(run-now-in-process
s5-0
manipy-init
(-> self root trans)
(->
self
root-override
trans
)
gp-2
*evilbro-sg*
#f
@@ -2445,7 +2449,11 @@
(run-now-in-process
s5-1
manipy-init
(-> self root trans)
(->
self
root-override
trans
)
gp-4
*evilsis-sg*
#f
@@ -2734,7 +2742,7 @@
(run-now-in-process
s5-0
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*bonelurker-sg*
#f
@@ -2778,7 +2786,7 @@
(run-now-in-process
s5-1
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*darkecocan-sg*
#f
+47
View File
@@ -0,0 +1,47 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type ram
(deftype ram (process-drawable)
((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)
(orient-ry float :offset-assert 192)
(fuel-cell-dest-pos vector :inline :offset-assert 208)
)
:heap-base #x70
:method-count-assert 23
:size-assert #xe0
:flag-assert #x17007000e0
(:methods
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
)
)
;; definition for method 3 of type ram
(defmethod inspect ram ((obj ram))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tram-id: ~D~%" (-> obj ram-id))
(format #t "~T~Tgive-fuel-cell?: ~A~%" (-> obj give-fuel-cell?))
(format #t "~T~Tgive-fuel-cell-anim: ~A~%" (-> obj give-fuel-cell-anim))
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
(format #t "~T~Torient-ry: ~f~%" (-> obj orient-ry))
(format
#t
"~T~Tfuel-cell-dest-pos: #<vector @ #x~X>~%"
(-> obj fuel-cell-dest-pos)
)
obj
)
;; failed to figure out what this is:
0
@@ -0,0 +1,169 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type snowball-info
(deftype snowball-info (basic)
((entity basic :offset-assert 4)
)
:method-count-assert 9
:size-assert #x8
:flag-assert #x900000008
)
;; definition for method 3 of type snowball-info
(defmethod inspect snowball-info ((obj snowball-info))
(format #t "[~8x] ~A~%" obj (-> obj type))
(format #t "~Tentity: ~A~%" (-> obj entity))
obj
)
;; definition of type snowball-bank
(deftype snowball-bank (basic)
()
:method-count-assert 9
:size-assert #x4
:flag-assert #x900000004
)
;; definition for method 3 of type snowball-bank
(defmethod inspect snowball-bank ((obj snowball-bank))
(format #t "[~8x] ~A~%" obj (-> obj type))
obj
)
;; definition for symbol *SNOWBALL-bank*, type snowball-bank
(define *SNOWBALL-bank* (the-as snowball-bank L24))
;; definition for function target-snowball-post
;; INFO: Return type mismatch int vs none.
(defbehavior target-snowball-post target ()
(let ((gp-0 (the int (-> *display* time-ratio))))
(set-time-ratios *display* 1.0)
(countdown (s5-0 gp-0)
(set! (-> self control unknown-int40) s5-0)
(flag-setup)
(build-conversions (-> self control transv))
(reverse-conversions (-> self control transv))
(post-flag-setup)
)
(set-time-ratios *display* (the float gp-0))
)
(rot->dir-targ! (-> self control))
(ja-post)
(joint-points)
(do-target-shadow)
(target-powerup-process)
0
(none)
)
;; failed to figure out what this is:
(defstate target-snowball-start (target)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(the-as object (cond
((and (= arg2 'query) (= (-> arg3 param 0) 'mode))
'snowball
)
((let ((v1-3 arg2))
(= v1-3 'end-mode)
)
enter-state
(-> *TARGET-bank* duck-jump-height-min)
(-> *TARGET-bank* duck-jump-height-max)
(go target-jump)
)
(else
(target-generic-event-handler arg0 arg1 arg2 arg3)
)
)
)
)
:exit
(behavior ()
(when (!= (-> self next-state name) 'target-snowball)
(let ((v1-1 (-> self manipy)))
(when v1-1
(deactivate (-> v1-1 0))
(set! (-> self manipy) (the-as (pointer manipy) #f))
)
)
(set!
(-> self control root-prim prim-core action)
(logand -4097 (-> self control root-prim prim-core action))
)
(set! (-> self control unknown-surface00) *walk-mods*)
(set!
(-> self control dynam gravity-max)
(-> self control unknown-dynamics00 gravity-max)
)
(set!
(-> self control dynam gravity-length)
(-> self control unknown-dynamics00 gravity-length)
)
(target-collide-set! 'normal 0.0)
(set! (-> self control reaction) target-collision-reaction)
(target-exit)
)
(none)
)
:code
(behavior ((arg0 handle))
(target-exit)
(set! *display-profile* #f)
(set! *display-entity-errors* #f)
(if (zero? (-> self snowball))
(set! (-> self snowball) (new 'process 'snowball-info))
)
(set! (-> self snowball entity) #f)
(let ((a0-2 (handle->process arg0)))
(if a0-2
(set! (-> self snowball entity) (-> a0-2 entity))
)
)
(reset-target-state #t)
(set! (-> self control transv quad) (the-as uint128 0))
(set! (-> self control unknown-float01) 0.0)
(let* ((a0-6 (-> self control))
(t9-3 (method-of-object a0-6 TODO-RENAME-28))
)
(new 'static 'vector :y 4096.0 :w 1.0)
(t9-3 a0-6)
)
(logior! (-> self control root-prim prim-core action) 4096)
(ja-channel-set! 1)
(let ((gp-1 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
gp-1
(the-as art-joint-anim (-> self draw art-group data 5))
num-func-identity
)
(set! (-> gp-1 frame-num) 0.0)
)
(remove-exit)
(go target-snowball)
(none)
)
:post
(the-as (function none :behavior target) target-post)
)
;; failed to figure out what this is:
(defstate target-snowball (target)
:event
(-> target-snowball-start event)
:exit
(-> target-snowball-start exit)
:code
(behavior ()
(while #t
(suspend)
)
(none)
)
:post
(behavior ()
(target-snowball-post)
(none)
)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,991 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type square-platform
(deftype square-platform (baseplat)
((plat-id int32 :offset-assert 228)
(pos-u float :offset-assert 232)
(water-entity entity-actor :offset-assert 236)
(splash-counter int32 :offset-assert 240)
(start-splash-time uint64 :offset-assert 248)
(part2 sparticle-launch-control :offset-assert 256)
(part3 sparticle-launch-control :offset-assert 260)
(part4 sparticle-launch-control :offset-assert 264)
(up-pos vector :inline :offset-assert 272)
(down-pos vector :inline :offset-assert 288)
)
:heap-base #xc0
:method-count-assert 28
:size-assert #x130
:flag-assert #x1c00c00130
(:methods
(TODO-RENAME-27 (_type_ symbol) none 27)
)
)
;; definition for method 3 of type square-platform
(defmethod inspect square-platform ((obj square-platform))
(let ((t9-0 (method-of-type baseplat inspect)))
(t9-0 obj)
)
(format #t "~T~Tplat-id: ~D~%" (-> obj plat-id))
(format #t "~T~Tpos-u: ~f~%" (-> obj pos-u))
(format #t "~T~Twater-entity: ~A~%" (-> obj water-entity))
(format #t "~T~Tsplash-counter: ~D~%" (-> obj splash-counter))
(format #t "~T~Tstart-splash-time: ~D~%" (-> obj start-splash-time))
(format #t "~T~Tpart2: ~A~%" (-> obj part2))
(format #t "~T~Tpart3: ~A~%" (-> obj part3))
(format #t "~T~Tpart4: ~A~%" (-> obj part4))
(format #t "~T~Tup-pos: #<vector @ #x~X>~%" (-> obj up-pos))
(format #t "~T~Tdown-pos: #<vector @ #x~X>~%" (-> obj down-pos))
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "square-platform"
:bounds
(new 'static 'vector :y -45056.0 :w 32768.0)
:max-lod 1
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 4095996000.0)
(set! *square-platform-sg* v1-1)
)
;; definition of type square-platform-button
(deftype square-platform-button (basebutton)
()
:heap-base #x90
:method-count-assert 32
:size-assert #x100
:flag-assert #x2000900100
)
;; definition for method 3 of type square-platform-button
(defmethod inspect square-platform-button ((obj square-platform-button))
(let ((t9-0 (method-of-type basebutton inspect)))
(t9-0 obj)
)
obj
)
;; definition of type square-platform-master
(deftype square-platform-master (process-drawable)
((button-id int32 :offset-assert 176)
(plat-id int32 :offset-assert 180)
(plat-mask uint32 :offset-assert 184)
(plat-id-dir int32 :offset-assert 188)
(wiggled? symbol :offset-assert 192)
(timeout uint64 :offset-assert 200)
(last-plat-activated-time uint64 :offset-assert 208)
(delay-til-wiggle uint64 :offset-assert 216)
(ticker ticky :inline :offset-assert 224)
)
:heap-base #x90
:method-count-assert 20
:size-assert #x100
:flag-assert #x1400900100
)
;; definition for method 3 of type square-platform-master
(defmethod inspect square-platform-master ((obj square-platform-master))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tbutton-id: ~D~%" (-> obj button-id))
(format #t "~T~Tplat-id: ~D~%" (-> obj plat-id))
(format #t "~T~Tplat-mask: ~D~%" (-> obj plat-mask))
(format #t "~T~Tplat-id-dir: ~D~%" (-> obj plat-id-dir))
(format #t "~T~Twiggled?: ~A~%" (-> obj wiggled?))
(format #t "~T~Ttimeout: ~D~%" (-> obj timeout))
(format
#t
"~T~Tlast-plat-activated-time: ~D~%"
(-> obj last-plat-activated-time)
)
(format #t "~T~Tdelay-til-wiggle: ~D~%" (-> obj delay-til-wiggle))
(format #t "~T~Tticker: #<ticky @ #x~X>~%" (-> obj ticker))
obj
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 437)
(new 'static 'sparticle-launch-group
:length 2
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-square-platform-breach-splash"
:launcher
(new 'static 'inline-array sparticle-group-item 2
(sp-item 2222 :flags (is-3d))
(sp-item 2315 :flags (is-3d))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 2222)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2))
(sp-flt spt-num 8.0)
(sp-rnd-flt spt-x (meters 0.0) (meters 3.0) 1.0)
(sp-rnd-flt spt-scale-x (meters 3.5) (meters 3.5) 1.0)
(sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 64.0 1.0)
(sp-rnd-flt spt-g 128.0 64.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.013333334) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 3.2)
(sp-int spt-timer 600)
(sp-cpuinfo-flags bit2)
(sp-int-plain-rnd spt-next-time 10 29 1)
(sp-launcher-by-id spt-next-launcher 2316)
(sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.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 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 2316)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2
(sp-flt spt-fade-a -0.17066666)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 2315)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 21
(sp-tex spt-texture (new 'static 'texture-id :index #x1e :page #x2))
(sp-flt spt-num 8.0)
(sp-rnd-flt spt-x (meters 3.0) (meters 1.5) 1.0)
(sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0)
(sp-rnd-flt spt-rot-y (degrees 0.0) (degrees 360.0) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-rnd-flt spt-r 128.0 64.0 1.0)
(sp-rnd-flt spt-g 128.0 64.0 1.0)
(sp-rnd-flt spt-b 128.0 64.0 1.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-scalevel-x (meters 0.013333334) (meters 0.013333334) 1.0)
(sp-copy-from-other spt-scalevel-y -4)
(sp-flt spt-fade-a 3.2)
(sp-int spt-timer 600)
(sp-cpuinfo-flags bit2)
(sp-int-plain-rnd spt-next-time 10 29 1)
(sp-launcher-by-id spt-next-launcher 2316)
(sp-rnd-flt spt-conerot-x (degrees 70.0) (degrees 20.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 360.0) 1.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 438)
(new 'static 'sparticle-launch-group
:length 1
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name
"group-square-platform-submerge-bubbles"
:launcher
(new 'static 'inline-array sparticle-group-item 1 (sp-item 2223))
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 2223)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 20
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 2.0)
(sp-rnd-flt spt-x (meters -4.0) (meters 8.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 900)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-flt spt-userdata -663298.44)
(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 2317)
(sp-flt spt-rotate-y (degrees 0.0))
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 2317)
(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-group-id-table* 439)
(new 'static 'sparticle-launch-group
:length 2
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-square-platform-submerge-splash"
:launcher
(new 'static 'inline-array sparticle-group-item 2
(sp-item 2222 :flags (is-3d))
(sp-item 2315 :flags (is-3d))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; definition for method 27 of type square-platform
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod TODO-RENAME-27 square-platform ((obj square-platform) (arg0 symbol))
(local-vars (v0-3 sound-id) (sv-48 int))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(set! (-> s4-0 quad) (-> obj root-override trans quad))
(set! (-> s4-0 y) (+ -20480.0 (-> s4-0 y)))
(let* ((v1-1 (-> obj water-entity))
(a0-4 (if v1-1
(-> v1-1 extra process)
)
)
)
(when (not a0-4)
(set!
(-> obj water-entity)
(entity-actor-lookup (-> obj entity) 'alt-actor 0)
)
(let ((v1-4 (-> obj water-entity)))
(set! a0-4 (if v1-4
(-> v1-4 extra process)
)
)
)
)
(when (the-as water-vol a0-4)
(let ((f0-2 (get-ripple-height (the-as water-vol a0-4) s4-0))
(s3-0 (new 'stack-no-clear 'vector))
)
(set! (-> s3-0 quad) (-> s4-0 quad))
(set! (-> s3-0 y) f0-2)
(if (zero? (-> obj start-splash-time))
(set! v0-3 (cond
(arg0
(if (>= (-> s4-0 y) f0-2)
(set!
(-> obj start-splash-time)
(the-as uint (-> *display* base-frame-counter))
)
)
v0-3
)
(else
(when (>= f0-2 (-> s4-0 y))
(set!
(-> obj start-splash-time)
(the-as uint (-> *display* base-frame-counter))
)
(let ((s2-0 sound-play-by-name)
(s1-0
(make-u128
#x6873616c
(the-as uint #x70732d656772616c)
)
)
(s0-0 (new-sound-id))
)
(set! sv-48 1024)
(let
((a3-0
(the int (* 1524.0 (rand-vu-float-range -0.8 0.8)))
)
(t0-0 0)
(t1-0 1)
(t2-0 #t)
)
(s2-0
(the-as sound-name s1-0)
s0-0
sv-48
a3-0
t0-0
(the-as uint t1-0)
(the-as vector t2-0)
)
)
)
)
)
)
)
)
(when (nonzero? (-> obj start-splash-time))
(cond
(arg0
(let ((v1-21 (-> obj splash-counter)))
(when (< v1-21 2)
(set! (-> obj splash-counter) (+ v1-21 1))
(spawn (-> obj part2) s3-0)
)
)
)
(else
(spawn (-> obj part3) s4-0)
)
)
)
(when (not arg0)
(let ((v1-25 (-> obj splash-counter)))
(when (< v1-25 2)
(set! (-> obj splash-counter) (+ v1-25 1))
(spawn (-> obj part4) s3-0)
)
)
)
)
)
)
)
(none)
)
;; failed to figure out what this is:
(defstate square-platform-lowered (square-platform)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (when (= v1-0 'trigger)
(if
(and
(= (-> arg0 type) square-platform-master)
(=
(-> (the-as square-platform-master arg0) plat-id)
(-> self plat-id)
)
)
(go square-platform-rising)
)
)
)
)
)
:code
(behavior ()
(set! (-> self pos-u) 0.0)
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
)
;; failed to figure out what this is:
(defstate square-platform-rising (square-platform)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((or (= v1-0 'bonk) (= v1-0 'bounce))
(dummy-22 self)
)
((= v1-0 'untrigger)
(go square-platform-lowering)
)
)
)
)
)
:enter
(behavior ()
(set! (-> self start-splash-time) (the-as uint 0))
(set! (-> self splash-counter) 0)
0
(none)
)
:trans
(behavior ()
(set!
(-> self pos-u)
(seek-with-smooth
(-> self pos-u)
1.0
(/ 1.0 (* 0.75 (-> *display* frames-per-second)))
0.8
0.01
)
)
(vector-lerp!
(-> self basetrans)
(-> self down-pos)
(-> self up-pos)
(-> self pos-u)
)
(plat-trans)
(when (= (-> self pos-u) 1.0)
(plat-post)
(go square-platform-raised)
)
(TODO-RENAME-27 self #t)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(the-as (function none :behavior square-platform) plat-post)
)
;; failed to figure out what this is:
(defstate square-platform-raised (square-platform)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((or (= v1-0 'bonk) (= v1-0 'bounce))
(dummy-22 self)
)
((= v1-0 'untrigger)
(go square-platform-lowering)
)
)
)
)
)
:trans
(the-as (function none :behavior square-platform) plat-trans)
:code
(behavior ()
(set! (-> self pos-u) 1.0)
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(the-as (function none :behavior square-platform) plat-post)
)
;; failed to figure out what this is:
(defstate square-platform-lowering (square-platform)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (cond
((or (= v1-0 'bonk) (= v1-0 'bounce))
(dummy-22 self)
)
((= v1-0 'trigger)
(go square-platform-rising)
)
((= v1-0 'touch)
(let ((a1-8 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-8 from) self)
(set! (-> a1-8 num-params) 1)
(set! (-> a1-8 message) 'no-look-around)
(set! (-> a1-8 param 0) (the-as uint 450))
(send-event-function arg0 a1-8)
)
#f
)
)
)
)
)
:enter
(behavior ()
(set! (-> self start-splash-time) (the-as uint 0))
(set! (-> self splash-counter) 0)
0
(none)
)
:trans
(behavior ()
(set!
(-> self pos-u)
(seek-with-smooth
(-> self pos-u)
0.0
(/ 1.0 (* 0.75 (-> *display* frames-per-second)))
0.8
0.01
)
)
(vector-lerp!
(-> self basetrans)
(-> self down-pos)
(-> self up-pos)
(-> self pos-u)
)
(plat-trans)
(when (= (-> self pos-u) 0.0)
(plat-post)
(go square-platform-lowered)
)
(TODO-RENAME-27 self #f)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(the-as (function none :behavior square-platform) plat-post)
)
;; definition for method 10 of type square-platform
(defmethod deactivate square-platform ((obj square-platform))
(if (nonzero? (-> obj part2))
(kill-and-free-particles (-> obj part2))
)
(if (nonzero? (-> obj part3))
(kill-and-free-particles (-> obj part3))
)
(if (nonzero? (-> obj part4))
(kill-and-free-particles (-> obj part4))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition for method 7 of type square-platform
;; INFO: Return type mismatch baseplat vs square-platform.
(defmethod relocate square-platform ((obj square-platform) (arg0 int))
(if (nonzero? (-> obj part2))
(&+! (-> obj part2) arg0)
)
(if (nonzero? (-> obj part3))
(&+! (-> obj part3) arg0)
)
(if (nonzero? (-> obj part4))
(&+! (-> obj part4) arg0)
)
(the-as
square-platform
((the-as
(function baseplat int baseplat)
(find-parent-method square-platform 7)
)
obj
arg0
)
)
)
;; definition for method 11 of type square-platform
;; Used lq/sq
(defmethod copy-defaults! square-platform ((obj square-platform) (arg0 res-lump))
(local-vars (sv-16 res-tag) (sv-32 res-tag))
(set! (-> obj pos-u) 0.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) nothing)
(dummy-29 s4-0 1)
(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 2048))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 3))
(set! (-> s3-0 prim-core offense) 4)
(set! (-> s3-0 transform-index) 3)
(set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0)
)
(dummy-46 s4-0)
(set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w)))
(dummy-50 s4-0)
(set! (-> obj root-override) s4-0)
)
(process-drawable-from-entity! obj arg0)
(set! (-> obj link) (new 'process 'actor-link-info obj))
(set! (-> obj plat-id) (actor-count-before (-> obj link)))
(dummy-14 obj *square-platform-sg* '())
(dummy-21 obj)
(ja-channel-set! 1)
(let ((s4-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s4-1
(the-as art-joint-anim (-> obj draw art-group data 3))
num-func-identity
)
(set! (-> s4-1 frame-num) 0.0)
)
(set! sv-16 (new 'static 'res-tag))
(let*
((v1-32 (res-lump-data (-> obj entity) 'distance pointer :tag-ptr (& sv-16)))
(f30-0 (if (and v1-32 (> (the-as int (-> sv-16 elt-count)) 0))
(-> (the-as (pointer float) v1-32))
-8192.0
)
)
)
(set! sv-32 (new 'static 'res-tag))
(let*
((v1-35
(res-lump-data (-> obj entity) 'distance pointer :tag-ptr (& sv-32))
)
(f0-10 (if (and v1-35 (< 1 (the-as int (-> sv-32 elt-count))))
(-> (the-as (pointer float) v1-35) 1)
16384.0
)
)
)
(set! (-> obj down-pos quad) (-> obj root-override trans quad))
(+! (-> obj down-pos y) f30-0)
(set! (-> obj up-pos quad) (-> obj root-override trans quad))
(+! (-> obj up-pos y) f0-10)
)
)
(set! (-> obj basetrans quad) (-> obj down-pos quad))
(set! (-> obj root-override trans quad) (-> obj basetrans quad))
(set!
(-> obj part2)
(create-launch-control (-> *part-group-id-table* 437) obj)
)
(set!
(-> obj part3)
(create-launch-control (-> *part-group-id-table* 438) obj)
)
(set!
(-> obj part4)
(create-launch-control (-> *part-group-id-table* 439) obj)
)
(set! (-> obj water-entity) (entity-actor-lookup arg0 'alt-actor 0))
(ja-post)
(dummy-47 (-> obj root-override))
(go square-platform-lowered)
(none)
)
;; failed to figure out what this is:
(defstate square-platform-master-idle (square-platform-master)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (when (= v1-0 'trigger)
(when (= (-> arg0 type) square-platform-button)
(set!
(-> self button-id)
(-> (the-as square-platform-button arg0) button-id)
)
(logclear! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #t)
(go square-platform-master-activate)
)
)
)
)
)
:code
(behavior ()
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
0
(none)
)
)
;; failed to figure out what this is:
(defstate square-platform-master-activate (square-platform-master)
:enter
(behavior ()
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
(set! (-> self wiggled?) #f)
(sleep (-> self ticker) (-> self timeout))
(set! (-> self plat-id) -1)
(send-to-all (-> self link) 'trigger)
(set! (-> self plat-id) 0)
(let ((gp-0 1))
(let ((v1-7 (-> self button-id)))
(cond
((zero? v1-7)
(let* ((s5-0 (get-process *default-dead-pool* sunkencam #x4000))
(a0-4 (when s5-0
(let ((t9-3 (method-of-type sunkencam activate)))
(t9-3
(the-as sunkencam s5-0)
self
'sunkencam
(the-as pointer #x70004000)
)
)
(run-now-in-process
s5-0
pov-camera-init-by-other
(-> self root trans)
*sunkencam-sg*
"qbert-show-door-open"
0
#f
'()
)
(-> s5-0 ppointer)
)
)
)
(set! (-> (the-as sunkencam (-> a0-4 0)) seq) (the-as uint 3))
)
)
((= v1-7 1)
(let* ((gp-1 (get-process *default-dead-pool* sunkencam #x4000))
(v1-13 (when gp-1
(let ((t9-6 (method-of-type sunkencam activate)))
(t9-6
(the-as sunkencam gp-1)
self
'sunkencam
(the-as pointer #x70004000)
)
)
(run-now-in-process
gp-1
pov-camera-init-by-other
(-> self root trans)
*sunkencam-sg*
"qbert-show-door-open"
0
#f
'()
)
(-> gp-1 ppointer)
)
)
)
(set! (-> (the-as sunkencam (-> v1-13 0)) seq) (the-as uint 4))
)
(set! gp-0 -1)
)
((= v1-7 2)
(let* ((s5-1 (get-process *default-dead-pool* sunkencam #x4000))
(a0-17 (when s5-1
(let ((t9-9 (method-of-type sunkencam activate)))
(t9-9
(the-as sunkencam s5-1)
self
'sunkencam
(the-as pointer #x70004000)
)
)
(run-now-in-process
s5-1
pov-camera-init-by-other
(-> self root trans)
*sunkencam-sg*
"qbert-show-door-open"
0
#f
'()
)
(-> s5-1 ppointer)
)
)
)
(set! (-> (the-as sunkencam (-> a0-17 0)) seq) (the-as uint 5))
)
)
((= v1-7 3)
(let* ((gp-2 (get-process *default-dead-pool* sunkencam #x4000))
(v1-24 (when gp-2
(let ((t9-12 (method-of-type sunkencam activate)))
(t9-12
(the-as sunkencam gp-2)
self
'sunkencam
(the-as pointer #x70004000)
)
)
(run-now-in-process
gp-2
pov-camera-init-by-other
(-> self root trans)
*sunkencam-sg*
"qbert-show-door-open"
0
#f
'()
)
(-> gp-2 ppointer)
)
)
)
(set! (-> (the-as sunkencam (-> v1-24 0)) seq) (the-as uint 6))
)
(set! gp-0 -1)
)
)
)
(if (< gp-0 0)
(set! (-> self plat-id) 32)
)
(set! (-> self plat-id-dir) gp-0)
)
(none)
)
:exit
(behavior ()
(logior! (-> self mask) (process-mask actor-pause))
(process-entity-status! self (entity-perm-status bit-3) #f)
(none)
)
:trans
(behavior ()
(when (completed? (-> self ticker))
(send-to-all (-> self link) 'untrigger)
(go square-platform-master-idle)
)
(when (reached-delay? (-> self ticker) (-> self delay-til-wiggle))
(when (not (-> self wiggled?))
(set! (-> self wiggled?) #t)
(send-to-all (-> self link) 'bounce)
)
)
(when
(>=
(-
(-> *display* base-frame-counter)
(the-as int (-> self last-plat-activated-time))
)
90
)
(set!
(-> self last-plat-activated-time)
(the-as uint (-> *display* base-frame-counter))
)
(let ((v1-20 (-> self plat-id))
(a0-5 (-> self plat-id-dir))
(a1-3 (-> self plat-mask))
)
(while #t
(+! v1-20 a0-5)
(cond
((<= v1-20 0)
(set! (-> self plat-id) 0)
(return #f)
)
((>= v1-20 32)
(set! (-> self plat-id) 32)
(return #f)
)
(else
(when (logtest? a1-3 (ash 1 v1-20))
(set! (-> self plat-id) v1-20)
(send-to-all (-> self link) 'trigger)
(return #f)
)
)
)
)
)
)
(none)
)
:code
(behavior ()
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
0
(none)
)
)
;; definition for method 11 of type square-platform-master
(defmethod
copy-defaults!
square-platform-master
((obj square-platform-master) (arg0 res-lump))
(set! (-> obj button-id) -1)
(set! (-> obj plat-id) -1)
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj arg0)
(set!
(-> obj timeout)
(the-as
uint
(the int (* 300.0 (res-lump-float (-> obj entity) 'timeout :default 10.0)))
)
)
(set! (-> obj delay-til-wiggle) (+ (-> obj timeout) -120))
(set! (-> obj link) (new 'process 'actor-link-info obj))
(set!
(-> obj plat-mask)
(the-as uint (get-matching-actor-type-mask (-> obj link) square-platform))
)
(go square-platform-master-idle)
(none)
)
@@ -0,0 +1,640 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type sunkenfisha
(deftype sunkenfisha (process-drawable)
((path-u float :offset-assert 176)
(path-speed float :offset-assert 180)
(path-speed-seek-speed float :offset-assert 184)
(targ-path-speed float :offset-assert 188)
(path-normal-speed-lo float :offset-assert 192)
(path-normal-speed-hi float :offset-assert 196)
(path-dir float :offset-assert 200)
(change-path-dir-time uint64 :offset-assert 208)
(local-path-offset vector :inline :offset-assert 224)
(targ-local-path-offset vector :inline :offset-assert 240)
(local-path-offset-dir vector :inline :offset-assert 256)
(max-local-path-offset vector :inline :offset-assert 272)
(facing-rot vector :inline :offset-assert 288)
(path-trans-offset vector :inline :offset-assert 304)
)
:heap-base #xd0
:method-count-assert 28
:size-assert #x140
:flag-assert #x1c00d00140
(:methods
(TODO-RENAME-20 (_type_) float 20)
(TODO-RENAME-orbit?-21 (_type_ vector float vector) vector 21)
(dummy-22 (_type_) none 22)
(TODO-RENAME-23 (_type_) quaternion 23)
(TODO-RENAME-24 (_type_) vector 24)
(dummy-25 (_type_) none 25)
(TODO-RENAME-26 (_type_) float 26)
(TODO-RENAME-27 (_type_) float 27)
)
)
;; definition for method 3 of type sunkenfisha
(defmethod inspect sunkenfisha ((obj sunkenfisha))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tpath-u: ~f~%" (-> obj path-u))
(format #t "~T~Tpath-speed: ~f~%" (-> obj path-speed))
(format #t "~T~Tpath-speed-seek-speed: ~f~%" (-> obj path-speed-seek-speed))
(format #t "~T~Ttarg-path-speed: ~f~%" (-> obj targ-path-speed))
(format #t "~T~Tpath-normal-speed-lo: ~f~%" (-> obj path-normal-speed-lo))
(format #t "~T~Tpath-normal-speed-hi: ~f~%" (-> obj path-normal-speed-hi))
(format #t "~T~Tpath-dir: ~f~%" (-> obj path-dir))
(format #t "~T~Tchange-path-dir-time: ~D~%" (-> obj change-path-dir-time))
(format
#t
"~T~Tlocal-path-offset: #<vector @ #x~X>~%"
(-> obj local-path-offset)
)
(format
#t
"~T~Ttarg-local-path-offset: #<vector @ #x~X>~%"
(-> obj targ-local-path-offset)
)
(format
#t
"~T~Tlocal-path-offset-dir: #<vector @ #x~X>~%"
(-> obj local-path-offset-dir)
)
(format
#t
"~T~Tmax-local-path-offset: #<vector @ #x~X>~%"
(-> obj max-local-path-offset)
)
(format #t "~T~Tfacing-rot: #<vector @ #x~X>~%" (-> obj facing-rot))
(format
#t
"~T~Tpath-trans-offset: #<vector @ #x~X>~%"
(-> obj path-trans-offset)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "sunkenfisha"
:bounds
(new 'static 'vector :y 6144.0 :w 10240.0)
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) -1)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *sunkenfisha-red-yellow-sg* v1-1)
)
;; failed to figure out what this is:
(let
((v1-2
(new 'static 'skeleton-group
:art-group-name "sunkenfisha"
:bounds
(new 'static 'vector :y 6144.0 :w 10240.0)
:version #x6
)
)
)
(set! (-> v1-2 jgeo) 2)
(set! (-> v1-2 janim) -1)
(set! (-> v1-2 mgeo 0) (the-as uint 3))
(set! (-> v1-2 lod-dist 0) 4095996000.0)
(set! *sunkenfisha-yellow-blue-sg* v1-2)
)
;; failed to figure out what this is:
(let
((v1-3
(new 'static 'skeleton-group
:art-group-name "sunkenfisha"
:bounds
(new 'static 'vector :y 6144.0 :w 10240.0)
:version #x6
)
)
)
(set! (-> v1-3 jgeo) 4)
(set! (-> v1-3 janim) -1)
(set! (-> v1-3 mgeo 0) (the-as uint 5))
(set! (-> v1-3 lod-dist 0) 4095996000.0)
(set! *sunkenfisha-yellow-eye-sg* v1-3)
)
;; definition for method 22 of type sunkenfisha
;; INFO: Return type mismatch int vs none.
(defmethod dummy-22 sunkenfisha ((obj sunkenfisha))
0
(none)
)
;; definition for method 21 of type sunkenfisha
(defmethod
TODO-RENAME-orbit?-21
sunkenfisha
((obj sunkenfisha) (arg0 vector) (arg1 float) (arg2 vector))
(eval-path-curve! (-> obj path) arg0 arg1 'interp)
(vector+! arg0 arg0 (-> obj path-trans-offset))
(let ((s2-0 (new 'stack-no-clear 'vector)))
(TODO-RENAME-14 (-> obj path) s2-0 arg1)
(let ((f0-2 (atan (-> s2-0 x) (-> s2-0 z)))
(s4-1 (new 'stack-no-clear 'vector))
)
(vector-rotate-around-y! s4-1 arg2 f0-2)
(vector+! arg0 arg0 s4-1)
)
)
)
;; definition for method 24 of type sunkenfisha
(defmethod TODO-RENAME-24 sunkenfisha ((obj sunkenfisha))
(let ((s4-0 (new 'stack-no-clear 'vector))
(s3-0 (new 'stack-no-clear 'matrix))
(gp-0 (new 'stack-no-clear 'vector))
)
(vector-! s4-0 (-> obj targ-local-path-offset) (-> obj local-path-offset))
(when (>= (* 4096.0 (-> *display* seconds-per-frame)) (vector-length s4-0))
(until (< (* 16384.0 (-> *display* seconds-per-frame)) (vector-length s4-0))
(set!
(-> obj targ-local-path-offset x)
(rand-vu-float-range
(- (-> obj max-local-path-offset x))
(-> obj max-local-path-offset x)
)
)
(set!
(-> obj targ-local-path-offset y)
(rand-vu-float-range
(- (-> obj max-local-path-offset y))
(-> obj max-local-path-offset y)
)
)
(vector-! s4-0 (-> obj targ-local-path-offset) (-> obj local-path-offset))
)
)
(vector-normalize! s4-0 1.0)
(matrix-from-two-vectors-max-angle-partial!
s3-0
(-> obj local-path-offset-dir)
s4-0
(* 16384.0 (-> *display* seconds-per-frame))
0.1
)
(vector-matrix*!
(-> obj local-path-offset-dir)
(-> obj local-path-offset-dir)
s3-0
)
(vector-normalize! (-> obj local-path-offset-dir) 1.0)
(vector-float*!
gp-0
(-> obj local-path-offset-dir)
(* 4096.0 (-> *display* seconds-per-frame))
)
(vector+! (-> obj local-path-offset) (-> obj local-path-offset) gp-0)
)
)
;; definition for method 25 of type sunkenfisha
;; INFO: Return type mismatch float vs none.
(defmethod dummy-25 sunkenfisha ((obj sunkenfisha))
(let* ((f0-0 (-> obj path-speed))
(f1-1
(seek
f0-0
(-> obj targ-path-speed)
(* (-> obj path-speed-seek-speed) (-> *display* seconds-per-frame))
)
)
)
(set! (-> obj path-speed) f1-1)
(let
((f30-0
(+
(-> obj path-u)
(* (-> obj path-dir) f1-1 (-> *display* seconds-per-frame))
)
)
)
(cond
((< f30-0 0.0)
(set! f30-0 (- f30-0))
(TODO-RENAME-20 obj)
)
((< 1.0 f30-0)
(+! f30-0 (* 2.0 (- 1.0 f30-0)))
(TODO-RENAME-20 obj)
)
)
(set! (-> obj path-u) f30-0)
)
)
(none)
)
;; definition for method 23 of type sunkenfisha
(defmethod TODO-RENAME-23 sunkenfisha ((obj sunkenfisha))
(let ((s5-0 (new 'stack-no-clear 'vector)))
(set-vector!
s5-0
(- (vector-x-angle (-> obj root transv)))
(vector-y-angle (-> obj root transv))
0.0
1.0
)
(set!
(-> obj facing-rot x)
(deg-seek-smooth
(-> obj facing-rot x)
(-> s5-0 x)
(* 16384.0 (-> *display* seconds-per-frame))
0.1
)
)
(set!
(-> obj facing-rot y)
(deg-seek-smooth
(-> obj facing-rot y)
(-> s5-0 y)
(* 32768.0 (-> *display* seconds-per-frame))
0.1
)
)
)
(quaternion-zxy! (-> obj root quat) (-> obj facing-rot))
)
;; definition for method 20 of type sunkenfisha
(defmethod TODO-RENAME-20 sunkenfisha ((obj sunkenfisha))
(set! (-> obj path-dir) (- (-> obj path-dir)))
(set! (-> obj path-speed) 0.0)
(set!
(-> obj targ-path-speed)
(rand-vu-float-range
(-> obj path-normal-speed-lo)
(-> obj path-normal-speed-hi)
)
)
(set!
(-> obj change-path-dir-time)
(the-as
uint
(+ (-> *display* base-frame-counter) (rand-vu-int-range 1500 5400))
)
)
(set!
(-> obj targ-local-path-offset y)
(* 0.5 (+ (-> obj targ-local-path-offset y) (-> obj local-path-offset y)))
)
(let* ((f0-8 (-> obj local-path-offset x))
(f1-3 (- (-> obj targ-local-path-offset x) f0-8))
)
(when (< (fabs f1-3) 12288.0)
(cond
((>= f1-3 0.0)
(let ((f0-10 (fmin (+ 12288.0 f0-8) (-> obj max-local-path-offset x))))
(set! (-> obj targ-local-path-offset x) f0-10)
f0-10
)
)
(else
(let
((f0-12 (fmax (+ -12288.0 f0-8) (- (-> obj max-local-path-offset x)))))
(set! (-> obj targ-local-path-offset x) f0-12)
f0-12
)
)
)
)
)
)
;; failed to figure out what this is:
(defstate sunkenfisha-idle (sunkenfisha)
:trans
(behavior ()
(local-vars (at-0 int))
(rlet ((vf0 :class vf)
(vf1 :class vf)
(vf2 :class vf)
)
(init-vf0-vector)
(if
(>=
(-> *display* base-frame-counter)
(the-as int (-> self change-path-dir-time))
)
(TODO-RENAME-20 self)
)
(TODO-RENAME-24 self)
(dummy-25 self)
(let ((gp-0 (new 'stack-no-clear 'vector)))
(TODO-RENAME-orbit?-21
self
gp-0
(-> self path-u)
(-> self local-path-offset)
)
(vector-! (-> self root transv) gp-0 (-> self root trans))
(set! (-> self root trans quad) (-> gp-0 quad))
)
(let ((v1-16 (-> self root transv)))
(.lvf vf1 (&-> (-> self root transv) quad))
(let ((f0-1 (-> *display* frames-per-second)))
(.mov at-0 f0-1)
)
(.mov vf2 at-0)
(.mov.vf vf1 vf0 :mask #b1000)
(.mul.x.vf vf1 vf1 vf2 :mask #b111)
(.svf (&-> v1-16 quad) vf1)
)
(TODO-RENAME-23 self)
(none)
)
)
:code
(behavior ()
(while #t
(let ((a0-0 (-> self skel root-channel 0)))
(set!
(-> a0-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 6))
)
(set!
(-> a0-0 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 6))
data
0
length
)
-1
)
)
)
(set! (-> a0-0 param 1) 1.0)
(set! (-> a0-0 frame-num) 0.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim (-> self draw art-group data 6))
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 param 0)
(the float (+ (-> a0-1 frame-group data 0 length) -1))
)
(set! (-> a0-1 param 1) 1.0)
(joint-control-channel-group-eval!
a0-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
(none)
)
:post
(the-as (function none :behavior sunkenfisha) ja-post)
)
;; definition for method 26 of type sunkenfisha
(defmethod TODO-RENAME-26 sunkenfisha ((obj sunkenfisha))
(set! (-> obj root) (new 'process 'trsqv))
(process-drawable-from-entity! obj (-> obj entity))
(set-vector! (-> obj root scale) 6.0 6.0 6.0 1.0)
(let ((v1-3 (rand-vu-int-count 3)))
(cond
((zero? v1-3)
(dummy-14 obj *sunkenfisha-red-yellow-sg* '())
)
((= v1-3 1)
(dummy-14 obj *sunkenfisha-yellow-blue-sg* '())
)
((= v1-3 2)
(dummy-14 obj *sunkenfisha-yellow-eye-sg* '())
)
)
)
(ja-channel-set! 1)
(let ((s5-0 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-0
(the-as art-joint-anim (-> obj draw art-group data 6))
num-func-identity
)
(let ((f0-4 0.0))
(set! (-> s5-0 frame-num) f0-4)
f0-4
)
)
)
;; definition for method 27 of type sunkenfisha
;; Used lq/sq
(defmethod TODO-RENAME-27 sunkenfisha ((obj sunkenfisha))
(local-vars (sv-16 res-tag) (sv-32 res-tag) (sv-48 res-tag))
(vector-reset! (-> obj path-trans-offset))
(set! (-> obj path-u) (rand-vu-float-range 0.0 1.0))
(if (zero? (rand-vu-int-count 2))
(set! (-> obj path-dir) 1.0)
(set! (-> obj path-dir) -1.0)
)
(set-vector! (-> obj max-local-path-offset) 16384.0 28672.0 0.0 1.0)
(set! sv-16 (new 'static 'res-tag))
(let
((v1-5
(res-lump-data
(-> obj entity)
'path-max-offset
(pointer float)
:tag-ptr
(& sv-16)
)
)
)
(when v1-5
(set! (-> obj max-local-path-offset x) (-> v1-5 0))
(set! (-> obj max-local-path-offset y) (-> v1-5 1))
)
)
(set-vector! (-> obj local-path-offset) 0.0 0.0 0.0 1.0)
(set!
(-> obj local-path-offset x)
(rand-vu-float-range
(- (-> obj max-local-path-offset x))
(-> obj max-local-path-offset x)
)
)
(set!
(-> obj local-path-offset y)
(rand-vu-float-range
(- (-> obj max-local-path-offset y))
(-> obj max-local-path-offset y)
)
)
(set! (-> obj targ-local-path-offset quad) (-> obj local-path-offset quad))
(set!
(-> obj targ-local-path-offset x)
(rand-vu-float-range
(- (-> obj max-local-path-offset x))
(-> obj max-local-path-offset x)
)
)
(set!
(-> obj targ-local-path-offset y)
(rand-vu-float-range
(- (-> obj max-local-path-offset y))
(-> obj max-local-path-offset y)
)
)
(vector-!
(-> obj local-path-offset-dir)
(-> obj targ-local-path-offset)
(-> obj local-path-offset)
)
(vector-normalize! (-> obj local-path-offset-dir) 1.0)
(set!
(-> obj change-path-dir-time)
(the-as
uint
(+ (-> *display* base-frame-counter) (rand-vu-int-range 1500 5400))
)
)
(set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0))
(logior!
(-> obj path flags)
(path-control-flag display draw-line draw-point draw-text)
)
(set! sv-32 (new 'static 'res-tag))
(let
((v1-16
(res-lump-data
(-> obj entity)
'path-trans-offset
(pointer float)
:tag-ptr
(& sv-32)
)
)
)
(when v1-16
(+! (-> obj path-trans-offset x) (-> v1-16 0))
(+! (-> obj path-trans-offset y) (-> v1-16 1))
(+! (-> obj path-trans-offset z) (-> v1-16 2))
)
)
(if (< (-> obj path curve num-cverts) 2)
(go process-drawable-art-error "bad path")
)
(let ((f28-0 8192.0)
(f30-0 26624.0)
)
(set! sv-48 (new 'static 'res-tag))
(let
((v1-23
(res-lump-data (-> obj entity) 'speed (pointer float) :tag-ptr (& sv-48))
)
)
(when v1-23
(set! f28-0 (-> v1-23 0))
(set! f30-0 (-> v1-23 1))
)
)
(let ((f0-35 (path-distance (-> obj path))))
(set! (-> obj path-normal-speed-lo) (/ f28-0 f0-35))
(set! (-> obj path-normal-speed-hi) (/ f30-0 f0-35))
)
)
(set!
(-> obj path-speed-seek-speed)
(* 2.0 (- (-> obj path-normal-speed-hi) (-> obj path-normal-speed-lo)))
)
(set!
(-> obj path-speed)
(rand-vu-float-range
(-> obj path-normal-speed-lo)
(-> obj path-normal-speed-hi)
)
)
(set! (-> obj targ-path-speed) (-> obj path-speed))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(TODO-RENAME-14 (-> obj path) s4-0 (-> obj path-u))
(set-vector! (-> obj facing-rot) 0.0 (atan (-> s4-0 x) (-> s4-0 z)) 0.0 1.0)
)
(when (< (-> obj path-dir) 0.0)
(let ((f0-52 (- (-> obj facing-rot y))))
(set! (-> obj facing-rot y) f0-52)
f0-52
)
)
)
;; definition for function sunkenfisha-init-by-other
(defbehavior sunkenfisha-init-by-other sunkenfisha ((arg0 entity))
(set! (-> self entity) arg0)
(TODO-RENAME-26 self)
(TODO-RENAME-27 self)
(go sunkenfisha-idle)
(none)
)
;; definition for method 11 of type sunkenfisha
(defmethod copy-defaults! sunkenfisha ((obj sunkenfisha) (arg0 res-lump))
(TODO-RENAME-26 obj)
(TODO-RENAME-27 obj)
(let
((s5-0
(+
(res-lump-value
(-> obj entity)
'count
uint128
:default
(the-as uint128 1)
)
-1
)
)
)
(while (> (the-as int s5-0) 0)
(let ((s4-0 (get-process *default-dead-pool* sunkenfisha #x4000)))
(when s4-0
(let ((t9-4 (method-of-type sunkenfisha activate)))
(t9-4
(the-as sunkenfisha s4-0)
obj
'sunkenfisha
(the-as pointer #x70004000)
)
)
(run-now-in-process s4-0 sunkenfisha-init-by-other (-> obj entity))
(-> s4-0 ppointer)
)
)
(+! s5-0 -1)
)
)
(go sunkenfisha-idle)
(none)
)
@@ -0,0 +1,384 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type sunken-water
(deftype sunken-water (water-anim)
((use-sync? symbol :offset-assert 220)
(playing-deadly-sound? symbol :offset-assert 224)
(deadly-time float :offset-assert 228)
(deadly-fade float :offset-assert 232)
(sync sync-info :inline :offset-assert 236)
(safe-color-mult vector :inline :offset-assert 256)
(safe-color-emissive vector :inline :offset-assert 272)
(deadly-color-mult vector :inline :offset-assert 288)
(deadly-color-emissive vector :inline :offset-assert 304)
)
:heap-base #xd0
:method-count-assert 31
:size-assert #x140
:flag-assert #x1f00d00140
(:methods
(draw-ripple (_type_) symbol 30)
)
)
;; definition for method 3 of type sunken-water
(defmethod inspect sunken-water ((obj sunken-water))
(let ((t9-0 (method-of-type water-anim inspect)))
(t9-0 obj)
)
(format #t "~T~Tuse-sync?: ~A~%" (-> obj use-sync?))
(format #t "~T~Tplaying-deadly-sound?: ~A~%" (-> obj playing-deadly-sound?))
(format #t "~T~Tdeadly-time: ~f~%" (-> obj deadly-time))
(format #t "~T~Tdeadly-fade: ~f~%" (-> obj deadly-fade))
(format #t "~T~Tsync: #<sync-info @ #x~X>~%" (-> obj sync))
(format #t "~T~Tsafe-color-mult: #<vector @ #x~X>~%" (-> obj safe-color-mult))
(format
#t
"~T~Tsafe-color-emissive: #<vector @ #x~X>~%"
(-> obj safe-color-emissive)
)
(format
#t
"~T~Tdeadly-color-mult: #<vector @ #x~X>~%"
(-> obj deadly-color-mult)
)
(format
#t
"~T~Tdeadly-color-emissive: #<vector @ #x~X>~%"
(-> obj deadly-color-emissive)
)
obj
)
;; definition for symbol ripple-for-sunken-water, type ripple-wave-set
(define
ripple-for-sunken-water
(new 'static 'ripple-wave-set
:count 3
:converted #f
:normal-scale 1.0
:wave
(new 'static 'inline-array ripple-wave 4
(new 'static 'ripple-wave :scale 40.0 :xdiv 1 :speed 1.5)
(new 'static 'ripple-wave :scale 40.0 :xdiv -1 :zdiv 1 :speed 1.5)
(new 'static 'ripple-wave :scale 20.0 :xdiv 5 :zdiv 3 :speed 0.75)
(new 'static 'ripple-wave)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 446)
(new 'static 'sparticle-launch-group
:length 1
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-sunken-water-deadly-water"
:launcher
(new 'static 'inline-array sparticle-group-item 1
(sp-item 1736 :fade-after (meters 50.0))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1736)
(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 1.0)
(sp-flt spt-y (meters 0.0))
(sp-rnd-flt spt-scale-x (meters 1.0) (meters 4.0) 1.0)
(sp-flt spt-scale-y (meters 0.25))
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-rnd-flt spt-a 96.0 32.0 1.0)
(sp-flt spt-scalevel-x (meters 0.1875))
(sp-flt spt-scalevel-y (meters -0.001875))
(sp-flt spt-fade-a -3.2)
(sp-int spt-timer 81)
(sp-cpuinfo-flags bit2 bit3 bit14)
(sp-int spt-next-time 15)
(sp-launcher-by-id spt-next-launcher 2022)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 2022)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 5
(sp-flt spt-r 255.0)
(sp-rnd-flt spt-g 128.0 128.0 1.0)
(sp-flt spt-b 0.0)
(sp-flt spt-fade-a -1.28)
(sp-end)
)
)
)
;; definition for method 30 of type sunken-water
(defmethod draw-ripple sunken-water ((obj sunken-water))
(set! (-> obj draw ripple send-query) #t)
(let ((gp-0 (-> obj draw ripple query)))
(let ((a0-1 (-> *display* base-frame-counter)))
(set! (-> gp-0 start-vertex) (logand (* 13 (logand a0-1 127)) 127))
)
(set! (-> gp-0 vertex-skip) 128)
(dotimes (s5-0 (-> gp-0 vertex-count))
(sp-launch-particles-var
*sp-particle-system-2d*
(-> *part-id-table* 1736)
(-> gp-0 data s5-0)
(the-as sparticle-launch-state #f)
(the-as sparticle-launch-control #f)
1.0
)
)
)
#f
)
;; failed to figure out what this is:
(defstate water-vol-idle (sunken-water)
:virtual #t
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('notify)
(if (= (-> arg3 param 0) 'attack)
(sound-play-by-name
(static-sound-name "get-shocked")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
)
)
(else
((-> (method-of-type water-anim water-vol-idle) event) arg0 arg1 arg2 arg3)
)
)
)
:trans
(behavior ()
(let ((t9-0 (-> (method-of-type water-anim water-vol-idle) trans)))
(if t9-0
(t9-0)
)
)
(cond
((-> self use-sync?)
(cond
((< (get-current-phase (-> self sync)) (-> self deadly-time))
(when (!= (-> self deadly-fade) 1.0)
(set!
(-> self deadly-fade)
(seek
(-> self deadly-fade)
1.0
(* 8.0 (-> *display* seconds-per-frame))
)
)
(let ((f30-0 (-> self deadly-fade)))
(vector-lerp!
(-> self draw color-mult)
(-> self safe-color-mult)
(-> self deadly-color-mult)
f30-0
)
(vector-lerp!
(-> self draw color-emissive)
(-> self safe-color-emissive)
(-> self deadly-color-emissive)
f30-0
)
(set! (-> self draw color-mult w) 0.5)
(if (= f30-0 1.0)
(set! (-> self flags) (logior #x80000 (-> self flags)))
)
)
)
(draw-ripple self)
(when (not (-> self playing-deadly-sound?))
(set! (-> self playing-deadly-sound?) #t)
(sound-play-by-name
(static-sound-name "water-on")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
)
(update! (-> self sound))
)
(else
(set! (-> self flags) (logand -524289 (-> self flags)))
(when (!= (-> self deadly-fade) 0.0)
(set!
(-> self deadly-fade)
(seek
(-> self deadly-fade)
0.0
(* 8.0 (-> *display* seconds-per-frame))
)
)
(let ((f30-1 (-> self deadly-fade)))
(vector-lerp!
(-> self draw color-mult)
(-> self safe-color-mult)
(-> self deadly-color-mult)
f30-1
)
(vector-lerp!
(-> self draw color-emissive)
(-> self safe-color-emissive)
(-> self deadly-color-emissive)
f30-1
)
(set! (-> self draw color-mult w) 0.5)
(if (= f30-1 0.0)
(set! (-> self flags) (logand -524289 (-> self flags)))
)
)
)
(when (-> self playing-deadly-sound?)
(set! (-> self playing-deadly-sound?) #f)
(stop! (-> self sound))
(sound-play-by-name
(static-sound-name "water-off")
(new-sound-id)
1024
0
0
(the-as uint 1)
(the-as vector #t)
)
)
)
)
(TODO-RENAME-10
*palette-fade-controls*
3
(-> self deadly-fade)
(vector-vector-distance (-> self root trans) (camera-pos))
(the-as vector #f)
)
)
(else
(when (logtest? #x80000 (-> self flags))
(draw-ripple self)
(update! (-> self sound))
(set! (-> self playing-deadly-sound?) #t)
)
)
)
(none)
)
:post
(the-as (function none :behavior sunken-water) ja-post)
)
;; definition for method 25 of type sunken-water
;; INFO: Return type mismatch uint vs object.
(defmethod TODO-RENAME-25 sunken-water ((obj sunken-water))
(local-vars (v0-3 uint))
(let ((t9-0 (method-of-type water-anim TODO-RENAME-25)))
(t9-0 obj)
)
(set! (-> obj playing-deadly-sound?) #f)
(set-vector! (-> obj safe-color-mult) 0.125 0.225 0.22 0.5)
(set-vector! (-> obj safe-color-emissive) 0.0 0.0 0.0 1.0)
(set-vector! (-> obj deadly-color-mult) 0.125 0.225 0.22 0.5)
(set-vector! (-> obj deadly-color-emissive) 0.33 0.6 0.0 1.0)
(let
((s5-0 (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15)))
(let ((f0-16 (res-lump-float (-> obj entity) 'percent :default -1.0)))
(if (or (< f0-16 0.0) (< 1.0 f0-16))
(set! f0-16 (cond
(s5-0
0.5
)
((logtest? #x80000 (-> obj flags))
1.0
)
(else
0.0
)
)
)
)
(when (and s5-0 (or (= f0-16 0.0) (= f0-16 1.0)))
(set! s5-0 #f)
(if (= f0-16 0.0)
(set! (-> obj flags) (logior #x80000 (-> obj flags)))
(set! (-> obj flags) (logand -524289 (-> obj flags)))
)
)
(set! (-> obj use-sync?) s5-0)
(set! (-> obj deadly-time) f0-16)
)
(the-as object (when s5-0
(cond
((< (get-current-phase (-> obj sync)) (-> obj deadly-time))
(set! v0-3 (logior (the-as uint #x80000) (-> obj flags)))
(set! (-> obj flags) v0-3)
)
(else
(set! v0-3 (logand (the-as uint -524289) (-> obj flags)))
(set! (-> obj flags) v0-3)
)
)
v0-3
)
)
)
)
;; definition for method 22 of type sunken-water
;; INFO: Return type mismatch ripple-merc-query vs ripple-wave-set.
;; Used lq/sq
(defmethod TODO-RENAME-22 sunken-water ((obj sunken-water))
(let ((t9-0 (method-of-type water-anim TODO-RENAME-22)))
(t9-0 obj)
)
(set! (-> obj play-ambient-sound?) #f)
(cond
((logtest? #x80000 (-> obj flags))
(set! (-> obj draw color-mult quad) (-> obj deadly-color-mult quad))
(set! (-> obj draw color-emissive quad) (-> obj deadly-color-emissive quad))
(set! (-> obj deadly-fade) 1.0)
)
(else
(set! (-> obj draw color-mult quad) (-> obj safe-color-mult quad))
(set! (-> obj draw color-emissive quad) (-> obj safe-color-emissive quad))
(set! (-> obj deadly-fade) 0.0)
)
)
(let ((s5-0 (new 'process 'ripple-control)))
(set! (-> obj draw ripple) s5-0)
(set! (-> s5-0 global-scale) 3072.0)
(set! (-> s5-0 close-fade-dist) 163840.0)
(set! (-> s5-0 far-fade-dist) 245760.0)
(set! (-> s5-0 waveform) ripple-for-sunken-water)
(let ((v0-2 (new 'process 'ripple-merc-query 100)))
(set! (-> s5-0 query) v0-2)
(the-as ripple-wave-set v0-2)
)
)
)
+3 -7
View File
@@ -107,7 +107,7 @@
(the-as (function none :behavior wall-plat) rider-trans)
:code
(behavior ()
((method-of-object (-> self root-override) dummy-49))
(dummy-49 (-> self root-override))
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
@@ -279,7 +279,7 @@
)
((= f30-0 1.0)
(set! gp-0 #f)
((method-of-object (-> self root-override) dummy-49))
(dummy-49 (-> self root-override))
)
(else
(when (not gp-0)
@@ -294,7 +294,7 @@
)
(set! gp-0 #t)
)
((method-of-object (-> self root-override) dummy-49))
(dummy-49 (-> self root-override))
)
)
)
@@ -382,7 +382,3 @@
)
(none)
)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+963
View File
@@ -0,0 +1,963 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type swamp-rat
(deftype swamp-rat (nav-enemy)
((up-vector vector :inline :offset-assert 400)
(state-float float :offset-assert 416)
(state-vector vector :inline :offset-assert 432)
(_hack uint64 :offset-assert 448)
(wiggle-time uint64 :offset-assert 456)
(wiggle-angle float :offset-assert 464)
(delta-wiggle-angle float :offset-assert 468)
(wiggle-factor float :offset-assert 472)
(min-height float :offset-assert 476)
(chase-rest-time uint64 :offset-assert 480)
(target-nav-time uint64 :offset-assert 488)
)
:heap-base #x180
:method-count-assert 76
:size-assert #x1f0
:flag-assert #x4c018001f0
)
;; definition for method 3 of type swamp-rat
(defmethod inspect swamp-rat ((obj swamp-rat))
(let ((t9-0 (method-of-type nav-enemy inspect)))
(t9-0 obj)
)
(format #t "~T~Tup-vector: #<vector @ #x~X>~%" (-> obj up-vector))
(format #t "~T~Tstate-float: ~f~%" (-> obj state-float))
(format #t "~T~Tstate-vector: ~`vector`P~%" (-> obj state-vector))
(format #t "~T~Tfree-time: ~D~%" (-> obj free-time))
(format #t "~T~Twiggle-time: ~D~%" (-> obj wiggle-time))
(format #t "~T~Twiggle-angle: ~f~%" (-> obj wiggle-angle))
(format #t "~T~Tdelta-wiggle-angle: ~f~%" (-> obj delta-wiggle-angle))
(format #t "~T~Twiggle-factor: ~f~%" (-> obj wiggle-factor))
(format #t "~T~Tmin-height: ~f~%" (-> obj min-height))
(format #t "~T~Tchase-rest-time: ~D~%" (-> obj chase-rest-time))
(format #t "~T~Ttarget-nav-time: ~D~%" (-> obj target-nav-time))
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "swamp-rat"
:bounds
(new 'static 'vector :y 4096.0 :w 16384.0)
:max-lod 2
:longest-edge (meters 1.0)
:version #x6
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 4)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 81920.0)
(set! (-> v1-1 mgeo 1) (the-as uint 2))
(set! (-> v1-1 lod-dist 1) 163840.0)
(set! (-> v1-1 mgeo 2) (the-as uint 3))
(set! (-> v1-1 lod-dist 2) 4095996000.0)
(set! *swamp-rat-sg* v1-1)
)
;; definition for method 44 of type swamp-rat
;; INFO: Return type mismatch none vs object.
;; WARN: rewrite_to_get_var got a none typed variable. Is there unreachable code?
(defmethod
dummy-44
swamp-rat
((obj swamp-rat) (arg0 process) (arg1 event-message-block))
(with-pp
(the-as
object
(when
((method-of-type touching-shapes-entry prims-touching?)
(the-as touching-shapes-entry (-> arg1 param 0))
(-> obj collide-info)
(the-as uint 1)
)
(when
(nav-enemy-send-attack
arg0
(the-as touching-shapes-entry (-> arg1 param 0))
'generic
)
(let* ((s5-1 (-> obj parent))
(a0-4
(if (and (nonzero? s5-1) (type-type? pointer process-drawable))
s5-1
)
)
)
(cond
(a0-4
(let ((a1-4 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-4 from) pp)
(set! (-> a1-4 num-params) 0)
(set! (-> a1-4 message) 'victory)
(send-event-function (the-as process a0-4) a1-4)
)
)
(else
(go (method-of-object obj nav-enemy-victory))
)
)
)
)
)
)
)
)
;; definition for function swamp-rat-default-event-handler
;; INFO: Return type mismatch none vs object.
(defbehavior
swamp-rat-default-event-handler swamp-rat
((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(let ((v1-0 arg2))
(the-as object (if (= v1-0 'victory)
(go-virtual nav-enemy-victory)
(nav-enemy-default-event-handler arg0 arg1 arg2 arg3)
)
)
)
)
;; failed to figure out what this is:
swamp-rat-default-event-handler
;; definition for method 39 of type swamp-rat
;; Used lq/sq
(defmethod common-post swamp-rat ((obj swamp-rat))
(when (logtest? (-> obj collide-info status) 1)
(vector-deg-seek
(-> obj up-vector)
(-> obj up-vector)
(-> obj collide-info surface-normal)
910.2222
)
(vector-normalize! (-> obj up-vector) 1.0)
)
(forward-up-nopitch->quaternion
(-> obj collide-info quat)
(vector-z-quaternion! (new-stack-vector0) (-> obj collide-info quat))
(-> obj up-vector)
)
((the-as (function nav-enemy none) (find-parent-method swamp-rat 39)) obj)
(none)
)
;; definition for method 38 of type swamp-rat
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defmethod TODO-RENAME-38 swamp-rat ((obj swamp-rat))
(dummy-59
(-> obj collide-info)
(-> obj collide-info transv)
(the-as uint 1)
8192.0
#t
#f
#f
)
(when (< (-> obj collide-info trans y) (-> obj min-height))
(let ((a1-1 (new 'stack-no-clear 'vector)))
(set! (-> a1-1 quad) (-> obj collide-info trans quad))
(set! (-> a1-1 y) (-> obj min-height))
(TODO-RENAME-61
(-> obj collide-info)
a1-1
(-> obj collide-info transv)
*y-vector*
)
)
)
0
(none)
)
;; failed to figure out what this is:
(defstate nav-enemy-idle (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:post
(behavior ()
(ja-post)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-patrol (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(behavior ()
(let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)))
(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 (-> self nav-info walk-anim))
)
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info walk-anim))
)
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) f30-0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as
art-joint-anim
(-> self draw art-group data (-> self nav-info walk-anim))
)
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) f30-0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-notice (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(behavior ()
(let ((a0-0 (-> self skel root-channel 0)))
(set! (-> a0-0 param 0) 1.0)
(joint-control-channel-group!
a0-0
(the-as art-joint-anim #f)
num-func-loop!
)
)
(ja-channel-push! 1 51)
(let ((gp-0 (-> self skel root-channel 0)))
(set!
(-> gp-0 frame-group)
(the-as art-joint-anim (-> self draw art-group data 8))
)
(set! (-> gp-0 param 0) (ja-aframe 30.0 0))
(set! (-> gp-0 param 1) 1.0)
(set! (-> gp-0 frame-num) 0.0)
(joint-control-channel-group!
gp-0
(the-as art-joint-anim (-> self draw art-group data 8))
num-func-seek!
)
)
(until (ja-done? 0)
(ja-blend-eval)
(suspend)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 param 0) (ja-aframe 30.0 0))
(set! (-> gp-1 param 1) 1.0)
(joint-control-channel-group-eval!
gp-1
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(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) 1.0)
(joint-control-channel-group!
a0-7
(the-as art-joint-anim #f)
num-func-seek!
)
)
(go-virtual nav-enemy-chase)
(none)
)
)
;; definition for function swamp-rat-update-wiggle-params
(defbehavior swamp-rat-update-wiggle-params swamp-rat ()
(let* ((f0-0 (rand-vu-float-range 0.0 1.0))
(f1-1 (+ 1.0 (* 2.0 f0-0)))
(f2-2 f1-1)
(f2-4 (/ 1.0 f2-2))
(f0-2 (+ 1.0 (* 0.2 f0-0)))
)
(set! (-> self delta-wiggle-angle) (* 910.2222 f1-1))
(set! (-> self wiggle-factor) (* 1.5 f2-4))
(let ((f0-3 (* 28672.0 f0-2)))
(set! (-> self target-speed) f0-3)
f0-3
)
)
)
;; definition for function swamp-rat-update-wiggle-target
;; Used lq/sq
(defbehavior swamp-rat-update-wiggle-target swamp-rat ((arg0 vector))
(+! (-> self wiggle-angle) (-> self delta-wiggle-angle))
(if (< 65536.0 (-> self wiggle-angle))
(set! (-> self wiggle-angle) (+ -65536.0 (-> self wiggle-angle)))
)
(let* ((v1-3 (-> self collide-info trans))
(a1-1 (vector-! (new 'stack-no-clear 'vector) v1-3 arg0))
(s3-0
(vector-rotate-around-y! (new 'stack-no-clear 'vector) a1-1 16384.0)
)
(v1-4
(vector+*!
(new 'stack-no-clear 'vector)
arg0
s3-0
(* (-> self wiggle-factor) (sin (-> self wiggle-angle)))
)
)
(v0-3 (-> self nav target-pos))
)
(set! (-> v0-3 quad) (-> v1-4 quad))
v0-3
)
)
;; failed to figure out what this is:
(defstate nav-enemy-chase (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:trans
(behavior ()
(if
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self state-time)))
(the-as int (-> self chase-rest-time))
)
(go-virtual nav-enemy-victory)
)
((-> (method-of-type nav-enemy nav-enemy-chase) trans))
(none)
)
:code
(behavior ()
(set!
(-> self target-nav-time)
(the-as uint (-> *display* base-frame-counter))
)
(set!
(-> self wiggle-time)
(the-as uint (+ (-> *display* base-frame-counter) -3000))
)
(set! (-> self wiggle-angle) 0.0)
(set! (-> self chase-rest-time) (the-as uint (rand-vu-int-range 300 1200)))
(ja-channel-push! 1 51)
(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 9))
num-func-identity
)
(set! (-> gp-0 frame-num) 0.0)
)
(while #t
(when
(>=
(- (-> *display* base-frame-counter) (the-as int (-> self wiggle-time)))
300
)
(set!
(-> self wiggle-time)
(the-as uint (-> *display* base-frame-counter))
)
(swamp-rat-update-wiggle-params)
)
(suspend)
(let ((a0-4 (-> self skel root-channel 0)))
(set! (-> a0-4 param 0) 1.0)
(joint-control-channel-group-eval!
a0-4
(the-as art-joint-anim #f)
num-func-loop!
)
)
)
(none)
)
:post
(behavior ()
(swamp-rat-update-wiggle-target (target-pos 0))
(nav-enemy-travel-post)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-stop-chase (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(-> (method-of-type nav-enemy nav-enemy-stop-chase) code)
)
;; failed to figure out what this is:
(defstate nav-enemy-stare (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(behavior ()
(set! (-> self rotate-speed) 1456355.5)
(set! (-> self turn-time) 22)
(let ((f30-0 (rand-vu-float-range 0.8 1.2)))
(while #t
(logior! (-> self nav-enemy-flags) 16)
(ja-channel-push! 1 30)
(let ((a0-2 (-> self skel root-channel 0)))
(set!
(-> a0-2 frame-group)
(the-as art-joint-anim (-> self draw art-group data 10))
)
(set!
(-> a0-2 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 10))
data
0
length
)
-1
)
)
)
(set! (-> a0-2 param 1) f30-0)
(set! (-> a0-2 frame-num) 0.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim (-> self draw art-group data 10))
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) f30-0)
(joint-control-channel-group-eval!
a0-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(let ((a0-5 (-> self skel root-channel 0)))
(set! (-> a0-5 param 0) 1.0)
(joint-control-channel-group!
a0-5
(the-as art-joint-anim #f)
num-func-loop!
)
)
(set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags)))
(let ((gp-0 (rand-vu-int-range 300 600))
(s5-0 (-> *display* base-frame-counter))
)
(until (>= (- (-> *display* base-frame-counter) s5-0) gp-0)
(let ((v1-33 (-> self skel root-channel 0)))
(set! (-> v1-33 num-func) num-func-identity)
(set! (-> v1-33 frame-num) 0.0)
)
(ja-blend-eval)
(suspend)
(suspend)
)
)
)
)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-give-up (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(behavior ()
(ja-channel-push! 1 22)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) 1.0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as art-joint-anim (-> self draw art-group data 4))
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) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(logclear! (-> self nav flags) (nav-control-flags bit17 bit19))
(nav-enemy-get-new-patrol-point)
(let ((a0-7 (-> self skel root-channel 0)))
(set!
(-> a0-7 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-7 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
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 4))
num-func-seek!
)
)
(until (ja-done? 0)
(seek-to-point-toward-point!
(-> self collide-info)
(-> self nav destination-pos)
(-> self rotate-speed)
(-> self turn-time)
)
(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!
)
)
)
(go-virtual nav-enemy-patrol)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-attack (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(behavior ()
(ja-channel-push! 1 22)
(let ((a0-1 (-> self skel root-channel 0)))
(set!
(-> a0-1 frame-group)
(the-as art-joint-anim (-> self draw art-group data 4))
)
(set!
(-> a0-1 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 4))
data
0
length
)
-1
)
)
)
(set! (-> a0-1 param 1) 1.0)
(set! (-> a0-1 frame-num) 0.0)
(joint-control-channel-group!
a0-1
(the-as art-joint-anim (-> self draw art-group data 4))
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) 1.0)
(joint-control-channel-group-eval!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(go-virtual nav-enemy-victory)
(none)
)
)
;; failed to figure out what this is:
(defstate nav-enemy-victory (swamp-rat)
:virtual #t
:event
swamp-rat-default-event-handler
:code
(-> (method-of-type nav-enemy nav-enemy-victory) code)
)
;; failed to figure out what this is:
(defstate swamp-rat-spawn (swamp-rat)
:event
swamp-rat-default-event-handler
:code
(behavior ()
(let ((gp-0 (new-stack-vector0)))
(set! (-> gp-0 x) 0.0)
(set! (-> gp-0 y) (- (-> *standard-dynamics* gravity-length)))
(set! (-> gp-0 z) 0.0)
(set! (-> gp-0 w) 1.0)
(let ((f30-0 0.125))
(set!
(-> self state-time)
(the-as seconds (-> *display* base-frame-counter))
)
(let ((s5-0 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-0
(the-as art-joint-anim (-> self draw art-group data 5))
num-func-identity
)
(set! (-> s5-0 frame-num) 0.0)
)
(while #t
(set! f30-0 (seek f30-0 1.5 0.1))
(vector-v++! (-> self collide-info transv) gp-0)
(dummy-59
(-> self collide-info)
(-> self collide-info transv)
(the-as uint 1)
8192.0
#t
#f
#f
)
(when
(or
(logtest? (-> self collide-info status) 4)
(or
(< (-> self collide-info trans y) (-> self min-height))
(>=
(-
(-> *display* base-frame-counter)
(the-as int (-> self state-time))
)
300
)
)
)
0
(goto cfg-13)
)
(vector-float*! (-> self collide-info scale) *identity-vector* f30-0)
(let ((a0-6 (-> self skel root-channel 0)))
(set! (-> a0-6 param 0) 1.0)
(joint-control-channel-group-eval!
a0-6
(the-as art-joint-anim #f)
num-func-loop!
)
)
(suspend)
)
)
)
(label cfg-13)
(if (< (-> self collide-info trans y) (-> self min-height))
(set! (-> self collide-info trans y) (-> self min-height))
)
(set! (-> self collide-info transv quad) (-> *null-vector* quad))
(vector-float*! (-> self collide-info scale) *identity-vector* 1.5)
(let ((a0-10 (-> self skel root-channel 0)))
(set!
(-> a0-10 frame-group)
(the-as art-joint-anim (-> self draw art-group data 6))
)
(set!
(-> a0-10 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 6))
data
0
length
)
-1
)
)
)
(set! (-> a0-10 param 1) 1.0)
(set! (-> a0-10 frame-num) 0.0)
(joint-control-channel-group!
a0-10
(the-as art-joint-anim (-> self draw art-group data 6))
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) 1.0)
(joint-control-channel-group-eval!
a0-11
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(if (TODO-RENAME-46 self (-> self nav-info stop-chase-distance))
(go-virtual nav-enemy-chase)
(go-virtual nav-enemy-idle)
)
(none)
)
:post
(the-as (function none :behavior swamp-rat) nav-enemy-simple-post)
)
;; definition for symbol *swamp-rat-nav-enemy-info*, type nav-enemy-info
(define
*swamp-rat-nav-enemy-info*
(new 'static 'nav-enemy-info
:idle-anim 4
:walk-anim 7
:turn-anim 7
:notice-anim 8
:run-anim 9
:jump-anim 9
:jump-land-anim 6
:victory-anim 10
:taunt-anim 10
:die-anim 11
:neck-joint 7
:run-travel-speed (meters 7.0)
:run-rotate-speed (degrees 7999.9995)
:run-acceleration (meters 1.0)
:run-turn-time #x16
:walk-travel-speed (meters 2.0)
:walk-rotate-speed (degrees 7999.9995)
:walk-acceleration (meters 1.0)
:walk-turn-time #x16
:attack-shove-back (meters 3.0)
:attack-shove-up (meters 2.0)
:shadow-size (meters 1.0)
:notice-nav-radius (meters 1.0)
:nav-nearest-y-threshold (meters 10.0)
:notice-distance (meters 30.0)
:stop-chase-distance (meters 40.0)
:frustration-distance (meters 3.0)
:frustration-time #x1c2
:die-anim-hold-frame 20.0
:jump-anim-start-frame 19.0
:jump-land-anim-end-frame 10000000000.0
:jump-height-min (meters 1.0)
:jump-height-factor 0.5
:jump-start-anim-speed 1.0
:shadow-max-y (meters 1.0)
:shadow-min-y (meters -1.0)
:shadow-locus-dist (meters 150.0)
:use-align #f
:draw-shadow #f
:move-to-ground #t
:hover-if-no-ground #f
:use-momentum #f
:use-flee #f
:use-proximity-notice #f
:use-jump-blocked #f
:use-jump-patrol #f
:gnd-collide-with #x1
:debug-draw-neck #f
:debug-draw-jump #f
)
)
;; definition for method 47 of type swamp-rat
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision swamp-rat ((obj swamp-rat))
(let
((s5-0
(new
'process
'collide-shape-moving
obj
(collide-list-enum usually-hit-by-player)
)
)
)
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
(set! (-> s5-0 reaction) default-collision-reaction)
(set! (-> s5-0 no-reaction) nothing)
(let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3))))
(set! (-> s4-0 prim-core collide-as) (the-as uint 256))
(set! (-> s4-0 collide-with) (the-as uint 16))
(set! (-> s4-0 prim-core action) (the-as uint 1))
(set! (-> s4-0 prim-core offense) 2)
(set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001)
)
(dummy-46 s5-0)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(dummy-50 s5-0)
(set! (-> obj collide-info) s5-0)
)
0
(none)
)
;; definition for method 48 of type swamp-rat
;; INFO: Return type mismatch int vs none.
;; Used lq/sq
(defmethod TODO-RENAME-48 swamp-rat ((obj swamp-rat))
(dummy-14 obj *swamp-rat-sg* '())
(TODO-RENAME-45 obj *swamp-rat-nav-enemy-info*)
(vector-float*! (-> obj collide-info scale) *identity-vector* 1.5)
(set! (-> obj neck up) (the-as uint 1))
(set! (-> obj neck nose) (the-as uint 2))
(set! (-> obj neck ear) (the-as uint 0))
(set! (-> obj wiggle-angle) 0.0)
(set! (-> obj delta-wiggle-angle) 910.2222)
(set! (-> obj wiggle-factor) 1.5)
(set! (-> obj reaction-time) (rand-vu-int-range 30 240))
(set! (-> obj chase-rest-time) (the-as uint 300))
(set! (-> obj water) (new 'process 'water-control obj 7 0.0 8192.0 2048.0))
(set! (-> obj water flags) (the-as uint 2))
(set! (-> obj water height) (res-lump-float (-> obj entity) 'water-height))
(set! (-> obj water ripple-size) 12288.0)
(set! (-> obj min-height) (+ -2048.0 (-> obj water height)))
(set! (-> obj up-vector quad) (-> *y-vector* quad))
0
(none)
)
;; definition for function swamp-rat-init-by-other
;; Used lq/sq
(defbehavior
swamp-rat-init-by-other swamp-rat
((arg0 swamp-rat-nest)
(arg1 vector)
(arg2 vector)
(arg3 pickup-type)
(arg4 symbol)
)
(initialize-collision self)
(if arg4
(logclear! (-> self mask) (process-mask actor-pause))
(logior! (-> self mask) (process-mask actor-pause))
)
(set! (-> self collide-info trans quad) (-> arg1 quad))
(forward-up->quaternion (-> self collide-info quat) arg2 *up-vector*)
(vector-float*! (-> self collide-info scale) *identity-vector* 1.5)
(vector-float*! (-> self collide-info transv) arg2 49152.0)
(set! (-> self entity) (-> arg0 entity))
(TODO-RENAME-48 self)
(set! (-> self enemy-info pickup-type) arg3)
(go swamp-rat-spawn)
(none)
)
+9 -13
View File
@@ -43,7 +43,7 @@
(defmethod dummy-52 assistant ((obj assistant))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
@@ -60,7 +60,7 @@
)
;; definition for method 48 of type assistant
(defmethod draw-shadow assistant ((obj assistant))
(defmethod draw-npc-shadow assistant ((obj assistant))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -72,7 +72,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -363,27 +363,27 @@
)
(cond
((< 16384.0 (-> s5-0 y))
#f
)
((< 0.8 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "ASSTLP01" #f (-> obj root-override trans))
)
((< 0.6 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "ASSTLP04" #f (-> obj root-override trans))
)
((< 0.4 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "ASSTLP05" #f (-> obj root-override trans))
)
((< 0.2 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "ASSTLP02" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "ASSTLP03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "ASSTLP03" #f (-> obj root-override trans))
)
)
)
)
)
(none)
)
;; failed to figure out what this is:
@@ -1025,7 +1025,3 @@
)
(none)
)
+10 -11
View File
@@ -41,7 +41,7 @@
(defmethod dummy-52 explorer ((obj explorer))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
@@ -58,7 +58,7 @@
)
;; definition for method 48 of type explorer
(defmethod draw-shadow explorer ((obj explorer))
(defmethod draw-npc-shadow explorer ((obj explorer))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -70,7 +70,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -248,7 +248,7 @@
)
(cond
((< 0.85714287 f0-2)
(dummy-11 (-> obj ambient) "EXP-AM05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-AM05" #f (-> obj root-override trans))
)
((< 0.71428573 f0-2)
(if
@@ -259,17 +259,17 @@
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "EXP-LO02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-LO02" #f (-> obj root-override trans))
)
)
((< 0.5714286 f0-2)
(dummy-11 (-> obj ambient) "EXP-AM04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-AM04" #f (-> obj root-override trans))
)
((< 0.42857143 f0-2)
(dummy-11 (-> obj ambient) "EXP-AM03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-AM03" #f (-> obj root-override trans))
)
((< 0.2857143 f0-2)
(dummy-11 (-> obj ambient) "EXP-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-AM02" #f (-> obj root-override trans))
)
((< 0.14285715 f0-2)
(if
@@ -280,16 +280,15 @@
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "EXP-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-AM01" #f (-> obj root-override trans))
)
)
(else
(dummy-11 (-> obj ambient) "EXP-LO1A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "EXP-LO1A" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; definition for method 47 of type explorer
+10 -9
View File
@@ -135,30 +135,31 @@
)
(cond
((< 0.8333333 f0-2)
(dummy-11 (-> obj ambient) "FAR-LO1A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "FAR-LO1A" #f (-> obj root-override trans))
)
((< 0.6666667 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "FAR-AM01" #f (-> obj root-override trans))
)
((< 0.5 f0-2)
#f
)
((< 0.33333334 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM2A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "FAR-AM2A" #f (-> obj root-override trans))
)
((< 0.16666667 f0-2)
(dummy-11 (-> obj ambient) "FAR-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "FAR-AM02" #f (-> obj root-override trans))
)
(else
#f
)
)
)
)
(none)
)
;; definition for method 41 of type farmer
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision farmer ((obj farmer) (arg0 int))
(defmethod initialize-collision farmer ((obj farmer) (arg0 int) (arg1 vector))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
@@ -187,7 +188,7 @@
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(dummy-50 s5-0)
(set! (-> obj root) s5-0)
(set! (-> obj root-override) s5-0)
)
0
(none)
@@ -196,8 +197,8 @@
;; definition for method 11 of type farmer
(defmethod copy-defaults! farmer ((obj farmer) (arg0 res-lump))
(dummy-40 obj arg0 *farmer-sg* 3 25 (new 'static 'vector :w 4096.0) 5)
(set! (-> obj root nav-radius) 40960.0)
(nav-mesh-connect obj (-> obj root) (the-as nav-control #f))
(set! (-> obj root-override nav-radius) 40960.0)
(nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f))
(set! (-> obj tasks) (get-task-control (game-task village1-yakow)))
(dummy-42 obj)
(none)
File diff suppressed because it is too large Load Diff
+17 -11
View File
@@ -650,7 +650,7 @@
(run-now-in-process
s5-2
manipy-init
(-> obj root trans)
(-> obj root-override trans)
(-> obj entity)
*assistant-sg*
#f
@@ -1022,7 +1022,10 @@
)
((and
(-> obj reminder-played)
(< 81920.0 (vector-vector-distance (-> obj root trans) (camera-pos)))
(<
81920.0
(vector-vector-distance (-> obj root-override trans) (camera-pos))
)
)
#t
)
@@ -1134,27 +1137,27 @@
)
(cond
((< (-> s5-0 y) -12288.0)
#f
)
((< 0.8 f0-2)
(dummy-11 (-> obj ambient) "SAGELP03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP03" #f (-> obj root-override trans))
)
((< 0.6 f0-2)
(dummy-11 (-> obj ambient) "SAGELP04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP04" #f (-> obj root-override trans))
)
((< 0.4 f0-2)
(dummy-11 (-> obj ambient) "SAGELP05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP05" #f (-> obj root-override trans))
)
((< 0.2 f0-2)
(dummy-11 (-> obj ambient) "SAGELP06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP06" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "SAGELP11" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP11" #f (-> obj root-override trans))
)
)
)
)
)
(none)
)
;; failed to figure out what this is:
@@ -1228,7 +1231,10 @@
(if
(and
(-> self reminder-played)
(< 81920.0 (vector-vector-distance (-> self root trans) (camera-pos)))
(<
81920.0
(vector-vector-distance (-> self root-override trans) (camera-pos))
)
)
(go-virtual idle)
)
@@ -1346,7 +1352,7 @@
;; definition for method 41 of type sage
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision sage ((obj sage) (arg0 int))
(defmethod initialize-collision sage ((obj sage) (arg0 int) (arg1 vector))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
@@ -1378,7 +1384,7 @@
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(dummy-50 s5-0)
(set! (-> obj root) s5-0)
(set! (-> obj root-override) s5-0)
)
0
(none)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+13 -14
View File
@@ -275,50 +275,49 @@
)
(cond
((< 0.9230769 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM01" #f (-> obj root-override trans))
)
((< 0.84615386 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM02" #f (-> obj root-override trans))
)
((< 0.7692308 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM03" #f (-> obj root-override trans))
)
((< 0.6923077 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM04" #f (-> obj root-override trans))
)
((< 0.61538464 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM05" #f (-> obj root-override trans))
)
((< 0.53846157 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM06" #f (-> obj root-override trans))
)
((< 0.46153846 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM07" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM07" #f (-> obj root-override trans))
)
((< 0.3846154 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM08" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM08" #f (-> obj root-override trans))
)
((< 0.30769232 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM09" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM09" #f (-> obj root-override trans))
)
((< 0.23076923 f0-2)
(if (not (task-closed? (game-task ogre-boss) (task-status need-reminder)))
(dummy-11 (-> obj ambient) "GAM-AM10" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM10" #f (-> obj root-override trans))
)
)
((< 0.15384616 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM11" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM11" #f (-> obj root-override trans))
)
((< 0.07692308 f0-2)
(dummy-11 (-> obj ambient) "GAM-AM12" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM12" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "GAM-AM13" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GAM-AM13" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; failed to figure out what this is:
+10 -11
View File
@@ -239,7 +239,7 @@
)
(cond
((< 0.8888889 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM01" #f (-> obj root-override trans))
)
((< 0.7777778 f0-2)
(if
@@ -250,11 +250,11 @@
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "GEO-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM02" #f (-> obj root-override trans))
)
)
((< 0.6666667 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM03" #f (-> obj root-override trans))
)
((< 0.5555556 f0-2)
(if
@@ -263,14 +263,14 @@
(game-task village2-geologist-money)
(task-status need-introduction)
)
(dummy-11 (-> obj ambient) "GEO-AM04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM04" #f (-> obj root-override trans))
)
)
((< 0.44444445 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM05" #f (-> obj root-override trans))
)
((< 0.33333334 f0-2)
(dummy-11 (-> obj ambient) "GEO-AM06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM06" #f (-> obj root-override trans))
)
((< 0.22222222 f0-2)
(if
@@ -281,26 +281,25 @@
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "GEO-AM07" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM07" #f (-> obj root-override trans))
)
)
((< 0.11111111 f0-2)
(dummy-11 (-> obj ambient) "GEO-LO02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-LO02" #f (-> obj root-override trans))
)
((closed?
(-> obj tasks)
(game-task village2-geologist-money)
(task-status need-resolution)
)
(dummy-11 (-> obj ambient) "GEO-AM08" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-AM08" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "GEO-LO01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "GEO-LO01" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; definition for method 11 of type geologist
+10 -12
View File
@@ -4,7 +4,7 @@
;; definition of type assistant-bluehut
(deftype assistant-bluehut (process-taskable)
((sound-id sound-id :offset-assert 380)
(jaws uint64 :offset-assert 384)
(jaws handle :offset-assert 384)
(sage entity-actor :offset-assert 392)
(im-talking symbol :offset-assert 396)
)
@@ -258,7 +258,10 @@
)
((and
(-> obj reminder-played)
(< 81920.0 (vector-vector-distance (-> obj root trans) (camera-pos)))
(<
81920.0
(vector-vector-distance (-> obj root-override trans) (camera-pos))
)
)
#t
)
@@ -401,24 +404,23 @@
)
(cond
((< 0.8 f0-2)
(dummy-11 (-> obj ambient) "SAGELP20" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP20" #f (-> obj root-override trans))
)
((< 0.6 f0-2)
(dummy-11 (-> obj ambient) "SAGELP21" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP21" #f (-> obj root-override trans))
)
((< 0.4 f0-2)
(dummy-11 (-> obj ambient) "SAGELP22" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP22" #f (-> obj root-override trans))
)
((< 0.2 f0-2)
(dummy-11 (-> obj ambient) "SAGELP23" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP23" #f (-> obj root-override trans))
)
((nonzero? (get-task-status (game-task citadel-sage-blue)))
(dummy-11 (-> obj ambient) "SAGELP24" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "SAGELP24" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; failed to figure out what this is:
@@ -622,7 +624,3 @@
(dummy-42 obj)
(none)
)
+8 -9
View File
@@ -46,7 +46,7 @@
(defmethod dummy-52 warrior ((obj warrior))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
@@ -60,7 +60,7 @@
)
;; definition for method 48 of type warrior
(defmethod draw-shadow warrior ((obj warrior))
(defmethod draw-npc-shadow warrior ((obj warrior))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -72,7 +72,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -276,23 +276,22 @@
)
(cond
((< 0.66 f0-2)
(dummy-11 (-> obj ambient) "WAR-LO1A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "WAR-LO1A" #f (-> obj root-override trans))
)
((< 0.33 f0-2)
(dummy-11 (-> obj ambient) "WAR-LO1B" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "WAR-LO1B" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "WAR-LO1C" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "WAR-LO1C" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; definition for method 41 of type warrior
;; INFO: Return type mismatch int vs none.
(defmethod initialize-collision warrior ((obj warrior) (arg0 int))
(defmethod initialize-collision warrior ((obj warrior) (arg0 int) (arg1 vector))
(let
((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
@@ -321,7 +320,7 @@
)
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
(dummy-50 s5-0)
(set! (-> obj root) s5-0)
(set! (-> obj root-override) s5-0)
)
0
(none)
@@ -0,0 +1,360 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type assistant-villagec
(deftype assistant-villagec (process-taskable)
()
:heap-base #x110
:method-count-assert 53
:size-assert #x17c
:flag-assert #x350110017c
)
;; definition for method 3 of type assistant-villagec
(defmethod inspect assistant-villagec ((obj assistant-villagec))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "assistant-village3"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *assistant-village3-sg* v1-1)
)
;; definition for method 52 of type assistant-villagec
;; INFO: Return type mismatch int vs none.
(defmethod dummy-52 assistant-villagec ((obj assistant-villagec))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -2048.0 f0-0)))
)
0
(set! (-> v1-1 settings top-plane w) (- (+ 1024.0 f0-0)))
)
0
)
)
(none)
)
;; definition for method 48 of type assistant-villagec
(defmethod draw-npc-shadow assistant-villagec ((obj assistant-villagec))
(-> obj draw shadow-ctrl)
(cond
((and
(-> obj draw shadow)
(zero? (-> obj draw cur-lod))
(logtest? (-> obj draw status) 8)
)
(let ((v1-9 (-> obj draw shadow-ctrl)))
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
(logior! (-> v1-14 settings flags) 32)
)
0
)
)
(none)
)
;; definition for method 32 of type assistant-villagec
(defmethod play-anim! assistant-villagec ((obj assistant-villagec) (arg0 symbol))
(set! (-> obj talk-message) (the-as uint 292))
(cond
((=
(get-task-status (game-task finalboss-movies))
(task-status need-introduction)
)
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string (the-as task-status (current-status (-> obj tasks))))
)
)
(get-art-elem obj)
)
(else
(new 'static 'spool-anim
:name "assistant-village3-reminder"
:index 4
:parts 3
:command-list '()
)
)
)
)
;; definition for method 31 of type assistant-villagec
(defmethod get-art-elem assistant-villagec ((obj assistant-villagec))
(-> obj draw art-group data 3)
)
;; definition for method 39 of type assistant-villagec
(defmethod should-display? assistant-villagec ((obj assistant-villagec))
(and
(task-closed? (game-task village3-button) (task-status need-introduction))
(not (sages-kidnapped?))
)
)
;; definition for method 47 of type assistant-villagec
;; INFO: Return type mismatch basic vs symbol.
(defmethod target-above-threshold? assistant-villagec ((obj assistant-villagec))
(the-as symbol (and *target* (< (-> (target-pos 0) z) -14245888.0)))
)
;; definition for method 43 of type assistant-villagec
(defmethod TODO-RENAME-43 assistant-villagec ((obj assistant-villagec))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.85714287 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP31" #f (-> obj root-override trans))
)
((< 0.71428573 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP32" #f (-> obj root-override trans))
)
((< 0.5714286 f0-2)
(dummy-11 (-> obj ambient) "ASSTLP33" #f (-> obj root-override trans))
)
((< 0.42857143 f0-2)
(let ((v1-16 (get-task-status (game-task lavatube-end))))
(if
(not
(or
(= v1-16 (task-status need-reward-speech))
(= v1-16 (task-status invalid))
)
)
(dummy-11 (-> obj ambient) "ASSTLP34" #f (-> obj root-override trans))
)
)
)
((< 0.2857143 f0-2)
(let ((v1-21 (get-task-status (game-task lavatube-end))))
(if
(not
(or
(= v1-21 (task-status need-reward-speech))
(= v1-21 (task-status invalid))
)
)
(dummy-11 (-> obj ambient) "ASSTLP35" #f (-> obj root-override trans))
)
)
)
((< 0.14285715 f0-2)
(let ((v1-26 (get-task-status (game-task lavatube-end))))
(if
(not
(or
(= v1-26 (task-status need-reward-speech))
(= v1-26 (task-status invalid))
)
)
(dummy-11 (-> obj ambient) "ASSTLP36" #f (-> obj root-override trans))
)
)
)
((nonzero? (get-task-status (game-task citadel-sage-green)))
(dummy-11 (-> obj ambient) "ASSTLP37" #f (-> obj root-override trans))
)
)
)
)
)
;; failed to figure out what this is:
(defstate idle (assistant-villagec)
:virtual #t
:code
(behavior ()
(if (!= (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
(get-art-elem self)
)
(ja-channel-push! 1 15)
)
(while #t
(TODO-RENAME-43 self)
(let ((a0-8 (-> self skel root-channel 0)))
(set!
(-> a0-8 frame-group)
(the-as art-joint-anim (-> self draw art-group data 3))
)
(set!
(-> a0-8 param 0)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 3))
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 3))
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!
)
)
)
(let ((gp-0 (-> *display* base-frame-counter)))
(while (let* ((s5-0 (-> *display* base-frame-counter))
(f30-0 300.0)
(f28-0 0.16)
(f26-0 0.17000002)
(v1-31
(/ (the-as int (rand-uint31-gen *random-generator*)) 256)
)
(v1-32 (the-as number (logior #x3f800000 v1-31)))
)
(<
(-
s5-0
(the
int
(* f30-0 (+ f28-0 (* f26-0 (+ -1.0 (the-as float v1-32)))))
)
)
gp-0
)
)
(suspend)
)
)
(let ((gp-1 (-> self skel root-channel 0)))
(set! (-> gp-1 frame-group) (if (> (-> self skel active-channels) 0)
(-> self skel root-channel 0 frame-group)
)
)
(set! (-> gp-1 param 0) (ja-aframe 0.0 0))
(set! (-> gp-1 param 1) 1.0)
(set! (-> gp-1 frame-num) (ja-aframe 16.0 0))
(joint-control-channel-group! gp-1 (if (> (-> self skel active-channels) 0)
(->
self
skel
root-channel
0
frame-group
)
)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((gp-2 (-> self skel root-channel 0)))
(set! (-> gp-2 param 0) (ja-aframe 0.0 0))
(set! (-> gp-2 param 1) 1.0)
(joint-control-channel-group-eval!
gp-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(let ((gp-3 (-> *display* base-frame-counter)))
(while (let* ((s5-1 (-> *display* base-frame-counter))
(f30-1 300.0)
(f28-1 0.16)
(f26-1 0.17000002)
(v1-56
(/ (the-as int (rand-uint31-gen *random-generator*)) 256)
)
(v1-57 (the-as number (logior #x3f800000 v1-56)))
)
(<
(-
s5-1
(the
int
(* f30-1 (+ f28-1 (* f26-1 (+ -1.0 (the-as float v1-57)))))
)
)
gp-3
)
)
(suspend)
)
)
)
(none)
)
)
;; definition for method 11 of type assistant-villagec
(defmethod
copy-defaults!
assistant-villagec
((obj assistant-villagec) (arg0 res-lump))
(dummy-40
obj
arg0
*assistant-village3-sg*
3
31
(new 'static 'vector :w 4096.0)
5
)
(set! (-> obj tasks) (get-task-control (game-task assistant-village3)))
(dummy-42 obj)
(none)
)
+35 -40
View File
@@ -71,7 +71,7 @@
(defmethod dummy-52 minertall ((obj minertall))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
@@ -88,7 +88,7 @@
)
;; definition for method 48 of type minertall
(defmethod draw-shadow minertall ((obj minertall))
(defmethod draw-npc-shadow minertall ((obj minertall))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -100,7 +100,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -308,7 +308,7 @@
(defmethod dummy-52 minershort ((obj minershort))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(when v1-1
(let ((f0-0 (-> obj root trans y)))
(let ((f0-0 (-> obj root-override trans y)))
(let ((a0-2 v1-1))
(set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0)))
)
@@ -325,7 +325,7 @@
)
;; definition for method 48 of type minershort
(defmethod draw-shadow minershort ((obj minershort))
(defmethod draw-npc-shadow minershort ((obj minershort))
(-> obj draw shadow-ctrl)
(cond
((and
@@ -337,7 +337,7 @@
(set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags)))
)
0
((method-of-object (-> obj draw shadow-ctrl) dummy-14))
(dummy-14 (-> obj draw shadow-ctrl))
)
(else
(let ((v1-14 (-> obj draw shadow-ctrl)))
@@ -818,96 +818,95 @@
)
(cond
((< 0.9655172 f0-2)
(dummy-11 (-> obj ambient) "MIN-LO01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MIN-LO01" #f (-> obj root-override trans))
)
((< 0.9310345 f0-2)
(dummy-11 (-> obj ambient) "MIN-LO03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MIN-LO03" #f (-> obj root-override trans))
)
((< 0.8965517 f0-2)
(dummy-11 (-> obj ambient) "MIN-LO04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MIN-LO04" #f (-> obj root-override trans))
)
((< 0.86206895 f0-2)
(dummy-11 (-> obj ambient) "MIN-LO05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MIN-LO05" #f (-> obj root-override trans))
)
((< 0.82758623 f0-2)
(dummy-11 (-> obj ambient) "MIN-LO06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MIN-LO06" #f (-> obj root-override trans))
)
((< 0.79310346 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM01" #f (-> obj root-override trans))
)
((< 0.7586207 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM02" #f (-> obj root-override trans))
)
((< 0.7241379 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM03" #f (-> obj root-override trans))
)
((< 0.6896552 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM04" #f (-> obj root-override trans))
)
((< 0.6551724 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM05" #f (-> obj root-override trans))
)
((< 0.62068963 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM06" #f (-> obj root-override trans))
)
((< 0.5862069 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM07" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM07" #f (-> obj root-override trans))
)
((< 0.55172414 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM08" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM08" #f (-> obj root-override trans))
)
((< 0.51724136 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM09" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM09" #f (-> obj root-override trans))
)
((< 0.4827586 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM10" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM10" #f (-> obj root-override trans))
)
((< 0.44827586 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM11" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM11" #f (-> obj root-override trans))
)
((< 0.41379312 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM12" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM12" #f (-> obj root-override trans))
)
((< 0.37931034 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM1A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM1A" #f (-> obj root-override trans))
)
((< 0.3448276 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM2A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM2A" #f (-> obj root-override trans))
)
((< 0.31034482 f0-2)
(dummy-11 (-> obj ambient) "MSH-AM3A" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MSH-AM3A" #f (-> obj root-override trans))
)
((< 0.27586207 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM01" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM01" #f (-> obj root-override trans))
)
((< 0.2413793 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM02" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM02" #f (-> obj root-override trans))
)
((< 0.20689656 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM03" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM03" #f (-> obj root-override trans))
)
((< 0.1724138 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM04" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM04" #f (-> obj root-override trans))
)
((< 0.13793103 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM05" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM05" #f (-> obj root-override trans))
)
((< 0.10344828 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM06" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM06" #f (-> obj root-override trans))
)
((< 0.06896552 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM07" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM07" #f (-> obj root-override trans))
)
((< 0.03448276 f0-2)
(dummy-11 (-> obj ambient) "MTA-AM08" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM08" #f (-> obj root-override trans))
)
(else
(dummy-11 (-> obj ambient) "MTA-AM09" #f (-> obj root trans))
(dummy-11 (-> obj ambient) "MTA-AM09" #f (-> obj root-override trans))
)
)
)
)
(none)
)
;; failed to figure out what this is:
@@ -1041,7 +1040,3 @@
(go (method-of-object obj idle))
(none)
)
@@ -0,0 +1,670 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type sage-villagec
(deftype sage-villagec (process-taskable)
((evilbro handle :offset-assert 384)
(evilsis handle :offset-assert 392)
(assistant entity-actor :offset-assert 400)
)
:heap-base #x130
:method-count-assert 53
:size-assert #x194
:flag-assert #x3501300194
)
;; definition for method 3 of type sage-villagec
(defmethod inspect sage-villagec ((obj sage-villagec))
(let ((t9-0 (method-of-type process-taskable inspect)))
(t9-0 obj)
)
(format #t "~T~Tevilbro: ~D~%" (-> obj evilbro))
(format #t "~T~Tevilsis: ~D~%" (-> obj evilsis))
(format #t "~T~Tassistant: ~A~%" (-> obj assistant))
obj
)
;; failed to figure out what this is:
(let
((v1-1
(new 'static 'skeleton-group
:art-group-name "sage-village3"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-1 jgeo) 0)
(set! (-> v1-1 janim) 3)
(set! (-> v1-1 mgeo 0) (the-as uint 1))
(set! (-> v1-1 lod-dist 0) 4095996000.0)
(set! *sage-village3-sg* v1-1)
)
;; failed to figure out what this is:
(let
((v1-2
(new 'static 'skeleton-group
:art-group-name "evilbro-village3"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-2 jgeo) 0)
(set! (-> v1-2 janim) 3)
(set! (-> v1-2 mgeo 0) (the-as uint 1))
(set! (-> v1-2 lod-dist 0) 4095996000.0)
(set! *evilbro-village3-sg* v1-2)
)
;; failed to figure out what this is:
(let
((v1-3
(new 'static 'skeleton-group
:art-group-name "evilsis-village3"
:bounds (new 'static 'vector :w 16384.0)
:version #x6
:shadow 2
)
)
)
(set! (-> v1-3 jgeo) 0)
(set! (-> v1-3 janim) 3)
(set! (-> v1-3 mgeo 0) (the-as uint 1))
(set! (-> v1-3 lod-dist 0) 4095996000.0)
(set! *evilsis-village3-sg* v1-3)
)
;; definition for method 32 of type sage-villagec
(defmethod play-anim! sage-villagec ((obj sage-villagec) (arg0 symbol))
(with-pp
(set! (-> obj talk-message) (the-as uint 291))
(case (current-status (-> obj tasks))
((1 2 3)
(if (not arg0)
(set! (-> obj will-talk) #t)
)
(case (current-task (-> obj tasks))
((105)
(when arg0
(close-status! (-> obj tasks) (task-status need-introduction))
(let ((a1-5 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-5 from) pp)
(set! (-> a1-5 num-params) 1)
(set! (-> a1-5 message) 'clone)
(set! (-> a1-5 param 0) (the-as uint (process->handle obj)))
(send-event-function (-> obj assistant extra process) a1-5)
)
(let ((s5-1 (get-process *default-dead-pool* manipy #x4000)))
(set! (-> obj evilbro) (ppointer->handle (when s5-1
(let
((t9-5
(method-of-type
manipy
activate
)
)
)
(t9-5
(the-as manipy s5-1)
obj
'manipy
(the-as
pointer
#x70004000
)
)
)
(run-now-in-process
s5-1
manipy-init
(->
obj
root-override
trans
)
(-> obj entity)
*evilbro-village3-sg*
#f
)
(-> s5-1 ppointer)
)
)
)
)
(let ((a1-9 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-9 from) pp)
(set! (-> a1-9 num-params) 1)
(set! (-> a1-9 message) 'anim-mode)
(set! (-> a1-9 param 0) (the-as uint 'clone-anim))
(send-event-function (handle->process (-> obj evilbro)) a1-9)
)
(let ((a1-10 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-10 from) pp)
(set! (-> a1-10 num-params) 1)
(set! (-> a1-10 message) 'blend-shape)
(set! (-> a1-10 param 0) (the-as uint #t))
(send-event-function (handle->process (-> obj evilbro)) a1-10)
)
(let ((a1-11 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-11 from) pp)
(set! (-> a1-11 num-params) 1)
(set! (-> a1-11 message) 'center-joint)
(set! (-> a1-11 param 0) (the-as uint 3))
(send-event-function (handle->process (-> obj evilbro)) a1-11)
)
(let ((s5-2 (get-process *default-dead-pool* manipy #x4000)))
(set! (-> obj evilsis) (ppointer->handle (when s5-2
(let
((t9-11
(method-of-type
manipy
activate
)
)
)
(t9-11
(the-as manipy s5-2)
obj
'manipy
(the-as
pointer
#x70004000
)
)
)
(run-now-in-process
s5-2
manipy-init
(->
obj
root-override
trans
)
(-> obj entity)
*evilsis-village3-sg*
#f
)
(-> s5-2 ppointer)
)
)
)
)
(let ((a1-15 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-15 from) pp)
(set! (-> a1-15 num-params) 1)
(set! (-> a1-15 message) 'anim-mode)
(set! (-> a1-15 param 0) (the-as uint 'clone-anim))
(send-event-function (handle->process (-> obj evilsis)) a1-15)
)
(let ((a1-16 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-16 from) pp)
(set! (-> a1-16 num-params) 1)
(set! (-> a1-16 message) 'blend-shape)
(set! (-> a1-16 param 0) (the-as uint #t))
(send-event-function (handle->process (-> obj evilsis)) a1-16)
)
(let ((a1-17 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-17 from) pp)
(set! (-> a1-17 num-params) 1)
(set! (-> a1-17 message) 'center-joint)
(set! (-> a1-17 param 0) (the-as uint 3))
(send-event-function (handle->process (-> obj evilsis)) a1-17)
)
(set! (-> obj draw bounds w) 40960.0)
)
(new 'static 'spool-anim
:name "sage-village3-introduction"
:index 8
:parts 58
:command-list
'(
((the binteger 206)
joint
"cameraB"
)
((the binteger 268)
joint
"camera"
)
((the binteger 321)
joint
"cameraB"
)
((the binteger 415)
joint
"camera"
)
((the binteger 502)
joint
"cameraB"
)
((the binteger 655)
joint
"camera"
)
((the binteger 864)
joint
"cameraB"
)
((the binteger 958)
joint
"camera"
)
((the binteger 1178)
joint
"cameraB"
)
((the binteger 1295)
joint
"camera"
)
((the binteger 1377)
joint
"cameraB"
)
((the binteger 1683)
joint
"camera"
)
((the binteger 2066)
joint
"cameraB"
)
((the binteger 2209)
joint
"camera"
)
((the binteger 2389)
joint
"cameraB"
)
((the binteger 2707)
joint
"camera"
)
((the binteger 2769)
joint
"cameraB"
)
((the binteger 2901)
joint
"camera"
)
((the binteger 3021)
joint
"cameraB"
)
((the binteger 3158)
joint
"camera"
)
((the binteger 3301)
joint
"cameraB"
)
((the binteger 3533)
joint
"camera"
)
((the binteger 3632)
joint
"cameraB"
)
((the binteger 3692)
joint
"camera"
)
((the binteger 3780)
joint
"cameraB"
)
((the binteger 3818)
joint
"camera"
)
((the binteger 4188)
joint
"cameraB"
)
((the binteger 4324)
joint
"camera"
)
((the binteger 4462)
joint
"cameraB"
)
((the binteger 4542) joint "camera")
)
)
)
((79)
(when arg0
(let* ((s5-3 (-> obj tasks))
(s4-0 (method-of-object s5-3 save-reminder))
(a1-18 (new 'stack-no-clear 'event-message-block))
)
(set! (-> a1-18 from) pp)
(set! (-> a1-18 num-params) 2)
(set! (-> a1-18 message) 'query)
(set! (-> a1-18 param 0) (the-as uint 'pickup))
(set! (-> a1-18 param 1) (the-as uint 6))
(s4-0
s5-3
(the int (the-as float (send-event-function *target* a1-18)))
1
)
)
(close-status! (-> obj tasks) (task-status need-introduction))
)
(new 'static 'spool-anim
:name "sage-village3-introduction-dark-eco"
:index 4
:parts 9
:command-list
'(
((the binteger 111)
joint
"cameraB"
)
((the binteger 189)
joint
"camera"
)
((the binteger 455)
joint
"cameraB"
)
((the binteger 638)
joint
"camera"
)
((the binteger 753) joint "cameraB")
)
)
)
(else
(if arg0
(close-specific-task!
(game-task snow-ram)
(task-status need-introduction)
)
)
(new 'static 'spool-anim
:name "sage-village3-introduction-rams"
:index 6
:parts 6
:command-list
'(
((the binteger 155)
joint
"cameraB"
)
((the binteger 370) joint "camera")
)
)
)
)
)
((4 5)
(set! (-> obj skippable) #t)
(let ((s4-1 (+ (get-reminder (-> obj tasks) 0) 1)))
(if (< (the-as uint 1) (the-as uint s4-1))
(set! s4-1 0)
)
(countdown (s3-0 2)
(cond
((zero? s4-1)
(if
(!=
(get-task-status (game-task cave-dark-crystals))
(task-status need-reminder)
)
(set! s4-1 1)
)
)
(else
(if
(not
(or
(=
(get-task-status (game-task snow-ram))
(task-status need-reminder)
)
(=
(get-task-status (game-task snow-ram))
(task-status need-reminder-a)
)
)
)
(set! s4-1 0)
)
)
)
)
(if arg0
(save-reminder (-> obj tasks) s4-1 0)
)
(if (zero? s4-1)
(new 'static 'spool-anim
:name "sage-village3-reminder-1-dark-eco"
:index 5
:parts 2
:command-list '()
)
(new 'static 'spool-anim
:name "sage-village3-reminder-1-rams"
:index 7
:parts 3
:command-list '()
)
)
)
)
(else
(if arg0
(format
0
"ERROR: <GMJ>: ~S playing anim for task status ~S~%"
(-> obj name)
(task-status->string
(the-as task-status (current-status (-> obj tasks)))
)
)
)
(get-art-elem obj)
)
)
)
)
;; definition for method 31 of type sage-villagec
(defmethod get-art-elem sage-villagec ((obj sage-villagec))
(-> obj draw art-group data 3)
)
;; definition for method 47 of type sage-villagec
;; INFO: Return type mismatch basic vs symbol.
(defmethod target-above-threshold? sage-villagec ((obj sage-villagec))
(the-as
symbol
(and
*target*
(< (-> (target-pos 0) x) 4575232.0)
(< -14323302.0 (-> (target-pos 0) z))
)
)
)
;; definition for method 43 of type sage-villagec
(defmethod TODO-RENAME-43 sage-villagec ((obj sage-villagec))
(when
(TODO-RENAME-10
(-> obj ambient)
(new 'stack-no-clear 'vector)
9000
122880.0
obj
)
(let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256))
(v1-4 (the-as number (logior #x3f800000 v1-3)))
(f0-2 (+ -1.0 (the-as float v1-4)))
)
(cond
((< 0.875 f0-2)
(dummy-11 (-> obj ambient) "SAGELP31" #f (-> obj root-override trans))
)
((< 0.75 f0-2)
(if
(not
(closed?
(-> obj tasks)
(game-task cave-dark-crystals)
(task-status need-reminder)
)
)
(dummy-11 (-> obj ambient) "SAGELP32" #f (-> obj root-override trans))
)
)
((< 0.625 f0-2)
(if (nonzero? (get-task-status (game-task citadel-sage-green)))
(dummy-11 (-> obj ambient) "SAGELP33" #f (-> obj root-override trans))
)
)
((< 0.5 f0-2)
(dummy-11 (-> obj ambient) "SAGELP34" #f (-> obj root-override trans))
)
((< 0.375 f0-2)
(dummy-11 (-> obj ambient) "SAGELP35" #f (-> obj root-override trans))
)
((< 0.25 f0-2)
(dummy-11 (-> obj ambient) "SAGELP36" #f (-> obj root-override trans))
)
((< 0.125 f0-2)
(if (nonzero? (get-task-status (game-task citadel-sage-green)))
(dummy-11 (-> obj ambient) "SAGELP37" #f (-> obj root-override trans))
)
)
((!=
(get-task-status (game-task citadel-sage-green))
(task-status need-resolution)
)
(dummy-11 (-> obj ambient) "SAGELP38" #f (-> obj root-override trans))
)
)
)
)
)
;; failed to figure out what this is:
(defstate idle (sage-villagec)
:virtual #t
:trans
(behavior ()
(case (get-task-status (game-task village3-button))
(((task-status need-introduction))
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) self)
(set! (-> a1-0 num-params) 0)
(set! (-> a1-0 message) 'play-anim)
(send-event-function self a1-0)
)
)
)
((-> (method-of-type process-taskable idle) trans))
(none)
)
)
;; failed to figure out what this is:
(defstate play-anim (sage-villagec)
:virtual #t
:exit
(behavior ()
(set! (-> self draw bounds w) 10240.0)
(let ((a1-0 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-0 from) self)
(set! (-> a1-0 num-params) 0)
(set! (-> a1-0 message) 'end-mode)
(send-event-function (-> self assistant extra process) a1-0)
)
(let ((a0-2 (handle->process (-> self evilbro))))
(if a0-2
(deactivate a0-2)
)
)
(let ((a0-6 (handle->process (-> self evilsis))))
(if a0-6
(deactivate a0-6)
)
)
((-> (method-of-type process-taskable play-anim) exit))
(none)
)
)
;; definition for method 39 of type sage-villagec
(defmethod should-display? sage-villagec ((obj sage-villagec))
(cond
((not
(closed?
(-> obj tasks)
(game-task village3-button)
(task-status need-hint)
)
)
(dummy-33 obj)
#f
)
((sages-kidnapped?)
(dummy-33 obj)
#f
)
(else
#t
)
)
)
;; definition for method 48 of type sage-villagec
(defmethod draw-npc-shadow sage-villagec ((obj sage-villagec))
(let ((v1-1 (-> obj draw shadow-ctrl)))
(cond
((and
(-> obj draw shadow)
(zero? (-> obj draw cur-lod))
(logtest? (-> obj draw status) 8)
)
(set! (-> v1-1 settings flags) (logand -9 (-> v1-1 settings flags)))
(set! (-> v1-1 settings flags) (logand -5 (-> v1-1 settings flags)))
(set! (-> v1-1 settings bot-plane w) 20480.0)
(let ((a0-8 v1-1))
(set! (-> a0-8 settings flags) (logand -33 (-> a0-8 settings flags)))
)
0
(dummy-14 v1-1)
)
(else
(logior! (-> v1-1 settings flags) 32)
0
)
)
)
(none)
)
;; definition for method 11 of type sage-villagec
(defmethod copy-defaults! sage-villagec ((obj sage-villagec) (arg0 res-lump))
(dummy-40 obj arg0 *sage-village3-sg* 3 40 (new 'static 'vector :w 8192.0) 5)
(set! (-> obj tasks) (get-task-control (game-task cave-dark-crystals)))
(set! (-> obj assistant) (entity-actor-lookup arg0 'alt-actor 0))
(set! (-> obj evilbro) (the-as handle #f))
(set! (-> obj evilsis) (the-as handle #f))
(set! (-> obj sound-flava) (the-as uint 5))
(dummy-42 obj)
(none)
)
@@ -625,7 +625,7 @@
:volume #x400
:fo-max 50
)
(-> obj root trans)
(-> obj root-override trans)
)
)
(set! (-> obj first-task) (the-as uint (-> arg0 extra perm task)))
@@ -638,7 +638,7 @@
(set! (-> obj left-eye-cell) (the-as handle #f))
(logior! (-> obj draw status) 32)
(let ((s4-0 (new 'stack-no-clear 'vector))
(s5-1 (lambda :behavior oracle () (let* ((gp-0 (-> self root))
(s5-1 (lambda :behavior oracle () (let* ((gp-0 (-> self root-override))
(v1-1
(if
(and
@@ -653,14 +653,15 @@
)
(a1-1 (if v1-1
(->
(the-as
collide-shape
v1-1
)
v1-1
root-prim
prim-core
)
(-> self root trans)
(->
self
root-override
trans
)
)
)
)
+5 -3
View File
@@ -15,8 +15,9 @@ namespace {
// list of object files to ignore during reference checks
const std::unordered_set<std::string> g_files_to_skip_compiling = {
"timer", // accessing timer regs
"display", // interrupt handlers
"timer", // accessing timer regs
"display", // interrupt handlers
"target-snowball", // screwed up labels, likely cut content
};
// the functions we expect the decompiler to skip
@@ -186,7 +187,8 @@ std::vector<decomp_meta> g_object_files_to_decompile_or_ref_check;
std::vector<std::string> dgos = {
"CGO/KERNEL.CGO", "CGO/ENGINE.CGO", "CGO/GAME.CGO", "DGO/BEA.DGO", "DGO/INT.DGO", "DGO/VI1.DGO",
"DGO/VI2.DGO", "DGO/VI3.DGO", "DGO/CIT.DGO", "DGO/MIS.DGO", "DGO/JUB.DGO", "DGO/SUN.DGO",
"DGO/DEM.DGO", "DGO/FIN.DGO", "DGO/JUN.DGO", "DGO/FIC.DGO", "DGO/OGR.DGO"};
"DGO/DEM.DGO", "DGO/FIN.DGO", "DGO/JUN.DGO", "DGO/FIC.DGO", "DGO/SNO.DGO", "DGO/SWA.DGO",
"DGO/MAI.DGO", "DGO/ROB.DGO", "DGO/LAV.DGO", "DGO/OGR.DGO"};
} // namespace