jak-project/goal_src/jak3/levels/nest/mh-centipede-part.gc
Hat Kid e2e5289788
decomp3: font widescreen and shadow hacks, generic renderer, misc files (#3483)
- `pecker-ingame`
- `des-bbush-tasks`
- `des-burning-bush`
- `des-bush-part`
- `des-bush`
- `mh-centipede`
- `mh-centipede-part`
- `mh-wasp`
- `mh-wasp-part`
- `needle-fish`
- `des-bush-time-chase`
- `timer-path`
- `mission-squad-control-h`
- `mh-bat`
- `hover-nav-factoryd`
- `hover-nav-factoryc`
- `conveyor`
- `fac-part`
- `factory-part`
- `factoryc-mood`
- `factoryc-obs`
- `factoryc-obs2`
- `lfaccar-init`
- `factory-boss-part`
- `factory-boss-scenes`
- `factory-boss-setup`
- `factory-boss-states`
- `factory-mood`
- `factoryc-manager`
- `lfacrm1-mood`
- `lfacrm2-mood`
- `missile-bot`
- `sew-laser-turret`
- `ai-task-h`
- `ash-h`
- `ash-shot`
- `ash-states`
- `ash-task`
- `ash`
- `bot-h`
- `bot-states`
- `bot`
- `ash-oasis-course`
- `oasis-defense`
- `comb-field`
- `comb-mood`
- `comb-obs`
- `comb-part`
- `comb-scenes`
- `comb-sentry`
- `comb-travel`
- `comba-init`
- `combx-scenes`
- `h-sled`
- `destroy-dark-eco`
- `fac-gunturret`
- `fac-robotank-turret`
- `fac-robotank`
- `fac-tower`
- `factory-h`
- `factory-hud`
- `factory-manager`
- `factorya-init`
- `ffight-projectile`
- `ftank-projectile`
- `fturret-projectile`
- `h-warf`
- `warf-projectile`
2024-04-28 08:59:46 -04:00

1525 lines
53 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: mh-centipede-part.gc
;; name in dgo: mh-centipede-part
;; dgos: LNSTOBB
(define-extern *range-mhcent-splash-color* curve-color-fast)
(define-extern *range-mhcent-splash-alpha* curve2d-fast)
(define-extern *range-mhcent-splash-scale-x* curve2d-fast)
(define-extern *range-mhcent-splash-scale-y* curve2d-fast)
(define-extern *curve-mhcent-splash-alpha* curve2d-fast)
(define-extern *curve-mhcent-splash-scale-x* curve2d-fast)
(define-extern *curve-mhcent-splash-scale-y* curve2d-fast)
(define-extern *range-mh-centipede-shot-explo-color* curve-color-fast)
(define-extern *range-mh-centipede-shot-explo-alpha* curve2d-fast)
(define-extern *range-mh-centipede-shot-explo-scale-x* curve2d-fast)
(define-extern *range-mh-centipede-shot-explo-scale-y* curve2d-fast)
(define-extern *curve-mh-centipede-shot-explo-alpha* curve2d-fast)
(define-extern *curve-mh-centipede-shot-explo-scale-x* curve2d-fast)
(define-extern *curve-mh-centipede-shot-explo-scale-y* curve2d-fast)
;; DECOMP BEGINS
;; WARN: Return type mismatch float vs none.
(defun birth-func-ground-dirt-bounce ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(set! (-> arg1 omega) (-> arg2 launchrot y))
(none)
)
(defun spt-func-ground-dirt-bounce1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(when (and (< (-> arg2 launchrot y) (-> arg1 omega)) (< (-> arg1 vel-sxvel y) 0.0))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set-vector! s4-0 (-> arg2 launchrot x) (-> arg1 omega) (-> arg2 launchrot z) 1.0)
(launch-particles (-> *part-id-table* 2493) s4-0)
)
)
(none)
)
(defun spt-func-ground-dirt-bounce2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(when (and (< (-> arg2 launchrot y) (-> arg1 omega)) (< (-> arg1 vel-sxvel y) 0.0))
(let ((s4-0 (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set-vector! s4-0 (-> arg2 launchrot x) (-> arg1 omega) (-> arg2 launchrot z) 1.0)
(launch-particles (-> *part-id-table* 2494) s4-0)
)
)
(none)
)
;; WARN: Return type mismatch float vs none.
(defun spt-birth-func-brightness-mh-centipede-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 21) 100))
(s3-0 (logand 0 (rand-uint31-gen *random-generator*)))
(s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 20))
(v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 60))
)
(set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0))))
(set! (-> arg2 rotate-y) (the float (- s5-0 s4-0)))
(set! (-> arg2 rotate-z) (the float (- s5-0 v1-6)))
)
(none)
)
;; WARN: Return type mismatch float vs none.
(defun spt-birth-func-brightness-mh-centipede-dirt ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 31) 70))
(s3-0 (logand 0 (rand-uint31-gen *random-generator*)))
(s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 25))
(v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 60))
)
(set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0))))
(set! (-> arg2 rotate-y) (the float (- s5-0 s4-0)))
(set! (-> arg2 rotate-z) (the float (- s5-0 v1-6)))
)
(none)
)
;; WARN: Return type mismatch float vs none.
(defun spt-birth-func-brightness-mh-centipede-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 41) 70))
(s3-0 (logand 0 (rand-uint31-gen *random-generator*)))
(s4-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 25))
(v1-6 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 6) 60))
)
(set! (-> arg2 rotate-x) (the float (- s5-0 (the-as int s3-0))))
(set! (-> arg2 rotate-y) (the float (- s5-0 s4-0)))
(set! (-> arg2 rotate-z) (the float (- s5-0 v1-6)))
)
(none)
)
(defpartgroup group-mh-centipede-before-breach
:id 641
:duration (seconds 0.017)
:flags (sp0 sp4)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2495 :fade-after (meters 200) :falloff-to (meters 200))
(sp-item 2496 :fade-after (meters 200) :falloff-to (meters 200))
)
)
(defpart 2495
:init-specs ((:texture (dirtpuff01 level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-dust)
(:num 0.5)
(:scale-x (meters 5) (meters 5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 16.0 16.0)
(:vel-y (meters 0.033333335) (meters 0.06666667))
(:scalevel-x (meters 0.016666668) (meters 0.016666668))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.026666667 -0.026666667)
(:accel-y (meters 0.00033333333) (meters 0.001))
(:friction 0.96 0.02)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:conerot-x (degrees 80) (degrees 10))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2496
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-before-breach-rocks)
(:num 1.0)
(:x (meters 0) (meters 10))
(:scale-x (meters 0.4) (meters 0.5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.023333333) (meters 0.023333333))
(:rotvel-z (degrees -5) (degrees 10))
(:accel-y (meters -0.001))
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x408b00
#x408c00
#x40a100
#x40a200
#x40a300
#x40a400
#x40a500
#x40a600
#x40a700
#x40a800
#x40a900
#x40aa00
#x40ab00
#x40ac00
#x40ad00
#x40ae00
)
)
(:func 'spt-func-part-mh-centipede-before-breach-rocks)
(:conerot-x (degrees -5) (degrees 10))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-before-breach-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-rocks arg0 arg1 arg2 arg3 arg4)
(none)
)
(defun spt-func-part-mh-centipede-before-breach-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(sparticle-texture-animate arg0 arg1 (the-as vector arg2))
(check-drop-group-center arg0 arg1 arg2)
(none)
)
(defpartgroup group-mh-centipede-breach
:id 642
:duration (seconds 0.017)
:flags (sp0)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2497 :fade-after (meters 200) :falloff-to (meters 200))
(sp-item 2498 :fade-after (meters 200) :falloff-to (meters 200))
(sp-item 2499 :fade-after (meters 200) :falloff-to (meters 200))
)
)
(defpart 2497
:init-specs ((:texture (dirtpuff01 level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-dust)
(:num 2.0)
(:scale-x (meters 5) (meters 5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 32.0 64.0)
(:vel-y (meters 0.013333334) (meters 0.1))
(:scalevel-x (meters 0.006666667) (meters 0.01))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.064 -0.064)
(:accel-y (meters 0) (meters 0.00033333333))
(:friction 0.96)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:conerot-x (degrees 80) (degrees 10))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2498
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-breach-dirt)
(:num 4.0)
(:x (meters 0) (meters 6))
(:y (meters 3))
(:scale-x (meters 2) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.033333335) (meters 0.06666667))
(:scalevel-x (meters 0.0033333334))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.0033333334))
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406500 #x404a00))
(:conerot-x (degrees 20))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-breach-dirt ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-dirt arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpart 2499
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-breach-rocks)
(:num 4.0)
(:x (meters 3) (meters 2))
(:y (meters 0.5))
(:scale-x (meters 1) (meters 2))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 1) (meters 2))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.06666667) (meters 0.06666667))
(:rotvel-z (degrees -1) (degrees 2))
(:accel-y (meters -0.0033333334))
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x408b00
#x408c00
#x40a100
#x40a200
#x40a300
#x40a400
#x40a500
#x40a600
#x40a700
#x40a800
#x40a900
#x40aa00
#x40ab00
#x40ac00
#x40ad00
#x40ae00
)
)
(:func 'spt-func-part-mh-centipede-breach-rocks)
(:conerot-x (degrees 20))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-breach-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-ground-dirt-bounce arg0 arg1 arg2 arg3 arg4)
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-rocks arg0 arg1 arg2 arg3 arg4)
(none)
)
(defun spt-func-part-mh-centipede-breach-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(sparticle-texture-animate arg0 arg1 (the-as vector arg2))
(spt-func-ground-dirt-bounce1 arg0 arg1 arg2 (the-as none arg3) (the-as none arg4))
(none)
)
(defpart 2493
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-breach-rocks-bounce1)
(:num 1.0)
(:scale-x (meters 2) (meters 1) :store)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 2) (meters 1))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.016666668) (meters 0.033333335))
(:rotvel-z (degrees -1) (degrees 2))
(:accel-y (meters -0.0016666667))
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x40ae00
#x40ad00
#x40ac00
#x40ab00
#x40aa00
#x40a900
#x40a800
#x40a700
#x40a600
#x40a500
#x40a400
#x40a300
#x40a200
#x40a100
#x408c00
#x408b00
)
)
(:func 'spt-func-part-mh-centipede-breach-rocks-bounce1)
(:conerot-x (degrees 5) (degrees 30))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-breach-rocks-bounce1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-ground-dirt-bounce arg0 arg1 arg2 arg3 arg4)
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-rocks arg0 arg1 arg2 arg3 arg4)
(none)
)
(defun spt-func-part-mh-centipede-breach-rocks-bounce1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(sparticle-texture-animate arg0 arg1 (the-as vector arg2))
(spt-func-ground-dirt-bounce2 arg0 arg1 arg2 (the-as none arg3) (the-as none arg4))
(none)
)
;; WARN: Return type mismatch object vs none.
(defun spt-func-ground-dirt-bounce3 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(cond
((or (< (-> arg1 omega) (-> arg2 launchrot y)) (< 0.0 (-> arg1 vel-sxvel y)))
(sparticle-texture-animate arg0 arg1 (the-as vector arg2))
)
(else
(set! (-> arg1 acc x) 0.0)
(set! (-> arg1 acc y) 0.0)
(set! (-> arg1 acc z) 0.0)
(set! (-> arg1 vel-sxvel x) (* 0.7 (-> arg1 vel-sxvel x)))
(set! (-> arg1 vel-sxvel z) (* 0.7 (-> arg1 vel-sxvel z)))
(set! (-> arg2 launchrot y) (-> arg1 omega))
)
)
(none)
)
(defpart 2494
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-breach-rocks-bounce2)
(:num 1.0)
(:scale-x '*sp-temp*)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 2) (meters 1))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.0033333334) (meters 0.016666668))
(:scalevel-x (meters -0.0016666667))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.0016666667))
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x408b00
#x408c00
#x40a100
#x40a200
#x40a300
#x40a400
#x40a500
#x40a600
#x40a700
#x40a800
#x40a900
#x40aa00
#x40ab00
#x40ac00
#x40ad00
#x40ae00
)
)
(:func 'spt-func-ground-dirt-bounce3)
(:conerot-x (degrees 5) (degrees 30))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-breach-rocks-bounce2 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-ground-dirt-bounce arg0 arg1 arg2 arg3 arg4)
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-rocks arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpartgroup group-mh-centipede-crater-mark
:id 643
:flags (sp0 sp1)
:bounds (static-bspherem 0 0 0 30)
:parts ((sp-item 2500 :flags (is-3d sp3 sp7)))
)
(defpart 2500
:init-specs ((:texture (crack01 desert-sprite))
(:num 1.0)
(:scale-x (meters 2) (meters 2))
(:scale-y (meters 2) (meters 2))
(:r 64.0 64.0)
(:g :copy r)
(:b :copy r)
(:a 0.0)
(:scalevel-x (meters 0.016666668) (meters 0.5))
(:scalevel-y (meters 0.016666668) (meters 0.033333335))
(:fade-a 2.56 0.85333335)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-4 left-multiply-quat))
(:next-time (seconds 0.085))
(:next-launcher 2501)
(:rotate-y (degrees 0))
)
)
(defpart 2501
:init-specs ((:scalevel-x (meters 0))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.0)
(:next-time (seconds 2))
(:next-launcher 2502)
)
)
(defpart 2502
:init-specs ((:fade-a -0.08533333))
)
(defpartgroup group-mh-centipede-dirt-fall-off
:id 644
:duration (seconds 0.017)
:flags (sp0)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2503 :fade-after (meters 200) :falloff-to (meters 200)))
)
(defpart 2503
:init-specs ((:texture (ceiling-dust lwassig-sprite))
(:birth-func 'birth-func-texture-group)
(:num 0.5)
(:scale-x (meters 5) (meters 2))
(:scale-y :copy scale-x)
(:r 100.0)
(:g 60.0 20.0)
(:b 30.0 10.0)
(:a 8.0 8.0)
(:scalevel-x (meters 0.0033333334))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.21333334 0.21333334)
(:accel-y (meters -0.00033333333) (meters -0.00066666666))
(:friction 0.96 0.02)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z left-multiply-quat))
(:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x6a200100 #x6a200100 #x405c00))
(:next-time (seconds 0.335))
(:next-launcher 2504)
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2504
:init-specs ((:fade-a 0.0) (:next-time (seconds 0.5)) (:next-launcher 2505))
)
(defpart 2505
:init-specs ((:fade-a -0.053333335 -0.053333335))
)
(defpartgroup group-mh-centipede-impact
:id 645
:duration (seconds 0.017)
:flags (sp0)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2506 :fade-after (meters 200) :falloff-to (meters 200))
(sp-item 2507 :fade-after (meters 200) :falloff-to (meters 200))
(sp-item 2508 :fade-after (meters 200) :falloff-to (meters 200))
)
)
(defpart 2506
:init-specs ((:texture (dirtpuff01 level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-dust)
(:num 2.0)
(:scale-x (meters 5) (meters 5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 32.0 64.0)
(:vel-y (meters 0.013333334) (meters 0.1))
(:scalevel-x (meters 0.006666667) (meters 0.01))
(:rotvel-z (degrees -0.1) (degrees 0.2))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.064 -0.064)
(:accel-y (meters 0) (meters 0.00033333333))
(:friction 0.96)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:conerot-x (degrees 80) (degrees 10))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2507
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-impact-dirt)
(:num 10.0)
(:x (meters 0) (meters 6))
(:y (meters 3))
(:scale-x (meters 2) (meters 4))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.033333335) (meters 0.06666667))
(:scalevel-x (meters 0.0033333334))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.0033333334))
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406500 #x404a00))
(:conerot-x (degrees 20))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-impact-dirt ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-dirt arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpart 2508
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-impact-rocks)
(:num 4.0)
(:x (meters 3) (meters 2))
(:y (meters 2))
(:scale-x (meters 1) (meters 2) :store)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 2) (meters 1))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.06666667) (meters 0.06666667))
(:rotvel-z (degrees -1) (degrees 2))
(:accel-y (meters -0.0033333334))
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x408b00
#x408c00
#x40a100
#x40a200
#x40a300
#x40a400
#x40a500
#x40a600
#x40a700
#x40a800
#x40a900
#x40aa00
#x40ab00
#x40ac00
#x40ad00
#x40ae00
)
)
(:func 'spt-func-part-mh-centipede-impact-rocks)
(:conerot-x (degrees 20))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-impact-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-ground-dirt-bounce arg0 arg1 arg2 arg3 arg4)
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-rocks arg0 arg1 arg2 arg3 arg4)
(none)
)
(defun spt-func-part-mh-centipede-impact-rocks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(sparticle-texture-animate arg0 arg1 (the-as vector arg2))
(spt-func-ground-dirt-bounce1 arg0 arg1 arg2 (the-as none arg3) (the-as none arg4))
(none)
)
(defpart 2509
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-impact-rocks-bounce1)
(:num 1.0)
(:scale-x '*sp-temp*)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 2) (meters 1))
(:r 70.0 50.0)
(:g :copy r)
(:b :copy r)
(:a 128.0)
(:vel-y (meters 0.016666668) (meters 0.033333335))
(:rotvel-z (degrees -1) (degrees 2))
(:accel-y (meters -0.0016666667))
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x40ae00
#x40ad00
#x40ac00
#x40ab00
#x40aa00
#x40a900
#x40a800
#x40a700
#x40a600
#x40a500
#x40a400
#x40a300
#x40a200
#x40a100
#x408c00
#x408b00
)
)
(:func 'spt-func-part-mh-centipede-impact-rocks-bounce1)
(:conerot-x (degrees 5) (degrees 30))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-impact-rocks-bounce1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-ground-dirt-bounce arg0 arg1 arg2 arg3 arg4)
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(none)
)
(defun spt-func-part-mh-centipede-impact-rocks-bounce1 ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(sparticle-texture-animate arg0 arg1 (the-as vector arg2))
(spt-func-ground-dirt-bounce2 arg0 arg1 arg2 (the-as none arg3) (the-as none arg4))
(none)
)
(defpartgroup group-mh-centipede-impact-dust-up
:id 646
:duration (seconds 0.017)
:flags (sp0)
:bounds (static-bspherem 0 0 0 12)
:parts ((sp-item 2510 :fade-after (meters 200) :falloff-to (meters 200)))
)
(defpart 2510
:init-specs ((:texture (dirtpuff01 level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-dust)
(:num 1.0)
(:scale-x (meters 5) (meters 5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 32.0 64.0)
(:vel-y (meters 0.16666667) (meters 0.016666668))
(:scalevel-x (meters 0.006666667) (meters 0.02))
(:rotvel-z (degrees -0.033333335) (degrees 0.06666667))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.06533334 -0.06533334)
(:accel-y (meters 0) (meters 0.00033333333))
(:friction 0.95 0.01)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:conerot-x (degrees 0) (degrees 20))
(:rotate-y (degrees 0) (degrees 3600))
)
)
;; WARN: Return type mismatch float vs none.
(defun spt-birth-func-brightness-mh-centipede-blood ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(let ((s5-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 81) 40))
(s3-0 (+ (mod (the-as int (rand-uint31-gen *random-generator*)) 11) 20))
(s4-0 (logand 0 (rand-uint31-gen *random-generator*)))
(v1-5 (+ (logand 0 (rand-uint31-gen *random-generator*)) 120))
)
(set! (-> arg2 rotate-x) (the float (- s5-0 s3-0)))
(set! (-> arg2 rotate-y) (the float (- s5-0 (the-as int s4-0))))
(set! (-> arg2 rotate-z) (the float (- s5-0 (the-as int v1-5))))
)
(none)
)
(defpartgroup group-mh-centipede-death
:id 647
:flags (sp0)
:bounds (static-bspherem 0 0 0 50)
:parts ((sp-item 2511 :period (seconds 30) :length (seconds 0.135))
(sp-item 2512 :period (seconds 30) :length (seconds 0.135))
)
)
(defpart 2511
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-explosion-lots)
(:num 10.0)
(:x (meters -3) (meters 6))
(:y (meters -3) (meters 6))
(:z (meters -3) (meters 6))
(:scale-x (meters 3) (meters 3))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 64.0 64.0)
(:vel-y (meters 0) (meters 0.06666667))
(:scalevel-x (meters 0.016666668) (meters 0.016666668))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.21333334 -0.21333334)
(:accel-y (meters -0.0026666666) (meters -0.0016666667))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #x406500 #x404a00))
(:next-time (seconds 0.5))
(:next-launcher 2513)
(:conerot-x (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-explosion-lots ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-blood arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpart 2513
:init-specs ((:scalevel-x (meters 0.0033333334)) (:scalevel-y :copy scalevel-x))
)
(defpart 2512
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-explosion)
(:num 0.5)
(:x (meters -3) (meters 6))
(:y (meters -3) (meters 6))
(:z (meters -3) (meters 6))
(:scale-x (meters 3) (meters 3))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 64.0 64.0)
(:omega (degrees 0))
(:vel-y (meters 0) (meters 0.06666667))
(:scalevel-x (meters 0.016666668) (meters 0.016666668))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.21333334 -0.21333334)
(:accel-y (meters -0.0033333334) (meters -0.0026666666))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #x406500 #x404a00))
(:func 'check-mh-centipede-explosion-level)
(:next-time (seconds 0.5))
(:next-launcher 2513)
(:conerot-x (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-explosion ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-blood arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpartgroup part-mh-centipede-explosion-splats
:id 648
:duration (seconds 5)
:flags (sp0 sp4)
:bounds (static-bspherem 0 -12 0 14)
:parts ((sp-item 2514 :period (seconds 20) :length (seconds 0.2))
(sp-item 2515 :period (seconds 20) :length (seconds 0.067) :offset 125)
(sp-item 2516 :flags (is-3d) :period (seconds 20) :length (seconds 0.067))
(sp-item 2517 :flags (is-3d) :period (seconds 20) :length (seconds 0.5) :offset 150)
(sp-item 2518 :period (seconds 20) :length (seconds 0.167) :offset 20)
)
)
(defpart 2514
:init-specs ((:texture (splash level-default-sprite))
(:birth-func 'birth-func-curve)
(:num 5.0)
(:scale-x (meters 1))
(:scale-y (meters 1))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-z (meters 0.06666667) (meters 0.006666667))
(:friction 0.96)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13))
(:userdata 0.0)
(:func 'live-func-curve)
(:rotate-y (degrees 0) (degrees 3600))
)
)
(if #t
(set! *range-mhcent-splash-color* (new 'static 'curve-color-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'inline-array vector 4
(new 'static 'vector :x 20.0 :y 40.0 :w 128.0)
(new 'static 'vector :x 90.0 :y 128.0 :w 128.0)
(new 'static 'vector :x 90.0 :y 128.0 :w 128.0)
(new 'static 'vector :x 90.0 :y 128.0 :w 128.0)
)
:one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *range-mhcent-splash-alpha* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 64.0 :y 128.0 :z 129.0 :w 130.0)
:one-over-x-deltas (new 'static 'vector :x 64.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *range-mhcent-splash-scale-x* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 1.0 :y 2.0 :z 3.0 :w 4.0)
:one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *range-mhcent-splash-scale-y* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 1.0 :y 4.0 :z 5.0 :w 6.0)
:one-over-x-deltas (new 'static 'vector :x 3.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *curve-mhcent-splash-alpha* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -0.1 :z -1.0 :w -2.0)
:ys (new 'static 'vector :y 1.0 :w 1.0)
:one-over-x-deltas (new 'static 'vector :x 10.0 :y -1.1111112 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *curve-mhcent-splash-scale-x* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 1.0 :y 2.0 :z 3.0 :w 4.0)
:one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *curve-mhcent-splash-scale-y* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -0.4 :z -0.7 :w -1.0)
:ys (new 'static 'vector :y 2.0 :z 0.5)
:one-over-x-deltas (new 'static 'vector :x 5.0 :y -5.0000005 :z -1.6666666 :w 1.0)
)
)
)
(define *part-mh-centipede-splash-curve-settings*
(new 'static 'particle-curve-settings :lifetime-base (seconds 0.65) :lifetime-offset (seconds 0.1))
)
(set! (-> *part-id-table* 2514 init-specs 13 initial-valuef)
(the-as float *part-mh-centipede-splash-curve-settings*)
)
(set! (-> *part-mh-centipede-splash-curve-settings* color-start) *range-mhcent-splash-color*)
(set! (-> *part-mh-centipede-splash-curve-settings* alpha-start) *range-mhcent-splash-alpha*)
(set! (-> *part-mh-centipede-splash-curve-settings* scale-x-start) *range-mhcent-splash-scale-x*)
(set! (-> *part-mh-centipede-splash-curve-settings* scale-y-start) *range-mhcent-splash-scale-y*)
(set! (-> *part-mh-centipede-splash-curve-settings* r-scalar) #f)
(set! (-> *part-mh-centipede-splash-curve-settings* g-scalar) #f)
(set! (-> *part-mh-centipede-splash-curve-settings* b-scalar) #f)
(set! (-> *part-mh-centipede-splash-curve-settings* a-scalar) *curve-mhcent-splash-alpha*)
(set! (-> *part-mh-centipede-splash-curve-settings* scale-x-scalar) *curve-mhcent-splash-scale-x*)
(set! (-> *part-mh-centipede-splash-curve-settings* scale-y-scalar) *curve-mhcent-splash-scale-y*)
(defpart 2516
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-blood)
(:num 1.0 2.0)
(:x (meters -5) (meters 10))
(:z (meters -5) (meters 10))
(:scale-x (meters 1) (meters 0.5))
(:rot-y (degrees 0) (degrees 3600))
(:scale-y (meters 1) (meters 0.5))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 64.0 64.0)
(:scalevel-x (meters 0.01) (meters 0.02))
(:scalevel-y (meters 0.01) (meters 0.02))
(:fade-a -0.10666667)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 left-multiply-quat))
(:next-time (seconds 0.335))
(:next-launcher 2519)
)
)
(defpart 2519
:init-specs ((:scalevel-x (meters 0.001) (meters 0.00033333333)) (:scalevel-y (meters 0.001) (meters 0.00033333333)))
)
(defpart 2518
:init-specs ((:texture (lakedrop level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-blood)
(:num 1.0)
(:x (meters 0) (meters 3))
(:scale-x (meters 0.1) (meters 0.3))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 32.0 32.0)
(:vel-y (meters 0.016666668) (meters 0.033333335))
(:accel-y (meters -0.0016666667))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-3))
(:conerot-x (degrees -40) (degrees 80))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2517
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-brightness-mh-centipede-blood)
(:num 0.5 1.0)
(:x (meters 1) (meters 10))
(:scale-x (meters 0.1) (meters 0.5))
(:rot-y (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0 128.0)
(:scalevel-x (meters 0.0026666666) (meters 0.006666667))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.2125)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 left-multiply-quat))
(:next-time (seconds 0.335))
(:next-launcher 2519)
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun check-mh-centipede-explosion-level ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
(when (and (< (-> arg2 y) (-> arg1 omega)) (< (-> arg1 vel-sxvel y) 0.0))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set-vector! gp-0 (-> arg2 x) (-> arg1 omega) (-> arg2 z) 1.0)
(cond
((logtest? (-> *part-group-id-table* 648 flags) (sp-group-flag sp13))
(set! (-> *launch-matrix* trans quad) (-> gp-0 quad))
(part-tracker-spawn part-tracker-subsampler :to *entity-pool* :group (-> *part-group-id-table* 648))
)
(else
(set! (-> *launch-matrix* trans quad) (-> gp-0 quad))
(part-tracker-spawn part-tracker :to *entity-pool* :group (-> *part-group-id-table* 648))
)
)
)
)
0
(none)
)
(defpartgroup group-mh-centipede-shot-trail
:id 649
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 2520 :fade-after (meters 120) :falloff-to (meters 120)) (sp-item 2521 :flags (sp6)))
)
(defpart 2521
:init-specs ((:texture (glow-soft level-default-sprite))
(:num 1.0)
(:scale-x (meters 2.5) (meters 0.2))
(:rot-x (degrees 11.25))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 192.0 64.0)
(:b 0.0)
(:a 16.0)
(:omega (degrees 6761.25))
(:fade-a -0.8)
(:timer (seconds 0.05))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 3072.0)
)
)
(defpart 2520
:init-specs ((:texture (redpuff level-default-sprite))
(:num 1.0 3.0)
(:scale-x (meters 0.8) (meters 0.8))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 128.0)
(:b 0.0)
(:a 32.0 32.0)
(:vel-y (meters -0.006666667) (meters -0.006666667))
(:scalevel-x (meters -0.006666667))
(:scalevel-y :copy scalevel-x)
(:fade-r -3.2)
(:fade-g -1.6)
(:fade-b -3.2)
(:accel-y (meters 0.0001) (meters 0.000033333334))
(:friction 0.97)
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2))
(:next-time (seconds 0.135))
(:next-launcher 2522)
)
)
(defpart 2522
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0) (:fade-a -0.10666667 -0.10666667))
)
(defpartgroup group-mh-centipede-shot-explosion
:id 650
:duration (seconds 4)
:flags (sp0 sp5)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 2523 :flags (sp3) :period (seconds 30) :length (seconds 0.017))
(sp-item 2524 :fade-after (meters 400) :flags (sp3) :period (seconds 30) :length (seconds 0.017))
(sp-item 2525 :flags (sp3) :period (seconds 30) :length (seconds 0.017))
(sp-item 2526 :period (seconds 30) :length (seconds 0.167))
(sp-item 2527 :period (seconds 30) :length (seconds 0.5))
(sp-item 2528 :falloff-to (meters 400) :period (seconds 30) :length (seconds 0.035))
(sp-item 2529 :falloff-to (meters 400) :period (seconds 30) :length (seconds 0.067))
(sp-item 2530 :falloff-to (meters 400) :period (seconds 30) :length (seconds 0.167) :offset 100)
)
)
(defpart 2529
:init-specs ((:texture (water-drops level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-shot-explosion-dirt)
(:num 20.0)
(:x (meters 0) (meters 2))
(:scale-x (meters 1) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:omega (degrees 0.225))
(:vel-y (meters 0.033333335) (meters 0.13333334))
(:scalevel-x (meters 0.0033333334) (meters 0.0016666667))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.0033333334))
(:friction 0.99)
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32 5 1 0 #x406500 #x404a00))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.4))
(:next-launcher 2531)
(:conerot-x (degrees 0) (degrees 20))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2531
:init-specs ((:rotvel-z (degrees -0.2) (degrees 0.4)) (:fade-a -0.256) (:friction 0.95 0.04) (:func 'nothing))
)
(defun spt-birth-func-part-mh-centipede-shot-explosion-dirt ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-dirt arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpart 2530
:init-specs ((:birth-func 'spt-birth-func-part-mh-centipede-shot-explosion-dust)
(:num 2.0)
(:x (meters 0) (meters 5))
(:y (meters 8) (meters 5))
(:scale-x (meters 1) (meters 2))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 0.0)
(:scalevel-x (meters 0.0033333334) (meters 0.006666667))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.16 0.16)
(:accel-y (meters -0.001))
(:friction 0.94 0.04)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13))
(:userdata :data (new 'static 'boxed-array :type int32 10 1 0 #x6a200100 #x405c00))
(:next-time (seconds 0.5))
(:next-launcher 2532)
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2532
:init-specs ((:fade-a -0.03047619 -0.03047619))
)
(defun spt-birth-func-part-mh-centipede-shot-explosion-dust ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-dust arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpart 2525
:init-specs ((:texture (starflash level-default-sprite))
(:num 1.0)
(:scale-x (meters 20))
(:rot-x (degrees 2.25))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 80.0)
(:b 40.0)
(:a 128.0)
(:omega (degrees 6767.9995))
(:scalevel-x (meters -0.33333334))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 0.135))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 4096.0)
)
)
(defpart 2523
:init-specs ((:texture (glow-soft level-default-sprite))
(:num 1.0)
(:scale-x (meters 20))
(:rot-x (degrees 22.5))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 128.0)
(:b 40.0)
(:a 64.0)
(:fade-a -0.21333334)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14 glow))
)
)
(defpart 2528
:init-specs ((:texture (rockbit01 level-default-sprite))
(:birth-func 'spt-birth-func-part-mh-centipede-shot-explosion-bits)
(:num 10.0)
(:x (meters 0) (meters 4))
(:scale-x (meters 0.2) (meters 0.4))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.033333335) (meters 0.1))
(:rotvel-z (degrees -3.0000002) (degrees 6.0000005))
(:accel-y (meters -0.0013333333) (meters -0.00066666666))
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-13 launch-along-z))
(:userdata :data (new 'static 'boxed-array :type int32
10
1
0
#x408b00
#x408c00
#x40a100
#x40a200
#x40a300
#x40a400
#x40a500
#x40a600
#x40a700
#x40a800
#x40a900
#x40aa00
#x40ab00
#x40ac00
#x40ad00
#x40ae00
)
)
(:func 'sparticle-texture-animate)
(:conerot-z (degrees 0) (degrees 40))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defun spt-birth-func-part-mh-centipede-shot-explosion-bits ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo) (arg3 object) (arg4 object))
(birth-func-texture-group-2d arg0 arg1 arg2 arg3 arg4)
(spt-birth-func-brightness-mh-centipede-rocks arg0 arg1 arg2 arg3 arg4)
(none)
)
(defpart 2524
:init-specs ((:texture (bigpuff level-default-sprite))
(:num 10.0)
(:scale-x (meters 2) (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 160.0)
(:b 40.0)
(:a 128.0)
(:vel-y (meters 0) (meters 0.033333335))
(:scalevel-x (meters 0.01))
(:scalevel-y :copy scalevel-x)
(:fade-g -0.13333334)
(:fade-b -0.05)
(:fade-a -0.21333334 -0.21333334)
(:friction 0.93)
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
(:conerot-x (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2526
:init-specs ((:texture (explosion-edge level-default-sprite))
(:num 2.0)
(:scale-x (meters 2) (meters 1))
(:rot-y (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 80.0 20.0)
(:b 30.0)
(:a 128.0)
(:vel-y (meters 0.16666667) (meters 0.06666667))
(:scalevel-x (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-g -0.17777778)
(:fade-b -0.06666667)
(:fade-a -0.28444445 -0.28444445)
(:friction 0.7)
(:timer (seconds 1.5))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
(:func 'sparticle-2d-spline-align-instant)
(:conerot-x (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 2527
:init-specs ((:texture (explo-texture level-default-sprite))
(:birth-func 'birth-func-curve)
(:num 1.0)
(:x (meters -1) (meters 2))
(:y (meters 0) (meters 2))
(:scale-x (meters 1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:vel-y (meters 0.033333335) (meters 0.016666668))
(:friction 0.9)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-14))
(:userdata 0.0)
(:func 'live-func-curve)
(:conerot-x (degrees 20) (degrees 90))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(if #t
(set! *range-mh-centipede-shot-explo-color* (new 'static 'curve-color-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'inline-array vector 4
(new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
(new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
(new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
(new 'static 'vector :x 255.0 :y 255.0 :z 255.0 :w 128.0)
)
:one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *range-mh-centipede-shot-explo-alpha* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 128.0 :y 128.0 :z 129.0 :w 130.0)
:one-over-x-deltas (new 'static 'vector :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *range-mh-centipede-shot-explo-scale-x* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 2.0 :y 3.0 :z 4.0 :w 5.0)
:one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *range-mh-centipede-shot-explo-scale-y* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -1.0 :z -2.0 :w -3.0)
:ys (new 'static 'vector :x 2.0 :y 3.0 :z 4.0 :w 5.0)
:one-over-x-deltas (new 'static 'vector :x 1.0 :y 1.0 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *curve-mh-centipede-shot-explo-alpha*
(new 'static 'curve2d-fast
:xs (new 'static 'vector :y -0.05 :z -0.7 :w -1.0)
:ys (new 'static 'vector :y 1.0 :z 0.8)
:one-over-x-deltas (new 'static 'vector :x 20.0 :y -0.3076923 :z -2.6666665 :w 1.0)
)
)
)
(if #t
(set! *curve-mh-centipede-shot-explo-scale-x* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -0.8 :z -1.0 :w -2.0)
:ys (new 'static 'vector :y 1.0 :z 1.5 :w 2.5)
:one-over-x-deltas (new 'static 'vector :x 1.25 :y 2.5000002 :z 1.0 :w 1.0)
)
)
)
(if #t
(set! *curve-mh-centipede-shot-explo-scale-y* (new 'static 'curve2d-fast
:xs (new 'static 'vector :y -0.8 :z -1.0 :w -2.0)
:ys (new 'static 'vector :y 1.0 :z 1.5 :w 2.5)
:one-over-x-deltas (new 'static 'vector :x 1.25 :y 2.5000002 :z 1.0 :w 1.0)
)
)
)
(define *part-mh-centipede-shot-explosion-texture-curve-settings* (new 'static 'particle-curve-settings
:lifetime-base (seconds 0.1)
:lifetime-offset (seconds 0.6)
:flags (particle-curve-flags pcf0)
)
)
(set! (-> *part-id-table* 2527 init-specs 16 initial-valuef)
(the-as float *part-mh-centipede-shot-explosion-texture-curve-settings*)
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* color-start)
*range-mh-centipede-shot-explo-color*
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* alpha-start)
*range-mh-centipede-shot-explo-alpha*
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* scale-x-start)
*range-mh-centipede-shot-explo-scale-x*
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* scale-y-start)
*range-mh-centipede-shot-explo-scale-y*
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* r-scalar) #f)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* g-scalar) #f)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* b-scalar) #f)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* a-scalar)
*curve-mh-centipede-shot-explo-alpha*
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* scale-x-scalar)
*curve-mh-centipede-shot-explo-scale-x*
)
(set! (-> *part-mh-centipede-shot-explosion-texture-curve-settings* scale-y-scalar)
*curve-mh-centipede-shot-explo-scale-y*
)
(defpartgroup group-beast-mh-centipede-shot-glow
:id 651
:flags (sp0)
:bounds (static-bspherem 0 0 0 40)
:parts ((sp-item 2533 :flags (sp6)))
)
(defpart 2533
:init-specs ((:texture (glow-soft level-default-sprite))
(:num 1.0 1.0)
(:scale-x (meters 2))
(:scale-y :copy scale-x)
(:r 0.0)
(:g 64.0)
(:b 128.0)
(:a 128.0)
(:scalevel-x (meters -0.0033333334))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 0.2))
(:flags (sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
)
)
(defpart 2534
:init-specs ((:texture (middot level-default-sprite))
(:num 1.0 1.0)
(:scale-x (meters 2))
(:scale-y :copy scale-x)
(:r 110.0)
(:g 1.0)
(:b 255.0)
(:a 255.0)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-14))
)
)
(defpart 2535
:init-specs ((:texture (glow-soft level-default-sprite))
(:num 1.0 1.0)
(:scale-x (meters 8))
(:scale-y :copy scale-x)
(:r 110.0)
(:g 1.0)
(:b 255.0)
(:a 32.0)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-3))
)
)