mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-20 21:27:52 -04:00
7867de8fd7
* move commonly used scripts to specific folders * fixes * Update test.sh * Update test.sh * Fix file permission * move commonly used scripts to specific folders * fixes * Update test.sh * Update test.sh * Fix file permission * scripts to annoy me less * [dynamics-h] clean-up * make things neat * more cleanup * update surface-h * fix error * fix typo * Spoonfeed the compiler * [surface-h] rename sqrt to sqrtf
1237 lines
32 KiB
Common Lisp
1237 lines
32 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: surface-h.gc
|
|
;; name in dgo: surface-h
|
|
;; dgos: GAME, ENGINE
|
|
|
|
(deftype surface (basic)
|
|
((name basic :offset-assert 4)
|
|
;;(data UNKNOWN 30 :offset-assert 8)
|
|
(turnv float :offset-assert 8)
|
|
(turnvv float :offset-assert 12)
|
|
(tiltv float :offset-assert 16)
|
|
(tiltvv float :offset-assert 20)
|
|
(transv-max float :offset-assert 24)
|
|
(target-speed float :offset-assert 28)
|
|
(seek0 float :offset-assert 32)
|
|
(seek90 float :offset-assert 36)
|
|
(seek180 float :offset-assert 40)
|
|
(fric float :offset-assert 44)
|
|
(nonlin-fric-dist float :offset-assert 48)
|
|
(slip-factor float :offset-assert 52)
|
|
(slide-factor float :offset-assert 56)
|
|
(slope-up-factor float :offset-assert 60)
|
|
(slope-down-factor float :offset-assert 64)
|
|
(slope-slip-angle float :offset-assert 68)
|
|
(impact-fric float :offset-assert 72)
|
|
(bend-factor float :offset-assert 76)
|
|
(bend-speed float :offset-assert 80)
|
|
(alignv float :offset-assert 84)
|
|
(slope-up-traction float :offset-assert 88)
|
|
(align-speed float :offset-assert 92)
|
|
;;(hook UNKNOWN 4 :offset-assert 128)
|
|
(active-hook basic :offset 128)
|
|
(touch-hook basic :offset-assert 132)
|
|
(impact-hook basic :offset-assert 136)
|
|
(mult-hook (function surface surface surface int none) :offset-assert 140)
|
|
;;(dataw UNKNOWN 2 :offset-assert 144)
|
|
(mode basic :offset-assert 144)
|
|
(flags uint32 :offset-assert 148)
|
|
|
|
;; overlays used for copying data.
|
|
(data float 30 :offset 8)
|
|
(hook basic 4 :offset 128)
|
|
(dataw uint32 2 :offset 144)
|
|
)
|
|
:method-count-assert 9
|
|
:size-assert #x98
|
|
:flag-assert #x900000098
|
|
)
|
|
|
|
(defun calc-terminal-vel ((arg0 float) (arg1 float) (arg2 float))
|
|
(- (* (/ (- (* 0.016666668 arg0) arg1) arg2) (- 1.0 arg2))
|
|
arg1)
|
|
)
|
|
|
|
(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))))
|
|
)
|
|
)
|
|
|
|
(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))))
|
|
)
|
|
)
|
|
|
|
(defmethod print surface ((obj surface))
|
|
;; seems like an off-by-one bug in the format string here.
|
|
(format
|
|
#t
|
|
"#<surface f0:~m f1:~f tf+:~f tf-:~f sf:~f tvv:~m"
|
|
(-> obj turnv)
|
|
(-> obj turnvv)
|
|
(-> obj tiltv)
|
|
(-> obj tiltvv)
|
|
(-> obj transv-max)
|
|
0 ;; seems to be a bug here
|
|
)
|
|
(format
|
|
#t
|
|
" tm:~m rv:~R rvv:~R @ #x~X>"
|
|
(-> obj target-speed)
|
|
(-> obj seek0)
|
|
(-> obj seek90)
|
|
obj
|
|
)
|
|
obj
|
|
)
|
|
|
|
(defun surface-interp! ((dst surface) (src0 surface) (src1 surface) (amount float))
|
|
"Create a surface between src0 and src1. For things like hooks/mode, src1 wins."
|
|
|
|
;; iterate through surface data
|
|
(dotimes (v1-0 30)
|
|
;; interpolate between the two
|
|
(set! (-> dst data v1-0)
|
|
(+ (* (-> src1 data v1-0) amount)
|
|
(* (-> src0 data v1-0) (- 1.0 amount)))
|
|
)
|
|
)
|
|
|
|
;; iterate through hooks. Check src1, then src0 for a nonzero and non-nothing hook.
|
|
;; if there is no good hook, set it to nothing.
|
|
(dotimes (v1-3 4)
|
|
(set! (-> dst hook v1-3)
|
|
(if (and (nonzero? (-> src1 hook v1-3)) (!= (-> src1 hook v1-3) nothing))
|
|
(-> src1 hook v1-3)
|
|
(if (and (nonzero? (-> src0 hook v1-3)) (!= (-> src0 hook v1-3) nothing))
|
|
(-> src0 hook v1-3)
|
|
nothing
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
;; just use the dataw's from src1
|
|
(dotimes (v1-6 2)
|
|
(set! (-> dst dataw v1-6) (-> src1 dataw v1-6))
|
|
)
|
|
|
|
dst
|
|
)
|
|
|
|
(defun surface-mult! ((dst surface) (src0 surface) (src1 surface))
|
|
"Multiply src0 by src1, and store the result in dst."
|
|
|
|
(dotimes (v1-0 30)
|
|
(set! (-> dst data v1-0) (* (-> src1 data v1-0) (-> src0 data v1-0)))
|
|
)
|
|
(dotimes (v1-3 4)
|
|
(set! (-> dst hook v1-3)
|
|
(if (and (nonzero? (-> src1 hook v1-3)) (!= (-> src1 hook v1-3) nothing))
|
|
(-> src1 hook v1-3)
|
|
(if (and (nonzero? (-> src0 hook v1-3)) (!= (-> src0 hook v1-3) nothing))
|
|
(-> src0 hook v1-3)
|
|
nothing
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(dotimes (v1-6 2)
|
|
(set! (-> dst dataw v1-6) (-> src1 dataw v1-6))
|
|
)
|
|
;; take the or of the flags, I guess
|
|
(set! (-> dst flags) (logior (-> src0 flags) (-> src1 flags)))
|
|
;; and call the mult-hook
|
|
((-> dst mult-hook) dst src0 src1 1)
|
|
dst
|
|
)
|
|
|
|
(defun surface-clamp-speed ((arg0 surface) (arg1 surface) (arg2 surface) (arg3 int))
|
|
"When arg3 is 1, clamp speed of arg0 to the mins of arg0/arg1"
|
|
(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)
|
|
)
|
|
|
|
(define *walk-mods*
|
|
(new 'static 'surface
|
|
:name 'run
|
|
:turnv 131072.0
|
|
:turnvv 524288.0
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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 #x1
|
|
)
|
|
)
|
|
|
|
(define *walk-no-turn-mods*
|
|
(new 'static 'surface
|
|
:name 'run
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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
|
|
)
|
|
)
|
|
|
|
(define *turn-around-mods*
|
|
(new 'static 'surface
|
|
:name 'run
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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
|
|
)
|
|
)
|
|
|
|
(let ((a0-3
|
|
(new 'static 'surface
|
|
:name 'duck
|
|
:turnv 131072.0
|
|
:turnvv 524288.0
|
|
:tiltv 65536.0
|
|
:tiltvv 291271.12
|
|
:transv-max 16384.0
|
|
:target-speed 16384.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 #x2000
|
|
)
|
|
))
|
|
(set! (-> a0-3 mult-hook) surface-clamp-speed)
|
|
(define *duck-mods* a0-3)
|
|
)
|
|
|
|
(define *duck-attack-mods*
|
|
(new 'static 'surface
|
|
:name 'duck
|
|
:tiltv 65536.0
|
|
:tiltvv 291271.12
|
|
:transv-max 16384.0
|
|
:target-speed 16384.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
|
|
:mode 'attack
|
|
:flags #x3000
|
|
)
|
|
)
|
|
|
|
(define *jump-mods*
|
|
(new 'static 'surface
|
|
:name 'jump
|
|
:turnv 131072.0
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *double-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'jump-double
|
|
:turnv 131072.0
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *smack-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'jump
|
|
:turnv 131072.0
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *high-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'high-jump
|
|
:turnv 131072.0
|
|
:turnvv 65536.0
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *launch-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'launch-jump
|
|
:turnv 18204.445
|
|
:turnvv 65536.0
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc80
|
|
)
|
|
)
|
|
|
|
(define *forward-high-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'high-jump
|
|
:turnv 131072.0
|
|
:turnvv 65536.0
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *flip-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'high-jump
|
|
:turnv 131072.0
|
|
:turnvv 65536.0
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *forward-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'jump
|
|
:turnv 131072.0
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *forward-pole-jump-mods*
|
|
(new 'static 'surface
|
|
:name 'jump
|
|
:turnv 131072.0
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #xc00
|
|
)
|
|
)
|
|
|
|
(define *attack-mods*
|
|
(new 'static 'surface
|
|
:name 'attack
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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
|
|
:mode 'attack
|
|
:flags #x1000
|
|
)
|
|
)
|
|
|
|
(define *jump-attack-mods*
|
|
(new 'static 'surface
|
|
:name 'attack
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.0
|
|
:transv-max 24576.0
|
|
:target-speed 24576.0
|
|
:seek0 0.9
|
|
:seek90 0.9
|
|
:seek180 0.9
|
|
: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 #x1c00
|
|
)
|
|
)
|
|
|
|
(let ((a0-4
|
|
(new 'static 'surface
|
|
:name 'uppercut
|
|
:turnvv 18204.445
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #x1c00
|
|
)
|
|
))
|
|
(set! (-> a0-4 mult-hook) surface-clamp-speed)
|
|
(define *uppercut-jump-mods* a0-4)
|
|
)
|
|
|
|
(define *run-attack-mods*
|
|
(new 'static 'surface
|
|
:name 'wheel-flip
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.0
|
|
:transv-max 91750.4
|
|
:target-speed 122880.0
|
|
: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 #x1018
|
|
)
|
|
)
|
|
|
|
(define *wheel-mods*
|
|
(new 'static 'surface
|
|
:name 'wheel
|
|
:turnv 131072.0
|
|
:turnvv 5461.3335
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #x1000
|
|
)
|
|
)
|
|
|
|
(define *wheel-flip-mods*
|
|
(new 'static 'surface
|
|
:name 'wheel-flip
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #x1c00
|
|
)
|
|
)
|
|
|
|
(define *flop-mods*
|
|
(new 'static 'surface
|
|
:name 'flop
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #x1800
|
|
)
|
|
)
|
|
|
|
(let ((a0-5
|
|
(new 'static 'surface
|
|
:name 'flop
|
|
:turnv 9102.223
|
|
:turnvv 9102.223
|
|
:tiltv 32768.0
|
|
:tiltvv 131072.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 #x800
|
|
)
|
|
))
|
|
(set! (-> a0-5 mult-hook) surface-clamp-speed)
|
|
(define *flop-land-mods* a0-5)
|
|
)
|
|
|
|
(define *wade-mods*
|
|
(new 'static 'surface
|
|
:name 'wade
|
|
:turnv 131072.0
|
|
:turnvv 524288.0
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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 #x1
|
|
)
|
|
)
|
|
|
|
(define *swim-mods*
|
|
(new 'static 'surface
|
|
:name 'swim
|
|
:turnv 49152.0
|
|
:turnvv 524288.0
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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
|
|
)
|
|
)
|
|
|
|
(define *dive-mods*
|
|
(new 'static 'surface
|
|
:name 'swim
|
|
:turnv 21845.334
|
|
:turnvv 32768.0
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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 #x2
|
|
)
|
|
)
|
|
|
|
(define *dive-bottom-mods*
|
|
(new 'static 'surface
|
|
:name 'swim-bottom
|
|
:turnv 21845.334
|
|
:turnvv 32768.0
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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 #x2
|
|
)
|
|
)
|
|
|
|
(let ((a0-7 (copy *walk-mods* 'global)))
|
|
(set! (-> a0-7 name) 'pole)
|
|
(set! (-> a0-7 flags) 0)
|
|
(define *pole-mods* a0-7)
|
|
)
|
|
|
|
(let ((a0-9 (copy *walk-mods* 'global)))
|
|
(set! (-> a0-9 name) 'grab)
|
|
(set! (-> a0-9 flags) 0)
|
|
(define *grab-mods* a0-9)
|
|
)
|
|
|
|
(let ((a0-11 (copy *walk-mods* 'global)))
|
|
(set! (-> a0-11 name) 'edge-grab)
|
|
(set! (-> a0-11 flags) 0)
|
|
(define *edge-grab-mods* a0-11)
|
|
)
|
|
|
|
(define *empty-mods*
|
|
(new 'static 'surface
|
|
:name 'empty
|
|
:seek0 1.0
|
|
:seek90 1.0
|
|
:seek180 1.0
|
|
:fric 1.0
|
|
)
|
|
)
|
|
|
|
(define *neutral-mods*
|
|
(new 'static 'surface
|
|
:name 'walk
|
|
:turnv 131072.0
|
|
:turnvv 524288.0
|
|
:tiltv 65536.0
|
|
:tiltvv 131072.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
|
|
)
|
|
)
|
|
|
|
(let ((v1-41
|
|
(new 'static 'surface
|
|
:name '*stone-surface*
|
|
:turnv 1.0
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 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 8192.0
|
|
:impact-fric 1.0
|
|
:bend-factor 0.8
|
|
:bend-speed 4.0
|
|
:alignv 1.0
|
|
:slope-up-traction 1.0
|
|
:align-speed 1.0
|
|
)
|
|
))
|
|
(define *stone-surface* v1-41)
|
|
(set! (-> v1-41 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-41 touch-hook) nothing)
|
|
(set! (-> v1-41 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-42
|
|
(new 'static 'surface
|
|
:name '*edge-surface*
|
|
:turnv 1.0
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 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 8192.0
|
|
:bend-factor 0.8
|
|
:bend-speed 4.0
|
|
:alignv 1.0
|
|
:align-speed 1.0
|
|
)
|
|
))
|
|
(define *edge-surface* v1-42)
|
|
(set! (-> v1-42 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-42 touch-hook) nothing)
|
|
(set! (-> v1-42 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-43
|
|
(new 'static 'surface
|
|
:name '*wade-surface*
|
|
:turnv 1.0
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 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 8192.0
|
|
:impact-fric 1.0
|
|
:bend-factor 0.8
|
|
:bend-speed 4.0
|
|
:alignv 0.6
|
|
:slope-up-traction 1.0
|
|
:align-speed 0.6
|
|
)
|
|
))
|
|
(define *wade-surface* v1-43)
|
|
(set! (-> v1-43 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-43 touch-hook) nothing)
|
|
(set! (-> v1-43 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-44
|
|
(new 'static 'surface
|
|
:name '*slope-surface*
|
|
:turnv 1.0
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 1.0
|
|
:transv-max 1.0
|
|
:target-speed 1.0
|
|
:seek0 122880.0
|
|
:seek90 245760.0
|
|
:seek180 409600.0
|
|
:fric 122880.0
|
|
:nonlin-fric-dist 4096.0
|
|
:slip-factor 1.0
|
|
:slope-up-factor 40960.0
|
|
:slope-down-factor 8192.0
|
|
:slope-slip-angle 8192.0
|
|
:impact-fric 1.0
|
|
:bend-factor 0.8
|
|
:bend-speed 4.0
|
|
:alignv 1.0
|
|
:align-speed 1.0
|
|
)
|
|
)
|
|
)
|
|
(define *slope-surface* v1-44)
|
|
(set! (-> v1-44 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-44 touch-hook) nothing)
|
|
(set! (-> v1-44 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-45
|
|
(new 'static 'surface
|
|
:name '*quicksand-surface*
|
|
:turnv 0.25
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 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 8192.0
|
|
:impact-fric 1.0
|
|
:bend-factor 0.8
|
|
:bend-speed 4.0
|
|
:alignv 0.5
|
|
:slope-up-traction 1.0
|
|
:align-speed 0.5
|
|
)
|
|
)
|
|
)
|
|
(define *quicksand-surface* v1-45)
|
|
(set! (-> v1-45 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-45 touch-hook) nothing)
|
|
(set! (-> v1-45 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-46
|
|
(new 'static 'surface
|
|
:name '*tar-surface*
|
|
:turnv 0.25
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 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 8192.0
|
|
:impact-fric 1.0
|
|
:bend-factor 0.8
|
|
:bend-speed 4.0
|
|
:alignv 0.5
|
|
:slope-up-traction 1.0
|
|
:align-speed 0.5
|
|
)
|
|
)
|
|
)
|
|
(define *tar-surface* v1-46)
|
|
(set! (-> v1-46 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-46 touch-hook) nothing)
|
|
(set! (-> v1-46 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-47
|
|
(new 'static 'surface
|
|
:name '*grass-surface*
|
|
:turnv 1.0
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 1.0
|
|
:transv-max 1.0
|
|
:target-speed 1.0
|
|
:seek0 122880.0
|
|
:seek90 122880.0
|
|
:seek180 409600.0
|
|
:fric 122880.0
|
|
:nonlin-fric-dist 4096.0
|
|
:slip-factor 1.0
|
|
:slope-slip-angle 16384.0
|
|
:impact-fric 0.5
|
|
:bend-speed 4.0
|
|
:alignv 1.0
|
|
:slope-up-traction 1.0
|
|
:align-speed 1.0
|
|
)
|
|
))
|
|
(define *grass-surface* v1-47)
|
|
(set! (-> v1-47 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-47 touch-hook) nothing)
|
|
(set! (-> v1-47 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-48
|
|
(new 'static 'surface
|
|
:name '*ice-surface*
|
|
:turnv 0.5
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 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 #x18
|
|
)
|
|
))
|
|
(define *ice-surface* v1-48)
|
|
(set! (-> v1-48 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-48 touch-hook) nothing)
|
|
(set! (-> v1-48 active-hook) nothing)
|
|
)
|
|
|
|
(let ((v1-49
|
|
(new 'static 'surface
|
|
:name '*tread-surface*
|
|
:turnv 1.0
|
|
:turnvv 1.0
|
|
:tiltv 1.0
|
|
:tiltvv 1.0
|
|
:transv-max 1.0
|
|
:target-speed 1.0
|
|
:seek0 122880.0
|
|
:seek90 245760.0
|
|
:seek180 409600.0
|
|
:fric 122880.0
|
|
:nonlin-fric-dist 4096.0
|
|
:slip-factor 1.0
|
|
:slope-up-factor 8192.0
|
|
:slope-down-factor 8192.0
|
|
:impact-fric 1.0
|
|
:bend-speed 4.0
|
|
:alignv 1.0
|
|
:slope-up-traction 1.0
|
|
:align-speed 1.0
|
|
)
|
|
)
|
|
)
|
|
(define *tread-surface* v1-49)
|
|
(set! (-> v1-49 mult-hook) (the (function surface surface surface int none) nothing))
|
|
(set! (-> v1-49 touch-hook) nothing)
|
|
(set! (-> v1-49 active-hook) nothing)
|
|
)
|
|
|
|
(define *standard-ground-surface* *stone-surface*)
|
|
(define *swim-surface* *stone-surface*)
|