mirror of
https://github.com/open-goal/jak-project
synced 2026-05-24 15:21:12 -04:00
0cdeed9be7
* [pp2] put `define` dest on a single line * update source! * Update type_analysis.cpp * update old credits & racer code * change clang-cl args (REALLY force avx) * Update credits_REF.gc * comment small unused code * add timer to decompiler * fix unnecessary copy-constructors (no speed increase) * fixes * Update expression_build.cpp * wtf is this thing anyway * im bored. * clang * fix! * Revert "fix!" This reverts commit5b1ce6c718. * Revert "clang" This reverts commit5e67d9ccd1. * Revert "im bored." This reverts commit070e957ce8. * Revert "Update expression_build.cpp" This reverts commitb94d092fc5. * Revert "fixes" This reverts commitf3d871f60a. * Revert "fix unnecessary copy-constructors (no speed increase)" This reverts commit9100725802. * Keep the random inoffensive changes * Revert "Update type_analysis.cpp" This reverts commitd2456a5c75. * Update type_analysis.cpp
1367 lines
57 KiB
Common Lisp
Vendored
Generated
1367 lines
57 KiB
Common Lisp
Vendored
Generated
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; failed to figure out what this is:
|
|
(defskelgroup *jchar-sg* eichar
|
|
0
|
|
-1
|
|
((1 (meters 999999)))
|
|
:bounds (static-spherem 0 2 0 3)
|
|
:longest-edge (meters 1)
|
|
:shadow 2
|
|
:texture-level 2
|
|
:sort 1
|
|
)
|
|
|
|
;; definition for symbol *target-shadow-control*, type shadow-control
|
|
(define *target-shadow-control*
|
|
(new 'static 'shadow-control :settings (new 'static 'shadow-settings
|
|
:center
|
|
(new 'static 'vector :w (the-as float #x2))
|
|
:shadow-dir
|
|
(new 'static 'vector :x -0.4226 :y -0.9063 :w 409600.0)
|
|
:bot-plane (new 'static 'plane :y 1.0 :w 37683.2)
|
|
:top-plane (new 'static 'plane :y 1.0 :w 4096.0)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition of type target-bank
|
|
(deftype target-bank (basic)
|
|
((jump-collide-offset meters :offset-assert 4)
|
|
(jump-height-min meters :offset-assert 8)
|
|
(jump-height-max meters :offset-assert 12)
|
|
(double-jump-height-min meters :offset-assert 16)
|
|
(double-jump-height-max meters :offset-assert 20)
|
|
(flip-jump-height-min meters :offset-assert 24)
|
|
(flip-jump-height-max meters :offset-assert 28)
|
|
(duck-jump-height-min meters :offset-assert 32)
|
|
(duck-jump-height-max meters :offset-assert 36)
|
|
(flop-jump-height-min meters :offset-assert 40)
|
|
(flop-jump-height-max meters :offset-assert 44)
|
|
(attack-jump-height-min meters :offset-assert 48)
|
|
(attack-jump-height-max meters :offset-assert 52)
|
|
(edge-grab-jump-height-min meters :offset-assert 56)
|
|
(edge-grab-jump-height-max meters :offset-assert 60)
|
|
(swim-jump-height-min meters :offset-assert 64)
|
|
(swim-jump-height-max meters :offset-assert 68)
|
|
(tube-jump-height-min meters :offset-assert 72)
|
|
(tube-jump-height-max meters :offset-assert 76)
|
|
(wheel-duration time-frame :offset-assert 80)
|
|
(wheel-jump-pre-window time-frame :offset-assert 88)
|
|
(wheel-jump-post-window time-frame :offset-assert 96)
|
|
(wheel-timeout time-frame :offset-assert 104)
|
|
(wheel-speed-min meters :offset-assert 112)
|
|
(wheel-speed-inc meters :offset-assert 116)
|
|
(wheel-flip-duration time-frame :offset-assert 120)
|
|
(wheel-flip-height meters :offset-assert 128)
|
|
(wheel-flip-dist meters :offset-assert 132)
|
|
(wheel-flip-art-height meters :offset-assert 136)
|
|
(wheel-flip-art-dist meters :offset-assert 140)
|
|
(duck-slide-distance meters :offset-assert 144)
|
|
(fall-far meters :offset-assert 148)
|
|
(fall-far-inc meters :offset-assert 152)
|
|
(attack-timeout time-frame :offset-assert 160)
|
|
(ground-timeout time-frame :offset-assert 168)
|
|
(slide-down-timeout time-frame :offset-assert 176)
|
|
(fall-timeout time-frame :offset-assert 184)
|
|
(fall-stumble-threshold meters :offset-assert 192)
|
|
(yellow-projectile-speed meters :offset-assert 196)
|
|
(hit-invulnerable-timeout time-frame :offset-assert 200)
|
|
(run-cycle-length float :offset-assert 208)
|
|
(walk-cycle-dist meters :offset-assert 212)
|
|
(walk-up-cycle-dist meters :offset-assert 216)
|
|
(walk-down-cycle-dist meters :offset-assert 220)
|
|
(walk-side-cycle-dist meters :offset-assert 224)
|
|
(run-cycle-dist meters :offset-assert 228)
|
|
(run-up-cycle-dist meters :offset-assert 232)
|
|
(run-down-cycle-dist meters :offset-assert 236)
|
|
(run-side-cycle-dist meters :offset-assert 240)
|
|
(run-wall-cycle-dist meters :offset-assert 244)
|
|
(duck-walk-cycle-dist meters :offset-assert 248)
|
|
(wade-shallow-walk-cycle-dist meters :offset-assert 252)
|
|
(wade-deep-walk-cycle-dist meters :offset-assert 256)
|
|
(smack-surface-dist meters :offset-assert 260)
|
|
(smack-surface-height meters :offset-assert 264)
|
|
(min-dive-depth meters :offset-assert 268)
|
|
(root-radius meters :offset-assert 272)
|
|
(root-offset vector :inline :offset-assert 288)
|
|
(body-radius meters :offset-assert 304)
|
|
(edge-radius meters :offset-assert 308)
|
|
(edge-offset vector :inline :offset-assert 320)
|
|
(head-radius meters :offset-assert 336)
|
|
(head-height meters :offset-assert 340)
|
|
(head-offset vector :inline :offset-assert 352)
|
|
(spin-radius meters :offset-assert 368)
|
|
(spin-offset vector :inline :offset-assert 384)
|
|
(duck-spin-radius meters :offset-assert 400)
|
|
(duck-spin-offset vector :inline :offset-assert 416)
|
|
(punch-radius meters :offset-assert 432)
|
|
(punch-offset vector :inline :offset-assert 448)
|
|
(uppercut-radius meters :offset-assert 464)
|
|
(uppercut0-offset vector :inline :offset-assert 480)
|
|
(uppercut1-offset vector :inline :offset-assert 496)
|
|
(flop-radius meters :offset-assert 512)
|
|
(flop0-offset vector :inline :offset-assert 528)
|
|
(flop1-offset vector :inline :offset-assert 544)
|
|
(stuck-time seconds :offset-assert 560)
|
|
(stuck-timeout seconds :offset-assert 568)
|
|
(stuck-distance meters :offset-assert 576)
|
|
(tongue-pull-speed-min float :offset-assert 580)
|
|
(tongue-pull-speed-max float :offset-assert 584)
|
|
(yellow-attack-timeout time-frame :offset-assert 592)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x258
|
|
:flag-assert #x900000258
|
|
)
|
|
|
|
;; definition for method 3 of type target-bank
|
|
(defmethod inspect target-bank ((obj target-bank))
|
|
(format #t "[~8x] ~A~%" obj (-> obj type))
|
|
(format #t "~Tjump-collide-offset: (meters ~m)~%" (-> obj jump-collide-offset))
|
|
(format #t "~Tjump-height-min: (meters ~m)~%" (-> obj jump-height-min))
|
|
(format #t "~Tjump-height-max: (meters ~m)~%" (-> obj jump-height-max))
|
|
(format #t "~Tdouble-jump-height-min: (meters ~m)~%" (-> obj double-jump-height-min))
|
|
(format #t "~Tdouble-jump-height-max: (meters ~m)~%" (-> obj double-jump-height-max))
|
|
(format #t "~Tflip-jump-height-min: (meters ~m)~%" (-> obj flip-jump-height-min))
|
|
(format #t "~Tflip-jump-height-max: (meters ~m)~%" (-> obj flip-jump-height-max))
|
|
(format #t "~Tduck-jump-height-min: (meters ~m)~%" (-> obj duck-jump-height-min))
|
|
(format #t "~Tduck-jump-height-max: (meters ~m)~%" (-> obj duck-jump-height-max))
|
|
(format #t "~Tflop-jump-height-min: (meters ~m)~%" (-> obj flop-jump-height-min))
|
|
(format #t "~Tflop-jump-height-max: (meters ~m)~%" (-> obj flop-jump-height-max))
|
|
(format #t "~Tattack-jump-height-min: (meters ~m)~%" (-> obj attack-jump-height-min))
|
|
(format #t "~Tattack-jump-height-max: (meters ~m)~%" (-> obj attack-jump-height-max))
|
|
(format #t "~Tedge-grab-jump-height-min: (meters ~m)~%" (-> obj edge-grab-jump-height-min))
|
|
(format #t "~Tedge-grab-jump-height-max: (meters ~m)~%" (-> obj edge-grab-jump-height-max))
|
|
(format #t "~Tswim-jump-height-min: (meters ~m)~%" (-> obj swim-jump-height-min))
|
|
(format #t "~Tswim-jump-height-max: (meters ~m)~%" (-> obj swim-jump-height-max))
|
|
(format #t "~Ttube-jump-height-min: (meters ~m)~%" (-> obj tube-jump-height-min))
|
|
(format #t "~Ttube-jump-height-max: (meters ~m)~%" (-> obj tube-jump-height-max))
|
|
(format #t "~Twheel-duration: ~D~%" (-> obj wheel-duration))
|
|
(format #t "~Twheel-jump-pre-window: ~D~%" (-> obj wheel-jump-pre-window))
|
|
(format #t "~Twheel-jump-post-window: ~D~%" (-> obj wheel-jump-post-window))
|
|
(format #t "~Twheel-timeout: ~D~%" (-> obj wheel-timeout))
|
|
(format #t "~Twheel-speed-min: (meters ~m)~%" (-> obj wheel-speed-min))
|
|
(format #t "~Twheel-speed-inc: (meters ~m)~%" (-> obj wheel-speed-inc))
|
|
(format #t "~Twheel-flip-duration: ~D~%" (-> obj wheel-flip-duration))
|
|
(format #t "~Twheel-flip-height: (meters ~m)~%" (-> obj wheel-flip-height))
|
|
(format #t "~Twheel-flip-dist: (meters ~m)~%" (-> obj wheel-flip-dist))
|
|
(format #t "~Twheel-flip-art-height: (meters ~m)~%" (-> obj wheel-flip-art-height))
|
|
(format #t "~Twheel-flip-art-dist: (meters ~m)~%" (-> obj wheel-flip-art-dist))
|
|
(format #t "~Tduck-slide-distance: (meters ~m)~%" (-> obj duck-slide-distance))
|
|
(format #t "~Tfall-far: (meters ~m)~%" (-> obj fall-far))
|
|
(format #t "~Tfall-far-inc: (meters ~m)~%" (-> obj fall-far-inc))
|
|
(format #t "~Tattack-timeout: ~D~%" (-> obj attack-timeout))
|
|
(format #t "~Tground-timeout: ~D~%" (-> obj ground-timeout))
|
|
(format #t "~Tslide-down-timeout: ~D~%" (-> obj slide-down-timeout))
|
|
(format #t "~Tfall-timeout: ~D~%" (-> obj fall-timeout))
|
|
(format #t "~Tfall-stumble-threshold: (meters ~m)~%" (-> obj fall-stumble-threshold))
|
|
(format #t "~Tyellow-projectile-speed: (meters ~m)~%" (-> obj yellow-projectile-speed))
|
|
(format #t "~Thit-invulnerable-timeout: ~D~%" (-> obj hit-invulnerable-timeout))
|
|
(format #t "~Trun-cycle-length: ~f~%" (-> obj run-cycle-length))
|
|
(format #t "~Twalk-cycle-dist: (meters ~m)~%" (-> obj walk-cycle-dist))
|
|
(format #t "~Twalk-up-cycle-dist: (meters ~m)~%" (-> obj walk-up-cycle-dist))
|
|
(format #t "~Twalk-down-cycle-dist: (meters ~m)~%" (-> obj walk-down-cycle-dist))
|
|
(format #t "~Twalk-side-cycle-dist: (meters ~m)~%" (-> obj walk-side-cycle-dist))
|
|
(format #t "~Trun-cycle-dist: (meters ~m)~%" (-> obj run-cycle-dist))
|
|
(format #t "~Trun-up-cycle-dist: (meters ~m)~%" (-> obj run-up-cycle-dist))
|
|
(format #t "~Trun-down-cycle-dist: (meters ~m)~%" (-> obj run-down-cycle-dist))
|
|
(format #t "~Trun-side-cycle-dist: (meters ~m)~%" (-> obj run-side-cycle-dist))
|
|
(format #t "~Trun-wall-cycle-dist: (meters ~m)~%" (-> obj run-wall-cycle-dist))
|
|
(format #t "~Tduck-walk-cycle-dist: (meters ~m)~%" (-> obj duck-walk-cycle-dist))
|
|
(format #t "~Twade-shallow-walk-cycle-dist: (meters ~m)~%" (-> obj wade-shallow-walk-cycle-dist))
|
|
(format #t "~Twade-deep-walk-cycle-dist: (meters ~m)~%" (-> obj wade-deep-walk-cycle-dist))
|
|
(format #t "~Tsmack-surface-dist: (meters ~m)~%" (-> obj smack-surface-dist))
|
|
(format #t "~Tsmack-surface-height: (meters ~m)~%" (-> obj smack-surface-height))
|
|
(format #t "~Tmin-dive-depth: (meters ~m)~%" (-> obj min-dive-depth))
|
|
(format #t "~Troot-radius: (meters ~m)~%" (-> obj root-radius))
|
|
(format #t "~Troot-offset: ~`vector`P~%" (-> obj root-offset))
|
|
(format #t "~Tbody-radius: (meters ~m)~%" (-> obj body-radius))
|
|
(format #t "~Tedge-radius: (meters ~m)~%" (-> obj edge-radius))
|
|
(format #t "~Tedge-offset: ~`vector`P~%" (-> obj edge-offset))
|
|
(format #t "~Thead-radius: (meters ~m)~%" (-> obj head-radius))
|
|
(format #t "~Thead-height: (meters ~m)~%" (-> obj head-height))
|
|
(format #t "~Thead-offset: ~`vector`P~%" (-> obj head-offset))
|
|
(format #t "~Tspin-radius: (meters ~m)~%" (-> obj spin-radius))
|
|
(format #t "~Tspin-offset: ~`vector`P~%" (-> obj spin-offset))
|
|
(format #t "~Tduck-spin-radius: (meters ~m)~%" (-> obj duck-spin-radius))
|
|
(format #t "~Tduck-spin-offset: ~`vector`P~%" (-> obj duck-spin-offset))
|
|
(format #t "~Tpunch-radius: (meters ~m)~%" (-> obj punch-radius))
|
|
(format #t "~Tpunch-offset: ~`vector`P~%" (-> obj punch-offset))
|
|
(format #t "~Tuppercut-radius: (meters ~m)~%" (-> obj uppercut-radius))
|
|
(format #t "~Tuppercut0-offset: ~`vector`P~%" (-> obj uppercut0-offset))
|
|
(format #t "~Tuppercut1-offset: ~`vector`P~%" (-> obj uppercut1-offset))
|
|
(format #t "~Tflop-radius: (meters ~m)~%" (-> obj flop-radius))
|
|
(format #t "~Tflop0-offset: ~`vector`P~%" (-> obj flop0-offset))
|
|
(format #t "~Tflop1-offset: ~`vector`P~%" (-> obj flop1-offset))
|
|
(format #t "~Tstuck-time: (seconds ~e)~%" (-> obj stuck-time))
|
|
(format #t "~Tstuck-timeout: (seconds ~e)~%" (-> obj stuck-timeout))
|
|
(format #t "~Tstuck-distance: (meters ~m)~%" (-> obj stuck-distance))
|
|
(format #t "~Ttongue-pull-speed-min: ~f~%" (-> obj tongue-pull-speed-min))
|
|
(format #t "~Ttongue-pull-speed-max: ~f~%" (-> obj tongue-pull-speed-max))
|
|
(format #t "~Tyellow-attack-timeout: ~D~%" (-> obj yellow-attack-timeout))
|
|
obj
|
|
)
|
|
|
|
;; definition for symbol *TARGET-bank*, type target-bank
|
|
(define *TARGET-bank* (new 'static 'target-bank
|
|
:jump-collide-offset (meters 0.7)
|
|
:jump-height-min (meters 1.01)
|
|
:jump-height-max (meters 3.5)
|
|
:double-jump-height-min (meters 1)
|
|
:double-jump-height-max (meters 2.5)
|
|
:flip-jump-height-min (meters 5)
|
|
:flip-jump-height-max (meters 7)
|
|
:duck-jump-height-min (meters 5)
|
|
:duck-jump-height-max (meters 7)
|
|
:flop-jump-height-min (meters 5)
|
|
:flop-jump-height-max (meters 7)
|
|
:attack-jump-height-min (meters 4)
|
|
:attack-jump-height-max (meters 5.5)
|
|
:edge-grab-jump-height-min (meters 1.7)
|
|
:edge-grab-jump-height-max (meters 1.7)
|
|
:swim-jump-height-min (meters 5)
|
|
:swim-jump-height-max (meters 5)
|
|
:tube-jump-height-min (meters 1.75)
|
|
:tube-jump-height-max (meters 2.5)
|
|
:wheel-duration (seconds 0.5)
|
|
:wheel-jump-pre-window (seconds 1)
|
|
:wheel-jump-post-window (seconds 0.1)
|
|
:wheel-speed-min (meters 11.5)
|
|
:wheel-speed-inc (meters 1.5)
|
|
:wheel-flip-duration (seconds 0.7)
|
|
:wheel-flip-height (meters 3.52)
|
|
:wheel-flip-dist (meters 17.3)
|
|
:wheel-flip-art-height (meters 3.2969)
|
|
:wheel-flip-art-dist (meters 12.5)
|
|
:duck-slide-distance (meters 5.75)
|
|
:fall-far (meters 30)
|
|
:fall-far-inc (meters 20)
|
|
:attack-timeout (seconds 0.3)
|
|
:ground-timeout (seconds 0.2)
|
|
:slide-down-timeout (seconds 0.2)
|
|
:fall-timeout (seconds 1)
|
|
:fall-stumble-threshold (meters 39.9)
|
|
:yellow-projectile-speed (meters 60)
|
|
:hit-invulnerable-timeout (seconds 3)
|
|
:run-cycle-length 60.0
|
|
:walk-cycle-dist (meters 2.8)
|
|
:walk-up-cycle-dist (meters 2.8)
|
|
:walk-down-cycle-dist (meters 2.8)
|
|
:walk-side-cycle-dist (meters 2.8)
|
|
:run-cycle-dist (meters 6.25)
|
|
:run-up-cycle-dist (meters 5)
|
|
:run-down-cycle-dist (meters 5)
|
|
:run-side-cycle-dist (meters 6.25)
|
|
:run-wall-cycle-dist (meters 2.8)
|
|
:duck-walk-cycle-dist (meters 3.25)
|
|
:wade-shallow-walk-cycle-dist (meters 6)
|
|
:wade-deep-walk-cycle-dist (meters 6)
|
|
:smack-surface-dist (meters 1.25)
|
|
:min-dive-depth (meters 2)
|
|
:root-radius (meters 2.2)
|
|
:root-offset (new 'static 'vector :y 4915.2 :w 1.0)
|
|
:body-radius (meters 0.7)
|
|
:edge-radius (meters 0.35)
|
|
:edge-offset
|
|
(new 'static 'vector :y 4915.2 :z 4096.0 :w 1.0)
|
|
:head-radius (meters 0.7)
|
|
:head-height (meters 1.4)
|
|
:head-offset (new 'static 'vector :y 4915.2 :w 1.0)
|
|
:spin-radius (meters 2.2)
|
|
:spin-offset (new 'static 'vector :y 6553.6 :w 1.0)
|
|
:duck-spin-radius (meters 1.2)
|
|
:duck-spin-offset (new 'static 'vector :y 4096.0 :w 1.0)
|
|
:punch-radius (meters 1.3)
|
|
:punch-offset (new 'static 'vector :y 5324.8 :w 1.0)
|
|
:uppercut-radius (meters 1)
|
|
:uppercut0-offset (new 'static 'vector :y 3276.8 :w 1.0)
|
|
:uppercut1-offset (new 'static 'vector :y 9011.2 :w 1.0)
|
|
:flop-radius (meters 1.4)
|
|
:flop0-offset (new 'static 'vector :y 3276.8 :w 1.0)
|
|
:flop1-offset (new 'static 'vector :y 9011.2 :w 1.0)
|
|
:stuck-time (seconds 0.3)
|
|
:stuck-timeout (seconds 2)
|
|
:stuck-distance (meters 0.05)
|
|
:tongue-pull-speed-min 0.15
|
|
:tongue-pull-speed-max 0.22
|
|
:yellow-attack-timeout (seconds 0.2)
|
|
)
|
|
)
|
|
|
|
;; definition for function target-start-attack
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defbehavior target-start-attack target ()
|
|
(+! (-> self control unknown-dword50) 1)
|
|
(set! (-> self control unknown-dword51) 0)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-danger-set!
|
|
(defbehavior target-danger-set! target ((arg0 symbol) (arg1 symbol))
|
|
(let ((s4-0 (-> self control unknown-sphere00))
|
|
(s5-0 (-> self control unknown-sphere01))
|
|
(gp-0 (-> self control unknown-sphere02))
|
|
(f30-0 (if arg1
|
|
2.0
|
|
1.0
|
|
)
|
|
)
|
|
)
|
|
(dotimes (v1-4 3)
|
|
(set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) (collide-offense normal-attack))
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> self control root-prim local-sphere))
|
|
(-> *TARGET-bank* root-offset)
|
|
(-> *TARGET-bank* root-radius)
|
|
)
|
|
(set! (-> self control unknown-symbol30) arg0)
|
|
(set! (-> self state-flags) (logand -3 (-> self state-flags)))
|
|
(set! (-> s4-0 transform-index) -2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind))
|
|
(set! (-> s4-0 collide-with) (collide-kind))
|
|
(set! (-> s4-0 local-sphere w) 0.0)
|
|
(set! (-> s4-0 prim-core offense) (collide-offense no-offense))
|
|
(set! (-> s5-0 transform-index) -2)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind))
|
|
(set! (-> s5-0 collide-with) (collide-kind))
|
|
(set! (-> s5-0 local-sphere w) 0.0)
|
|
(set! (-> s5-0 prim-core offense) (collide-offense no-offense))
|
|
(set! (-> gp-0 transform-index) -2)
|
|
(set! (-> gp-0 prim-core collide-as) (collide-kind))
|
|
(set! (-> gp-0 collide-with) (collide-kind))
|
|
(set! (-> gp-0 local-sphere w) 0.0)
|
|
(set! (-> gp-0 prim-core offense) (collide-offense no-offense))
|
|
(case arg0
|
|
(('harmless #f)
|
|
(set! (-> self control unknown-symbol30) #f)
|
|
(target-collide-set! (-> self control unknown-symbol00) (-> self control unknown-float90))
|
|
)
|
|
(('spin 'spin-air)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> self control root-prim local-sphere))
|
|
(new 'static 'vector :y 6553.6 :w 1.0)
|
|
9830.4
|
|
)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* spin-offset)
|
|
(-> *TARGET-bank* spin-radius)
|
|
)
|
|
)
|
|
(('duck-spin)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> self control root-prim local-sphere))
|
|
(new 'static 'vector :y 6553.6 :w 1.0)
|
|
10649.6
|
|
)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* duck-spin-offset)
|
|
(-> *TARGET-bank* duck-spin-radius)
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius))
|
|
(set! (-> s5-0 transform-index) 32)
|
|
)
|
|
(('duck-slide)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* duck-spin-offset)
|
|
(-> *TARGET-bank* duck-spin-radius)
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius))
|
|
(set! (-> s5-0 transform-index) 28)
|
|
)
|
|
(('wheel-solid)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(dotimes (v1-57 3)
|
|
(set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) (collide-offense touch))
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* duck-spin-offset)
|
|
(+ 819.2 (-> *TARGET-bank* duck-spin-radius))
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius))
|
|
(set! (-> s5-0 transform-index) 7)
|
|
(set! (-> self control unknown-symbol30) 'roll)
|
|
)
|
|
(('flip)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(dotimes (v1-71 3)
|
|
(set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) (collide-offense touch))
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* duck-spin-offset)
|
|
(+ 819.2 (-> *TARGET-bank* duck-spin-radius))
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius))
|
|
(set! (-> s5-0 transform-index) 7)
|
|
(set! (-> self control unknown-symbol30) 'flip)
|
|
)
|
|
(('punch)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> self control root-prim local-sphere))
|
|
(new 'static 'vector :y 6553.6 :w 1.0)
|
|
11878.4
|
|
)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* punch-offset)
|
|
(-> *TARGET-bank* punch-radius)
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* punch-radius))
|
|
(set! (-> s5-0 transform-index) 22)
|
|
)
|
|
(('uppercut)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> self control root-prim local-sphere))
|
|
(new 'static 'vector :y 6553.6 :w 1.0)
|
|
11878.4
|
|
)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* uppercut0-offset)
|
|
(-> *TARGET-bank* uppercut-radius)
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* uppercut-radius))
|
|
(set! (-> s5-0 transform-index) 22)
|
|
(set! (-> gp-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> gp-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> gp-0 local-sphere))
|
|
(-> *TARGET-bank* uppercut1-offset)
|
|
(-> *TARGET-bank* uppercut-radius)
|
|
)
|
|
)
|
|
(('flop)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(dotimes (v1-114 3)
|
|
(set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) (collide-offense strong-attack))
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* flop0-offset)
|
|
(-> *TARGET-bank* flop-radius)
|
|
)
|
|
(set! f30-0 1.0)
|
|
(set! (-> self control unknown-symbol30) 'flop)
|
|
)
|
|
(('flop-down)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(dotimes (v1-124 3)
|
|
(set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) (collide-offense strong-attack))
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* flop0-offset)
|
|
(-> *TARGET-bank* flop-radius)
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s5-0 local-sphere))
|
|
(-> *TARGET-bank* flop1-offset)
|
|
(-> *TARGET-bank* flop-radius)
|
|
)
|
|
(if (!= f30-0 1.0)
|
|
(set! f30-0 2.1)
|
|
)
|
|
(set! (-> self control unknown-symbol30) 'flop)
|
|
)
|
|
(('flut-attack)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> self control root-prim local-sphere))
|
|
(new 'static 'vector :y 6553.6 :w 1.0)
|
|
12288.0
|
|
)
|
|
(logior! (-> self state-flags) 2)
|
|
(set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s4-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s4-0 local-sphere))
|
|
(-> *TARGET-bank* spin-offset)
|
|
(+ 2048.0 (-> *TARGET-bank* punch-radius))
|
|
)
|
|
(set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack))
|
|
(set! (-> s5-0 collide-with)
|
|
(collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider)
|
|
)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> s5-0 local-sphere))
|
|
*null-vector*
|
|
(+ 1228.8 (-> *TARGET-bank* punch-radius))
|
|
)
|
|
(set! (-> s5-0 transform-index) 37)
|
|
(dotimes (v1-148 3)
|
|
(set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) (collide-offense strong-attack))
|
|
)
|
|
)
|
|
(else
|
|
(format 0 "ERROR: ~A unknown danger mode ~A" self arg0)
|
|
)
|
|
)
|
|
(when (and (!= f30-0 1.0) (not (or (= arg0 'harmless) (= arg0 #f))))
|
|
(set! (-> self control root-prim local-sphere w) (* (-> self control root-prim local-sphere w) f30-0))
|
|
(set! (-> s4-0 local-sphere w) (* (-> s4-0 local-sphere w) f30-0))
|
|
(set! (-> s5-0 local-sphere w) (* (-> s5-0 local-sphere w) f30-0))
|
|
(let ((f0-37 (* (-> gp-0 local-sphere w) f30-0)))
|
|
(set! (-> gp-0 local-sphere w) f0-37)
|
|
f0-37
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function target-collide-set!
|
|
(defbehavior target-collide-set! target ((arg0 symbol) (arg1 float))
|
|
(let ((gp-0 (-> self control)))
|
|
(set! (-> self control unknown-symbol00) arg0)
|
|
(set! (-> self control unknown-float90) arg1)
|
|
(dotimes (v1-2 3)
|
|
(set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) (collide-offense touch))
|
|
(set! (-> gp-0 unknown-sphere-array00 v1-2 transform-index) -2)
|
|
)
|
|
(case arg0
|
|
(('pole)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 0 local-sphere) 0.0 0.0 0.0 (-> *TARGET-bank* body-radius))
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 0.0 0.0 (-> *TARGET-bank* body-radius))
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 0.0 0.0 (-> *TARGET-bank* body-radius))
|
|
(set! (-> gp-0 unknown-sphere-array00 0 transform-index) 28)
|
|
(set! (-> gp-0 unknown-sphere-array00 1 transform-index) 26)
|
|
(set! (-> gp-0 unknown-sphere-array00 2 transform-index) 7)
|
|
)
|
|
(('racer)
|
|
(set! (-> gp-0 unknown-vector11 y) 4096.0)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> gp-0 root-prim local-sphere))
|
|
(new 'static 'vector :y 8192.0 :w 1.0)
|
|
16384.0
|
|
)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 0 local-sphere) 0.0 6553.6 0.0 6553.6)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 9420.8 0.0 6553.6)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 12288.0 0.0 6553.6)
|
|
(dotimes (v1-22 3)
|
|
(set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) (collide-offense strong-attack))
|
|
)
|
|
)
|
|
(('flut)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> gp-0 root-prim local-sphere))
|
|
(new 'static 'vector :y 8192.0 :w 1.0)
|
|
12288.0
|
|
)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 0 local-sphere) 0.0 4915.2 0.0 4915.2)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 7782.4004 0.0 4915.2)
|
|
(set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 10649.6 0.0 4915.2)
|
|
)
|
|
(('duck)
|
|
(set! (-> self control unknown-float91) arg1)
|
|
(let ((f30-0 (- 1.0 arg1)))
|
|
(set! (-> gp-0 unknown-vector11 y) 0.0)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> gp-0 root-prim local-sphere))
|
|
(-> *TARGET-bank* root-offset)
|
|
(-> *TARGET-bank* root-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 0 local-sphere)
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
(* 0.0 f30-0)
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 1 local-sphere)
|
|
0.0
|
|
(+ (-> *TARGET-bank* body-radius) (* 2867.2 f30-0))
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 2 local-sphere)
|
|
0.0
|
|
(+ (-> *TARGET-bank* body-radius) (* 5734.4 f30-0))
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
)
|
|
)
|
|
(('tube)
|
|
(set! (-> self control unknown-float91) arg1)
|
|
(let ((f30-1 (- 1.0 arg1)))
|
|
(set! (-> gp-0 unknown-vector11 y) 0.0)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> gp-0 root-prim local-sphere))
|
|
(-> *TARGET-bank* root-offset)
|
|
(-> *TARGET-bank* root-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 0 local-sphere)
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
(* 0.0 f30-1)
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 1 local-sphere)
|
|
0.0
|
|
(+ (-> *TARGET-bank* body-radius) (* 2867.2 f30-1))
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 2 local-sphere)
|
|
0.0
|
|
(+ (-> *TARGET-bank* body-radius) (* 5734.4 f30-1))
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
)
|
|
(dotimes (v1-52 3)
|
|
(set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) (collide-offense strong-attack))
|
|
)
|
|
)
|
|
(else
|
|
(set! (-> self control unknown-float91) 0.0)
|
|
(set! (-> gp-0 unknown-vector11 y) 0.0)
|
|
(sphere<-vector+r!
|
|
(the-as sphere (-> gp-0 root-prim local-sphere))
|
|
(-> *TARGET-bank* root-offset)
|
|
(-> *TARGET-bank* root-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 0 local-sphere)
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 1 local-sphere)
|
|
0.0
|
|
(+ 2867.2 (-> *TARGET-bank* body-radius))
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
(set-vector!
|
|
(-> gp-0 unknown-sphere-array00 2 local-sphere)
|
|
0.0
|
|
(+ 5734.4 (-> *TARGET-bank* body-radius))
|
|
0.0
|
|
(-> *TARGET-bank* body-radius)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
)
|
|
|
|
;; definition for method 27 of type control-info
|
|
(defmethod get-quaternion control-info ((obj control-info))
|
|
(-> obj unknown-quaternion00)
|
|
)
|
|
|
|
;; definition for function target-align-vel-z-adjust
|
|
(defbehavior target-align-vel-z-adjust target ((arg0 float))
|
|
(let ((f1-0 (-> self control unknown-float61)))
|
|
(* arg0 (if (< 0.0 f1-0)
|
|
(* (- 1.0 f1-0) (-> self control unknown-surface01 alignv))
|
|
(-> self control unknown-surface01 alignv)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for method 16 of type target
|
|
;; INFO: Return type mismatch control-info vs collide-shape.
|
|
;; Used lq/sq
|
|
(defmethod apply-alignment target ((obj target) (arg0 int) (arg1 transformq) (arg2 vector))
|
|
(let ((s2-0 (new 'stack-no-clear 'vector)))
|
|
(set! (-> s2-0 quad) (-> arg2 quad))
|
|
(set! (-> s2-0 z) (target-align-vel-z-adjust (-> s2-0 z)))
|
|
(when (logtest? arg0 7)
|
|
(let* ((s3-0 (-> obj control unknown-matrix01))
|
|
(s0-0 (-> obj control unknown-matrix00))
|
|
(s1-0 (vector-matrix*! (new 'stack-no-clear 'vector) (-> obj control dynam gravity) s0-0))
|
|
(a1-3 (vector-matrix*! (new 'stack-no-clear 'vector) (-> obj control transv) s0-0))
|
|
)
|
|
(if (logtest? arg0 2048)
|
|
(set-vector! s1-0 0.0 0.0 0.0 1.0)
|
|
)
|
|
(when (logtest? arg0 1)
|
|
(set! (-> a1-3 x) (+ (* (-> arg1 trans x) (-> s2-0 x) (-> *display* frames-per-second))
|
|
(* (-> s1-0 x) (-> *display* seconds-per-frame))
|
|
)
|
|
)
|
|
(if (zero? (logand arg0 12))
|
|
(set! (-> a1-3 z) 0.0)
|
|
)
|
|
)
|
|
(if (and (logtest? arg0 2) (not (and (logtest? arg0 4096) (= (-> arg1 trans y) 0.0))))
|
|
(set! (-> a1-3 y) (+ (* (-> arg1 trans y) (-> s2-0 y) (-> *display* frames-per-second))
|
|
(* (-> s1-0 y) (-> *display* seconds-per-frame))
|
|
)
|
|
)
|
|
)
|
|
(when (logtest? arg0 4)
|
|
(set! (-> a1-3 z) (+ (* (-> arg1 trans z) (-> s2-0 z) (-> *display* frames-per-second))
|
|
(* (-> s1-0 z) (-> *display* seconds-per-frame))
|
|
)
|
|
)
|
|
(if (zero? (logand arg0 9))
|
|
(set! (-> a1-3 x) 0.0)
|
|
)
|
|
)
|
|
(vector-matrix*! (-> obj control transv) a1-3 s3-0)
|
|
)
|
|
)
|
|
)
|
|
(if (logtest? arg0 16)
|
|
(quaternion-normalize!
|
|
(quaternion*! (-> obj control unknown-quaternion00) (-> obj control unknown-quaternion00) (-> arg1 quat))
|
|
)
|
|
)
|
|
(the-as collide-shape (-> obj control))
|
|
)
|
|
|
|
;; definition for function average-turn-angle
|
|
(defun average-turn-angle ((arg0 target))
|
|
(let ((f30-0 0.0))
|
|
(dotimes (s5-0 8)
|
|
(+! f30-0
|
|
(fabs
|
|
(deg-diff
|
|
(atan (-> arg0 control unknown-vector-array00 s5-0 x) (-> arg0 control unknown-vector-array00 s5-0 z))
|
|
0.0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(* 0.125 f30-0)
|
|
)
|
|
)
|
|
|
|
;; definition for function can-play-stance-amibent?
|
|
(defbehavior can-play-stance-amibent? target ()
|
|
(and (>= (- (-> *display* base-frame-counter) (-> self state-time)) (seconds 30))
|
|
(not (-> *setting-control* current talking))
|
|
(not (-> *setting-control* current spooling))
|
|
(not (-> *setting-control* current movie))
|
|
(not (-> *setting-control* current hint))
|
|
(zero? (logand (-> self control status) 32))
|
|
(zero? (logand (-> self water flags) 512))
|
|
)
|
|
)
|
|
|
|
;; definition for function can-jump?
|
|
(defbehavior can-jump? target ((arg0 symbol))
|
|
(and (or (logtest? (-> self control status) 1)
|
|
(< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout))
|
|
(and (logtest? (-> self control status) 1) (< 0.866 (-> self control surface-angle)))
|
|
)
|
|
(and (zero? (logand (-> self control unknown-surface01 flags) 64))
|
|
(zero? (logand (-> self state-flags) 2048))
|
|
(case arg0
|
|
(('target-wheel-flip)
|
|
(>= 0.5 (-> self control unknown-float61))
|
|
)
|
|
(else
|
|
#t
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function move-legs?
|
|
(defbehavior move-legs? target ()
|
|
(!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0)
|
|
)
|
|
|
|
;; definition for function target-height-above-ground
|
|
(defbehavior target-height-above-ground target ()
|
|
(- (-> self control trans y) (-> self control shadow-pos y))
|
|
)
|
|
|
|
;; definition for function fall-test
|
|
;; INFO: Return type mismatch object vs none.
|
|
(defbehavior fall-test target ()
|
|
(when (and (zero? (logand (-> self control status) 1))
|
|
(>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout))
|
|
(>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))
|
|
(let ((v1-15 (if (> (-> self skel active-channels) 0)
|
|
(-> self skel root-channel 0 frame-group)
|
|
)
|
|
)
|
|
)
|
|
(or (not (or (= v1-15 (-> self draw art-group data 59))
|
|
(= v1-15 (-> self draw art-group data 60))
|
|
(= v1-15 (-> self draw art-group data 61))
|
|
)
|
|
)
|
|
(< 4096.0 (target-height-above-ground))
|
|
)
|
|
)
|
|
)
|
|
(when (and (< (- (-> *display* base-frame-counter) (-> self control rider-time)) (-> *TARGET-bank* ground-timeout))
|
|
(logtest? (-> self control unknown-surface01 flags) #x4000)
|
|
)
|
|
(+! (-> self control transv x) (-> self control rider-last-move x))
|
|
(+! (-> self control transv z) (-> self control rider-last-move z))
|
|
)
|
|
(go target-falling #f)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for function slide-down-test
|
|
;; INFO: Return type mismatch object vs none.
|
|
(defbehavior slide-down-test target ()
|
|
(if (and (zero? (logand (-> self control status) 129))
|
|
(>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout))
|
|
(logtest? (-> self control status) 4)
|
|
(< 0.5 (-> self control surface-angle))
|
|
)
|
|
(go target-slide-down)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
;; definition for function smack-surface?
|
|
(defbehavior smack-surface? target ((arg0 symbol))
|
|
(and (< 0.7 (-> self control touch-angle)) (and (< (-> self control surface-angle) 0.3)
|
|
(logtest? (-> self control status) 8)
|
|
(or arg0 (zero? (logand (-> self control status) 32)))
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function can-wheel?
|
|
(defbehavior can-wheel? target ()
|
|
(and (logtest? (-> self control status) 1)
|
|
(or (zero? (logand (-> self control status) 8)) (>= 0.7 (-> self control touch-angle)))
|
|
(and (< (-> self control unknown-float61) 0.7) (zero? (logand (-> self state-flags) 8192)))
|
|
)
|
|
)
|
|
|
|
;; definition for function can-duck?
|
|
(defbehavior can-duck? target ()
|
|
(and (logtest? (-> self control status) 1)
|
|
(>= (-> self control unknown-float60) 0.7)
|
|
(zero? (logand (-> self water flags) 6144))
|
|
(zero? (logand (-> self state-flags) 8192))
|
|
(or (zero? (logand (-> self water flags) 1024))
|
|
(< (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function can-exit-duck?
|
|
;; Used lq/sq
|
|
(defbehavior can-exit-duck? target ()
|
|
(let ((gp-0 (new 'stack-no-clear 'collide-using-spheres-params)))
|
|
(let ((s5-0 (new 'stack-no-clear 'inline-array 'sphere 2)))
|
|
(dotimes (s4-0 2)
|
|
((method-of-type sphere new) (the-as symbol (-> s5-0 s4-0)) sphere)
|
|
)
|
|
(set! (-> s5-0 0 quad) (-> self control trans quad))
|
|
(set! (-> s5-0 0 y) (+ 5734.4 (-> *TARGET-bank* body-radius) (-> s5-0 0 y)))
|
|
(set! (-> s5-0 0 w) (-> *TARGET-bank* body-radius))
|
|
(set! (-> s5-0 1 quad) (-> self control trans quad))
|
|
(set! (-> s5-0 1 y) (+ 2867.2 (-> *TARGET-bank* body-radius) (-> s5-0 1 y)))
|
|
(set! (-> s5-0 1 w) (-> *TARGET-bank* body-radius))
|
|
(set! (-> gp-0 spheres) s5-0)
|
|
)
|
|
(set! (-> gp-0 num-spheres) (the-as uint 2))
|
|
(set! (-> gp-0 collide-with) (-> self control root-prim collide-with))
|
|
(set! (-> gp-0 proc) #f)
|
|
(set! (-> gp-0 ignore-pat) (the-as uint 1))
|
|
(set! (-> gp-0 solid-only) #t)
|
|
(if (fill-and-probe-using-spheres *collide-cache* gp-0)
|
|
#f
|
|
#t
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function can-hands?
|
|
(defbehavior can-hands? target ((arg0 symbol))
|
|
(cond
|
|
((or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0)
|
|
(pad-buttons square)
|
|
)
|
|
)
|
|
(or (and (logtest? (-> self state-flags) 4096)
|
|
(or (zero? (logand (-> self state-flags) #x4000))
|
|
(not (and (= (-> self fact-info-target eco-type) (pickup-type eco-yellow))
|
|
(>= (-> self fact-info-target eco-level) 1.0)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(logtest? (-> self control unknown-surface01 flags) 384)
|
|
)
|
|
)
|
|
#f
|
|
)
|
|
((and (or (not arg0)
|
|
(and (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *TARGET-bank* ground-timeout))
|
|
(< (-> self control unknown-float61) 0.7)
|
|
)
|
|
)
|
|
(>= (- (-> *display* base-frame-counter)
|
|
(if (and (= (-> self fact-info-target eco-type) (pickup-type eco-yellow))
|
|
(>= (-> self fact-info-target eco-level) 1.0)
|
|
)
|
|
(-> *TARGET-bank* yellow-attack-timeout)
|
|
(-> *TARGET-bank* attack-timeout)
|
|
)
|
|
)
|
|
(-> self control unknown-dword31)
|
|
)
|
|
)
|
|
#t
|
|
)
|
|
(else
|
|
(set! (-> self control unknown-dword32) (-> *display* base-frame-counter))
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function can-feet?
|
|
(defbehavior can-feet? target ()
|
|
(cond
|
|
((or (logtest? (-> self state-flags) 4096) (logtest? (-> self control unknown-surface01 flags) 640))
|
|
#f
|
|
)
|
|
((>= (- (-> *display* base-frame-counter) (-> *TARGET-bank* attack-timeout)) (-> self control unknown-dword33))
|
|
#t
|
|
)
|
|
(else
|
|
(set! (-> self control unknown-dword34) (-> *display* base-frame-counter))
|
|
#f
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function vector-local+!
|
|
;; Used lq/sq
|
|
(defbehavior vector-local+! target ((arg0 vector) (arg1 vector))
|
|
(let ((s5-0 (new-stack-vector0)))
|
|
(vector-matrix*! s5-0 arg1 (-> self control unknown-matrix01))
|
|
(vector+! arg0 arg0 s5-0)
|
|
)
|
|
)
|
|
|
|
;; definition for function move-forward
|
|
;; Used lq/sq
|
|
(defbehavior move-forward target ((arg0 float))
|
|
(let ((a1-0 (new-stack-vector0))
|
|
(gp-0 (new-stack-vector0))
|
|
)
|
|
(set-vector! a1-0 0.0 0.0 arg0 1.0)
|
|
(vector-matrix*! gp-0 a1-0 (-> self control unknown-matrix01))
|
|
(vector+! (-> self control transv) (-> self control transv) gp-0)
|
|
)
|
|
)
|
|
|
|
;; definition for function set-forward-vel
|
|
;; Used lq/sq
|
|
(defbehavior set-forward-vel target ((arg0 float))
|
|
(let ((gp-0 (new-stack-vector0)))
|
|
(vector-matrix*! gp-0 (-> self control transv) (-> self control unknown-matrix00))
|
|
(set! (-> gp-0 z) arg0)
|
|
(set! (-> gp-0 x) 0.0)
|
|
(vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01))
|
|
)
|
|
)
|
|
|
|
;; definition for function delete-back-vel
|
|
;; INFO: Return type mismatch int vs none.
|
|
;; Used lq/sq
|
|
(defbehavior delete-back-vel target ()
|
|
(let ((s5-0 (new-stack-vector0)))
|
|
(vector-z-quaternion! s5-0 (-> self control dir-targ))
|
|
(let ((gp-0 (new-stack-vector0))
|
|
(f30-0 (vector-dot s5-0 (-> self control transv)))
|
|
)
|
|
0.0
|
|
(vector-! gp-0 (-> self control transv) (vector-float*! gp-0 s5-0 f30-0))
|
|
(let* ((f0-3 (vector-length gp-0))
|
|
(f1-0 f0-3)
|
|
)
|
|
(if (< f30-0 0.0)
|
|
(set! f30-0 0.0)
|
|
)
|
|
(vector+!
|
|
(-> self control transv)
|
|
(vector-float*! (-> self control transv) s5-0 f30-0)
|
|
(vector-float*! gp-0 gp-0 (/ f0-3 f1-0))
|
|
)
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function set-side-vel
|
|
;; Used lq/sq
|
|
(defbehavior set-side-vel target ((arg0 float))
|
|
(let ((gp-0 (new-stack-vector0)))
|
|
(vector-matrix*! gp-0 (-> self control transv) (-> self control unknown-matrix00))
|
|
(set! (-> gp-0 x) arg0)
|
|
(set! (-> gp-0 z) 0.0)
|
|
(vector-matrix*! (-> self control transv) gp-0 (-> self control unknown-matrix01))
|
|
)
|
|
)
|
|
|
|
;; definition for function target-timed-invulnerable
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defun target-timed-invulnerable ((arg0 time-frame) (arg1 target))
|
|
(logior! (-> arg1 state-flags) 32)
|
|
(set! (-> arg1 control unknown-dword80) (-> *display* base-frame-counter))
|
|
(set! (-> arg1 control unknown-dword81) arg0)
|
|
(set-collide-kinds (-> arg1 control) 2 (collide-kind target-attack) (collide-kind))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-timed-invulnerable-off
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defun target-timed-invulnerable-off ((arg0 target))
|
|
(logclear! (-> arg0 draw status) (draw-status hidden))
|
|
(set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags)))
|
|
(set-collide-kinds (-> arg0 control) 2 (collide-kind) (collide-kind target-attack))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for method 9 of type attack-info
|
|
;; INFO: Return type mismatch attack-info vs none.
|
|
;; Used lq/sq
|
|
(defmethod combine! attack-info ((obj attack-info) (arg0 attack-info))
|
|
(with-pp
|
|
(let ((s4-0 (-> arg0 mask)))
|
|
(set! (-> obj mask) (-> arg0 mask))
|
|
(if (logtest? s4-0 8)
|
|
(set! (-> obj attacker) (-> arg0 attacker))
|
|
)
|
|
(if (logtest? s4-0 32)
|
|
(set! (-> obj mode) (-> arg0 mode))
|
|
)
|
|
(if (logtest? s4-0 2048)
|
|
(set! (-> obj angle) (-> arg0 angle))
|
|
)
|
|
(if (logtest? s4-0 512)
|
|
(set! (-> obj dist) (-> arg0 dist))
|
|
)
|
|
(if (logtest? s4-0 1024)
|
|
(set! (-> obj control) (-> arg0 control))
|
|
)
|
|
(if (logtest? s4-0 256)
|
|
(set! (-> obj speed) (-> arg0 speed))
|
|
)
|
|
(if (logtest? s4-0 64)
|
|
(set! (-> obj shove-back) (-> arg0 shove-back))
|
|
)
|
|
(if (logtest? s4-0 128)
|
|
(set! (-> obj shove-up) (-> arg0 shove-up))
|
|
)
|
|
(if (logtest? s4-0 16)
|
|
(set! (-> obj invinc-time) (-> arg0 invinc-time))
|
|
)
|
|
(if (logtest? s4-0 4096)
|
|
(set! (-> obj rotate-to) (-> arg0 rotate-to))
|
|
)
|
|
(if (logtest? s4-0 4)
|
|
(set! (-> obj intersection quad) (-> arg0 intersection quad))
|
|
)
|
|
(cond
|
|
((zero? (logand s4-0 2))
|
|
(let* ((s3-0 pp)
|
|
(s2-0 (handle->process (-> obj attacker)))
|
|
(v1-39 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable))
|
|
s2-0
|
|
)
|
|
)
|
|
)
|
|
(when v1-39
|
|
(set! (-> obj trans quad) (-> (the-as process-drawable v1-39) root trans quad))
|
|
(vector-!
|
|
(-> obj vector)
|
|
(-> (the-as process-drawable s3-0) root trans)
|
|
(-> (the-as process-drawable v1-39) root trans)
|
|
)
|
|
(logior! (-> obj mask) 2)
|
|
)
|
|
)
|
|
)
|
|
(else
|
|
(let* ((s3-1 (handle->process (-> obj attacker)))
|
|
(a0-16 (if (and (nonzero? s3-1) (type-type? (-> s3-1 type) process-drawable))
|
|
s3-1
|
|
)
|
|
)
|
|
)
|
|
(if a0-16
|
|
(set! (-> obj trans quad) (-> (the-as process-drawable a0-16) root trans quad))
|
|
)
|
|
)
|
|
(set! (-> obj vector quad) (-> arg0 vector quad))
|
|
(if (zero? (logand s4-0 64))
|
|
(set! (-> obj shove-back) (vector-xz-length (-> obj vector)))
|
|
)
|
|
(if (zero? (logand s4-0 128))
|
|
(set! (-> obj shove-up) (-> obj vector y))
|
|
)
|
|
)
|
|
)
|
|
(if (zero? (logand (-> obj mask) 512))
|
|
(set! (-> obj dist) (fabs (-> obj shove-back)))
|
|
)
|
|
(if (logtest? s4-0 1)
|
|
(set! (-> obj trans quad) (-> arg0 trans quad))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; definition for function ground-tween-initialize
|
|
(defbehavior ground-tween-initialize target ((arg0 ground-tween-info) (arg1 uint) (arg2 uint) (arg3 uint) (arg4 uint) (arg5 uint) (arg6 uint))
|
|
(set! (-> arg0 group 0) arg2)
|
|
(set! (-> arg0 group 1) arg3)
|
|
(set! (-> arg0 group 2) arg4)
|
|
(set! (-> arg0 group 3) arg5)
|
|
(set! (-> arg0 group 4) arg6)
|
|
(dotimes (s3-0 3)
|
|
(set! (-> arg0 chan s3-0) (+ arg1 s3-0))
|
|
(let ((s2-0 (-> self skel root-channel (-> arg0 chan s3-0))))
|
|
(set! (-> s2-0 frame-interp) (fabs (-> arg0 blend s3-0)))
|
|
(joint-control-channel-group-eval! s2-0 (the-as art-joint-anim arg2) num-func-identity)
|
|
(set! (-> s2-0 frame-num) 0.0)
|
|
)
|
|
)
|
|
arg0
|
|
)
|
|
|
|
;; definition for function ground-tween-update
|
|
;; INFO: Return type mismatch int vs none.
|
|
(defbehavior ground-tween-update target ((arg0 ground-tween-info) (arg1 float) (arg2 float))
|
|
(let ((f0-1 (fmax -1.0 (fmin 1.0 (* 2.0 arg1))))
|
|
(f30-0 (fmax -1.0 (fmin 1.0 (* 1.6 arg2))))
|
|
)
|
|
(let ((f1-5 (fabs (- f0-1 (the-as float (-> arg0 blend 1))))))
|
|
(set! (-> arg0 blend 1) (seek (the-as float (-> arg0 blend 1)) f0-1 (fmax 0.05 (fmin 0.2 (* 0.25 f1-5)))))
|
|
)
|
|
(let ((f0-7 (fabs (- f30-0 (the-as float (-> arg0 blend 2))))))
|
|
(set! (-> arg0 blend 2) (seek (the-as float (-> arg0 blend 2)) f30-0 (fmax 0.05 (fmin 0.2 (* 0.25 f0-7)))))
|
|
)
|
|
)
|
|
(cond
|
|
((>= (-> arg0 blend 1) 0.0)
|
|
(let ((v1-4 (-> self skel root-channel (-> arg0 chan 1))))
|
|
(set! (-> v1-4 frame-interp) (fabs (-> arg0 blend 1)))
|
|
(set! (-> v1-4 frame-group) (the-as art-joint-anim (-> arg0 group 1)))
|
|
)
|
|
)
|
|
(else
|
|
(let ((v1-7 (-> self skel root-channel (-> arg0 chan 1))))
|
|
(set! (-> v1-7 frame-interp) (fabs (-> arg0 blend 1)))
|
|
(set! (-> v1-7 frame-group) (the-as art-joint-anim (-> arg0 group 2)))
|
|
)
|
|
)
|
|
)
|
|
(cond
|
|
((>= (-> arg0 blend 2) 0.0)
|
|
(let ((v1-10 (-> self skel root-channel (-> arg0 chan 2))))
|
|
(set! (-> v1-10 frame-interp) (fabs (-> arg0 blend 2)))
|
|
(set! (-> v1-10 frame-group) (the-as art-joint-anim (-> arg0 group 4)))
|
|
)
|
|
)
|
|
(else
|
|
(let ((v1-13 (-> self skel root-channel (-> arg0 chan 2))))
|
|
(set! (-> v1-13 frame-interp) (fabs (-> arg0 blend 2)))
|
|
(set! (-> v1-13 frame-group) (the-as art-joint-anim (-> arg0 group 3)))
|
|
)
|
|
)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; definition for function target-pos
|
|
(defun target-pos ((arg0 int))
|
|
(let ((a1-0 *target*))
|
|
(cond
|
|
(a1-0
|
|
(if (zero? arg0)
|
|
(-> a1-0 control trans)
|
|
(vector<-cspace! (new 'static 'vector) (-> a1-0 node-list data arg0))
|
|
)
|
|
)
|
|
(else
|
|
(camera-pos)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function target-cam-pos
|
|
;; INFO: Return type mismatch object vs vector.
|
|
;; Used lq/sq
|
|
(defun target-cam-pos ()
|
|
(let ((gp-0 *target*))
|
|
(the-as
|
|
vector
|
|
(cond
|
|
((not gp-0)
|
|
(camera-pos)
|
|
)
|
|
((logtest? (-> gp-0 state-flags) 1024)
|
|
(add-debug-sphere
|
|
*display-camera-marks*
|
|
(bucket-id debug-draw1)
|
|
(-> gp-0 alt-cam-pos)
|
|
819.2
|
|
(new 'static 'rgba :r #xff :a #x80)
|
|
)
|
|
(-> gp-0 alt-cam-pos)
|
|
)
|
|
((logtest? #x20000 (-> gp-0 state-flags))
|
|
(add-debug-sphere
|
|
*display-camera-marks*
|
|
(bucket-id debug-draw1)
|
|
(-> gp-0 alt-cam-pos)
|
|
819.2
|
|
(new 'static 'rgba :r #xff :a #x80)
|
|
)
|
|
(-> gp-0 alt-cam-pos)
|
|
)
|
|
((logtest? #x80000 (-> gp-0 state-flags))
|
|
(let ((s5-0 (the-as object (new 'static 'vector))))
|
|
(set! (-> (the-as vector s5-0) quad) (-> (&-> (-> gp-0 control) unknown-qword00) 0))
|
|
(set! (-> (the-as vector s5-0) y) (fmax (-> (the-as vector s5-0) y) (-> gp-0 alt-cam-pos y)))
|
|
(add-debug-sphere
|
|
*display-camera-marks*
|
|
(bucket-id debug-draw1)
|
|
(the-as vector s5-0)
|
|
819.2
|
|
(new 'static 'rgba :r #xff :a #x80)
|
|
)
|
|
s5-0
|
|
)
|
|
)
|
|
(else
|
|
(add-debug-sphere
|
|
*display-camera-marks*
|
|
(bucket-id debug-draw1)
|
|
(the-as vector (&-> (-> gp-0 control) unknown-qword00))
|
|
819.2
|
|
(new 'static 'rgba :r #xff :a #x80)
|
|
)
|
|
(&-> (-> gp-0 control) unknown-qword00)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function target-joint-pos
|
|
(defun target-joint-pos ()
|
|
(let ((v1-0 *target*))
|
|
(if v1-0
|
|
(vector<-cspace! (new 'static 'vector) (-> v1-0 node-list data (-> v1-0 draw origin-joint-index)))
|
|
(camera-pos)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; definition for function target-rot
|
|
(defun target-rot ()
|
|
(let ((v1-0 *target*))
|
|
(if v1-0
|
|
(-> v1-0 control unknown-quaternion00)
|
|
*unity-quaternion*
|
|
)
|
|
)
|
|
)
|