jak-project/goal_src/jak2/levels/ruins/ruins-part.gc
ManDude cd68cb671e
deftype and defmethod syntax major changes (#3094)
Major change to how `deftype` shows up in our code:
- the decompiler will no longer emit the `offset-assert`,
`method-count-assert`, `size-assert` and `flag-assert` parameters. There
are extremely few cases where having this in the decompiled code is
helpful, as the types there come from `all-types` which already has
those parameters. This also doesn't break type consistency because:
  - the asserts aren't compared.
- the first step of the test uses `all-types`, which has the asserts,
which will throw an error if they're bad.
- the decompiler won't emit the `heap-base` parameter unless necessary
now.
- the decompiler will try its hardest to turn a fixed-offset field into
an `overlay-at` field. It falls back to the old offset if all else
fails.
- `overlay-at` now supports field "dereferencing" to specify the offset
that's within a field that's a structure, e.g.:
```lisp
(deftype foobar (structure)
  ((vec    vector  :inline)
   (flags  int32   :overlay-at (-> vec w))
   )
  )
```
in this structure, the offset of `flags` will be 12 because that is the
final offset of `vec`'s `w` field within this structure.
- **removed ID from all method declarations.** IDs are only ever
automatically assigned now. Fixes #3068.
- added an `:overlay` parameter to method declarations, in order to
declare a new method that goes on top of a previously-defined method.
Syntax is `:overlay <method-name>`. Please do not ever use this.
- added `state-methods` list parameter. This lets you quickly specify a
list of states to be put in the method table. Same syntax as the
`states` list parameter. The decompiler will try to put as many states
in this as it can without messing with the method ID order.

Also changes `defmethod` to make the first type definition (before the
arguments) optional. The type can now be inferred from the first
argument. Fixes #3093.

---------

Co-authored-by: Hat Kid <6624576+Hat-Kid@users.noreply.github.com>
2023-10-30 03:20:02 +00:00

1482 lines
47 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: ruins-part.gc
;; name in dgo: ruins-part
;; dgos: RUI
;; og:ignore-from-loc
;; DECOMP BEGINS
(deftype ruins-part (part-spawner)
()
)
(defpartgroup group-ruins-streetlight-glows
:id 284
:bounds (static-bspherem 0 0 0 5)
:parts ((sp-item 1 :fade-after (meters 100) :flags (bit6) :hour-mask #b111111111110000000)
(sp-item 2 :fade-after (meters 300) :flags (bit6) :hour-mask #b111111111110000000)
)
)
(defpart 1
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:scale-x (meters 2) (meters 0.1))
(:rot-x (degrees 2.25))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 24.0 8.0)
(:omega (degrees 2261.25))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 2048.0)
)
)
(defpart 2
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:scale-x (meters 8) (meters 0.1))
(:rot-x (degrees 2.25))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0 255.0)
(:b 255.0)
(:a 10.0 2.0)
(:omega (degrees 6765.7505))
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 2048.0)
)
)
(defpartgroup group-ruins-dirt-collapse
:id 285
:duration (seconds 2)
:linger-duration (seconds 10)
:flags (use-local-clock)
:bounds (static-bspherem 0 6 0 8)
:parts ((sp-item 1253 :period (seconds 7.335) :length (seconds 1.067) :binding 1251)
(sp-item 1253 :period (seconds 7.335) :length (seconds 0.667) :binding 1251)
(sp-item 1253 :period (seconds 7.335) :length (seconds 0.5) :binding 1251)
(sp-item 1253 :period (seconds 7.335) :length (seconds 0.335) :binding 1251)
(sp-item 1254 :period (seconds 7.335) :length (seconds 0.267) :binding 1252)
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1252 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
(sp-item 1251 :flags (bit1 start-dead))
)
)
(defun check-drop-level-ruins-rubble ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix))
"TODO docs"
(let ((f30-0 (-> arg1 key origin trans y)))
(when (< (-> arg2 vector 0 y) f30-0)
(let ((vec (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set-vector! vec (-> arg2 vector 0 x) f30-0 (-> arg2 vector 0 z) 1.0)
(launch-particles (-> *part-id-table* 1255) vec)
(launch-particles (-> *part-id-table* 1256) vec)
(launch-particles (-> *part-id-table* 1257) vec)
)
)
)
(none)
)
(defpart 1252
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.0 0.25)
(:sound (static-sound-spec "debris-fall" :num 0.01 :volume 100.0))
(:scale-x (meters 0.3) (meters 0.1))
(:scale-y (meters 1) (meters 0.2))
(:r 80.0 16.0)
(:g 70.0 16.0)
(:b 70.0 16.0)
(:a 16.0 16.0)
(:vel-y (meters -0.013333334) (meters -0.026666667))
(:scalevel-x (meters 0.0033333334) (meters 0.0016666667))
(:scalevel-y (meters 0) (meters 0.00033333333))
(:fade-a -0.042666666 -0.064)
(:accel-y (meters 0) (meters 0.00033333333))
(:timer (seconds 0.835))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:func 'check-drop-group-center)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 1251
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.0 1.0)
(:scale-x (meters 0.3) (meters 0.1))
(:scale-y (meters 1) (meters 0.2))
(:r 80.0 16.0)
(:g 70.0 16.0)
(:b 70.0 16.0)
(:a 16.0 16.0)
(:vel-y (meters -0.013333334) (meters -0.026666667))
(:scalevel-x (meters 0.0033333334) (meters 0.0016666667))
(:scalevel-y (meters 0) (meters 0.00033333333))
(:fade-a -0.042666666 -0.064)
(:accel-y (meters 0) (meters 0.00033333333))
(:timer (seconds 2.5))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:func 'check-drop-group-center)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 1254
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 0.0 3.0)
(:x (meters 0) (meters 2))
(:y (meters 16))
(:scale-x (meters 0.1) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.3))
(:r 32.0 16.0)
(:g 24.0 16.0)
(:b 30.0 16.0)
(:a 128.0)
(:vel-y (meters -0.053333335) (meters -0.013333334))
(:scalevel-x (meters -0.00000033333333))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 1.167))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:func 'check-drop-level-ruins-rubble)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 1253
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 0.0 0.5)
(:x (meters 0) (meters 1))
(:y (meters 16))
(:scale-x (meters 0.1) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.3))
(:r 32.0 16.0)
(:g 24.0 16.0)
(:b 30.0 16.0)
(:a 128.0)
(:vel-y (meters -0.053333335) (meters -0.013333334))
(:scalevel-x (meters -0.00000033333333))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:scalevel-y :copy scalevel-x)
(:timer (seconds 1.167))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:func 'check-drop-level-ruins-rubble)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 1255
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 1.0 4.0)
(:scale-x (meters 0.05) (meters 0.15))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.05) (meters 0.15))
(:r 32.0 16.0)
(:g 24.0 16.0)
(:b 30.0 16.0)
(:a 128.0)
(:vel-y (meters 0.006666667) (meters 0.026666667))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:fade-a -0.42666668 -0.85333335)
(:accel-y (meters -0.00066666666))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:conerot-x (degrees 10) (degrees 60))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 1256
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 1.0 2.0)
(:scale-x (meters 0.05) (meters 0.15))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.05) (meters 0.15))
(:r 32.0 16.0)
(:g 24.0 16.0)
(:b 30.0 16.0)
(:a 128.0)
(:vel-y (meters 0) (meters 0.04))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:friction 0.94 0.02)
(:timer (seconds 8))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:next-time (seconds 1.5) (seconds 0.497))
(:next-launcher 1258)
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 1258
:init-specs ((:rotvel-z (degrees 0)) (:fade-a -0.10666667 -0.10666667))
)
(defpart 1257
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 1.0 1.0)
(:sound (static-sound-spec "debris-ground" :num 0.01 :volume 100.0))
(:scale-x (meters 1) (meters 0.5))
(:scale-y (meters 0.5) (meters 0.5))
(:r 80.0 16.0)
(:g 70.0 16.0)
(:b 70.0 16.0)
(:a 16.0 32.0)
(:vel-y (meters 0.013333334) (meters 0.026666667))
(:scalevel-x (meters 0.0033333334) (meters 0.0016666667))
(:scalevel-y (meters 0.0033333334) (meters 0.0016666667))
(:fade-a -0.026666667 -0.026666667)
(:accel-y (meters 0) (meters 0.00033333333))
(:friction 0.9 0.05)
(:timer (seconds 8))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 70) (degrees 20))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpartgroup group-ruins-brick-dust-floor
:id 286
:duration (seconds 0.017)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1259 :fade-after (meters 60) :falloff-to (meters 60))
(sp-item 1260 :fade-after (meters 60) :falloff-to (meters 60))
(sp-item 1261 :fade-after (meters 120) :falloff-to (meters 120))
(sp-item 1262 :fade-after (meters 120) :falloff-to (meters 120))
(sp-item 1263)
)
)
(defpart 1259
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 4.0 8.0)
(:scale-x (meters 0.1) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.3))
(:r 192.0 64.0)
(:g 128.0 64.0)
(:b 128.0 32.0)
(:a 96.0 32.0)
(:vel-y (meters 0) (meters 0.10666667))
(:rotvel-z (degrees -1.2) (degrees 720))
(:fade-a -0.42666668 -0.42666668)
(:accel-y (meters -0.0013333333) (meters -0.00066666666))
(:friction 0.95)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:conerot-x (degrees 80) (degrees 10))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.25))
)
)
(defpart 1260
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 4.0 8.0)
(:scale-x (meters 0.1) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.3))
(:r 128.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 96.0 32.0)
(:vel-y (meters 0) (meters 0.10666667))
(:rotvel-z (degrees -1.2) (degrees 720))
(:fade-a -0.42666668 -0.42666668)
(:accel-y (meters -0.0013333333) (meters -0.00066666666))
(:friction 0.95)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:conerot-x (degrees 80) (degrees 10))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.25))
)
)
(defpart 1261
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 2.0 4.0)
(:scale-x (meters 2) (meters 1))
(:rot-z (degrees 0) 1 (degrees 180))
(:scale-y :copy scale-x)
(:r 128.0 64.0)
(:g 96.0 32.0)
(:b 64.0 32.0)
(:a 8.0 24.0)
(:vel-y (meters 0.013333334) (meters 0.053333335))
(:scalevel-x (meters 0.013333334) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.032 -0.032)
(:friction 0.95)
(:timer (seconds 6.667))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 80) (degrees 10))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.6))
)
)
(defpart 1262
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 2.0 4.0)
(:scale-x (meters 2) (meters 1))
(:rot-z (degrees 0) 1 (degrees 180))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 8.0 24.0)
(:vel-y (meters 0.013333334) (meters 0.053333335))
(:scalevel-x (meters 0.013333334) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.032 -0.032)
(:friction 0.95)
(:timer (seconds 6.667))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 80) (degrees 10))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.6))
)
)
(defpartgroup group-ruins-brick-dust-wall
:id 287
:duration (seconds 0.017)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1263)
(sp-item 1264 :fade-after (meters 60) :falloff-to (meters 60))
(sp-item 1265 :fade-after (meters 60) :falloff-to (meters 60))
(sp-item 1266 :fade-after (meters 120) :falloff-to (meters 120))
(sp-item 1267 :fade-after (meters 120) :falloff-to (meters 120))
)
)
(defpart 1263
:init-specs ((:texture (new 'static 'texture-id :index #x47 :page #xc))
(:num 1.0)
(:scale-x (meters 5) (meters 2))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 192.0 64.0)
(:b :copy g)
(:a 16.0 16.0)
(:rotvel-z (degrees 0.3))
(:fade-a -1.6)
(:timer (seconds 0.067))
(:flags (sp-cpuinfo-flag-2))
)
)
(defpart 1264
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 4.0 8.0)
(:scale-x (meters 0.1) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.3))
(:r 192.0 64.0)
(:g 128.0 64.0)
(:b 128.0 32.0)
(:a 96.0 32.0)
(:vel-y (meters 0) (meters 0.10666667))
(:rotvel-z (degrees -1.2) (degrees 720))
(:fade-a -0.21333334 -0.21333334)
(:accel-y (meters -0.0013333333) (meters -0.00066666666))
(:friction 0.95)
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:conerot-x (degrees 0) (degrees 360))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.25))
)
)
(defpart 1265
:init-specs ((:texture (new 'static 'texture-id :index #x7 :page #x3e8))
(:birth-func 'birth-func-texture-group)
(:num 4.0 8.0)
(:scale-x (meters 0.1) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.3))
(:r 128.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 96.0 32.0)
(:vel-y (meters 0) (meters 0.10666667))
(:rotvel-z (degrees -1.2) (degrees 720))
(:fade-a -0.21333334 -0.21333334)
(:accel-y (meters -0.0013333333) (meters -0.00066666666))
(:friction 0.95)
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata
:data (new 'static 'boxed-array :type int32 40 1 0 #x3e800700 #x3e800800 #x3e800900 #x3e800a00 #x3e800b00)
)
(:conerot-x (degrees 0) (degrees 360))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.25))
)
)
(defpart 1266
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 2.0 4.0)
(:scale-x (meters 2) (meters 1))
(:rot-z (degrees 0) 1 (degrees 180))
(:scale-y :copy scale-x)
(:r 128.0 64.0)
(:g 96.0 32.0)
(:b 64.0 32.0)
(:a 8.0 24.0)
(:vel-y (meters 0.013333334) (meters 0.053333335))
(:scalevel-x (meters 0.013333334) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.032 -0.032)
(:friction 0.95)
(:timer (seconds 6.667))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.6))
)
)
(defpart 1267
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 2.0 4.0)
(:scale-x (meters 2) (meters 1))
(:rot-z (degrees 0) 1 (degrees 180))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 8.0 24.0)
(:vel-y (meters 0.013333334) (meters 0.053333335))
(:scalevel-x (meters 0.013333334) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.032 -0.032)
(:friction 0.95)
(:timer (seconds 6.667))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 0) (degrees 360))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.6))
)
)
(defpartgroup group-ruins-brick-dust-slide
:id 288
:duration (seconds 0.017)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1268 :fade-after (meters 120) :falloff-to (meters 120))
(sp-item 1269 :fade-after (meters 120) :falloff-to (meters 120))
)
)
(defpart 1268
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 1.0 2.0)
(:scale-x (meters 0.5) (meters 0.5))
(:rot-z (degrees 0) 1 (degrees 180))
(:scale-y :copy scale-x)
(:r 128.0 64.0)
(:g 96.0 32.0)
(:b 64.0 32.0)
(:a 8.0 24.0)
(:vel-y (meters 0) (meters 0.026666667))
(:scalevel-x (meters 0.01) (meters 0.006666667))
(:scalevel-y (meters 0.0033333334) (meters 0.0033333334))
(:fade-a -0.032 -0.032)
(:friction 0.95)
(:timer (seconds 3.335))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.6))
)
)
(defpart 1269
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 1.0 2.0)
(:scale-x (meters 0.5) (meters 0.5))
(:rot-z (degrees 0) 1 (degrees 180))
(:scale-y :copy scale-x)
(:r 64.0 64.0)
(:g :copy r)
(:b :copy g)
(:a 8.0 24.0)
(:vel-y (meters 0) (meters 0.026666667))
(:scalevel-x (meters 0.01) (meters 0.006666667))
(:scalevel-y (meters 0.0033333334) (meters 0.0033333334))
(:fade-a -0.032 -0.032)
(:friction 0.95)
(:timer (seconds 3.335))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.6))
)
)
(defpartgroup group-ruins-birds
:id 289
:bounds (static-bspherem 0 8 0 45)
:parts ((sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1272 :fade-after (meters 120) :flags (bit1 launch-asap) :binding 1270)
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
(sp-item 1270 :flags (start-dead launch-asap) :binding 1271)
(sp-item 1271 :flags (is-3d start-dead))
)
)
(defun ruins-bird-bob-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix))
"Move the bird particles up and down, on a sinusoidal period with a wavelength of 300 frames
TODO - check argument types / what birds?"
(set! (-> arg2 vector 0 y)
(+ (-> arg1 key proc root trans y) (* -2048.0 (sin (* 218.45334 (the float (mod (current-time) 300))))))
)
0
(none)
)
(defpart 1272
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:birth-func 'birth-func-random-next-time)
(:num 1.0)
(:x (meters -15) (meters 30))
(:y (meters 0) (meters 16))
(:z (meters -15) (meters 30))
(:scale-x (meters 1))
(:scale-y :copy scale-x)
(:r 128.0)
(:a 0.0)
(:timer (seconds -0.005))
(:flags (sp-cpuinfo-flag-3))
(:userdata 199.98)
(:func 'ruins-bird-bob-func)
)
)
(defun sparticle-ruins-bird-moon ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix))
"TODO - investigate, what even is this?"
(set! (-> arg2 vector 1 z) (the float (sar (shl (the int (+ -16384.0 (-> arg1 omega))) 48) 48)))
0
(none)
)
(defpart 1270
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:birth-func 'birth-func-copy-omega-to-z)
(:num 1.0)
(:x (meters 0))
(:y (meters 0))
(:z (meters 30) (meters 30))
(:scale-x (meters 0))
(:rot-z (degrees 0))
(:r 32.0 64.0)
(:g :copy r)
(:b :copy g)
(:a 0.0)
(:omega (degrees 0) (degrees 360))
(:vel-x (meters 0.0014814815) (meters 0.0014814815))
(:vel-z (meters 0))
(:scalevel-x (meters -0.04))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-3 ready-to-launch))
(:func 'sparticle-ruins-bird-moon)
(:next-time (seconds 0.665))
(:next-launcher 1273)
)
)
(defpart 1273
:init-specs ((:scale-x (meters 8))
(:scalevel-x (meters -0.08))
(:timer (seconds 2))
(:next-time (seconds 0.335))
(:next-launcher 1274)
)
)
(defpart 1274
:init-specs ((:scale-x (meters 0))
(:scalevel-x (meters -0.04))
(:timer (seconds 2))
(:next-time (seconds 0.665))
(:next-launcher 1273)
)
)
(defpart 1271
:init-specs ((:texture (new 'static 'texture-id :index #x1 :page #x3e8))
(:birth-func 'birth-func-copy2-rot-color)
(:num 2.0)
(:scale-x (meters 5))
(:scale-y (meters 2))
(:a 128.0)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 aux-list sp-cpuinfo-flag-12))
)
)
(defpartgroup group-pillar-collapse-explosion
:id 290
:linger-duration (seconds 3)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 64)
:parts ((sp-item 1275) (sp-item 1276) (sp-item 1277) (sp-item 1278))
)
(defpart 1275
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 10.0)
(:x (meters 0) (meters 0.6))
(:y (meters 4))
(:scale-x (meters 4.8) (meters 2.8))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 64.0 64.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 16.0)
(:vel-y (meters 0.033333335) (meters 0.04))
(:scalevel-x (meters 0.009333333) (meters 0.009333333))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.32 0.32)
(:friction 0.94 0.04)
(:timer (seconds 8))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.235) (seconds 0.097))
(:next-launcher 1279)
(:conerot-x (degrees 0) (degrees 3600))
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
)
)
(defpart 1279
:init-specs ((:scalevel-x (meters 0.0046666665))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.0)
(:next-time (seconds 0.335) (seconds 0.497))
(:next-launcher 1280)
)
)
(defpart 1280
:init-specs ((:scalevel-x (meters 0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -0.21333334 -0.10666667))
)
(defpart 1276
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
(:num 10.0 20.0)
(:x (meters 0.25))
(:y (meters 4))
(:scale-x (meters 1) (meters 2))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 96.0 32.0)
(:b 64.0 32.0)
(:a 16.0 32.0)
(:vel-y (meters 0) (meters 0.13333334))
(:scalevel-x (meters 0.006666667) (meters 0.0033333334))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.00016666666) (meters -0.00066666666))
(:friction 0.88 0.02)
(:timer (seconds 20))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.235) (seconds 0.097))
(:next-launcher 1281)
(:conerot-x (degrees 0) (degrees 3600))
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 0) (meters 3))
)
)
(defpart 1281
:init-specs ((:scalevel-x (meters 0.01))
(:scalevel-y :copy scalevel-x)
(:next-time (seconds 0.3) (seconds 0.097))
(:next-launcher 1282)
)
)
(defpart 1282
:init-specs ((:scalevel-x (meters 0.0033333334)) (:scalevel-y :copy scalevel-x) (:fade-a -0.053333335 -0.053333335))
)
(defpart 1277
:init-specs ((:birth-func 'birth-func-texture-group)
(:num 10.0 20.0)
(:y (meters 4))
(:scale-x (meters 3.5) (meters 1.75))
(:rot-z (degrees 0) (degrees 3600) :store)
(:scale-y (meters 4.5) (meters 2))
(:r 64.0 64.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 16.0)
(:vel-y (meters 0.05) (meters 0.1))
(:scalevel-x (meters 0.02) (meters 0.02))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.13333334)
(:friction 0.92 0.02)
(:timer (seconds 6.667))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata :data (new 'static 'boxed-array :type int32 80 1 0 #xc00000 #xc03300))
(:next-time (seconds 0.167))
(:next-launcher 1283)
(:conerot-x '*sp-temp*)
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 0) (meters 2))
)
)
(defpart 1278
:init-specs ((:texture (new 'static 'texture-id :index #x34 :page #xc))
(:num 10.0 20.0)
(:y (meters 4))
(:scale-x (meters 3.5) (meters 1.75))
(:rot-x 4)
(:rot-z (degrees 0) (degrees 360) :store)
(:scale-y (meters 4.5) (meters 2))
(:r 64.0 64.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 16.0)
(:vel-y (meters 0.05) (meters 0.1))
(:scalevel-x (meters 0.02) (meters 0.02))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.13333334)
(:friction 0.92 0.02)
(:timer (seconds 6.667))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.167))
(:next-launcher 1283)
(:conerot-x '*sp-temp*)
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 0) (meters -5))
)
)
(defpart 1283
:init-specs ((:scalevel-x (meters 0.02) (meters 0.02))
(:scalevel-y :copy scalevel-x)
(:next-time (seconds 0.2) (seconds 0.065))
(:next-launcher 1284)
)
)
(defpart 1284
:init-specs ((:scalevel-x (meters 0.01) (meters 0.01)) (:scalevel-y :copy scalevel-x) (:fade-a -0.18 -0.12))
)
(defpartgroup group-ruins-tower-trailer
:id 291
:duration (seconds 0.017)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1285))
)
(defpart 1285
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.5 0.6)
(:scale-x (meters 1) (meters 3))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 0.0)
(:vel-y (meters 0) (meters 0.01))
(:scalevel-x (meters 0.0033333334) (meters 0.01))
(:rotvel-z (degrees -0.3) (degrees 0.6))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.4 0.4)
(:friction 0.98)
(:timer (seconds 2.167))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.135))
(:next-launcher 1286)
(:conerot-x (degrees 0) (degrees 3600))
(:conerot-y (degrees 0) (degrees 3600))
(:conerot-radius (meters 0) (meters 1))
)
)
(defpart 1286
:init-specs ((:fade-a -0.053333335 -0.053333335))
)
(defpartgroup group-ruins-tower-splash
:id 292
:duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 32)
:parts ((sp-item 1287 :period (seconds 3) :length (seconds 0.135))
(sp-item 1287 :period (seconds 3) :length (seconds 0.1))
(sp-item 1287 :period (seconds 3) :length (seconds 0.067))
(sp-item 1287 :period (seconds 3) :length (seconds 0.035))
(sp-item 1287 :period (seconds 3) :length (seconds 0.017))
(sp-item 1288 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
(sp-item 1289 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
)
)
(defpart 1289
:init-specs ((:texture (new 'static 'texture-id :index #x2c :page #xc))
(:num 3.0)
(:x (meters 0) (meters 16))
(:y (meters 0))
(:scale-x (meters 5) (meters 10))
(:rot-y (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 32.0 32.0)
(:scalevel-x (meters 0.033333335) (meters 0.05))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.053333335 -0.053333335)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12))
(:rotate-y (degrees 0) (degrees 3600))
)
)
(defpart 1288
:init-specs ((:texture (new 'static 'texture-id :index #x33 :page #xc))
(:num 2.0)
(:y (meters 0) (meters 4))
(:scale-x (meters 20))
(:rot-y (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 64.0)
(:vel-y (meters 0.05) (meters 0.016666668))
(:scalevel-x (meters 0.25) (meters 0.25))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.53333336)
(:accel-y (meters -0.005))
(:timer (seconds 0.8))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12))
)
)
(defpart 1287
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
(:num 16.0)
(:y (meters 3))
(:scale-x (meters 0.6) (meters 0.05))
(:rot-x 4)
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 16.0 32.0)
(:omega (degrees 0.045) (degrees 0.0225))
(:vel-y (meters 0.23333333) (meters 0.26666668))
(:accel-y (meters -0.005) (meters -0.00066666666))
(:friction 0.95)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12))
(:userdata 0.0)
(:func 'check-drop-level-ruins-tower-userdata)
(:conerot-x (degrees 70) (degrees 15))
(:conerot-y (degrees 0) (degrees 3600))
(:conerot-radius (meters 0) (meters 4))
)
)
(defpart 1290
:init-specs ((:r 64.0 64.0)
(:g 0.0)
(:b 128.0 128.0)
(:fade-r -6.4)
(:fade-b -12.8)
(:next-time (seconds 0) (seconds 0.747))
(:next-launcher 1290)
)
)
(defpart 1291
:init-specs ((:texture (new 'static 'texture-id :index #x2c :page #xc))
(:num 0.3)
(:scale-x (meters 2) (meters 2.5))
(:rot-y (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 0.0)
(:scalevel-x (meters 0.04) (meters 0.013333334))
(:scalevel-y :copy scalevel-x)
(:fade-a 6.4)
(:timer (seconds 0.5))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12))
(:next-time (seconds 0.067))
(:next-launcher 1292)
)
)
(defpart 1292
:init-specs ((:fade-a -0.53333336 -0.53333336))
)
(defun check-drop-level-ruins-tower-userdata-nosplat ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
"TODO - docs"
(when (< (-> arg2 y) (-> arg1 user-float))
(let ((vec (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set! (-> vec x) (-> arg2 x))
(set! (-> vec y) (-> arg1 user-float))
(set! (-> vec z) (-> arg2 z))
(set! (-> vec w) 1.0)
)
)
(sparticle-motion-blur arg0 arg1 arg2)
(none)
)
(defun check-drop-level-ruins-tower-userdata ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
"TODO - docs"
(when (< (-> arg2 y) (-> arg1 user-float))
(let ((vec (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set-vector! vec (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0)
(launch-particles :system *sp-particle-system-3d* (-> *part-id-table* 1291) vec)
)
)
(sparticle-motion-blur arg0 arg1 arg2)
(none)
)
(defpartgroup group-ruins-tower-trailer-small
:id 293
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1293))
)
(defpartgroup group-ruins-tower-explosion-small
:id 294
:duration (seconds 3)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1294 :period (seconds 32) :length (seconds 0.085))
(sp-item 1295 :period (seconds 32) :length (seconds 0.035) :offset 10)
(sp-item 1296 :period (seconds 32) :length (seconds 0.335) :offset 25)
(sp-item 1297 :period (seconds 32) :length (seconds 0.117) :offset 10)
(sp-item 1298 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1299 :period (seconds 32) :length (seconds 0.167) :offset 15)
)
)
(defpartgroup group-ruins-tower-explosion-medium
:id 295
:duration (seconds 3)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1294 :period (seconds 32) :length (seconds 0.085))
(sp-item 1295 :period (seconds 32) :length (seconds 0.035) :offset 10)
(sp-item 1296 :period (seconds 32) :length (seconds 0.335) :offset 25)
(sp-item 1297 :period (seconds 32) :length (seconds 0.117) :offset 10)
(sp-item 1298 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1299 :period (seconds 32) :length (seconds 0.167) :offset 15)
)
)
(defpartgroup group-ruins-tower-explosion-large
:id 296
:duration (seconds 3)
:linger-duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1294 :period (seconds 32) :length (seconds 0.085))
(sp-item 1295 :period (seconds 32) :length (seconds 0.035) :offset 10)
(sp-item 1296 :period (seconds 32) :length (seconds 0.335) :offset 25)
(sp-item 1297 :period (seconds 32) :length (seconds 0.117) :offset 10)
(sp-item 1298 :period (seconds 32) :length (seconds 0.167) :offset 15)
(sp-item 1299 :period (seconds 32) :length (seconds 0.167) :offset 15)
)
)
(defpart 1297
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:num 32.0)
(:y (meters -3.5) (meters 2))
(:scale-x (meters 3.5))
(:rot-x 4)
(:scale-y (meters 0.3) (meters 0.5))
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 64.0 32.0)
(:omega (degrees 0.0675))
(:vel-y (meters 0.5) (meters 0.6666667))
(:fade-b -8.0)
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
(:friction 0.9 0.08)
(:timer (seconds 1.5) (seconds 0.997))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.05))
(:next-launcher 1300)
(:conerot-x (degrees 0) (degrees 140))
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
)
)
(defpart 1300
:init-specs ((:fade-a -0.096 -0.096))
)
(defpart 1299
:init-specs ((:texture (new 'static 'texture-id :index #x34 :page #xc))
(:num 8.0 5.0)
(:y (meters -2.5))
(:scale-x (meters 13) (meters 12))
(:rot-x 4)
(:rot-z (degrees 0) (degrees 360) :store)
(:scale-y (meters 18) (meters 14))
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 16.0)
(:vel-y (meters 0.2) (meters 0.5))
(:scalevel-x (meters 0.06666667) (meters 0.06666667))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.26666668)
(:friction 0.92 0.02)
(:timer (seconds 3.335))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.085))
(:next-launcher 1301)
(:conerot-x '*sp-temp*)
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 0) (meters 2))
)
)
(defpart 1301
:init-specs ((:scalevel-x (meters 0.033333335) (meters 0.033333335))
(:scalevel-y :copy scalevel-x)
(:next-time (seconds 0.1) (seconds 0.03))
(:next-launcher 1302)
)
)
(defpart 1302
:init-specs ((:scalevel-x (meters 0.016666668) (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.225 -0.225)
)
)
(defpart 1298
:init-specs ((:birth-func 'birth-func-texture-group)
(:num 8.0 5.0)
(:y (meters -2.5))
(:scale-x (meters 13) (meters 12))
(:rot-z (degrees 0) (degrees 3600) :store)
(:scale-y (meters 18) (meters 14))
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 16.0)
(:vel-y (meters 0.2) (meters 0.5))
(:scalevel-x (meters 0.06666667) (meters 0.06666667))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.26666668)
(:friction 0.92 0.02)
(:timer (seconds 3.335))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc03300))
(:next-time (seconds 0.085))
(:next-launcher 1301)
(:conerot-x '*sp-temp*)
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 0) (meters 2))
)
)
(defpart 1296
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
(:num 6.0 8.0)
(:x (meters 0.25))
(:y (meters -2.5))
(:scale-x (meters 3) (meters 5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 48.0)
(:vel-y (meters 0.33333334) (meters 0.5))
(:scalevel-x (meters 0.033333335) (meters 0.033333335))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:accel-y (meters -0.00033333333) (meters -0.0023333333))
(:friction 0.88 0.02)
(:timer (seconds 10))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.117) (seconds 0.047))
(:next-launcher 1303)
(:conerot-x (degrees 0) (degrees 3600))
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 5) (meters 20))
)
)
(defpart 1303
:init-specs ((:scalevel-x (meters 0.016666668))
(:scalevel-y :copy scalevel-x)
(:next-time (seconds 0.15) (seconds 0.047))
(:next-launcher 1304)
)
)
(defpart 1304
:init-specs ((:scalevel-x (meters 0.006666667)) (:scalevel-y :copy scalevel-x) (:fade-a -0.10666667 -0.10666667))
)
(defpart 1294
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 4.0 4.0)
(:x (meters 0) (meters 0.6))
(:y (meters -2.5))
(:scale-x (meters 16.5) (meters 20))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 0.0)
(:vel-y (meters 0.33333334) (meters 0.4))
(:scalevel-x (meters 0.06666667) (meters 0.06666667))
(:rotvel-z (degrees -0.12) (degrees 0.24))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.32 0.32)
(:friction 0.89 0.04)
(:timer (seconds 8))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.117) (seconds 0.047))
(:next-launcher 1305)
(:conerot-x (degrees -1440) (degrees 2880))
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
)
)
(defpart 1305
:init-specs ((:scalevel-x (meters 0.033333335))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.0)
(:next-time (seconds 2) (seconds 1.997))
(:next-launcher 1306)
)
)
(defpart 1306
:init-specs ((:scalevel-x (meters 0.016666668)) (:scalevel-y :copy scalevel-x) (:fade-a -0.026666667 -0.026666667))
)
(defpart 1295
:init-specs ((:texture (new 'static 'texture-id :index #x31 :page #xc))
(:num 4.0)
(:y (meters -2.5))
(:scale-x (meters 16) (meters 16))
(:rot-x 4)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 1) (meters 0.5))
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 64.0 64.0)
(:scalevel-x (meters 0.26666668) (meters 0.33333334))
(:fade-a -0.7111111)
(:timer (seconds 0.3))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
)
)
(defpartgroup group-ruins-tower-trailer-medium
:id 297
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1293))
)
(defpart 1293
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.5 0.6)
(:y (meters 0) (meters -10))
(:scale-x (meters 12) (meters 12))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 0.0)
(:vel-y (meters 0) (meters 0.05))
(:scalevel-x (meters 0.026666667) (meters 0.04))
(:rotvel-z (degrees -0.3) (degrees 0.6))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.16 0.16)
(:accel-y (meters -0.00025) (meters -0.0001))
(:friction 0.98)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.5))
(:next-launcher 1286)
(:conerot-x (degrees 0) (degrees 3600))
(:conerot-y (degrees 0) (degrees 3600))
(:conerot-radius (meters 0) (meters 16))
)
)
(defpart 1307
:init-specs ((:fade-a -0.04 -0.04))
)
(defpartgroup group-ruins-tower-splash-medium
:id 298
:duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 32)
:parts ((sp-item 1287 :period (seconds 3) :length (seconds 0.135))
(sp-item 1287 :period (seconds 3) :length (seconds 0.1))
(sp-item 1287 :period (seconds 3) :length (seconds 0.067))
(sp-item 1287 :period (seconds 3) :length (seconds 0.035))
(sp-item 1287 :period (seconds 3) :length (seconds 0.017))
(sp-item 1288 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
(sp-item 1289 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
)
)
(defpartgroup group-ruins-tower-splash-large
:id 299
:duration (seconds 2)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 32)
:parts ((sp-item 1287 :period (seconds 3) :length (seconds 0.135))
(sp-item 1287 :period (seconds 3) :length (seconds 0.1))
(sp-item 1287 :period (seconds 3) :length (seconds 0.067))
(sp-item 1287 :period (seconds 3) :length (seconds 0.035))
(sp-item 1287 :period (seconds 3) :length (seconds 0.017))
(sp-item 1288 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
(sp-item 1289 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
)
)
(defpartgroup group-ruins-tower-splash-small
:id 300
:duration (seconds 0.267)
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1287 :period (seconds 3) :length (seconds 0.135))
(sp-item 1287 :period (seconds 3) :length (seconds 0.1))
(sp-item 1287 :period (seconds 3) :length (seconds 0.067))
(sp-item 1287 :period (seconds 3) :length (seconds 0.035))
(sp-item 1287 :period (seconds 3) :length (seconds 0.017))
(sp-item 1288 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
(sp-item 1289 :flags (is-3d) :period (seconds 3) :length (seconds 0.1))
)
)
(defpartgroup group-ruins-tower-trailer-large
:id 301
:bounds (static-bspherem 0 0 0 15)
:parts ((sp-item 1308))
)
(defpart 1308
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.5 0.6)
(:scale-x (meters 20) (meters 20))
(:rot-z (degrees 0) (degrees 3600))
(:scale-y :copy scale-x)
(:r 64.0 128.0)
(:g :copy r)
(:b :copy g)
(:a 0.0)
(:vel-y (meters 0.013333334) (meters 0.06666667))
(:scalevel-x (meters 0.04) (meters 0.053333335))
(:rotvel-z (degrees -0.3) (degrees 0.6))
(:scalevel-y :copy scalevel-x)
(:fade-a 0.16 0.16)
(:accel-y (meters -0.00025) (meters -0.0001))
(:friction 0.98)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 0.5))
(:next-launcher 1286)
(:conerot-x (degrees 0) (degrees 3600))
(:conerot-y (degrees 0) (degrees 3600))
(:conerot-radius (meters 0) (meters 16))
)
)