Files
Hat Kid 2969833b2d decomp3: more engine stuff, detect non-virtual state inheritance (#3377)
- `speech`
- `ambient`
- `water-h`
- `vol-h`
- `generic-obs`
- `carry-h`
- `pilot-h`
- `board-h`
- `gun-h`
- `flut-h`
- `indax-h`
- `lightjak-h`
- `darkjak-h`
- `target-util`
- `history`
- `collide-reaction-target`
- `logic-target`
- `sidekick`
- `projectile`
- `voicebox`
- `ragdoll-edit`
- most of `ragdoll` (not added to gsrc yet)
- `curves`
- `find-nearest`
- `lightjak-wings`
- `target-handler`
- `target-anim`
- `target`
- `target2`
- `target-swim`
- `target-lightjak`
- `target-invisible`
- `target-death`
- `target-gun`
- `gun-util`
- `board-util`
- `target-board`
- `board-states`
- `mech-h`
- `vol`
- `vent`
- `viewer`
- `gem-pool`
- `collectables`
- `crates`
- `secrets-menu`

Additionally:

- Detection of non-virtual state inheritance
- Added a config file that allows overriding the process stack size set
by `stack-size-set!` calls
- Fix for integer multiplication with `r0`
- Fixed detection for the following macros:
	- `static-attack-info`
- `defpart` and `defpartgroup` (probably still needs adjustments, uses
Jak 2 implementation at the moment)
- `sound-play` (Jak 3 seems to always call `sound-play-by-name` with a
`sound-group` of 0, so the macro has been temporarily defaulted to use
that)

One somewhat significant change made here that should be noted is that
the return type of `process::init-from-entity!` was changed to `object`.
I've been thinking about this for a while, since it looks a bit nicer
without the `(none)` at the end and I have recently encountered init
methods that early return `0`.
2024-03-03 15:15:27 -05:00

1373 lines
53 KiB
Common Lisp
Vendored
Generated

;;-*-Lisp-*-
(in-package goal)
;; definition of type surface
(deftype surface (basic)
"Definition of a bunch of parameters for different types of surfaces.
Parameters include values such as max speed, friction, callback functions that run
on impact, during touch, on exit, etc."
((name symbol)
(data float 30)
(turnv float :overlay-at (-> data 0))
(turnvf float :overlay-at (-> data 23))
(turnvv float :overlay-at (-> data 1))
(turnvvf float :overlay-at (-> data 24))
(tiltv float :overlay-at (-> data 2))
(tiltvf float :overlay-at (-> data 25))
(tiltvv float :overlay-at (-> data 3))
(tiltvvf float :overlay-at (-> data 26))
(vel-turn float :overlay-at (-> data 27))
(transv-max float :overlay-at (-> data 4))
(target-speed float :overlay-at (-> data 5))
(seek0 float :overlay-at (-> data 6))
(seek90 float :overlay-at (-> data 7))
(seek180 float :overlay-at (-> data 8))
(fric float :overlay-at (-> data 9))
(nonlin-fric-dist float :overlay-at (-> data 10))
(slip-factor float :overlay-at (-> data 11))
(slide-factor float :overlay-at (-> data 12))
(slope-up-factor float :overlay-at (-> data 13))
(slope-down-factor float :overlay-at (-> data 14))
(slope-slip-angle float :overlay-at (-> data 15))
(impact-fric float :overlay-at (-> data 16))
(bend-factor float :overlay-at (-> data 17))
(bend-speed float :overlay-at (-> data 18))
(alignv float :overlay-at (-> data 19))
(slope-up-traction float :overlay-at (-> data 20))
(align-speed float :overlay-at (-> data 21))
(slope-change-preserve float :overlay-at (-> data 22))
(hook function 5)
(active-hook (function none) :overlay-at (-> hook 0))
(touch-hook (function none) :overlay-at (-> hook 1))
(impact-hook (function control-info (pointer float) vector none) :overlay-at (-> hook 2))
(mult-hook (function surface surface surface int none) :overlay-at (-> hook 3))
(exit-hook function :overlay-at (-> hook 4))
(dataw uint32 2)
(mode symbol :overlay-at (-> dataw 0))
(flags surface-flag :overlay-at (-> dataw 1))
)
)
;; definition for method 3 of type surface
(defmethod inspect ((this surface))
(when (not this)
(set! this this)
(goto cfg-64)
)
(format #t "[~8x] ~A~%" this (-> this type))
(format #t "~1Tname: ~A~%" (-> this name))
(format #t "~1Tdata[30] @ #x~X~%" (&-> this turnv))
(format #t "~1Tturnv: ~f~%" (-> this turnv))
(format #t "~1Tturnvf: ~f~%" (-> this turnvf))
(format #t "~1Tturnvv: ~f~%" (-> this turnvv))
(format #t "~1Tturnvvf: ~f~%" (-> this turnvvf))
(format #t "~1Ttiltv: ~f~%" (-> this tiltv))
(format #t "~1Ttiltvf: ~f~%" (-> this tiltvf))
(format #t "~1Ttiltvv: ~f~%" (-> this tiltvv))
(format #t "~1Ttiltvvf: ~f~%" (-> this tiltvvf))
(format #t "~1Tvel-turn: ~f~%" (-> this vel-turn))
(format #t "~1Ttransv-max: ~f~%" (-> this transv-max))
(format #t "~1Ttarget-speed: ~f~%" (-> this target-speed))
(format #t "~1Tseek0: ~f~%" (-> this seek0))
(format #t "~1Tseek90: ~f~%" (-> this seek90))
(format #t "~1Tseek180: ~f~%" (-> this seek180))
(format #t "~1Tfric: ~f~%" (-> this fric))
(format #t "~1Tnonlin-fric-dist: ~f~%" (-> this nonlin-fric-dist))
(format #t "~1Tslip-factor: ~f~%" (-> this slip-factor))
(format #t "~1Tslide-factor: ~f~%" (-> this slide-factor))
(format #t "~1Tslope-up-factor: ~f~%" (-> this slope-up-factor))
(format #t "~1Tslope-down-factor: ~f~%" (-> this slope-down-factor))
(format #t "~1Tslope-slip-angle: ~f~%" (-> this slope-slip-angle))
(format #t "~1Timpact-fric: ~f~%" (-> this impact-fric))
(format #t "~1Tbend-factor: ~f~%" (-> this bend-factor))
(format #t "~1Tbend-speed: ~f~%" (-> this bend-speed))
(format #t "~1Talignv: ~f~%" (-> this alignv))
(format #t "~1Tslope-up-traction: ~f~%" (-> this slope-up-traction))
(format #t "~1Talign-speed: ~f~%" (-> this align-speed))
(format #t "~1Tslope-change-preserve: ~f~%" (-> this slope-change-preserve))
(format #t "~1Thook[5] @ #x~X~%" (&-> this active-hook))
(format #t "~1Tactive-hook: ~A~%" (-> this active-hook))
(format #t "~1Ttouch-hook: ~A~%" (-> this touch-hook))
(format #t "~1Timpact-hook: ~A~%" (-> this impact-hook))
(format #t "~1Tmult-hook: ~A~%" (-> this mult-hook))
(format #t "~1Texit-hook: ~A~%" (-> this exit-hook))
(format #t "~1Tdataw[2] @ #x~X~%" (&-> this mode))
(format #t "~1Tmode: ~A~%" (-> this mode))
(format #t "~1Tflags: #x~X : (surface-flag " (-> this flags))
(let ((s5-0 (-> this flags)))
(if (= (logand (surface-flag gun-inactive) s5-0) (surface-flag gun-inactive))
(format #t "gun-inactive ")
)
(if (= (logand s5-0 (surface-flag momentum)) (surface-flag momentum))
(format #t "momentum ")
)
(if (= (logand (surface-flag sf29) s5-0) (surface-flag sf29))
(format #t "no-change-gun ")
)
(if (= (logand (surface-flag no-board) s5-0) (surface-flag no-board))
(format #t "no-board ")
)
(if (= (logand s5-0 (surface-flag xz-local)) (surface-flag xz-local))
(format #t "xz-local ")
)
(if (= (logand s5-0 (surface-flag no-feet)) (surface-flag no-feet))
(format #t "no-feet ")
)
(if (= (logand (surface-flag gun-direct) s5-0) (surface-flag gun-direct))
(format #t "gun-direct ")
)
(if (= (logand s5-0 (surface-flag turn-to-vel)) (surface-flag turn-to-vel))
(format #t "turn-to-vel ")
)
(if (= (logand (surface-flag gun-strafe) s5-0) (surface-flag gun-strafe))
(format #t "gun-strafe ")
)
(if (= (logand (surface-flag gun-fast-exit) s5-0) (surface-flag gun-fast-exit))
(format #t "gun-fast-exit ")
)
(if (= (logand s5-0 (surface-flag attack)) (surface-flag attack))
(format #t "attack ")
)
(if (= (logand s5-0 (surface-flag turn-to-pad)) (surface-flag turn-to-pad))
(format #t "turn-to-pad ")
)
(if (= (logand (surface-flag spin) s5-0) (surface-flag spin))
(format #t "spin ")
)
(if (= (logand s5-0 (surface-flag no-jump)) (surface-flag no-jump))
(format #t "no-jump ")
)
(if (= (logand s5-0 (surface-flag look-around)) (surface-flag look-around))
(format #t "look-around ")
)
(if (= (logand (surface-flag gun-off) s5-0) (surface-flag gun-off))
(format #t "gun-off ")
)
(if (= (logand (surface-flag gun-turn-fast) s5-0) (surface-flag gun-turn-fast))
(format #t "gun-turn-fast ")
)
(if (= (logand s5-0 (surface-flag turn-when-centered)) (surface-flag turn-when-centered))
(format #t "turn-when-centered ")
)
(if (= (logand (surface-flag laser-hide) s5-0) (surface-flag laser-hide))
(format #t "laser-hide ")
)
(if (= (logand (surface-flag turn-to-alt) s5-0) (surface-flag turn-to-alt))
(format #t "turn-to-alt ")
)
(if (= (logand s5-0 (surface-flag no-attack)) (surface-flag no-attack))
(format #t "no-attack ")
)
(if (= (logand (surface-flag gun-no-twist) s5-0) (surface-flag gun-no-twist))
(format #t "gun-no-twist ")
)
(if (= (logand s5-0 (surface-flag air)) (surface-flag air))
(format #t "air ")
)
(if (= (logand s5-0 (surface-flag duck)) (surface-flag duck))
(format #t "duck ")
)
(if (= (logand s5-0 (surface-flag no-turn-around)) (surface-flag no-turn-around))
(format #t "no-turn-around ")
)
(if (= (logand s5-0 (surface-flag no-hands)) (surface-flag no-hands))
(format #t "no-hands ")
)
(if (= (logand (surface-flag gun-hide) s5-0) (surface-flag gun-hide))
(format #t "gun-hide ")
)
(if (= (logand s5-0 (surface-flag check-edge)) (surface-flag check-edge))
(format #t "check-edge ")
)
(if (= (logand (surface-flag super) s5-0) (surface-flag super))
(format #t "super ")
)
(if (= (logand s5-0 (surface-flag smooth-collision)) (surface-flag smooth-collision))
(format #t "smooth-collision ")
)
)
(format #t ")~%")
(label cfg-64)
this
)
;; definition for function calc-terminal-vel
(defun calc-terminal-vel ((arg0 float) (arg1 float) (arg2 float))
(- (* (/ (- (* 0.016666668 arg0) arg1) arg2) (- 1.0 arg2)) arg1)
)
;; definition for function calc-terminal2-vel
(defun calc-terminal2-vel ((arg0 float) (arg1 float) (arg2 float) (arg3 float))
(let ((f0-4 (sqrtf (/ (- (* 0.016666668 arg0) arg1) arg2))))
(- f0-4 (+ arg1 (* arg2 (* f0-4 f0-4))))
)
)
;; definition for function calc-terminal4-vel
(defun calc-terminal4-vel ((arg0 float) (arg1 float) (arg2 float))
(let ((f0-5 (sqrtf (sqrtf (/ (- (* 0.016666668 arg0) arg1) arg2)))))
(- f0-5 (+ arg1 (* arg2 (* f0-5 f0-5 f0-5 f0-5))))
)
)
;; definition for method 2 of type surface
;; ERROR: Function may read a register that is not set: t3
(defmethod print ((this surface))
(local-vars (t3-0 none))
(format
#t
"#<surface f0:~m f1:~f tf+:~f tf-:~f sf:~f tvv:~m"
(-> this turnv)
(-> this turnvv)
(-> this tiltv)
(-> this tiltvv)
(-> this transv-max)
t3-0
)
(format #t " tm:~m rv:~R rvv:~R @ #x~X>" (-> this target-speed) (-> this seek0) (-> this seek90) this)
this
)
;; definition for function surface-interp!
(defun surface-interp! ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 float))
(dotimes (v1-0 30)
(set! (-> arg0 data v1-0) (+ (* (-> arg2 data v1-0) arg3) (* (-> arg1 data v1-0) (- 1.0 arg3))))
)
(dotimes (v1-3 5)
(set! (-> arg0 hook v1-3) (cond
((and (nonzero? (-> arg2 hook v1-3)) (!= (-> arg2 hook v1-3) nothing))
(-> arg2 hook v1-3)
)
((and (nonzero? (-> arg1 hook v1-3)) (!= (-> arg1 hook v1-3) nothing))
(-> arg1 hook v1-3)
)
(else
nothing
)
)
)
)
(dotimes (v1-6 2)
(set! (-> arg0 dataw v1-6) (-> arg2 dataw v1-6))
)
arg0
)
;; definition for function surface-mult!
(defun surface-mult! ((arg0 surface) (arg1 surface) (arg2 surface))
(dotimes (v1-0 30)
(set! (-> arg0 data v1-0) (* (-> arg2 data v1-0) (-> arg1 data v1-0)))
)
(dotimes (v1-3 5)
(set! (-> arg0 hook v1-3) (cond
((and (nonzero? (-> arg2 hook v1-3)) (!= (-> arg2 hook v1-3) nothing))
(-> arg2 hook v1-3)
)
((and (nonzero? (-> arg1 hook v1-3)) (!= (-> arg1 hook v1-3) nothing))
(-> arg1 hook v1-3)
)
(else
nothing
)
)
)
)
(dotimes (v1-6 2)
(set! (-> arg0 dataw v1-6) (-> arg2 dataw v1-6))
)
(set! (-> arg0 flags) (logior (-> arg1 flags) (-> arg2 flags)))
((-> arg0 mult-hook) arg0 arg1 arg2 1)
arg0
)
;; definition for function surface-clamp-speed
;; WARN: Return type mismatch float vs none.
(defun surface-clamp-speed ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int))
(when (= arg3 1)
(set! (-> arg0 transv-max) (fmin (-> arg0 transv-max) (-> arg1 transv-max)))
(set! (-> arg0 target-speed) (fmin (-> arg0 target-speed) (-> arg1 target-speed)))
)
(none)
)
;; definition for symbol *walk-mods*, type surface
(define *walk-mods* (new 'static 'surface
:name 'run
:turnv 131072.0
:turnvf 30.0
:turnvv 524288.0
:turnvvf 30.0
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 1.0
:seek90 1.0
:seek180 1.0
:fric 1.0
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:flags (surface-flag look-around)
)
)
;; definition for symbol *walk-no-turn-mods*, type surface
(define *walk-no-turn-mods* (new 'static 'surface
:name 'run
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 1.0
:seek90 1.0
:seek180 1.0
:fric 1.0
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
)
)
;; definition for symbol *turn-around-mods*, type surface
(define *turn-around-mods* (new 'static 'surface
:name 'run
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:fric 0.1
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:flags (surface-flag no-turn-around)
)
)
;; definition for symbol *jump-mods*, type surface
(define *jump-mods* (new 'static 'surface
:name 'jump
:turnv 131072.0
:turnvf 30.0
:turnvv 18204.445
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 0.3
:seek90 0.3
:seek180 0.3
:fric 0.2
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air)
)
)
;; definition for symbol *double-jump-mods*, type surface
(define *double-jump-mods* (new 'static 'surface
:name 'jump-double
:turnv 131072.0
:turnvf 30.0
:turnvv 18204.445
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 32768.0
:target-speed 32768.0
:seek0 0.3
:seek90 0.3
:seek180 0.3
:fric 0.2
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air)
)
)
;; definition for symbol *smack-jump-mods*, type surface
(define *smack-jump-mods* (new 'static 'surface
:name 'jump
:turnv 131072.0
:turnvf 30.0
:turnvv 18204.445
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 0.3
:seek90 0.3
:seek180 0.3
:fric 0.05
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air gun-inactive)
)
)
;; definition for symbol *high-jump-mods*, type surface
(define *high-jump-mods* (new 'static 'surface
:name 'high-jump
:turnv 131072.0
:turnvf 30.0
:turnvv 65536.0
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 26624.0
:target-speed 26624.0
:seek0 0.9
:seek90 0.9
:seek180 0.9
:fric 0.3
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air)
)
)
;; definition for symbol *launch-jump-mods*, type surface
(define *launch-jump-mods* (new 'static 'surface
:name 'launch-jump
:turnv 131072.0
:turnvf 30.0
:turnvv 65536.0
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 61440.0
:target-speed 61440.0
:seek0 0.9
:seek90 0.9
:seek180 0.9
:fric 0.3
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag no-attack check-edge air)
)
)
;; definition for symbol *forward-high-jump-mods*, type surface
(define *forward-high-jump-mods* (new 'static 'surface
:name 'high-jump
:turnv 131072.0
:turnvf 30.0
:turnvv 65536.0
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 45056.0
:target-speed 45056.0
:seek0 0.9
:seek90 0.9
:seek180 0.9
:fric 0.3
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air)
)
)
;; definition for symbol *flip-jump-mods*, type surface
(define *flip-jump-mods* (new 'static 'surface
:name 'high-jump
:turnv 131072.0
:turnvf 30.0
:turnvv 65536.0
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 80281.6
:target-speed 51200.0
:seek0 0.9
:seek90 0.9
:seek180 0.9
:fric 0.3
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air)
)
)
;; definition for symbol *forward-jump-mods*, type surface
(define *forward-jump-mods* (new 'static 'surface
:name 'jump
:turnv 131072.0
:turnvf 30.0
:turnvv 18204.445
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 65536.0
:target-speed 65536.0
:seek0 0.3
:seek90 0.3
:seek180 0.3
:fric 0.05
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air)
)
)
;; definition for symbol *forward-pole-jump-mods*, type surface
(define *forward-pole-jump-mods* (new 'static 'surface
:name 'jump
:turnv 131072.0
:turnvf 30.0
:turnvv 18204.445
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 53248.0
:target-speed 53248.0
:seek0 0.3
:seek90 0.3
:seek180 0.3
:fric 0.05
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag check-edge air gun-hide gun-fast-exit)
)
)
;; failed to figure out what this is:
(let ((v1-20 (copy *jump-mods* 'global)))
(set! (-> v1-20 flags) (surface-flag check-edge air super))
(set! (-> v1-20 name) 'high-jump)
(set! (-> v1-20 target-speed) 245760.0)
(set! (-> v1-20 transv-max) 245760.0)
(set! (-> v1-20 seek0) 0.9)
(set! *dark-jump-mods* v1-20)
)
;; definition for symbol *roll-mods*, type surface
(define *roll-mods* (new 'static 'surface
:name 'roll
:turnv 131072.0
:turnvf 30.0
:turnvv 5461.3335
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 91750.4
:target-speed 11468.8
:seek0 1.0
:seek90 1.0
:seek180 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 0.25
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'attack
:flags (surface-flag no-turn-around attack gun-inactive gun-no-twist no-board)
)
)
;; definition for symbol *roll-flip-mods*, type surface
(define *roll-flip-mods*
(new 'static 'surface
:name 'roll-flip
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 91750.4
:target-speed 103219.195
:seek90 0.5
:seek180 0.15
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 0.25
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'attack
:flags (surface-flag no-turn-around check-edge air attack gun-inactive gun-no-twist no-board)
)
)
;; definition for symbol *flop-mods*, type surface
(define *flop-mods* (new 'static 'surface
:name 'flop
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 1.0
:seek90 0.3
:seek180 1.5
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 0.25
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'attack
:flags (surface-flag air attack gun-inactive gun-no-twist)
)
)
;; failed to figure out what this is:
(let ((a0-9 (new 'static 'surface
:name 'flop
:turnv 9102.223
:turnvf 30.0
:turnvv 9102.223
:turnvvf 30.0
:tiltv 32768.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 0.3
:seek90 0.1
:seek180 0.15
:fric 0.2
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 0.25
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'air
:flags (surface-flag air gun-inactive gun-no-twist)
)
)
)
(set! (-> a0-9 mult-hook) surface-clamp-speed)
(set! *flop-land-mods* a0-9)
)
;; definition for symbol *wade-mods*, type surface
(define *wade-mods* (new 'static 'surface
:name 'wade
:turnv 131072.0
:turnvf 30.0
:turnvv 524288.0
:turnvvf 30.0
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:seek0 1.0
:seek90 0.5
:seek180 0.5
:fric 1.0
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'wade
:flags (surface-flag look-around)
)
)
;; definition for symbol *swim-mods*, type surface
(define *swim-mods* (new 'static 'surface
:name 'swim
:turnv 49152.0
:turnvf 30.0
:turnvv 524288.0
:turnvvf 30.0
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 28672.0
:target-speed 28672.0
:seek0 0.75
:seek90 0.2
:seek180 0.2
:fric 0.05
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'swim
:flags (surface-flag gun-off)
)
)
;; definition for symbol *dive-mods*, type surface
(define *dive-mods* (new 'static 'surface
:name 'swim
:turnv 21845.334
:turnvf 30.0
:turnvv 32768.0
:turnvvf 30.0
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 20480.0
:target-speed 20480.0
:seek0 0.05
:seek90 0.05
:seek180 0.05
:fric 1.0
:nonlin-fric-dist 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:align-speed 1.0
:mode 'dive
:flags (surface-flag xz-local gun-off gun-fast-exit)
)
)
;; definition for symbol *dive-bottom-mods*, type surface
(define *dive-bottom-mods* (new 'static 'surface
:name 'swim-bottom
:turnv 21845.334
:turnvf 30.0
:turnvv 32768.0
:turnvvf 30.0
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 20480.0
:target-speed 20480.0
:seek0 0.1
:seek90 0.05
:seek180 0.05
:fric 1.0
:nonlin-fric-dist 1.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:mode 'dive
:flags (surface-flag xz-local gun-off gun-fast-exit)
)
)
;; failed to figure out what this is:
(let ((v1-30 (copy *walk-mods* 'global)))
(set! (-> v1-30 name) 'pole)
(set! (-> v1-30 flags) (surface-flag gun-hide gun-fast-exit))
(set! *pole-mods* v1-30)
)
;; failed to figure out what this is:
(let ((v1-32 (copy *walk-mods* 'global)))
(set! (-> v1-32 name) 'grab)
(set! (-> v1-32 flags) (surface-flag sf29))
(set! *grab-mods* v1-32)
)
;; failed to figure out what this is:
(let ((v1-34 (copy *walk-mods* 'global)))
(set! (-> v1-34 name) 'edge-grab)
(set! (-> v1-34 flags) (surface-flag gun-inactive gun-no-twist sf29))
(set! *edge-grab-mods* v1-34)
)
;; definition for symbol *empty-mods*, type surface
(define *empty-mods* (new 'static 'surface
:name 'empty
:seek0 1.0
:seek90 1.0
:seek180 1.0
:fric 1.0
:flags (surface-flag gun-off)
)
)
;; definition for symbol *empty-mods-allow-gun*, type surface
(define *empty-mods-allow-gun* (new 'static 'surface
:name 'empty
:seek0 1.0
:seek90 1.0
:seek180 1.0
:fric 1.0
:flags (surface-flag gun-inactive gun-no-twist sf29)
)
)
;; definition for symbol *neutral-mods*, type surface
(define *neutral-mods* (new 'static 'surface
:name 'walk
:turnv 131072.0
:turnvf 30.0
:turnvv 524288.0
:turnvvf 30.0
:tiltv 65536.0
:tiltvf 150.0
:tiltvv 262144.0
:tiltvvf 15.0
:transv-max 40960.0
:target-speed 40960.0
:slip-factor 1.0
:slide-factor 1.0
:slope-up-factor 1.0
:slope-down-factor 1.0
:slope-slip-angle 1.0
:impact-fric 1.0
:bend-factor 1.0
:bend-speed 1.0
:slope-up-traction 1.0
:align-speed 1.0
)
)
;; failed to figure out what this is:
(let ((v1-38 (new 'static 'surface
:name '*stone-surface*
:turnv 1.0
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 1.0
:target-speed 1.0
:seek0 153600.0
:seek90 153600.0
:seek180 256000.0
:fric 153600.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slope-down-factor 10240.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:slope-change-preserve 1.0
)
)
)
(set! *stone-surface* v1-38)
(set! (-> v1-38 exit-hook) nothing)
(set! (-> v1-38 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-38 touch-hook) nothing)
(set! (-> v1-38 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-39 (new 'static 'surface
:name '*mushroom-surface*
:turnv 1.0
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 1.0
:target-speed 1.0
:seek0 153600.0
:seek90 153600.0
:seek180 256000.0
:fric 153600.0
:nonlin-fric-dist 5120.0
:slip-factor 0.25
:slope-down-factor 10240.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:slope-change-preserve 1.0
)
)
)
(set! *mushroom-surface* v1-39)
(set! (-> v1-39 exit-hook) nothing)
(set! (-> v1-39 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-39 touch-hook) (lambda () (mushroom-surface-touch) (none)))
(set! (-> v1-39 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-40 (new 'static 'surface
:name '*gravel-surface*
:turnv 1.0
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 1.0
:target-speed 1.0
:seek0 153600.0
:seek90 153600.0
:seek180 256000.0
:fric 153600.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slide-factor 1.0
:slope-down-factor 32768.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:slope-change-preserve 1.0
)
)
)
(set! *gravel-surface* v1-40)
(set! (-> v1-40 exit-hook) nothing)
(set! (-> v1-40 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-40 touch-hook) (lambda () (gravel-surface-touch) (none)))
(set! (-> v1-40 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-41 (new 'static 'surface
:name '*edge-surface*
:turnv 1.0
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 1.0
:target-speed 1.0
:seek0 153600.0
:seek90 153600.0
:seek180 256000.0
:fric 30720.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slope-down-factor 18432.0
:slope-slip-angle 10922.667
:bend-factor 0.8
:bend-speed 4.0
:alignv 1.0
:align-speed 1.0
)
)
)
(set! *edge-surface* v1-41)
(set! (-> v1-41 exit-hook) nothing)
(set! (-> v1-41 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-41 touch-hook) nothing)
(set! (-> v1-41 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-42 (new 'static 'surface
:name '*wade-surface*
:turnv 1.0
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 0.7
:target-speed 0.7
:seek0 153600.0
:seek90 153600.0
:seek180 256000.0
:fric 153600.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slope-down-factor 10240.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 0.6
:slope-up-traction 1.0
:align-speed 0.6
)
)
)
(set! *wade-surface* v1-42)
(set! (-> v1-42 exit-hook) nothing)
(set! (-> v1-42 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-42 touch-hook) nothing)
(set! (-> v1-42 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-43 (new 'static 'surface
:name '*quicksand-surface*
:turnv 0.25
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 0.5
:target-speed 0.5
:seek0 81920.0
:seek90 83968.0
:seek180 165888.0
:fric 329728.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slope-down-factor 10240.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 0.5
:slope-up-traction 1.0
:align-speed 0.5
)
)
)
(set! *quicksand-surface* v1-43)
(set! (-> v1-43 exit-hook) nothing)
(set! (-> v1-43 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-43 touch-hook) nothing)
(set! (-> v1-43 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-44 (new 'static 'surface
:name '*tar-surface*
:turnv 0.25
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 0.4
:target-speed 0.4
:seek0 81920.0
:seek90 83968.0
:seek180 165888.0
:fric 329728.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slope-down-factor 10240.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 0.5
:slope-up-traction 1.0
:align-speed 0.5
)
)
)
(set! *tar-surface* v1-44)
(set! (-> v1-44 exit-hook) nothing)
(set! (-> v1-44 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-44 touch-hook) nothing)
(set! (-> v1-44 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-45 (new 'static 'surface
:name '*ice-surface*
:turnv 0.5
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 1.5
:target-speed 1.5
:seek0 24576.0
:seek90 24576.0
:seek180 24576.0
:fric 23756.8
:nonlin-fric-dist 4091904.0
:slip-factor 0.7
:slope-slip-angle 16384.0
:bend-speed 4.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:flags (surface-flag no-turn-around turn-to-pad)
)
)
)
(set! *ice-surface* v1-45)
(set! (-> v1-45 exit-hook) nothing)
(set! (-> v1-45 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-45 touch-hook) nothing)
(set! (-> v1-45 active-hook) nothing)
)
;; failed to figure out what this is:
(let ((v1-46 (new 'static 'surface
:name '*rail-surface*
:turnv 1.0
:turnvf 1.0
:turnvv 1.0
:turnvvf 1.0
:tiltv 1.0
:tiltvf 1.0
:tiltvv 1.0
:tiltvvf 1.0
:vel-turn 1.0
:transv-max 1.0
:target-speed 1.0
:seek0 153600.0
:seek90 153600.0
:seek180 256000.0
:fric 153600.0
:nonlin-fric-dist 5120.0
:slip-factor 1.0
:slope-down-factor 10240.0
:slope-slip-angle 10922.667
:impact-fric 1.0
:bend-factor 0.8
:bend-speed 4.0
:alignv 1.0
:slope-up-traction 1.0
:align-speed 1.0
:slope-change-preserve 1.0
:flags (surface-flag no-attack)
)
)
)
(set! *rail-surface* v1-46)
(set! (-> v1-46 exit-hook) nothing)
(set! (-> v1-46 mult-hook) (the-as (function surface surface surface int none) nothing))
(set! (-> v1-46 touch-hook) (lambda () (rail-surface-touch) (none)))
(set! (-> v1-46 active-hook) nothing)
)
;; definition for symbol *standard-ground-surface*, type surface
(define *standard-ground-surface* *stone-surface*)
;; definition for symbol *swim-surface*, type surface
(define *swim-surface* *stone-surface*)
;; failed to figure out what this is:
0