jak-project/goal_src/jak2/levels/hideout/hideout-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

833 lines
26 KiB
Common Lisp

;;-*-Lisp-*-
(in-package goal)
;; name: hideout-part.gc
;; name in dgo: hideout-part
;; dgos: HIDEOUT
;; og:ignore-from-loc
;; DECOMP BEGINS
(deftype hide-part (part-spawner)
()
)
(defpartgroup group-hide-barrel-fire
:id 771
:bounds (static-bspherem 0 3 0 4)
:parts ((sp-item 3360 :fade-after (meters 50) :falloff-to (meters 80))
(sp-item 3361 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 0.335) :length (seconds 0.167))
(sp-item 3362 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 0.4) :length (seconds 0.185) :offset 20)
(sp-item 3363 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 0.535) :length (seconds 0.1) :offset 35)
(sp-item 3361 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 0.85) :length (seconds 0.2) :offset 65)
(sp-item 3362 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 1.25) :length (seconds 0.135) :offset 15)
(sp-item 3363 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 1.435) :length (seconds 0.167) :offset 85)
(sp-item 3361 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 2) :length (seconds 0.235) :offset 100)
(sp-item 3362 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 4.167) :length (seconds 0.15) :offset 450)
(sp-item 3363 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 5) :length (seconds 0.085) :offset 115)
(sp-item 3361 :fade-after (meters 50) :falloff-to (meters 80) :period (seconds 7) :length (seconds 0.185) :offset 80)
(sp-item 3364 :fade-after (meters 40) :falloff-to (meters 40) :binding 3359)
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3359 :flags (bit1 start-dead launch-asap))
(sp-item 3365 :fade-after (meters 60) :falloff-to (meters 80))
(sp-item 3366 :fade-after (meters 50) :falloff-to (meters 50))
(sp-item 3367 :flags (bit6))
)
)
(defpart 3367
:init-specs ((:texture (new 'static 'texture-id :index #xca :page #xc))
(:num 1.0)
(:y (meters 0.5))
(:scale-x (meters 5) (meters 0.1))
(:rot-x (degrees 45))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 0.0 128.0)
(:b 0.0)
(:a 12.0)
(:fade-a -0.4)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 10240.0)
)
)
(defpart 3364
:init-specs ((:texture (new 'static 'texture-id :index #x26 :page #xc))
(:num 0.0 1.0)
(:sound (static-sound-spec "fire-pop" :volume 10000.0))
(:x (meters -0.3) (meters 0.6))
(:scale-x (meters 0.1))
(:scale-y :copy scale-x)
(:r 256.0)
(:g 0.0)
(:b 0.0)
(:a 0.0)
(:vel-y (meters 0.013333334) (meters 0.026666667))
(:accel-y (meters -0.000033333334) (meters -0.00006666667))
(:friction 0.96)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-1 sp-cpuinfo-flag-3))
(:conerot-x (degrees -20) (degrees 40))
(:conerot-y (degrees 0) (degrees 360))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 3359
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:num 1.0)
(:x (meters 0) (meters 16))
(:y (meters 0) (meters 16))
(:z (meters 0.1) (meters 0.3))
(:scale-x (meters 0.1))
(:scale-y :copy scale-x)
(:r 256.0)
(:g 128.0)
(:b 128.0)
(:a 96.0 32.0)
(:omega (degrees 0) (degrees 360))
(:vel-x (meters -0.026666667) (meters 0.053333335))
(:vel-y (meters 0))
(:vel-z (meters -0.0013333333) (meters 0.0026666666))
(:fade-r 0.0)
(:fade-g -0.7111111)
(:fade-b -0.7111111)
(:fade-a -0.42666668)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-1 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 ready-to-launch))
(:next-time (seconds 0.6))
(:next-launcher 3368)
)
)
(defpart 3368
:init-specs ((:fade-r -1.0666667) (:fade-g 1.0666667) (:fade-b 1.0666667))
)
(defpart 3361
:init-specs ((:texture (new 'static 'texture-id :index #x33 :page #xc))
(:birth-func 'birth-func-texture-group)
(:num 8.0 8.0)
(:x (meters 0) (meters -0.25))
(:y (meters -0.8))
(:scale-x (meters 0.3) (meters 0.2))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 240.0 15.0)
(:g 200.0 16.0)
(:b 160.0 16.0)
(:a 32.0 32.0)
(:vel-x (meters 0.00033333333))
(:vel-y (meters 0.006666667) (meters 0.006666667))
(:rotvel-z (degrees -0.4) (degrees 0.8))
(:fade-r -2.1333334 -1.0666667)
(:fade-g -4.266667 -2.1333334)
(:fade-b -5.3333335)
(:accel-y (meters -0.0001))
(:timer (seconds 0.535) (seconds 0.265))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300))
(:next-time (seconds 0.1) (seconds 0.03))
(:next-launcher 3369)
(:conerot-x (degrees -8) 4 (degrees 4))
(:conerot-y (degrees -180) (degrees 360))
(:rotate-y (degrees 0) (degrees 87))
(:conerot-radius (meters 0) (meters 0.5))
)
)
(defpart 3362
:init-specs ((:texture (new 'static 'texture-id :index #x33 :page #xc))
(:birth-func 'birth-func-texture-group)
(:num 8.0 8.0)
(:x (meters 0) (meters -0.25))
(:y (meters -0.8))
(:scale-x (meters 0.3) (meters 0.2))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 240.0 15.0)
(:g 200.0 16.0)
(:b 160.0 16.0)
(:a 32.0 32.0)
(:vel-x (meters 0.00033333333))
(:vel-y (meters 0.006666667) (meters 0.006666667))
(:rotvel-z (degrees -0.4) (degrees 0.8))
(:fade-r -2.1333334 -1.0666667)
(:fade-g -4.266667 -2.1333334)
(:fade-b -5.3333335)
(:accel-y (meters -0.0001))
(:timer (seconds 0.535) (seconds 0.265))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300))
(:next-time (seconds 0.1) (seconds 0.03))
(:next-launcher 3369)
(:conerot-x (degrees -8) 4 (degrees 4))
(:conerot-y (degrees -180) (degrees 360))
(:rotate-y (degrees 120) (degrees 90))
(:conerot-radius (meters 0) (meters 0.5))
)
)
(defpart 3363
:init-specs ((:texture (new 'static 'texture-id :index #x33 :page #xc))
(:birth-func 'birth-func-texture-group)
(:num 8.0 8.0)
(:x (meters 0) (meters -0.25))
(:y (meters -0.8))
(:scale-x (meters 0.3) (meters 0.2))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 240.0 15.0)
(:g 200.0 16.0)
(:b 160.0 16.0)
(:a 32.0 32.0)
(:vel-x (meters 0.00033333333))
(:vel-y (meters 0.006666667) (meters 0.006666667))
(:rotvel-z (degrees -0.4) (degrees 0.8))
(:fade-r -2.1333334 -1.0666667)
(:fade-g -4.266667 -2.1333334)
(:fade-b -5.3333335)
(:accel-y (meters -0.0001))
(:timer (seconds 0.535) (seconds 0.265))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300))
(:next-time (seconds 0.1) (seconds 0.03))
(:next-launcher 3369)
(:conerot-x (degrees -8) 4 (degrees 4))
(:conerot-y (degrees -180) (degrees 360))
(:rotate-y (degrees 240) (degrees 110))
(:conerot-radius (meters 0) (meters 0.5))
)
)
(defpart 3369
:init-specs ((:b 0.0)
(:fade-r 0.0)
(:fade-g 0.0)
(:fade-b 0.0)
(:fade-a -0.4 -0.2)
(:next-time (seconds 0.135) (seconds 0.03))
(:next-launcher 3370)
)
)
(defpart 3370
:init-specs ((:fade-r -0.125) (:fade-g 0.4) (:fade-b 0.4))
)
(defpart 3360
:init-specs ((:texture (new 'static 'texture-id :index #x33 :page #xc))
(:birth-func 'birth-func-texture-group)
(:num 1.0 5.0)
(:x (meters 0) (meters -0.25))
(:y (meters -0.8))
(:scale-x (meters 0.5) (meters 0.3))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 32.0)
(:g 128.0)
(:b 128.0)
(:a 16.0 16.0)
(:vel-x (meters 0.00033333333))
(:vel-y (meters 0.006666667) (meters 0.006666667))
(:rotvel-z (degrees -0.4) (degrees 0.8))
(:fade-a -0.16 -0.16)
(:accel-y (meters -0.0001))
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-4))
(:userdata :data (new 'static 'boxed-array :type int32 40 1 0 #xc00000 #xc00000 #xc03300))
(:conerot-x (degrees -8) 4 (degrees 4))
(:conerot-y (degrees -180) (degrees 360))
(:rotate-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 0.5))
)
)
(defpart 3365
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.5)
(:x (meters -0.25) (meters 0.5))
(:scale-x (meters 1) (meters 0.5))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 196.0)
(:g 128.0)
(:b 128.0)
(:a 8.0 8.0)
(:vel-y (meters 0.01) (meters 0.01))
(:scalevel-x (meters 0.006666667))
(:rotvel-z (degrees -0.2) (degrees 0.4))
(:scalevel-y :copy scalevel-x)
(:fade-r -0.64)
(:fade-g -0.32)
(:fade-b -0.32)
(:fade-a -0.017777778 -0.026666667)
(:accel-y (meters -0.000006666667))
(:friction 0.99)
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2))
(:next-time (seconds 0.5) (seconds 0.165))
(:next-launcher 3371)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 3371
:init-specs ((:fade-r 0.0) (:fade-g 0.0) (:fade-b 0.0))
)
(defpart 3366
:init-specs ((:num 0.6)
(:x (meters 0) (meters 0.2))
(:rot-x 8)
(:r 1638.4)
(:g 1331.2)
(:b 1433.6)
(:vel-x (meters 0) (meters 0.006666667))
(:vel-y (meters 0.02) (meters 0.013333334))
(:friction 0.96)
(:timer (seconds 1))
(:flags (distort))
(:next-time (seconds 0.5))
(:next-launcher 3372)
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 3372
:init-specs ((:fade-b -0.68266666))
)
(defpartgroup group-hide-moth
:id 772
:bounds (static-bspherem 0 0 0 3)
:parts ((sp-item 3375 :flags (bit1) :period (seconds 60) :length (seconds 0.017) :binding 3373)
(sp-item 3373 :flags (start-dead launch-asap) :binding 3374)
(sp-item 3373 :flags (start-dead launch-asap) :binding 3374)
(sp-item 3374 :flags (is-3d start-dead))
(sp-item 3374 :flags (is-3d start-dead))
(sp-item 3376 :flags (bit6))
(sp-item 3377 :flags (bit6))
)
)
(defpart 3376
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:y (meters -0.1))
(:scale-x (meters 0.75) (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)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 2048.0)
)
)
(defpart 3377
:init-specs ((:texture (new 'static 'texture-id :index #xbb :page #xc))
(:num 1.0)
(:y (meters -0.1))
(:scale-x (meters 3) (meters 0.1))
(:rot-x (degrees 2.25))
(:scale-y :copy scale-x)
(:r 255.0)
(:g 255.0)
(:b 255.0)
(:a 4.0 2.0)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
(:userdata 2048.0)
)
)
(defpart 3375
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:num 1.0)
(:scale-x (meters 1.1))
(:scale-y :copy scale-x)
(:r 128.0)
(:a 0.0)
(:timer (seconds 60))
(:flags (sp-cpuinfo-flag-3))
(:rotate-y (degrees 0) (degrees 360))
)
)
(defpart 3373
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:num 1.0)
(:y (meters 0) (meters 16))
(:z (meters 1.5))
(:scale-x (meters 1.1))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 0.0)
(:omega (degrees 0) (degrees 360))
(:vel-x (meters 0.0044444446) (meters 0.0044444446))
(:vel-y (meters 0.008888889) (meters 0.008888889))
(:vel-z (meters 0))
(:timer (seconds 60))
(:flags (sp-cpuinfo-flag-3 ready-to-launch))
(:next-time (seconds 0.5) (seconds 1.497))
(:next-launcher 3378)
)
)
(defpart 3378
:init-specs ((:vel-x (meters -0.035555556) (meters 0.07111111))
(:vel-y (meters -0.0148148155) (meters 0.029629631))
(:rotvel-z (degrees -0.4) (degrees 0.8))
(:next-time (seconds 0.5) (seconds 1.497))
(:next-launcher 3378)
)
)
(defpart 3374
:init-specs ((:texture (new 'static 'texture-id :page #x3e7))
(:birth-func 'birth-func-copy-rot-color)
(:num 2.0)
(:scale-x (meters 0.2))
(:rot-x (degrees -60) (degrees 300))
(:scale-y (meters 0.2))
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 128.0)
(:timer (seconds 0.017))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 aux-list sp-cpuinfo-flag-12))
)
)
(defpartgroup group-hide-fireplace-sparks
:id 773
:flags (use-local-clock)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 3379 :period (seconds 8) :length (seconds 0.017))
(sp-item 3379 :period (seconds 10.517) :length (seconds 0.035))
(sp-item 3379 :period (seconds 12.717) :length (seconds 0.017))
(sp-item 3379 :period (seconds 15.9) :length (seconds 0.035))
)
)
(defpart 3379
:init-specs ((:texture (new 'static 'texture-id :index #x92 :page #xc))
(:num 1.0 1.0)
(:y (meters -0.5) (meters 1))
(:z (meters -0.2) (meters 0.4))
(:scale-x (meters 0.075) (meters 0.025))
(:rot-x 4)
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.04))
(:r 200.0 55.0)
(:g 100.0 100.0)
(:b :copy g)
(:a 128.0)
(:omega (degrees 0.00225))
(:vel-y (meters 0.046666667) (meters 0.06666667))
(:scalevel-x (meters -0.00008333333))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:scalevel-y :copy scalevel-x)
(:fade-g -0.4)
(:fade-b -0.8)
(:accel-y (meters -0.003))
(:friction 0.85 0.04)
(:timer (seconds 4))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-14))
(:userdata -19660.8)
(:func 'check-drop-level-hide-fireplace-sparks)
(:conerot-x (degrees 45) (degrees 40))
(:conerot-y (degrees 80) (degrees 20))
(:rotate-y (degrees -90))
(:conerot-radius (meters 0) (meters 0.5))
)
)
(defpart 3380
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:num 1.0 1.0)
(:scale-x (meters 0.075) (meters 0.025))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.025))
(:r 200.0 55.0)
(:g 100.0 100.0)
(:b :copy g)
(:a 128.0)
(:vel-y (meters 0.0033333334) (meters 0.006666667))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:fade-g -0.4)
(:fade-b -0.8)
(:fade-a -0.42666668 -0.85333335)
(:accel-y (meters -0.00025) (meters -0.00008333333))
(:timer (seconds 2))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:conerot-x (degrees 10) (degrees 60))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 3381
:init-specs ((:texture (new 'static 'texture-id :index #xc9 :page #xc))
(:num 1.0)
(:scale-x (meters 0.075) (meters 0.025))
(:rot-z (degrees 0) (degrees 360))
(:scale-y (meters 0.1) (meters 0.025))
(:r 200.0 55.0)
(:g 100.0 100.0)
(:b :copy g)
(:a 128.0)
(:vel-y (meters 0) (meters 0.006666667))
(:rotvel-z (degrees -1.2) (degrees 2.4))
(:fade-g -0.10666667)
(:fade-b -0.8)
(:friction 0.94 0.02)
(:timer (seconds 8))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
(:next-time (seconds 1.5) (seconds 0.497))
(:next-launcher 3382)
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 360))
)
)
(defpart 3382
:init-specs ((:rotvel-z (degrees 0)) (:fade-a -0.10666667 -0.10666667))
)
(defun check-drop-level-hide-fireplace-sparks ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 vector))
(sparticle-motion-blur arg0 arg1 arg2)
(when (< (-> arg2 y) (-> arg1 user-float))
(let ((gp-0 (new 'stack-no-clear 'vector)))
(sp-kill-particle arg0 arg1)
(set-vector! gp-0 (-> arg2 x) (-> arg1 user-float) (-> arg2 z) 1.0)
(launch-particles (-> *part-id-table* 3380) gp-0)
(launch-particles (-> *part-id-table* 3381) gp-0)
)
)
(none)
)
(defpartgroup group-hide-ceilingsmoke :id 774 :bounds (static-bspherem 0 0 0 12) :parts ((sp-item 3383)))
(defpart 3383
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 0.4)
(:y (meters -0.5) (meters -0.5))
(:scale-x (meters 2) (meters 6))
(:scale-y (meters 1) (meters 0.5))
(:r 64.0 16.0)
(:g 64.0)
(:b 64.0)
(:a 0.0)
(:vel-y (meters -0.0033333334) (meters 0.006666667))
(:fade-a 0.026666667)
(:friction 0.99)
(:timer (seconds 15))
(:flags (sp-cpuinfo-flag-2))
(:next-time (seconds 1) (seconds 0.997))
(:next-launcher 3384)
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 360))
(:conerot-radius (meters 0) (meters 10))
)
)
(defpart 3384
:init-specs ((:fade-a 0.0) (:next-time (seconds 5)) (:next-launcher 3385))
)
(defpart 3385
:init-specs ((:fade-a -0.026666667))
)
(defpartgroup group-hideout-pipe
:id 775
:duration (seconds 0.017)
:flags (use-local-clock unk-4)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 3386 :flags (bit7)))
)
(defpart 3386
:init-specs ((:texture (new 'static 'texture-id :index #x49 :page #x3e7))
(:num 8.0 8.0)
(:x (meters 0) (meters 0.1))
(:z (meters -0.28))
(:scale-x (meters 0.07) (meters 0.05))
(:rot-x 4)
(:scale-y :copy scale-x)
(:r 128.0)
(:g 64.0)
(:b 32.0)
(:a 64.0 32.0)
(:omega (degrees 0.00675))
(:vel-z (meters 0.016666668) (meters 0.0033333334))
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 use-global-acc))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.1) (seconds 0.015))
(:next-launcher 3387)
(:rotate-y (degrees 0))
(:rotate-z (degrees 0) (degrees 360))
)
)
(defpart 3387
:init-specs ((:scale-x (meters 0.005) (meters 0.04))
(:scale-y :copy scale-x)
(:vel-x (meters -0.01) (meters 0.02))
(:vel-y (meters -0.01) (meters 0.02))
(:vel-z (meters -0.01) (meters 0.013333334))
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
)
)
(defpartgroup group-hideout-mouth
:id 776
:duration (seconds 0.017)
:flags (use-local-clock unk-4)
:bounds (static-bspherem 0 0 0 8)
:parts ((sp-item 3388 :flags (bit7))
(sp-item 3389 :flags (bit7))
(sp-item 3390 :flags (bit7))
(sp-item 3391 :flags (bit7))
)
)
(defpart 3388
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 4.0 2.0)
(:x (meters -0.05))
(:scale-x (meters 0.01) (meters 0.03))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g :copy r)
(:b :copy g)
(:a 16.0 32.0)
(:vel-x (meters 0.013333334) (meters 0.013333334))
(:vel-y (meters -0.006666667) (meters 0.013333334))
(:vel-z (meters -0.006666667) (meters 0.013333334))
(:scalevel-x (meters 0.013333334) (meters 0.013333334))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.85333335 -0.85333335)
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
(:friction 0.93 0.03)
(:timer (seconds 0.5))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc))
(:rotate-y (degrees 0))
)
)
(defpart 3389
:init-specs ((:texture (new 'static 'texture-id :page #xc))
(:num 4.0 2.0)
(:x (meters -0.05))
(:scale-x (meters 0.01) (meters 0.03))
(:rot-z (degrees 0) (degrees 360))
(:scale-y :copy scale-x)
(:r 128.0)
(:g 64.0)
(:b 32.0)
(:a 16.0 32.0)
(:vel-x (meters 0.013333334) (meters 0.013333334))
(:vel-y (meters -0.006666667) (meters 0.013333334))
(:vel-z (meters -0.006666667) (meters 0.013333334))
(:scalevel-x (meters 0.013333334) (meters 0.013333334))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.85333335 -0.85333335)
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
(:friction 0.93 0.03)
(:timer (seconds 0.5))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 use-global-acc))
(:rotate-y (degrees 0))
)
)
(defpart 3390
:init-specs ((:texture (new 'static 'texture-id :index #x49 :page #x3e7))
(:num 32.0 8.0)
(:x (meters -0.05))
(:scale-x (meters 0.005) (meters 0.015))
(:rot-x 4)
(:scale-y :copy scale-x)
(:r 128.0)
(:g 64.0)
(:b 32.0)
(:a 64.0 32.0)
(:omega (degrees 0.00067499996))
(:vel-x (meters 0.013333334) (meters 0.013333334))
(:vel-y (meters -0.006666667) (meters 0.013333334))
(:vel-z (meters -0.006666667) (meters 0.013333334))
(:fade-a -0.85333335)
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
(:timer (seconds 0.25))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 use-global-acc))
(:func 'sparticle-motion-blur)
(:rotate-y (degrees 0))
)
)
(defpart 3391
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
(:num 16.0 4.0)
(:x (meters -0.05))
(:scale-x (meters 0.01) (meters 0.005))
(:rot-x 4)
(:scale-y :copy scale-x)
(:r 128.0)
(:g 128.0)
(:b 128.0)
(:a 16.0 32.0)
(:omega (degrees 0.001125))
(:vel-x (meters 0.013333334) (meters 0.013333334))
(:vel-y (meters -0.006666667) (meters 0.013333334))
(:vel-z (meters -0.006666667) (meters 0.013333334))
(:fade-a -0.85333335)
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
(:timer (seconds 0.25))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc))
(:func 'sparticle-motion-blur)
(:rotate-y (degrees 0))
)
)
(defpartgroup group-hideout-mud-drip
:id 777
:duration (seconds 0.017)
:flags (use-local-clock unk-4)
:bounds (static-bspherem 0 -2 0 3)
:parts ((sp-item 3392) (sp-item 3393 :flags (is-3d)))
)
(defpart 3393
:init-specs ((:texture (new 'static 'texture-id :index #x49 :page #x3e7))
(:num 2.0)
(:y (meters -1.2))
(:z (meters -0.35))
(:scale-x (meters 0.07) (meters 0.04))
(:scale-y (meters 0.07) (meters 0.04))
(:r 128.0)
(:g 64.0)
(:b 32.0)
(:a 64.0 32.0)
(:scalevel-x (meters -0.000008333333) (meters -0.000008333333))
(:scalevel-y :copy scalevel-x)
(:fade-a -0.32)
(:timer (seconds 1))
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-12))
(:conerot-x (degrees 90))
(:conerot-y (degrees 0) (degrees 3600))
(:rotate-y (degrees 0))
(:conerot-radius (meters 0) (meters 0.5))
)
)
(defpart 3392
:init-specs ((:texture (new 'static 'texture-id :index #x49 :page #x3e7))
(:num 1.0)
(:y (meters -0.1))
(:z (meters 0.35))
(:scale-x (meters 0.03) (meters 0.04))
(:rot-x 4)
(:scale-y :copy scale-x)
(:r 128.0)
(:g 64.0)
(:b 32.0)
(:a 64.0 32.0)
(:omega (degrees 0.018))
(:vel-z (meters -0.0033333334))
(:timer (seconds 2.167))
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12 use-global-acc))
(:func 'sparticle-motion-blur)
(:next-time (seconds 0.335) (seconds -0.005))
(:next-launcher 3394)
(:rotate-y (degrees 0))
)
)
(defpart 3394
:init-specs ((:accel-y (meters -0.00046666668) (meters -0.00006666667))
(:friction 0.92)
(:next-time (seconds 0.82) (seconds -0.005))
(:next-launcher 3395)
)
)
(defpart 3395
:init-specs ((:vel-x (meters -0.006666667) (meters 0.013333334))
(:vel-y (meters 0.00066666666) (meters 0.006))
(:vel-z (meters -0.006666667) (meters 0.013333334))
(:friction 0.95)
)
)