mirror of
https://github.com/open-goal/jak-project.git
synced 2024-10-21 07:37:45 -04:00
0ce5835818
Updates the decompiler for the new format and there's new macros. This new format should be easier to read/parse. Also rewrote `sp-init-fields!` (both jak 1 and 2) from assembly to GOAL. Hopefully I did not miss any regressions in Jak 1/2 while updating the files, it's a lot.
2469 lines
96 KiB
Common Lisp
2469 lines
96 KiB
Common Lisp
;;-*-Lisp-*-
|
|
(in-package goal)
|
|
|
|
;; name: ctyfarm-obs.gc
|
|
;; name in dgo: ctyfarm-obs
|
|
;; dgos: CFB, CFA
|
|
|
|
;; DECOMP BEGINS
|
|
|
|
(defpartgroup group-farm-marrow-explode
|
|
:id 1025
|
|
:duration (seconds 3.335)
|
|
:flags (use-local-clock unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 90) (degrees 0))
|
|
:parts ((sp-item 4462 :fade-after (meters 40) :falloff-to (meters 80) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.035))
|
|
(sp-item 4463 :fade-after (meters 100) :falloff-to (meters 120) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4464 :fade-after (meters 40) :falloff-to (meters 60) :flags (bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4465 :fade-after (meters 100) :falloff-to (meters 120) :flags (bit7) :period (seconds 4) :length (seconds 0.1))
|
|
(sp-item 4466 :fade-after (meters 90) :falloff-to (meters 110) :flags (bit7) :period (seconds 4) :length (seconds 0.135))
|
|
(sp-item 4467 :fade-after (meters 50) :period (seconds 4) :length (seconds 0.017))
|
|
)
|
|
)
|
|
|
|
(defpart 4465
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
|
|
(:num 32.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) (meters 2))
|
|
(:scale-x (meters 2) (meters 0.5))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y :copy scale-x)
|
|
(:r 64.0 64.0)
|
|
(:g :copy r)
|
|
(:b 255.0)
|
|
(:a 92.0 32.0)
|
|
(:vel-y (meters 0.033333335) (meters 0.06666667))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:fade-a -0.16 -0.16)
|
|
(:accel-y (meters -0.0016666667) (meters -0.00083333335))
|
|
(:friction 0.95 0.03)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 0) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4464
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
|
|
(:num 32.0)
|
|
(:y (meters 0) (meters 5))
|
|
(:scale-x (meters 0.1) (meters 0.05))
|
|
(:rot-x 4)
|
|
(:scale-y :copy scale-x)
|
|
(:r 32.0 32.0)
|
|
(:g :copy r)
|
|
(:b 128.0 32.0)
|
|
(:a 128.0)
|
|
(:omega (degrees 0.01575) (degrees 0.009))
|
|
(:vel-y (meters 0.033333335) (meters 0.083333336))
|
|
(:accel-y (meters -0.003) (meters -0.00066666666))
|
|
(:friction 0.96 0.02)
|
|
(:timer (seconds 1))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21))
|
|
(:userdata 36864.0)
|
|
(:func 'check-water-level-drop-motion)
|
|
(:conerot-x (degrees 0) (degrees 85))
|
|
(:conerot-y (degrees 0) (degrees 3600))
|
|
(:rotate-y (degrees 0))
|
|
(:conerot-radius (meters 0) (meters 1))
|
|
)
|
|
)
|
|
|
|
(defpart 4466
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xc))
|
|
(:num 12.0 2.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) (meters 2))
|
|
(:scale-x (meters 2) (meters 2))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 2) (meters 2))
|
|
(:r 32.0 32.0)
|
|
(:g 64.0 128.0)
|
|
(:b 255.0)
|
|
(:a 16.0 8.0)
|
|
(:vel-y (meters 0.06666667) (meters 0.033333335))
|
|
(:scalevel-x (meters 0) (meters 0.0033333334))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:scalevel-y (meters 0) (meters 0.0033333334))
|
|
(:fade-a -0.02 -0.02)
|
|
(:accel-y (meters -0.00083333335) (meters -0.00083333335))
|
|
(:friction 0.82 0.07)
|
|
(:timer (seconds 4))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 30) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4467
|
|
:init-specs ((:texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(:num 1.0)
|
|
(:y (meters 3))
|
|
(:scale-x (meters 7))
|
|
(:rot-x (degrees 0.675))
|
|
(:scale-y (meters 5))
|
|
(:r 32.0)
|
|
(:g 128.0)
|
|
(:b 255.0)
|
|
(:a 64.0)
|
|
(:omega (degrees 1136.25))
|
|
(:scalevel-x (meters 0.2))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -2.56)
|
|
(:timer (seconds 0.085))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
|
|
(:userdata 1024.0)
|
|
)
|
|
)
|
|
|
|
(defpart 4463
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x3 :page #xae7))
|
|
(:birth-func 'birth-func-texture-group)
|
|
(:num 12.0 6.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) 2.0 (meters 2))
|
|
(:scale-x (meters 0.2) (meters 0.3))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.2) (meters 0.3))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.083333336) (meters 0.1))
|
|
(:scalevel-x (meters -0.00022222222))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:scalevel-y (meters -0.00022222222))
|
|
(:fade-a -0.21333334 -0.21333334)
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:userdata :data (new 'static 'boxed-array :type int32 5 0 0 -1368390400 -1368390656 -1368390912))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4462
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x3 :page #xae7))
|
|
(:birth-func 'birth-func-texture-group)
|
|
(:num 12.0 3.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) 2.0 (meters 2))
|
|
(:scale-x (meters 0.5) (meters 0.5))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.5) (meters 0.5))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.1) (meters 0.13333334))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:userdata :data (new 'static 'boxed-array :type int32 5 0 0 -1368390400 -1368390656 -1368390912))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 0.4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 15) (degrees 150))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch number vs none.
|
|
(defun check-farm-piece-ground ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix))
|
|
(if (and (>= 35225.6 (-> arg2 vector 0 y)) (>= 0.0 (-> arg1 vel-sxvel y)))
|
|
(set! (-> arg2 vector 0 y) 35225.6)
|
|
(set! (-> arg1 next-time)
|
|
(the-as uint (* (max 1 (the-as int (-> *display* clock (-> arg1 clock-index) sparticle-data x))) 2))
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
|
|
(defpart 4468
|
|
:init-specs ((:rot-x (degrees 0))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0))
|
|
(:vel-y (meters 0))
|
|
(:rotvel-x (degrees 0))
|
|
(:rotvel-y (degrees 0))
|
|
(:rotvel-z (degrees 0))
|
|
(:accel-y (meters 0))
|
|
(:friction 0.8 0.1)
|
|
(:timer (seconds 4))
|
|
(:next-time (seconds 0.5) (seconds 0.997))
|
|
(:next-launcher 4469)
|
|
)
|
|
)
|
|
|
|
(defpart 4469
|
|
:init-specs ((:fade-a -0.21333334 -0.21333334) (:flags (sp-cpuinfo-flag-2 left-multiply-quat)))
|
|
)
|
|
|
|
(defpartgroup group-farm-beetree-explode
|
|
:id 1026
|
|
:duration (seconds 3.335)
|
|
:flags (use-local-clock unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 90) (degrees 0))
|
|
:parts ((sp-item 4470 :fade-after (meters 100) :falloff-to (meters 120) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4471 :fade-after (meters 100) :falloff-to (meters 120) :flags (bit7) :period (seconds 4) :length (seconds 0.1))
|
|
(sp-item 4472 :fade-after (meters 90) :falloff-to (meters 110) :flags (bit7) :period (seconds 4) :length (seconds 0.135))
|
|
(sp-item 4473 :fade-after (meters 50) :period (seconds 4) :length (seconds 0.017))
|
|
(sp-item 4474 :fade-after (meters 40) :falloff-to (meters 80) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.035))
|
|
(sp-item 4475 :fade-after (meters 100) :falloff-to (meters 120) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.05))
|
|
)
|
|
)
|
|
|
|
(defpart 4475
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x2 :page #xae7))
|
|
(:num 12.0 6.0)
|
|
(:y (meters 0.5) (meters 9))
|
|
(:z (meters -1) 2.0 (meters 2))
|
|
(:scale-x (meters 0.2) (meters 0.2))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.4) (meters 0.3))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.083333336) (meters 0.1))
|
|
(:scalevel-x (meters -0.00022222222))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:scalevel-y (meters -0.00022222222))
|
|
(:fade-a -0.21333334 -0.21333334)
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4474
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x2 :page #xae7))
|
|
(:num 12.0 3.0)
|
|
(:y (meters 0.5) (meters 9))
|
|
(:z (meters -1) 2.0 (meters 2))
|
|
(:scale-x (meters 0.4) (meters 0.4))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 1) (meters 0.5))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.1) (meters 0.13333334))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 0.4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 15) (degrees 150))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-farm-cabbage-explode
|
|
:id 1027
|
|
:duration (seconds 3.335)
|
|
:flags (use-local-clock unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 90) (degrees 0))
|
|
:parts ((sp-item 4476 :fade-after (meters 40) :falloff-to (meters 80) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.035))
|
|
(sp-item 4477 :fade-after (meters 100) :falloff-to (meters 120) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4478 :fade-after (meters 40) :falloff-to (meters 60) :flags (bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4479 :fade-after (meters 100) :falloff-to (meters 120) :flags (bit7) :period (seconds 4) :length (seconds 0.1))
|
|
(sp-item 4480 :fade-after (meters 90) :falloff-to (meters 110) :flags (bit7) :period (seconds 4) :length (seconds 0.135))
|
|
(sp-item 4481 :fade-after (meters 50) :period (seconds 4) :length (seconds 0.017))
|
|
)
|
|
)
|
|
|
|
(defpart 4479
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
|
|
(:num 32.0)
|
|
(:y (meters 0.5) (meters 3))
|
|
(:z (meters -4) (meters 8))
|
|
(:scale-x (meters 2) (meters 0.5))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y :copy scale-x)
|
|
(:r 196.0 64.0)
|
|
(:g 255.0)
|
|
(:b 0.0 64.0)
|
|
(:a 92.0 32.0)
|
|
(:vel-y (meters 0.033333335) (meters 0.06666667))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:fade-a -0.16 -0.16)
|
|
(:accel-y (meters -0.0016666667) (meters -0.00083333335))
|
|
(:friction 0.95 0.03)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 0) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4478
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
|
|
(:num 32.0)
|
|
(:y (meters 0) (meters 2))
|
|
(:scale-x (meters 0.1) (meters 0.05))
|
|
(:rot-x 4)
|
|
(:scale-y :copy scale-x)
|
|
(:r 128.0 64.0)
|
|
(:g 255.0)
|
|
(:b 0.0 128.0)
|
|
(:a 128.0)
|
|
(:omega (degrees 0.01575) (degrees 0.009))
|
|
(:vel-y (meters 0.06666667) (meters 0.083333336))
|
|
(:accel-y (meters -0.003) (meters -0.00066666666))
|
|
(:friction 0.96 0.02)
|
|
(:timer (seconds 1))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-21))
|
|
(:userdata 36864.0)
|
|
(:func 'check-water-level-drop-motion)
|
|
(:conerot-x (degrees 0) (degrees 85))
|
|
(:conerot-y (degrees 0) (degrees 3600))
|
|
(:rotate-y (degrees 0))
|
|
(:conerot-radius (meters 0) (meters 1))
|
|
)
|
|
)
|
|
|
|
(defpart 4480
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xc))
|
|
(:num 12.0 2.0)
|
|
(:y (meters 0.5) (meters 3))
|
|
(:z (meters -4) (meters 8))
|
|
(:scale-x (meters 2) (meters 2))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 2) (meters 2))
|
|
(:r 196.0 64.0)
|
|
(:g 255.0)
|
|
(:b 0.0 64.0)
|
|
(:a 16.0 8.0)
|
|
(:vel-y (meters 0.06666667) (meters 0.033333335))
|
|
(:scalevel-x (meters 0) (meters 0.0033333334))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:scalevel-y (meters 0) (meters 0.0033333334))
|
|
(:fade-a -0.02 -0.02)
|
|
(:accel-y (meters -0.00083333335) (meters -0.00083333335))
|
|
(:friction 0.82 0.07)
|
|
(:timer (seconds 4))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 30) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4481
|
|
:init-specs ((:texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(:num 1.0)
|
|
(:y (meters 1.5))
|
|
(:scale-x (meters 3))
|
|
(:rot-x (degrees 0.675))
|
|
(:scale-y (meters 5))
|
|
(:r 128.0)
|
|
(:g 255.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:omega (degrees 1136.25))
|
|
(:scalevel-x (meters 0.2))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -2.56)
|
|
(:timer (seconds 0.085))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
|
|
(:userdata 1024.0)
|
|
)
|
|
)
|
|
|
|
(defpart 4477
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xae7))
|
|
(:num 12.0 6.0)
|
|
(:y (meters 0.5) (meters 2))
|
|
(:z (meters -1.5) 2.0 (meters 3))
|
|
(:scale-x (meters 0.5) (meters 0.3))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.5) (meters 0.3))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.083333336) (meters 0.1))
|
|
(:scalevel-x (meters -0.00022222222))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:scalevel-y (meters -0.00022222222))
|
|
(:fade-a -0.21333334 -0.21333334)
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4476
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xae7))
|
|
(:num 12.0 3.0)
|
|
(:y (meters 0.5) (meters 2))
|
|
(:z (meters -1.5) 2.0 (meters 3))
|
|
(:scale-x (meters 1) (meters 0.5))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 1) (meters 0.5))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.1) (meters 0.13333334))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 0.4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 15) (degrees 150))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-farm-small-cabbage-explode
|
|
:id 1028
|
|
:duration (seconds 3.335)
|
|
:flags (use-local-clock unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 90) (degrees 0))
|
|
:parts ((sp-item 4470 :fade-after (meters 100) :falloff-to (meters 120) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4471 :fade-after (meters 100) :falloff-to (meters 120) :flags (bit7) :period (seconds 4) :length (seconds 0.1))
|
|
(sp-item 4472 :fade-after (meters 90) :falloff-to (meters 110) :flags (bit7) :period (seconds 4) :length (seconds 0.135))
|
|
(sp-item 4473 :fade-after (meters 50) :period (seconds 4) :length (seconds 0.017))
|
|
)
|
|
)
|
|
|
|
(defpart 4471
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
|
|
(:num 20.0)
|
|
(:y (meters 0.5) (meters 2))
|
|
(:z (meters -2) (meters 4))
|
|
(:scale-x (meters 1) (meters 0.5))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y :copy scale-x)
|
|
(:r 196.0 64.0)
|
|
(:g 255.0)
|
|
(:b 0.0 64.0)
|
|
(:a 92.0 32.0)
|
|
(:vel-y (meters 0.033333335) (meters 0.06666667))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:fade-a -0.16 -0.16)
|
|
(:accel-y (meters -0.0016666667) (meters -0.00083333335))
|
|
(:friction 0.95 0.03)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 0) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4472
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xc))
|
|
(:num 8.0 2.0)
|
|
(:y (meters 0.5) (meters 2))
|
|
(:z (meters -2) (meters 4))
|
|
(:scale-x (meters 1) (meters 1))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 1) (meters 1))
|
|
(:r 196.0 64.0)
|
|
(:g 255.0)
|
|
(:b 0.0 64.0)
|
|
(:a 16.0 8.0)
|
|
(:vel-y (meters 0.06666667) (meters 0.033333335))
|
|
(:scalevel-x (meters 0) (meters 0.0033333334))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:scalevel-y (meters 0) (meters 0.0033333334))
|
|
(:fade-a -0.02 -0.02)
|
|
(:accel-y (meters -0.00083333335) (meters -0.00083333335))
|
|
(:friction 0.82 0.07)
|
|
(:timer (seconds 4))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 30) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4473
|
|
:init-specs ((:texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(:num 1.0)
|
|
(:y (meters 1.5))
|
|
(:scale-x (meters 2))
|
|
(:rot-x (degrees 0.675))
|
|
(:scale-y (meters 3.5))
|
|
(:r 128.0)
|
|
(:g 255.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:omega (degrees 1136.25))
|
|
(:scalevel-x (meters 0.2))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -2.56)
|
|
(:timer (seconds 0.085))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
|
|
(:userdata 1024.0)
|
|
)
|
|
)
|
|
|
|
(defpart 4470
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xae7))
|
|
(:num 12.0 6.0)
|
|
(:y (meters 0.5) (meters 1))
|
|
(:z (meters -1.5) 2.0 (meters 3))
|
|
(:scale-x (meters 0.5) (meters 0.3))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.5) (meters 0.3))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.083333336) (meters 0.1))
|
|
(:scalevel-x (meters -0.00022222222))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:scalevel-y (meters -0.00022222222))
|
|
(:fade-a -0.21333334 -0.21333334)
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-farm-chilirots-explode
|
|
:id 1029
|
|
:duration (seconds 3.335)
|
|
:flags (use-local-clock unk-6)
|
|
:bounds (static-bspherem 0 0 0 4)
|
|
:rotate ((degrees 0) (degrees 90) (degrees 0))
|
|
:parts ((sp-item 4482 :fade-after (meters 40) :falloff-to (meters 80) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.035))
|
|
(sp-item 4483 :fade-after (meters 100) :falloff-to (meters 120) :flags (is-3d bit7) :period (seconds 4) :length (seconds 0.05))
|
|
(sp-item 4484 :fade-after (meters 90) :falloff-to (meters 110) :flags (bit7) :period (seconds 4) :length (seconds 0.135))
|
|
(sp-item 4485 :fade-after (meters 50) :period (seconds 4) :length (seconds 0.017))
|
|
(sp-item 4486 :fade-after (meters 100) :falloff-to (meters 120) :flags (bit7) :period (seconds 4) :length (seconds 0.1))
|
|
)
|
|
)
|
|
|
|
(defpart 4486
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x32 :page #xc))
|
|
(:num 32.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) (meters 2))
|
|
(:scale-x (meters 2) (meters 0.5))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y :copy scale-x)
|
|
(:r 64.0 64.0)
|
|
(:g 0.0 32.0)
|
|
(:b 0.0)
|
|
(:a 92.0 32.0)
|
|
(:vel-y (meters 0.033333335) (meters 0.06666667))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:fade-a -0.16 -0.16)
|
|
(:accel-y (meters -0.0016666667) (meters -0.00083333335))
|
|
(:friction 0.95 0.03)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 0) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4484
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xc))
|
|
(:num 12.0 2.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) (meters 2))
|
|
(:scale-x (meters 2) (meters 2))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 2) (meters 2))
|
|
(:r 64.0)
|
|
(:g 0.0 16.0)
|
|
(:b 0.0)
|
|
(:a 16.0 8.0)
|
|
(:vel-y (meters 0.06666667) (meters 0.033333335))
|
|
(:scalevel-x (meters 0) (meters 0.0033333334))
|
|
(:rotvel-z (degrees -0.2) (degrees 0.4))
|
|
(:scalevel-y (meters 0) (meters 0.0033333334))
|
|
(:fade-a -0.02 -0.02)
|
|
(:accel-y (meters -0.00083333335) (meters -0.00083333335))
|
|
(:friction 0.82 0.07)
|
|
(:timer (seconds 4))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:conerot-x (degrees 30) (degrees 50.000004))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0) (degrees 3600))
|
|
)
|
|
)
|
|
|
|
(defpart 4485
|
|
:init-specs ((:texture (new 'static 'texture-id :index #xca :page #xc))
|
|
(:num 1.0)
|
|
(:y (meters 3))
|
|
(:scale-x (meters 7))
|
|
(:rot-x (degrees 0.675))
|
|
(:scale-y (meters 5))
|
|
(:r 255.0)
|
|
(:g 0.0)
|
|
(:b 0.0)
|
|
(:a 64.0)
|
|
(:omega (degrees 1136.25))
|
|
(:scalevel-x (meters 0.2))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -2.56)
|
|
(:timer (seconds 0.085))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 glow))
|
|
(:userdata 1024.0)
|
|
)
|
|
)
|
|
|
|
(defpart 4483
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x2 :page #xae7))
|
|
(:birth-func 'birth-func-texture-group)
|
|
(:num 12.0 6.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) 2.0 (meters 2))
|
|
(:scale-x (meters 0.2) (meters 0.3))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.2) (meters 0.3))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.083333336) (meters 0.1))
|
|
(:scalevel-x (meters -0.00022222222))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:scalevel-y (meters -0.00022222222))
|
|
(:fade-a -0.21333334 -0.21333334)
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-0 sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:userdata :data (new 'static 'boxed-array :type int32 5 0 0 -1368391424 -1368391168))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 0) (degrees 180))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4482
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x2 :page #xae7))
|
|
(:birth-func 'birth-func-texture-group)
|
|
(:num 12.0 3.0)
|
|
(:y (meters 0.5) (meters 5))
|
|
(:z (meters -1) 2.0 (meters 2))
|
|
(:scale-x (meters 0.5) (meters 0.5))
|
|
(:rot-x (degrees 0) (degrees 3600))
|
|
(:rot-y (degrees 0) (degrees 3600))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y (meters 0.5) (meters 0.5))
|
|
(:r 64.0 128.0)
|
|
(:g :copy r)
|
|
(:b :copy g)
|
|
(:a 128.0)
|
|
(:vel-y (meters 0.1) (meters 0.13333334))
|
|
(:rotvel-x (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-y (degrees -4.8) (degrees 9.6))
|
|
(:rotvel-z (degrees -4.8) (degrees 9.6))
|
|
(:accel-y (meters -0.0033333334) (meters -0.0016666667))
|
|
(:friction 0.92 0.07)
|
|
(:timer (seconds 2))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-12))
|
|
(:userdata :data (new 'static 'boxed-array :type int32 5 0 0 -1368391424 -1368391168))
|
|
(:func 'check-farm-piece-ground)
|
|
(:next-time (seconds 0.4))
|
|
(:next-launcher 4468)
|
|
(:conerot-x (degrees 0) (degrees 110))
|
|
(:conerot-y (degrees 15) (degrees 150))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpartgroup group-farm-sprinkler-barrels-water
|
|
:id 1030
|
|
:duration (seconds 0.5)
|
|
:linger-duration (seconds 1)
|
|
:flags (use-local-clock unk-4)
|
|
:bounds (static-bspherem 0 0 0 128)
|
|
:parts ((sp-item 4487 :fade-after (meters 300) :falloff-to (meters 300) :flags (bit7) :period (seconds 2) :length (seconds 0.167) :offset 80)
|
|
(sp-item 4488 :fade-after (meters 200) :falloff-to (meters 300) :flags (bit7) :period (seconds 2) :length (seconds 0.167) :offset 80)
|
|
(sp-item 4489 :fade-after (meters 180) :falloff-to (meters 180) :flags (bit7) :period (seconds 2) :length (seconds 0.335) :offset 30)
|
|
(sp-item 4489 :fade-after (meters 180) :falloff-to (meters 180) :flags (bit7) :period (seconds 2) :length (seconds 0.25) :offset 55)
|
|
(sp-item 4489 :fade-after (meters 180) :falloff-to (meters 180) :flags (bit7) :period (seconds 2) :length (seconds 0.335) :offset 80)
|
|
(sp-item 4490 :fade-after (meters 100) :falloff-to (meters 100) :flags (bit7) :period (seconds 2) :length (seconds 0.167) :offset 80)
|
|
)
|
|
)
|
|
|
|
(defpart 4488
|
|
:init-specs ((:texture (new 'static 'texture-id :page #xc))
|
|
(:num 6.0 1.0)
|
|
(:z (meters -0.5))
|
|
(:scale-x (meters 1) (meters 0.1))
|
|
(:rot-z (degrees 0) (degrees 3600))
|
|
(:scale-y :copy scale-x)
|
|
(:r 32.0 32.0)
|
|
(:g 32.0 32.0)
|
|
(:b 64.0 32.0)
|
|
(:a 32.0 64.0)
|
|
(:vel-z (meters 0.2) (meters 0.06666667))
|
|
(:scalevel-x (meters 0.026666667) (meters 0.01))
|
|
(:rotvel-z (degrees -0.6) (degrees 1.2))
|
|
(:scalevel-y :copy scalevel-x)
|
|
(:fade-a -0.28444445 -0.28444445)
|
|
(:accel-y (meters -0.00033333333) (meters -0.00033333333))
|
|
(:friction 0.8 0.08)
|
|
(:timer (seconds 1.5))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc))
|
|
(:launchrot-x (degrees -15) (degrees 30))
|
|
(:launchrot-z (degrees 0) (degrees 3600))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4487
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
|
|
(:num 10.0 1.0)
|
|
(:z (meters -0.5))
|
|
(:scale-x (meters 0.1) (meters 0.1))
|
|
(:rot-x 4)
|
|
(:scale-y :copy scale-x)
|
|
(:r 32.0 32.0)
|
|
(:g 32.0 32.0)
|
|
(:b 64.0 32.0)
|
|
(:a 128.0)
|
|
(:omega (degrees 0.0225))
|
|
(:vel-z (meters 0.2) (meters 0.06666667))
|
|
(:accel-y (meters -0.0033333334) (meters 0.00033333333))
|
|
(:friction 0.99)
|
|
(:timer (seconds 1.5))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc))
|
|
(:userdata 32768.0)
|
|
(:func 'check-drop-level-ctyfarma-drop-userdata)
|
|
(:next-time (seconds 0) (seconds 0.747))
|
|
(:next-launcher 4491)
|
|
(:launchrot-x (degrees -5) (degrees 10))
|
|
(:launchrot-z (degrees 0) (degrees 3600))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4489
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
|
|
(:num 2.0 0.5)
|
|
(:z (meters -0.5))
|
|
(:scale-x (meters 0.1) (meters 0.1))
|
|
(:rot-x 4)
|
|
(:scale-y :copy scale-x)
|
|
(:r 32.0 32.0)
|
|
(:g 32.0 32.0)
|
|
(:b 64.0 32.0)
|
|
(:a 128.0)
|
|
(:omega (degrees 0.0225))
|
|
(:vel-z (meters 0.13333334) (meters 0.13333334))
|
|
(:accel-y (meters -0.0033333334) (meters 0.00033333333))
|
|
(:friction 0.99)
|
|
(:timer (seconds 1.5))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc))
|
|
(:userdata 32768.0)
|
|
(:func 'check-drop-level-ctyfarma-drop-userdata)
|
|
(:next-time (seconds 0) (seconds 0.747))
|
|
(:next-launcher 4491)
|
|
(:launchrot-x (degrees -16) (degrees 32))
|
|
(:launchrot-z (degrees 0) (degrees 3600))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(defpart 4490
|
|
:init-specs ((:texture (new 'static 'texture-id :index #x21 :page #xc))
|
|
(:num 2.0 0.5)
|
|
(:z (meters -0.5))
|
|
(:scale-x (meters 0.1) (meters 0.1))
|
|
(:rot-x 4)
|
|
(:scale-y :copy scale-x)
|
|
(:r 32.0 32.0)
|
|
(:g 32.0 32.0)
|
|
(:b 64.0 32.0)
|
|
(:a 128.0)
|
|
(:omega (degrees 0.0225))
|
|
(:vel-z (meters 0.1) (meters 0.06666667))
|
|
(:accel-y (meters -0.0033333334) (meters 0.00033333333))
|
|
(:friction 0.99)
|
|
(:timer (seconds 1.5))
|
|
(:flags (sp-cpuinfo-flag-2 sp-cpuinfo-flag-3 sp-cpuinfo-flag-12 use-global-acc))
|
|
(:userdata 32768.0)
|
|
(:func 'check-drop-level-ctyfarma-drop-userdata)
|
|
(:next-time (seconds 0) (seconds 0.747))
|
|
(:next-launcher 4491)
|
|
(:launchrot-x (degrees -70) (degrees 140))
|
|
(:launchrot-z (degrees 0) (degrees 3600))
|
|
(:rotate-y (degrees 0))
|
|
)
|
|
)
|
|
|
|
(deftype shaker (structure)
|
|
((axis vector :inline :offset-assert 0)
|
|
(start-time time-frame :offset-assert 16)
|
|
(decay-time float :offset-assert 24)
|
|
(amplitude float :offset-assert 28)
|
|
(freq float :offset-assert 32)
|
|
(y-decay-time float :offset-assert 36)
|
|
(y-amplitude float :offset-assert 40)
|
|
(y-freq float :offset-assert 44)
|
|
(shake float :offset-assert 48)
|
|
(y-shake float :offset-assert 52)
|
|
)
|
|
:method-count-assert 10
|
|
:size-assert #x38
|
|
:flag-assert #xa00000038
|
|
(:methods
|
|
(shaker-method-9 (_type_) none 9)
|
|
)
|
|
)
|
|
|
|
|
|
;; WARN: Return type mismatch float vs none.
|
|
(defmethod shaker-method-9 shaker ((obj shaker))
|
|
(with-pp
|
|
(let ((s5-0 (- (-> pp clock frame-counter) (-> obj start-time))))
|
|
(set! (-> obj shake) (* (-> obj amplitude)
|
|
(lerp-scale 1.0 0.0 (the float s5-0) 0.0 (-> obj decay-time))
|
|
(cos (* 65536.0 (/ (the float s5-0) (-> obj freq))))
|
|
)
|
|
)
|
|
(set! (-> obj y-shake) (* (-> obj y-amplitude)
|
|
(lerp-scale 1.0 0.0 (the float s5-0) 0.0 (-> obj y-decay-time))
|
|
(cos (* 65536.0 (/ (the float s5-0) (-> obj y-freq))))
|
|
)
|
|
)
|
|
)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
;; WARN: Return type mismatch int vs knocked-type.
|
|
(defun pu->knocked-type ((arg0 penetrate))
|
|
(the-as knocked-type (cond
|
|
((logtest? arg0 (penetrate vehicle))
|
|
7
|
|
)
|
|
((logtest? (penetrate jak-blue-shot) arg0)
|
|
6
|
|
)
|
|
((logtest? (penetrate jak-yellow-shot enemy-yellow-shot) arg0)
|
|
4
|
|
)
|
|
((logtest? (penetrate jak-red-shot) arg0)
|
|
5
|
|
)
|
|
((logtest? (penetrate explode jak-dark-shot enemy-dark-shot) arg0)
|
|
2
|
|
)
|
|
((logtest? (penetrate dark-bomb dark-giant) arg0)
|
|
3
|
|
)
|
|
((logtest? arg0 (penetrate mech-punch))
|
|
1
|
|
)
|
|
(else
|
|
0
|
|
)
|
|
)
|
|
)
|
|
)
|
|
|
|
(defskelgroup skel-farm-marrow farm-marrow farm-marrow-lod0-jg farm-marrow-idle-ja
|
|
((farm-marrow-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 2.4 0 4)
|
|
)
|
|
|
|
(defskelgroup skel-farm-marrow-explode farm-marrow farm-marrow-explode-lod0-jg farm-marrow-explode-idle-ja
|
|
((farm-marrow-explode-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 80)
|
|
)
|
|
|
|
(define *farm-marrow-exploder-params*
|
|
(new 'static 'joint-exploder-static-params
|
|
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
|
|
)
|
|
:collide-spec #x1
|
|
)
|
|
)
|
|
|
|
(deftype farm-marrow (process-focusable)
|
|
((shakers shaker 5 :inline :offset-assert 208)
|
|
(incoming-attack-id uint32 :offset-assert 528)
|
|
)
|
|
:heap-base #x1a0
|
|
:method-count-assert 31
|
|
:size-assert #x214
|
|
:flag-assert #x1f01a00214
|
|
(:methods
|
|
(idle () _type_ :state 27)
|
|
(die () _type_ :state 28)
|
|
(farm-marrow-method-29 (_type_) none 29)
|
|
(farm-marrow-method-30 (_type_) none 30)
|
|
)
|
|
)
|
|
|
|
|
|
(defun farm-marrow-callback ((arg0 cspace) (arg1 transformq))
|
|
(with-pp
|
|
(let ((s4-0 (the-as farm-marrow (-> arg0 param1)))
|
|
(s3-0 (the-as int (-> arg0 param2)))
|
|
)
|
|
(quaternion*! (-> arg1 quat) (-> arg1 quat) (quaternion-vector-angle!
|
|
(new 'stack-no-clear 'quaternion)
|
|
(the-as vector (-> s4-0 shakers s3-0))
|
|
(-> s4-0 shakers s3-0 shake)
|
|
)
|
|
)
|
|
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> s4-0 shakers s3-0 y-shake))
|
|
(if (< (the int (-> s4-0 shakers s3-0 decay-time))
|
|
(- (-> pp clock frame-counter) (-> s4-0 shakers s3-0 start-time))
|
|
)
|
|
(set! (-> arg0 param0) #f)
|
|
)
|
|
)
|
|
(cspace<-parented-transformq-joint! arg0 arg1)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defstate die (farm-marrow)
|
|
:virtual #t
|
|
:enter (the-as (function none :behavior farm-marrow) #f)
|
|
:exit (the-as (function none :behavior farm-marrow) #f)
|
|
:trans (the-as (function none :behavior farm-marrow) #f)
|
|
:code (behavior ()
|
|
(let ((v1-1 (-> self root-override root-prim)))
|
|
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(logior! (-> self draw status) (draw-control-status no-draw))
|
|
(while (-> self child)
|
|
(suspend)
|
|
)
|
|
(cleanup-for-death self)
|
|
(none)
|
|
)
|
|
:post (the-as (function none :behavior farm-marrow) #f)
|
|
)
|
|
|
|
(defstate idle (farm-marrow)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('attack)
|
|
(let ((a1-1 (the-as object (-> event param 1)))
|
|
(a0-2 proc)
|
|
)
|
|
(when (!= (-> (the-as attack-info a1-1) id) (-> self incoming-attack-id))
|
|
(set! (-> self incoming-attack-id) (-> (the-as attack-info a1-1) id))
|
|
(when a0-2
|
|
(let ((s5-0 (find-offending-process-focusable a0-2 (the-as attack-info a1-1))))
|
|
(when s5-0
|
|
(let ((a0-4 (get-penetrate-using-from-attack-event (the-as process-drawable proc) event)))
|
|
(cond
|
|
((and (not (logtest? (penetrate dark-skin) a0-4)) (zero? (pu->knocked-type a0-4)))
|
|
(sound-play "hit-veggies")
|
|
(let ((gp-4 (new 'stack-no-clear 'vector)))
|
|
(vector-inv-orient-by-quat!
|
|
gp-4
|
|
(vector-cross!
|
|
(new 'stack-no-clear 'vector)
|
|
(vector-normalize!
|
|
(vector-! (new 'stack-no-clear 'vector) (-> s5-0 root-override trans) (-> self root-override trans))
|
|
1.0
|
|
)
|
|
*up-vector*
|
|
)
|
|
(-> self root-override quat)
|
|
)
|
|
(let ((v1-10 (-> self shakers)))
|
|
(set! (-> v1-10 0 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-10 0 start-time) (-> self clock frame-counter))
|
|
(set! (-> v1-10 0 decay-time) 300.0)
|
|
(set! (-> v1-10 0 freq) 150.0)
|
|
(set! (-> v1-10 0 amplitude) 1820.4445)
|
|
(set! (-> v1-10 0 y-amplitude) 0.0)
|
|
)
|
|
(let ((a0-17 (-> self node-list data 6)))
|
|
(set! (-> a0-17 param0) farm-marrow-callback)
|
|
(set! (-> a0-17 param1) self)
|
|
(set! (-> a0-17 param2) (the-as basic 0))
|
|
)
|
|
(let ((v1-13 (-> self shakers 1)))
|
|
(set! (-> v1-13 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-13 start-time) (+ (-> self clock frame-counter) (seconds -0.06)))
|
|
(set! (-> v1-13 decay-time) 450.0)
|
|
(set! (-> v1-13 freq) 150.0)
|
|
(set! (-> v1-13 amplitude) 1820.4445)
|
|
(set! (-> v1-13 y-amplitude) 0.0)
|
|
)
|
|
(let ((v1-15 (-> self node-list data 7)))
|
|
(set! (-> v1-15 param0) farm-marrow-callback)
|
|
(set! (-> v1-15 param1) self)
|
|
(set! (-> v1-15 param2) (the-as basic 1))
|
|
)
|
|
(let ((v1-16 (-> self shakers 2)))
|
|
(set! (-> v1-16 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-16 start-time) (+ (-> self clock frame-counter) (seconds -0.12)))
|
|
(set! (-> v1-16 decay-time) 600.0)
|
|
(set! (-> v1-16 freq) 150.0)
|
|
(set! (-> v1-16 amplitude) 1820.4445)
|
|
(set! (-> v1-16 y-amplitude) 0.0)
|
|
)
|
|
(let ((v1-18 (-> self node-list data 8)))
|
|
(set! (-> v1-18 param0) farm-marrow-callback)
|
|
(set! (-> v1-18 param1) self)
|
|
(set! (-> v1-18 param2) (the-as basic 2))
|
|
)
|
|
(let ((v1-19 (-> self shakers 3)))
|
|
(set! (-> v1-19 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-19 start-time) (+ (-> self clock frame-counter) (seconds -0.06)))
|
|
(set! (-> v1-19 decay-time) 300.0)
|
|
(set! (-> v1-19 freq) 150.0)
|
|
(set! (-> v1-19 amplitude) 910.2222)
|
|
(set! (-> v1-19 y-decay-time) 300.0)
|
|
(set! (-> v1-19 y-freq) 150.0)
|
|
(set! (-> v1-19 y-amplitude) -1820.4445)
|
|
)
|
|
(let ((v1-21 (-> self node-list data 4)))
|
|
(set! (-> v1-21 param0) farm-marrow-callback)
|
|
(set! (-> v1-21 param1) self)
|
|
(set! (-> v1-21 param2) (the-as basic 3))
|
|
)
|
|
(let ((v1-22 (-> self shakers 4)))
|
|
(set! (-> v1-22 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-22 start-time) (+ (-> self clock frame-counter) (seconds -0.12)))
|
|
(set! (-> v1-22 decay-time) 600.0)
|
|
(set! (-> v1-22 freq) 150.0)
|
|
(set! (-> v1-22 amplitude) 910.2222)
|
|
(set! (-> v1-22 y-amplitude) 0.0)
|
|
)
|
|
)
|
|
(let ((v0-0 (the-as object (-> self node-list data 5))))
|
|
(set! (-> (the-as cspace v0-0) param0) farm-marrow-callback)
|
|
(set! (-> (the-as cspace v0-0) param1) self)
|
|
(set! (-> (the-as cspace v0-0) param2) (the-as basic 4))
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(sound-play "veggie-burst")
|
|
(let ((gp-6 (new 'stack 'joint-exploder-tuning (the-as uint 1))))
|
|
(set! (-> gp-6 fountain-rand-transv-lo quad) (-> s5-0 root-override trans quad))
|
|
(set! (-> gp-6 fountain-rand-transv-hi x) 4096.0)
|
|
(set! (-> gp-6 fountain-rand-transv-hi y) 122880.0)
|
|
(process-spawn
|
|
part-tracker
|
|
:init part-tracker-init
|
|
(-> *part-group-id-table* 1025)
|
|
300
|
|
#f
|
|
#f
|
|
#f
|
|
(-> self node-list data 3 bone transform)
|
|
:to self
|
|
)
|
|
(process-spawn
|
|
joint-exploder
|
|
(art-group-get-by-name *level* "skel-farm-marrow-explode" (the-as (pointer uint32) #f))
|
|
5
|
|
gp-6
|
|
*farm-marrow-exploder-params*
|
|
:to self
|
|
)
|
|
)
|
|
(go-virtual die)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:exit (behavior ()
|
|
'()
|
|
(none)
|
|
)
|
|
:code (the-as (function none :behavior farm-marrow) sleep-code)
|
|
:post (behavior ()
|
|
(dotimes (gp-0 5)
|
|
(shaker-method-9 (-> self shakers gp-0))
|
|
)
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defmethod farm-marrow-method-29 farm-marrow ((obj farm-marrow))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 3)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 9830.4 0.0 16384.0)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> obj root-override) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defmethod farm-marrow-method-30 farm-marrow ((obj farm-marrow))
|
|
(set! (-> obj mask) (logior (process-mask crate) (-> obj mask)))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! farm-marrow ((obj farm-marrow) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(farm-marrow-method-29 obj)
|
|
(process-drawable-from-entity! obj arg0)
|
|
(initialize-skeleton
|
|
obj
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-farm-marrow" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(farm-marrow-method-30 obj)
|
|
(quaternion-vector-angle!
|
|
(-> obj root-override quat)
|
|
*up-vector*
|
|
(* 182.04445 (rand-vu-float-range 0.0 360.0))
|
|
)
|
|
(let ((f0-2 (rand-vu-float-range 0.9 1.1)))
|
|
(set-vector! (-> obj root-override scale) f0-2 f0-2 f0-2 1.0)
|
|
)
|
|
(transform-post)
|
|
(go (method-of-object obj idle))
|
|
(none)
|
|
)
|
|
|
|
(defskelgroup skel-farm-beetree farm-beetree farm-beetree-lod0-jg farm-beetree-idle-ja
|
|
((farm-beetree-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 4 0 7)
|
|
)
|
|
|
|
(defskelgroup skel-farm-beetree-explode farm-beetree farm-beetree-explode-lod0-jg farm-beetree-explode-idle-ja
|
|
((farm-beetree-explode-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 80)
|
|
)
|
|
|
|
(define *farm-beetree-exploder-params*
|
|
(new 'static 'joint-exploder-static-params
|
|
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 11 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 12 :parent-joint-index -1)
|
|
)
|
|
:collide-spec #x1
|
|
)
|
|
)
|
|
|
|
(deftype farm-beetree (process-focusable)
|
|
((shakers shaker 2 :inline :offset-assert 208)
|
|
(incoming-attack-id uint32 :offset-assert 336)
|
|
)
|
|
:heap-base #xe0
|
|
:method-count-assert 31
|
|
:size-assert #x154
|
|
:flag-assert #x1f00e00154
|
|
(:methods
|
|
(idle () _type_ :state 27)
|
|
(die () _type_ :state 28)
|
|
(farm-beetree-method-29 (_type_) none 29)
|
|
(farm-beetree-method-30 (_type_) none 30)
|
|
)
|
|
)
|
|
|
|
|
|
(defun farm-beetree-callback ((arg0 cspace) (arg1 transformq))
|
|
(with-pp
|
|
(let ((s4-0 (the-as farm-beetree (-> arg0 param1)))
|
|
(s3-0 (the-as int (-> arg0 param2)))
|
|
)
|
|
(quaternion*! (-> arg1 quat) (-> arg1 quat) (quaternion-vector-angle!
|
|
(new 'stack-no-clear 'quaternion)
|
|
(the-as vector (-> s4-0 shakers s3-0))
|
|
(-> s4-0 shakers s3-0 shake)
|
|
)
|
|
)
|
|
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> s4-0 shakers s3-0 y-shake))
|
|
(if (< (the int (-> s4-0 shakers s3-0 decay-time))
|
|
(- (-> pp clock frame-counter) (-> s4-0 shakers s3-0 start-time))
|
|
)
|
|
(set! (-> arg0 param0) #f)
|
|
)
|
|
)
|
|
(cspace<-parented-transformq-joint! arg0 arg1)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defstate die (farm-beetree)
|
|
:virtual #t
|
|
:enter (the-as (function none :behavior farm-beetree) #f)
|
|
:exit (the-as (function none :behavior farm-beetree) #f)
|
|
:trans (the-as (function none :behavior farm-beetree) #f)
|
|
:code (behavior ()
|
|
(let ((v1-1 (-> self root-override root-prim)))
|
|
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(logior! (-> self draw status) (draw-control-status no-draw))
|
|
(while (-> self child)
|
|
(suspend)
|
|
)
|
|
(cleanup-for-death self)
|
|
(none)
|
|
)
|
|
:post (the-as (function none :behavior farm-beetree) #f)
|
|
)
|
|
|
|
(defstate idle (farm-beetree)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('attack)
|
|
(let ((a1-1 (the-as object (-> event param 1)))
|
|
(a0-2 proc)
|
|
)
|
|
(when (!= (-> (the-as attack-info a1-1) id) (-> self incoming-attack-id))
|
|
(set! (-> self incoming-attack-id) (-> (the-as attack-info a1-1) id))
|
|
(when a0-2
|
|
(let ((s5-0 (find-offending-process-focusable a0-2 (the-as attack-info a1-1))))
|
|
(when s5-0
|
|
(let ((a0-4 (get-penetrate-using-from-attack-event (the-as process-drawable proc) event)))
|
|
(cond
|
|
((and (not (logtest? (penetrate dark-skin) a0-4)) (zero? (pu->knocked-type a0-4)))
|
|
(sound-play "hit-veggies")
|
|
(let ((gp-4 (new 'stack-no-clear 'vector)))
|
|
(vector-inv-orient-by-quat!
|
|
gp-4
|
|
(vector-cross!
|
|
(new 'stack-no-clear 'vector)
|
|
(vector-normalize!
|
|
(vector-! (new 'stack-no-clear 'vector) (-> s5-0 root-override trans) (-> self root-override trans))
|
|
1.0
|
|
)
|
|
*up-vector*
|
|
)
|
|
(-> self root-override quat)
|
|
)
|
|
(let ((v1-10 (-> self shakers)))
|
|
(set! (-> v1-10 0 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-10 0 start-time) (-> self clock frame-counter))
|
|
(set! (-> v1-10 0 decay-time) 300.0)
|
|
(set! (-> v1-10 0 freq) 150.0)
|
|
(set! (-> v1-10 0 amplitude) 1820.4445)
|
|
(set! (-> v1-10 0 y-amplitude) 0.0)
|
|
)
|
|
(let ((a0-17 (-> self node-list data 4)))
|
|
(set! (-> a0-17 param0) farm-beetree-callback)
|
|
(set! (-> a0-17 param1) self)
|
|
(set! (-> a0-17 param2) (the-as basic 0))
|
|
)
|
|
(let ((v1-13 (-> self shakers 1)))
|
|
(set! (-> v1-13 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-13 start-time) (+ (-> self clock frame-counter) (seconds -0.06)))
|
|
(set! (-> v1-13 decay-time) 600.0)
|
|
(set! (-> v1-13 freq) 150.0)
|
|
(set! (-> v1-13 amplitude) 364.0889)
|
|
(set! (-> v1-13 y-decay-time) 450.0)
|
|
(set! (-> v1-13 y-freq) 150.0)
|
|
(set! (-> v1-13 y-amplitude) 3640.889)
|
|
)
|
|
)
|
|
(let ((v0-0 (the-as object (-> self node-list data 5))))
|
|
(set! (-> (the-as cspace v0-0) param0) farm-beetree-callback)
|
|
(set! (-> (the-as cspace v0-0) param1) self)
|
|
(set! (-> (the-as cspace v0-0) param2) (the-as basic 1))
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(sound-play "veggie-burst")
|
|
(let ((gp-6 (new 'stack 'joint-exploder-tuning (the-as uint 1))))
|
|
(set! (-> gp-6 fountain-rand-transv-lo quad) (-> s5-0 root-override trans quad))
|
|
(set! (-> gp-6 fountain-rand-transv-hi x) 4096.0)
|
|
(set! (-> gp-6 fountain-rand-transv-hi y) 122880.0)
|
|
(process-spawn
|
|
part-tracker
|
|
:init part-tracker-init
|
|
(-> *part-group-id-table* 1026)
|
|
300
|
|
#f
|
|
#f
|
|
#f
|
|
(-> self node-list data 3 bone transform)
|
|
:to self
|
|
)
|
|
(process-spawn
|
|
joint-exploder
|
|
(art-group-get-by-name *level* "skel-farm-beetree-explode" (the-as (pointer uint32) #f))
|
|
5
|
|
gp-6
|
|
*farm-beetree-exploder-params*
|
|
:to self
|
|
)
|
|
)
|
|
(go-virtual die)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:exit (the-as (function none :behavior farm-beetree) #f)
|
|
:code (the-as (function none :behavior farm-beetree) sleep-code)
|
|
:post (behavior ()
|
|
(dotimes (gp-0 2)
|
|
(shaker-method-9 (-> self shakers gp-0))
|
|
)
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defmethod farm-beetree-method-29 farm-beetree ((obj farm-beetree))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 3)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 16384.0 0.0 28672.0)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> obj root-override) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defmethod farm-beetree-method-30 farm-beetree ((obj farm-beetree))
|
|
(set! (-> obj mask) (logior (process-mask crate) (-> obj mask)))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! farm-beetree ((obj farm-beetree) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(farm-beetree-method-29 obj)
|
|
(process-drawable-from-entity! obj arg0)
|
|
(initialize-skeleton
|
|
obj
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-farm-beetree" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(farm-beetree-method-30 obj)
|
|
(quaternion-vector-angle!
|
|
(-> obj root-override quat)
|
|
*up-vector*
|
|
(* 182.04445 (rand-vu-float-range 0.0 360.0))
|
|
)
|
|
(let ((f0-2 (rand-vu-float-range 0.9 1.1)))
|
|
(set-vector! (-> obj root-override scale) f0-2 f0-2 f0-2 1.0)
|
|
)
|
|
(transform-post)
|
|
(go (method-of-object obj idle))
|
|
(none)
|
|
)
|
|
|
|
(defskelgroup skel-farm-cabbage farm-cabbage farm-cabbage-lod0-jg farm-cabbage-idle-ja
|
|
((farm-cabbage-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 5)
|
|
)
|
|
|
|
(defskelgroup skel-farm-cabbage-explode farm-cabbage farm-cabbage-explode-lod0-jg farm-cabbage-explode-idle-ja
|
|
((farm-cabbage-explode-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 80)
|
|
)
|
|
|
|
(define *farm-cabbage-exploder-params*
|
|
(new 'static 'joint-exploder-static-params
|
|
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
|
)
|
|
:collide-spec #x1
|
|
)
|
|
)
|
|
|
|
(deftype farm-cabbage (process-focusable)
|
|
((shakers shaker 2 :inline :offset-assert 208)
|
|
(incoming-attack-id uint32 :offset-assert 336)
|
|
)
|
|
:heap-base #xe0
|
|
:method-count-assert 31
|
|
:size-assert #x154
|
|
:flag-assert #x1f00e00154
|
|
(:methods
|
|
(idle () _type_ :state 27)
|
|
(die () _type_ :state 28)
|
|
(farm-cabbage-method-29 (_type_) none 29)
|
|
(farm-cabbage-method-30 (_type_) none 30)
|
|
)
|
|
)
|
|
|
|
|
|
(defun farm-cabbage-callback ((arg0 cspace) (arg1 transformq))
|
|
(with-pp
|
|
(let ((s4-0 (the-as farm-cabbage (-> arg0 param1)))
|
|
(s3-0 (the-as int (-> arg0 param2)))
|
|
)
|
|
(quaternion*! (-> arg1 quat) (-> arg1 quat) (quaternion-vector-angle!
|
|
(new 'stack-no-clear 'quaternion)
|
|
(the-as vector (-> s4-0 shakers s3-0))
|
|
(-> s4-0 shakers s3-0 shake)
|
|
)
|
|
)
|
|
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> s4-0 shakers s3-0 y-shake))
|
|
(if (< (the int (-> s4-0 shakers s3-0 decay-time))
|
|
(- (-> pp clock frame-counter) (-> s4-0 shakers s3-0 start-time))
|
|
)
|
|
(set! (-> arg0 param0) #f)
|
|
)
|
|
)
|
|
(cspace<-parented-transformq-joint! arg0 arg1)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defstate die (farm-cabbage)
|
|
:virtual #t
|
|
:enter (the-as (function none :behavior farm-cabbage) #f)
|
|
:exit (the-as (function none :behavior farm-cabbage) #f)
|
|
:trans (the-as (function none :behavior farm-cabbage) #f)
|
|
:code (behavior ()
|
|
(let ((v1-1 (-> self root-override root-prim)))
|
|
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(logior! (-> self draw status) (draw-control-status no-draw))
|
|
(while (-> self child)
|
|
(suspend)
|
|
)
|
|
(cleanup-for-death self)
|
|
(none)
|
|
)
|
|
:post (the-as (function none :behavior farm-cabbage) #f)
|
|
)
|
|
|
|
(defstate idle (farm-cabbage)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('attack)
|
|
(let ((a1-1 (the-as object (-> event param 1)))
|
|
(a0-2 proc)
|
|
)
|
|
(when (!= (-> (the-as attack-info a1-1) id) (-> self incoming-attack-id))
|
|
(set! (-> self incoming-attack-id) (-> (the-as attack-info a1-1) id))
|
|
(when a0-2
|
|
(let ((s5-0 (find-offending-process-focusable a0-2 (the-as attack-info a1-1))))
|
|
(when s5-0
|
|
(let ((a0-4 (get-penetrate-using-from-attack-event (the-as process-drawable proc) event)))
|
|
(cond
|
|
((and (not (logtest? (penetrate dark-skin) a0-4)) (zero? (pu->knocked-type a0-4)))
|
|
(sound-play "hit-veggies")
|
|
(let ((gp-4 (new 'stack-no-clear 'vector)))
|
|
(vector-inv-orient-by-quat!
|
|
gp-4
|
|
(vector-cross!
|
|
(new 'stack-no-clear 'vector)
|
|
(vector-normalize!
|
|
(vector-! (new 'stack-no-clear 'vector) (-> s5-0 root-override trans) (-> self root-override trans))
|
|
1.0
|
|
)
|
|
*up-vector*
|
|
)
|
|
(-> self root-override quat)
|
|
)
|
|
(let ((v1-10 (-> self shakers)))
|
|
(set! (-> v1-10 0 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-10 0 start-time) (-> self clock frame-counter))
|
|
(set! (-> v1-10 0 decay-time) 300.0)
|
|
(set! (-> v1-10 0 freq) 150.0)
|
|
(set! (-> v1-10 0 amplitude) 1820.4445)
|
|
(set! (-> v1-10 0 y-amplitude) 0.0)
|
|
)
|
|
(let ((a0-17 (-> self node-list data 4)))
|
|
(set! (-> a0-17 param0) farm-cabbage-callback)
|
|
(set! (-> a0-17 param1) self)
|
|
(set! (-> a0-17 param2) (the-as basic 0))
|
|
)
|
|
(let ((v1-13 (-> self shakers 1)))
|
|
(set! (-> v1-13 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-13 start-time) (+ (-> self clock frame-counter) (seconds -0.06)))
|
|
(set! (-> v1-13 decay-time) 600.0)
|
|
(set! (-> v1-13 freq) 150.0)
|
|
(set! (-> v1-13 amplitude) 364.0889)
|
|
(set! (-> v1-13 y-decay-time) 450.0)
|
|
(set! (-> v1-13 y-freq) 150.0)
|
|
(set! (-> v1-13 y-amplitude) 910.2222)
|
|
)
|
|
)
|
|
(let ((v0-0 (the-as object (-> self node-list data 5))))
|
|
(set! (-> (the-as cspace v0-0) param0) farm-cabbage-callback)
|
|
(set! (-> (the-as cspace v0-0) param1) self)
|
|
(set! (-> (the-as cspace v0-0) param2) (the-as basic 1))
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(sound-play "veggie-burst")
|
|
(let ((gp-6 (new 'stack 'joint-exploder-tuning (the-as uint 1))))
|
|
(set! (-> gp-6 fountain-rand-transv-lo quad) (-> s5-0 root-override trans quad))
|
|
(set! (-> gp-6 fountain-rand-transv-hi x) 40960.0)
|
|
(set! (-> gp-6 fountain-rand-transv-hi y) 122880.0)
|
|
(process-spawn
|
|
part-tracker
|
|
:init part-tracker-init
|
|
(-> *part-group-id-table* 1027)
|
|
300
|
|
#f
|
|
#f
|
|
#f
|
|
(-> self node-list data 3 bone transform)
|
|
:to self
|
|
)
|
|
(process-spawn
|
|
joint-exploder
|
|
(art-group-get-by-name *level* "skel-farm-cabbage-explode" (the-as (pointer uint32) #f))
|
|
5
|
|
gp-6
|
|
*farm-cabbage-exploder-params*
|
|
:to self
|
|
)
|
|
)
|
|
(go-virtual die)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:exit (the-as (function none :behavior farm-cabbage) #f)
|
|
:code (the-as (function none :behavior farm-cabbage) sleep-code)
|
|
:post (behavior ()
|
|
(dotimes (gp-0 2)
|
|
(shaker-method-9 (-> self shakers gp-0))
|
|
)
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defmethod farm-cabbage-method-29 farm-cabbage ((obj farm-cabbage))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 4)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 0.0 0.0 20480.0)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> obj root-override) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defmethod farm-cabbage-method-30 farm-cabbage ((obj farm-cabbage))
|
|
(set! (-> obj mask) (logior (process-mask crate) (-> obj mask)))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! farm-cabbage ((obj farm-cabbage) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(farm-cabbage-method-29 obj)
|
|
(process-drawable-from-entity! obj arg0)
|
|
(initialize-skeleton
|
|
obj
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-farm-cabbage" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(farm-cabbage-method-30 obj)
|
|
(quaternion-vector-angle!
|
|
(-> obj root-override quat)
|
|
*up-vector*
|
|
(* 182.04445 (rand-vu-float-range 0.0 360.0))
|
|
)
|
|
(let ((f0-2 (rand-vu-float-range 0.9 1.1)))
|
|
(set-vector! (-> obj root-override scale) f0-2 f0-2 f0-2 1.0)
|
|
)
|
|
(transform-post)
|
|
(go (method-of-object obj idle))
|
|
(none)
|
|
)
|
|
|
|
(defskelgroup skel-farm-small-cabbage farm-small-cabbage farm-small-cabbage-lod0-jg farm-small-cabbage-idle-ja
|
|
((farm-small-cabbage-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 2.5)
|
|
)
|
|
|
|
(defskelgroup skel-farm-small-cabbage-explode farm-small-cabbage farm-small-cabbage-explode-lod0-jg farm-small-cabbage-explode-idle-ja
|
|
((farm-small-cabbage-explode-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 80)
|
|
)
|
|
|
|
(define *farm-small-cabbage-exploder-params*
|
|
(new 'static 'joint-exploder-static-params
|
|
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
|
|
)
|
|
:collide-spec #x1
|
|
)
|
|
)
|
|
|
|
(deftype farm-small-cabbage (process-focusable)
|
|
((shakers shaker 1 :inline :offset-assert 208)
|
|
(incoming-attack-id uint32 :offset-assert 272)
|
|
)
|
|
:heap-base #xa0
|
|
:method-count-assert 31
|
|
:size-assert #x114
|
|
:flag-assert #x1f00a00114
|
|
(:methods
|
|
(idle () _type_ :state 27)
|
|
(die () _type_ :state 28)
|
|
(farm-small-cabbage-method-29 (_type_) none 29)
|
|
(farm-small-cabbage-method-30 (_type_) none 30)
|
|
)
|
|
)
|
|
|
|
|
|
(defun farm-small-cabbage-callback ((arg0 cspace) (arg1 transformq))
|
|
(with-pp
|
|
(let ((s4-0 (the-as farm-small-cabbage (-> arg0 param1)))
|
|
(s3-0 (the-as int (-> arg0 param2)))
|
|
)
|
|
(quaternion*! (-> arg1 quat) (-> arg1 quat) (quaternion-vector-angle!
|
|
(new 'stack-no-clear 'quaternion)
|
|
(the-as vector (-> s4-0 shakers s3-0))
|
|
(-> s4-0 shakers s3-0 shake)
|
|
)
|
|
)
|
|
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> s4-0 shakers s3-0 y-shake))
|
|
(if (< (the int (-> s4-0 shakers s3-0 decay-time))
|
|
(- (-> pp clock frame-counter) (-> s4-0 shakers s3-0 start-time))
|
|
)
|
|
(set! (-> arg0 param0) #f)
|
|
)
|
|
)
|
|
(cspace<-parented-transformq-joint! arg0 arg1)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defstate die (farm-small-cabbage)
|
|
:virtual #t
|
|
:enter (the-as (function none :behavior farm-small-cabbage) #f)
|
|
:exit (the-as (function none :behavior farm-small-cabbage) #f)
|
|
:trans (the-as (function none :behavior farm-small-cabbage) #f)
|
|
:code (behavior ()
|
|
(let ((v1-1 (-> self root-override root-prim)))
|
|
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(logior! (-> self draw status) (draw-control-status no-draw))
|
|
(while (-> self child)
|
|
(suspend)
|
|
)
|
|
(cleanup-for-death self)
|
|
(none)
|
|
)
|
|
:post (the-as (function none :behavior farm-small-cabbage) #f)
|
|
)
|
|
|
|
(defstate idle (farm-small-cabbage)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('attack)
|
|
(let ((a1-1 (the-as object (-> event param 1)))
|
|
(a0-2 proc)
|
|
)
|
|
(when (!= (-> (the-as attack-info a1-1) id) (-> self incoming-attack-id))
|
|
(set! (-> self incoming-attack-id) (-> (the-as attack-info a1-1) id))
|
|
(when a0-2
|
|
(let ((s5-0 (find-offending-process-focusable a0-2 (the-as attack-info a1-1))))
|
|
(when s5-0
|
|
(let ((a0-4 (get-penetrate-using-from-attack-event (the-as process-drawable proc) event)))
|
|
(cond
|
|
((and (not (logtest? (penetrate dark-skin) a0-4)) (zero? (pu->knocked-type a0-4)))
|
|
(sound-play "hit-veggies")
|
|
(let ((gp-4 (new 'stack-no-clear 'vector)))
|
|
(vector-inv-orient-by-quat!
|
|
gp-4
|
|
(vector-cross!
|
|
(new 'stack-no-clear 'vector)
|
|
(vector-normalize!
|
|
(vector-! (new 'stack-no-clear 'vector) (-> s5-0 root-override trans) (-> self root-override trans))
|
|
1.0
|
|
)
|
|
*up-vector*
|
|
)
|
|
(-> self root-override quat)
|
|
)
|
|
(let ((v1-10 (-> self shakers)))
|
|
(set! (-> v1-10 0 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-10 0 start-time) (-> self clock frame-counter))
|
|
(set! (-> v1-10 0 decay-time) 300.0)
|
|
(set! (-> v1-10 0 freq) 150.0)
|
|
(set! (-> v1-10 0 amplitude) 910.2222)
|
|
(set! (-> v1-10 0 y-amplitude) 0.0)
|
|
)
|
|
)
|
|
(let ((v0-0 (the-as object (-> self node-list data 4))))
|
|
(set! (-> (the-as cspace v0-0) param0) farm-small-cabbage-callback)
|
|
(set! (-> (the-as cspace v0-0) param1) self)
|
|
(set! (-> (the-as cspace v0-0) param2) (the-as basic 0))
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(sound-play "veggie-burst")
|
|
(let ((gp-6 (new 'stack 'joint-exploder-tuning (the-as uint 1))))
|
|
(set! (-> gp-6 fountain-rand-transv-lo quad) (-> s5-0 root-override trans quad))
|
|
(set! (-> gp-6 fountain-rand-transv-hi x) 4096.0)
|
|
(set! (-> gp-6 fountain-rand-transv-hi y) 122880.0)
|
|
(process-spawn
|
|
part-tracker
|
|
:init part-tracker-init
|
|
(-> *part-group-id-table* 1028)
|
|
300
|
|
#f
|
|
#f
|
|
#f
|
|
(-> self node-list data 3 bone transform)
|
|
:to self
|
|
)
|
|
(process-spawn
|
|
joint-exploder
|
|
(art-group-get-by-name *level* "skel-farm-small-cabbage-explode" (the-as (pointer uint32) #f))
|
|
5
|
|
gp-6
|
|
*farm-small-cabbage-exploder-params*
|
|
:to self
|
|
)
|
|
)
|
|
(go-virtual die)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:exit (the-as (function none :behavior farm-small-cabbage) #f)
|
|
:code (the-as (function none :behavior farm-small-cabbage) sleep-code)
|
|
:post (behavior ()
|
|
(dotimes (gp-0 1)
|
|
(shaker-method-9 (-> self shakers gp-0))
|
|
)
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defmethod farm-small-cabbage-method-29 farm-small-cabbage ((obj farm-small-cabbage))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid rideable))
|
|
(set! (-> v1-6 transform-index) 4)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 0.0 0.0 10240.0)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> obj root-override) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defmethod farm-small-cabbage-method-30 farm-small-cabbage ((obj farm-small-cabbage))
|
|
(set! (-> obj mask) (logior (process-mask crate) (-> obj mask)))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! farm-small-cabbage ((obj farm-small-cabbage) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(farm-small-cabbage-method-29 obj)
|
|
(process-drawable-from-entity! obj arg0)
|
|
(initialize-skeleton
|
|
obj
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-farm-small-cabbage" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(farm-small-cabbage-method-30 obj)
|
|
(quaternion-vector-angle!
|
|
(-> obj root-override quat)
|
|
*up-vector*
|
|
(* 182.04445 (rand-vu-float-range 0.0 360.0))
|
|
)
|
|
(let ((f0-2 (rand-vu-float-range 0.9 1.1)))
|
|
(set-vector! (-> obj root-override scale) f0-2 f0-2 f0-2 1.0)
|
|
)
|
|
(transform-post)
|
|
(go (method-of-object obj idle))
|
|
(none)
|
|
)
|
|
|
|
(defskelgroup skel-farm-chilirots farm-chilirots farm-chilirots-lod0-jg farm-chilirots-idle-ja
|
|
((farm-chilirots-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 2 0 4.5)
|
|
)
|
|
|
|
(defskelgroup skel-farm-chilirots-explode farm-chilirots farm-chilirots-explode-lod0-jg farm-chilirots-explode-idle-ja
|
|
((farm-chilirots-explode-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 0 0 80)
|
|
)
|
|
|
|
(define *farm-chilirots-exploder-params*
|
|
(new 'static 'joint-exploder-static-params
|
|
:joints (new 'static 'boxed-array :type joint-exploder-static-joint-params
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 3 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 4 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 5 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 6 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 7 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 8 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 9 :parent-joint-index -1)
|
|
(new 'static 'joint-exploder-static-joint-params :joint-index 10 :parent-joint-index -1)
|
|
)
|
|
:collide-spec #x1
|
|
)
|
|
)
|
|
|
|
(deftype farm-chilirots (process-focusable)
|
|
((shakers shaker 4 :inline :offset-assert 208)
|
|
(incoming-attack-id uint32 :offset-assert 464)
|
|
)
|
|
:heap-base #x160
|
|
:method-count-assert 31
|
|
:size-assert #x1d4
|
|
:flag-assert #x1f016001d4
|
|
(:methods
|
|
(idle () _type_ :state 27)
|
|
(die () _type_ :state 28)
|
|
(farm-chilirots-method-29 (_type_) none 29)
|
|
(farm-chilirots-method-30 (_type_) none 30)
|
|
)
|
|
)
|
|
|
|
|
|
(defun farm-chilirots-callback ((arg0 cspace) (arg1 transformq))
|
|
(with-pp
|
|
(let ((s4-0 (the-as farm-chilirots (-> arg0 param1)))
|
|
(s3-0 (the-as int (-> arg0 param2)))
|
|
)
|
|
(quaternion*! (-> arg1 quat) (-> arg1 quat) (quaternion-vector-angle!
|
|
(new 'stack-no-clear 'quaternion)
|
|
(the-as vector (-> s4-0 shakers s3-0))
|
|
(-> s4-0 shakers s3-0 shake)
|
|
)
|
|
)
|
|
(quaternion-rotate-local-y! (-> arg1 quat) (-> arg1 quat) (-> s4-0 shakers s3-0 y-shake))
|
|
(if (< (the int (-> s4-0 shakers s3-0 decay-time))
|
|
(- (-> pp clock frame-counter) (-> s4-0 shakers s3-0 start-time))
|
|
)
|
|
(set! (-> arg0 param0) #f)
|
|
)
|
|
)
|
|
(cspace<-parented-transformq-joint! arg0 arg1)
|
|
0
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defstate die (farm-chilirots)
|
|
:virtual #t
|
|
:enter (the-as (function none :behavior farm-chilirots) #f)
|
|
:exit (the-as (function none :behavior farm-chilirots) #f)
|
|
:trans (the-as (function none :behavior farm-chilirots) #f)
|
|
:code (behavior ()
|
|
(let ((v1-1 (-> self root-override root-prim)))
|
|
(set! (-> v1-1 prim-core collide-as) (collide-spec))
|
|
(set! (-> v1-1 prim-core collide-with) (collide-spec))
|
|
)
|
|
0
|
|
(logior! (-> self draw status) (draw-control-status no-draw))
|
|
(while (-> self child)
|
|
(suspend)
|
|
)
|
|
(cleanup-for-death self)
|
|
(none)
|
|
)
|
|
:post (the-as (function none :behavior farm-chilirots) #f)
|
|
)
|
|
|
|
(defstate idle (farm-chilirots)
|
|
:virtual #t
|
|
:event (behavior ((proc process) (arg1 int) (event-type symbol) (event event-message-block))
|
|
(case event-type
|
|
(('attack)
|
|
(let ((a1-1 (the-as object (-> event param 1)))
|
|
(a0-2 proc)
|
|
)
|
|
(when (!= (-> (the-as attack-info a1-1) id) (-> self incoming-attack-id))
|
|
(set! (-> self incoming-attack-id) (-> (the-as attack-info a1-1) id))
|
|
(when a0-2
|
|
(let ((s5-0 (find-offending-process-focusable a0-2 (the-as attack-info a1-1))))
|
|
(when s5-0
|
|
(let ((a0-4 (get-penetrate-using-from-attack-event (the-as process-drawable proc) event)))
|
|
(cond
|
|
((and (not (logtest? (penetrate dark-skin) a0-4)) (zero? (pu->knocked-type a0-4)))
|
|
(sound-play "hit-veggies")
|
|
(let ((gp-4 (new 'stack-no-clear 'vector)))
|
|
(vector-inv-orient-by-quat!
|
|
gp-4
|
|
(vector-cross!
|
|
(new 'stack-no-clear 'vector)
|
|
(vector-normalize!
|
|
(vector-! (new 'stack-no-clear 'vector) (-> s5-0 root-override trans) (-> self root-override trans))
|
|
1.0
|
|
)
|
|
*up-vector*
|
|
)
|
|
(-> self root-override quat)
|
|
)
|
|
(let ((v1-10 (-> self shakers)))
|
|
(set! (-> v1-10 0 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-10 0 start-time) (-> self clock frame-counter))
|
|
(set! (-> v1-10 0 decay-time) 300.0)
|
|
(set! (-> v1-10 0 freq) 150.0)
|
|
(set! (-> v1-10 0 amplitude) 1820.4445)
|
|
(set! (-> v1-10 0 y-amplitude) 0.0)
|
|
)
|
|
(let ((a0-17 (-> self node-list data 4)))
|
|
(set! (-> a0-17 param0) farm-chilirots-callback)
|
|
(set! (-> a0-17 param1) self)
|
|
(set! (-> a0-17 param2) (the-as basic 0))
|
|
)
|
|
(let ((v1-13 (-> self shakers 1)))
|
|
(set! (-> v1-13 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-13 start-time) (+ (-> self clock frame-counter) (seconds -0.06)))
|
|
(set! (-> v1-13 decay-time) 450.0)
|
|
(set! (-> v1-13 freq) 150.0)
|
|
(set! (-> v1-13 amplitude) 1820.4445)
|
|
(set! (-> v1-13 y-decay-time) 450.0)
|
|
(set! (-> v1-13 y-freq) 150.0)
|
|
(set! (-> v1-13 y-amplitude) 1820.4445)
|
|
)
|
|
(let ((v1-15 (-> self node-list data 5)))
|
|
(set! (-> v1-15 param0) farm-chilirots-callback)
|
|
(set! (-> v1-15 param1) self)
|
|
(set! (-> v1-15 param2) (the-as basic 1))
|
|
)
|
|
(let ((v1-16 (-> self shakers 2)))
|
|
(set! (-> v1-16 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-16 start-time) (+ (-> self clock frame-counter) (seconds -0.12)))
|
|
(set! (-> v1-16 decay-time) 600.0)
|
|
(set! (-> v1-16 freq) 150.0)
|
|
(set! (-> v1-16 amplitude) 1820.4445)
|
|
(set! (-> v1-16 y-decay-time) 450.0)
|
|
(set! (-> v1-16 y-freq) 150.0)
|
|
(set! (-> v1-16 y-amplitude) 1820.4445)
|
|
)
|
|
(let ((v1-18 (-> self node-list data 6)))
|
|
(set! (-> v1-18 param0) farm-chilirots-callback)
|
|
(set! (-> v1-18 param1) self)
|
|
(set! (-> v1-18 param2) (the-as basic 2))
|
|
)
|
|
(let ((v1-19 (-> self shakers 3)))
|
|
(set! (-> v1-19 axis quad) (-> gp-4 quad))
|
|
(set! (-> v1-19 start-time) (+ (-> self clock frame-counter) (seconds -0.18)))
|
|
(set! (-> v1-19 decay-time) 750.0)
|
|
(set! (-> v1-19 freq) 150.0)
|
|
(set! (-> v1-19 amplitude) 1820.4445)
|
|
(set! (-> v1-19 y-decay-time) 450.0)
|
|
(set! (-> v1-19 y-freq) 150.0)
|
|
(set! (-> v1-19 y-amplitude) 1820.4445)
|
|
)
|
|
)
|
|
(let ((v0-0 (the-as object (-> self node-list data 7))))
|
|
(set! (-> (the-as cspace v0-0) param0) farm-chilirots-callback)
|
|
(set! (-> (the-as cspace v0-0) param1) self)
|
|
(set! (-> (the-as cspace v0-0) param2) (the-as basic 3))
|
|
v0-0
|
|
)
|
|
)
|
|
(else
|
|
(sound-play "veggie-burst")
|
|
(let ((gp-6 (new 'stack 'joint-exploder-tuning (the-as uint 1))))
|
|
(set! (-> gp-6 fountain-rand-transv-lo quad) (-> s5-0 root-override trans quad))
|
|
(set! (-> gp-6 fountain-rand-transv-hi x) 4096.0)
|
|
(set! (-> gp-6 fountain-rand-transv-hi y) 122880.0)
|
|
(process-spawn
|
|
part-tracker
|
|
:init part-tracker-init
|
|
(-> *part-group-id-table* 1029)
|
|
300
|
|
#f
|
|
#f
|
|
#f
|
|
(-> self node-list data 3 bone transform)
|
|
:to self
|
|
)
|
|
(process-spawn
|
|
joint-exploder
|
|
(art-group-get-by-name *level* "skel-farm-chilirots-explode" (the-as (pointer uint32) #f))
|
|
5
|
|
gp-6
|
|
*farm-chilirots-exploder-params*
|
|
:to self
|
|
)
|
|
)
|
|
(go-virtual die)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
:code (the-as (function none :behavior farm-chilirots) sleep-code)
|
|
:post (behavior ()
|
|
(dotimes (gp-0 4)
|
|
(shaker-method-9 (-> self shakers gp-0))
|
|
)
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defmethod farm-chilirots-method-29 farm-chilirots ((obj farm-chilirots))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((v1-6 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-6 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-6 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-6 prim-core action) (collide-action solid))
|
|
(set! (-> v1-6 transform-index) 3)
|
|
(set-vector! (-> v1-6 local-sphere) 0.0 8192.0 0.0 18432.0)
|
|
(set! (-> s5-0 total-prims) (the-as uint 1))
|
|
(set! (-> s5-0 root-prim) v1-6)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-9 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-9 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-9 prim-core collide-with))
|
|
)
|
|
(set! (-> obj root-override) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defmethod farm-chilirots-method-30 farm-chilirots ((obj farm-chilirots))
|
|
(set! (-> obj mask) (logior (process-mask crate) (-> obj mask)))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! farm-chilirots ((obj farm-chilirots) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(farm-chilirots-method-29 obj)
|
|
(process-drawable-from-entity! obj arg0)
|
|
(initialize-skeleton
|
|
obj
|
|
(the-as skeleton-group (art-group-get-by-name *level* "skel-farm-chilirots" (the-as (pointer uint32) #f)))
|
|
(the-as pair 0)
|
|
)
|
|
(farm-chilirots-method-30 obj)
|
|
(quaternion-vector-angle!
|
|
(-> obj root-override quat)
|
|
*up-vector*
|
|
(* 182.04445 (rand-vu-float-range 0.0 360.0))
|
|
)
|
|
(let ((f0-2 (rand-vu-float-range 0.9 1.1)))
|
|
(set-vector! (-> obj root-override scale) f0-2 f0-2 f0-2 1.0)
|
|
)
|
|
(transform-post)
|
|
(go (method-of-object obj idle))
|
|
(none)
|
|
)
|
|
|
|
(defskelgroup skel-farm-sprinkler-barrels farm-sprinkler-barrels farm-sprinkler-barrels-lod0-jg farm-sprinkler-barrels-idle-ja
|
|
((farm-sprinkler-barrels-lod0-mg (meters 999999)))
|
|
:bounds (static-spherem 0 8 3 4)
|
|
)
|
|
|
|
(deftype farm-sprinkler-barrels (process-focusable)
|
|
()
|
|
:heap-base #x50
|
|
:method-count-assert 30
|
|
:size-assert #xcc
|
|
:flag-assert #x1e005000cc
|
|
(:methods
|
|
(idle () _type_ :state 27)
|
|
(farm-sprinkler-barrels-method-28 (_type_) none 28)
|
|
(farm-sprinkler-barrels-method-29 (_type_) none 29)
|
|
)
|
|
)
|
|
|
|
|
|
(defstate idle (farm-sprinkler-barrels)
|
|
:virtual #t
|
|
:code (behavior ()
|
|
(until #f
|
|
(ja-no-eval :group! (-> self draw art-group data 2)
|
|
:num! (seek! (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) frames num-frames) -1)))
|
|
:frame-num 0.0
|
|
)
|
|
(until (ja-done? 0)
|
|
(suspend)
|
|
(ja :num! (seek!))
|
|
)
|
|
)
|
|
#f
|
|
(none)
|
|
)
|
|
:post (behavior ()
|
|
(transform-post)
|
|
(none)
|
|
)
|
|
)
|
|
|
|
(defmethod farm-sprinkler-barrels-method-28 farm-sprinkler-barrels ((obj farm-sprinkler-barrels))
|
|
(let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player))))
|
|
(set! (-> s5-0 dynam) (copy *standard-dynamics* 'process))
|
|
(set! (-> s5-0 reaction) cshape-reaction-default)
|
|
(set! (-> s5-0 no-reaction)
|
|
(the-as (function collide-shape-moving collide-query vector vector object) nothing)
|
|
)
|
|
(let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0)))
|
|
(set! (-> s5-0 total-prims) (the-as uint 3))
|
|
(set! (-> s4-0 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> s4-0 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> s4-0 prim-core action) (collide-action solid no-standon))
|
|
(set-vector! (-> s4-0 local-sphere) -12288.0 32768.0 0.0 20480.0)
|
|
(set! (-> s5-0 root-prim) s4-0)
|
|
)
|
|
(let ((v1-12 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0))))
|
|
(set! (-> v1-12 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-12 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-12 prim-core action) (collide-action solid no-standon))
|
|
(set! (-> v1-12 transform-index) 5)
|
|
(set-vector! (-> v1-12 local-sphere) 0.0 6144.0 4096.0 12288.0)
|
|
)
|
|
(let ((v1-14 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0))))
|
|
(set! (-> v1-14 prim-core collide-as) (collide-spec crate camera-blocker))
|
|
(set! (-> v1-14 prim-core collide-with) (collide-spec jak player-list tobot))
|
|
(set! (-> v1-14 prim-core action) (collide-action solid no-standon))
|
|
(set! (-> v1-14 transform-index) 3)
|
|
(set-vector! (-> v1-14 local-sphere) 0.0 6144.0 4096.0 12288.0)
|
|
)
|
|
(set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w)))
|
|
(let ((v1-17 (-> s5-0 root-prim)))
|
|
(set! (-> s5-0 backup-collide-as) (-> v1-17 prim-core collide-as))
|
|
(set! (-> s5-0 backup-collide-with) (-> v1-17 prim-core collide-with))
|
|
)
|
|
(set! (-> obj root-override) s5-0)
|
|
)
|
|
0
|
|
(none)
|
|
)
|
|
|
|
(defmethod farm-sprinkler-barrels-method-29 farm-sprinkler-barrels ((obj farm-sprinkler-barrels))
|
|
(set! (-> obj mask) (logior (process-mask crate) (-> obj mask)))
|
|
0
|
|
(none)
|
|
)
|
|
|
|
;; WARN: Return type mismatch object vs none.
|
|
(defmethod init-from-entity! farm-sprinkler-barrels ((obj farm-sprinkler-barrels) (arg0 entity-actor))
|
|
"Typically the method that does the initial setup on the process, potentially using the [[entity-actor]] provided as part of that.
|
|
This commonly includes things such as:
|
|
- stack size
|
|
- collision information
|
|
- loading the skeleton group / bones
|
|
- sounds"
|
|
(farm-sprinkler-barrels-method-28 obj)
|
|
(process-drawable-from-entity! obj arg0)
|
|
(logclear! (-> obj mask) (process-mask actor-pause))
|
|
(initialize-skeleton
|
|
obj
|
|
(the-as
|
|
skeleton-group
|
|
(art-group-get-by-name *level* "skel-farm-sprinkler-barrels" (the-as (pointer uint32) #f))
|
|
)
|
|
(the-as pair 0)
|
|
)
|
|
(farm-sprinkler-barrels-method-29 obj)
|
|
(transform-post)
|
|
(go (method-of-object obj idle))
|
|
(none)
|
|
)
|
|
|
|
(defun farm-activate ((arg0 level))
|
|
(let* ((v1-0 (-> arg0 name))
|
|
(s5-0 (cond
|
|
((= v1-0 'ctyfarma)
|
|
(new 'static 'boxed-array :type int32 5 0 0 -1368390400 -1368390656 -1368390912)
|
|
)
|
|
((= v1-0 'ctyfarmb)
|
|
(new 'static 'boxed-array :type int32 5 0 0 -1145043712 -1145043968 -1145044224)
|
|
)
|
|
)
|
|
)
|
|
(v1-1 (-> arg0 name))
|
|
(gp-0 (cond
|
|
((= v1-1 'ctyfarma)
|
|
(new 'static 'boxed-array :type int32 5 0 0 -1368391424 -1368391168)
|
|
)
|
|
((= v1-1 'ctyfarmb)
|
|
(new 'static 'boxed-array :type int32 5 0 0 -1145044736 -1145044480)
|
|
)
|
|
)
|
|
)
|
|
)
|
|
(set! (-> (get-field-spec-by-id (-> *part-id-table* 4463) (sp-field-id spt-userdata)) initial-valuef)
|
|
(the-as float s5-0)
|
|
)
|
|
(set! (-> (get-field-spec-by-id (-> *part-id-table* 4462) (sp-field-id spt-userdata)) initial-valuef)
|
|
(the-as float s5-0)
|
|
)
|
|
(set! (-> (get-field-spec-by-id (-> *part-id-table* 4483) (sp-field-id spt-userdata)) initial-valuef)
|
|
(the-as float gp-0)
|
|
)
|
|
(set! (-> (get-field-spec-by-id (-> *part-id-table* 4482) (sp-field-id spt-userdata)) initial-valuef)
|
|
(the-as float gp-0)
|
|
)
|
|
)
|
|
(setup-user-array (-> *part-id-table* 4463) "ctyfarm-eggplant-body")
|
|
(setup-user-array (-> *part-id-table* 4462) "ctyfarm-eggplant-body")
|
|
(setup-user-array (-> *part-id-table* 4475) "ctyfarm-chili-stem")
|
|
(setup-user-array (-> *part-id-table* 4474) "ctyfarm-chili-stem")
|
|
(setup-user-array (-> *part-id-table* 4477) "ctyfarm-cab-body")
|
|
(setup-user-array (-> *part-id-table* 4476) "ctyfarm-cab-body")
|
|
(setup-user-array (-> *part-id-table* 4470) "ctyfarm-cab-body")
|
|
(setup-user-array (-> *part-id-table* 4483) "ctyfarm-chili-stem")
|
|
(setup-user-array (-> *part-id-table* 4482) "ctyfarm-chili-stem")
|
|
0
|
|
(none)
|
|
)
|