decomp: Pass of the final remaining gameplay related files (#921)

* blocked: `plant-boss` has `go` returning none issues

* blocked: `ice-cube` return value getting forced to none

* blocked: `ropebridge` has static data isue

* blocked: `double-lurker` handle cast issues

* decomp: finish `billy`

* decomp: finish `lurkerworm`

* blocked: `pelican` handle casts

* decomp: finish `citb-bunny`

* blocked: inherited states in `snow-bunny`

* blocked: CFG resolution in `lavatube-energy`

* decomp: finish `citadel-sages`

* progress: working through `collectables`

* blocked: finished as much as currently possible in `collectables`

- process-tree's 10 method pparently has a 3rd arg -- im doubtful
- set-to-run function
- branch delay unimplemented case
- weird method 21 eco-collectable

* pre-merge

* decomp: update source files / ref tests

* decomp: finish `floating-launcher`, `shover`, `steam-cap`, `sun-iris-door`, `whirlpool`

* decomp: address feedback

* update ref tests and gsrc
This commit is contained in:
Tyler Wilding
2021-11-14 11:14:43 -05:00
committed by GitHub
parent 97636135c5
commit c8a31d4d1b
57 changed files with 17419 additions and 1291 deletions
+4 -4
View File
@@ -324,7 +324,7 @@
:flag-assert #x1d0000005c
(:methods
(new (symbol type basic uint uint) _type_ 0)
(dummy-28 () none 28)
(dummy-28 (_type_ int) none 28)
)
)
@@ -411,16 +411,16 @@
(dummy-29 (_type_ int) none 29)
(TODO-RENAME-30 (_type_ vector) none 30)
(dummy-31 () none 31)
(dummy-32 () none 32)
(dummy-32 (_type_ float uint) none 32)
(dummy-33 (_type_ vector uint) none 33)
(dummy-34 (_type_ uint) collide-shape-prim 34)
(dummy-35 (_type_) none 35)
(dummy-36 () none 36)
(dummy-37 () none 37)
(dummy-37 (_type_ vector) none 37)
(dummy-38 () none 38)
(dummy-39 () none 39)
(dummy-40 (_type_ structure) none 40)
(dummy-41 () none 41)
(dummy-41 (_type_ attack-info float) none 41)
(dummy-42 () none 42)
(dummy-43 () none 43)
(dummy-44 (_type_) none 44)
+1 -1
View File
@@ -133,7 +133,7 @@
(touched-shape (_type_ collide-shape-moving) collide-shape 10)
(dummy-11 () none 11)
(prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12)
(dummy-13 () none 13)
(dummy-13 (_type_ control-info int int) none 13)
(dummy-14 () none 14)
(dummy-15 () none 15)
(get-head (_type_) touching-prims-entry 16)
+4 -1
View File
@@ -69,7 +69,10 @@
a2-0
(*
0.006666667
(the float (- (-> *display* base-frame-counter) (-> arg0 start-time)))
(the
float
(- (-> *display* base-frame-counter) (the-as int (-> arg0 start-time)))
)
)
)
)
+13 -13
View File
@@ -78,19 +78,19 @@
;; definition of type part-tracker
(deftype part-tracker (process)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(target handle :offset-assert 120)
(callback (function part-tracker none) :offset-assert 128)
(linger-callback (function part-tracker none) :offset-assert 132)
(duration int64 :offset-assert 136)
(linger-duration int64 :offset-assert 144)
(start-time int64 :offset-assert 152)
(offset vector :inline :offset-assert 160)
(userdata uint64 :offset-assert 176)
(user-time int64 2 :offset-assert 184)
(user-vector vector 2 :inline :offset-assert 208)
(user-handle uint32 2 :offset-assert 240)
((root trsqv :offset-assert 112)
(part sparticle-launch-control :offset-assert 116)
(target handle :offset-assert 120)
(callback (function part-tracker vector) :offset-assert 128)
(linger-callback (function part-tracker vector) :offset-assert 132)
(duration uint64 :offset-assert 136)
(linger-duration uint64 :offset-assert 144)
(start-time uint64 :offset-assert 152)
(offset vector :inline :offset-assert 160)
(userdata uint64 :offset-assert 176)
(user-time int64 2 :offset-assert 184)
(user-vector vector 2 :inline :offset-assert 208)
(user-handle uint32 2 :offset-assert 240)
)
:heap-base #x90
:method-count-assert 14
+10 -7
View File
@@ -767,11 +767,11 @@
(defstate part-tracker-process (part-tracker)
:code
(behavior ()
(set! (-> self start-time) (-> *display* base-frame-counter))
(set! (-> self start-time) (the-as uint (-> *display* base-frame-counter)))
(while
(<
(- (-> *display* base-frame-counter) (-> self start-time))
(-> self duration)
(- (-> *display* base-frame-counter) (the-as int (-> self start-time)))
(the-as int (-> self duration))
)
(let ((gp-0 (handle->process (-> self target))))
(when gp-0
@@ -799,7 +799,10 @@
)
(let ((gp-2 (-> *display* base-frame-counter)))
(until
(>= (- (-> *display* base-frame-counter) gp-2) (-> self linger-duration))
(>=
(- (-> *display* base-frame-counter) gp-2)
(the-as int (-> self linger-duration))
)
(if (-> self linger-callback)
((-> self linger-callback) self)
)
@@ -832,7 +835,7 @@
(set! (-> self root) (new 'process 'trsqv))
(set! (-> self root trans quad) (-> arg5 world-sphere quad))
(set! (-> self offset quad) (-> arg5 world-sphere quad))
(set! (-> self callback) arg2)
(set! (-> self callback) (the-as (function part-tracker vector) arg2))
(set! (-> self linger-callback) #f)
(set! (-> self userdata) (the-as uint arg3))
(set! (-> self target) (process->handle arg4))
@@ -846,8 +849,8 @@
)
)
)
(set! (-> self duration) arg1)
(set! (-> self linger-duration) (the-as int (-> arg0 linger-duration)))
(set! (-> self duration) (the-as uint arg1))
(set! (-> self linger-duration) (-> arg0 linger-duration))
(set! (-> self part) (create-launch-control arg0 self))
(go part-tracker-process)
(none)
+2 -2
View File
@@ -393,8 +393,8 @@
(dummy-20 () none 20)
(dummy-21 () none 21)
(dummy-22 () none 22)
(dummy-23 () none 23)
(dummy-24 (_type_ float symbol) none 24)
(dummy-23 (_type_ vector check-vector-collision-with-nav-spheres-info) float 23)
(dummy-24 (_type_ float clip-travel-vector-to-mesh-return-info) none 24)
(dummy-25 (_type_ vector float) symbol 25)
(dummy-26 (_type_) none 26)
(dummy-27 () none 27)
+2
View File
@@ -118,6 +118,7 @@
(damping float :offset-assert 16)
(accel float :offset-assert 20)
)
:pack-me
:method-count-assert 11
:size-assert #x18
:flag-assert #xb00000018
@@ -147,6 +148,7 @@
(elasticity float :offset-assert 32)
(state int32 :offset-assert 36)
)
:pack-me
:method-count-assert 13
:size-assert #x28
:flag-assert #xd00000028
File diff suppressed because it is too large Load Diff
+4 -8
View File
@@ -37,7 +37,7 @@
:size-assert #x28
:flag-assert #xd00000028
(:methods
(new (symbol _type_ int int float float float float) _type_ 0)
(new (symbol type int int float float float float) _type_ 0)
(TODO-RENAME-9 (_type_ int int float) none 9)
(set-target! (_type_ float) none 10)
(TODO-RENAME-11 (_type_) none 11)
@@ -66,7 +66,7 @@
new
twister
((allocation symbol)
(type-to-make twister)
(type-to-make type)
(arg0 int)
(arg1 int)
(arg2 float)
@@ -78,8 +78,8 @@
(v0-0
(object-new
allocation
(the-as type type-to-make)
(the-as int (+ (-> type-to-make something) (* gp-0 16)))
type-to-make
(the-as int (+ (-> type-to-make size) (* gp-0 16)))
)
)
)
@@ -216,7 +216,3 @@
0
(none)
)
File diff suppressed because it is too large Load Diff
+163
View File
@@ -0,0 +1,163 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type citb-bunny
(deftype citb-bunny (snow-bunny)
()
:heap-base #x190
:method-count-assert 77
:size-assert #x200
:flag-assert #x4d01900200
(:methods
(TODO-RENAME-48 (_type_ object) none :replace 48)
)
)
;; definition for method 3 of type citb-bunny
(defmethod inspect citb-bunny ((obj citb-bunny))
(let ((t9-0 (method-of-type snow-bunny inspect)))
(t9-0 obj)
)
obj
)
;; failed to figure out what this is:
(defskelgroup *citb-bunny-sg* citb-bunny
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 0.25 0 2)
:longest-edge (meters 0)
)
;; definition for symbol *citb-bunny-nav-enemy-info*, type nav-enemy-info
(define
*citb-bunny-nav-enemy-info*
(new 'static 'nav-enemy-info
:idle-anim 3
:walk-anim 3
:turn-anim 3
:notice-anim 7
:run-anim 3
:jump-anim 5
:jump-land-anim 8
:victory-anim 7
:taunt-anim 7
:die-anim 9
: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 (seconds 0.1)
:walk-travel-speed (meters 4.0)
:walk-rotate-speed (degrees 720.0)
:walk-acceleration (meters 1.0)
:walk-turn-time (seconds 0.5)
:shadow-size (meters 2.0)
:notice-nav-radius (meters 1.2)
:nav-nearest-y-threshold (meters 10.0)
:notice-distance (meters 130.0)
:stop-chase-distance (meters 150.0)
:frustration-distance (meters 8.0)
:frustration-time #x4b0
:die-anim-hold-frame 31.0
:jump-anim-start-frame 11.0
:jump-land-anim-end-frame 10000000000.0
:jump-height-min (meters 1.0)
:jump-height-factor 0.6
:jump-start-anim-speed 1.0
:shadow-max-y (meters 0.25)
:shadow-min-y (meters -3.5)
:shadow-locus-dist (meters 150.0)
:use-align #f
:draw-shadow #t
: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 60 of type citb-bunny
;; INFO: Return type mismatch int vs symbol.
(defmethod dummy-60 citb-bunny ((obj citb-bunny) (arg0 object))
(initialize-skeleton obj *citb-bunny-sg* '())
(set! (-> obj draw origin-joint-index) (the-as uint 3))
(the-as symbol 0)
)
;; definition for method 48 of type citb-bunny
;; INFO: Return type mismatch int vs none.
(defmethod TODO-RENAME-48 citb-bunny ((obj citb-bunny) (arg0 object))
(dummy-60 obj arg0)
(TODO-RENAME-45 obj *citb-bunny-nav-enemy-info*)
(set!
(-> obj draw shadow-ctrl settings flags)
(logand -9 (-> obj draw shadow-ctrl settings flags))
)
(cond
((zero? (res-lump-value (-> obj entity) 'mode uint128))
(set! (-> obj defense) (the-as uint 1))
(set! (-> obj retreat-timeout) 5.0)
)
(else
(set! (-> obj defense) (the-as uint 0))
(set! (-> obj retreat-timeout) 0.1)
)
)
(set!
(-> obj last-nondangerous-time)
(the-as uint (-> *display* base-frame-counter))
)
(set! (-> obj gnd-popup) 16384.0)
(set! (-> obj got-jump-event?) #f)
(set! (-> obj notice-land-anim) 8)
(set! (-> obj attack-anim) 4)
(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 patrol-rand-distraction) (+ (nav-enemy-rnd-int-count 5) 1))
(set! (-> obj patrol-hop-failed?) #f)
(logclear! (-> obj mask) (process-mask actor-pause))
0
(none)
)
;; definition for method 56 of type citb-bunny
(defmethod set-jump-height-factor! citb-bunny ((obj citb-bunny) (arg0 int))
(let ((v1-0 arg0))
(cond
((zero? v1-0)
(set! (-> obj jump-anim) 6)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-1 0.6))
(set! (-> obj jump-height-factor) f0-1)
f0-1
)
)
((= v1-0 1)
(set! (-> obj jump-anim) 5)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-3 0.6))
(set! (-> obj jump-height-factor) f0-3)
f0-3
)
)
((= v1-0 2)
(set! (-> obj jump-anim) 5)
(set! (-> obj jump-height-min) 4096.0)
(let ((f0-5 0.4))
(set! (-> obj jump-height-factor) f0-5)
f0-5
)
)
)
)
)
+5 -5
View File
@@ -207,11 +207,11 @@
(dummy-53 (_type_) symbol 53)
(dummy-54 (_type_) none 54)
(dummy-55 (_type_) none 55)
(dummy-56 (_type_) none 56)
(dummy-57 (_type_) none 57)
(dummy-58 (_type_) none 58)
(set-jump-height-factor! (_type_ int) float 56)
(dummy-57 (_type_) vector 57)
(dummy-58 (_type_) vector 58)
(TODO-RENAME-59 (_type_) none 59)
(dummy-60 (_type_) none 60)
(dummy-60 (_type_ object) symbol 60)
(dummy-61 (_type_) none 61)
(dummy-62 (_type_) none 62)
(dummy-63 (_type_) none 63)
@@ -222,7 +222,7 @@
(dummy-68 (_type_) none 68)
(dummy-69 (_type_) none 69)
(dummy-70 (_type_) none 70)
(dummy-71 (_type_) none 71)
(dummy-71 () _type_ :state 71)
(nav-enemy-touch-handler (_type_ process event-message-block) object 72)
(nav-enemy-attack-handler (_type_ process event-message-block) object 73)
(nav-enemy-jump-blocked () _type_ :state 74)
+5 -1
View File
@@ -566,7 +566,11 @@ nav-enemy-default-event-handler
(set! (-> self nav travel quad) (-> gp-1 quad))
)
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(vector+!
(-> self nav target-pos)
(-> self collide-info trans)
+1 -1
View File
@@ -308,7 +308,7 @@
(the-as part-tracker (-> self particles gp-0 tracker process 0))
start-time
)
(-> *display* base-frame-counter)
(the-as uint (-> *display* base-frame-counter))
)
)
((-> self particles gp-0 kind)
+230
View File
@@ -0,0 +1,230 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type floating-launcher
(deftype floating-launcher (baseplat)
((trigger-height float :offset-assert 228)
(launcher (pointer launcher) :offset-assert 232)
)
:heap-base #x80
:method-count-assert 27
:size-assert #xec
:flag-assert #x1b008000ec
(:states
floating-launcher-idle
floating-launcher-lowering
floating-launcher-ready
)
)
;; definition for method 3 of type floating-launcher
(defmethod inspect floating-launcher ((obj floating-launcher))
(let ((t9-0 (method-of-type baseplat inspect)))
(t9-0 obj)
)
(format #t "~T~Ttrigger-height: ~f~%" (-> obj trigger-height))
(format #t "~T~Tlauncher: #x~X~%" (-> obj launcher))
obj
)
;; failed to figure out what this is:
(defskelgroup *floating-launcher-sg* floating-launcher
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 5)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate floating-launcher-idle (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(behavior ()
(plat-trans)
(when
(<
(vector-xz-length
(vector-!
(new 'stack-no-clear 'vector)
(target-pos 0)
(-> self root-override trans)
)
)
81920.0
)
(if
(and
(>= (-> (target-pos 0) y) (-> self trigger-height))
(logtest? (-> *target* control status) 2)
)
(go floating-launcher-lowering)
)
)
(none)
)
:code
(behavior ()
(transform-post)
(suspend)
(transform-post)
(suspend)
(while #t
(suspend)
)
(none)
)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
;; failed to figure out what this is:
(defstate floating-launcher-lowering (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(the-as (function none :behavior floating-launcher) plat-trans)
:code
(behavior ()
(let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0)))
(if a0-1
(entity-birth-no-kill a0-1)
)
)
(let ((f30-0 1.0))
(while (!= f30-0 0.0)
(set! f30-0 (seek f30-0 0.0 (-> *display* seconds-per-frame)))
(eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp)
(set!
(-> self launcher 0 root-override trans quad)
(-> self basetrans quad)
)
(dummy-47 (-> self launcher 0 root-override))
(suspend)
)
)
(eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp)
(set! (-> self launcher 0 root-override trans quad) (-> self basetrans quad))
(dummy-47 (-> self launcher 0 root-override))
(go floating-launcher-ready)
(none)
)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
;; failed to figure out what this is:
(defstate floating-launcher-ready (floating-launcher)
:event
(the-as
(function process int symbol event-message-block object :behavior floating-launcher)
plat-event
)
:trans
(the-as (function none :behavior floating-launcher) plat-trans)
:code
(the-as (function none :behavior floating-launcher) plat-code)
:post
(the-as (function none :behavior floating-launcher) plat-post)
)
;; definition for method 11 of type floating-launcher
;; INFO: Return type mismatch object vs none.
(defmethod
copy-defaults!
floating-launcher
((obj floating-launcher) (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)
(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) 0)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8)
)
(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 path) (new 'process 'path-control obj 'path 0.0))
(logior!
(-> obj path flags)
(path-control-flag display draw-line draw-point draw-text)
)
(eval-path-curve-div! (-> obj path) (-> obj root-override trans) 1.0 'interp)
(let ((f30-0 (res-lump-float arg0 'spring-height :default 163840.0))
(s4-1 (get-process *default-dead-pool* launcher #x4000))
)
(set! (-> obj launcher) (the-as (pointer launcher) (when s4-1
(let
((t9-11
(method-of-type
launcher
activate
)
)
)
(t9-11
(the-as launcher s4-1)
obj
'launcher
(the-as
pointer
#x70004000
)
)
)
(run-now-in-process
s4-1
launcher-init-by-other
(->
obj
root-override
trans
)
f30-0
0
81920.0
)
(-> s4-1 ppointer)
)
)
)
)
(initialize-skeleton obj *floating-launcher-sg* '())
(logior! (-> obj skel status) 1)
(dummy-47 (-> obj root-override))
(dummy-21 obj)
(set! (-> obj trigger-height) (res-lump-float arg0 'trigger-height))
(go floating-launcher-idle)
(none)
)
+194
View File
@@ -0,0 +1,194 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type shover
(deftype shover (process-drawable)
((root-override collide-shape :offset 112)
(shove-up float :offset-assert 176)
)
:heap-base #x50
:method-count-assert 20
:size-assert #xb4
:flag-assert #x14005000b4
(:states
shover-idle
)
)
;; definition for method 3 of type shover
(defmethod inspect shover ((obj shover))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tshove-up: ~f~%" (-> obj shove-up))
obj
)
;; failed to figure out what this is:
(defskelgroup *shover-sg* shover
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 2)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(defstate shover-idle (shover)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('touch 'attack)
(when (= (-> arg0 type) target)
(when
((method-of-type touching-shapes-entry dummy-13)
(the-as touching-shapes-entry (-> arg3 param 0))
(-> *target* control)
1
0
)
(let ((s4-0 (new 'stack 'attack-info)))
(dummy-41 (-> self root-override) s4-0 (-> self shove-up))
(level-hint-spawn
(game-text-id sunken-take-it-easy-hot-pipes)
"sksp0134"
(the-as entity #f)
*entity-pool*
(game-task none)
)
(cond
((or
(= (-> *target* control unknown-surface00 mode) 'air)
(>=
(+ (-> *display* base-frame-counter) -60)
(-> *target* control unknown-dword10)
)
(< 0.75 (-> *target* control poly-normal y))
)
(let ((a1-6 (new 'stack-no-clear 'event-message-block)))
(set! (-> a1-6 from) self)
(set! (-> a1-6 num-params) 2)
(set! (-> a1-6 message) 'attack-or-shove)
(set! (-> a1-6 param 0) (-> arg3 param 0))
(let ((v1-22 (new 'static 'attack-info :mask #xa2)))
(set! (-> v1-22 mode) 'burn)
(set! (-> v1-22 vector quad) (-> s4-0 vector quad))
(set! (-> v1-22 shove-up) (-> s4-0 shove-up))
(set! (-> a1-6 param 1) (the-as uint v1-22))
)
(send-event-function arg0 a1-6)
)
)
(else
(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) 'attack-or-shove)
(set! (-> a1-7 param 0) (-> arg3 param 0))
(let ((v1-26 (new 'static 'attack-info :mask #x8e2)))
(set! (-> v1-26 mode) 'burn)
(set! (-> v1-26 shove-up) 0.0)
(set! (-> v1-26 shove-back) 8192.0)
(set!
(-> v1-26 vector quad)
(-> *target* control poly-normal quad)
)
(set! (-> v1-26 angle) 'shove)
(set! (-> a1-7 param 1) (the-as uint v1-26))
)
(send-event-function arg0 a1-7)
)
)
)
)
)
)
)
)
)
:code
(the-as (function none :behavior shover) anim-loop)
)
;; definition for method 11 of type shover
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod copy-defaults! shover ((obj shover) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj shove-up) (res-lump-float arg0 'shove :default 12288.0))
(let ((s3-0 (res-lump-value arg0 'collision-mesh-id uint128))
(s4-0
(new 'process 'collide-shape obj (collide-list-enum hit-by-player))
)
)
(let
((s3-1
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint s3-0)
(the-as uint 0)
)
)
)
(set! (-> s3-1 prim-core collide-as) (the-as uint 512))
(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) 4)
(set! (-> s3-1 transform-index) 0)
(set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.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)
(initialize-skeleton obj *shover-sg* '())
(let ((v1-17 (new 'process 'path-control obj 'path 0.0)))
(set! (-> obj path) v1-17)
(logior!
(-> v1-17 flags)
(path-control-flag display draw-line draw-point draw-text)
)
(if (<= (-> v1-17 curve num-cverts) 0)
(go process-drawable-art-error "no path")
)
)
(set! sv-16 (new 'static 'res-tag))
(let
((v1-23
(res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16))
)
)
(when v1-23
(+! (-> obj root-override trans x) (-> v1-23 0))
(+! (-> obj root-override trans y) (-> v1-23 1))
(+! (-> obj root-override trans z) (-> v1-23 2))
)
)
(let ((f0-13 (res-lump-float arg0 'rotoffset)))
(if (!= f0-13 0.0)
(quaternion-rotate-y!
(-> obj root-override quat)
(-> obj root-override quat)
f0-13
)
)
)
(ja-channel-set! 1)
(let ((s5-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(set! *shover* obj)
(go shover-idle)
(none)
)
File diff suppressed because it is too large Load Diff
+625
View File
@@ -0,0 +1,625 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type sun-iris-door
(deftype sun-iris-door (process-drawable)
((root-override collide-shape :offset 112)
(timeout float :offset-assert 176)
(proximity? symbol :offset-assert 180)
(directional-proximity? symbol :offset-assert 184)
(move-to? symbol :offset-assert 188)
(locked-by-task? symbol :offset-assert 192)
(close-dist float :offset-assert 196)
(open-dist float :offset-assert 200)
(move-to-pos vector :inline :offset-assert 208)
(outward-vec vector :inline :offset-assert 224)
(move-to-quat quaternion :inline :offset-assert 240)
)
:heap-base #x90
:method-count-assert 22
:size-assert #x100
:flag-assert #x1600900100
(:methods
(should-close? (_type_) symbol 20)
(should-open? (_type_) symbol 21)
)
(:states
sun-iris-door-closed
sun-iris-door-closing
sun-iris-door-open
sun-iris-door-opening
)
)
;; definition for method 3 of type sun-iris-door
(defmethod inspect sun-iris-door ((obj sun-iris-door))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Ttimeout: ~f~%" (-> obj timeout))
(format #t "~T~Tproximity?: ~A~%" (-> obj proximity?))
(format #t "~T~Tdirectional-proximity?: ~A~%" (-> obj directional-proximity?))
(format #t "~T~Tmove-to?: ~A~%" (-> obj move-to?))
(format #t "~T~Tlocked-by-task?: ~A~%" (-> obj locked-by-task?))
(format #t "~T~Tclose-dist: ~f~%" (-> obj close-dist))
(format #t "~T~Topen-dist: ~f~%" (-> obj open-dist))
(format #t "~T~Tmove-to-pos: #<vector @ #x~X>~%" (-> obj move-to-pos))
(format #t "~T~Toutward-vec: #<vector @ #x~X>~%" (-> obj outward-vec))
(format #t "~T~Tmove-to-quat: #<quaternion @ #x~X>~%" (-> obj move-to-quat))
obj
)
;; failed to figure out what this is:
(defskelgroup *sun-iris-door-sg* sun-iris-door
0
3
((1 (meters 999999)))
:bounds (static-spherem 0 0 0 4.5)
:longest-edge (meters 0)
)
;; definition for method 21 of type sun-iris-door
(defmethod should-open? sun-iris-door ((obj sun-iris-door))
(let ((f30-0 1228800.0))
0.0
(let ((f0-7 (cond
((-> obj directional-proximity?)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(when *target*
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec))))
)
(vector-! s5-0 (camera-pos) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(fabs (vector-dot s5-0 (-> obj outward-vec)))
)
)
(else
(if *target*
(set!
f30-0
(vector-vector-xz-distance
(-> obj root-override trans)
(target-pos 0)
)
)
)
(vector-vector-xz-distance
(-> obj root-override trans)
(camera-pos)
)
)
)
)
)
(when (or (>= (-> obj open-dist) f30-0) (>= (-> obj open-dist) f0-7))
(if
(or
(not (-> obj locked-by-task?))
(task-complete? *game-info* (-> obj entity extra perm task))
)
(return #t)
)
)
)
)
#f
)
;; failed to figure out what this is:
(defstate sun-iris-door-closed (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(go sun-iris-door-opening)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:trans
(behavior ()
(when (-> self proximity?)
(if (should-open? self)
(go sun-iris-door-opening)
)
)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(behavior ()
(when (-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(none)
)
)
;; failed to figure out what this is:
(defstate sun-iris-door-opening (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('untrigger)
(go sun-iris-door-closing)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:code
(behavior ()
(sound-play-by-name
(static-sound-name "irisdoor2")
(new-sound-id)
1024
0
0
1
#t
)
(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!
a0-2
(the-as art-joint-anim #f)
num-func-seek!
)
)
(until (ja-done? 0)
(suspend)
(let ((a0-3 (-> self skel root-channel 0)))
(set!
(-> a0-3 param 0)
(the float (+ (-> a0-3 frame-group data 0 length) -1))
)
(set! (-> a0-3 param 1) 1.0)
(joint-control-channel-group-eval!
a0-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(ja-post)
(go sun-iris-door-open)
(none)
)
:post
(behavior ()
(cond
((-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(else
(transform-post)
)
)
(none)
)
)
;; definition for method 20 of type sun-iris-door
(defmethod should-close? sun-iris-door ((obj sun-iris-door))
(let ((f30-0 1228800.0))
0.0
(let ((f0-7 (cond
((-> obj directional-proximity?)
(let ((s5-0 (new 'stack-no-clear 'vector)))
(when *target*
(vector-! s5-0 (target-pos 0) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(set! f30-0 (fabs (vector-dot s5-0 (-> obj outward-vec))))
)
(vector-! s5-0 (camera-pos) (-> obj root-override trans))
(set! (-> s5-0 y) 0.0)
(fabs (vector-dot s5-0 (-> obj outward-vec)))
)
)
(else
(if *target*
(set!
f30-0
(vector-vector-xz-distance
(-> obj root-override trans)
(target-pos 0)
)
)
)
(vector-vector-xz-distance
(-> obj root-override trans)
(camera-pos)
)
)
)
)
)
(when (and (>= f30-0 (-> obj close-dist)) (>= f0-7 (-> obj close-dist)))
(cond
((and *target* (-> obj directional-proximity?))
(let ((s4-6 (new 'stack-no-clear 'vector))
(s5-3 (new 'stack-no-clear 'vector))
)
(vector-! s4-6 (target-pos 0) (-> obj root-override trans))
(set! (-> s4-6 y) 0.0)
(vector-! s5-3 (camera-pos) (-> obj root-override trans))
(set! (-> s5-3 y) 0.0)
(case (>= (vector-dot (-> obj outward-vec) s4-6) 0.0)
(((>= (vector-dot (-> obj outward-vec) s5-3) 0.0))
(return #t)
)
)
)
)
(else
(return #t)
)
)
)
)
)
#f
)
;; failed to figure out what this is:
(defstate sun-iris-door-open (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(let ((v0-0 (the-as object (-> *display* base-frame-counter))))
(set! (-> self state-time) (the-as int v0-0))
v0-0
)
)
(('untrigger)
(go sun-iris-door-closing)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:enter
(behavior ()
(set! (-> self state-time) (-> *display* base-frame-counter))
(dummy-48 (-> self root-override))
(logior! (-> self draw status) 2)
(none)
)
:exit
(behavior ()
(dummy-49 (-> self root-override))
(set! (-> self draw status) (logand -3 (-> self draw status)))
(none)
)
:trans
(behavior ()
(when (-> self proximity?)
(if (should-close? self)
(go sun-iris-door-closing)
)
)
(if
(and
(!= (-> self timeout) 0.0)
(>=
(- (-> *display* base-frame-counter) (-> self state-time))
(the int (* 300.0 (-> self timeout)))
)
)
(go sun-iris-door-closing)
)
(none)
)
:code
(behavior ()
(while #t
(logior! (-> self mask) (process-mask sleep-code))
(suspend)
)
(none)
)
:post
(behavior ()
(when (-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(none)
)
)
;; failed to figure out what this is:
(defstate sun-iris-door-closing (sun-iris-door)
:event
(behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block))
(case arg2
(('trigger)
(go sun-iris-door-opening)
)
(('move-to)
(set! (-> self move-to?) #t)
(set!
(-> self move-to-pos quad)
(-> (the-as vector (-> arg3 param 0)) quad)
)
(quaternion-copy!
(-> self move-to-quat)
(the-as quaternion (-> arg3 param 1))
)
)
)
)
:code
(behavior ()
(sound-play-by-name
(static-sound-name "irisdoor2")
(new-sound-id)
1024
0
0
1
#t
)
(let ((a0-2 (-> self skel root-channel 0)))
(set! (-> a0-2 param 0) 0.0)
(set! (-> a0-2 param 1) 1.0)
(joint-control-channel-group!
a0-2
(the-as art-joint-anim #f)
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) 1.0)
(joint-control-channel-group-eval!
a0-3
(the-as art-joint-anim #f)
num-func-seek!
)
)
)
(ja-post)
(go sun-iris-door-closed)
(none)
)
:post
(behavior ()
(cond
((-> self move-to?)
(set! (-> self move-to?) #f)
(TODO-RENAME-30 (-> self root-override) (-> self move-to-pos))
(quaternion-copy! (-> self root-override quat) (-> self move-to-quat))
(ja-post)
)
(else
(transform-post)
)
)
(none)
)
)
;; definition for method 11 of type sun-iris-door
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod copy-defaults! sun-iris-door ((obj sun-iris-door) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj move-to?) #f)
(let
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others))))
(let
((s3-0
(new
'process
'collide-shape-prim-mesh
s4-0
(the-as uint 0)
(the-as uint 0)
)
)
)
(set! (-> s3-0 prim-core collide-as) (the-as uint 512))
(set! (-> s3-0 collide-with) (the-as uint 16))
(set! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set! (-> s3-0 transform-index) 0)
(set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.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)
(initialize-skeleton obj *sun-iris-door-sg* '())
(set! (-> obj close-dist) 49152.0)
(set! (-> obj open-dist) 40960.0)
(set! (-> obj timeout) (res-lump-float arg0 'timeout))
(set! (-> obj proximity?) (nonzero? (res-lump-value arg0 'proximity uint128)))
(set! (-> obj directional-proximity?) #f)
(when (name= (-> obj name) "sun-iris-door-6")
(set! (-> obj close-dist) 16384.0)
(set! (-> obj open-dist) 8192.0)
(set! (-> obj directional-proximity?) #t)
)
(set! (-> obj locked-by-task?) (nonzero? (-> obj entity extra perm task)))
(let ((f0-11 (res-lump-float arg0 'scale-factor :default 1.0)))
(set-vector! (-> obj root-override scale) f0-11 f0-11 f0-11 1.0)
(set! (-> obj draw bounds w) (* 18432.0 f0-11))
(let ((v1-25 (-> obj root-override root-prim)))
(set! (-> v1-25 local-sphere w) (* 24576.0 f0-11 f0-11))
)
)
(set! sv-16 (new 'static 'res-tag))
(let
((v1-28
(res-lump-data
(-> obj entity)
'trans-offset
(pointer float)
:tag-ptr
(& sv-16)
)
)
)
(when v1-28
(+! (-> obj root-override trans x) (-> v1-28 0))
(+! (-> obj root-override trans y) (-> v1-28 1))
(+! (-> obj root-override trans z) (-> v1-28 2))
)
)
(let ((f30-0 (quaternion-y-angle (-> obj root-override quat))))
(set-vector! (-> obj outward-vec) (sin f30-0) 0.0 (cos f30-0) 1.0)
)
(ja-channel-set! 1)
(let ((s5-2 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-2
(the-as art-joint-anim (-> obj draw art-group data 3))
num-func-identity
)
(set! (-> s5-2 frame-num) 0.0)
)
(dummy-47 (-> obj root-override))
(ja-post)
(go sun-iris-door-closed)
(none)
)
;; definition for function sun-iris-door-init-by-other
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defbehavior
sun-iris-door-init-by-other sun-iris-door
((arg0 vector) (arg1 quaternion) (arg2 symbol))
(set! (-> self move-to?) #f)
(let
((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others))))
(let
((s2-0
(new
'process
'collide-shape-prim-mesh
s3-0
(the-as uint 0)
(the-as uint 0)
)
)
)
(set! (-> s2-0 prim-core collide-as) (the-as uint 512))
(set! (-> s2-0 collide-with) (the-as uint 16))
(set! (-> s2-0 prim-core action) (the-as uint 1))
(set! (-> s2-0 prim-core offense) 4)
(set! (-> s2-0 transform-index) 0)
(set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0)
)
(dummy-46 s3-0)
(set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w)))
(dummy-50 s3-0)
(set! (-> self root-override) s3-0)
)
(set! (-> self root-override trans quad) (-> arg0 quad))
(quaternion-copy! (-> self root-override quat) arg1)
(initialize-skeleton self *sun-iris-door-sg* '())
(set! (-> self close-dist) 49152.0)
(set! (-> self open-dist) 40960.0)
(set! (-> self timeout) 0.0)
(set! (-> self proximity?) #f)
(set! (-> self directional-proximity?) #f)
(ja-channel-set! 1)
(cond
(arg2
(let ((s5-1 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> self draw art-group data 3))
num-func-identity
)
(set!
(-> s5-1 frame-num)
(the
float
(+
(->
(the-as art-joint-anim (-> self draw art-group data 3))
data
0
length
)
-1
)
)
)
)
)
(else
(let ((s5-2 (-> self skel root-channel 0)))
(joint-control-channel-group-eval!
s5-2
(the-as art-joint-anim (-> self draw art-group data 3))
num-func-identity
)
(set! (-> s5-2 frame-num) 0.0)
)
)
)
(transform-post)
(if arg2
(go sun-iris-door-open)
(go sun-iris-door-closed)
)
(none)
)
+515
View File
@@ -0,0 +1,515 @@
;;-*-Lisp-*-
(in-package goal)
;; definition of type whirlpool
(deftype whirlpool (process-drawable)
((root-override collide-shape :offset 112)
(spin-ry float :offset-assert 176)
(spin-speed-idle float :offset-assert 180)
(spin-speed-delta float :offset-assert 184)
(sync sync-info-paused :inline :offset-assert 188)
)
:heap-base #x60
:method-count-assert 21
:size-assert #xcc
:flag-assert #x15006000cc
(:methods
(dummy-20 (_type_ float) uint 20)
)
(:states
whirlpool-idle
)
)
;; definition for method 3 of type whirlpool
(defmethod inspect whirlpool ((obj whirlpool))
(let ((t9-0 (method-of-type process-drawable inspect)))
(t9-0 obj)
)
(format #t "~T~Tspin-ry: ~f~%" (-> obj spin-ry))
(format #t "~T~Tspin-speed-idle: ~f~%" (-> obj spin-speed-idle))
(format #t "~T~Tspin-speed-delta: ~f~%" (-> obj spin-speed-delta))
(format #t "~T~Tsync: #<sync-info-paused @ #x~X>~%" (-> obj sync))
obj
)
;; failed to figure out what this is:
(defskelgroup *whirlpool-sg* whirlpool
0
2
((1 (meters 999999)))
:bounds (static-spherem 0 0.6000000238418579 0 3)
:longest-edge (meters 0)
)
;; failed to figure out what this is:
(set!
(-> *part-group-id-table* 447)
(new 'static 'sparticle-launch-group
:length #xbb
:duration #xbb8
:linger-duration #x5dc
:flags (sp-group-flag use-local-clock)
:name "group-whirlpool-swirl"
:launcher
(new 'static 'inline-array sparticle-group-item 187
(sp-item 1739 :fade-after (meters 60.0) :falloff-to (meters 60.0) :binding 1737)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738)
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
(sp-item 1738 :flags (bit1 start-dead))
)
:bounds (new 'static 'sphere :w 32768.0)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1739)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 11
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-y (meters 6.6))
(sp-flt spt-scale-x (meters 0.2))
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-g 0.0)
(sp-flt spt-a 128.0)
(sp-flt spt-accel-y -0.68266666)
(sp-int spt-timer 510)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1737)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 22
(sp-tex spt-texture (new 'static 'texture-id :page #x2))
(sp-flt spt-num 1.0)
(sp-flt spt-x (meters 0.0))
(sp-flt spt-y (meters 0.0))
(sp-rnd-flt spt-z 16384.0 4096.0 1.0)
(sp-flt spt-scale-x (meters 3.2))
(sp-flt spt-scale-y (meters 1.0))
(sp-flt spt-r 150.0)
(sp-flt spt-g 150.0)
(sp-flt spt-b 255.0)
(sp-flt spt-a 0.0)
(sp-rnd-flt spt-omega 0.0 65536.0 1.0)
(sp-flt spt-vel-x (meters 0.053333335))
(sp-flt spt-vel-y (meters 0.0))
(sp-flt spt-vel-z (meters -0.01))
(sp-flt spt-scalevel-x (meters -0.004888889))
(sp-flt spt-fade-a 0.42666668)
(sp-int spt-timer 450)
(sp-cpuinfo-flags bit2 bit3 bit7)
(sp-int-plain-rnd spt-next-time 37 36 1)
(sp-launcher-by-id spt-next-launcher 1740)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1740)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 2
(sp-flt spt-fade-a 0.0)
(sp-end)
)
)
)
;; failed to figure out what this is:
(set!
(-> *part-id-table* 1738)
(new 'static 'sparticle-launcher
:init-specs
(new 'static 'inline-array sp-field-init-spec 12
(sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2))
(sp-flt spt-num 1.0)
(sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0)
(sp-copy-from-other spt-scale-y -4)
(sp-flt spt-r 255.0)
(sp-flt spt-g 255.0)
(sp-flt spt-b 255.0)
(sp-rnd-flt spt-a 32.0 32.0 1.0)
(sp-flt spt-fade-a -1.8285716)
(sp-int spt-timer 30)
(sp-cpuinfo-flags bit2 bit3)
(sp-end)
)
)
)
;; definition for method 20 of type whirlpool
(defmethod dummy-20 whirlpool ((obj whirlpool) (arg0 float))
(let* ((gp-0 (target-pos 0))
(f28-0 (vector-vector-xz-distance (-> obj root-override trans) gp-0))
)
(when (< f28-0 40960.0)
(let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0)))
(f26-0 (* f0-2 f0-2))
(f0-7
(atan
(- (-> gp-0 x) (-> obj root-override trans x))
(- (-> gp-0 z) (-> obj root-override trans z))
)
)
(f30-0 (* 0.5 f26-0 arg0 (-> *display* seconds-per-frame)))
(f24-0 (+ f0-7 f30-0))
(f28-1
(-
f28-0
(fmin
f28-0
(* 0.16874999 f26-0 (fabs arg0) (-> *display* seconds-per-frame))
)
)
)
(s4-1 (new 'stack-no-clear 'vector))
)
(set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0)
(vector+! s4-1 s4-1 (-> obj root-override trans))
(set!
(-> s4-1 x)
(* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second))
)
(set! (-> s4-1 y) 0.0)
(set!
(-> s4-1 z)
(* (- (-> s4-1 z) (-> gp-0 z)) (-> *display* frames-per-second))
)
(let ((gp-1 (-> *target* control)))
(send-event (-> gp-1 process) 'rotate-y-angle f30-0)
(dummy-32 gp-1 8192.0 (-> gp-1 root-prim collide-with))
(let ((s3-0 (-> gp-1 status)))
(dummy-37 gp-1 s4-1)
(set! (-> gp-1 status) s3-0)
s3-0
)
)
)
)
)
)
;; failed to figure out what this is:
(defstate whirlpool-idle (whirlpool)
:trans
(behavior ()
(let
((f30-0
(+
(*
(get-current-phase-with-mirror (-> self sync))
(-> self spin-speed-delta)
)
(-> self spin-speed-idle)
)
)
)
(when (>= (fabs f30-0) 45511.11)
(let ((a1-0 (new 'stack-no-clear 'vector)))
(set! (-> a1-0 quad) (-> self root-override trans quad))
(set! (-> a1-0 y) (+ -8192.0 (-> a1-0 y)))
(spawn (-> self part) a1-0)
)
)
(+! (-> self spin-ry) (* f30-0 (-> *display* seconds-per-frame)))
(quaternion-axis-angle!
(-> self root-override quat)
0.0
1.0
0.0
(-> self spin-ry)
)
(if (and *target* (logtest? (-> *target* water flags) 512))
(dummy-20 self f30-0)
)
(update! (-> self sound))
(let
((f0-9
(fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0)))))
)
)
(update-vol! (-> self sound) (the int (* 100.0 f0-9)))
)
)
(none)
)
:code
(the-as (function none :behavior whirlpool) anim-loop)
:post
(the-as (function none :behavior whirlpool) ja-post)
)
;; definition for method 10 of type whirlpool
(defmethod deactivate whirlpool ((obj whirlpool))
(if (nonzero? (-> obj sound))
(stop! (-> obj sound))
)
((method-of-type process-drawable deactivate) obj)
(none)
)
;; definition for method 11 of type whirlpool
;; INFO: Return type mismatch object vs none.
;; Used lq/sq
(defmethod copy-defaults! whirlpool ((obj whirlpool) (arg0 res-lump))
(local-vars (sv-16 res-tag))
(set! (-> obj spin-ry) (rand-vu-float-range 0.0 65536.0))
(let
((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))))
(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! (-> s3-0 prim-core action) (the-as uint 1))
(set! (-> s3-0 prim-core offense) 4)
(set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8)
)
(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)
(initialize-skeleton obj *whirlpool-sg* '())
(load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15)
(let ((f30-0 32768.0)
(f28-0 145635.56)
)
(set! sv-16 (new 'static 'res-tag))
(let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16))))
(when v1-17
(set! f30-0 (-> v1-17 0))
(set! f28-0 (-> v1-17 1))
)
)
(set! (-> obj spin-speed-idle) f30-0)
(set! (-> obj spin-speed-delta) (- f28-0 f30-0))
)
(set!
(-> obj part)
(create-launch-control (-> *part-group-id-table* 447) obj)
)
(set!
(-> obj sound)
(new
'process
'ambient-sound
(new 'static 'sound-spec
:mask #x80
:num 1.0
:group #x1
:sound-name (static-sound-name "whirlpool")
:volume #x400
:fo-max 55
)
(-> obj root-override trans)
)
)
(ja-channel-set! 1)
(let ((s5-1 (-> obj skel root-channel 0)))
(joint-control-channel-group-eval!
s5-1
(the-as art-joint-anim (-> obj draw art-group data 2))
num-func-identity
)
(set! (-> s5-1 frame-num) 0.0)
)
(ja-post)
(dummy-47 (-> obj root-override))
(go whirlpool-idle)
(none)
)
File diff suppressed because it is too large Load Diff
+1 -6
View File
@@ -901,12 +901,7 @@ swamp-rat-default-event-handler
;; Used lq/sq
(defbehavior
swamp-rat-init-by-other swamp-rat
((arg0 swamp-rat-nest)
(arg1 vector)
(arg2 vector)
(arg3 pickup-type)
(arg4 symbol)
)
((arg0 billy) (arg1 vector) (arg2 vector) (arg3 pickup-type) (arg4 symbol))
(initialize-collision self)
(if arg4
(logclear! (-> self mask) (process-mask actor-pause))
+10 -2
View File
@@ -495,7 +495,11 @@ yakow-default-event-handler
(set! (-> gp-1 y) 0.0)
(set! (-> self nav travel quad) (-> gp-1 quad))
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(when (not (-> self enable-turn-around))
(set! (-> gp-1 quad) (-> self nav travel quad))
(let ((f30-0 (vector-length gp-1)))
@@ -506,7 +510,11 @@ yakow-default-event-handler
)
(set! (-> self nav travel quad) (-> s5-1 quad))
(vector-normalize! (-> self nav travel) 409600.0)
(dummy-24 (-> self nav) 204.8 #f)
(dummy-24
(-> self nav)
204.8
(the-as clip-travel-vector-to-mesh-return-info #f)
)
(vector-length (-> self nav travel))
)
)
+5 -2
View File
@@ -892,7 +892,10 @@
((handle->process (-> self tracker))
(let
((v1-6 (-> (the-as (pointer part-tracker) (-> self tracker process)) 0)))
(set! (-> v1-6 start-time) (-> *display* base-frame-counter))
(set!
(-> v1-6 start-time)
(the-as uint (-> *display* base-frame-counter))
)
(set! v0-1 (-> v1-6 root trans))
)
(set! (-> (the-as vector v0-1) quad) (-> gp-0 quad))
@@ -1131,7 +1134,7 @@
0
start-time
)
(-> *display* base-frame-counter)
(the-as uint (-> *display* base-frame-counter))
)
)
(else