diff --git a/decompiler/IR2/AtomicOpTypeAnalysis.cpp b/decompiler/IR2/AtomicOpTypeAnalysis.cpp index 17920ce73f..be77a82bd7 100644 --- a/decompiler/IR2/AtomicOpTypeAnalysis.cpp +++ b/decompiler/IR2/AtomicOpTypeAnalysis.cpp @@ -437,7 +437,8 @@ TP_Type SimpleExpression::get_type_int2(const TypeState& input, return TP_Type::make_from_ts(TypeSpec("int")); } - if (arg0_type.is_product_with(4) && tc(dts, TypeSpec("type"), arg1_type)) { + if (arg0_type.is_product_with(4) && tc(dts, TypeSpec("type"), arg1_type) && + env.func->name() != "overrides-parent-method?") { // dynamic access into the method array with shift, add, offset-load // no need to track the type because we don't know the method index anyway. return TP_Type::make_partial_dyanmic_vtable_access(); diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 9ca5958b98..277fd5bc26 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -11160,14 +11160,76 @@ :flag-assert #x900000008 ) + +(defenum collide-kind + :type uint64 + :bitfield #t + (background 0) + (cak-1 1) ;; + (cak-2 2) + (cak-3 3) + (target 4) ;; target + (water 5) + (powerup 6) + (crate 7) + (enemy 8) ;; also used for powerups + (wall-object 9) ;; also object. door, pusher (blockers?) + (projectile 10) + (ground-object 11) ;; object, like darkecobarray, platforms + (target-attack 12) ;; all target attacks + (mother-spider 13) + (cak-14 14) ;; unused + (blue-eco-suck 15) ;; manipy, orb-cache-top, + ) + +(defenum collide-action + :type uint32 + :bitfield #t + (solid 0) + (ca-1 1) ;; sticky? + (ca-2 2) ;; target? + (ca-3 3) ;; edge grab related + (ca-4 4) + (ca-5 5) ;; unused? + (ca-6 6) ;; swing pole, manipy + (ca-7 7) ;; camera + (ca-8 8) ;; swingpole + (ca-9 9) ;; eco vents? + (ca-10 10) + (ca-11 11) + (ca-12 12) + (ca-13 13) + (ca-14 14) + (ca-15 15) ;; manipy + (ca-16 16) + ) + +(defenum collide-offense + :type int8 + (no-offense 0) + (touch 1) ;; just have to touch + (normal-attack 2) ;; any attack (like a normal crate) + (strong-attack 3) ;; hit with zoomer, slide, ground pound/flop, flut attack + (indestructible 4) ;; can't attack it. + ) + +(defenum collide-prim-type + :type int8 + :bitfield #t + (bad -2) + (unk0 0) + (unk1 1) + ) + + (deftype collide-prim-core (structure) - ((world-sphere vector :inline :offset-assert 0) - (collide-as uint64 :offset-assert 16) - (action uint32 :offset-assert 24) - (offense int8 :offset-assert 28) - (prim-type int8 :offset-assert 29) - (extra uint8 2 :offset-assert 30) - (quad uint128 2 :offset 0) + ((world-sphere vector :inline :offset-assert 0) + (collide-as collide-kind :offset-assert 16) + (action collide-action :offset-assert 24) + (offense collide-offense :offset-assert 28) + (prim-type int8 :offset-assert 29) + (extra uint8 2 :offset-assert 30) + (quad uint128 2 :offset 0) ) :method-count-assert 9 :size-assert #x20 @@ -11181,11 +11243,11 @@ (transform-index int8 :offset-assert 12) (prim-core collide-prim-core :inline :offset-assert 16) (local-sphere vector :inline :offset-assert 48) - (collide-with uint64 :offset-assert 64) + (collide-with collide-kind :offset-assert 64) (world-sphere vector :inline :offset 16) - (collide-as uint64 :offset 32) - (action uint32 :offset 40) - (offense int8 :offset 44) + (collide-as collide-kind :offset 32) + (action collide-action :offset 40) + (offense collide-offense :offset 44) (prim-type int8 :offset 45) (radius meters :offset 60) ) @@ -11205,14 +11267,14 @@ (dummy-17 () none 17) (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none 18) (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none 19) - (dummy-20 (_type_ uint) symbol 20) + (dummy-20 (_type_ collide-kind) symbol 20) (num-mesh (_type_ collide-shape-prim) int 21) (on-platform-test (_type_ _type_ collide-overlap-result float) pat-surface 22) (should-push-away-test () none 23) (dummy-24 () none 24) (dummy-25 (_type_ process-drawable) symbol 25) - (set-collide-as! (_type_ handle) none 26) - (set-collide-with! (_type_ handle) none 27) + (set-collide-as! (_type_ collide-kind) none 26) + (set-collide-with! (_type_ collide-kind) none 27) ) ) @@ -11271,8 +11333,8 @@ (event-other basic :offset-assert 156) (root-prim collide-shape-prim :offset-assert 160) ;; i think this can be any subtype of collide-shape-prim as well! (riders collide-sticky-rider-group :offset-assert 164) - (backup-collide-as uint64 :offset-assert 168) - (backup-collide-with uint64 :offset-assert 176) + (backup-collide-as collide-kind :offset-assert 168) + (backup-collide-with collide-kind :offset-assert 176) ) :method-count-assert 56 :size-assert #xb8 @@ -11283,11 +11345,11 @@ (dummy-29 (_type_ int) none 29) (TODO-RENAME-30 (_type_ vector) object 30) ;; ret - symbol | float (CSPG::9) (dummy-31 (_type_) none 31) - (dummy-32 (_type_ object uint) none 32) - (dummy-33 (_type_ vector uint) none 33) + (dummy-32 (_type_ object collide-kind) none 32) + (dummy-33 (_type_ vector collide-kind) none 33) (dummy-34 (_type_ uint) collide-shape-prim 34) (dummy-35 (_type_) symbol 35) - (dummy-36 (_type_ bounding-box float uint) symbol 36) + (dummy-36 (_type_ bounding-box float collide-kind) symbol 36) (dummy-37 (_type_ vector) none 37) (find-collision-meshes (_type_) symbol 38) (dummy-39 (_type_ collide-shape collide-overlap-result) symbol 39) @@ -11302,10 +11364,10 @@ (clear-collide-with-as (_type_) none 48) (restore-collide-with-as (_type_) none 49) (backup-collide-with-as (_type_) none 50) - (set-root-prim-collide-with! (_type_ handle) none 51) - (set-root-prim-collide-as! (_type_ handle) none 52) - (dummy-53 (_type_ int int int) none 53) - (dummy-54 (_type_ int int) none 54) + (set-root-prim-collide-with! (_type_ collide-kind) none 51) + (set-root-prim-collide-as! (_type_ collide-kind) none 52) + (dummy-53 (_type_ int collide-kind collide-kind) none 53) + (dummy-54 (_type_ int collide-offense) none 54) (dummy-55 (_type_ process touching-shapes-entry float float float) none 55) ) ) @@ -11345,7 +11407,7 @@ (dummy-57 (_type_ vector) none 57) (dummy-58 (_type_ vector) symbol 58) (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) - (dummy-60 (_type_ float float symbol uint) symbol 60) + (dummy-60 (_type_ float float symbol collide-kind) symbol 60) (TODO-RENAME-61 (_type_ vector vector vector) none 61) (dummy-62 (_type_ vector float) vector 62) (dummy-63 (_type_ vector vector float) float 63) @@ -11615,11 +11677,11 @@ (get-touched-shape (_type_ collide-shape) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! - (prims-touching-action? (_type_ collide-shape uint uint) touching-prims-entry 13) + (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry 13) (free-list () none 14) (free-entry-list (_type_) symbol 15) (get-head (_type_) touching-prims-entry 16) - (unknown1 (_type_ (pointer uint32)) uint 17) + (get-next (_type_ touching-prims-entry) touching-prims-entry 17) ) ) @@ -11890,7 +11952,7 @@ ) (deftype drawable-tree-collide-fragment (drawable-tree) - () + ((data-override drawable-inline-array :offset 32)) :method-count-assert #x12 :size-assert #x24 :flag-assert #x1200000024 @@ -12388,7 +12450,7 @@ (deftype collide-using-spheres-params (structure) ((spheres (pointer sphere) :offset-assert 0) (num-spheres uint32 :offset-assert 4) - (collide-with uint64 :offset-assert 8) + (collide-with collide-kind :offset-assert 8) (proc process-drawable :offset-assert 16) (ignore-pat uint32 :offset-assert 20) ;; flags / bitfield i bet (solid-only basic :offset-assert 24) ;; probably a symbol @@ -12438,7 +12500,7 @@ (deftype collide-cache-tri (structure) ((vertex vector 3 :inline :offset-assert 0) ;(extra-quad UNKNOWN 16 :offset-assert 48) - (pat uint32 :offset-assert 48) + (pat pat-surface :offset-assert 48) (prim-index uint16 :offset-assert 52) (user16 uint16 :offset-assert 54) (user32 uint32 2 :offset-assert 56) @@ -12457,17 +12519,17 @@ (num-tris uint16 :offset-assert 42) (unused uint8 4 :offset-assert 44) (world-sphere vector :inline :offset 0) - (collide-as uint64 :offset 16) - (action uint32 :offset 24) - (offense int8 :offset 28) - (prim-type int8 :offset 29) + (collide-as collide-kind :offset 16) + (action collide-action :offset 24) + (offense collide-offense :offset 28) + (prim-type int8 :offset 29) ) :method-count-assert 11 :size-assert #x30 :flag-assert #xb00000030 (:methods - (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 9) - (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 10) + (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float collide-action) float 9) + (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float collide-action) float 10) ) ) @@ -12478,7 +12540,7 @@ (proc process-drawable :offset-assert 16) ;; types: target (collide-box bounding-box :inline :offset-assert 32) (collide-box4w bounding-box4w :inline :offset-assert 64) - (collide-with uint64 :offset-assert 96) + (collide-with collide-kind :offset-assert 96) (prims collide-cache-prim 100 :inline :offset-assert 112) (tris collide-cache-tri 461 :inline :offset-assert 4912) ) @@ -12489,13 +12551,13 @@ (dummy-9 (_type_) none 9) (dummy-10 (_type_ vector vector float int process collide-tri-result int) float 10) (dummy-11 (_type_ collide-using-spheres-params) none 11) - (fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12) - (dummy-13 (_type_ bounding-box uint process-drawable uint) none 13) + (fill-and-probe-using-y-probe (_type_ vector float collide-kind process collide-tri-result uint) float 12) + (dummy-13 (_type_ bounding-box collide-kind process-drawable pat-surface) none 13) (dummy-14 (_type_ vector vector float int process int) none 14) (dummy-15 (_type_ collide-using-spheres-params) none 15) (dummy-16 (_type_ vector float uint process-drawable uint) none 16) (initialize (_type_) none 17) - (dummy-18 (_type_ vector vector float int collide-tri-result int) float 18) + (dummy-18 (_type_ vector vector float collide-kind collide-tri-result int) float 18) (probe-using-spheres (_type_) none 19) (dummy-20 (_type_ vector float uint collide-tri-result uint) float 20) (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) ;; second functiom is method 28 @@ -18408,19 +18470,19 @@ (define-extern distc (function vector vector float)) (define-extern interpolate (function float float float float float float)) (define-extern collide-upload-vu0 (function none)) -(define-extern collide-probe-instance-tie (function drawable int object int int)) ;; drawable is probably an instance-tie? -(define-extern collide-probe-node (function drawable int int int)) -(define-extern indent-to (function int string)) +(define-extern collide-probe-instance-tie (function object int collide-list int int)) ;; drawable is either an instance-tie or a draw-node inline arrary +(define-extern collide-probe-node (function (inline-array draw-node) int collide-list int)) +(define-extern indent-to (function int none)) (define-extern probe-traverse-inline-array-node (function drawable-inline-array-node int none)) (define-extern probe-traverse-draw-node (function draw-node int none)) (define-extern creates-new-method? (function type int symbol)) -(define-extern overrides-parent-method? (function type type symbol)) +(define-extern overrides-parent-method? (function type int symbol)) (define-extern describe-methods (function type symbol)) -(define-extern probe-traverse-collide-fragment (function collide-fragment int none)) +(define-extern probe-traverse-collide-fragment (function drawable-tree-collide-fragment int none)) (define-extern print-out (function int object)) (define-extern collide-probe-instance-tie-collide-frags (function none)) ;; does nothing -(define-extern collide-probe-collide-fragment-tree-make-list (function drawable-tree-collide-fragment int symbol)) -(define-extern collide-probe-instance-tie-tree-make-list (function drawable-tree-instance-tie int int)) +(define-extern collide-probe-collide-fragment-tree-make-list (function drawable-tree-collide-fragment collide-list none)) +(define-extern collide-probe-instance-tie-tree-make-list (function drawable-tree-instance-tie collide-list int)) (define-extern collide-probe-make-list (function level collide-list none)) (define-extern misty-ambush-height-probe (function vector float float)) (define-extern pke-collide-test (function none)) ;; does nothing @@ -21446,7 +21508,7 @@ (define-extern projectile-collision-reaction (function collide-shape-moving collide-shape-intersect vector vector none)) (define-extern projectile-update-velocity-space-wars (function projectile none)) (define-extern find-nearest-attackable (function vector float uint uint vector float projectile)) ;; Whatever te search returns (match from search-info) -(define-extern find-ground-and-draw-shadow (function vector vector float uint process float float none)) +(define-extern find-ground-and-draw-shadow (function vector vector float collide-kind process float float none)) (define-extern spawn-projectile-blue (function target none)) ;; - Unknowns diff --git a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc index 700b9dbd16..a0050816f7 100644 --- a/decompiler/config/jak1_ntsc_black_label/hacks.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/hacks.jsonc @@ -254,6 +254,8 @@ "(method 23 collide-shape-prim-group)", // CFG "(method 42 collide-shape)", // CFG + "(method 12 collide-mesh)", + // process-drawable BUG "cspace-inspect-tree", "(method 19 process-drawable)", diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index de5aa84b96..506b745671 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -7559,5 +7559,25 @@ [[133, 138], "v1", "dma-packet"] ], + "collide-probe-collide-fragment-tree-make-list": [ + [5, "v1", "drawable-inline-array-node"] + ], + + "collide-probe-instance-tie-tree-make-list": [ + [[5,7], "v1", "drawable-inline-array-node"], + [[18,20], "v1", "drawable-inline-array-instance-tie"] + ], + + "collide-upload-vu0": [ + [16, "a0", "dma-packet"], + [17, "a0", "(pointer uint64)"] + ], + + "collide-probe-make-list": [ + [[20, 22], "v1", "drawable-inline-array-node"], + [[31, 33], "v1", "drawable-inline-array-instance-tie"], + [[47, 49], "v1", "drawable-inline-array-node"] + ], + "placeholder-do-not-add-below": [] } diff --git a/game/graphics/opengl_renderer/shaders/sky_blend.vert b/game/graphics/opengl_renderer/shaders/sky_blend.vert index 1868842f89..34196f706d 100644 --- a/game/graphics/opengl_renderer/shaders/sky_blend.vert +++ b/game/graphics/opengl_renderer/shaders/sky_blend.vert @@ -6,7 +6,5 @@ out vec3 tex_coord; void main() { gl_Position = vec4(position_in.x*2 -1, position_in.y*2-1, 0.0, 1.0); - // scissoring area adjust - gl_Position.y *= 512.0/448.0; tex_coord = position_in; } diff --git a/goal_src/engine/collide/collide-cache-h.gc b/goal_src/engine/collide/collide-cache-h.gc index 4acdecc6aa..d3cac4fa7c 100644 --- a/goal_src/engine/collide/collide-cache-h.gc +++ b/goal_src/engine/collide/collide-cache-h.gc @@ -9,22 +9,31 @@ (define-extern collide-cache-using-y-probe-test (function vector symbol)) (define-extern collide-cache-using-box-test (function vector symbol)) -;; DECOMP BEGINS + +;; The collide cache system tries to make collision queries faster by caching intermediate results. +;; Almost all collision operations are done by calling a method of the global *collide-cache*. +;; In cases where the collide cache does not have the data in its cache, it will fill itself +;; using the appropriate collision functions. + + +;;;;;;;;;;;;;;;;;;;;;;; +;; Collide Helpers +;;;;;;;;;;;;;;;;;;;;;;; (deftype collide-using-spheres-params (structure) - ((spheres (pointer sphere) :offset-assert 0) - (num-spheres uint32 :offset-assert 4) - (collide-with uint64 :offset-assert 8) - (proc process-drawable :offset-assert 16) - (ignore-pat uint32 :offset-assert 20) - (solid-only basic :offset-assert 24) + ((spheres (pointer sphere) :offset-assert 0) + (num-spheres uint32 :offset-assert 4) + (collide-with collide-kind :offset-assert 8) + (proc process-drawable :offset-assert 16) + (ignore-pat uint32 :offset-assert 20) + (solid-only basic :offset-assert 24) ) :method-count-assert 9 :size-assert #x1c :flag-assert #x90000001c ) - +;; primitive using sphere-sphere (deftype collide-puss-sphere (structure) ((bsphere sphere :inline :offset-assert 0) (bbox4w bounding-box4w :inline :offset-assert 16) @@ -51,7 +60,7 @@ ) ) - +;; primitive using y probe (deftype collide-puyp-work (structure) ((best-u float :offset-assert 0) (ignore-pat uint32 :offset-assert 4) @@ -64,11 +73,16 @@ :flag-assert #x900000030 ) +;;;;;;;;;;;;;;;;;;;;;;; +;; Main Cache Types +;;;;;;;;;;;;;;;;;;;;;;; +;; The triangles stored in the cache. +;; This is a common return type of collision queries. (deftype collide-cache-tri (structure) - ((vertex vector 3 :inline :offset-assert 0) - (pat uint32 :offset-assert 48) - (prim-index uint16 :offset-assert 52) + ((vertex vector 3 :inline :offset-assert 0) ;; actual locations + (pat pat-surface :offset-assert 48) ;; metadata about the surface of this tri + (prim-index uint16 :offset-assert 52) ;; in the collide-cache-prim list (user16 uint16 :offset-assert 54) (user32 uint32 2 :offset-assert 56) ) @@ -77,38 +91,40 @@ :flag-assert #x900000040 ) - +;; The primitives stored in the cache. +;; The "core" is extracted from the normal collide-shape-prim and placed inline here. (deftype collide-cache-prim (structure) ((prim-core collide-prim-core :inline :offset-assert 0) (ccache collide-cache :offset-assert 32) - (prim (pointer collide-shape-prim) :offset-assert 36) + (prim (pointer collide-shape-prim) :offset-assert 36) ;; really? maybe just plain prim. (first-tri uint16 :offset-assert 40) (num-tris uint16 :offset-assert 42) (unused uint8 4 :offset-assert 44) (world-sphere vector :inline :offset 0) - (collide-as uint64 :offset 16) - (action uint32 :offset 24) - (offense int8 :offset 28) + ;; overlays of the core + (collide-as collide-kind :offset 16) + (action collide-action :offset 24) + (offense collide-offense :offset 28) (prim-type int8 :offset 29) ) :method-count-assert 11 :size-assert #x30 :flag-assert #xb00000030 (:methods - (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 9) - (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 10) + (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float collide-action) float 9) + (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float collide-action) float 10) ) ) - +;; The actual cache! (deftype collide-cache (basic) ((num-tris int32 :offset-assert 4) (num-prims int32 :offset-assert 8) - (ignore-mask uint32 :offset-assert 12) + (ignore-mask uint32 :offset-assert 12) ;; pat? (proc process-drawable :offset-assert 16) (collide-box bounding-box :inline :offset-assert 32) (collide-box4w bounding-box4w :inline :offset-assert 64) - (collide-with uint64 :offset-assert 96) + (collide-with collide-kind :offset-assert 96) (prims collide-cache-prim 100 :inline :offset-assert 112) (tris collide-cache-tri 461 :inline :offset-assert 4912) ) @@ -119,20 +135,20 @@ (dummy-9 (_type_) none 9) (dummy-10 (_type_ vector vector float int process collide-tri-result int) float 10) (dummy-11 (_type_ collide-using-spheres-params) none 11) - (fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12) - (dummy-13 (_type_ bounding-box uint process-drawable uint) none 13) + (fill-and-probe-using-y-probe (_type_ vector float collide-kind process collide-tri-result uint) float 12) + (dummy-13 (_type_ bounding-box collide-kind process-drawable pat-surface) none 13) ;; uint is a pat mask. (dummy-14 (_type_ vector vector float int process int) none 14) (dummy-15 (_type_ collide-using-spheres-params) none 15) (dummy-16 (_type_ vector float uint process-drawable uint) none 16) (initialize (_type_) none 17) - (dummy-18 (_type_ vector vector float int collide-tri-result int) float 18) + (dummy-18 (_type_ vector vector float collide-kind collide-tri-result int) float 18) (probe-using-spheres (_type_) none 19) (dummy-20 (_type_ vector float uint collide-tri-result uint) float 20) - (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) + (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) ;; second functiom is method 28 (dummy-22 (_type_) none 22) (dummy-23 (_type_) none 23) (dummy-24 (_type_) none 24) - (dummy-25 (_type_ water-control) none 25) + (dummy-25 (_type_ water-control) none 25) ;; or whatever is from 152 in the process passed to 16 (dummy-26 (_type_) none 26) (dummy-27 (_type_) none 27) (dummy-28 (_type_) none 28) @@ -145,8 +161,8 @@ (deftype collide-list-item (structure) - ((mesh basic :offset-assert 0) - (inst basic :offset-assert 4) + ((mesh basic :offset-assert 0) ;; maybe collide frag + (inst basic :offset-assert 4) ;; tie collision? ) :method-count-assert 9 :size-assert #x8 diff --git a/goal_src/engine/collide/collide-edge-grab-h.gc b/goal_src/engine/collide/collide-edge-grab-h.gc index 27923fb54f..fd46297b02 100644 --- a/goal_src/engine/collide/collide-edge-grab-h.gc +++ b/goal_src/engine/collide/collide-edge-grab-h.gc @@ -5,6 +5,14 @@ ;; name in dgo: collide-edge-grab-h ;; dgos: GAME, ENGINE +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Edge Grab +;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; There is a specialized collision system for finding edge grabs +;; It doesn't participate in the collide shape system at all +;; It does use the main collide-cache. + (deftype edge-grab-info (structure) ((world-vertex vector 6 :inline :offset-assert 0) (local-vertex vector 6 :inline :offset-assert 96) diff --git a/goal_src/engine/collide/collide-frag-h.gc b/goal_src/engine/collide/collide-frag-h.gc index 9bb203e4ca..5bd5957d8f 100644 --- a/goal_src/engine/collide/collide-frag-h.gc +++ b/goal_src/engine/collide/collide-frag-h.gc @@ -5,10 +5,19 @@ ;; name in dgo: collide-frag-h ;; dgos: GAME, ENGINE +;;;;;;;;;;;;;;;;; +;; Collide Frag +;;;;;;;;;;;;;;;;; + +;; A collide fragment stores background collide data. +;; It's a drawable-tree, and it uses the familiar sphere BVH. +;; The actual "fragments" are in a weird packed format. + +;; This doesn't participate in the foreground collide shape system directly. + ; TODO - defined in drawable, but needed in collide-frag (define-extern sphere-cull (function vector symbol)) -;; definition of type collide-frag-vertex (deftype collide-frag-vertex (vector) () :method-count-assert 9 @@ -16,7 +25,6 @@ :flag-assert #x900000010 ) -;; definition of type collide-frag-mesh (deftype collide-frag-mesh (basic) ((packed-data uint32 :offset-assert 4) (pat-array uint32 :offset-assert 8) @@ -33,7 +41,6 @@ :flag-assert #x900000020 ) -;; definition of type collide-fragment (deftype collide-fragment (drawable) ((mesh collide-frag-mesh :offset 8) ) @@ -42,7 +49,6 @@ :flag-assert #x1200000020 ) -;; definition of type drawable-inline-array-collide-fragment (deftype drawable-inline-array-collide-fragment (drawable-inline-array) ((data collide-fragment 1 :inline :offset-assert 32) (pad uint32 :offset-assert 64) @@ -52,10 +58,9 @@ :flag-assert #x1200000044 ) -;; definition of type drawable-tree-collide-fragment (deftype drawable-tree-collide-fragment (drawable-tree) - () - :method-count-assert 18 - :size-assert #x24 - :flag-assert #x1200000024 - ) + ((data-override drawable-inline-array :offset 32)) + :method-count-assert #x12 + :size-assert #x24 + :flag-assert #x1200000024 + ) \ No newline at end of file diff --git a/goal_src/engine/collide/collide-frag.gc b/goal_src/engine/collide/collide-frag.gc index b5659a4c39..a9703339dc 100644 --- a/goal_src/engine/collide/collide-frag.gc +++ b/goal_src/engine/collide/collide-frag.gc @@ -5,13 +5,15 @@ ;; name in dgo: collide-frag ;; dgos: GAME, ENGINE -;; definition for method 9 of type drawable-tree-collide-fragment + +;; This file contains the drawable-tree implementation for collide-fragment + (defmethod login drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment)) obj ) -;; definition for method 10 of type drawable-tree-collide-fragment (defmethod draw drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 drawable-tree-collide-fragment) (arg1 display-frame)) + "Note: this doesn't do anything (sadly)" (when *display-render-collision* (dotimes (s4-0 (-> obj length)) (draw (-> obj data s4-0) (-> obj data s4-0) arg1) @@ -20,8 +22,8 @@ (none) ) -;; definition for method 16 of type drawable-tree-collide-fragment (defmethod unpack-vis drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 (pointer int8)) (arg1 (pointer int8))) + "We don't use vis, so just return the input." arg1 ) @@ -43,72 +45,47 @@ (none) ) -;; definition for method 8 of type collide-fragment -;; INFO: Return type mismatch int vs collide-fragment. -(defmethod - mem-usage - collide-fragment - ((obj collide-fragment) (arg0 memory-usage-block) (arg1 int)) - (let ((s5-0 (if (nonzero? (logand arg1 1)) - 53 - 50 - ) - ) +(defmethod mem-usage collide-fragment ((obj collide-fragment) (arg0 memory-usage-block) (arg1 int)) + (let ((s5-0 (if (logtest? arg1 1) + 53 + 50 + ) + ) (s4-0 (-> obj mesh)) ) - (set! (-> arg0 data s5-0 name) (symbol->string 'collide-fragment)) - (set! (-> arg0 data s5-0 count) (+ (-> arg0 data s5-0 count) 1)) - (let ((v1-11 (+ (asize-of obj) (asize-of s4-0)))) - (set! (-> arg0 data s5-0 used) (+ (-> arg0 data s5-0 used) v1-11)) - (set! - (-> arg0 data s5-0 total) - (+ (-> arg0 data s5-0 total) (logand -16 (+ v1-11 15))) - ) + (set! (-> arg0 data s5-0 name) (symbol->string 'collide-fragment)) + (+! (-> arg0 data s5-0 count) 1) + (let ((v1-11 (+ (asize-of obj) (asize-of s4-0)))) + (+! (-> arg0 data s5-0 used) v1-11) + (+! (-> arg0 data s5-0 total) (logand -16 (+ v1-11 15))) + ) + (set! (-> arg0 data (+ s5-0 1) name) "collision-poly") + (+! (-> arg0 data (+ s5-0 1) count) (-> s4-0 poly-count)) + (let ((v1-22 (+ (-> s4-0 strip-data-len) (-> s4-0 poly-count)))) + (+! (-> arg0 data (+ s5-0 1) used) v1-22) + (+! (-> arg0 data (+ s5-0 1) total) v1-22) + ) + (set! (-> arg0 data (+ s5-0 2) name) "collision-vertex") + (+! (-> arg0 data (+ s5-0 2) count) (-> s4-0 vertex-count)) + (let ((v1-31 (* (-> s4-0 vertex-data-qwc) 16))) + (+! (-> arg0 data (+ s5-0 2) used) v1-31) + (let ((v0-2 (+ (-> arg0 data (+ s5-0 2) total) v1-31))) + (set! (-> arg0 data (+ s5-0 2) total) v0-2) + (the-as collide-fragment v0-2) + ) + ) ) - (set! (-> arg0 data (+ s5-0 1) name) "collision-poly") - (set! - (-> arg0 data (+ s5-0 1) count) - (+ (-> arg0 data (+ s5-0 1) count) (the-as int (-> s4-0 poly-count))) - ) - (let ((v1-22 (+ (-> s4-0 strip-data-len) (-> s4-0 poly-count)))) - (set! - (-> arg0 data (+ s5-0 1) used) - (+ (-> arg0 data (+ s5-0 1) used) (the-as int v1-22)) - ) - (set! - (-> arg0 data (+ s5-0 1) total) - (+ (-> arg0 data (+ s5-0 1) total) (the-as int v1-22)) - ) - ) - (set! (-> arg0 data (+ s5-0 2) name) "collision-vertex") - (set! - (-> arg0 data (+ s5-0 2) count) - (+ (-> arg0 data (+ s5-0 2) count) (the-as int (-> s4-0 vertex-count))) - ) - (let ((v1-31 (* (-> s4-0 vertex-data-qwc) 16))) - (set! - (-> arg0 data (+ s5-0 2) used) - (+ (-> arg0 data (+ s5-0 2) used) (the-as int v1-31)) - ) - (let ((v0-2 (+ (-> arg0 data (+ s5-0 2) total) (the-as int v1-31)))) - (set! (-> arg0 data (+ s5-0 2) total) v0-2) - (the-as collide-fragment v0-2) - ) - ) - ) ) -;; definition for method 9 of type drawable-inline-array-collide-fragment (defmethod login drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment)) obj ) -;; definition for method 10 of type collide-fragment (defmethod draw collide-fragment ((obj collide-fragment) (arg0 collide-fragment) (arg1 display-frame)) + ;; if we wanted to draw collide-fragment's we'd do it here. (none) ) -;; definition for method 10 of type drawable-inline-array-collide-fragment (defmethod draw drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 drawable-inline-array-collide-fragment) (arg1 display-frame)) (dotimes (s4-0 (-> obj length)) (let ((s3-0 (-> obj data s4-0))) @@ -120,49 +97,33 @@ (none) ) -;; definition for method 11 of type drawable-inline-array-collide-fragment -;; INFO: Return type mismatch int vs none. (defmethod collide-with-box drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-with-box (the-as collide-fragment (-> obj data)) (-> obj length) arg1) 0 (none) ) -;; definition for method 12 of type drawable-inline-array-collide-fragment -;; INFO: Return type mismatch int vs none. (defmethod collide-y-probe drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-y-probe (the-as collide-fragment (-> obj data)) (-> obj length) arg1) 0 (none) ) -;; definition for method 13 of type drawable-inline-array-collide-fragment -;; INFO: Return type mismatch int vs collide-list. (defmethod collide-ray drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 int) (arg1 collide-list)) (collide-ray (the-as collide-fragment (-> obj data)) (-> obj length) arg1) (none) ) -;; definition for method 8 of type drawable-inline-array-collide-fragment -(defmethod - mem-usage - drawable-inline-array-collide-fragment - ((obj drawable-inline-array-collide-fragment) - (arg0 memory-usage-block) - (arg1 int) - ) +(defmethod mem-usage drawable-inline-array-collide-fragment ((obj drawable-inline-array-collide-fragment) (arg0 memory-usage-block) (arg1 int)) (set! (-> arg0 length) (max 1 (-> arg0 length))) (set! (-> arg0 data 0 name) (symbol->string 'drawable-group)) - (set! (-> arg0 data 0 count) (+ (-> arg0 data 0 count) 1)) + (+! (-> arg0 data 0 count) 1) (let ((v1-7 32)) - (set! (-> arg0 data 0 used) (+ (-> arg0 data 0 used) v1-7)) - (set! - (-> arg0 data 0 total) - (+ (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) + (+! (-> arg0 data 0 used) v1-7) + (+! (-> arg0 data 0 total) (logand -16 (+ v1-7 15))) ) - ) (dotimes (s3-0 (-> obj length)) - (mem-usage (-> obj data s3-0) arg0 arg1) - ) + (mem-usage (-> obj data s3-0) arg0 arg1) + ) obj ) diff --git a/goal_src/engine/collide/collide-mesh-h.gc b/goal_src/engine/collide/collide-mesh-h.gc index 926dce91f9..b53e1dfc45 100644 --- a/goal_src/engine/collide/collide-mesh-h.gc +++ b/goal_src/engine/collide/collide-mesh-h.gc @@ -5,6 +5,14 @@ ;; name in dgo: collide-mesh-h ;; dgos: GAME, ENGINE +;; The collide-mesh system is used for _moving_ meshes, like a platform. +;; It's not used for the full level (that's collide-frag-mesh) + +;;;;;;;;;;;;;;;;;;;; +;; result +;;;;;;;;;;;;;;;;;;;; + +;; The triangle involved in collision (deftype collide-tri-result (structure) ((vertex vector 3 :inline :offset-assert 0) (intersect vector :inline :offset-assert 48) @@ -16,6 +24,13 @@ :flag-assert #x900000054 ) +;;;;;;;;;;;;;;;;;;;; +;; static mesh data +;;;;;;;;;;;;;;;;;;;; + +;; A triangle, part of the collision mesh. +;; The vertex indices index into the collide-mesh vertex-data array. +;; Due to using uint8's you only get 256 vertices. (deftype collide-mesh-tri (structure) ((vertex-index uint8 3 :offset-assert 0) (unused uint8 :offset-assert 3) @@ -28,6 +43,8 @@ ) (declare-type collide-mesh-cache-tri structure) + +;; A collision mesh. Note that's it's bound to a specific joint. (deftype collide-mesh (basic) ((joint-id int32 :offset-assert 4) (num-tris uint32 :offset-assert 8) @@ -49,6 +66,13 @@ ) ) + +;;;;;;;;;;;;;;;;;;;; +;; cache +;;;;;;;;;;;;;;;;;;;; + +;; the use of the cache is currently unknown. + (defconstant COLLIDE_MESH_CACHE_SIZE #xa000) (deftype collide-mesh-cache (basic) @@ -94,6 +118,7 @@ (= (-> obj id) arg0) ) +;; possibly this is stored in the data of the collide-mesh-cache (deftype collide-mesh-cache-tri (structure) ((vertex vector 3 :inline :offset-assert 0) (normal vector :inline :offset-assert 48) diff --git a/goal_src/engine/collide/collide-probe.gc b/goal_src/engine/collide/collide-probe.gc index 04da58ef5e..cd5a9224ca 100644 --- a/goal_src/engine/collide/collide-probe.gc +++ b/goal_src/engine/collide/collide-probe.gc @@ -5,66 +5,389 @@ ;; name in dgo: collide-probe ;; dgos: GAME, ENGINE +;; The "collision probe" checks to see what the first triangle is in a given direction. +;; This is an annoying and expensive thing to compute, so this is complicated. +;; Generally, this is used for the "using y probe" methods which find the ground beneath a thing. -(defun - interpolate - ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) - (let ((f0-1 (- arg3 arg1)) - (f1-2 (- arg4 arg2)) - (f3-1 (- arg0 arg1)) - ) - (+ arg2 (/ (* f3-1 f1-2) f0-1)) - ) +;;;;;;;;;;;;;;;;;;;;;;;; +;; Method Debug +;;;;;;;;;;;;;;;;;;;;;;;; + +;; unused functions for figuring out where a method comes from. + +(defun creates-new-method? ((arg0 type) (arg1 int)) + "Is the method with the given ID in the given type a new method for this type?" + ;; does our parent have it? + (let ((v1-1 (-> arg0 parent allocated-length))) + (-> arg0 allocated-length) + (>= arg1 (the-as int v1-1)) + ) ) +(defun overrides-parent-method? ((arg0 type) (arg1 int)) + "Does the method with the given ID in the given type override a method of its parent?" + (!= (-> arg0 method-table arg1) (-> arg0 parent method-table arg1)) + ) + +(defun describe-methods ((arg0 type)) + "Print information about the methods of a type." + (let ((s5-0 (-> arg0 allocated-length))) + (dotimes (s4-0 (the-as int s5-0)) + (let ((s3-0 arg0)) + (format #t "~3d:~%" s4-0) + (while (!= s3-0 basic) + (cond + ((creates-new-method? s3-0 s4-0) + (format #t " created by ~s.~%" (symbol->string (-> s3-0 symbol))) + (set! s3-0 basic) + ) + ((overrides-parent-method? s3-0 s4-0) + (format #t " overridden by ~s.~%" (symbol->string (-> s3-0 symbol))) + (set! s3-0 (-> s3-0 parent)) + ) + (else + (set! s3-0 (-> s3-0 parent)) + ) + ) + ) + ) + ) + ) + #f + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Collide Fragment Debug +;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; unused debug functions for printing out info about a collide fragment tree. +(defun indent-to ((arg0 int)) + "Print out arg0 spaces" + (dotimes (s5-0 arg0) + (format #t " ") + ) + (none) + ) + +(defun-recursive probe-traverse-draw-node none ((arg0 draw-node) (arg1 int)) + "Print out info for a draw node, and recursively its children. They forgot to finish this one." + (indent-to arg1) + (format #t "[~08x] child-count: ~d, flags: ~d, dist: ~f, child: ~a~%" + arg0 + (-> arg0 child-count) + (-> arg0 flags) + (-> arg0 distance) + (-> arg0 child) + ) + (cond + ((nonzero? (-> arg0 flags)) + (let ((s4-0 (-> arg0 child))) + (dotimes (s3-0 (the-as int (-> arg0 child-count))) + (probe-traverse-draw-node (the-as draw-node (+ (the-as uint s4-0) (* s3-0 32))) (+ arg1 1)) + ) + ) + ) + (else + ;; we hit the leaves. + ) + ) + 0 + (none) + ) + +(defun probe-traverse-inline-array-node ((arg0 drawable-inline-array-node) (arg1 int)) + "Print out a drawable-inline-array-node, and recursively all children" + (indent-to arg1) + (format #t "[~08x] drawable-inline-array-node: length = ~d~%" arg0 (-> arg0 length)) + (let ((s4-0 (-> arg0 length))) + (dotimes (s3-0 s4-0) + (indent-to arg1) + (format #t "(~3d) ~a~%" s3-0 (-> arg0 data s3-0)) + (if (= (-> arg0 data s3-0 type) draw-node) + (probe-traverse-draw-node (-> arg0 data s3-0) (+ arg1 1)) + ) + ) + ) + (none) + ) + +(defun probe-traverse-collide-fragment ((arg0 drawable-tree-collide-fragment) (arg1 int)) + "Print out all levels of a drawabl-tree-collide-fragment." + (indent-to arg1) + (format #t "[~08x] drawable-tree-collide-fragment: length = ~d~%" arg0 (-> arg0 length)) + (let ((s4-0 (-> arg0 length))) + (dotimes (s3-0 (+ s4-0 -1)) + (indent-to arg1) + (if (= (-> arg0 data s3-0 type) drawable-inline-array-node) + (probe-traverse-inline-array-node (the-as drawable-inline-array-node (-> arg0 data s3-0)) (+ arg1 1)) + (format #t "unknown: ~a~%" (-> arg0 data s3-0)) + ) + ) + ) + (none) + ) + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Collide Probe Implementation +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(deftype collide-probe-stack-elem (structure) + ((child uint32 :offset-assert 0) + (count uint32 :offset-assert 4) + ) + :method-count-assert 9 + :size-assert #x8 + :flag-assert #x900000008 + ) + +(deftype collide-probe-stack (structure) + ((data collide-probe-stack-elem 1024 :inline :offset-assert 0) + ) + :method-count-assert 9 + :size-assert #x4000 + :flag-assert #x900004000 + ) + +(define *collide-probe-stack* (the-as pointer (+ 4192 #x70000000))) + +(define collide-vu0-block (the-as vu-function 0)) + +;; TODO: the actual collide-probe-node function. +(define-extern collide-probe-node (function (inline-array draw-node) int collide-list int)) + +(defun print-out ((arg0 int)) + (format *stdcon* "~d~%" arg0) + ) + +(defun collide-probe-instance-tie-collide-frags () + 0 + (none) + ) + +;; collide-probe-instance-tie +(define-extern collide-probe-instance-tie (function object int collide-list int int)) ;; drawable is either an instance-tie or a draw-node inline arrary + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Collide Probe Setup/Wrappers +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +(defun collide-probe-collide-fragment-tree-make-list ((arg0 drawable-tree-collide-fragment) (arg1 collide-list)) + "Given a collide fragment tree, make a list. + Note: you _must_ have more than 8 collide fragments, so you have more than 1 level in the tree." + (cond + ((< 1 (-> arg0 length)) + (let ((v1-1 (-> arg0 data-override))) + (collide-probe-node (-> (the-as drawable-inline-array-node v1-1) data) (-> v1-1 length) arg1) + ) + ) + (else + ;; only 1 level in the tree. this is unsupported. + ) + ) + 0 + (none) + ) + +(defun collide-probe-instance-tie-tree-make-list ((arg0 drawable-tree-instance-tie) (arg1 collide-list)) + "Given a TIE instance tree, make a list. + Unlike tfrag, they explicitly support the < 8 node case" + (cond + ((< 1 (-> arg0 length)) + (let ((v1-2 (-> arg0 data 0))) + (collide-probe-instance-tie + (-> (the-as drawable-inline-array-node v1-2) data) + (-> (the-as drawable-inline-array-node v1-2) length) + arg1 + 1 + ) + ) + ) + ((= (-> arg0 length) 1) + ;; between 1 and 8. Set flag 0 to indicate that we are using instance ties. + (let ((v1-7 (-> arg0 data 0))) + (collide-probe-instance-tie + (-> (the-as drawable-inline-array-instance-tie v1-7) data) + (-> (the-as drawable-inline-array-instance-tie v1-7) length) + arg1 + 0 + ) + ) + ) + ) + 0 + ) + +(defun collide-upload-vu0 () + "Upload the probe program to VU0." + (let ((gp-0 *vu0-dma-list*)) + ;; reset the buffer + (let ((v1-0 gp-0)) + (set! (-> v1-0 base) (-> v1-0 data)) + (set! (-> v1-0 end) (&-> v1-0 data-buffer (-> v1-0 allocated-length))) + ) + ;; upload the function dma + (dma-buffer-add-vu-function gp-0 collide-vu0-block 0) + + ;; end dma chain + (let* ((v1-1 gp-0) + (a0-5 (the-as object (-> v1-1 base))) + ) + (set! (-> (the-as dma-packet a0-5) dma) (new 'static 'dma-tag :id (dma-tag-id end))) + (set! (-> (the-as (pointer uint64) a0-5) 1) (the-as uint 0)) + (set! (-> v1-1 base) (&+ (the-as pointer a0-5) 16)) + ) + + ;; go! + (.sync.l) + (dma-buffer-send-chain (the-as dma-bank-source #x10008000) gp-0) + ) + 0 + (none) + ) + +;; main collide probe function: + +(defun collide-probe-make-list ((arg0 level) (arg1 collide-list)) + "Run the probe algorithm on an entire level." + (let ((s5-0 (-> arg0 bsp))) + 0 + ;; load vu0 program + (collide-upload-vu0) + + ;; iterate over trees + (let ((s5-1 (-> s5-0 drawable-trees))) + (dotimes (s4-0 (-> s5-1 length)) + (let ((v1-3 (-> s5-1 trees s4-0))) + (cond + ((= (-> v1-3 type) drawable-tree-instance-tie) + ;; collide with tie instances + (let ((a2-0 arg1)) + (cond + ((< 1 (-> v1-3 length)) + (let ((v1-4 (-> v1-3 data 0))) + (collide-probe-instance-tie + (-> (the-as drawable-inline-array-node v1-4) data) + (-> (the-as drawable-inline-array-node v1-4) length) + a2-0 + 1 + ) + ) + ) + ((= (-> v1-3 length) 1) + (let ((v1-6 (-> v1-3 data 0))) + (collide-probe-instance-tie + (-> (the-as drawable-inline-array-instance-tie v1-6) data) + (-> (the-as drawable-inline-array-instance-tie v1-6) length) + a2-0 + 0 + ) + ) + ) + ) + ) + 0 + ) + ((= (-> v1-3 type) drawable-tree-collide-fragment) + ;; collide with tfrags + (let ((a2-1 arg1)) + (cond + ((< 1 (-> v1-3 length)) + (let ((v1-9 (-> v1-3 data 0))) + (collide-probe-node + (-> (the-as drawable-inline-array-node v1-9) data) + (-> (the-as drawable-inline-array-node v1-9) length) + a2-1 + ) + ) + ) + (else + ) + ) + ) + 0 + ) + (else + ) + ) + ) + ) + ) + ) + (none) + ) + +;;;;;;;;;;;;;;;;;;; +;; Hacks +;;;;;;;;;;;;;;;;;;; + +;; I guess collision with the ground during the misty ambush was too slow, so they wrote this hack. + (defun distc ((arg0 vector) (arg1 vector)) (let* ((f0-1 (- (-> arg0 x) (-> arg1 x))) (f0-3 (* f0-1 f0-1)) (f1-2 (- (-> arg0 z) (-> arg1 z))) ) - (sqrtf (+ f0-3 (* f1-2 f1-2))) - ) + (sqrtf (+ f0-3 (* f1-2 f1-2))) + ) + ) + +(defun interpolate ((arg0 float) (arg1 float) (arg2 float) (arg3 float) (arg4 float)) + (let ((f0-1 (- arg3 arg1)) + (f1-2 (- arg4 arg2)) + (f3-1 (- arg0 arg1)) + ) + (+ arg2 (/ (* f3-1 f1-2) f0-1)) + ) ) (defun misty-ambush-height ((arg0 vector)) (let* ((a1-0 (new 'static 'vector :x -808960.0 :y 111656.96 :z 3924992.0)) (f0-0 (distc arg0 a1-0)) ) - (cond - ((< f0-0 52019.2) - 111656.96 - ) - ((>= 58982.4 f0-0) - (interpolate f0-0 52019.2 111656.96 58982.4 116776.96) - ) - ((>= 124436.48 f0-0) - (interpolate f0-0 58982.4 116776.96 124436.48 114688.0) - ) - ((>= 219217.92 f0-0) - (interpolate f0-0 124436.48 114688.0 219217.92 113254.4) - ) - (else - 113254.4 - ) + (cond + ((< f0-0 52019.2) + 111656.96 + ) + ((>= 58982.4 f0-0) + (interpolate f0-0 52019.2 111656.96 58982.4 116776.96) + ) + ((>= 124436.48 f0-0) + (interpolate f0-0 58982.4 116776.96 124436.48 114688.0) + ) + ((>= 219217.92 f0-0) + (interpolate f0-0 124436.48 114688.0 219217.92 113254.4) + ) + (else + 113254.4 + ) + ) ) - ) ) (defun misty-ambush-height-probe ((arg0 vector) (arg1 float)) + "Hack to manually compute the ground height in misty ambush." (let ((f0-0 (misty-ambush-height arg0))) - (cond - ((< f0-0 (-> arg0 y)) - (/ (- (-> arg0 y) f0-0) arg1) - ) - (else - (format - 0 - "WARNING: ~%height = ~f, pos.y = ~f" - (* 0.00024414062 f0-0) - (* 0.00024414062 (-> arg0 y)) + (cond + ((< f0-0 (-> arg0 y)) + (/ (- (-> arg0 y) f0-0) arg1) + ) + (else + (format 0 "WARNING: ~%height = ~f, pos.y = ~f" (* 0.00024414062 f0-0) (* 0.00024414062 (-> arg0 y))) + -1.0 + ) ) - -1.0 - ) ) - ) - ) \ No newline at end of file + ) + +(defun pke-collide-test () + 0 + (none) + ) + + + + diff --git a/goal_src/engine/collide/collide-shape-h.gc b/goal_src/engine/collide/collide-shape-h.gc index b72a75abe5..3dd11ca90e 100644 --- a/goal_src/engine/collide/collide-shape-h.gc +++ b/goal_src/engine/collide/collide-shape-h.gc @@ -5,11 +5,25 @@ ;; name in dgo: collide-shape-h ;; dgos: GAME, ENGINE -(declare-type touching-list structure) +;; What is collide-shape? +;; A collide shape is a group of collision geometry. Typically, each actor will have a single collide shape. +;; Each collide shape may contain a number of collide-shape-prim's. +;; There are many subclasses of collide-shape-prim for different types of collision primitives. +;; Some subclasses can contain multiple collide-shape-prims. + +(declare-type touching-list structure) (declare-type collide-shape-prim basic) -;; Represents a collision between the "rider" (zoomer?) and a primitive shape. -;; collisions are "sticky", meaning these structures stick around. + +;;;;;;;;;;;;;;;;;;; +;; Sticky Rider +;;;;;;;;;;;;;;;;;;; + +;; Rider: thing which rides on a moving thing. For example, Jak is a rider of the platforms. +;; Sticky: when you hit the platform, your velocity immediately changes to match the thing. +;; like when Jak lands on a platform. + + (deftype collide-sticky-rider (structure) ((rider-handle handle :offset-assert 0) (sticky-prim collide-shape-prim :offset-assert 8) @@ -20,8 +34,8 @@ :size-assert #x20 :flag-assert #xa00000020 (:methods - (set-rider! (_type_ handle) symbol 9) - ) + (set-rider! (_type_ handle) symbol 9) + ) ) (defmethod set-rider! collide-sticky-rider ((obj collide-sticky-rider) (arg0 handle)) @@ -32,7 +46,7 @@ ) ;; A collection of collide-sticky-riders -;; dynamic type. I think there's one collide-sticky-rider per rider? +;; dynamic type. There's one collide-sticky-rider per rider. (deftype collide-sticky-rider-group (basic) ((num-riders int32 :offset-assert 4) (allocated-riders int32 :offset-assert 8) @@ -42,10 +56,10 @@ :size-assert #x30 :flag-assert #xb00000030 (:methods - (new (symbol type int) _type_ 0) + (new (symbol type int) _type_ 0) (add-rider! (_type_ process-drawable) collide-sticky-rider 9) - (reset! (_type_) int 10) - ) + (reset! (_type_) int 10) + ) ) (defmethod reset! collide-sticky-rider-group ((obj collide-sticky-rider-group)) @@ -54,9 +68,11 @@ 0 ) +;; The rider will be pulled along by the object. +;; This includes possibly rotating the rider (if the platform spins, it spins Jak too). (deftype pull-rider-info (structure) ((rider collide-sticky-rider :offset-assert 0) - (rider-cshape collide-shape-prim :offset-assert 4) + (rider-cshape collide-shape-prim :offset-assert 4) ;; maybe just collide-shape (rider-delta-ry float :offset-assert 8) (rider-dest vector :inline :offset-assert 16) ) @@ -65,12 +81,20 @@ :flag-assert #x900000020 ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Collision Result +;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; Most general collision result from colliding two collide shapes +;; this computes a "move-vec" and "u". If you move along "move-vec" by "u", you will move out of collsion. +;; It also tells you which primitives are colliding. (deftype collide-shape-intersect (basic) ((move-vec vector :inline :offset-assert 16) (best-u float :offset-assert 32) (best-tri collide-tri-result :inline :offset-assert 48) - (best-from-prim collide-shape-prim :offset-assert 132) - (best-to-prim collide-shape-prim :offset-assert 136) + (best-from-prim collide-shape-prim :offset-assert 132) + (best-to-prim collide-shape-prim :offset-assert 136) ) :method-count-assert 10 :size-assert #x8c @@ -80,10 +104,11 @@ ) ) +;; Collision with just overlap distance, no vector. (deftype collide-overlap-result (structure) ((best-dist float :offset-assert 0) - (best-from-prim collide-shape-prim :offset-assert 4) - (best-to-prim collide-shape-prim :offset-assert 8) + (best-from-prim collide-shape-prim :offset-assert 4) + (best-to-prim collide-shape-prim :offset-assert 8) (best-from-tri collide-tri-result :inline :offset-assert 16) ) :method-count-assert 10 @@ -103,6 +128,13 @@ (none) ) +;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Touching System +;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; I believe this overlaps-others-params is used to do checks like "is enemy in range of attack". +;; but this isn't well understood yet + (deftype overlaps-others-params (structure) ((options uint32 :offset-assert 0) (tlist touching-list :offset-assert 4) @@ -113,20 +145,94 @@ ) ;; The engine system is used to link collision checks with processes. +;; This allows you to have lists of processes where the process will remove itself when it dies. (define *collide-hit-by-player-list* (new 'global 'engine 'collide-hit-by-player-list 768)) (define *collide-usually-hit-by-player-list* (new 'global 'engine 'collide-usually-hit-by-player-list 256)) (define *collide-hit-by-others-list* (new 'global 'engine 'collide-hit-by-others-list 96)) (define *collide-player-list* (new 'global 'engine 'collide-player-list 32)) -;; some parts of collide-shape-prim are broken out here. +(defenum collide-list-enum + (hit-by-player) + (usually-hit-by-player) + (hit-by-others) + (player) + ) + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Collision Primitive Base +;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; These are the settings that can be set per primtive. + + +(defenum collide-kind + :type uint64 + :bitfield #t + (background 0) + (cak-1 1) ;; + (cak-2 2) + (cak-3 3) + (target 4) ;; target + (water 5) + (powerup 6) + (crate 7) + (enemy 8) ;; also used for powerups + (wall-object 9) ;; also object. door, pusher (blockers?) + (projectile 10) + (ground-object 11) ;; object, like darkecobarray, platforms + (target-attack 12) ;; all target attacks + (mother-spider 13) + (cak-14 14) ;; unused + (blue-eco-suck 15) ;; manipy, orb-cache-top, + ) + +(defenum collide-action + :type uint32 + :bitfield #t + (solid 0) + (ca-1 1) ;; sticky? + (ca-2 2) ;; target? + (ca-3 3) ;; edge grab related + (ca-4 4) + (ca-5 5) ;; unused? + (ca-6 6) ;; swing pole, manipy + (ca-7 7) ;; camera + (ca-8 8) ;; swingpole + (ca-9 9) ;; eco vents? + (ca-10 10) + (ca-11 11) + (ca-12 12) + (ca-13 13) + (ca-14 14) + (ca-15 15) ;; manipy + (ca-16 16) + ) + +;; this field is a bit confusing. you have to have a higher offense to win against an object. +;; so a normal crate has an offense of 1, meaning you have to do _more_ than just touch it to go through it. +;; a scout fly crate has 2, so you have to do _more_ than an normal attack. +;; This system is _only_ for going through objects - there's more logic for deciding if you can break it. +(defenum collide-offense + :type int8 + (no-offense 0) + (touch 1) ;; just have to touch + (normal-attack 2) ;; any attack (like a normal crate) + (strong-attack 3) ;; hit with zoomer, slide, ground pound/flop, flut attack + (indestructible 4) ;; can't attack it. + ) + + +;; Every primitive has a prim-core. +;; this is a 32-byte chunk of data that can be pulled out an put in collide caches +;; it stores the transformed world sphere and the collision settings (deftype collide-prim-core (structure) - ((world-sphere vector :inline :offset-assert 0) - (collide-as uint64 :offset-assert 16) - (action uint32 :offset-assert 24) - (offense int8 :offset-assert 28) - (prim-type int8 :offset-assert 29) - (extra uint8 2 :offset-assert 30) - (quad uint128 2 :offset 0) + ((world-sphere vector :inline :offset-assert 0) + (collide-as collide-kind :offset-assert 16) ;; what are we (enemy, etc) + (action collide-action :offset-assert 24) ;; what happens if we collide (physics) + (offense collide-offense :offset-assert 28) ;; how hard to we have to hit it? (touch, attack...) + (prim-type int8 :offset-assert 29) ;; what type of primtive do we belong to? + (extra uint8 2 :offset-assert 30) + (quad uint128 2 :offset 0) ) :method-count-assert 9 :size-assert #x20 @@ -137,16 +243,18 @@ (declare-type collide-cache-prim structure) ;; the base class for collision shapes. (deftype collide-shape-prim (basic) - ((cshape collide-shape :offset-assert 4) - (prim-id uint32 :offset-assert 8) - (transform-index int8 :offset-assert 12) - (prim-core collide-prim-core :inline :offset-assert 16) - (local-sphere vector :inline :offset-assert 48) - (collide-with uint64 :offset-assert 64) + ((cshape collide-shape :offset-assert 4) ;; our parent collide-shape + (prim-id uint32 :offset-assert 8) ;; ? + (transform-index int8 :offset-assert 12) ;; ? + (prim-core collide-prim-core :inline :offset-assert 16) ;; core data + (local-sphere vector :inline :offset-assert 48) ;; sphere, pre transform + (collide-with collide-kind :offset-assert 64) ;; things we can collide with + + ;; overlays of core. (world-sphere vector :inline :offset 16) - (collide-as uint64 :offset 32) - (action uint32 :offset 40) - (offense int8 :offset 44) + (collide-as collide-kind :offset 32) + (action collide-action :offset 40) + (offense collide-offense :offset 44) (prim-type int8 :offset 45) (radius meters :offset 60) ) @@ -166,19 +274,28 @@ (dummy-17 () none 17) (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none 18) (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none 19) - (dummy-20 (_type_ uint) symbol 20) + (dummy-20 (_type_ collide-kind) symbol 20) (num-mesh (_type_ collide-shape-prim) int 21) (on-platform-test (_type_ _type_ collide-overlap-result float) pat-surface 22) (should-push-away-test () none 23) (dummy-24 () none 24) (dummy-25 (_type_ process-drawable) symbol 25) - (set-collide-as! (_type_ handle) none 26) - (set-collide-with! (_type_ handle) none 27) + (set-collide-as! (_type_ collide-kind) none 26) + (set-collide-with! (_type_ collide-kind) none 27) ) ) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Specific Collision Implementation +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; generally, these store enough information to tell if you're in collision or not, +;; and if so, what the "pat" is. The meaning of "pat" is unknown, but it's a 32-bit +;; packed data that tells you the material/mode. + ;; sphere collision ;; the pat is stored directly here. +;; I believe the "local sphere" is used as the sphere. (deftype collide-shape-prim-sphere (collide-shape-prim) ((pat pat-surface :offset-assert 72) ) @@ -192,6 +309,8 @@ ;; mesh collision ;; the pats are stored per tri in the mesh. +;; These meshes interact with a cache automatically (a specific collide-shape-prim-mesh cache, not the +;; more general collide-cache) (deftype collide-shape-prim-mesh (collide-shape-prim) ((mesh collide-mesh :offset-assert 72) (mesh-id int32 :offset-assert 76) @@ -224,17 +343,21 @@ ) ) -(defenum collide-list-enum - (hit-by-player) - (usually-hit-by-player) - (hit-by-others) - (player) - ) +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Collide Shape +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +;; This is sort of the "parent" of all collide prims for a process-drawable. +;; Each process-drawable (pd) should have one collide-shape, which is often the root. +;; It represents: +;; - the location of the thing in hte world +;; - settings abouts collision/navigation +;; - riders (declare-type collide-work structure) (declare-type touching-shapes-entry structure) -;; an actual instance of a collision primitive. -;; it's based on a transform (q means quaternion, v means with derivatives) + +;; we're a child of trsqv, so we store a full transform + derivative. (deftype collide-shape (trsqv) ((process process-drawable :offset-assert 140) (max-iteration-count uint8 :offset-assert 144) @@ -245,8 +368,8 @@ (event-other basic :offset-assert 156) (root-prim collide-shape-prim :offset-assert 160) (riders collide-sticky-rider-group :offset-assert 164) - (backup-collide-as uint64 :offset-assert 168) - (backup-collide-with uint64 :offset-assert 176) + (backup-collide-as collide-kind :offset-assert 168) + (backup-collide-with collide-kind :offset-assert 176) ) :method-count-assert 56 :size-assert #xb8 @@ -257,11 +380,11 @@ (dummy-29 (_type_ int) none 29) (TODO-RENAME-30 (_type_ vector) object 30) ;; ret - symbol | float (CSPG::9) (dummy-31 (_type_) none 31) - (dummy-32 (_type_ object uint) none 32) - (dummy-33 (_type_ vector uint) none 33) + (dummy-32 (_type_ object collide-kind) none 32) + (dummy-33 (_type_ vector collide-kind) none 33) (dummy-34 (_type_ uint) collide-shape-prim 34) (dummy-35 (_type_) symbol 35) - (dummy-36 (_type_ bounding-box float uint) symbol 36) + (dummy-36 (_type_ bounding-box float collide-kind) symbol 36) (dummy-37 (_type_ vector) none 37) (find-collision-meshes (_type_) symbol 38) (dummy-39 (_type_ collide-shape collide-overlap-result) symbol 39) @@ -276,10 +399,10 @@ (clear-collide-with-as (_type_) none 48) (restore-collide-with-as (_type_) none 49) (backup-collide-with-as (_type_) none 50) - (set-root-prim-collide-with! (_type_ handle) none 51) - (set-root-prim-collide-as! (_type_ handle) none 52) - (dummy-53 (_type_ int int int) none 53) - (dummy-54 (_type_ int int) none 54) + (set-root-prim-collide-with! (_type_ collide-kind) none 51) + (set-root-prim-collide-as! (_type_ collide-kind) none 52) + (dummy-53 (_type_ int collide-kind collide-kind) none 53) + (dummy-54 (_type_ int collide-offense) none 54) (dummy-55 (_type_ process touching-shapes-entry float float float) none 55) ) ) @@ -320,7 +443,7 @@ (dummy-57 (_type_ vector) none 57) (dummy-58 (_type_ vector) symbol 58) (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) - (dummy-60 (_type_ float float symbol uint) symbol 60) + (dummy-60 (_type_ float float symbol collide-kind) symbol 60) (TODO-RENAME-61 (_type_ vector vector vector) none 61) (dummy-62 (_type_ vector float) vector 62) (dummy-63 (_type_ vector vector float) float 63) @@ -328,6 +451,10 @@ ) ) +;;;;;;;;;;;;;;;;;;;; +;; Basic Methods +;;;;;;;;;;;;;;;;;;;; + (defmethod new collide-shape-prim ((allocation symbol) (type-to-make type) (cshape collide-shape) (prim-id uint) (size-bytes int)) "Allocate a new collide-shape-prim. It is expected that children of collide-shape-prim override this. NOTE: uses the size-bytes as the TOTAL size of the structure." @@ -336,11 +463,11 @@ (set! (-> obj cshape) (the-as collide-shape cshape)) ;; sphere/mesh? (set! (-> obj prim-id) prim-id) - (set! (-> obj prim-core action) 0) - (set! (-> obj prim-core collide-as) 0) - (set! (-> obj collide-with) 0) + (set! (-> obj prim-core action) (collide-action)) + (set! (-> obj prim-core collide-as) (collide-kind)) + (set! (-> obj collide-with) (collide-kind)) (set! (-> obj transform-index) -2) - (set! (-> obj prim-core offense) 0) + (set! (-> obj prim-core offense) (collide-offense no-offense)) (set! (-> obj prim-core prim-type) -2) obj ) @@ -408,21 +535,14 @@ (set! (-> obj root-prim) #f) ;; add a special ignore mask for the camera vs other things. - (case (-> proc type symbol) - (('camera) - (set! - (-> obj pat-ignore-mask) - (new 'static 'pat-surface :skip #x2 :nocamera #x1) + (case (-> proc type symbol) + (('camera) + (set! (-> obj pat-ignore-mask) (new 'static 'pat-surface :skip #x2 :nocamera #x1)) ) + (else + (set! (-> obj pat-ignore-mask) (new 'static 'pat-surface :skip #x1 :noentity #x1)) + ) ) - (else - (set! - (-> obj pat-ignore-mask) - (new 'static 'pat-surface :skip #x1 :noentity #x1) - ) - ) - ) - ;; reset transformation to the origin. (set! (-> obj trans w) 1.0) (quaternion-identity! (-> obj quat)) @@ -467,32 +587,42 @@ (the-as int (+ (-> obj type size) (* (+ (-> obj allocated-riders) -1) 32))) ) -(define *collide-shape-prim-backgnd* - (new 'static 'collide-shape-prim-mesh - :cshape #f - :prim-core (new 'static 'collide-prim-core - :world-sphere (new 'static 'vector :w 204800000.0) - :collide-as #x1 - :action #x1 - :offense 4 - :prim-type 2 - ) - :local-sphere (new 'static 'vector :w 204800000.0) - :mesh #f - ) - ) +;;;;;;;;;;;;;;;;;;;; +;; Fake Meshes +;;;;;;;;;;;;;;;;;;;; -(define *collide-shape-prim-water* - (new 'static 'collide-shape-prim-mesh - :cshape #f - :prim-core (new 'static 'collide-prim-core - :world-sphere (new 'static 'vector :w 204800000.0) - :collide-as #x20 - :action #x1 - :offense 4 - :prim-type 2 - ) - :local-sphere (new 'static 'vector :w 204800000.0) - :mesh #f +;; These aren't real meshes, but are returned when you collide with the background or water. +;; Background and water collision work differently, but this allows these systems to pretend to be +;; part of the foreground collision system. + +(define *collide-shape-prim-backgnd* + (new 'static 'collide-shape-prim-mesh + :cshape #f + :prim-core + (new 'static 'collide-prim-core + :world-sphere (new 'static 'vector :w 204800000.0) + :collide-as (collide-kind background) + :action (collide-action solid) + :offense (collide-offense indestructible) + :prim-type 2 + ) + :local-sphere (new 'static 'vector :w 204800000.0) + :mesh #f + ) + ) + +(define *collide-shape-prim-water* + (new 'static 'collide-shape-prim-mesh + :cshape #f + :prim-core + (new 'static 'collide-prim-core + :world-sphere (new 'static 'vector :w 204800000.0) + :collide-as (collide-kind water) + :action (collide-action solid) + :offense (collide-offense indestructible) + :prim-type 2 + ) + :local-sphere (new 'static 'vector :w 204800000.0) + :mesh #f + ) ) - ) diff --git a/goal_src/engine/collide/collide-shape.gc b/goal_src/engine/collide/collide-shape.gc index 28acd4b29d..bc1990f3d5 100644 --- a/goal_src/engine/collide/collide-shape.gc +++ b/goal_src/engine/collide/collide-shape.gc @@ -56,7 +56,7 @@ ) (defmethod collide-with-collide-cache-prim-sphere collide-shape-prim-sphere ((obj collide-shape-prim-sphere) (arg0 collide-shape-intersect) (arg1 collide-cache-prim)) - (local-vars (v1-4 int) (a3-2 uint)) + (local-vars (v1-4 collide-offense) (a3-2 uint)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf3 :class vf) @@ -70,7 +70,7 @@ (-> obj prim-core) (-> arg0 move-vec) (-> arg0 best-u) - (the-as int (-> obj prim-core action)) + (-> obj prim-core action) ) ) ) @@ -85,13 +85,13 @@ (a1-3 (logand a1-2 a2-2)) (a2-3 (-> arg1 prim)) ) - (let ((a3-1 (logand a1-3 1)) + (let ((a3-1 (logand a1-3 (collide-action solid))) (a1-4 (-> obj prim-core offense)) ) (b! (zero? a3-1) cfg-5 :delay (set! a3-2 (-> s5-0 bbox4w max data 0))) (b! (= a0-2 v1-3) cfg-5 :delay (set! v1-4 (- a1-4 a0-2))) ) - (b! (> v1-4 0) cfg-5 :delay (.lvf vf1 (&-> s5-0 normal quad))) + (b! (> (the-as int v1-4) 0) cfg-5 :delay (.lvf vf1 (&-> s5-0 normal quad))) (.lvf vf2 (&-> s5-0 bbox4w min quad)) (.lvf vf3 (&-> s5-0 vertex 0 quad)) (.lvf vf4 (&-> s5-0 vertex 1 quad)) @@ -154,7 +154,7 @@ ) (set! (-> a1-1 min y) (+ -40960.0 (-> s2-0 y))) (set! (-> a1-1 max y) (+ 20480.0 (-> s2-0 y))) - (dummy-13 *collide-cache* a1-1 (-> arg0 root-prim collide-with) (-> arg0 process) (the-as uint 1)) + (dummy-13 *collide-cache* a1-1 (-> arg0 root-prim collide-with) (-> arg0 process) (new 'static 'pat-surface :skip #x1 :noentity #x1)) ) (set! sv-176 0) (while (< sv-176 8) @@ -170,16 +170,16 @@ (set-vector! s1-0 0.0 0.0 arg3 1.0) (vector-rotate-y! s1-0 s1-0 f28-0) (if (>= (dummy-18 - *collide-cache* - (vector+! (new 'stack-no-clear 'vector) s2-0 (new 'static 'vector :y 20480.0 :w 1.0)) - s1-0 - 2048.0 - (the-as int (-> arg0 root-prim collide-with)) - s0-0 - 1 - ) - 0.0 + *collide-cache* + (vector+! (new 'stack-no-clear 'vector) s2-0 (new 'static 'vector :y 20480.0 :w 1.0)) + s1-0 + 2048.0 + (-> arg0 root-prim collide-with) + s0-0 + 1 ) + 0.0 + ) (set! f26-0 (+ -6144.0 (vector-vector-xz-distance s2-0 (-> s0-0 intersect)))) ) (let ((f24-0 arg2)) @@ -189,22 +189,21 @@ (vector+! s1-0 s2-0 s1-0) (set! (-> s1-0 y) (+ 20480.0 (-> s2-0 y))) (when (>= (dummy-18 - *collide-cache* - s1-0 - (new 'static 'vector :y -251658240.0 :w 1.0) - 10240.0 - (the-as int (-> arg0 root-prim collide-with)) - s0-0 - 1 - ) + *collide-cache* + s1-0 + (new 'static 'vector :y -251658240.0 :w 1.0) + 10240.0 + (-> arg0 root-prim collide-with) + s0-0 + 1 + ) 0.0 ) (cond - ((and - (= (-> s0-0 pat mode) (pat-mode ground)) - (= (-> s0-0 pat event) (pat-event none)) - (< 0.7 (-> s0-0 normal y)) - ) + ((and (= (-> s0-0 pat mode) (pat-mode ground)) + (= (-> s0-0 pat event) (pat-event none)) + (< 0.7 (-> s0-0 normal y)) + ) (set! (-> arg1 quad) (-> s0-0 intersect quad)) (set! sv-192 (+ sv-192 1)) (if (>= sv-192 2) @@ -911,7 +910,7 @@ (none) ) -(defmethod dummy-60 collide-shape-moving ((obj collide-shape-moving) (arg0 float) (arg1 float) (arg2 symbol) (arg3 uint)) +(defmethod dummy-60 collide-shape-moving ((obj collide-shape-moving) (arg0 float) (arg1 float) (arg2 symbol) (arg3 collide-kind)) (if *debug-segment* (add-frame (-> *display* frames (-> *display* on-screen) frame profile-bar 0) @@ -975,7 +974,7 @@ arg0 ) -(defmethod dummy-33 collide-shape ((obj collide-shape) (arg0 vector) (arg1 uint)) +(defmethod dummy-33 collide-shape ((obj collide-shape) (arg0 vector) (arg1 collide-kind)) (local-vars (at-0 int)) (rlet ((vf0 :class vf) (vf1 :class vf) @@ -1008,11 +1007,11 @@ ) ) -(defmethod dummy-32 collide-shape ((obj collide-shape) (arg0 object) (arg1 uint)) +(defmethod dummy-32 collide-shape ((obj collide-shape) (arg0 object) (arg1 collide-kind)) (let ((s5-0 (new 'stack-no-clear 'bounding-box))) (cond ((dummy-36 obj s5-0 (the-as float arg0) arg1) - (dummy-13 *collide-cache* s5-0 arg1 (-> obj process) (the-as uint (-> obj pat-ignore-mask))) + (dummy-13 *collide-cache* s5-0 arg1 (-> obj process) (-> obj pat-ignore-mask)) (if (and *display-collide-cache* (= (-> obj process type) target)) (dummy-9 *collide-cache*) ) @@ -1025,7 +1024,7 @@ (none) ) -(defmethod dummy-36 collide-shape ((obj collide-shape) (arg0 bounding-box) (arg1 float) (arg2 uint)) +(defmethod dummy-36 collide-shape ((obj collide-shape) (arg0 bounding-box) (arg1 float) (arg2 collide-kind)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf29 :class vf) @@ -1065,7 +1064,7 @@ ) ;; WARN: Bad vector register dependency: vf31 -(defmethod dummy-20 collide-shape-prim ((obj collide-shape-prim) (arg0 uint)) +(defmethod dummy-20 collide-shape-prim ((obj collide-shape-prim) (arg0 collide-kind)) (rlet ((vf1 :class vf) (vf2 :class vf) (vf29 :class vf) @@ -1428,14 +1427,14 @@ arg0 ) -(defmethod set-collide-with! collide-shape-prim ((obj collide-shape-prim) (arg0 handle)) - (set! (-> obj collide-with) (the-as uint arg0)) +(defmethod set-collide-with! collide-shape-prim ((obj collide-shape-prim) (arg0 collide-kind)) + (set! (-> obj collide-with) arg0) 0 (none) ) -(defmethod set-collide-with! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 handle)) - (set! (-> obj collide-with) (the-as uint arg0)) +(defmethod set-collide-with! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-kind)) + (set! (-> obj collide-with) arg0) (dotimes (s4-0 (-> obj num-prims)) (set-collide-with! (-> obj prims s4-0) arg0) ) @@ -1443,14 +1442,14 @@ (none) ) -(defmethod set-collide-as! collide-shape-prim ((obj collide-shape-prim) (arg0 handle)) - (set! (-> obj prim-core collide-as) (the-as uint arg0)) +(defmethod set-collide-as! collide-shape-prim ((obj collide-shape-prim) (arg0 collide-kind)) + (set! (-> obj prim-core collide-as) arg0) 0 (none) ) -(defmethod set-collide-as! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 handle)) - (set! (-> obj prim-core collide-as) (the-as uint arg0)) +(defmethod set-collide-as! collide-shape-prim-group ((obj collide-shape-prim-group) (arg0 collide-kind)) + (set! (-> obj prim-core collide-as) arg0) (dotimes (s4-0 (-> obj num-prims)) (set-collide-as! (-> obj prims s4-0) arg0) ) @@ -1458,13 +1457,13 @@ (none) ) -(defmethod set-root-prim-collide-with! collide-shape ((obj collide-shape) (arg0 handle)) +(defmethod set-root-prim-collide-with! collide-shape ((obj collide-shape) (arg0 collide-kind)) (set-collide-with! (-> obj root-prim) arg0) 0 (none) ) -(defmethod set-root-prim-collide-as! collide-shape ((obj collide-shape) (arg0 handle)) +(defmethod set-root-prim-collide-as! collide-shape ((obj collide-shape) (arg0 collide-kind)) (set-collide-as! (-> obj root-prim) arg0) 0 (none) @@ -2597,8 +2596,8 @@ ;; ERROR: function was not converted to expressions. Cannot decompile. (defmethod clear-collide-with-as collide-shape ((obj collide-shape)) - (set! (-> obj root-prim collide-with) (the-as uint 0)) - (set! (-> obj root-prim prim-core collide-as) (the-as uint 0)) + (set! (-> obj root-prim collide-with) (collide-kind)) + (set! (-> obj root-prim prim-core collide-as) (collide-kind)) 0 (none) ) @@ -2617,7 +2616,7 @@ (none) ) -(defmethod dummy-53 collide-shape ((obj collide-shape) (arg0 int) (arg1 int) (arg2 int)) +(defmethod dummy-53 collide-shape ((obj collide-shape) (arg0 int) (arg1 collide-kind) (arg2 collide-kind)) (let ((s3-0 (-> obj root-prim))) (if (logtest? (-> s3-0 prim-id) arg0) (set! (-> s3-0 prim-core collide-as) (logior (logclear (-> s3-0 prim-core collide-as) arg1) arg2)) @@ -2642,7 +2641,7 @@ (none) ) -(defmethod dummy-54 collide-shape ((obj collide-shape) (arg0 int) (arg1 int)) +(defmethod dummy-54 collide-shape ((obj collide-shape) (arg0 int) (arg1 collide-offense)) (let ((s4-0 (-> obj root-prim))) (if (logtest? (-> s4-0 prim-id) arg0) (set! (-> s4-0 prim-core offense) arg1) diff --git a/goal_src/engine/collide/collide-target-h.gc b/goal_src/engine/collide/collide-target-h.gc index 3fac85f688..5739baa907 100644 --- a/goal_src/engine/collide/collide-target-h.gc +++ b/goal_src/engine/collide/collide-target-h.gc @@ -5,9 +5,6 @@ ;; name in dgo: collide-target-h ;; dgos: GAME, ENGINE -;;-*-Lisp-*- -(in-package goal) - ;; We believe that target's control-info may contain an array of these. ;; Each collide-history is a record of a single collision event. (deftype collide-history (structure) @@ -30,6 +27,8 @@ ) ) +;; This is the collide shape for target (Jak). +;; It is complicated. (deftype control-info (collide-shape-moving) ( (unknown-vector00 vector :inline :offset 448) ;; from - logic-target::build-conversions diff --git a/goal_src/engine/collide/collide-touch-h.gc b/goal_src/engine/collide/collide-touch-h.gc index a752ea711f..5c566333f9 100644 --- a/goal_src/engine/collide/collide-touch-h.gc +++ b/goal_src/engine/collide/collide-touch-h.gc @@ -5,16 +5,18 @@ ;; name in dgo: collide-touch-h ;; dgos: GAME, ENGINE +;; A record of a primitive which is touching another, possibly including the triangle that is involved. (deftype touching-prim (structure) - ((cprim collide-shape-prim :offset-assert 0) ;; a big guess, there's a few that meet this name - (has-tri? symbol :offset-assert 4) - (tri collide-tri-result :inline :offset-assert 16) + ((cprim collide-shape-prim :offset-assert 0) ;; not 100% sure + (has-tri? symbol :offset-assert 4) + (tri collide-tri-result :inline :offset-assert 16) ) :method-count-assert 9 :size-assert #x64 :flag-assert #x900000064 ) +;; A record of two primitives which are touching. (deftype touching-prims-entry (structure) ((next touching-prims-entry :offset-assert 0) (prev touching-prims-entry :offset-assert 4) @@ -34,6 +36,7 @@ ) ) +;; A pool of up to 64 touching primitives. There is a linked list of freed entries. (deftype touching-prims-entry-pool (structure) ((head touching-prims-entry :offset-assert 0) (nodes touching-prims-entry 64 :inline :offset-assert 16) @@ -71,7 +74,7 @@ ) (defmethod new touching-prims-entry-pool ((allocation symbol) (type-to-make type)) - "Allocate a new touching-prims-entry-pool" + "Allocate and initialize a new touching-prims-entry-pool" ;; Note - the original code passed (-> type-to-make size) as an argument. ;; however, the new method of structure doesn't have this argument. @@ -87,6 +90,8 @@ ) ) +;; two collide shapes which are touching. +;; This stores a list of primitive pairs which are touching. (deftype touching-shapes-entry (structure) ((cshape1 collide-shape :offset-assert 0) (cshape2 collide-shape :offset-assert 4) @@ -102,14 +107,15 @@ (get-touched-shape (_type_ collide-shape) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) ; this one! - (prims-touching-action? (_type_ collide-shape uint uint) touching-prims-entry 13) + (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry 13) (free-list () none 14) (free-entry-list (_type_) symbol 15) (get-head (_type_) touching-prims-entry 16) - (unknown1 (_type_ (pointer uint32)) uint 17) + (get-next (_type_ touching-prims-entry) touching-prims-entry 17) ) ) +;; A list of (up to) 32 pairs of colliding shapes (deftype touching-list (structure) ((num-touching-shapes int32 :offset-assert 0) (resolve-u int8 :offset-assert 4) @@ -144,14 +150,19 @@ ) (defmethod get-head touching-shapes-entry ((obj touching-shapes-entry)) + "Get the first pair of touching prims in a touching-shapes-entry" (-> obj head) ) -(defmethod unknown1 touching-shapes-entry ((obj touching-shapes-entry) (arg0 (pointer uint32))) - (-> arg0 0) +(defmethod get-next touching-shapes-entry ((obj touching-shapes-entry) (arg0 touching-prims-entry)) + "Get the next pair of touching prims." + (-> arg0 next) ) - +;; Allocate the global touching lists. +;; We have a pool of prim pairs that can be used in any shape pair (define-perm *touching-prims-entry-pool* touching-prims-entry-pool (new 'global 'touching-prims-entry-pool)) + +;; and a list of up to 32 shape pairs (define-perm *touching-list* touching-list (new 'global 'touching-list)) diff --git a/goal_src/engine/collide/collide-touch.gc b/goal_src/engine/collide/collide-touch.gc index 69af68b930..dca68f8130 100644 --- a/goal_src/engine/collide/collide-touch.gc +++ b/goal_src/engine/collide/collide-touch.gc @@ -9,145 +9,131 @@ (defmethod get-size touching-prims-entry-pool ((obj touching-prims-entry-pool)) (let ((v0-0 0)) - (let ((v1-0 (-> obj head))) - (while v1-0 - (+! v0-0 1) - (set! v1-0 (-> v1-0 next)) - (nop!) - (nop!) - (nop!) - ) + (let ((v1-0 (-> obj head))) + (while v1-0 + (+! v0-0 1) + (set! v1-0 (-> v1-0 next)) + (nop!) + (nop!) + (nop!) + ) + ) + v0-0 ) - v0-0 - ) ) (defmethod alloc-node touching-prims-entry-pool ((obj touching-prims-entry-pool)) (let ((gp-0 (-> obj head))) - (cond - (gp-0 - (let ((v1-0 (-> gp-0 next))) - (set! (-> obj head) v1-0) - (if v1-0 - (set! (-> v1-0 prev) #f) - ) + (cond + (gp-0 + (let ((v1-0 (-> gp-0 next))) + (set! (-> obj head) v1-0) + (if v1-0 + (set! (-> v1-0 prev) #f) + ) + ) + (set! (-> gp-0 allocated?) #t) + (set! (-> gp-0 next) #f) + (set! (-> gp-0 prev) #f) + ) + (else + (format 0 "ERROR: touching-prims-entry-pool::alloc-node() failed!~%") + ) ) - (set! (-> gp-0 allocated?) #t) - (set! (-> gp-0 next) #f) - (set! (-> gp-0 prev) #f) - ) - (else - (format 0 "ERROR: touching-prims-entry-pool::alloc-node() failed!~%") - ) + gp-0 ) - gp-0 - ) ) -(defmethod - free-node - touching-prims-entry-pool - ((obj touching-prims-entry-pool) (arg0 touching-prims-entry)) +(defmethod free-node touching-prims-entry-pool ((obj touching-prims-entry-pool) (arg0 touching-prims-entry)) (when (-> arg0 allocated?) - (set! (-> arg0 allocated?) #f) - (let ((v1-1 (-> obj head))) - (set! (-> arg0 next) v1-1) - (set! (-> arg0 prev) #f) - (set! (-> obj head) arg0) - (when v1-1 - (set! (-> v1-1 prev) arg0) - arg0 - ) + (set! (-> arg0 allocated?) #f) + (let ((v1-1 (-> obj head))) + (set! (-> arg0 next) v1-1) + (set! (-> arg0 prev) #f) + (set! (-> obj head) arg0) + (when v1-1 + (set! (-> v1-1 prev) arg0) + arg0 + ) + ) ) - ) ) (defmethod free-entry-list touching-shapes-entry ((obj touching-shapes-entry)) (when (-> obj cshape1) - (set! (-> obj cshape1) #f) - (let ((gp-0 (-> obj head))) - (when gp-0 - (set! (-> obj head) #f) - (let ((s5-0 *touching-prims-entry-pool*)) - (while gp-0 - (let ((a1-0 gp-0)) - (set! gp-0 (-> a1-0 next)) - (free-node s5-0 a1-0) + (set! (-> obj cshape1) #f) + (let ((gp-0 (-> obj head))) + (when gp-0 + (set! (-> obj head) #f) + (let ((s5-0 *touching-prims-entry-pool*)) + (while gp-0 + (let ((a1-0 gp-0)) + (set! gp-0 (-> a1-0 next)) + (free-node s5-0 a1-0) + ) + ) + ) + #f ) - ) ) - #f - ) ) - ) ) (defmethod dummy-14 touching-list ((obj touching-list)) (let ((s5-0 (the-as object (-> obj touching-shapes)))) - (countdown (s4-0 (-> obj num-touching-shapes)) - (free-entry-list (the-as touching-shapes-entry s5-0)) - (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) + (countdown (s4-0 (-> obj num-touching-shapes)) + (free-entry-list (the-as touching-shapes-entry s5-0)) + (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) + ) ) - ) (set! (-> obj num-touching-shapes) 0) (set! (-> obj resolve-u) 0) 0 (none) ) -(defmethod - get-shapes-entry - touching-list - ((obj touching-list) (arg0 collide-shape) (arg1 collide-shape)) +(defmethod get-shapes-entry touching-list ((obj touching-list) (arg0 collide-shape) (arg1 collide-shape)) (let ((v0-0 (the-as object (-> obj touching-shapes)))) - (let ((v1-0 (the-as object #f))) - (countdown (a3-0 (-> obj num-touching-shapes)) - (let ((t0-0 (-> (the-as touching-shapes-entry v0-0) cshape1))) - (set! v1-0 (cond - (t0-0 - (if - (or - (and - (= t0-0 arg0) - (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) - ) - (and - (= t0-0 arg1) - (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg0) - ) - ) - (return (the-as touching-shapes-entry v0-0)) - ) - v1-0 - ) - (else - v0-0 - ) - ) - ) + (let ((v1-0 (the-as object #f))) + (countdown (a3-0 (-> obj num-touching-shapes)) + (let ((t0-0 (-> (the-as touching-shapes-entry v0-0) cshape1))) + (set! v1-0 (cond + (t0-0 + (if (or (and (= t0-0 arg0) (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg1)) + (and (= t0-0 arg1) (= (-> (the-as touching-shapes-entry v0-0) cshape2) arg0)) + ) + (return (the-as touching-shapes-entry v0-0)) + ) + v1-0 + ) + (else + v0-0 + ) + ) + ) + ) + (set! v0-0 (&+ (the-as touching-shapes-entry v0-0) 16)) + ) + (cond + (v1-0 + (set! v0-0 v1-0) + ) + (else + (when (>= (-> obj num-touching-shapes) 32) + (format 0 "ERROR: touching-list::get-shapes-entry() failed!~%") + (return (the-as touching-shapes-entry #f)) + ) + (+! (-> obj num-touching-shapes) 1) + ) + ) ) - (set! v0-0 (&+ (the-as touching-shapes-entry v0-0) 16)) - ) - (cond - (v1-0 - (set! v0-0 v1-0) - ) - (else - (when (>= (-> obj num-touching-shapes) 32) - (format 0 "ERROR: touching-list::get-shapes-entry() failed!~%") - (return (the-as touching-shapes-entry #f)) - ) - (+! (-> obj num-touching-shapes) 1) - ) - ) + (set! (-> (the-as touching-shapes-entry v0-0) cshape1) arg0) + (set! (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) + (set! (-> (the-as touching-shapes-entry v0-0) head) #f) + (set! (-> (the-as touching-shapes-entry v0-0) resolve-u) 1) + (set! (-> obj resolve-u) 1) + (the-as touching-shapes-entry v0-0) ) - (set! (-> (the-as touching-shapes-entry v0-0) cshape1) arg0) - (set! (-> (the-as touching-shapes-entry v0-0) cshape2) arg1) - (set! (-> (the-as touching-shapes-entry v0-0) head) #f) - (set! (-> (the-as touching-shapes-entry v0-0) resolve-u) 1) - (set! (-> obj resolve-u) 1) - (the-as touching-shapes-entry v0-0) - ) ) (deftype add-prims-touching-work (structure) @@ -161,410 +147,361 @@ ;; WARN: Expression building failed: Function (method 9 touching-list) has a return type of none, but the expression builder found a return statement. -(defmethod - dummy-9 - touching-list - ((obj touching-list) - (arg0 collide-shape-prim) - (arg1 collide-shape-prim) - (arg2 float) - (arg3 collide-shape) - (arg4 collide-mesh-cache-tri) - ) +(defmethod dummy-9 touching-list ((obj touching-list) + (arg0 collide-shape-prim) + (arg1 collide-shape-prim) + (arg2 float) + (arg3 collide-shape) + (arg4 collide-mesh-cache-tri) + ) (let ((gp-0 (new 'stack-no-clear 'touching-shapes-entry))) - (set! (-> gp-0 cshape1) arg3) - (set! (-> gp-0 cshape2) (the-as collide-shape arg4)) - (let ((s2-0 (get-shapes-entry obj (-> arg0 cshape) (-> arg1 cshape)))) - (when s2-0 - (when (= (-> s2-0 cshape1) (-> arg1 cshape)) - (let ((v1-4 arg0)) - (set! arg0 arg1) - (set! arg1 v1-4) - ) + (set! (-> gp-0 cshape1) arg3) + (set! (-> gp-0 cshape2) (the-as collide-shape arg4)) + (let ((s2-0 (get-shapes-entry obj (-> arg0 cshape) (-> arg1 cshape)))) + (when s2-0 + (when (= (-> s2-0 cshape1) (-> arg1 cshape)) + (let ((v1-4 arg0)) + (set! arg0 arg1) + (set! arg1 v1-4) + ) + ) + (let ((s0-0 (-> s2-0 head))) + (while s0-0 + (when (and (= (-> s0-0 prim1 cprim) arg0) (= (-> s0-0 prim2 cprim) arg1)) + (when (< arg2 (-> s0-0 u)) + (-> s0-0 u) + (let ((v1-12 (-> s0-0 prim1)) + (a1-2 (-> gp-0 cshape1)) + ) + (cond + (a1-2 + (set! (-> v1-12 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-12 tri)) (the-as pointer a1-2) 84) + ) + (else + (set! (-> v1-12 has-tri?) #f) + ) + ) + ) + (let ((v1-15 (-> s0-0 prim2)) + (a1-3 (-> gp-0 cshape2)) + ) + (cond + (a1-3 + (set! (-> v1-15 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-15 tri)) (the-as pointer a1-3) 84) + ) + (else + (set! (-> v1-15 has-tri?) #f) + ) + ) + ) + ) + (return 0) + ) + (set! s0-0 (-> s0-0 next)) + ) + ) + (let ((s0-1 (alloc-node *touching-prims-entry-pool*))) + (when s0-1 + (let ((v1-22 (-> s2-0 head))) + (set! (-> s0-1 next) v1-22) + (set! (-> s0-1 prev) #f) + (set! (-> s2-0 head) s0-1) + (if v1-22 + (set! (-> v1-22 prev) s0-1) + ) + ) + (set! (-> s0-1 u) arg2) + (when (>= arg2 0.0) + (set! (-> s2-0 resolve-u) 1) + (set! (-> obj resolve-u) 1) + ) + (let ((v1-26 (-> s0-1 prim1)) + (a1-4 (-> gp-0 cshape1)) + ) + (set! (-> v1-26 cprim) arg0) + (cond + (a1-4 + (set! (-> v1-26 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-26 tri)) (the-as pointer a1-4) 84) + ) + (else + (set! (-> v1-26 has-tri?) #f) + ) + ) + ) + (let ((v1-29 (-> s0-1 prim2)) + (a1-5 (-> gp-0 cshape2)) + ) + (set! (-> v1-29 cprim) arg1) + (cond + (a1-5 + (set! (-> v1-29 has-tri?) #t) + (mem-copy! (the-as pointer (-> v1-29 tri)) (the-as pointer a1-5) 84) + ) + (else + (set! (-> v1-29 has-tri?) #f) + ) + ) + ) + ) + ) + ) ) - (let ((s0-0 (-> s2-0 head))) - (while s0-0 - (when (and (= (-> s0-0 prim1 cprim) arg0) (= (-> s0-0 prim2 cprim) arg1)) - (when (< arg2 (-> s0-0 u)) - (-> s0-0 u) - (let ((v1-12 (-> s0-0 prim1)) - (a1-2 (-> gp-0 cshape1)) - ) - (cond - (a1-2 - (set! (-> v1-12 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-12 tri)) (the-as pointer a1-2) 84) - ) - (else - (set! (-> v1-12 has-tri?) #f) - ) - ) - ) - (let ((v1-15 (-> s0-0 prim2)) - (a1-3 (-> gp-0 cshape2)) - ) - (cond - (a1-3 - (set! (-> v1-15 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-15 tri)) (the-as pointer a1-3) 84) - ) - (else - (set! (-> v1-15 has-tri?) #f) - ) - ) - ) - ) - (return 0) - ) - (set! s0-0 (-> s0-0 next)) - ) - ) - (let ((s0-1 (alloc-node *touching-prims-entry-pool*))) - (when s0-1 - (let ((v1-22 (-> s2-0 head))) - (set! (-> s0-1 next) v1-22) - (set! (-> s0-1 prev) #f) - (set! (-> s2-0 head) s0-1) - (if v1-22 - (set! (-> v1-22 prev) s0-1) - ) - ) - (set! (-> s0-1 u) arg2) - (when (>= arg2 0.0) - (set! (-> s2-0 resolve-u) 1) - (set! (-> obj resolve-u) 1) - ) - (let ((v1-26 (-> s0-1 prim1)) - (a1-4 (-> gp-0 cshape1)) - ) - (set! (-> v1-26 cprim) arg0) - (cond - (a1-4 - (set! (-> v1-26 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-26 tri)) (the-as pointer a1-4) 84) - ) - (else - (set! (-> v1-26 has-tri?) #f) - ) - ) - ) - (let ((v1-29 (-> s0-1 prim2)) - (a1-5 (-> gp-0 cshape2)) - ) - (set! (-> v1-29 cprim) arg1) - (cond - (a1-5 - (set! (-> v1-29 has-tri?) #t) - (mem-copy! (the-as pointer (-> v1-29 tri)) (the-as pointer a1-5) 84) - ) - (else - (set! (-> v1-29 has-tri?) #f) - ) - ) - ) - ) - ) - ) ) - ) 0 (none) ) (defmethod dummy-11 touching-list ((obj touching-list) (arg0 float)) (when (nonzero? (-> obj resolve-u)) - (set! (-> obj resolve-u) 0) - (let ((s5-0 (the-as object (-> obj touching-shapes)))) - (countdown (s4-0 (-> obj num-touching-shapes)) - (when (nonzero? (-> (the-as touching-shapes-entry s5-0) resolve-u)) - (set! (-> (the-as touching-shapes-entry s5-0) resolve-u) 0) - (when (-> (the-as touching-shapes-entry s5-0) cshape1) - (let ((s3-0 (-> (the-as touching-shapes-entry s5-0) head))) - (while s3-0 - (let ((f0-0 (-> s3-0 u))) - (set! s3-0 (cond - ((>= f0-0 0.0) - (cond - ((>= arg0 f0-0) - (set! (-> s3-0 u) -1.0) - (set! s3-0 (-> s3-0 next)) - ) - (else - (let ((a1-1 s3-0)) - (let ((v1-7 (-> s3-0 next))) - (let ((a0-1 (-> s3-0 prev))) - (if a0-1 - (set! (-> a0-1 next) v1-7) - (set! - (-> (the-as touching-shapes-entry s5-0) head) - v1-7 - ) - ) - (if v1-7 - (set! (-> v1-7 prev) a0-1) - ) - ) - (set! s3-0 v1-7) - ) - (free-node *touching-prims-entry-pool* a1-1) - ) - ) + (set! (-> obj resolve-u) 0) + (let ((s5-0 (the-as object (-> obj touching-shapes)))) + (countdown (s4-0 (-> obj num-touching-shapes)) + (when (nonzero? (-> (the-as touching-shapes-entry s5-0) resolve-u)) + (set! (-> (the-as touching-shapes-entry s5-0) resolve-u) 0) + (when (-> (the-as touching-shapes-entry s5-0) cshape1) + (let ((s3-0 (-> (the-as touching-shapes-entry s5-0) head))) + (while s3-0 + (let ((f0-0 (-> s3-0 u))) + (set! s3-0 (cond + ((>= f0-0 0.0) + (cond + ((>= arg0 f0-0) + (set! (-> s3-0 u) -1.0) + (set! s3-0 (-> s3-0 next)) + ) + (else + (let ((a1-1 s3-0)) + (let ((v1-7 (-> s3-0 next))) + (let ((a0-1 (-> s3-0 prev))) + (if a0-1 + (set! (-> a0-1 next) v1-7) + (set! (-> (the-as touching-shapes-entry s5-0) head) v1-7) + ) + (if v1-7 + (set! (-> v1-7 prev) a0-1) + ) + ) + (set! s3-0 v1-7) + ) + (free-node *touching-prims-entry-pool* a1-1) + ) + ) + ) + s3-0 + ) + (else + (-> s3-0 next) + ) + ) ) - s3-0 - ) - (else - (-> s3-0 next) - ) - ) - ) + ) + ) + ) + (if (not (-> (the-as touching-shapes-entry s5-0) head)) + (set! (-> (the-as touching-shapes-entry s5-0) cshape1) #f) + ) + ) ) - ) + (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) ) - (if (not (-> (the-as touching-shapes-entry s5-0) head)) - (set! (-> (the-as touching-shapes-entry s5-0) cshape1) #f) - ) - ) ) - (set! s5-0 (&+ (the-as touching-shapes-entry s5-0) 16)) - ) ) - ) 0 (none) ) (defmethod dummy-12 touching-list ((obj touching-list)) (let ((gp-0 (the-as object (-> obj touching-shapes)))) - (countdown (s5-0 (-> obj num-touching-shapes)) - (let ((s4-0 (-> (the-as touching-shapes-entry gp-0) cshape1))) - (when s4-0 - (let ((s3-0 (-> (the-as touching-shapes-entry gp-0) cshape2))) - (when (= (-> s3-0 process type) target) - (let ((v1-2 s4-0)) - (set! s4-0 s3-0) - (set! s3-0 v1-2) - ) - ) - (let ((v1-4 (-> s4-0 event-self))) - (when v1-4 - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) (-> s3-0 process)) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) (the-as symbol v1-4)) - (set! (-> a1-0 param 0) (the-as uint gp-0)) - (send-event-function (-> s4-0 process) a1-0) + (countdown (s5-0 (-> obj num-touching-shapes)) + (let ((s4-0 (-> (the-as touching-shapes-entry gp-0) cshape1))) + (when s4-0 + (let ((s3-0 (-> (the-as touching-shapes-entry gp-0) cshape2))) + (when (= (-> s3-0 process type) target) + (let ((v1-2 s4-0)) + (set! s4-0 s3-0) + (set! s3-0 v1-2) + ) + ) + (let ((v1-4 (-> s4-0 event-self))) + (when v1-4 + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) (-> s3-0 process)) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) (the-as symbol v1-4)) + (set! (-> a1-0 param 0) (the-as uint gp-0)) + (send-event-function (-> s4-0 process) a1-0) + ) + ) + ) + (let ((v1-5 (-> s4-0 event-other))) + (when v1-5 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) (-> s4-0 process)) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) (the-as symbol v1-5)) + (set! (-> a1-1 param 0) (the-as uint gp-0)) + (send-event-function (-> s3-0 process) a1-1) + ) + ) + ) + (let ((v1-6 (-> s3-0 event-self))) + (when v1-6 + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) (-> s4-0 process)) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) (the-as symbol v1-6)) + (set! (-> a1-2 param 0) (the-as uint gp-0)) + (send-event-function (-> s3-0 process) a1-2) + ) + ) + ) + (let ((v1-7 (-> s3-0 event-other))) + (when v1-7 + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) (-> s3-0 process)) + (set! (-> a1-3 num-params) 1) + (set! (-> a1-3 message) (the-as symbol v1-7)) + (set! (-> a1-3 param 0) (the-as uint gp-0)) + (send-event-function (-> s4-0 process) a1-3) + ) + ) + ) + ) ) - ) ) - (let ((v1-5 (-> s4-0 event-other))) - (when v1-5 - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) (-> s4-0 process)) - (set! (-> a1-1 num-params) 1) - (set! (-> a1-1 message) (the-as symbol v1-5)) - (set! (-> a1-1 param 0) (the-as uint gp-0)) - (send-event-function (-> s3-0 process) a1-1) - ) - ) - ) - (let ((v1-6 (-> s3-0 event-self))) - (when v1-6 - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) (-> s4-0 process)) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) (the-as symbol v1-6)) - (set! (-> a1-2 param 0) (the-as uint gp-0)) - (send-event-function (-> s3-0 process) a1-2) - ) - ) - ) - (let ((v1-7 (-> s3-0 event-other))) - (when v1-7 - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) (-> s3-0 process)) - (set! (-> a1-3 num-params) 1) - (set! (-> a1-3 message) (the-as symbol v1-7)) - (set! (-> a1-3 param 0) (the-as uint gp-0)) - (send-event-function (-> s4-0 process) a1-3) - ) - ) - ) - ) + (set! gp-0 (&+ (the-as touching-shapes-entry gp-0) 16)) ) - ) - (set! gp-0 (&+ (the-as touching-shapes-entry gp-0) 16)) ) - ) 0 (none) ) -(defmethod - prims-touching? - touching-shapes-entry - ((obj touching-shapes-entry) (arg0 collide-shape-moving) (arg1 uint)) +(defmethod prims-touching? touching-shapes-entry ((obj touching-shapes-entry) (arg0 collide-shape-moving) (arg1 uint)) (cond - ((= (-> obj cshape1) arg0) - (let ((v1-1 (-> obj head))) - (while v1-1 - (if (logtest? (-> v1-1 prim1 cprim prim-id) arg1) - (return v1-1) + ((= (-> obj cshape1) arg0) + (let ((v1-1 (-> obj head))) + (while v1-1 + (if (logtest? (-> v1-1 prim1 cprim prim-id) arg1) + (return v1-1) + ) + (set! v1-1 (-> v1-1 next)) + ) ) - (set! v1-1 (-> v1-1 next)) - ) ) - ) - ((= (-> obj cshape2) arg0) - (let ((v1-4 (-> obj head))) - (while v1-4 - (if (logtest? (-> v1-4 prim2 cprim prim-id) arg1) - (return v1-4) + ((= (-> obj cshape2) arg0) + (let ((v1-4 (-> obj head))) + (while v1-4 + (if (logtest? (-> v1-4 prim2 cprim prim-id) arg1) + (return v1-4) + ) + (set! v1-4 (-> v1-4 next)) + ) ) - (set! v1-4 (-> v1-4 next)) + ) + (else + (format 0 "ERROR: touching-shapes-entry::prims-touching? : Bogus cshape value!~%") ) - ) ) - (else - (format - 0 - "ERROR: touching-shapes-entry::prims-touching? : Bogus cshape value!~%" - ) - ) - ) (the-as touching-prims-entry #f) ) -(defmethod - prims-touching-action? - touching-shapes-entry - ((obj touching-shapes-entry) (arg0 collide-shape) (arg1 uint) (arg2 uint)) +(defmethod prims-touching-action? touching-shapes-entry ((obj touching-shapes-entry) (arg0 collide-shape) (arg1 collide-action) (arg2 collide-action)) (cond - ((= (-> obj cshape1) arg0) - (let ((v1-1 (-> obj head))) - (while v1-1 - (let ((a0-1 (-> v1-1 prim1 cprim))) - (if - (and - (logtest? arg1 (-> a0-1 prim-core action)) - (zero? (logand arg2 (-> a0-1 prim-core action))) + ((= (-> obj cshape1) arg0) + (let ((v1-1 (-> obj head))) + (while v1-1 + (let ((a0-1 (-> v1-1 prim1 cprim))) + (if (and (logtest? arg1 (-> a0-1 prim-core action)) (zero? (logand arg2 (-> a0-1 prim-core action)))) + (return v1-1) + ) + ) + (set! v1-1 (-> v1-1 next)) ) - (return v1-1) - ) ) - (set! v1-1 (-> v1-1 next)) - ) ) - ) - ((= (-> obj cshape2) arg0) - (let ((v1-4 (-> obj head))) - (while v1-4 - (let ((a0-5 (-> v1-4 prim2 cprim))) - (if - (and - (logtest? arg1 (-> a0-5 prim-core action)) - (zero? (logand arg2 (-> a0-5 prim-core action))) + ((= (-> obj cshape2) arg0) + (let ((v1-4 (-> obj head))) + (while v1-4 + (let ((a0-5 (-> v1-4 prim2 cprim))) + (if (and (logtest? arg1 (-> a0-5 prim-core action)) (zero? (logand arg2 (-> a0-5 prim-core action)))) + (return v1-4) + ) + ) + (set! v1-4 (-> v1-4 next)) ) - (return v1-4) - ) ) - (set! v1-4 (-> v1-4 next)) + ) + (else + (format 0 "ERROR: touching-shapes-entry::prims-touching-action? : Bogus cshape value!~%") ) - ) ) - (else - (format - 0 - "ERROR: touching-shapes-entry::prims-touching-action? : Bogus cshape value!~%" - ) - ) - ) (the-as touching-prims-entry #f) ) -(defmethod - get-touched-shape - touching-shapes-entry - ((obj touching-shapes-entry) (arg0 collide-shape)) +(defmethod get-touched-shape touching-shapes-entry ((obj touching-shapes-entry) (arg0 collide-shape)) (cond - ((= (-> obj cshape1) arg0) - (return (-> obj cshape2)) + ((= (-> obj cshape1) arg0) + (return (-> obj cshape2)) + ) + ((= (-> obj cshape2) arg0) + (return (-> obj cshape1)) + ) ) - ((= (-> obj cshape2) arg0) - (return (-> obj cshape1)) - ) - ) (the-as collide-shape #f) ) -(defmethod - get-touched-prim - touching-prims-entry - ((obj touching-prims-entry) (arg0 trsqv) (arg1 touching-prims-entry)) +(defmethod get-touched-prim touching-prims-entry ((obj touching-prims-entry) (arg0 trsqv) (arg1 touching-prims-entry)) (cond - ((= (-> arg1 next) arg0) - (return (-> obj prim1 cprim)) + ((= (-> arg1 next) arg0) + (return (-> obj prim1 cprim)) + ) + ((= (-> arg1 prev) arg0) + (return (-> obj prim2 cprim)) + ) ) - ((= (-> arg1 prev) arg0) - (return (-> obj prim2 cprim)) - ) - ) (the-as collide-shape-prim #f) ) -(defmethod - get-touched-tri - touching-prims-entry - ((obj touching-prims-entry) - (arg0 touching-prims-entry) - (arg1 touching-prims-entry) - ) +(defmethod get-touched-tri touching-prims-entry ((obj touching-prims-entry) (arg0 touching-prims-entry) (arg1 touching-prims-entry)) (let ((v0-0 (the-as collide-tri-result #f))) - (cond - ((= (-> arg1 next) arg0) - (let ((v1-2 (-> obj prim1))) - (if (-> v1-2 has-tri?) - (set! v0-0 (-> v1-2 tri)) + (cond + ((= (-> arg1 next) arg0) + (let ((v1-2 (-> obj prim1))) + (if (-> v1-2 has-tri?) + (set! v0-0 (-> v1-2 tri)) + ) + ) + ) + ((= (-> arg1 prev) arg0) + (let ((v1-5 (-> obj prim2))) + (if (-> v1-5 has-tri?) + (set! v0-0 (-> v1-5 tri)) + ) + ) ) ) - ) - ((= (-> arg1 prev) arg0) - (let ((v1-5 (-> obj prim2))) - (if (-> v1-5 has-tri?) - (set! v0-0 (-> v1-5 tri)) - ) - ) - ) + v0-0 ) - v0-0 - ) ) -(defmethod - dummy-11 - touching-prims-entry - ((obj touching-prims-entry) (arg0 vector)) +(defmethod dummy-11 touching-prims-entry ((obj touching-prims-entry) (arg0 vector)) (let* ((s4-0 (-> obj prim1 cprim)) (s3-0 (-> obj prim2 cprim)) - (gp-1 - (vector-! - (new 'stack-no-clear 'vector) - (the-as vector (-> s3-0 prim-core)) - (the-as vector (-> s4-0 prim-core)) - ) - ) + (gp-1 (vector-! + (new 'stack-no-clear 'vector) + (the-as vector (-> s3-0 prim-core)) + (the-as vector (-> s4-0 prim-core)) + ) + ) ) - (let - ((f1-2 - (- - (- (vector-length gp-1) (-> s3-0 prim-core world-sphere w)) - (-> s4-0 prim-core world-sphere w) - ) + (let ((f1-2 (- (- (vector-length gp-1) (-> s3-0 prim-core world-sphere w)) (-> s4-0 prim-core world-sphere w)))) + (vector-normalize! gp-1 (+ (-> s4-0 prim-core world-sphere w) (* 0.5 f1-2))) ) - ) - (vector-normalize! gp-1 (+ (-> s4-0 prim-core world-sphere w) (* 0.5 f1-2))) + (vector+! arg0 gp-1 (the-as vector (-> s4-0 prim-core))) ) - (vector+! arg0 gp-1 (the-as vector (-> s4-0 prim-core))) - ) arg0 ) diff --git a/goal_src/engine/game/collectables.gc b/goal_src/engine/game/collectables.gc index 5e89adf8c9..67c4f19c83 100644 --- a/goal_src/engine/game/collectables.gc +++ b/goal_src/engine/game/collectables.gc @@ -67,10 +67,9 @@ ) ) (cond - ((or - (= (vector-length (-> obj root-override transv)) 0.0) - (logtest? (-> obj fact options) (fact-options fop6)) - ) + ((or (= (vector-length (-> obj root-override transv)) 0.0) + (logtest? (-> obj fact options) (fact-options fop6)) + ) (vector-reset! (-> obj root-override transv)) ) (else @@ -143,8 +142,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 3276.8) (set-root-prim! s5-0 s4-0) ) @@ -375,13 +374,11 @@ ) ((begin (set! arg0 - (and - (or - (not arg2) - (or (< f0-0 (-> *FACT-bank* suck-suck-dist)) (logtest? (-> self flags) (collectable-flags suck))) - ) - arg0 - ) + (and (or (not arg2) + (or (< f0-0 (-> *FACT-bank* suck-suck-dist)) (logtest? (-> self flags) (collectable-flags suck))) + ) + arg0 + ) ) arg0 ) @@ -404,10 +401,9 @@ (vector+! (-> self base) (the-as vector gp-2) s5-2) ) ) - ((and arg2 (and - (< (+ 4096.0 (-> *FACT-bank* suck-bounce-dist)) f0-0) - (zero? (logand (-> self flags) (collectable-flags suck))) - ) + ((and arg2 (and (< (+ 4096.0 (-> *FACT-bank* suck-bounce-dist)) f0-0) + (zero? (logand (-> self flags) (collectable-flags suck))) + ) ) (go-virtual wait) ) @@ -489,15 +485,13 @@ :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-3 none)) - (when (and - (or (= arg2 'touch) (= arg2 'attack)) - (and - (logtest? (-> self flags) (collectable-flags can-collect)) - (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) - (!= (-> self next-state name) 'pickup) - (send-event arg0 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - ) + (when (and (or (= arg2 'touch) (= arg2 'attack)) + (and (logtest? (-> self flags) (collectable-flags can-collect)) + (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) + (!= (-> self next-state name) 'pickup) + (send-event arg0 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) + ) + ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (process->handle arg0)) ) @@ -505,13 +499,12 @@ object (cond ((= arg2 'eco-blue) - (when (and - (zero? (logand (-> self flags) (collectable-flags fading ignore-blue))) - (!= (-> self next-state name) 'pickup) - (begin (check-blue-suck (the-as process-drawable arg0)) #t) - (logtest? (-> self flags) (collectable-flags can-collect)) - (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) - ) + (when (and (zero? (logand (-> self flags) (collectable-flags fading ignore-blue))) + (!= (-> self next-state name) 'pickup) + (begin (check-blue-suck (the-as process-drawable arg0)) #t) + (logtest? (-> self flags) (collectable-flags can-collect)) + (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) + ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual notice-blue (process->handle arg0)) ) @@ -571,12 +564,11 @@ ) :enter (behavior () - (if (and - (logtest? (-> self fact options) (fact-options fop6 can-collect)) - (logtest? (-> self flags) (collectable-flags can-collect)) - (!= (-> self next-state name) 'pickup) - (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) + (if (and (logtest? (-> self fact options) (fact-options fop6 can-collect)) + (logtest? (-> self flags) (collectable-flags can-collect)) + (!= (-> self next-state name) 'pickup) + (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) + ) (go-virtual pickup #f (process->handle *target*)) ) (none) @@ -604,17 +596,15 @@ (logior! (-> self mask) (process-mask actor-pause)) ) (set! (-> self base quad) (-> self root-override trans quad)) - (if (and - (logtest? (-> self fact options) (fact-options can-collect)) - (zero? (logand (-> self flags) (collectable-flags ignore-blue))) - ) + (if (and (logtest? (-> self fact options) (fact-options can-collect)) + (zero? (logand (-> self flags) (collectable-flags ignore-blue))) + ) (go-virtual notice-blue (process->handle *target*)) ) - (if (and - (logtest? (-> self fact options) (fact-options fop6 can-collect)) - (!= (-> self next-state name) 'pickup) - (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) + (if (and (logtest? (-> self fact options) (fact-options fop6 can-collect)) + (!= (-> self next-state name) 'pickup) + (send-event *target* 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) + ) (go-virtual pickup #f (process->handle *target*)) ) ) @@ -634,10 +624,9 @@ (let ((gp-0 (-> self part)) (s5-0 (-> self root-override root-prim prim-core)) ) - (when (and - (logtest? (-> self flags) (collectable-flags fade)) - (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self fadeout-timeout)) - ) + (when (and (logtest? (-> self flags) (collectable-flags fade)) + (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self fadeout-timeout)) + ) (let ((v1-10 (- 300 (- (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self fadeout-timeout))))) (cond ((< v1-10 0) @@ -669,15 +658,13 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (and - (or (= arg2 'touch) (= arg2 'attack)) - (and - (logtest? (-> self flags) (collectable-flags can-collect)) - (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) - (!= (-> self next-state name) 'pickup) - (send-event arg0 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) - ) - ) + (when (and (or (= arg2 'touch) (= arg2 'attack)) + (and (logtest? (-> self flags) (collectable-flags can-collect)) + (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) + (!= (-> self next-state name) 'pickup) + (send-event arg0 'get-pickup (-> self fact pickup-type) (-> self fact pickup-amount)) + ) + ) (logclear! (-> self mask) (process-mask actor-pause)) (go-virtual pickup #f (process->handle arg0)) ) @@ -811,11 +798,10 @@ :code (behavior ((arg0 object) (arg1 handle)) (clear-collide-with-as (-> self root-override)) - (if (not (or - (= (-> self fact pickup-type) (pickup-type eco-pill)) + (if (not (or (= (-> self fact pickup-type) (pickup-type eco-pill)) (logtest? (-> self fact options) (fact-options powerup)) ) - ) + ) (send-event (handle->process arg1) 'powerup (-> self fact pickup-type) (-> self fact pickup-amount)) ) (if (nonzero? (-> self sound)) @@ -933,7 +919,10 @@ (defstate die (eco-collectable) :virtual #t :code - (behavior () (process-entity-status! self (entity-perm-status dead) #t) (none)) + (behavior () + (process-entity-status! self (entity-perm-status dead) #t) + (none) + ) ) (deftype eco (eco-collectable) @@ -1137,8 +1126,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 8192.0) (set-root-prim! s5-0 s4-0) ) @@ -1178,20 +1167,17 @@ (defmethod run-logic? money ((obj money)) - (or - (zero? (logand (-> obj mask) (process-mask actor-pause))) - (or - (and - (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) - (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) - (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) - ) - ) - (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (and (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) (draw-status drwf03)) + (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) + (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) + ) + ) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + ) ) - ) ) (defmethod deactivate money ((obj money)) @@ -1295,8 +1281,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 2048.0 0.0 4915.2) (set-root-prim! s5-0 s4-0) ) @@ -1310,12 +1296,12 @@ (set! (-> obj fact) (new 'process 'fact-info obj (pickup-type money) (the-as float 1.0))) (let ((a0-10 (-> obj entity))) (if (when a0-10 - (let ((a0-11 (-> a0-10 extra perm task))) - (if a0-11 - (= a0-11 (game-task none)) - ) - ) + (let ((a0-11 (-> a0-10 extra perm task))) + (if a0-11 + (= a0-11 (game-task none)) + ) ) + ) (set! (-> obj entity extra perm task) (game-task complete)) ) ) @@ -1410,10 +1396,10 @@ ) (when *target* (cond - ((logtest? (-> *target* control root-prim prim-core action) 512) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9)) (set! v1-7 16) ) - ((logtest? (-> *target* control root-prim prim-core action) #x4000) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) (set! v1-7 32) ) ) @@ -1517,20 +1503,17 @@ :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (local-vars (v0-3 none)) - (when (and - (or (= arg2 'touch) (= arg2 'attack)) - (and - (logtest? (-> self flags) (collectable-flags can-collect)) - (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) - (and - (not (handle->process (-> *game-info* other-camera-handle))) - (not *progress-process*) - (!= (-> self next-state name) 'pickup) - *target* - (zero? (logand (-> *target* state-flags) #x8100)) - ) - ) - ) + (when (and (or (= arg2 'touch) (= arg2 'attack)) + (and (logtest? (-> self flags) (collectable-flags can-collect)) + (>= (- (-> *display* base-frame-counter) (-> self birth-time)) (-> self collect-timeout)) + (and (not (handle->process (-> *game-info* other-camera-handle))) + (not *progress-process*) + (!= (-> self next-state name) 'pickup) + *target* + (zero? (logand (-> *target* state-flags) #x8100)) + ) + ) + ) (push-setting! *setting-control* self 'allow-progress #f 0.0 0) (copy-settings-from-target! *setting-control*) (logclear! (-> self mask) (process-mask actor-pause)) @@ -1670,14 +1653,13 @@ (set! (-> self state-object) #f) (kill-and-free-particles (-> self part)) (logior! (-> self draw status) (draw-status drwf05)) - (if (not (or - (logtest? - (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) - 4096 - ) - (and *target* (logtest? (-> *target* control root-prim prim-core action) 512)) - ) - ) + (if (not + (or (logtest? (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) + 4096 + ) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9))) + ) + ) (send-event *camera* 'teleport-to-other-start-string) ) ) @@ -1747,7 +1729,7 @@ (else (TODO-RENAME-30 (-> self root-override) (-> *target* control trans)) (set-yaw-angle-clear-roll-pitch! (-> self root-override) (y-angle (-> *target* control))) - (dummy-60 (-> self root-override) (the-as float 40960.0) (the-as float 40960.0) #f (the-as uint 1)) + (dummy-60 (-> self root-override) (the-as float 40960.0) (the-as float 40960.0) #f (collide-kind background)) ) ) ) @@ -1801,12 +1783,11 @@ gp-4 (lambda :behavior collectable ((arg0 game-task)) - (while (or - (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - (str-is-playing?) - ) + (while (or (-> *setting-control* current ambient) + (-> *setting-control* current movie) + (-> *setting-control* current hint) + (str-is-playing?) + ) (suspend) ) (cond @@ -2093,8 +2074,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 64)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) (set-root-prim! s5-0 s4-0) @@ -2166,15 +2147,14 @@ (set! (-> self jump-pos y) (+ 4096.0 (-> self jump-pos y))) (go-virtual jump) ) - ((and - gp-1 - (zero? (logand - (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) - 128 - ) - ) - (zero? (logand (-> self fact options) (fact-options fop7))) - ) + ((and gp-1 + (zero? + (logand (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) + 128 + ) + ) + (zero? (logand (-> self fact options) (fact-options fop7))) + ) (set! (-> self jump-pos quad) (-> (the-as vector gp-1) quad)) (set! (-> self jump-pos y) (+ 4096.0 (-> self jump-pos y))) (go-virtual jump) @@ -2234,7 +2214,11 @@ (none) ) :post - (behavior () (dummy-47 (-> self root-override)) (animate self) (none)) + (behavior () + (dummy-47 (-> self root-override)) + (animate self) + (none) + ) ) (defbehavior fuel-cell-init-as-clone fuel-cell ((arg0 handle) (arg1 int)) @@ -2387,11 +2371,13 @@ (if (nonzero? s5-2) (close-specific-task! (the-as game-task s5-2) (task-status need-hint)) ) - (when (and - (= (get-reminder s4-1 0) 127) - (and (-> self entity) (not (task-complete? *game-info* (the-as game-task s5-2)))) - ) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x7200) (not arg0)) + (when (and (= (get-reminder s4-1 0) 127) + (and (-> self entity) (not (task-complete? *game-info* (the-as game-task s5-2)))) + ) + (if (and *target* + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9 ca-12 ca-13 ca-14)) + (not arg0) + ) (logior! (-> self fact options) (fact-options fop6 fop7)) ) (let ((v1-47 @@ -2447,8 +2433,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 2457.6 0.0 4915.2) (set-root-prim! s5-0 s4-0) ) @@ -2777,37 +2763,36 @@ f30-0 (let ((s1-0 (get-death-count *game-info* #f))) (set! s3-0 (pickup-type eco-pill)) - (set! f30-0 (cond - ((and - (= s1-0 1) - *target* - (and (>= 1.0 (-> *target* fact-info-target health)) (rand-vu-percent? (the-as float 0.1))) - ) - (set! s3-0 (pickup-type eco-green)) - 1.0 - ) - ((and - (< 1 s1-0) - *target* - (and (>= 2.0 (-> *target* fact-info-target health)) (rand-vu-percent? (the-as float 0.05))) - ) - (set! s3-0 (pickup-type eco-green)) - 1.0 - ) - ((< 20 *eco-pill-count*) - (return (the-as (pointer process) #f)) - f30-0 - ) - ((< 10 *eco-pill-count*) - 1.0 - ) - ((type-type? (-> obj type) fact-info-enemy) - (+ (rand-vu-float-range (the-as float 3.0) (+ 5.0 f30-0)) (the float arg3)) - ) - (else - (+ (rand-vu-float-range (the-as float 2.0) (+ 3.0 f30-0)) (the float arg3)) - ) + (set! f30-0 + (cond + ((and (= s1-0 1) + *target* + (and (>= 1.0 (-> *target* fact-info-target health)) (rand-vu-percent? (the-as float 0.1))) ) + (set! s3-0 (pickup-type eco-green)) + 1.0 + ) + ((and (< 1 s1-0) + *target* + (and (>= 2.0 (-> *target* fact-info-target health)) (rand-vu-percent? (the-as float 0.05))) + ) + (set! s3-0 (pickup-type eco-green)) + 1.0 + ) + ((< 20 *eco-pill-count*) + (return (the-as (pointer process) #f)) + f30-0 + ) + ((< 10 *eco-pill-count*) + 1.0 + ) + ((type-type? (-> obj type) fact-info-enemy) + (+ (rand-vu-float-range (the-as float 3.0) (+ 5.0 f30-0)) (the float arg3)) + ) + (else + (+ (rand-vu-float-range (the-as float 2.0) (+ 3.0 f30-0)) (the float arg3)) + ) + ) ) ) ) @@ -2816,16 +2801,16 @@ (set! (-> s2-1 y) (+ 12288.0 (-> s2-1 y))) (let ((s1-1 (new 'stack-no-clear 'collide-tri-result))) (if (>= (fill-and-probe-using-y-probe - *collide-cache* - s2-1 - (the-as float 81920.0) - (the-as uint 1) - (the-as process #f) - s1-1 - (the-as uint 1) - ) - 0.0 + *collide-cache* + s2-1 + (the-as float 81920.0) + (collide-kind background) + (the-as process #f) + s1-1 + (the-as uint 1) ) + 0.0 + ) (set! (-> s2-1 quad) (-> s1-1 intersect quad)) (set! (-> s2-1 quad) (-> obj process root trans quad)) ) @@ -2898,10 +2883,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4 0.0 6144.0) (set-root-prim! s5-0 s4-0) @@ -2910,7 +2895,7 @@ (backup-collide-with-as s5-0) (set! (-> self root-override) s5-0) ) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) 512)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9))) (clear-collide-with-as (-> self root-override)) ) (set! (-> self block-func) arg0) @@ -2961,8 +2946,8 @@ (logior! (-> obj mask) (process-mask actor-pause)) (let ((s3-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) - (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core collide-as) (collide-kind powerup)) + (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 6553.6) (set-root-prim! s3-0 s2-0) ) @@ -3064,20 +3049,18 @@ (defstate vent-wait-for-touch (vent) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and - (or (= arg2 'touch) (= arg2 'attack)) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'get-pickup) - (set! (-> a1-1 param 0) (the-as uint (-> self fact pickup-type))) - (set! (-> a1-1 param 1) (the-as uint (-> self fact pickup-amount))) - (and - (= (send-event-function arg0 a1-1) #t) - (or (logtest? (-> self fact options) (fact-options powerup)) (send-event arg0 'powerup)) - ) - ) - ) + (if (and (or (= arg2 'touch) (= arg2 'attack)) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'get-pickup) + (set! (-> a1-1 param 0) (the-as uint (-> self fact pickup-type))) + (set! (-> a1-1 param 1) (the-as uint (-> self fact pickup-amount))) + (and (= (send-event-function arg0 a1-1) #t) + (or (logtest? (-> self fact options) (fact-options powerup)) (send-event arg0 'powerup)) + ) + ) + ) (go vent-pickup (process->handle arg0)) ) (vent-standard-event-handler arg0 arg1 arg2 arg3) @@ -3104,12 +3087,13 @@ (defstate vent-blocked (vent) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('show) - (go vent-wait-for-touch) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('show) + (go vent-wait-for-touch) + ) + ) + ) :code (behavior () (while #t diff --git a/goal_src/engine/game/crates.gc b/goal_src/engine/game/crates.gc index 6014c19552..2618c20b27 100644 --- a/goal_src/engine/game/crates.gc +++ b/goal_src/engine/game/crates.gc @@ -602,11 +602,10 @@ (('iron) (case (-> arg3 param 1) (('flop 'uppercut 'explode 'darkeco 'eco-yellow 'bonk 'racer 'tube 'flut-bonk 'flut-attack) - (if (and - (logtest? (-> self fact options) (fact-options fop11)) - *target* - (zero? (logand (-> *target* control root-prim prim-core action) 512)) - ) + (if (and (logtest? (-> self fact options) (fact-options fop11)) + *target* + (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-9))) + ) (return #f) ) (increment-success-for-hint (game-text-id sidekick-speech-hint-crate-iron)) @@ -617,8 +616,8 @@ (else (when (and (!= s4-0 (-> self incomming-attack-id)) (= (-> self root-override trans y) (-> self base y))) (if (not - (and (!= *kernel-boot-message* 'play) (= (-> *setting-control* current language) (language-enum japanese))) - ) + (and (!= *kernel-boot-message* 'play) (= (-> *setting-control* current language) (language-enum japanese))) + ) (level-hint-spawn (game-text-id sage-voicebox-hint-crate-iron) "sagevb36" @@ -656,7 +655,7 @@ (case (-> arg3 param 1) (('explode 'darkeco 'eco-yellow 'bonk 'tube 'flut-bonk 'flut-attack 'racer) (send-event arg0 'get-attack-count 1) - (when (logtest? (-> self draw status) 8) + (when (logtest? (-> self draw status) (draw-status drwf03)) (increment-success-for-hint (game-text-id sidekick-speech-hint-crate-steel)) (level-hint-spawn (game-text-id sidekick-speech-crate-steel-break1) @@ -790,12 +789,11 @@ ) ) (('eco-blue) - (if (not (or - (= (-> self defense) 'darkeco) + (if (not (or (= (-> self defense) 'darkeco) (or (= (-> self next-state name) 'notice-blue) (= (-> self next-state name) 'die)) (!= (-> self root-override trans y) (-> self base y)) ) - ) + ) (go-virtual notice-blue (process->handle arg0)) ) ) @@ -984,12 +982,12 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (if (and *target* (and - (logtest? (-> *target* control root-prim prim-core action) #x7200) - (!= (-> self fact pickup-type) 6) - (not arg0) - ) - ) + (if (and *target* + (and (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9 ca-12 ca-13 ca-14)) + (!= (-> self fact pickup-type) 6) + (not arg0) + ) + ) (logior! (-> self fact options) (fact-options fop6)) ) (when (not arg0) @@ -998,7 +996,7 @@ (suspend) ) ) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (case (-> self look) (('iron) (sound-play-by-name (static-sound-name "icrate-break") (new-sound-id) 1024 0 0 1 #t) @@ -1159,25 +1157,24 @@ (-> (method-of-type crate die) trans) :code (behavior () - (when (or - (= (-> self fact pickup-type) (pickup-type money)) - (= (-> self defense) 'iron) - (= (-> self defense) 'steel) - ) + (when (or (= (-> self fact pickup-type) (pickup-type money)) + (= (-> self defense) 'iron) + (= (-> self defense) 'steel) + ) (let ((a0-4 (-> self entity))) (if (when a0-4 - (let ((a0-5 (-> a0-4 extra perm task))) - (if a0-5 - (= a0-5 (game-task none)) - ) - ) + (let ((a0-5 (-> a0-4 extra perm task))) + (if a0-5 + (= a0-5 (game-task none)) + ) ) + ) (set! (-> self entity extra perm task) (game-task complete)) ) ) ) (clear-collide-with-as (-> self root-override)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (drop-pickup (-> self fact) #t self (the-as fact-info #f) 0) (set! (-> self child-count) (+ (process-count self) -1)) (process-entity-status! self (entity-perm-status bit-4) #t) @@ -1224,10 +1221,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint #x8080)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate blue-eco-suck)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) (set-root-prim! s4-0 s3-0) @@ -1287,11 +1284,11 @@ (defmethod art-init crate ((obj crate)) (case (-> obj look) (('iron) - (set! (-> obj root-override root-prim prim-core offense) 2) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense normal-attack)) (initialize-skeleton obj *crate-iron-sg* '()) ) (('steel) - (set! (-> obj root-override root-prim prim-core offense) 4) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense indestructible)) (initialize-skeleton obj *crate-steel-sg* '()) ) (('darkeco) @@ -1315,7 +1312,7 @@ ) (('none) (initialize-skeleton obj *crate-wood-sg* '()) - (logior! (-> obj draw status) 2) + (logior! (-> obj draw status) (draw-status drwf01)) ) (else (initialize-skeleton obj *crate-wood-sg* '()) @@ -1323,16 +1320,16 @@ ) (cond ((logtest? (fact-options fop16) (-> obj fact options)) - (set! (-> obj root-override root-prim prim-core offense) 4) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense indestructible)) ) ((logtest? (-> obj fact options) (fact-options fop15)) - (set! (-> obj root-override root-prim prim-core offense) 3) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense strong-attack)) ) ((logtest? (-> obj fact options) (fact-options fop14)) - (set! (-> obj root-override root-prim prim-core offense) 2) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense normal-attack)) ) ((logtest? (-> obj fact options) (fact-options fop13)) - (set! (-> obj root-override root-prim prim-core offense) 1) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense touch)) ) ) (set! (-> obj base quad) (-> obj root-override trans quad)) @@ -1480,14 +1477,12 @@ :virtual #t :trans (behavior () - (when (and - (and - *target* - (>= 327680.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 450) - (rand-vu-percent? 0.03) - ) + (when (and (and *target* + (>= 327680.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 450) + (rand-vu-percent? 0.03) + ) (spawn (-> self part) (-> self root-override trans)) (activate! (-> self smush) 0.2 90 150 1.0 1.0) (logclear! (-> self mask) (process-mask sleep-code)) diff --git a/goal_src/engine/game/game-info.gc b/goal_src/engine/game/game-info.gc index b142923a11..62fdea0c8a 100644 --- a/goal_src/engine/game/game-info.gc +++ b/goal_src/engine/game/game-info.gc @@ -821,7 +821,7 @@ (lambda :behavior process-drawable () (set! (-> (the-as collide-shape (-> self root)) root-prim collide-with) - (the-as uint #x800e) + (collide-kind cak-1 cak-2 cak-3 blue-eco-suck) ) (none) ) diff --git a/goal_src/engine/game/generic-obs.gc b/goal_src/engine/game/generic-obs.gc index f429014ad1..ba5ca021c4 100644 --- a/goal_src/engine/game/generic-obs.gc +++ b/goal_src/engine/game/generic-obs.gc @@ -116,12 +116,11 @@ :code (behavior () (while #t - (when (and - *target* - (< (vector-vector-distance (-> self root trans) (-> *target* control unknown-vector90)) (-> self range)) - (logtest? (-> *target* control root-prim prim-core action) 64) - (< (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range)))) - ) + (when (and *target* + (< (vector-vector-distance (-> self root trans) (-> *target* control unknown-vector90)) (-> self range)) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-6)) + (< (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range)))) + ) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-1 from) self) (set! (-> a1-1 num-params) 1) @@ -382,12 +381,12 @@ (case (-> self anim-mode) (('play1 'play) (>= (ja-frame-num 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -2 ) ) @@ -423,14 +422,15 @@ (if (!= (-> self cur-post-hook) (-> self new-post-hook)) (set! (-> self cur-post-hook) (-> self new-post-hook)) ) - (when (and (-> self new-joint-anim) (nonzero? (-> self skel)) (and - (!= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self new-joint-anim) - ) - (!= (-> self anim-mode) 'clone-anim) - ) + (when (and (-> self new-joint-anim) + (nonzero? (-> self skel)) + (and (!= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self new-joint-anim) + ) + (!= (-> self anim-mode) 'clone-anim) + ) ) (ja-channel-push! 1 (the-as int (-> self new-joint-anim-blend))) (let ((gp-0 (-> self skel root-channel 0))) @@ -559,8 +559,8 @@ (arg3 (let ((s4-2 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) (-> arg3 x) (-> arg3 y) (-> arg3 z) (-> arg3 w)) (set-root-prim! s4-2 s2-0) ) @@ -852,17 +852,16 @@ (defbehavior process-release? process ((arg0 process)) (let ((gp-0 (command-get-process arg0 *target*))) - (the-as symbol (if (and - gp-0 - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 1) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'mode)) - (send-event-function gp-0 a1-1) - ) - 'target-grab - ) + (the-as symbol (if (and gp-0 + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 1) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'mode)) + (send-event-function gp-0 a1-1) + ) + 'target-grab + ) (send-event gp-0 'end-mode) #t ) @@ -903,35 +902,30 @@ ) ) -;; TODO modified! (defun ja-anim-done? ((arg0 process)) - (let ((gp-0 (command-get-process arg0 *target*))) - (when gp-0 - (cond - ((type-type? (-> gp-0 type) manipy) - (the-as symbol (send-event gp-0 'query 'done)) - ) - ((type-type? (-> gp-0 type) process-drawable) - (when (zero? (logand (-> (the-as process-drawable gp-0) skel status) 4)) - - (rlet ((pp :reg r13 :type process)) - (let* ((old-pp pp) - (ret-val (begin - ;; set the process - (set! pp gp-0) - ;; run! - (ja-done? 0) - ))) - ;; restore the old pp - (set! pp old-pp) - ret-val - ) + (with-pp + (let ((gp-0 (command-get-process arg0 *target*))) + (the-as symbol (when gp-0 + (cond + ((type-type? (-> gp-0 type) manipy) + (send-event gp-0 'query 'done) + ) + ((type-type? (-> gp-0 type) process-drawable) + (when (zero? (logand (-> (the-as process-drawable gp-0) skel status) 4)) + (let ((s5-0 pp)) + (set! pp gp-0) + (let ((v0-1 (the-as object (ja-done? 0)))) + (set! pp s5-0) + v0-1 + ) + ) + ) + ) + ) + ) ) - ) - ) - ) ) - ) + ) ) (defbehavior camera-pov-from camera-tracker ((arg0 pair) (arg1 uint)) @@ -2073,17 +2067,16 @@ ) ) ) - (if (and - (and *target* (>= 32768.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - (let ((a1-5 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-5 from) self) - (set! (-> a1-5 num-params) 2) - (set! (-> a1-5 message) 'query) - (set! (-> a1-5 param 0) (the-as uint 'powerup)) - (set! (-> a1-5 param 1) (the-as uint 3)) - (not (send-event-function *target* a1-5)) - ) - ) + (if (and (and *target* (>= 32768.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (let ((a1-5 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-5 from) self) + (set! (-> a1-5 num-params) 2) + (set! (-> a1-5 message) 'query) + (set! (-> a1-5 param 0) (the-as uint 'powerup)) + (set! (-> a1-5 param 1) (the-as uint 3)) + (not (send-event-function *target* a1-5)) + ) + ) (level-hint-spawn (game-text-id daxter-launcher-no-eco) "sksp0035" @@ -2131,13 +2124,10 @@ ) :trans (behavior () - (if (or - (or - (not *target*) - (< (-> self active-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (if (or (or (not *target*) (< (-> self active-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-1 from) self) (set! (-> a1-1 num-params) 2) @@ -2151,15 +2141,12 @@ ) (spawn (-> self part) (-> self root-override trans)) (sound-play-by-name (static-sound-name "launch-idle") (-> self sound-id) 1024 0 0 1 #t) - (if (and - (and - *target* - (>= (+ 2867.2 (-> self root-override root-prim prim-core world-sphere w)) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + (if (and (and *target* (>= (+ 2867.2 (-> self root-override root-prim prim-core world-sphere w)) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) ) - ) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) - ) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) + ) (send-event *target* 'launch (-> self spring-height) (-> self camera) (-> self dest) (-> self seek-time)) ) (none) @@ -2181,8 +2168,8 @@ (stack-size-set! (-> obj main-thread) 128) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) ) @@ -2242,8 +2229,8 @@ (stack-size-set! (-> self main-thread) 128) (let ((s2-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) + (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-0 collide-with) (collide-kind target)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s2-0 s1-0) ) @@ -2456,9 +2443,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 272)) - (set! (-> s2-0 collide-with) (the-as uint 3022)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind target enemy)) + (set! (-> s2-0 collide-with) (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) (set-root-prim! s4-0 s2-0) ) diff --git a/goal_src/engine/game/projectiles.gc b/goal_src/engine/game/projectiles.gc index fbbdaf4b28..c37bf2dbdf 100644 --- a/goal_src/engine/game/projectiles.gc +++ b/goal_src/engine/game/projectiles.gc @@ -28,847 +28,663 @@ (define *search-info* (new 'global 'search-info)) -(defun - find-nearest-attackable - ((arg0 vector) - (arg1 float) - (arg2 uint) - (arg3 uint) - (arg4 vector) - (arg5 float) - ) +(defun find-nearest-attackable ((arg0 vector) (arg1 float) (arg2 uint) (arg3 uint) (arg4 vector) (arg5 float)) (let ((gp-0 *search-info*)) - (set! (-> gp-0 match) #f) - (set! (-> gp-0 point quad) (-> arg0 quad)) - (set! (-> gp-0 radius) arg1) - (set! (-> gp-0 best) arg1) - (set! (-> gp-0 rating) (the-as uint 0)) - (set! (-> gp-0 require) arg3) - (set! (-> gp-0 mask) arg2) - (set! (-> gp-0 rot-base quad) (-> arg4 quad)) - (set! (-> gp-0 rot-range) (if (= arg5 65536.0) - -2.0 - (cos arg5) - ) + (set! (-> gp-0 match) #f) + (set! (-> gp-0 point quad) (-> arg0 quad)) + (set! (-> gp-0 radius) arg1) + (set! (-> gp-0 best) arg1) + (set! (-> gp-0 rating) (the-as uint 0)) + (set! (-> gp-0 require) arg3) + (set! (-> gp-0 mask) arg2) + (set! (-> gp-0 rot-base quad) (-> arg4 quad)) + (set! (-> gp-0 rot-range) (if (= arg5 65536.0) + -2.0 + (cos arg5) + ) + ) + (iterate-process-tree + *entity-pool* + (lambda ((arg0 projectile)) + (when (logtest? (process-mask crate enemy attackable) (-> arg0 mask)) + (let* ((gp-0 *search-info*) + (s4-0 arg0) + (s5-0 (if (and (nonzero? s4-0) (type-type? (-> s4-0 type) process-drawable)) + s4-0 + ) + ) + ) + (when s5-0 + (let* ((s3-0 (-> s5-0 root-override)) + (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) collide-shape)) + s3-0 + ) + ) + ) + (when (the-as collide-shape-moving s4-1) + (let* ((s3-1 (-> s4-1 root-prim prim-core)) + (f30-0 (- (vector-vector-distance (-> gp-0 point) (the-as vector s3-1)) (-> s3-1 world-sphere w))) + ) + (when (nonzero? (-> s4-1 root-prim prim-core collide-as)) + (let ((s4-2 0) + (v1-8 (vector-normalize! (vector-! (new 'stack-no-clear 'vector) (the-as vector s3-1) (-> gp-0 point)) 1.0)) + ) + (if (logtest? (process-mask enemy) (-> s5-0 mask)) + (set! s4-2 (logior s4-2 1)) + ) + (if (and (nonzero? (-> s5-0 draw)) (logtest? (-> s5-0 draw status) (draw-status drwf03))) + (set! s4-2 (logior s4-2 2)) + ) + (let ((a0-16 (logand s4-2 (-> gp-0 mask)))) + (when (and (>= a0-16 (the-as int (-> gp-0 rating))) + (or (zero? (-> gp-0 require)) (logtest? a0-16 (-> gp-0 require))) + (< f30-0 (-> gp-0 best)) + (>= (vector-dot v1-8 (-> gp-0 rot-base)) (-> gp-0 rot-range)) + ) + (set! (-> gp-0 match) s5-0) + (set! (-> gp-0 best) f30-0) + (set! (-> gp-0 rating) (the-as uint a0-16)) + a0-16 + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + ) + *null-kernel-context* + ) + (-> gp-0 match) ) - (iterate-process-tree *entity-pool* (lambda ((arg0 projectile)) - (when - (logtest? - (process-mask crate enemy attackable) - (-> arg0 mask) - ) - (let* ((gp-0 *search-info*) - (s4-0 arg0) - (s5-0 - (if - (and - (nonzero? s4-0) - (type-type? - (-> s4-0 type) - process-drawable - ) - ) - s4-0 - ) - ) - ) - (when s5-0 - (let* ((s3-0 (-> s5-0 root-override)) - (s4-1 - (if - (and - (nonzero? s3-0) - (type-type? - (-> s3-0 type) - collide-shape - ) - ) - s3-0 - ) - ) - ) - (when - (the-as collide-shape-moving s4-1) - (let* - ((s3-1 - (-> s4-1 root-prim prim-core) - ) - (f30-0 - (- - (vector-vector-distance - (-> gp-0 point) - (the-as vector s3-1) - ) - (-> s3-1 world-sphere w) - ) - ) - ) - (when - (nonzero? - (-> - s4-1 - root-prim - prim-core - collide-as - ) - ) - (let ((s4-2 0) - (v1-8 - (vector-normalize! - (vector-! - (new 'stack-no-clear 'vector - ) - (the-as vector s3-1) - (-> gp-0 point) - ) - 1.0 - ) - ) - ) - (if - (logtest? - (process-mask enemy) - (-> s5-0 mask) - ) - (set! s4-2 (logior s4-2 1)) - ) - (if - (and - (nonzero? (-> s5-0 draw)) - (logtest? - (-> s5-0 draw status) - 8 - ) - ) - (set! s4-2 (logior s4-2 2)) - ) - (let - ((a0-16 - (logand s4-2 (-> gp-0 mask)) - ) - ) - (when - (and - (>= - a0-16 - (the-as - int - (-> gp-0 rating) - ) - ) - (or - (zero? (-> gp-0 require)) - (logtest? - a0-16 - (-> gp-0 require) - ) - ) - (< f30-0 (-> gp-0 best)) - (>= - (vector-dot - v1-8 - (-> gp-0 rot-base) - ) - (-> gp-0 rot-range) - ) - ) - (set! (-> gp-0 match) s5-0) - (set! (-> gp-0 best) f30-0) - (set! - (-> gp-0 rating) - (the-as uint a0-16) - ) - a0-16 - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - ) - *null-kernel-context* - ) - (-> gp-0 match) - ) ) -(defun - projectile-collision-reaction - ((arg0 collide-shape-moving) - (arg1 collide-shape-intersect) - (arg2 vector) - (arg3 vector) - ) - (local-vars - (sv-64 vector) - (sv-68 vector) - (sv-72 matrix) - (sv-80 int) - (sv-224 symbol) - ) +(defun projectile-collision-reaction ((arg0 collide-shape-moving) (arg1 collide-shape-intersect) (arg2 vector) (arg3 vector)) + (local-vars (sv-64 vector) (sv-68 vector) (sv-72 matrix) (sv-80 int) (sv-224 symbol)) (set! sv-64 (new-stack-vector0)) (set! sv-68 (new-stack-vector0)) (set! sv-72 (new 'stack-no-clear 'matrix)) (set! sv-80 0) (set! (-> sv-72 vector 0 quad) (-> arg3 quad)) (let ((a1-1 (new 'stack-no-clear 'vector))) - (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) - (TODO-RENAME-28 arg0 a1-1) - ) + (vector-float*! a1-1 (-> arg1 move-vec) (-> arg1 best-u)) + (TODO-RENAME-28 arg0 a1-1) + ) (dummy-56 arg0 (-> arg1 best-tri pat)) - (case (-> arg1 best-tri pat material) - (((pat-material stopproj)) + (case (-> arg1 best-tri pat material) + (((pat-material stopproj)) (send-event (-> arg0 process) 'die) ) - ) - (vector-! - sv-64 - (the-as vector (-> arg1 best-from-prim prim-core)) - (-> arg1 best-tri intersect) - ) + ) + (vector-! sv-64 (the-as vector (-> arg1 best-from-prim prim-core)) (-> arg1 best-tri intersect)) (set! (-> sv-64 w) 1.0) (vector-normalize! sv-64 1.0) (set! (-> arg0 coverage) (vector-dot sv-64 (-> arg1 best-tri normal))) (let ((v1-22 (-> sv-64 quad))) - (set! (-> sv-68 quad) v1-22) - ) - (when (= (-> arg1 best-u) 0.0) - (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) - (TODO-RENAME-28 arg0 a1-7) + (set! (-> sv-68 quad) v1-22) + ) + (when (= (-> arg1 best-u) 0.0) + (let ((a1-7 (vector-float*! (new 'stack-no-clear 'vector) sv-68 32.0))) + (TODO-RENAME-28 arg0 a1-7) + ) ) - ) (set! (-> arg0 surface-normal quad) (-> sv-68 quad)) (set! (-> arg0 poly-normal quad) (-> arg1 best-tri normal quad)) - (set! - (-> arg0 surface-angle) - (vector-dot sv-68 (-> arg0 dynam gravity-normal)) - ) - (set! - (-> arg0 poly-angle) - (vector-dot (-> arg0 poly-normal) (-> arg0 dynam gravity-normal)) - ) - (set! - (-> arg0 touch-angle) - (vector-dot - sv-68 - (vector-normalize! - (vector-negate! (new-stack-vector0) (the-as vector sv-72)) - 1.0 - ) - ) - ) + (set! (-> arg0 surface-angle) (vector-dot sv-68 (-> arg0 dynam gravity-normal))) + (set! (-> arg0 poly-angle) (vector-dot (-> arg0 poly-normal) (-> arg0 dynam gravity-normal))) + (set! (-> arg0 touch-angle) + (vector-dot sv-68 (vector-normalize! (vector-negate! (new-stack-vector0) (the-as vector sv-72)) 1.0)) + ) (if (< (-> arg0 poly-angle) -0.2) - (set! sv-80 (logior sv-80 16)) - ) - (set! - sv-224 - (< - (fabs (-> arg0 surface-angle)) - (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle) - ) - ) + (set! sv-80 (logior sv-80 16)) + ) + (set! sv-224 (< (fabs (-> arg0 surface-angle)) (-> *pat-mode-info* (-> arg0 cur-pat mode) wall-angle))) (if (zero? (logand (-> arg0 prev-status) 1)) - (set! - (-> arg0 ground-impact-vel) - (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal))) - ) - ) + (set! (-> arg0 ground-impact-vel) (- (vector-dot (-> arg0 transv) (-> arg0 dynam gravity-normal)))) + ) (set! sv-80 (logior sv-80 4)) (if (-> arg1 best-to-prim) - (set! sv-80 (logior sv-80 32)) - ) + (set! sv-80 (logior sv-80 32)) + ) (cond - (sv-224 - (set! sv-80 (logior sv-80 8)) - (set! (-> arg0 cur-pat mode) 1) - (set! (-> arg0 local-normal quad) (-> sv-68 quad)) + (sv-224 + (set! sv-80 (logior sv-80 8)) + (set! (-> arg0 cur-pat mode) 1) + (set! (-> arg0 local-normal quad) (-> sv-68 quad)) + ) + (else + (set! sv-80 (logior sv-80 1)) + (set! (-> arg0 local-normal quad) (-> sv-68 quad)) + ) ) - (else - (set! sv-80 (logior sv-80 1)) - (set! (-> arg0 local-normal quad) (-> sv-68 quad)) - ) - ) (vector-reflect-flat-above! arg2 (the-as vector sv-72) sv-68) (when (and (not sv-224) (>= (-> arg0 coverage) 0.9)) - (set! sv-80 (logior sv-80 2)) - (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) - (when (!= (-> arg0 poly-pat mode) (pat-mode wall)) - (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) - (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) + (set! sv-80 (logior sv-80 2)) + (set! (-> arg0 ground-poly-normal quad) (-> arg0 poly-normal quad)) + (when (!= (-> arg0 poly-pat mode) (pat-mode wall)) + (set! (-> arg0 ground-pat) (-> arg0 poly-pat)) + (set! (-> arg0 ground-touch-point quad) (-> arg1 best-tri intersect quad)) + ) ) - ) (logior! (-> arg0 status) sv-80) sv-80 (none) ) -(set! - (-> *part-group-id-table* 102) - (new 'static 'sparticle-launch-group - :length 34 - :duration #x12c - :linger-duration #x5dc - :name "group-yellow-eco-fireball" - :launcher - (new 'static 'inline-array sparticle-group-item 34 - (sp-item 349 :flags (launch-asap) :binding 350) - (sp-item 350 :flags (start-dead launch-asap) :binding 351) - (sp-item 351 :flags (start-dead launch-asap) :binding 352) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 352 :flags (start-dead) :binding 353) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) - ) - :bounds (new 'static 'sphere :w 12288.0) - ) - ) +(set! (-> *part-group-id-table* 102) + (new 'static 'sparticle-launch-group + :length 34 + :duration #x12c + :linger-duration #x5dc + :name "group-yellow-eco-fireball" + :launcher + (new 'static 'inline-array sparticle-group-item 34 + (sp-item 349 :flags (launch-asap) :binding 350) + (sp-item 350 :flags (start-dead launch-asap) :binding 351) + (sp-item 351 :flags (start-dead launch-asap) :binding 352) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 352 :flags (start-dead) :binding 353) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 353 :fade-after (meters 100.0) :falloff-to (meters 100.0) :flags (start-dead)) + ) + :bounds (new 'static 'sphere :w 12288.0) + ) + ) -(set! - (-> *part-id-table* 349) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 9 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 0.01)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-a 0.0) - (sp-int spt-timer 1200) - (sp-cpuinfo-flags bit3) - (sp-func spt-func 'sparticle-track-root-prim) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 349) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 9 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.01)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit3) + (sp-func spt-func 'sparticle-track-root-prim) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 350) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) - (sp-rnd-flt spt-y (meters 4.0) (meters 16.0) 1.0) - (sp-flt spt-z 0.0) - (sp-flt spt-scale-x (meters 5.0)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 128.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-a 32.0) - (sp-rnd-int-flt spt-vel-x (meters -0.10666667) 1 873.81335) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.4) 1 145.63556) - (sp-int spt-timer 1200) - (sp-cpuinfo-flags bit2 bit3 bit7) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 350) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-y (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-z 0.0) + (sp-flt spt-scale-x (meters 5.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 32.0) + (sp-rnd-int-flt spt-vel-x (meters -0.10666667) 1 873.81335) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.4) 1 145.63556) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 351) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 2.0) - (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) - (sp-flt spt-z 0.0) - (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 128.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-a 64.0) - (sp-rnd-flt spt-omega 0.0 65536.0 1.0) - (sp-flt spt-vel-x (meters 0.11259259)) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-int spt-timer 1200) - (sp-cpuinfo-flags bit2 bit3 bit7) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 351) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-flt spt-z 0.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 64.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.11259259)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 352) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 15 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 128.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-a 64.0) - (sp-flt spt-scalevel-x (meters -0.02)) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -1.0) - (sp-int spt-timer 54) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 352) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 128.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.02)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.0) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 353) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-flt spt-y (meters -0.05)) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 100.0 28.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-b 0.0) - (sp-flt spt-a 96.0) - (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.011666667) 1.0) - (sp-flt spt-scalevel-x (meters -0.000909091)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -0.4) - (sp-flt spt-fade-a -0.024242423) - (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) - (sp-flt spt-friction 0.93) - (sp-int-plain-rnd spt-timer 30 299 1) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 90) - (sp-launcher-by-id spt-next-launcher 354) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.3)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 353) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-flt spt-y (meters -0.05)) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.011666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.4) + (sp-flt spt-fade-a -0.024242423) + (sp-rnd-flt spt-accel-y -0.40960002 -1.2288 1.0) + (sp-flt spt-friction 0.93) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 354) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.3)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 354) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-r 0.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 354) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-r 0.0) (sp-end)) + ) + ) -(set! - (-> *part-group-id-table* 103) - (new 'static 'sparticle-launch-group - :length 20 - :duration #x258 - :linger-duration #x5dc - :name - "group-part-yellow-eco-fireball-launcher" - :launcher - (new 'static 'inline-array sparticle-group-item 20 - (sp-item 355 :flags (launch-asap)) - (sp-item 356 :flags (bit1) :period 630 :length 15) - (sp-item 357 :flags (launch-asap)) - (sp-item 358 :flags (launch-asap) :binding 359) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - (sp-item 359 :flags (start-dead launch-asap)) - ) - :bounds (new 'static 'sphere :w 24576.0) - ) - ) +(set! (-> *part-group-id-table* 103) (new 'static 'sparticle-launch-group + :length 20 + :duration #x258 + :linger-duration #x5dc + :name + "group-part-yellow-eco-fireball-launcher" + :launcher + (new 'static 'inline-array sparticle-group-item 20 + (sp-item 355 :flags (launch-asap)) + (sp-item 356 :flags (bit1) :period 630 :length 15) + (sp-item 357 :flags (launch-asap)) + (sp-item 358 :flags (launch-asap) :binding 359) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + (sp-item 359 :flags (start-dead launch-asap)) + ) + :bounds (new 'static 'sphere :w 24576.0) + ) + ) -(set! - (-> *part-id-table* 355) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 15 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 8.0)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 255.0) - (sp-flt spt-g 128.0) - (sp-flt spt-a 64.0) - (sp-flt spt-scalevel-x (meters -0.06666667)) - (sp-rnd-int-flt spt-rotvel-z (degrees -204.8) 1 74565.41) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.0) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 355) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 15 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 8.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 128.0) + (sp-flt spt-a 64.0) + (sp-flt spt-scalevel-x (meters -0.06666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -204.8) 1 74565.41) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.0) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 357) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 5.0) - (sp-rnd-flt spt-x (meters -0.6) (meters 1.2) 1.0) - (sp-rnd-flt spt-y (meters -0.6) (meters 1.2) 1.0) - (sp-rnd-flt spt-z -2457.6 4915.2 1.0) - (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.75) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 100.0 28.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-b 32.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-flt spt-scalevel-x (meters 0.0044444446)) - (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -0.14222223) - (sp-flt spt-fade-a -0.14222223) - (sp-flt spt-accel-y -0.06826667) - (sp-int spt-timer 450) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 357) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-x (meters -0.6) (meters 1.2) 1.0) + (sp-rnd-flt spt-y (meters -0.6) (meters 1.2) 1.0) + (sp-rnd-flt spt-z -2457.6 4915.2 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 0.75) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.0044444446)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.14222223) + (sp-flt spt-fade-a -0.14222223) + (sp-flt spt-accel-y -0.06826667) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 356) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 100.0 28.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-b 0.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters -0.0025000002)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -1.0666667) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -4.096) - (sp-flt spt-friction 0.99) - (sp-int-plain-rnd spt-timer 60 59 1) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 356) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.0025000002)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-flt spt-friction 0.99) + (sp-int-plain-rnd spt-timer 60 59 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 360) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 24.0) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 100.0 28.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-b 0.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters -0.0025000002)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -1.0666667) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -4.096) - (sp-flt spt-friction 0.99) - (sp-int-plain-rnd spt-timer 60 59 1) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 360) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 24.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.0025000002)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -4.096) + (sp-flt spt-friction 0.99) + (sp-int-plain-rnd spt-timer 60 59 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 358) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 16.0) - (sp-flt spt-scale-x (meters 0.1)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-a 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) - (sp-flt spt-accel-y -2.048) - (sp-flt spt-friction 0.99) - (sp-int spt-timer 330) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 358) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 16.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-accel-y -2.048) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 330) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 180.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 361) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 32.0) - (sp-flt spt-scale-x (meters 0.1)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-a 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) - (sp-flt spt-accel-y -2.048) - (sp-flt spt-friction 0.99) - (sp-int spt-timer 330) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 361) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.013333334) 1.0) + (sp-flt spt-accel-y -2.048) + (sp-flt spt-friction 0.99) + (sp-int spt-timer 330) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 359) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) - (sp-rnd-flt spt-z 409.6 819.2 1.0) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 100.0 28.0 1.0) - (sp-rnd-flt spt-g 64.0 64.0 1.0) - (sp-flt spt-b 0.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-omega 0.0 65536.0 1.0) - (sp-flt spt-vel-x (meters 0.10666667)) - (sp-flt spt-scalevel-x (meters -0.000909091)) - (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -0.26666668) - (sp-flt spt-fade-a -0.19393939) - (sp-int-plain-rnd spt-timer 90 239 1) - (sp-cpuinfo-flags bit2 bit3 bit7) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 359) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 409.6 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 28.0 1.0) + (sp-rnd-flt spt-g 64.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.10666667)) + (sp-flt spt-scalevel-x (meters -0.000909091)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.26666668) + (sp-flt spt-fade-a -0.19393939) + (sp-int-plain-rnd spt-timer 90 239 1) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 104) - (new 'static 'sparticle-launch-group - :length 4 - :duration #x258 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-part-yellow-eco-fireball-hit" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 2059 :period 600 :length 5) - (sp-item 2060 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) - (sp-item 2061 :period 600 :length 20) - (sp-item 2062 :fade-after (meters 120.0) :falloff-to (meters 120.0) :period 600 :length 20) - ) - :bounds (new 'static 'sphere :w 24576.0) - ) - ) +(set! (-> *part-group-id-table* 104) + (new 'static 'sparticle-launch-group + :length 4 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-part-yellow-eco-fireball-hit" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 2059 :period 600 :length 5) + (sp-item 2060 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2061 :period 600 :length 20) + (sp-item 2062 :fade-after (meters 120.0) :falloff-to (meters 120.0) :period 600 :length 20) + ) + :bounds (new 'static 'sphere :w 24576.0) + ) + ) -(set! - (-> *part-id-table* 2060) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 6.0) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.4) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 64.0 1.0) - (sp-rnd-flt spt-g 192.0 64.0 1.0) - (sp-flt spt-b 0.0) - (sp-rnd-flt spt-a 32.0 96.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.10666667) 1.0) - (sp-flt spt-scalevel-x (meters -0.0016666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) - (sp-flt spt-friction 0.9) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit14) - (sp-int-plain-rnd spt-next-time 30 29 1) - (sp-launcher-by-id spt-next-launcher 2063) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2060) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.4) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 64.0 1.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -0.68266666 -0.68266666 1.0) + (sp-flt spt-friction 0.9) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 30 29 1) + (sp-launcher-by-id spt-next-launcher 2063) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 2.0) (meters 4.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2063) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 5 - (sp-flt spt-fade-r 0.0) - (sp-flt spt-fade-g 0.0) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-fade-a -1.4222223) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2063) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -1.4222223) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2062) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 3.0) - (sp-flt spt-scale-x (meters 0.2)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) - (sp-flt spt-scale-y (meters 8.0)) - (sp-flt spt-r 255.0) - (sp-flt spt-g 196.0) - (sp-flt spt-b 0.0) - (sp-rnd-flt spt-a 32.0 64.0 1.0) - (sp-flt spt-scalevel-y (meters 0.42666668)) - (sp-flt spt-fade-a -1.6) - (sp-int spt-timer 60) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2062) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-scale-x (meters 0.2)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 180.0) 1.0) + (sp-flt spt-scale-y (meters 8.0)) + (sp-flt spt-r 255.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-flt spt-scalevel-y (meters 0.42666668)) + (sp-flt spt-fade-a -1.6) + (sp-int spt-timer 60) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2059) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 12 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 16.0)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 255.0) - (sp-rnd-flt spt-g 192.0 32.0 1.0) - (sp-flt spt-b 0.0) - (sp-flt spt-a 96.0) - (sp-flt spt-fade-a -1.7454545) - (sp-int spt-timer 54) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2059) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 16.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 32.0 1.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -1.7454545) + (sp-int spt-timer 54) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2061) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 23 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 4.0) - (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 255.0) - (sp-rnd-flt spt-g 192.0 64.0 1.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.013333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.013333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -1.6) - (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) - (sp-flt spt-friction 0.8) - (sp-int spt-timer 510) - (sp-cpuinfo-flags bit2 bit14) - (sp-int spt-next-time 42) - (sp-launcher-by-id spt-next-launcher 2064) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2061) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 4.0) + (sp-rnd-flt spt-scale-x (meters 2.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-rnd-flt spt-g 192.0 64.0 1.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.3) (degrees 0.6) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.6) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-flt spt-friction 0.8) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit14) + (sp-int spt-next-time 42) + (sp-launcher-by-id spt-next-launcher 2064) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 2064) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 5 - (sp-flt spt-fade-r -0.53333336) - (sp-flt spt-fade-g -0.53333336) - (sp-flt spt-fade-b -1.0666667) - (sp-flt spt-fade-a -0.53333336) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2064) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 5 + (sp-flt spt-fade-r -0.53333336) + (sp-flt spt-fade-g -0.53333336) + (sp-flt spt-fade-b -1.0666667) + (sp-flt spt-fade-a -0.53333336) + (sp-end) + ) + ) + ) (defmethod dummy-24 projectile ((obj projectile)) - (spawn - (-> obj part) - (the-as vector (-> obj root-override root-prim prim-core)) - ) + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core))) 0 (none) ) @@ -882,203 +698,147 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touched) - (when (-> self attack-mode) - (when (cond - ((= (-> arg0 type) target) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'attack) - (set! (-> a1-1 param 0) (-> arg3 param 0)) - (let ((a0-4 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-4 mode) (-> self attack-mode)) - (set! (-> a1-1 param 1) (the-as uint a0-4)) + (case arg2 + (('touched) + (when (-> self attack-mode) + (when (cond + ((= (-> arg0 type) target) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'attack) + (set! (-> a1-1 param 0) (-> arg3 param 0)) + (let ((a0-4 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-4 mode) (-> self attack-mode)) + (set! (-> a1-1 param 1) (the-as uint a0-4)) + ) + (send-event-function arg0 a1-1) + ) + ) + (else + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 4) + (set! (-> a1-2 message) 'attack) + (set! (-> a1-2 param 0) (-> arg3 param 0)) + (set! (-> a1-2 param 1) (the-as uint (-> self attack-mode))) + (let ((v1-13 (+ *global-attack-id* 1))) + (set! *global-attack-id* v1-13) + (set! (-> a1-2 param 2) (the-as uint v1-13)) + ) + (set! (-> a1-2 param 3) (the-as uint 0)) + (send-event-function arg0 a1-2) + ) + ) ) - (send-event-function arg0 a1-1) - ) - ) - (else - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 4) - (set! (-> a1-2 message) 'attack) - (set! (-> a1-2 param 0) (-> arg3 param 0)) - (set! (-> a1-2 param 1) (the-as uint (-> self attack-mode))) - (let ((v1-13 (+ *global-attack-id* 1))) - (set! *global-attack-id* v1-13) - (set! (-> a1-2 param 2) (the-as uint v1-13)) + (let ((v1-14 (-> self notify-handle))) + (if (handle->process v1-14) + (send-event (-> v1-14 process 0) 'notify 'attack arg0) ) - (set! (-> a1-2 param 3) (the-as uint 0)) - (send-event-function arg0 a1-2) - ) + ) + (+! (-> self hits) 1) + (if (>= (-> self hits) (-> self max-hits)) + (go-virtual projectile-impact) ) - ) - (let ((v1-14 (-> self notify-handle))) - (if (handle->process v1-14) - (send-event (-> v1-14 process 0) 'notify 'attack arg0) - ) + ) ) - (+! (-> self hits) 1) - (if (>= (-> self hits) (-> self max-hits)) - (go-virtual projectile-impact) - ) - ) + ) + (('die) + (go-virtual projectile-impact) ) ) - (('die) - (go-virtual projectile-impact) - ) ) - ) :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior () - (let ((gp-0 #f)) - (while - (< - (- (-> *display* base-frame-counter) (-> self state-time)) - (the-as int (-> self timeout)) + (let ((gp-0 #f)) + (while (< (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self timeout))) + (let ((s5-0 (the int (-> *display* time-ratio)))) + (set-time-ratios *display* 1.0) + (countdown (s4-0 s5-0) + (if gp-0 + (go-virtual projectile-impact) + ) + (dummy-28 self) + ((-> self update-velocity) self) + (when (logtest? (-> self options) 2) + (set! (-> self tween) (seek (-> self tween) 1.0 (* 0.5 (-> *display* seconds-per-frame)))) + (let ((f0-6 (vector-vector-distance (-> self root-override trans) (-> self target)))) + (cond + ((< f0-6 20480.0) + (set! (-> self tween) (seek (-> self tween) 1.0 (* 3.0 (-> *display* seconds-per-frame)))) + ) + ((< f0-6 40960.0) + (set! (-> self tween) (seek (-> self tween) 1.0 (-> *display* seconds-per-frame))) + ) + ) + ) + ) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (set! (-> s3-0 quad) (-> self root-override trans quad)) + (dummy-33 + (-> self root-override) + (-> self root-override transv) + (-> self root-override root-prim collide-with) + ) + (set! (-> self old-dist (-> self old-dist-count)) + (* 0.0625 (vector-vector-distance s3-0 (-> self root-override trans))) + ) + ) + (set! (-> self old-dist-count) (logand (+ (-> self old-dist-count) 1) 15)) + (let ((f0-16 0.0)) + (countdown (v1-35 16) + (+! f0-16 (-> self old-dist v1-35)) + ) + (if (or (and (logtest? (-> self root-override status) 8) (< f0-16 2048.0)) (< f0-16 204.8)) + (set! gp-0 #t) + ) + ) + ) + (set-time-ratios *display* (the float s5-0)) + ) + (dummy-24 self) + (suspend) + ) ) - (let ((s5-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s4-0 s5-0) - (if gp-0 - (go-virtual projectile-impact) - ) - (dummy-28 self) - ((-> self update-velocity) self) - (when (logtest? (-> self options) 2) - (set! - (-> self tween) - (seek (-> self tween) 1.0 (* 0.5 (-> *display* seconds-per-frame))) - ) - (let - ((f0-6 - (vector-vector-distance - (-> self root-override trans) - (-> self target) - ) - ) - ) - (cond - ((< f0-6 20480.0) - (set! - (-> self tween) - (seek (-> self tween) 1.0 (* 3.0 (-> *display* seconds-per-frame))) - ) - ) - ((< f0-6 40960.0) - (set! - (-> self tween) - (seek (-> self tween) 1.0 (-> *display* seconds-per-frame)) - ) - ) - ) - ) - ) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (set! (-> s3-0 quad) (-> self root-override trans quad)) - (dummy-33 - (-> self root-override) - (-> self root-override transv) - (-> self root-override root-prim collide-with) - ) - (set! - (-> self old-dist (-> self old-dist-count)) - (* 0.0625 (vector-vector-distance s3-0 (-> self root-override trans))) - ) - ) - (set! - (-> self old-dist-count) - (logand (+ (-> self old-dist-count) 1) 15) - ) - (let ((f0-16 0.0)) - (countdown (v1-35 16) - (+! f0-16 (-> self old-dist v1-35)) - ) - (if - (or - (and (logtest? (-> self root-override status) 8) (< f0-16 2048.0)) - (< f0-16 204.8) - ) - (set! gp-0 #t) - ) - ) - ) - (set-time-ratios *display* (the float s5-0)) - ) - (dummy-24 self) - (suspend) - ) + (go-virtual projectile-dissipate) + (none) ) - (go-virtual projectile-dissipate) - (none) - ) ) (defun projectile-update-velocity-space-wars ((arg0 projectile)) - (let - ((s5-1 - (vector-! - (new 'stack-no-clear 'vector) - (-> arg0 target) - (-> arg0 root-override trans) - ) - ) - ) - (let ((s4-0 (new 'stack-no-clear 'vector)) - (s3-0 - (vector-normalize-copy! - (new 'stack-no-clear 'vector) - (-> arg0 root-override transv) - 1.0 - ) + (let ((s5-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target) (-> arg0 root-override trans)))) + (let ((s4-0 (new 'stack-no-clear 'vector)) + (s3-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root-override transv) 1.0)) + (f30-0 (vector-length (-> arg0 root-override transv))) ) - (f30-0 (vector-length (-> arg0 root-override transv))) - ) - (if (logtest? (-> arg0 root-override status) 4) - (vector-flatten! s5-1 s5-1 (-> arg0 root-override local-normal)) - ) - (vector-normalize-copy! s4-0 s5-1 1.0) - (if - (and - (or - (not (handle->process (-> arg0 last-target))) - (zero? - (-> - (the-as target (handle->process (-> arg0 last-target))) - control - root-prim - prim-core - collide-as - ) - ) - ) - (< (vector-dot s4-0 s3-0) 0.0) + (if (logtest? (-> arg0 root-override status) 4) + (vector-flatten! s5-1 s5-1 (-> arg0 root-override local-normal)) + ) + (vector-normalize-copy! s4-0 s5-1 1.0) + (if (and (or (not (handle->process (-> arg0 last-target))) + (zero? (-> (the-as target (handle->process (-> arg0 last-target))) control root-prim prim-core collide-as)) + ) + (< (vector-dot s4-0 s3-0) 0.0) + ) + (go (method-of-object arg0 projectile-dissipate)) + ) + (vector-deg-slerp (-> arg0 root-override transv) s3-0 s4-0 (-> arg0 tween)) + (vector-normalize! (-> arg0 root-override transv) f30-0) ) - (go (method-of-object arg0 projectile-dissipate)) - ) - (vector-deg-slerp (-> arg0 root-override transv) s3-0 s4-0 (-> arg0 tween)) - (vector-normalize! (-> arg0 root-override transv) f30-0) + (vector+! (-> arg0 root-override transv) (-> arg0 root-override transv) s5-1) ) - (vector+! (-> arg0 root-override transv) (-> arg0 root-override transv) s5-1) - ) - (vector-v++! - (-> arg0 root-override transv) - (dummy-62 (-> arg0 root-override) (new-stack-vector0) 0.0) - ) + (vector-v++! (-> arg0 root-override transv) (dummy-62 (-> arg0 root-override) (new-stack-vector0) 0.0)) (if (< (-> arg0 max-speed) (vector-length (-> arg0 root-override transv))) - (vector-normalize! (-> arg0 root-override transv) (-> arg0 max-speed)) - ) + (vector-normalize! (-> arg0 root-override transv) (-> arg0 max-speed)) + ) (if (logtest? (-> arg0 options) 1) - (set! (-> arg0 root-override transv y) -40960.0) - ) + (set! (-> arg0 root-override transv y) -40960.0) + ) 0 (none) ) @@ -1087,90 +847,64 @@ :virtual #t :code (behavior () - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-1 (method-of-type part-tracker activate))) - (t9-1 - (the-as part-tracker gp-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 104) + -1 + #f + #f + #f + (-> self root-override root-prim prim-core) + ) + (-> gp-0 ppointer) + ) ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 104) - -1 - #f - #f - #f - (-> self root-override root-prim prim-core) - ) - (-> gp-0 ppointer) - ) + (if (nonzero? (-> self sound-id)) + (sound-stop (-> self sound-id)) + ) + (sound-play-by-name (static-sound-name "yellow-explode") (new-sound-id) 1024 0 0 1 #t) + (suspend) + (go-virtual projectile-die) + (none) ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play-by-name - (static-sound-name "yellow-explode") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (suspend) - (go-virtual projectile-die) - (none) - ) ) (defstate projectile-dissipate (projectile) :virtual #t :code (behavior () - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-1 (method-of-type part-tracker activate))) - (t9-1 - (the-as part-tracker gp-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 104) + -1 + #f + #f + #f + (-> self root-override root-prim prim-core) + ) + (-> gp-0 ppointer) + ) ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 104) - -1 - #f - #f - #f - (-> self root-override root-prim prim-core) - ) - (-> gp-0 ppointer) - ) + (if (nonzero? (-> self sound-id)) + (sound-stop (-> self sound-id)) + ) + (sound-play-by-name (static-sound-name "yellow-fizzle") (new-sound-id) 1024 0 0 1 #t) + (suspend) + (go-virtual projectile-die) + (none) ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play-by-name - (static-sound-name "yellow-fizzle") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (suspend) - (go-virtual projectile-die) - (none) - ) ) (defmethod dummy-27 projectile ((obj projectile)) @@ -1179,34 +913,26 @@ ) (defmethod dummy-26 projectile ((obj projectile)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) projectile-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 crate enemy wall-object ground-object)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) + (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 2)) + (set! (-> s5-0 event-self) 'touched) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) - (set! (-> s4-0 collide-with) (the-as uint 2957)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 3) - (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> s5-0 event-self) 'touched) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1221,27 +947,25 @@ :virtual #t :code (behavior () - (let ((v1-0 (-> self notify-handle))) - (if (handle->process v1-0) - (send-event (-> v1-0 process 0) 'notify 'die) - ) + (let ((v1-0 (-> self notify-handle))) + (if (handle->process v1-0) + (send-event (-> v1-0 process 0) 'notify 'die) + ) + ) + (dummy-18 self) + (none) ) - (dummy-18 self) - (none) - ) ) (defmethod deactivate projectile ((obj projectile)) (if (nonzero? (-> obj sound-id)) - (sound-stop (-> obj sound-id)) - ) + (sound-stop (-> obj sound-id)) + ) ((method-of-type process-drawable deactivate) obj) (none) ) -(defbehavior - projectile-init-by-other projectile - ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 uint) (arg4 handle)) +(defbehavior projectile-init-by-other projectile ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 uint) (arg4 handle)) (stack-size-set! (-> self main-thread) 512) (set! (-> self entity) arg0) (set! (-> self attack-mode) #f) @@ -1254,8 +978,8 @@ (set! (-> self options) arg3) (set! (-> self notify-handle) (the-as handle #f)) (countdown (v1-4 16) - (set! (-> self old-dist v1-4) 4095996000.0) - ) + (set! (-> self old-dist v1-4) 4095996000.0) + ) (dummy-26 self) (set! (-> self root-override dynam gravity y) 1228800.0) (set! (-> self root-override dynam gravity-length) 1228800.0) @@ -1263,37 +987,26 @@ (set! (-> self root-override trans quad) (-> arg1 quad)) (set! (-> self base-trans quad) (-> arg1 quad)) (set! (-> self parent-base quad) (-> arg1 quad)) + (quaternion-copy! (-> self root-override quat) (-> (the-as process-drawable (-> self parent 0)) root quat)) (quaternion-copy! - (-> self root-override quat) - (-> (the-as process-drawable (-> self parent 0)) root quat) - ) - (quaternion-copy! - (the-as quaternion (-> self parent-quat)) - (-> (the-as process-drawable (-> self parent 0)) root quat) - ) + (the-as quaternion (-> self parent-quat)) + (-> (the-as process-drawable (-> self parent 0)) root quat) + ) (vector-identity! (-> self root-override scale)) (set! (-> self root-override transv quad) (-> arg2 quad)) (vector-normalize-copy! (-> self base-vector) arg2 1.0) - (vector+float*! - (-> self target) - (-> self root-override trans) - (-> self root-override transv) - 2.0 - ) + (vector+float*! (-> self target) (-> self root-override trans) (-> self root-override transv) 2.0) (set! (-> self target-base quad) (-> self target quad)) (dummy-27 self) (dummy-24 self) (when (not (type-type? (-> self type) projectile-blue)) - (let ((a1-8 (new 'stack-no-clear 'collide-edge-hold-list))) - (set! (-> a1-8 num-allocs) (the-as uint 1)) - (set! (-> a1-8 num-attempts) (the-as uint *touching-list*)) - (dummy-40 (-> self root-override) a1-8) + (let ((a1-8 (new 'stack-no-clear 'collide-edge-hold-list))) + (set! (-> a1-8 num-allocs) (the-as uint 1)) + (set! (-> a1-8 num-attempts) (the-as uint *touching-list*)) + (dummy-40 (-> self root-override) a1-8) + ) ) - ) - (set! - (-> self event-hook) - (-> (method-of-object self projectile-moving) event) - ) + (set! (-> self event-hook) (-> (method-of-object self projectile-moving) event)) (dummy-25 self) (none) ) @@ -1308,320 +1021,207 @@ (set! (-> obj tween) 0.05) (logior! (-> obj options) 2) (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> obj root-override trans quad)) - (set! - (-> obj root-override trans y) - (+ -5324.8 (-> obj root-override trans y)) - ) - (vector+float*! - (-> obj target) - (-> obj root-override trans) - (-> obj root-override transv) - 2.0 - ) - (set! (-> obj target-base quad) (-> obj target quad)) - (let - ((f30-0 - (the float (sar (shl (the int (y-angle (-> obj root-override))) 48) 48)) - ) - ) - (set! - (-> obj mask) - (the-as process-mask (logior (process-mask projectile) (-> obj mask))) - ) - (if (logtest? (-> obj options) 16) - (set! (-> obj max-hits) 1) - ) - (set! - (-> *part-id-table* 356 init-specs 18 initial-valuef) - (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) - ) - (set! - (-> *part-id-table* 358 init-specs 11 initial-valuef) - (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) - ) - (sound-play-by-name - (static-sound-name "yellow-fire") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! - (-> obj sound-id) - (sound-play-by-name - (static-sound-name "yellow-buzz") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - (when (zero? (logand (-> obj options) 416)) - (let ((s4-2 (get-process *default-dead-pool* part-tracker #x4000))) - (when s4-2 - (let ((t9-10 (method-of-type part-tracker activate))) - (t9-10 - (the-as part-tracker s4-2) - obj - 'part-tracker - (the-as pointer #x70004000) - ) + (set! (-> s5-0 quad) (-> obj root-override trans quad)) + (set! (-> obj root-override trans y) (+ -5324.8 (-> obj root-override trans y))) + (vector+float*! (-> obj target) (-> obj root-override trans) (-> obj root-override transv) 2.0) + (set! (-> obj target-base quad) (-> obj target quad)) + (let ((f30-0 (the float (sar (shl (the int (y-angle (-> obj root-override))) 48) 48)))) + (set! (-> obj mask) (the-as process-mask (logior (process-mask projectile) (-> obj mask)))) + (if (logtest? (-> obj options) 16) + (set! (-> obj max-hits) 1) + ) + (set! (-> *part-id-table* 356 init-specs 18 initial-valuef) + (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) + ) + (set! (-> *part-id-table* 358 init-specs 11 initial-valuef) + (the float (sar (shl (the int (+ -16384.0 f30-0)) 48) 48)) + ) + (sound-play-by-name (static-sound-name "yellow-fire") (new-sound-id) 1024 0 0 1 #t) + (set! (-> obj sound-id) (sound-play-by-name (static-sound-name "yellow-buzz") (new-sound-id) 1024 0 0 1 #t)) + (when (zero? (logand (-> obj options) 416)) + (let ((s4-2 (get-process *default-dead-pool* part-tracker #x4000))) + (when s4-2 + (let ((t9-10 (method-of-type part-tracker activate))) + (t9-10 (the-as part-tracker s4-2) obj 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process s4-2 part-tracker-init (-> *part-group-id-table* 103) -1 #f #f #f s5-0) + (-> s4-2 ppointer) + ) + ) ) - (run-now-in-process - s4-2 - part-tracker-init - (-> *part-group-id-table* 103) - -1 - #f - #f - #f - s5-0 - ) - (-> s4-2 ppointer) - ) + (set! (-> *part-id-table* 350 init-specs 2 initial-valuef) f30-0) ) - ) - (set! (-> *part-id-table* 350 init-specs 2 initial-valuef) f30-0) ) - ) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 102) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 102) obj)) (when *target* - (case (-> *target* current-level name) - (('swamp) - (set! - (-> obj water) - (new 'process 'water-control obj 0 0.0 8192.0 2048.0) + (case (-> *target* current-level name) + (('swamp) + (set! (-> obj water) (new 'process 'water-control obj 0 0.0 8192.0 2048.0)) + (set! (-> obj water flags) (the-as uint 146)) + (set! (-> obj water height) (if (logtest? (-> obj options) 64) + 8192.0 + 10240.0 + ) + ) + (logior! (-> obj root-override root-prim collide-with) (collide-kind water)) ) - (set! (-> obj water flags) (the-as uint 146)) - (set! (-> obj water height) (if (logtest? (-> obj options) 64) - 8192.0 - 10240.0 - ) + (('ogre) + (when (zero? (logand (-> obj options) 128)) + (set! (-> obj water) (new 'process 'water-control obj 0 0.0 8192.0 2048.0)) + (set! (-> obj water flags) (the-as uint 146)) + (set! (-> obj water height) 129024.0) + (logior! (-> obj root-override root-prim collide-with) (collide-kind water)) + ) ) - (logior! (-> obj root-override root-prim collide-with) 32) - ) - (('ogre) - (when (zero? (logand (-> obj options) 128)) - (set! - (-> obj water) - (new 'process 'water-control obj 0 0.0 8192.0 2048.0) + (('finalboss) + (set! (-> obj root-override trans y) (+ 4096.0 (-> obj root-override trans y))) + (set! (-> obj water) (new 'process 'water-control obj 0 0.0 8192.0 2048.0)) + (set! (-> obj water flags) (the-as uint 146)) + (set! (-> obj water height) 1977958.4) + (logior! (-> obj root-override root-prim collide-with) (collide-kind water)) ) - (set! (-> obj water flags) (the-as uint 146)) - (set! (-> obj water height) 129024.0) - (logior! (-> obj root-override root-prim collide-with) 32) ) - ) - (('finalboss) - (set! - (-> obj root-override trans y) - (+ 4096.0 (-> obj root-override trans y)) - ) - (set! (-> obj water) (new 'process 'water-control obj 0 0.0 8192.0 2048.0)) - (set! (-> obj water flags) (the-as uint 146)) - (set! (-> obj water height) 1977958.4) - (logior! (-> obj root-override root-prim collide-with) 32) - ) ) - ) 0 (none) ) (defmethod dummy-26 projectile-yellow ((obj projectile-yellow)) (let ((t9-0 (method-of-type projectile dummy-26))) - (t9-0 obj) - ) - (logior! (-> obj root-override root-prim collide-with) 8192) + (t9-0 obj) + ) + (logior! (-> obj root-override root-prim collide-with) (collide-kind mother-spider)) (none) ) (defmethod dummy-24 projectile-yellow ((obj projectile-yellow)) (with-pp - (find-ground-and-draw-shadow - (-> obj root-override trans) - (-> obj root-override shadow-pos) - 8192.0 - (the-as uint 1) - (the-as process #f) - 12288.0 - 81920.0 - ) - (if (< (-> obj root-override trans y) (-> obj root-override shadow-pos y)) - (set! - (-> obj root-override trans y) - (+ 1228.8 (-> obj root-override shadow-pos y)) - ) - ) - (dummy-47 (-> obj root-override)) - (set! - (-> *part-id-table* 353 init-specs 16 initial-valuef) - (the-as float 30) - ) - (set! - (-> *part-id-table* 353 init-specs 16 random-rangef) - (the-as float 300) - ) - (cond - ((logtest? (-> obj options) 32) - (when (>= (- (-> *display* base-frame-counter) (-> obj state-time)) 15) - (when (< (- (-> *display* base-frame-counter) (-> obj state-time)) 150) - (set! - (-> *part-id-table* 353 init-specs 16 initial-valuef) - (the-as float 0) - ) - (set! - (-> *part-id-table* 353 init-specs 16 random-rangef) - (the-as float 0) - ) - 0 - ) - (spawn - (-> obj part) - (the-as vector (-> obj root-override root-prim prim-core)) - ) + (find-ground-and-draw-shadow + (-> obj root-override trans) + (-> obj root-override shadow-pos) + 8192.0 + (collide-kind background) + (the-as process #f) + 12288.0 + 81920.0 ) - ) - (else - (spawn - (-> obj part) - (the-as vector (-> obj root-override root-prim prim-core)) - ) - ) - ) - (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> s5-0 command) (sound-command set-param)) - (set! (-> s5-0 id) (-> obj sound-id)) - (let ((a1-3 (-> obj root-override trans))) - (let ((gp-1 pp)) - (when (= a1-3 #t) - (if - (and - gp-1 - (type-type? (-> gp-1 type) process-drawable) - (nonzero? (-> (the-as process-drawable gp-1) root)) + (if (< (-> obj root-override trans y) (-> obj root-override shadow-pos y)) + (set! (-> obj root-override trans y) (+ 1228.8 (-> obj root-override shadow-pos y))) + ) + (dummy-47 (-> obj root-override)) + (set! (-> *part-id-table* 353 init-specs 16 initial-valuef) (the-as float 30)) + (set! (-> *part-id-table* 353 init-specs 16 random-rangef) (the-as float 300)) + (cond + ((logtest? (-> obj options) 32) + (when (>= (- (-> *display* base-frame-counter) (-> obj state-time)) 15) + (when (< (- (-> *display* base-frame-counter) (-> obj state-time)) 150) + (set! (-> *part-id-table* 353 init-specs 16 initial-valuef) (the-as float 0)) + (set! (-> *part-id-table* 353 init-specs 16 random-rangef) (the-as float 0)) + 0 + ) + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core))) ) - (set! a1-3 (-> (the-as process-drawable gp-1) root trans)) - (set! a1-3 (the-as vector #f)) - ) ) + (else + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core))) + ) ) - (sound-trans-convert (-> s5-0 parms trans) a1-3) - ) - (set! (-> s5-0 parms mask) (the-as uint 32)) - (-> s5-0 id) + (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> s5-0 command) (sound-command set-param)) + (set! (-> s5-0 id) (-> obj sound-id)) + (let ((a1-3 (-> obj root-override trans))) + (let ((gp-1 pp)) + (when (= a1-3 #t) + (if (and gp-1 (type-type? (-> gp-1 type) process-drawable) (nonzero? (-> (the-as process-drawable gp-1) root))) + (set! a1-3 (-> (the-as process-drawable gp-1) root trans)) + (set! a1-3 (the-as vector #f)) + ) + ) + ) + (sound-trans-convert (-> s5-0 parms trans) a1-3) + ) + (set! (-> s5-0 parms mask) (the-as uint 32)) + (-> s5-0 id) + ) + 0 + (none) ) - 0 - (none) - ) ) (defmethod dummy-28 projectile-yellow ((obj projectile-yellow)) (cond - ((or - (not (handle->process (-> obj last-target))) - (zero? - (-> - (the-as target (handle->process (-> obj last-target))) - control - root-prim - prim-core - collide-as - ) - ) - ) - (cond - ((zero? (-> obj target-count)) - (let - ((s5-0 - (find-nearest-attackable - (-> obj parent-base) - 409600.0 - (the-as uint 0) - (the-as uint 0) - (-> obj base-vector) - (if (logtest? (-> obj options) 160) - 546.13336 - 8192.0 - ) - ) + ((or (not (handle->process (-> obj last-target))) + (zero? (-> (the-as target (handle->process (-> obj last-target))) control root-prim prim-core collide-as)) ) - ) - (let - ((s4-0 - (find-nearest-attackable - (-> obj parent-base) - 163840.0 - (the-as uint 1) - (the-as uint 0) - (-> obj base-vector) - (if (logtest? (-> obj options) 160) - 910.2222 - 8192.0 + (cond + ((zero? (-> obj target-count)) + (let ((s5-0 (find-nearest-attackable + (-> obj parent-base) + 409600.0 + (the-as uint 0) + (the-as uint 0) + (-> obj base-vector) + (if (logtest? (-> obj options) 160) + 546.13336 + 8192.0 + ) + ) + ) + ) + (let ((s4-0 (find-nearest-attackable + (-> obj parent-base) + 163840.0 + (the-as uint 1) + (the-as uint 0) + (-> obj base-vector) + (if (logtest? (-> obj options) 160) + 910.2222 + 8192.0 + ) + ) + ) + (v1-10 (find-nearest-attackable + (-> obj parent-base) + 28672.0 + (the-as uint 1) + (the-as uint 0) + (-> obj base-vector) + 16384.0 + ) + ) + ) + (if s4-0 + (set! s5-0 s4-0) + ) + (if v1-10 + (set! s5-0 v1-10) + ) + ) + (set! (-> obj last-target) (process->handle s5-0)) + (when s5-0 + (set! (-> obj target quad) (-> s5-0 root-override root-prim prim-core world-sphere quad)) + (if (= (-> s5-0 type symbol) 'mother-spider) + (set! (-> obj options) (logand -2 (-> obj options))) + ) ) - ) ) - (v1-10 - (find-nearest-attackable - (-> obj parent-base) - 28672.0 - (the-as uint 1) - (the-as uint 0) - (-> obj base-vector) - 16384.0 - ) + ) + (else + (set! (-> obj target quad) (-> obj target-base quad)) + ) + ) + ) + (else + (let ((a1-8 (handle->process (-> obj last-target)))) + (set! (-> obj target quad) (-> (the-as target a1-8) control root-prim prim-core world-sphere quad)) + ) + (if (and (< (vector-vector-xz-distance (-> obj root-override trans) (-> obj target)) 20480.0) + (< 24576.0 (fabs (- (-> obj target y) (-> obj root-override trans y)))) + ) + (set! (-> obj last-target) (the-as handle #f)) ) - ) - (if s4-0 - (set! s5-0 s4-0) - ) - (if v1-10 - (set! s5-0 v1-10) - ) - ) - (set! (-> obj last-target) (process->handle s5-0)) - (when s5-0 - (set! - (-> obj target quad) - (-> s5-0 root-override root-prim prim-core world-sphere quad) - ) - (if (= (-> s5-0 type symbol) 'mother-spider) - (set! (-> obj options) (logand -2 (-> obj options))) - ) - ) - ) ) - (else - (set! (-> obj target quad) (-> obj target-base quad)) - ) - ) ) - (else - (let ((a1-8 (handle->process (-> obj last-target)))) - (set! - (-> obj target quad) - (-> (the-as target a1-8) control root-prim prim-core world-sphere quad) - ) - ) - (if - (and - (< - (vector-vector-xz-distance (-> obj root-override trans) (-> obj target)) - 20480.0 - ) - (< 24576.0 (fabs (- (-> obj target y) (-> obj root-override trans y)))) - ) - (set! (-> obj last-target) (the-as handle #f)) - ) - ) - ) (+! (-> obj target-count) 1) 0 (none) @@ -1629,85 +1229,51 @@ (defmethod dummy-27 projectile-blue ((obj projectile-blue)) (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 204 30) - (sound-play-by-name - (static-sound-name "blue-eco-on") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) + (sound-play-by-name (static-sound-name "blue-eco-on") (new-sound-id) 1024 0 0 1 #t) (set! (-> obj mode) 2) (set! (-> obj max-speed) (-> *TARGET-bank* yellow-projectile-speed)) (set! (-> obj update-velocity) projectile-update-velocity-space-wars) - (set! - (-> obj root-override trans y) - (+ -5324.8 (-> obj root-override trans y)) - ) - (vector+float*! - (-> obj target) - (-> obj root-override trans) - (-> obj root-override transv) - 2.0 - ) + (set! (-> obj root-override trans y) (+ -5324.8 (-> obj root-override trans y))) + (vector+float*! (-> obj target) (-> obj root-override trans) (-> obj root-override transv) 2.0) (set! (-> obj target-base quad) (-> obj target quad)) - (set! - (-> obj mask) - (the-as process-mask (logior (process-mask ambient) (-> obj mask))) - ) + (set! (-> obj mask) (the-as process-mask (logior (process-mask ambient) (-> obj mask)))) (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 42) obj)) - (set! (-> obj root-override root-prim collide-with) (the-as uint 1)) + (set! (-> obj root-override root-prim collide-with) (collide-kind background)) (let* ((s5-1 (handle->process (-> obj last-target))) - (v1-20 - (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) - s5-1 - ) - ) + (v1-20 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) + s5-1 + ) + ) ) - (if v1-20 - (set! - (-> obj joint-num) - (rand-vu-int-range - 3 - (+ (-> (the-as process-drawable v1-20) node-list length) -1) - ) - ) + (if v1-20 + (set! (-> obj joint-num) (rand-vu-int-range 3 (+ (-> (the-as process-drawable v1-20) node-list length) -1))) + ) ) - ) 0 (none) ) (defmethod dummy-26 projectile-blue ((obj projectile-blue)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) projectile-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) + (set! (-> s4-0 collide-with) (collide-kind background)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) + (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 2)) + (set! (-> s5-0 event-self) 'touched) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) - (set! (-> s4-0 collide-with) (the-as uint 1)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 3) - (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> s5-0 event-self) 'touched) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -1715,96 +1281,74 @@ (defun spawn-projectile-blue ((arg0 target)) (local-vars (sv-48 entity)) (with-pp - (when arg0 - (let ((s3-0 (rand-vu-int-range 3 (+ (-> arg0 node-list length) -1))) - (gp-0 (new-stack-vector0)) - ) - (set-vector! - gp-0 - (rand-vu-float-range -81920.0 81920.0) - (rand-vu-float-range -81920.0 81920.0) - (rand-vu-float-range -81920.0 81920.0) - 1.0 - ) - (let ((s4-1 (get-process *default-dead-pool* projectile-blue #x4000))) - (when s4-1 - (let ((t9-5 (method-of-type projectile-blue activate))) - (t9-5 - (the-as projectile-blue s4-1) - pp - 'projectile-blue - (the-as pointer #x70004000) - ) - ) - (let ((s2-0 run-function-in-process) - (s1-0 s4-1) - (s0-0 projectile-init-by-other) - ) - (set! sv-48 (-> pp entity)) - (let - ((a3-1 - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> arg0 node-list data s3-0) + (when arg0 + (let ((s3-0 (rand-vu-int-range 3 (+ (-> arg0 node-list length) -1))) + (gp-0 (new-stack-vector0)) ) - ) - (t1-0 8) - (t2-0 (process->handle pp)) - ) - ((the-as - (function process function object object object object object object) - s2-0 - ) - s1-0 - s0-0 - sv-48 - a3-1 + (set-vector! gp-0 - t1-0 - t2-0 + (rand-vu-float-range -81920.0 81920.0) + (rand-vu-float-range -81920.0 81920.0) + (rand-vu-float-range -81920.0 81920.0) + 1.0 + ) + (let ((s4-1 (get-process *default-dead-pool* projectile-blue #x4000))) + (when s4-1 + (let ((t9-5 (method-of-type projectile-blue activate))) + (t9-5 (the-as projectile-blue s4-1) pp 'projectile-blue (the-as pointer #x70004000)) + ) + (let ((s2-0 run-function-in-process) + (s1-0 s4-1) + (s0-0 projectile-init-by-other) + ) + (set! sv-48 (-> pp entity)) + (let ((a3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> arg0 node-list data s3-0))) + (t1-0 8) + (t2-0 (process->handle pp)) + ) + ((the-as (function process function object object object object object object) s2-0) + s1-0 + s0-0 + sv-48 + a3-1 + gp-0 + t1-0 + t2-0 + ) + ) + ) + (-> s4-1 ppointer) + ) ) - ) ) - (-> s4-1 ppointer) - ) ) - ) + 0 + (none) ) - 0 - (none) - ) ) (defmethod dummy-28 projectile-blue ((obj projectile-blue)) (let* ((s5-0 (handle->process (-> obj last-target))) - (v1-4 - (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) - s5-0 - ) - ) + (v1-4 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) + s5-0 + ) + ) ) - (if v1-4 - (vector<-cspace! - (-> obj target) - (-> (the-as process-drawable v1-4) node-list data (-> obj joint-num)) - ) + (if v1-4 + (vector<-cspace! (-> obj target) (-> (the-as process-drawable v1-4) node-list data (-> obj joint-num))) + ) ) - ) - (if - (< - (vector-vector-distance (-> obj target) (-> obj root-override trans)) - 4096.0 - ) - (go (method-of-object obj projectile-impact)) - ) + (if (< (vector-vector-distance (-> obj target) (-> obj root-override trans)) 4096.0) + (go (method-of-object obj projectile-impact)) + ) 0 (none) ) (defmethod dummy-24 projectile-blue ((obj projectile-blue)) (if (rand-vu-percent? 0.75) - (eco-blue-glow (the-as vector (-> obj root-override root-prim prim-core))) - ) + (eco-blue-glow (the-as vector (-> obj root-override root-prim prim-core))) + ) 0 (none) ) @@ -1813,18 +1357,18 @@ :virtual #t :code (behavior () - (dummy-18 self) - (none) - ) + (dummy-18 self) + (none) + ) ) (defstate projectile-dissipate (projectile-blue) :virtual #t :code (behavior () - (go-virtual projectile-die) - (none) - ) + (go-virtual projectile-die) + (none) + ) ) diff --git a/goal_src/engine/game/task/process-taskable.gc b/goal_src/engine/game/task/process-taskable.gc index 7ffa881c4f..c95fba5be2 100644 --- a/goal_src/engine/game/task/process-taskable.gc +++ b/goal_src/engine/game/task/process-taskable.gc @@ -273,8 +273,8 @@ (defbehavior process-taskable-anim-loop process-taskable () (when (!= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (get-art-elem self) ) (ja-channel-push! 1 60) @@ -356,16 +356,17 @@ (defstate lose (process-taskable) :virtual #t :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1500) - (or - (not *target*) - (< 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1500) + (or (not *target*) + (< 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + ) (go-virtual idle) ) ((-> self cur-trans-hook)) @@ -534,12 +535,12 @@ ) ) (set! (-> a0-30 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -580,7 +581,11 @@ :exit process-taskable-play-anim-exit :trans - (behavior () (process-taskable-play-anim-trans) ((-> self cur-trans-hook)) (none)) + (behavior () + (process-taskable-play-anim-trans) + ((-> self cur-trans-hook)) + (none) + ) :code (behavior () (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (get-accept-anim self #t)) @@ -601,7 +606,11 @@ :exit process-taskable-play-anim-exit :trans - (behavior () (process-taskable-play-anim-trans) ((-> self cur-trans-hook)) (none)) + (behavior () + (process-taskable-play-anim-trans) + ((-> self cur-trans-hook)) + (none) + ) :code (behavior () (process-taskable-play-anim-code (the-as art-joint-anim (get-art-elem self)) (get-reject-anim self #t)) @@ -795,7 +804,10 @@ :enter (the-as (function none :behavior process-taskable) process-taskable-hide-enter) :exit - (behavior () (process-taskable-hide-exit (= (-> self next-state name) 'hidden)) (none)) + (behavior () + (process-taskable-hide-exit (= (-> self next-state name) 'hidden)) + (none) + ) :trans (behavior () (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) @@ -813,10 +825,9 @@ ;; WARN: disable def twice: 4. This may happen when a cond (no else) is nested inside of another conditional, but it should be rare. (defmethod TODO-RENAME-50 process-taskable ((obj process-taskable)) (if *target* - (or - (not *target*) - (< 245760.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans))) - ) + (or (not *target*) + (< 245760.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans))) + ) (< 60397978000.0 (vector-vector-distance-squared (the-as vector (-> obj root-override root-prim prim-core)) (camera-pos)) ) @@ -833,7 +844,10 @@ :enter (the-as (function none :behavior process-taskable) process-taskable-hide-enter) :exit - (behavior () (process-taskable-hide-exit (= (-> self next-state name) 'hidden-other)) (none)) + (behavior () + (process-taskable-hide-exit (= (-> self next-state name) 'hidden-other)) + (none) + ) :trans (behavior () (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) @@ -918,7 +932,11 @@ (none) ) :trans - (behavior () (draw-npc-shadow self) ((-> self cur-trans-hook)) (none)) + (behavior () + (draw-npc-shadow self) + ((-> self cur-trans-hook)) + (none) + ) :code (behavior ((arg0 handle)) (clone-anim arg0 (-> self center-joint-index) #t "") @@ -1020,24 +1038,22 @@ ) ((begin (dummy-46 self) - (and - (not - (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) - ) - (< (-> (target-pos 0) y) (+ 8192.0 (-> self root-override root-prim prim-core world-sphere y))) - (< (vector-vector-distance (target-pos 0) (the-as vector (-> self root-override root-prim prim-core))) - 32768.0 + (and (not + (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + (< (-> (target-pos 0) y) (+ 8192.0 (-> self root-override root-prim prim-core world-sphere y))) + (< (vector-vector-distance (target-pos 0) (the-as vector (-> self root-override root-prim prim-core))) + 32768.0 + ) + (= (-> *level* loading-level) (-> *level* level-default)) + (not (movie?)) + (not (level-hint-displayed?)) + (none-reserved? *art-control*) + (not *progress-process*) + (and (not (handle->process (-> *game-info* other-camera-handle))) (close-anim-file! self)) ) - (= (-> *level* loading-level) (-> *level* level-default)) - (not (movie?)) - (not (level-hint-displayed?)) - (none-reserved? *art-control*) - (not *progress-process*) - (and (not (handle->process (-> *game-info* other-camera-handle))) (close-anim-file! self)) - ) ) (first-any (-> self tasks) #t) (when (target-above-threshold? self) @@ -1084,11 +1100,10 @@ (dummy-33 self) ) (draw-npc-shadow self) - (when (and (-> self been-kicked) (and - (not *progress-process*) - (process-grab? *target*) - (not (handle->process (-> *game-info* other-camera-handle))) - ) + (when (and (-> self been-kicked) (and (not *progress-process*) + (process-grab? *target*) + (not (handle->process (-> *game-info* other-camera-handle))) + ) ) (set! (-> self been-kicked) #f) (send-event *target* 'trans 'save (-> self old-target-pos)) @@ -1119,10 +1134,10 @@ (defmethod initialize-collision process-taskable ((obj process-taskable) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) arg0) (set-vector! (-> s4-0 local-sphere) (-> arg1 x) (-> arg1 y) (-> arg1 z) (-> arg1 w)) (set-root-prim! s5-0 s4-0) @@ -1228,12 +1243,11 @@ ) (defmethod play-ambient ambient-control ((obj ambient-control) (arg0 string) (arg1 symbol) (arg2 vector)) - (when (and - (not (string= arg0 (-> obj last-ambient))) - (or arg1 (can-hint-be-played? (game-text-id one) (the-as entity #f) (the-as string #f))) - (= (-> *level* loading-level) (-> *level* level-default)) - (ambient-hint-spawn arg0 arg2 *entity-pool* 'ambient) - ) + (when (and (not (string= arg0 (-> obj last-ambient))) + (or arg1 (can-hint-be-played? (game-text-id one) (the-as entity #f) (the-as string #f))) + (= (-> *level* loading-level) (-> *level* level-default)) + (ambient-hint-spawn arg0 arg2 *entity-pool* 'ambient) + ) (set! (-> obj last-ambient-time) (-> *display* game-frame-counter)) (set! (-> obj last-ambient) arg0) (return #t) @@ -1272,13 +1286,12 @@ ) (cond ((t9-0 (rtype-of v1-1) string) - (let ((v1-8 - (dummy-10 - (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) - (the-as string (-> arg3 param 0)) - (the-as type #f) - ) - ) + (let ((v1-8 (dummy-10 + (-> (the-as process-taskable (-> self hand process 0)) draw jgeo) + (the-as string (-> arg3 param 0)) + (the-as type #f) + ) + ) ) (when v1-8 (set! v0-0 (+ (-> v1-8 number) 1)) @@ -1383,13 +1396,11 @@ (let ((a0-25 (-> self hand process 0))) (when (or (-> self die?) (and (not (-> self survive-anim-end?)) (ja-anim-done? a0-25))) (let ((gp-1 (-> *display* base-frame-counter))) - (while (and - (< (- (-> *display* base-frame-counter) gp-1) #x4650) - (or - (and (-> self entity) (not (is-object-visible? (-> self entity extra level) (-> self entity extra vis-id)))) - (< 81920.0 (vector-vector-distance (camera-pos) (-> *math-camera* trans))) - ) - ) + (while (and (< (- (-> *display* base-frame-counter) gp-1) #x4650) + (or (and (-> self entity) (not (is-object-visible? (-> self entity extra level) (-> self entity extra vis-id)))) + (< 81920.0 (vector-vector-distance (camera-pos) (-> *math-camera* trans))) + ) + ) (suspend) ) ) diff --git a/goal_src/engine/gfx/shadow/shadow-h.gc b/goal_src/engine/gfx/shadow/shadow-h.gc index 1e7d3855c0..4a7fd20945 100644 --- a/goal_src/engine/gfx/shadow/shadow-h.gc +++ b/goal_src/engine/gfx/shadow/shadow-h.gc @@ -6,7 +6,7 @@ ;; dgos: GAME, ENGINE ;; forward def - projectiles -(define-extern find-ground-and-draw-shadow (function vector vector float uint process float float none)) +(define-extern find-ground-and-draw-shadow (function vector vector float collide-kind process float float none)) ;; definition of type fake-shadow (deftype fake-shadow (structure) diff --git a/goal_src/engine/gfx/shadow/shadow.gc b/goal_src/engine/gfx/shadow/shadow.gc index adc87ff122..b91a698dfe 100644 --- a/goal_src/engine/gfx/shadow/shadow.gc +++ b/goal_src/engine/gfx/shadow/shadow.gc @@ -5,258 +5,186 @@ ;; name in dgo: shadow ;; dgos: GAME, ENGINE -;; definition for function add-fake-shadow-to-buffer -;; INFO: Return type mismatch int vs none. -(defun - add-fake-shadow-to-buffer - ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int)) +;; DECOMP BEGINS + +(defun add-fake-shadow-to-buffer ((arg0 vector) (arg1 vector) (arg2 float) (arg3 int)) (let ((v1-0 *fake-shadow-buffer*)) - (when (< (-> v1-0 num-shadows) 32) - (let ((t0-5 (-> v1-0 data (-> v1-0 num-shadows)))) - (set! (-> t0-5 px) (-> arg0 x)) - (set! (-> t0-5 py) (-> arg0 y)) - (set! (-> t0-5 pz) (-> arg0 z)) - (set! (-> t0-5 scale) arg2) - (set! (-> t0-5 qx) (-> arg1 x)) - (set! (-> t0-5 qy) (-> arg1 y)) - (set! (-> t0-5 qz) (-> arg1 z)) - (set! (-> t0-5 flags) arg3) - ) - (+! (-> v1-0 num-shadows) 1) + (when (< (-> v1-0 num-shadows) 32) + (let ((t0-5 (-> v1-0 data (-> v1-0 num-shadows)))) + (set! (-> t0-5 px) (-> arg0 x)) + (set! (-> t0-5 py) (-> arg0 y)) + (set! (-> t0-5 pz) (-> arg0 z)) + (set! (-> t0-5 scale) arg2) + (set! (-> t0-5 qx) (-> arg1 x)) + (set! (-> t0-5 qy) (-> arg1 y)) + (set! (-> t0-5 qz) (-> arg1 z)) + (set! (-> t0-5 flags) arg3) + ) + (+! (-> v1-0 num-shadows) 1) + ) ) - ) 0 (none) ) -;; definition for function swap-fake-shadow-buffers -;; INFO: Return type mismatch int vs none. (defun swap-fake-shadow-buffers () (set! *fake-shadow-buffer* (if (= *fake-shadow-buffer* *fake-shadow-buffer-1*) - *fake-shadow-buffer-2* - *fake-shadow-buffer-1* - ) - ) + *fake-shadow-buffer-2* + *fake-shadow-buffer-1* + ) + ) (set! (-> *fake-shadow-buffer* num-shadows) 0) 0 (none) ) -;; definition for function draw-shadow -;; INFO: Return type mismatch int vs none. -(defun - draw-shadow - ((arg0 vector) - (arg1 vector) - (arg2 vector) - (arg3 float) - (arg4 float) - (arg5 float) - ) +(defun draw-shadow ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 float) (arg4 float) (arg5 float)) (let ((f0-1 (- (-> arg0 y) (-> arg1 y)))) - (if (< f0-1 arg4) - (add-fake-shadow-to-buffer - arg1 - arg2 - (* (- 1.0 (/ f0-1 arg4)) arg3) - (the-as int arg5) - ) + (if (< f0-1 arg4) + (add-fake-shadow-to-buffer arg1 arg2 (* (- 1.0 (/ f0-1 arg4)) arg3) (the-as int arg5)) + ) ) - ) 0 (none) ) -;; definition for function compute-and-draw-shadow -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun - compute-and-draw-shadow - ((arg0 vector) - (arg1 vector) - (arg2 vector) - (arg3 vector) - (arg4 float) - (arg5 float) - ) +(defun compute-and-draw-shadow ((arg0 vector) (arg1 vector) (arg2 vector) (arg3 vector) (arg4 float) (arg5 float)) (local-vars - (v1-10 float) - (v1-11 float) - (sv-96 vector) - (sv-112 (function quaternion vector float quaternion)) - (sv-128 vector) - (sv-144 vector) - ) + (v1-10 float) + (v1-11 float) + (sv-96 vector) + (sv-112 (function quaternion vector float quaternion)) + (sv-128 vector) + (sv-144 vector) + ) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) ) - (init-vf0-vector) - (set! sv-96 arg2) - (let ((s4-0 arg3) - (s3-0 arg4) - (s2-0 arg5) - ) - (when (< (- (-> arg0 y) (-> arg1 y)) s3-0) - (set! sv-144 (new 'stack-no-clear 'vector)) - (let ((s0-0 (new 'stack-no-clear 'vector)) - (s1-0 (new 'stack-no-clear 'sparticle-cpuinfo)) - ) - (set! (-> arg1 y) (+ 40.96 (-> arg1 y))) - (set! (-> sv-144 x) (-> sv-96 z)) - (set! (-> sv-144 y) 0.0) - (set! (-> sv-144 z) (- (-> sv-96 x))) - (vector-normalize! sv-144 1.0) - (set! sv-112 quaternion-vector-angle!) - (set! sv-128 s0-0) - (let ((a2-1 (acos (-> sv-96 y)))) - (sv-112 (the-as quaternion sv-128) sv-144 a2-1) - ) - (let ((v1-9 s1-0)) - (cond - ((< (-> s0-0 w) 0.0) - (.lvf vf1 (&-> v1-9 vel-sxvel quad)) - (.lvf vf2 (&-> s0-0 quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-9 vel-sxvel quad) vf1) - (.mov v1-10 vf1) + (init-vf0-vector) + (set! sv-96 arg2) + (let ((s4-0 arg3) + (s3-0 arg4) + (s2-0 arg5) + ) + (when (< (- (-> arg0 y) (-> arg1 y)) s3-0) + (set! sv-144 (new 'stack-no-clear 'vector)) + (let ((s0-0 (new 'stack-no-clear 'vector)) + (s1-0 (new 'stack-no-clear 'sparticle-cpuinfo)) + ) + (set! (-> arg1 y) (+ 40.96 (-> arg1 y))) + (set! (-> sv-144 x) (-> sv-96 z)) + (set! (-> sv-144 y) 0.0) + (set! (-> sv-144 z) (- (-> sv-96 x))) + (vector-normalize! sv-144 1.0) + (set! sv-112 quaternion-vector-angle!) + (set! sv-128 s0-0) + (let ((a2-1 (acos (-> sv-96 y)))) + (sv-112 (the-as quaternion sv-128) sv-144 a2-1) + ) + (let ((v1-9 s1-0)) + (cond + ((< (-> s0-0 w) 0.0) + (.lvf vf1 (&-> v1-9 vel-sxvel quad)) + (.lvf vf2 (&-> s0-0 quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-9 vel-sxvel quad) vf1) + (.mov v1-10 vf1) + ) + (else + (.lvf vf1 (&-> v1-9 vel-sxvel quad)) + (.lvf vf2 (&-> s0-0 quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> v1-9 vel-sxvel quad) vf1) + (.mov v1-11 vf1) + ) + ) + ) + (draw-shadow arg0 arg1 (-> s1-0 vel-sxvel) (the-as float s4-0) s3-0 s2-0) + ) + ) + ) + 0 + (none) + ) + ) + +(defun find-ground-and-draw-shadow ((arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 process) (arg5 float) (arg6 float)) + (let ((s2-0 (new 'stack-no-clear 'vector))) + (set! (-> s2-0 quad) (-> arg0 quad)) + (new 'stack-no-clear 'vector) + (+! (-> s2-0 y) arg5) + (let ((s4-0 (new 'stack-no-clear 'collide-tri-result))) + (cond + ((>= (fill-and-probe-using-y-probe *collide-cache* s2-0 arg6 arg3 arg4 s4-0 (the-as uint 1)) 0.0) + (if (!= arg2 0.0) + (compute-and-draw-shadow s2-0 (-> s4-0 intersect) (-> s4-0 normal) (the-as vector arg2) arg6 (the-as float 0)) + ) + (if (and arg1 (!= (-> s4-0 pat material) 3)) + (set! (-> arg1 quad) (-> s4-0 intersect quad)) + ) ) (else - (.lvf vf1 (&-> v1-9 vel-sxvel quad)) - (.lvf vf2 (&-> s0-0 quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> v1-9 vel-sxvel quad) vf1) - (.mov v1-11 vf1) - ) + (if arg1 + (vector+float*! arg1 arg0 (-> *standard-dynamics* gravity-normal) (- arg6)) + ) + ) ) - ) - (draw-shadow arg0 arg1 (-> s1-0 vel-sxvel) (the-as float s4-0) s3-0 s2-0) ) - ) ) - 0 - (none) - ) - ) - -;; definition for function find-ground-and-draw-shadow -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun - find-ground-and-draw-shadow - ((arg0 vector) - (arg1 vector) - (arg2 float) - (arg3 uint) - (arg4 process) - (arg5 float) - (arg6 float) - ) - (let ((s2-0 (new 'stack-no-clear 'vector))) - (set! (-> s2-0 quad) (-> arg0 quad)) - (new 'stack-no-clear 'vector) - (+! (-> s2-0 y) arg5) - (let ((s4-0 (new 'stack-no-clear 'collide-tri-result))) - (cond - ((>= - (fill-and-probe-using-y-probe - *collide-cache* - s2-0 - arg6 - arg3 - arg4 - s4-0 - (the-as uint 1) - ) - 0.0 - ) - (if (!= arg2 0.0) - (compute-and-draw-shadow - s2-0 - (-> s4-0 intersect) - (-> s4-0 normal) - (the-as vector arg2) - arg6 - (the-as float 0) - ) - ) - (if (and arg1 (!= (-> s4-0 pat material) 3)) - (set! (-> arg1 quad) (-> s4-0 intersect quad)) - ) - ) - (else - (if arg1 - (vector+float*! - arg1 - arg0 - (-> *standard-dynamics* gravity-normal) - (- arg6) - ) - ) - ) - ) - ) - ) 0 (none) ) -;; definition for function do-target-shadow -;; INFO: Return type mismatch int vs none. -;; Used lq/sq (defbehavior do-target-shadow target () - (if - (and - (logtest? (-> self control status) 1) - (!= (-> self control unknown-surface00 mode) 'swim) - (!= (-> self control unknown-surface00 mode) 'dive) - (!= (-> self next-state name) 'target-flop) - (zero? (logand (-> self draw status) 38)) - ) - (set! (-> self control shadow-pos quad) (-> self control trans quad)) - (find-ground-and-draw-shadow - (-> self control trans) - (-> self control shadow-pos) - 0.0 - (-> (the-as collide-shape-prim (-> self control root-prim)) collide-with) - self - 0.0 - 81920.0 - ) - ) + (if (and (logtest? (-> self control status) 1) + (!= (-> self control unknown-surface00 mode) 'swim) + (!= (-> self control unknown-surface00 mode) 'dive) + (!= (-> self next-state name) 'target-flop) + (zero? (logand (-> self draw status) (draw-status drwf01 drwf02 drwf05))) + ) + (set! (-> self control shadow-pos quad) (-> self control trans quad)) + (find-ground-and-draw-shadow + (-> self control trans) + (-> self control shadow-pos) + 0.0 + (-> (the-as collide-shape-prim (-> self control root-prim)) collide-with) + self + 0.0 + 81920.0 + ) + ) 0 (none) ) -;; failed to figure out what this is: -(set! - (-> *part-id-table* 362) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 8.0) - (sp-flt spt-scale-x (meters 0.3)) - (sp-rnd-flt spt-rot-z (degrees -180.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 90.0) - (sp-flt spt-g 90.0) - (sp-flt spt-b 90.0) - (sp-rnd-flt spt-a 20.0 20.0 1.0) - (sp-flt spt-vel-y (meters 0.002)) - (sp-flt spt-scalevel-x (meters 0.004166667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.3) - (sp-int spt-timer 5004) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-launchrot-x (degrees -20.0) (degrees 15.0) 1.0) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.2)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 362) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-flt spt-scale-x (meters 0.3)) + (sp-rnd-flt spt-rot-z (degrees -180.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 90.0) + (sp-flt spt-g 90.0) + (sp-flt spt-b 90.0) + (sp-rnd-flt spt-a 20.0 20.0 1.0) + (sp-flt spt-vel-y (meters 0.002)) + (sp-flt spt-scalevel-x (meters 0.004166667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.3) + (sp-int spt-timer 5004) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-launchrot-x (degrees -20.0) (degrees 15.0) 1.0) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees -180.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.2)) + (sp-end) + ) + ) + ) + diff --git a/goal_src/engine/target/logic-target.gc b/goal_src/engine/target/logic-target.gc index c4a4869785..65e9b22e19 100644 --- a/goal_src/engine/target/logic-target.gc +++ b/goal_src/engine/target/logic-target.gc @@ -9,10 +9,9 @@ (defbehavior build-conversions target ((arg0 vector)) (surface-mult! (-> self control unknown-surface01) (-> self control unknown-surface00) (-> self control surf)) - (when (and - (and (= (-> self fact-info-target eco-type) 3) (>= (-> self fact-info-target eco-level) 1.0)) - (or (= (-> self control unknown-surface00 name) 'run) (= (-> self control unknown-surface00 name) 'jump)) - ) + (when (and (and (= (-> self fact-info-target eco-type) 3) (>= (-> self fact-info-target eco-level) 1.0)) + (or (= (-> self control unknown-surface00 name) 'run) (= (-> self control unknown-surface00 name) 'jump)) + ) (set! (-> self control unknown-surface01 target-speed) (+ 20480.0 (-> self control unknown-surface01 target-speed)) ) @@ -557,16 +556,15 @@ (if (logtest? (-> self control unknown-surface01 flags) 8) (set! (-> v1-6 0) (the-as uint (-> *display* base-frame-counter))) ) - (and - (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> v1-6 0)))) (the-as uint 300)) - (< f0-1 0.0) - (< 32768.0 f1-1) - (< 0.7 (-> self control unknown-float20)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) 90) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) 90) - (logtest? (-> self control status) 1) - (and (< 0.7 (-> self control surface-angle)) #t) - ) + (and (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> v1-6 0)))) (the-as uint 300)) + (< f0-1 0.0) + (< 32768.0 f1-1) + (< 0.7 (-> self control unknown-float20)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) 90) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) 90) + (logtest? (-> self control status) 1) + (and (< 0.7 (-> self control surface-angle)) #t) + ) ) ) ) @@ -760,33 +758,32 @@ ) ) ) - (if (and - (zero? (logand (-> self control status) 8)) - (logtest? (-> self control old-status) 8) - (logtest? (-> self control unknown-surface00 flags) 2048) - (< 0.0 (-> gp-0 y)) - (< 0.0 (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (the-as vector (-> self control unknown-sphere-array00 1 prim-core)) - (-> self control unknown-vector70) - ) - ) - ) - ) + (if (and (zero? (logand (-> self control status) 8)) + (logtest? (-> self control old-status) 8) + (logtest? (-> self control unknown-surface00 flags) 2048) + (< 0.0 (-> gp-0 y)) + (< 0.0 (vector-dot + (-> self control dynam gravity-normal) + (vector-! + (new 'stack-no-clear 'vector) + (the-as vector (-> self control unknown-sphere-array00 1 prim-core)) + (-> self control unknown-vector70) + ) + ) + ) + ) (set! (-> self control unknown-dword70) (-> *display* base-frame-counter)) ) (if (< (- (-> *display* base-frame-counter) (-> self control unknown-dword70)) 60) (set! f30-4 (+ 204800.0 f30-4)) ) - (if (and (zero? (logand (-> self control status) 8)) (and - (logtest? (-> self control old-status) 8) - (logtest? (-> self control unknown-surface00 flags) 2048) - (< 0.0 (-> gp-0 y)) - (< (-> gp-0 z) 0.0) - ) - ) + (if (and (zero? (logand (-> self control status) 8)) + (and (logtest? (-> self control old-status) 8) + (logtest? (-> self control unknown-surface00 flags) 2048) + (< 0.0 (-> gp-0 y)) + (< (-> gp-0 z) 0.0) + ) + ) (set! (-> gp-0 z) 0.0) ) (let ((s4-2 (vector-! (new-stack-vector0) s5-0 gp-0))) @@ -899,18 +896,16 @@ (defbehavior do-rotations2 target () (let ((gp-0 (vector-z-quaternion! (new-stack-vector0) (-> self control dir-targ))) (s5-0 - (if (and - (or - (zero? (logand (logior (-> self control status) (-> self control old-status)) 5)) - (< (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) 150) - (!= (-> self next-state name) 'target-walk) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (< (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) 150) - (logtest? (-> self control unknown-surface01 flags) 16) - (!= (-> self control unknown-float41) 0.0) - ) - (zero? (logand (-> self control unknown-surface01 flags) 32)) - ) + (if (and (or (zero? (logand (logior (-> self control status) (-> self control old-status)) 5)) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword20)) 150) + (!= (-> self next-state name) 'target-walk) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword21)) 150) + (logtest? (-> self control unknown-surface01 flags) 16) + (!= (-> self control unknown-float41) 0.0) + ) + (zero? (logand (-> self control unknown-surface01 flags) 32)) + ) (-> self control unknown-vector20) (-> self control transv) ) @@ -979,10 +974,9 @@ (let ((gp-0 (-> self current-level))) (set! (-> self current-level) (level-get-target-inside *level*)) (if (and (-> self current-level) (>= (-> *level-task-data-remap* length) (-> self current-level info index))) - (+! - (-> *game-info* in-level-time (-> *level-task-data-remap* (+ (-> self current-level info index) -1))) - (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) - ) + (+! (-> *game-info* in-level-time (-> *level-task-data-remap* (+ (-> self current-level info index) -1))) + (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) + ) ) (if (and (or (not gp-0) (!= (-> gp-0 name) (-> self current-level name))) (-> self current-level)) (send-event self 'level-enter (-> self current-level name)) @@ -1000,11 +994,10 @@ ((logtest? (-> self control status) 1) (set! (-> self control unknown-dword11) (-> *display* base-frame-counter)) (set! (-> self control unknown-vector52 quad) (-> self control trans quad)) - (if (and - (>= (-> self control coverage) 1.0) - (zero? (logand (-> self control status) 1056)) - (logtest? (-> self control status) 2) - ) + (if (and (>= (-> self control coverage) 1.0) + (zero? (logand (-> self control status) 1056)) + (logtest? (-> self control status) 2) + ) (set! (-> self control unknown-vector54 quad) (-> self control trans quad)) ) ((-> self control unknown-surface01 touch-hook)) @@ -1018,45 +1011,42 @@ (set! (-> self control unknown-vector111 x) (-> v1-25 x)) (set! (-> self control unknown-vector111 z) (-> v1-25 z)) (if (< (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) v1-25) - ) - 0.0 + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector111) v1-25) ) + 0.0 + ) (set! (-> self control unknown-vector111 y) (-> v1-25 y)) ) ) ) ) - (when (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons triangle) - ) - (zero? (-> self control unknown-int40)) - (zero? (logand (-> *kernel-context* prevent-from-run) (process-mask movie))) - ) - (if (and - (= (-> self cam-user-mode) 'normal) - (logtest? (-> self control unknown-surface00 flags) 1) - (zero? (logand (-> self control root-prim prim-core action) #x7380)) - (-> *setting-control* current allow-look-around) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self no-look-around-wait))) 15) - (not (and - (= (-> self control ground-pat material) (pat-material ice)) - (< 4096.0 (-> self control unknown-float01)) - ) - ) - ) + (when (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons triangle) + ) + (zero? (-> self control unknown-int40)) + (zero? (logand (-> *kernel-context* prevent-from-run) (process-mask movie))) + ) + (if (and (= (-> self cam-user-mode) 'normal) + (logtest? (-> self control unknown-surface00 flags) 1) + (zero? + (logand (-> self control root-prim prim-core action) (collide-action ca-7 ca-8 ca-9 ca-12 ca-13 ca-14)) + ) + (-> *setting-control* current allow-look-around) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self no-look-around-wait))) 15) + (not (and (= (-> self control ground-pat material) (pat-material ice)) + (< 4096.0 (-> self control unknown-float01)) + ) + ) + ) (send-event self 'change-mode 'look-around) ) ) - (when (and - (= *cheat-mode* 'debug) - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) - (not *pause-lock*) - (zero? (logand (-> self state-flags) 768)) - ) + (when (and (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + (not *pause-lock*) + (zero? (logand (-> self state-flags) 768)) + ) (if (!= (-> self next-state name) 'target-falling) (send-event self 'change-mode 'falling) ) @@ -1100,50 +1090,42 @@ (set! (-> self control surf) *standard-ground-surface*) ) (let ((f0-17 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) - (if (and - (or - (logtest? (-> self control unknown-surface01 flags) 1024) - (and (= (-> self next-state name) 'target-walk) (zero? (logand (-> self control status) 1))) - ) - (< f0-17 0.0) - (or - (not - (and - (= *cheat-mode* 'debug) - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) - ) - ) - *pause-lock* - ) - (and - (>= (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) + (if (and (or (logtest? (-> self control unknown-surface01 flags) 1024) + (and (= (-> self next-state name) 'target-walk) (zero? (logand (-> self control status) 1))) + ) + (< f0-17 0.0) + (or (not + (and (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) + *pause-lock* + ) + (and (>= (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) + ) + 9420.8 ) - 9420.8 + (zero? (logand (-> self control root-prim prim-core action) (collide-action ca-9 ca-14))) + #t ) - (zero? (logand (-> self control root-prim prim-core action) #x4200)) - #t - ) - ) - (logior! (-> self control root-prim prim-core action) 64) - (set! (-> self control root-prim prim-core action) (logand -65 (-> self control root-prim prim-core action))) + ) + (logior! (-> self control root-prim prim-core action) (collide-action ca-6)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-6)) ) ) (let ((v1-146 (-> self current-level))) - (when (and - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 600) - (and - v1-146 - (< (-> self control trans y) (-> v1-146 info bottom-height)) - (not - (and - (= *cheat-mode* 'debug) - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) - ) - ) - ) - ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 600) + (and v1-146 + (< (-> self control trans y) (-> v1-146 info bottom-height)) + (not + (and (= *cheat-mode* 'debug) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) + ) + ) (let ((a1-32 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-32 from) self) (set! (-> a1-32 num-params) 2) @@ -1279,18 +1261,16 @@ (let ((s4-1 (vector-! (new-stack-vector0) (-> s5-0 center-hold) (-> self control unknown-vector90)))) (set! (-> self control unknown-float110) (vector-length s4-1)) (cond - ((and - (< 819.2 (-> self control unknown-float110)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 60) - ) + ((and (< 819.2 (-> self control unknown-float110)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 60) + ) (vector-normalize! s4-1 1228.8) (TODO-RENAME-28 (-> self control) s4-1) (vector-float*! (-> self control rider-last-move) s4-1 (-> *display* frames-per-second)) (set! (-> self control rider-time) (the-as uint (-> *display* base-frame-counter))) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword41)) 150) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 150) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword41)) 150) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword40)) 150) + ) (send-event self 'end-mode) ) ) @@ -1417,8 +1397,8 @@ ) (let ((s5-3 (vector-cross! (-> self control unknown-vector101) gp-0 (-> self control dynam gravity-normal)))) (if (>= 0.0 - (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) - ) + (vector-dot s5-3 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control unknown-quaternion00))) + ) (vector-negate! s5-3 s5-3) ) (forward-up-nopitch->quaternion (-> self control dir-targ) s5-3 (-> self control dynam gravity-normal)) @@ -1433,15 +1413,14 @@ (defbehavior target-calc-camera-pos target () (let ((gp-0 (new 'stack-no-clear 'vector))) (cond - ((and - (= (-> self next-state name) 'target-clone-anim) - (zero? (logand (-> self draw status) (draw-status drwf01))) - (begin - (vector<-cspace! gp-0 (-> self node-list data 3)) - (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) - (< (fabs (- (-> gp-0 y) (-> self control trans y))) 8192.0) - ) - ) + ((and (= (-> self next-state name) 'target-clone-anim) + (zero? (logand (-> self draw status) (draw-status drwf01))) + (begin + (vector<-cspace! gp-0 (-> self node-list data 3)) + (set! (-> gp-0 y) (+ -5896.192 (-> gp-0 y))) + (< (fabs (- (-> gp-0 y) (-> self control trans y))) 8192.0) + ) + ) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> gp-0 quad)) ) (else @@ -1464,10 +1443,10 @@ ) (set! (-> self control unknown-float30) (-> self water base-height)) ) - ((logtest? (-> self control root-prim prim-core action) 512) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-9)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) ) - ((logtest? (-> self control root-prim prim-core action) 8192) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-13)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) ) ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) @@ -1493,7 +1472,7 @@ (set! (-> v1-0 blend) 0.0) ) (cond - ((logtest? (-> self control root-prim prim-core action) 8704) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-9 ca-13)) ) ((logtest? (-> self water flags) 1024) (let ((f30-0 (- (- (-> self control trans y) (- (-> self water height) (-> self water wade-height)))))) @@ -1531,10 +1510,10 @@ ) (vector-! (-> self control unknown-vector91) (-> self control unknown-vector90) (-> self control trans)) (cond - ((logtest? (-> self control root-prim prim-core action) 128) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-7)) (target-compute-edge) ) - ((logtest? (-> self control root-prim prim-core action) 256) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-8)) (target-compute-pole) ) ) @@ -1562,12 +1541,11 @@ (let ((s4-0 (new-stack-vector0))) (read-pad s4-0) (let ((f30-0 (-> self control unknown-float20))) - (if (and - (< 0.0 f30-0) - (< 0.3 (-> self control unknown-float20)) - (< (vector-dot (-> self control unknown-vector30) (-> self control unknown-vector31)) 0.2) - (< f30-0 0.7) - ) + (if (and (< 0.0 f30-0) + (< 0.3 (-> self control unknown-float20)) + (< (vector-dot (-> self control unknown-vector30) (-> self control unknown-vector31)) 0.2) + (< f30-0 0.7) + ) (set! f30-0 0.0) ) (when (!= (-> self control unknown-float41) 0.0) @@ -1611,7 +1589,7 @@ ) (set! (-> self control reaction) target-collision-reaction) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1676,7 +1654,7 @@ ) ) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1735,7 +1713,7 @@ ) ) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1853,7 +1831,7 @@ ) ) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1953,32 +1931,40 @@ (set! (-> s5-0 reaction) target-collision-reaction) (set! (-> s5-0 no-reaction) target-collision-no-reaction) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 1))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 16)) - (set! (-> s4-0 collide-with) (the-as uint #x2bef)) - (set! (-> s4-0 prim-core offense) 1) - (set! (-> s4-0 prim-core action) (the-as uint 5)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target)) + (set! (-> s4-0 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-2)) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 6)))) - (set! (-> s3-0 prim-core action) (the-as uint 5)) - (set! (-> s3-0 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-0 collide-with) (the-as uint #x2bef)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core action) (collide-action solid ca-2)) + (set! (-> s3-0 prim-core collide-as) (collide-kind target)) + (set! (-> s3-0 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-0) (set! (-> s5-0 unknown-sphere-array00 0) s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 10)))) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-1 collide-with) (the-as uint #x2bef)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core collide-as) (collide-kind target)) + (set! (-> s3-1 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-1) (set! (-> s5-0 unknown-sphere-array00 1) s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 18)))) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-2 collide-with) (the-as uint #x2bef)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core action) (collide-action solid)) + (set! (-> s3-2 prim-core collide-as) (collide-kind target)) + (set! (-> s3-2 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-2) (set! (-> s5-0 unknown-sphere-array00 2) s3-2) ) @@ -2073,7 +2059,7 @@ 0 ) -;; TODO temp hack +;; HACK for not starting target (defun start ((arg0 symbol) (arg1 continue-point)) (set! *target* #f) (return *target*) diff --git a/goal_src/engine/target/target-part.gc b/goal_src/engine/target/target-part.gc index 453a07aab7..6174f7938e 100644 --- a/goal_src/engine/target/target-part.gc +++ b/goal_src/engine/target/target-part.gc @@ -5,3306 +5,2747 @@ ;; name in dgo: target-part ;; dgos: GAME, ENGINE -;; definition for function birth-func-copy-target-y-rot -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun - birth-func-copy-target-y-rot - ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) +;; DECOMP BEGINS + +(defun birth-func-copy-target-y-rot ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let ((v1-0 *target*)) - (when v1-0 - (let ((s5-0 (new-stack-matrix0))) - (let ((f0-1 (+ -16384.0 (y-angle (-> v1-0 control))))) - (matrix-rotate-y! s5-0 f0-1) + (when v1-0 + (let ((s5-0 (new-stack-matrix0))) + (let ((f0-1 (+ -16384.0 (y-angle (-> v1-0 control))))) + (matrix-rotate-y! s5-0 f0-1) + ) + (vector3s-rotate*! (the-as vector3s (-> arg1 vel-sxvel)) (the-as vector3s (-> arg1 vel-sxvel)) s5-0) + (vector3s-rotate*! (the-as vector3s (-> arg1 acc)) (the-as vector3s (-> arg1 acc)) s5-0) + ) ) - (vector3s-rotate*! - (the-as vector3s (-> arg1 vel-sxvel)) - (the-as vector3s (-> arg1 vel-sxvel)) - s5-0 - ) - (vector3s-rotate*! - (the-as vector3s (-> arg1 acc)) - (the-as vector3s (-> arg1 acc)) - s5-0 - ) - ) ) - ) 0 (none) ) -;; definition for function birth-func-ground-orient -;; INFO: Return type mismatch int vs none. -;; Used lq/sq -(defun - birth-func-ground-orient - ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) +(defun birth-func-ground-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-11 float) (v1-12 float)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) ) - (init-vf0-vector) - (let ((a1-1 (new 'stack-no-clear 'vector))) - (set! (-> a1-1 quad) (-> arg2 launchrot quad)) - (let ((s3-0 (new 'stack-no-clear 'collide-tri-result)) - (s5-0 *target*) - ) - (set! (-> a1-1 y) (+ 4096.0 (-> a1-1 y))) - (when - (>= - (fill-and-probe-using-y-probe - *collide-cache* - a1-1 - (the-as float 20480.0) - (the-as uint #x2bef) - s5-0 - s3-0 - (the-as uint 1) - ) - 0.0 - ) - (let ((s2-0 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'quaternion)) + (init-vf0-vector) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (set! (-> a1-1 quad) (-> arg2 launchrot quad)) + (let ((s3-0 (new 'stack-no-clear 'collide-tri-result)) + (s5-0 *target*) ) - (set! (-> s2-0 x) (-> s3-0 normal z)) - (set! (-> s2-0 y) 0.0) - (set! (-> s2-0 z) (- (-> s3-0 normal x))) - (vector-normalize! s2-0 (the-as float 1.0)) - (quaternion-vector-angle! s4-1 s2-0 (acos (-> s3-0 normal y))) - (let ((s3-1 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! - s3-1 - *up-vector* - (+ 32768.0 (y-angle (-> s5-0 control))) - ) - (quaternion-normalize! (quaternion*! s4-1 s3-1 s4-1)) + (set! (-> a1-1 y) (+ 4096.0 (-> a1-1 y))) + (when (>= (fill-and-probe-using-y-probe + *collide-cache* + a1-1 + (the-as float 20480.0) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + s5-0 + s3-0 + (the-as uint 1) + ) + 0.0 + ) + (let ((s2-0 (new 'stack-no-clear 'vector)) + (s4-1 (new 'stack-no-clear 'quaternion)) + ) + (set! (-> s2-0 x) (-> s3-0 normal z)) + (set! (-> s2-0 y) 0.0) + (set! (-> s2-0 z) (- (-> s3-0 normal x))) + (vector-normalize! s2-0 (the-as float 1.0)) + (quaternion-vector-angle! s4-1 s2-0 (acos (-> s3-0 normal y))) + (let ((s3-1 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! s3-1 *up-vector* (+ 32768.0 (y-angle (-> s5-0 control)))) + (quaternion-normalize! (quaternion*! s4-1 s3-1 s4-1)) + ) + (cond + ((< (-> s4-1 w) 0.0) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s4-1 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-11 vf1) + ) + (else + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s4-1 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-12 vf1) + ) + ) + ) + ) ) - (cond - ((< (-> s4-1 w) 0.0) - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s4-1 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-11 vf1) - ) - (else - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s4-1 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-12 vf1) - ) - ) - ) ) - ) + 0 + (none) ) - 0 - (none) - ) ) -;; definition for function birth-func-target-orient -;; INFO: Return type mismatch int vs none. -(defun - birth-func-target-orient - ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) +(defun birth-func-target-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-10 float) (v1-11 float) (sv-16 target)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) ) - (init-vf0-vector) - (set! sv-16 *target*) - (let ((s3-0 (new 'stack-no-clear 'vector))) - (new 'stack-no-clear 'vector) - (let ((s5-0 (new 'stack-no-clear 'quaternion))) - (let ((s2-0 (-> sv-16 control local-normal))) - (set! (-> s3-0 x) (-> s2-0 z)) - (set! (-> s3-0 y) 0.0) - (set! (-> s3-0 z) (- (-> s2-0 x))) - (vector-normalize! s3-0 (the-as float 1.0)) - (quaternion-vector-angle! s5-0 s3-0 (acos (-> s2-0 y))) + (init-vf0-vector) + (set! sv-16 *target*) + (let ((s3-0 (new 'stack-no-clear 'vector))) + (new 'stack-no-clear 'vector) + (let ((s5-0 (new 'stack-no-clear 'quaternion))) + (let ((s2-0 (-> sv-16 control local-normal))) + (set! (-> s3-0 x) (-> s2-0 z)) + (set! (-> s3-0 y) 0.0) + (set! (-> s3-0 z) (- (-> s2-0 x))) + (vector-normalize! s3-0 (the-as float 1.0)) + (quaternion-vector-angle! s5-0 s3-0 (acos (-> s2-0 y))) + ) + (let ((s3-1 (new 'stack-no-clear 'quaternion))) + (quaternion-vector-angle! s3-1 *up-vector* (+ 32768.0 (-> arg1 user-float) (y-angle (-> sv-16 control)))) + (quaternion-normalize! (quaternion*! s5-0 s5-0 s3-1)) + ) + (cond + ((< (-> s5-0 w) 0.0) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-10 vf1) + ) + (else + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-11 vf1) + ) + ) + ) ) - (let ((s3-1 (new 'stack-no-clear 'quaternion))) - (quaternion-vector-angle! - s3-1 - *up-vector* - (+ 32768.0 (-> arg1 user-float) (y-angle (-> sv-16 control))) - ) - (quaternion-normalize! (quaternion*! s5-0 s5-0 s3-1)) - ) - (cond - ((< (-> s5-0 w) 0.0) - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-10 vf1) - ) - (else - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-11 vf1) - ) - ) - ) + 0 + (none) ) - 0 - (none) - ) ) -;; definition for function birth-func-vector-orient -;; INFO: Return type mismatch int vs none. -(defun - birth-func-vector-orient - ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) +(defun birth-func-vector-orient ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (local-vars (v1-4 float) (v1-5 float)) (rlet ((vf0 :class vf) (vf1 :class vf) (vf2 :class vf) ) - (init-vf0-vector) - *target* - (let ((s4-0 (new 'stack-no-clear 'vector))) - (new 'stack-no-clear 'vector) - (let ((s5-0 (new 'stack-no-clear 'quaternion)) - (s3-0 (the-as object (-> arg1 user-float))) + (init-vf0-vector) + *target* + (let ((s4-0 (new 'stack-no-clear 'vector))) + (new 'stack-no-clear 'vector) + (let ((s5-0 (new 'stack-no-clear 'quaternion)) + (s3-0 (the-as object (-> arg1 user-float))) + ) + (when (nonzero? (the-as float s3-0)) + (set! (-> s4-0 x) (-> (the-as sprite-vec-data-2d s3-0) z)) + (set! (-> s4-0 y) 0.0) + (set! (-> s4-0 z) (- (-> (the-as sprite-vec-data-2d s3-0) x))) + (vector-normalize! s4-0 (the-as float 1.0)) + (quaternion-vector-angle! s5-0 s4-0 (acos (-> (the-as sprite-vec-data-2d s3-0) y))) + (cond + ((< (-> s5-0 w) 0.0) + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.sub.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-4 vf1) + ) + (else + (.lvf vf1 (&-> arg2 conerot quad)) + (.lvf vf2 (&-> s5-0 vec quad)) + (.add.vf vf1 vf0 vf2 :mask #b111) + (.svf (&-> arg2 conerot quad) vf1) + (.mov v1-5 vf1) + ) + ) ) - (when (nonzero? (the-as float s3-0)) - (set! (-> s4-0 x) (-> (the-as sprite-vec-data-2d s3-0) z)) - (set! (-> s4-0 y) 0.0) - (set! (-> s4-0 z) (- (-> (the-as sprite-vec-data-2d s3-0) x))) - (vector-normalize! s4-0 (the-as float 1.0)) - (quaternion-vector-angle! - s5-0 - s4-0 - (acos (-> (the-as sprite-vec-data-2d s3-0) y)) - ) - (cond - ((< (-> s5-0 w) 0.0) - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.sub.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-4 vf1) ) - (else - (.lvf vf1 (&-> arg2 conerot quad)) - (.lvf vf2 (&-> s5-0 vec quad)) - (.add.vf vf1 vf0 vf2 :mask #b111) - (.svf (&-> arg2 conerot quad) vf1) - (.mov v1-5 vf1) - ) - ) ) - ) + 0 + (none) ) - 0 - (none) - ) ) -;; definition for function part-tracker-track-target-joint -;; INFO: Return type mismatch int vs none. -(defun - part-tracker-track-target-joint - ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) +(defun part-tracker-track-target-joint ((arg0 int) (arg1 sparticle-cpuinfo) (arg2 sparticle-launchinfo)) (let* ((v1-0 *target*) - (v1-2 - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> v1-0 node-list data (the int (-> arg1 user-float))) - ) - ) + (v1-2 (vector<-cspace! (new 'stack-no-clear 'vector) (-> v1-0 node-list data (the int (-> arg1 user-float))))) ) - (set! (-> arg2 launchrot x) (-> v1-2 x)) - (set! (-> arg2 launchrot y) (-> v1-2 y)) - (set! (-> arg2 launchrot z) (-> v1-2 z)) - ) + (set! (-> arg2 launchrot x) (-> v1-2 x)) + (set! (-> arg2 launchrot y) (-> v1-2 y)) + (set! (-> arg2 launchrot z) (-> v1-2 z)) + ) 0 (none) ) -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 1) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-target-hit" - :launcher - (new 'static 'inline-array sparticle-group-item 2 (sp-item 56) (sp-item 57)) - :bounds (new 'static 'sphere :w 49152.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 56) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-flt spt-num 32.0) - (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.0) 1.0) - (sp-int spt-rot-x 4) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-scale-y (meters 0.06)) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-flt spt-a 0.0) - (sp-flt spt-scalevel-x (meters 0.16)) - (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) - (sp-flt spt-fade-a 6.4) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 10) - (sp-launcher-by-id spt-next-launcher 58) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 58) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.64) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 57) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 12.0)) - (sp-flt spt-rot-z (degrees 0.0)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-flt spt-a 64.0) - (sp-flt spt-rotvel-z (degrees -0.4)) - (sp-flt spt-fade-a -1.4222221) - (sp-int spt-timer 42) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 2) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xa - :linger-duration #x1c2 - :name "group-red-eco-strike-ground" - :launcher - (new 'static 'inline-array sparticle-group-item 2 (sp-item 59) (sp-item 60)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 59) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 24.0) - (sp-flt spt-y (meters 1.0)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 32.0) - (sp-rnd-flt spt-a 8.0 56.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.16666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.013333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -1.4222223) - (sp-flt spt-fade-a -0.35555556) - (sp-flt spt-accel-y 0.34133333) - (sp-flt spt-friction 0.7) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 90) - (sp-launcher-by-id spt-next-launcher 61) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 60) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 32.0) - (sp-flt spt-y (meters 1.0)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-rnd-flt spt-a 64.0 8.0 1.0) - (sp-flt spt-vel-y (meters 0.3)) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -2.8444445) - (sp-flt spt-fade-a -0.82222223) - (sp-flt spt-friction 0.7) - (sp-int spt-timer 90) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 45) - (sp-launcher-by-id spt-next-launcher 61) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 3) - (new 'static 'sparticle-launch-group - :length 3 - :duration #xa - :linger-duration #x1c2 - :name "group-red-eco-spinkick" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 62) - (sp-item 63) - (sp-item 64) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 62) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 23 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 32.0) - (sp-rnd-flt spt-a 8.0 56.0 1.0) - (sp-flt spt-scalevel-x (meters 0.013333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -1.4222223) - (sp-flt spt-fade-a -0.35555556) - (sp-flt spt-accel-y 0.34133333) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 90) - (sp-launcher-by-id spt-next-launcher 61) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 61) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 4 - (sp-flt spt-fade-r -0.7111111) - (sp-flt spt-fade-g 0.7111111) - (sp-flt spt-fade-b 0.35555556) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 63) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 0.66) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-rnd-flt spt-a 64.0 8.0 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-g -2.8444445) - (sp-flt spt-fade-a -0.82222223) - (sp-int spt-timer 90) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 45) - (sp-launcher-by-id spt-next-launcher 61) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.1) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 64) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 4.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 96.0) - (sp-flt spt-a 64.0) - (sp-flt spt-fade-a -4.0) - (sp-flt spt-accel-y 0.34133333) - (sp-int spt-timer 10) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 4) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xa - :linger-duration #x1c2 - :name "group-spin-hit" - :launcher - (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 5) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xa - :linger-duration #x1c2 - :name "group-punch-hit" - :launcher - (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 65) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) - (sp-flt spt-num 4.0) - (sp-flt spt-y (meters 0.75)) - (sp-flt spt-scale-x (meters 3.0)) - (sp-int spt-rot-x 4) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-scale-y (meters 0.15) (meters 0.5) 1.0) - (sp-flt spt-r 192.0) - (sp-flt spt-g 192.0) - (sp-rnd-flt spt-b 64.0 128.0 1.0) - (sp-flt spt-a 0.0) - (sp-flt spt-scalevel-x (meters 0.009765625)) - (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) - (sp-flt spt-scalevel-y (meters 0.009765625)) - (sp-flt spt-fade-a 2.1333334) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 15) - (sp-launcher-by-id spt-next-launcher 67) - (sp-flt spt-rotate-y (degrees 0.0)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 67) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -2.1333334) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 66) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-y (meters 1.0)) - (sp-flt spt-scale-x (meters 3.0)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 196.0) - (sp-flt spt-g 196.0) - (sp-flt spt-b 196.0) - (sp-flt spt-a 28.0) - (sp-int spt-timer 10) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 6) - (new 'static 'sparticle-launch-group - :length 23 - :duration #xa - :linger-duration #x1c2 - :name "group-smack-surface" - :launcher - (new 'static 'inline-array sparticle-group-item 23 - (sp-item 68) - (sp-item 69) - (sp-item 72 :binding 71) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - (sp-item 71 :flags (start-dead launch-asap)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 68) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 22 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-func spt-birth-func 'birth-func-copy-target-y-rot) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 96.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 32.0 1.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.85333335) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-rotate-y (degrees 0.0)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 69) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 22 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-func spt-birth-func 'birth-func-copy-target-y-rot) - (sp-flt spt-num 8.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 96.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 32.0 1.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.85333335) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-rotate-y (degrees 0.0)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 72) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 11 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-rnd-flt spt-num 12.0 8.0 1.0) - (sp-flt spt-scale-x (meters 1.0)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-a 0.0) - (sp-int spt-timer 604) - (sp-cpuinfo-flags bit3) - (sp-flt spt-userdata 8.0) - (sp-func spt-func 'part-tracker-track-target-joint) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 71) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-x (meters 0.0)) - (sp-rnd-flt spt-y (meters -1.3333334) (meters 2.6666667) 1.0) - (sp-rnd-flt spt-z 2048.0 2048.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 32.0 92.0 1.0) - (sp-rnd-flt spt-g 128.0 128.0 1.0) - (sp-flt spt-b 0.0) - (sp-rnd-flt spt-a 32.0 96.0 1.0) - (sp-rnd-flt spt-omega 0.0 65536.0 1.0) - (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) - (sp-flt spt-vel-y (meters 0.0)) - (sp-flt spt-vel-z (meters 0.0033333334)) - (sp-flt spt-fade-a -0.30476192) - (sp-int spt-timer 604) - (sp-cpuinfo-flags bit2 bit3 bit7) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 8) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-sand" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 73) - (sp-item 74) - (sp-item 75) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 73) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 74) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 75) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-flt spt-num 32.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 575) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-dirt" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 2371) - (sp-item 2372) - (sp-item 2370) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2371) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2372) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2370) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-flt spt-num 32.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 9) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-snow" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 76) - (sp-item 77) - (sp-item 78) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 76) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 196.0 64.0 1.0) - (sp-rnd-flt spt-g 196.0 64.0 1.0) - (sp-rnd-flt spt-b 196.0 64.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 77) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 196.0 64.0 1.0) - (sp-rnd-flt spt-g 196.0 64.0 1.0) - (sp-rnd-flt spt-b 196.0 64.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 78) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-flt spt-num 32.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1128529920 1 64.0) - (sp-rnd-int spt-g 1128529920 1 64.0) - (sp-rnd-int spt-b 1128529920 1 64.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 580) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-ice" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 76) - (sp-item 77) - (sp-item 78) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 10) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-grass" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 79) - (sp-item 80) - (sp-item 81) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 79) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 32.0 1.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 80) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 32.0 1.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 81) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-flt spt-num 32.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-scale-y (meters 0.15)) - (sp-rnd-flt spt-r 0.0 2.0 64.0) - (sp-rnd-int spt-g 1115684864 2 64.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 11) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-wood" - :launcher - (new 'static 'inline-array sparticle-group-item 2 (sp-item 82) (sp-item 83)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 82) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 64.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 83) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 64.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 12) - (new 'static 'sparticle-launch-group - :length 4 - :duration #x5 - :linger-duration #x2ee - :name "group-land-poof-crwood" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 82) - (sp-item 83) - (sp-item 84) - (sp-item 84) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 13) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-stone" - :launcher - (new 'static 'inline-array sparticle-group-item 2 (sp-item 85) (sp-item 86)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 85) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 96.0) - (sp-flt spt-b 96.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 86) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 96.0) - (sp-flt spt-b 96.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 581) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x1c2 - :name "group-land-poof-pcmetal" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 2373) - (sp-item 2374) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2373) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 16.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 64.0 1.0) - (sp-rnd-flt spt-g 70.0 32.0 1.0) - (sp-rnd-flt spt-b 40.0 20.0 1.0) - (sp-rnd-flt spt-a 24.0 24.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-flt spt-fade-a -0.16) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2374) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 12.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 64.0 1.0) - (sp-rnd-flt spt-g 70.0 32.0 1.0) - (sp-rnd-flt spt-b 40.0 20.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -1.3653333) - (sp-flt spt-friction 0.95) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 14) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-stone" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 15) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-stone" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 87) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 96.0) - (sp-flt spt-b 96.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 582) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-snow" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 2375) - (sp-item 2376 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 583) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-snow" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 584) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-footprint-snow" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 2376 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2376) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) - (sp-func spt-birth-func 'birth-func-target-orient) - (sp-flt spt-num 1.0) - (sp-flt spt-x (meters -0.25)) - (sp-flt spt-scale-x (meters 0.6)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 32.0) - (sp-flt spt-g 32.0) - (sp-flt spt-b 16.0) - (sp-flt spt-a 64.0) - (sp-flt spt-fade-a -0.07111111) - (sp-int spt-timer 1050) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2375) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 196.0 64.0 1.0) - (sp-rnd-flt spt-g 196.0 64.0 1.0) - (sp-rnd-flt spt-b 196.0 64.0 1.0) - (sp-rnd-flt spt-a 24.0 24.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 585) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-ice" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 586) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-ice" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 16) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-crwood" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 89) - (sp-item 89) - (sp-item 84) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 17) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-crwood" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 84) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 22 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 32.0 1.0) - (sp-flt spt-g 64.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-y (meters 0.0) (meters -0.0033333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.0016666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.16) - (sp-flt spt-accel-y -0.27306667) - (sp-int spt-timer 900) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-int-plain-rnd spt-next-time 75 74 1) - (sp-launcher-by-id spt-next-launcher 90) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 3.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 90) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 4 - (sp-flt spt-fade-a 0.0) - (sp-int-plain-rnd spt-next-time 150 149 1) - (sp-launcher-by-id spt-next-launcher 91) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 91) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.08) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 18) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-wood" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 19) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-wood" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 89) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 64.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 587) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-pcmetal" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 588) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-pcmetal" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2377) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 64.0 1.0) - (sp-rnd-flt spt-g 70.0 32.0 1.0) - (sp-rnd-flt spt-b 40.0 20.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 20) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-grass" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 92) - (sp-item 93 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 21) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-grass" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 92)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 22) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-footprint-grass" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 93 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 92) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 32.0 1.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 93) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) - (sp-func spt-birth-func 'birth-func-target-orient) - (sp-flt spt-num 1.0) - (sp-flt spt-x (meters -0.25)) - (sp-flt spt-scale-x (meters 0.6)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 32.0) - (sp-flt spt-g 32.0) - (sp-flt spt-b 16.0) - (sp-flt spt-a 48.0) - (sp-flt spt-fade-a -0.053333335) - (sp-int spt-timer 1050) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 23) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-sand" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 88) - (sp-item 94 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 24) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-sand" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 25) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-footprint-sand" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 94 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 88) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 94) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) - (sp-func spt-birth-func 'birth-func-target-orient) - (sp-flt spt-num 1.0) - (sp-flt spt-x (meters -0.25)) - (sp-flt spt-scale-x (meters 0.6)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 32.0) - (sp-flt spt-g 32.0) - (sp-flt spt-b 16.0) - (sp-flt spt-a 32.0) - (sp-flt spt-fade-a -0.035555556) - (sp-int spt-timer 1050) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 576) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-run-poof-dirt" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 577) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-poof-dirt" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 578) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x258 - :name "group-just-footprint-dirt" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 2379 :flags (is-3d)) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2378) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-fade-a -0.45714286) - (sp-flt spt-friction 0.965) - (sp-int spt-timer 105) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2379) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) - (sp-func spt-birth-func 'birth-func-target-orient) - (sp-flt spt-num 1.0) - (sp-flt spt-x (meters -0.25)) - (sp-flt spt-scale-x (meters 0.6)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 32.0) - (sp-flt spt-g 32.0) - (sp-flt spt-b 16.0) - (sp-flt spt-a 32.0) - (sp-flt spt-fade-a -0.035555556) - (sp-int spt-timer 1050) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 95) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 6.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) - (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2253) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 6.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) - (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 96) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-scale-y (meters 0.1)) - (sp-rnd-flt spt-r 0.0 2.0 64.0) - (sp-rnd-int spt-g 1115684864 2 64.0) - (sp-rnd-flt spt-a 96.0 32.0 1.0) - (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) - (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2250) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 6.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1128529920 1 64.0) - (sp-rnd-int spt-g 1128529920 1 64.0) - (sp-rnd-int spt-b 1128529920 1 64.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) - (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 97) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 98) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 99) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 1 (sp-end)) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 26) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-sand" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 100) - (sp-item 101) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 100) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 101) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 579) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-dirt" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 2380) - (sp-item 2381) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2380) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 64.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2381) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 27) - (new 'static 'sparticle-launch-group - :length 2 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-grass" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 102) - (sp-item 103) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 102) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 64.0 32.0 1.0) - (sp-rnd-flt spt-g 96.0 32.0 1.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 103) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-scale-y (meters 0.15)) - (sp-rnd-flt spt-r 0.0 2.0 64.0) - (sp-rnd-int spt-g 1115684864 2 64.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 28) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-stone" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 104)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 104) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 96.0) - (sp-flt spt-b 96.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 589) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-pcmetal" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2382)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2382) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 64.0 1.0) - (sp-rnd-flt spt-g 70.0 32.0 1.0) - (sp-rnd-flt spt-b 40.0 20.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 590) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-snow" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2383) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1128529920 1 64.0) - (sp-rnd-int spt-g 1128529920 1 64.0) - (sp-rnd-int spt-b 1128529920 1 64.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 591) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-ice" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 29) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x1c2 - :name "group-slide-poof-wood" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 105) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 6.0 6.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 32.0 1.0) - (sp-flt spt-g 64.0) - (sp-rnd-flt spt-b 0.0 32.0 1.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) - (sp-flt spt-scalevel-x (meters 0.0033333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.17777778) - (sp-flt spt-accel-y -0.27306667) - (sp-flt spt-friction 0.94) - (sp-int spt-timer 180) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 30) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x2ee - :name "group-slide-poof-crwood" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 106) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2265) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1124073472 2 32.0) - (sp-rnd-int spt-g 1115684864 1 64.0) - (sp-rnd-int spt-b 1107296256 1 32.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2262) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-int spt-r 1128529920 1 64.0) - (sp-rnd-int spt-g 1128529920 1 64.0) - (sp-rnd-int spt-b 1128529920 1 64.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 107) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 17 - (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) - (sp-rnd-flt spt-num 0.0 8.0 1.0) - (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) - (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) - (sp-rnd-flt spt-z -1638.4 3276.8 1.0) - (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-scale-y (meters 0.15)) - (sp-rnd-flt spt-r 0.0 2.0 64.0) - (sp-rnd-int spt-g 1115684864 2 64.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12 bit14) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 31) - (new 'static 'sparticle-launch-group - :length 36 - :duration #x258 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-dark-eco-death" - :launcher - (new 'static 'inline-array sparticle-group-item 36 - (sp-item 295 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 296 :flags (start-dead launch-asap) :binding 297) - (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) - (sp-item 2095 :period 600 :length 5) - (sp-item 2096 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) - (sp-item 2097 :period 600 :length 20) - ) - :bounds (new 'static 'sphere :w 49152.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 32) - (new 'static 'sparticle-launch-group - :length 4 - :duration #x4b - :linger-duration #x258 - :name "group-lava-death" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 2003) - (sp-item 2004) - (sp-item 2005) - (sp-item 2006) - ) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 708) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x96 - :linger-duration #x258 - :name "group-burn-death" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 2003)) - :bounds (new 'static 'sphere :w 8192.0) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2006) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 17 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-rnd-flt spt-num 8.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 256.0) - (sp-rnd-flt spt-g 0.0 128.0 1.0) - (sp-rnd-flt spt-a 128.0 128.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.04) 1.0) - (sp-flt spt-scalevel-x (meters -0.0023333333)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y -5.4613333) - (sp-int spt-timer 360) - (sp-cpuinfo-flags bit0 bit3 bit14) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 1.0)) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2003) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 23 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 5.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 0.0 128.0 1.0) - (sp-flt spt-b 0.0) - (sp-rnd-flt spt-a 32.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.023529412)) - (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -1.5058824) - (sp-flt spt-friction 0.98) - (sp-int spt-timer 81) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2004) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 23 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 32.0) - (sp-rnd-flt spt-x (meters 0.5) (meters 2.0) 1.0) - (sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-rnd-flt spt-g 0.0 128.0 1.0) - (sp-flt spt-b 0.0) - (sp-rnd-flt spt-a 32.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0016666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.04444444)) - (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -2.8444443) - (sp-flt spt-friction 0.98) - (sp-int spt-timer 42) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2005) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 28 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 8.0) - (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) - (sp-rnd-flt spt-z -4096.0 8192.0 1.0) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 3.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 255.0) - (sp-flt spt-g 255.0) - (sp-flt spt-b 255.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0) - (sp-flt spt-scalevel-x (meters 0.008888889)) - (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.56666666) - (sp-flt spt-fade-g -0.56666666) - (sp-flt spt-fade-b -0.56666666) - (sp-flt spt-fade-a 0.15) - (sp-flt spt-friction 0.97) - (sp-int spt-timer 450) - (sp-cpuinfo-flags bit2 bit14) - (sp-int-plain-rnd spt-next-time 81 80 1) - (sp-launcher-by-id spt-next-launcher 2007) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2007) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.08) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2002) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 20 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 32.0 32.0 1.0) - (sp-rnd-flt spt-g 32.0 32.0 1.0) - (sp-rnd-flt spt-b 32.0 32.0 1.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.006666667) 1.0) - (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.85333335) - (sp-flt spt-friction 0.98) - (sp-int spt-timer 450) - (sp-cpuinfo-flags bit2 bit14) - (sp-int-plain-rnd spt-next-time 15 59 1) - (sp-launcher-by-id spt-next-launcher 2008) - (sp-end) - ) - ) - ) - -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2008) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.28444445) - (sp-end) - ) - ) - ) - -;; definition for function process-drawable-burn-effect -;; Used lq/sq +(set! (-> *part-group-id-table* 1) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-target-hit" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 56) (sp-item 57)) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +(set! (-> *part-id-table* 56) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 1.0) 1.0) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.06)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.16)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-fade-a 6.4) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 10) + (sp-launcher-by-id spt-next-launcher 58) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 58) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.64) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 57) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 12.0)) + (sp-flt spt-rot-z (degrees 0.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 64.0) + (sp-flt spt-rotvel-z (degrees -0.4)) + (sp-flt spt-fade-a -1.4222221) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 2) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xa + :linger-duration #x1c2 + :name "group-red-eco-strike-ground" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 59) (sp-item 60)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 59) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 24.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 8.0 56.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.13333334) (meters 0.16666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.4222223) + (sp-flt spt-fade-a -0.35555556) + (sp-flt spt-accel-y 0.34133333) + (sp-flt spt-friction 0.7) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 61) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 60) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 32.0) + (sp-flt spt-y (meters 1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-flt spt-vel-y (meters 0.3)) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.8444445) + (sp-flt spt-fade-a -0.82222223) + (sp-flt spt-friction 0.7) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 61) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 3) + (new 'static 'sparticle-launch-group + :length 3 + :duration #xa + :linger-duration #x1c2 + :name "group-red-eco-spinkick" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 62) (sp-item 63) (sp-item 64)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 62) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 8.0 56.0 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.4) (degrees 0.8) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -1.4222223) + (sp-flt spt-fade-a -0.35555556) + (sp-flt spt-accel-y 0.34133333) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 61) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.5) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 61) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r -0.7111111) + (sp-flt spt-fade-g 0.7111111) + (sp-flt spt-fade-b 0.35555556) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 63) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 0.66) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-rnd-flt spt-a 64.0 8.0 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -2.8444445) + (sp-flt spt-fade-a -0.82222223) + (sp-int spt-timer 90) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 45) + (sp-launcher-by-id spt-next-launcher 61) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.1) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 64) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 4.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 96.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -4.0) + (sp-flt spt-accel-y 0.34133333) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 4) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xa + :linger-duration #x1c2 + :name "group-spin-hit" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 5) + (new 'static 'sparticle-launch-group + :length 2 + :duration #xa + :linger-duration #x1c2 + :name "group-punch-hit" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 65) (sp-item 66)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 65) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x2 :page #x2)) + (sp-flt spt-num 4.0) + (sp-flt spt-y (meters 0.75)) + (sp-flt spt-scale-x (meters 3.0)) + (sp-int spt-rot-x 4) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 0.15) (meters 0.5) 1.0) + (sp-flt spt-r 192.0) + (sp-flt spt-g 192.0) + (sp-rnd-flt spt-b 64.0 128.0 1.0) + (sp-flt spt-a 0.0) + (sp-flt spt-scalevel-x (meters 0.009765625)) + (sp-rnd-flt spt-rotvel-z (degrees -0.15) (degrees 0.3) 1.0) + (sp-flt spt-scalevel-y (meters 0.009765625)) + (sp-flt spt-fade-a 2.1333334) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 15) + (sp-launcher-by-id spt-next-launcher 67) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 67) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -2.1333334) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 66) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 1.0)) + (sp-flt spt-scale-x (meters 3.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 196.0) + (sp-flt spt-g 196.0) + (sp-flt spt-b 196.0) + (sp-flt spt-a 28.0) + (sp-int spt-timer 10) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 6) (new 'static 'sparticle-launch-group + :length 23 + :duration #xa + :linger-duration #x1c2 + :name "group-smack-surface" + :launcher + (new 'static 'inline-array sparticle-group-item 23 + (sp-item 68) + (sp-item 69) + (sp-item 72 :binding 71) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + (sp-item 71 :flags (start-dead launch-asap)) + ) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 68) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-func spt-birth-func 'birth-func-copy-target-y-rot) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 96.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 69) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-func spt-birth-func 'birth-func-copy-target-y-rot) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 96.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.08) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.85333335) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-rotate-y (degrees 0.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 72) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 11 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-rnd-flt spt-num 12.0 8.0 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-a 0.0) + (sp-int spt-timer 604) + (sp-cpuinfo-flags bit3) + (sp-flt spt-userdata 8.0) + (sp-func spt-func 'part-tracker-track-target-joint) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 71) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-rnd-flt spt-y (meters -1.3333334) (meters 2.6666667) 1.0) + (sp-rnd-flt spt-z 2048.0 2048.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.05) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 92.0 1.0) + (sp-rnd-flt spt-g 128.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 96.0 1.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-rnd-int-flt spt-vel-x (meters -0.053333335) 1 436.90668) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters 0.0033333334)) + (sp-flt spt-fade-a -0.30476192) + (sp-int spt-timer 604) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 8) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-sand" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 73) (sp-item 74) (sp-item 75)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 73) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 74) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 75) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 575) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-dirt" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 2371) (sp-item 2372) (sp-item 2370)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2371) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2372) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2370) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 9) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-snow" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 76) (sp-item 77) (sp-item 78)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 76) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 77) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 78) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 2.7306666 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 580) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-ice" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 76) (sp-item 77) (sp-item 78)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 10) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-grass" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 79) (sp-item 80) (sp-item 81)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 79) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 80) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 81) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.015) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 11) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-wood" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 82) (sp-item 83)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 82) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 83) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 12) + (new 'static 'sparticle-launch-group + :length 4 + :duration #x5 + :linger-duration #x2ee + :name "group-land-poof-crwood" + :launcher + (new 'static 'inline-array sparticle-group-item 4 (sp-item 82) (sp-item 83) (sp-item 84) (sp-item 84)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 13) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-stone" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 85) (sp-item 86)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 85) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 86) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 581) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x1c2 + :name "group-land-poof-pcmetal" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 2373) (sp-item 2374)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2373) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 16.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2374) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 12.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.25) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.02) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -1.3653333) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 14) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-stone" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 15) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-stone" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 87)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 87) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 582) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-snow" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 2375) (sp-item 2376 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 583) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-snow" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 584) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-footprint-snow" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2376 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2376) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 64.0) + (sp-flt spt-fade-a -0.07111111) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2375) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 196.0 64.0 1.0) + (sp-rnd-flt spt-g 196.0 64.0 1.0) + (sp-rnd-flt spt-b 196.0 64.0 1.0) + (sp-rnd-flt spt-a 24.0 24.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 585) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-ice" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 586) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-ice" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2375)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 16) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-crwood" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 89) (sp-item 89) (sp-item 84)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 17) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-crwood" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 84) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters -0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.0016666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.16) + (sp-flt spt-accel-y -0.27306667) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int-plain-rnd spt-next-time 75 74 1) + (sp-launcher-by-id spt-next-launcher 90) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 3.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 90) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-a 0.0) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 91) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 91) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.08) (sp-end)) + ) + ) + +(set! (-> *part-group-id-table* 18) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-wood" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 19) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-wood" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 89)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 89) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 587) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-pcmetal" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 588) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-pcmetal" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2377)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2377) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 20) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-grass" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 92) (sp-item 93 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 21) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-grass" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 92)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 22) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-footprint-grass" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 93 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 92) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 93) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 48.0) + (sp-flt spt-fade-a -0.053333335) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 23) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-sand" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 88) (sp-item 94 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 24) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-sand" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 88)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 25) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-footprint-sand" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 94 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 88) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 94) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 32.0) + (sp-flt spt-fade-a -0.035555556) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 576) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-run-poof-dirt" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 577) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-poof-dirt" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2378)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 578) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x258 + :name "group-just-footprint-dirt" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2379 :flags (is-3d))) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2378) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-fade-a -0.45714286) + (sp-flt spt-friction 0.965) + (sp-int spt-timer 105) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2379) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 14 + (sp-tex spt-texture (new 'static 'texture-id :index #xe :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters -0.25)) + (sp-flt spt-scale-x (meters 0.6)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 16.0) + (sp-flt spt-a 32.0) + (sp-flt spt-fade-a -0.035555556) + (sp-int spt-timer 1050) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 95) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2253) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 96) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.1)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 96.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2250) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 6.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-rnd-flt spt-vel-y (meters 0.005) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.00083333335) (meters 0.0016666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -2.7306666 1.3653333 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 97) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 1 (sp-end))) + ) + +(set! (-> *part-id-table* 98) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 1 (sp-end))) + ) + +(set! (-> *part-id-table* 99) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 1 (sp-end))) + ) + +(set! (-> *part-group-id-table* 26) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-sand" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 100) (sp-item 101)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 100) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 101) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 579) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-dirt" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 2380) (sp-item 2381)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2380) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2381) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 27) + (new 'static 'sparticle-launch-group + :length 2 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-grass" + :launcher + (new 'static 'inline-array sparticle-group-item 2 (sp-item 102) (sp-item 103)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 102) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 64.0 32.0 1.0) + (sp-rnd-flt spt-g 96.0 32.0 1.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 103) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.008333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -4.096 2.048 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 50.000004) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 28) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-stone" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 104)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 104) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 96.0) + (sp-flt spt-b 96.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 589) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-pcmetal" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2382)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2382) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 64.0 1.0) + (sp-rnd-flt spt-g 70.0 32.0 1.0) + (sp-rnd-flt spt-b 40.0 20.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 590) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-snow" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2383) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 591) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-ice" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2383)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 29) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x1c2 + :name "group-slide-poof-wood" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 105) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 6.0 6.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.6) (meters 0.6) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 32.0 1.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 0.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.02) (meters 0.01) 1.0) + (sp-flt spt-scalevel-x (meters 0.0033333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.17777778) + (sp-flt spt-accel-y -0.27306667) + (sp-flt spt-friction 0.94) + (sp-int spt-timer 180) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-rnd-flt spt-conerot-x (degrees 60.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 30) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x2ee + :name "group-slide-poof-crwood" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 105)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 106) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2265) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1124073472 2 32.0) + (sp-rnd-int spt-g 1115684864 1 64.0) + (sp-rnd-int spt-b 1107296256 1 32.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2262) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.07) (meters 0.02) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-int spt-r 1128529920 1 64.0) + (sp-rnd-int spt-g 1128529920 1 64.0) + (sp-rnd-int spt-b 1128529920 1 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 107) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #x17 :page #x2)) + (sp-rnd-flt spt-num 0.0 8.0 1.0) + (sp-rnd-flt spt-x (meters -0.4) (meters 0.8) 1.0) + (sp-rnd-flt spt-y (meters -0.1) (meters 0.4) 1.0) + (sp-rnd-flt spt-z -1638.4 3276.8 1.0) + (sp-rnd-flt spt-scale-x (meters 0.15) (meters 0.35) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-scale-y (meters 0.15)) + (sp-rnd-flt spt-r 0.0 2.0 64.0) + (sp-rnd-int spt-g 1115684864 2 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -2.4) (degrees 4.8) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-rnd-flt spt-accel-y -5.4613333 3.4133334 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 31) + (new 'static 'sparticle-launch-group + :length 36 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-dark-eco-death" + :launcher + (new 'static 'inline-array sparticle-group-item 36 + (sp-item 295 :fade-after (meters 100.0) :period 600 :length 5 :binding 296) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 296 :flags (start-dead launch-asap) :binding 297) + (sp-item 297 :fade-after (meters 80.0) :falloff-to (meters 100.0) :flags (start-dead)) + (sp-item 2095 :period 600 :length 5) + (sp-item 2096 :fade-after (meters 80.0) :falloff-to (meters 80.0) :period 600 :length 40) + (sp-item 2097 :period 600 :length 20) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +(set! (-> *part-group-id-table* 32) + (new 'static 'sparticle-launch-group + :length 4 + :duration #x4b + :linger-duration #x258 + :name "group-lava-death" + :launcher + (new 'static 'inline-array sparticle-group-item 4 (sp-item 2003) (sp-item 2004) (sp-item 2005) (sp-item 2006)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-group-id-table* 708) (new 'static 'sparticle-launch-group + :length 1 + :duration #x96 + :linger-duration #x258 + :name "group-burn-death" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2003)) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2006) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 8.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 256.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-rnd-flt spt-a 128.0 128.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.04) 1.0) + (sp-flt spt-scalevel-x (meters -0.0023333333)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 360) + (sp-cpuinfo-flags bit0 bit3 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 1.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2003) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.053333335) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.023529412)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -1.5058824) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 81) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2004) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 32.0) + (sp-rnd-flt spt-x (meters 0.5) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 0.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-rnd-flt spt-g 0.0 128.0 1.0) + (sp-flt spt-b 0.0) + (sp-rnd-flt spt-a 32.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0016666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.04444444)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -2.8444443) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2005) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 28 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-y (meters 0.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-z -4096.0 8192.0 1.0) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.008888889)) + (sp-rnd-flt spt-rotvel-z (degrees -0.6) (degrees 1.2) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.56666666) + (sp-flt spt-fade-g -0.56666666) + (sp-flt spt-fade-b -0.56666666) + (sp-flt spt-fade-a 0.15) + (sp-flt spt-friction 0.97) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 81 80 1) + (sp-launcher-by-id spt-next-launcher 2007) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2007) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.08) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 2002) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 32.0 1.0) + (sp-rnd-flt spt-g 32.0 32.0 1.0) + (sp-rnd-flt spt-b 32.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.006666667) 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.85333335) + (sp-flt spt-friction 0.98) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 15 59 1) + (sp-launcher-by-id spt-next-launcher 2008) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2008) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.28444445) (sp-end)) + ) + ) + (defbehavior process-drawable-burn-effect target ((arg0 int)) - (sound-play-by-name - (static-sound-name "get-burned") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) + (sound-play-by-name (static-sound-name "get-burned") (new-sound-id) 1024 0 0 1 #t) (let ((s5-1 (new 'stack 'rgbaf)) (s3-0 (-> *display* base-frame-counter)) (s4-1 (-> self parent)) ) - (set! - (-> s5-1 quad) - (-> (the-as process-drawable (-> s4-1 0)) draw color-mult quad) - ) - (let - ((s2-1 - (vector-float*! - (the-as vector (new 'stack 'rgbaf)) - (the-as vector s5-1) - 0.0 - ) - ) - ) - (while (< (- (-> *display* base-frame-counter) s3-0) arg0) - (let ((v1-8 (- (-> *display* base-frame-counter) s3-0))) - (if (< v1-8 (/ arg0 2)) - (vector-lerp! - (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) - s5-1 - s2-1 - (/ (the float v1-8) (the float arg0)) + (set! (-> s5-1 quad) (-> (the-as process-drawable (-> s4-1 0)) draw color-mult quad)) + (let ((s2-1 (vector-float*! (the-as vector (new 'stack 'rgbaf)) (the-as vector s5-1) 0.0))) + (while (< (- (-> *display* base-frame-counter) s3-0) arg0) + (let ((v1-8 (- (-> *display* base-frame-counter) s3-0))) + (if (< v1-8 (/ arg0 2)) + (vector-lerp! + (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) + s5-1 + s2-1 + (/ (the float v1-8) (the float arg0)) + ) + (vector-lerp! + (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) + s5-1 + s2-1 + (- 1.0 (/ (the float v1-8) (the float arg0))) + ) + ) + ) + (let ((a2-3 + (process-drawable-random-point! + (the-as process-drawable (ppointer->process s4-1)) + (new 'stack-no-clear 'vector) + ) + ) + ) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 2002) + a2-3 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + (the-as float 1.0) + ) + ) + (suspend) + 0 ) - (vector-lerp! - (-> (the-as process-drawable (-> s4-1 0)) draw color-mult) - s5-1 - s2-1 - (- 1.0 (/ (the float v1-8) (the float arg0))) - ) - ) ) - (let - ((a2-3 - (process-drawable-random-point! - (the-as process-drawable (ppointer->process s4-1)) - (new 'stack-no-clear 'vector) - ) - ) - ) - (sp-launch-particles-var - *sp-particle-system-2d* - (-> *part-id-table* 2002) - a2-3 - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - (the-as float 1.0) - ) + (let ((v0-8 (-> (the-as process-drawable (-> s4-1 0)) draw color-mult))) + (set! (-> v0-8 quad) (-> s5-1 quad)) + v0-8 ) - (suspend) - 0 - ) ) - (let ((v0-8 (-> (the-as process-drawable (-> s4-1 0)) draw color-mult))) - (set! (-> v0-8 quad) (-> s5-1 quad)) - v0-8 - ) - ) ) -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2391) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 17 - (sp-tex spt-texture (new 'static 'texture-id :index #xa :page #x2)) - (sp-func spt-birth-func 'birth-func-target-orient) - (sp-flt spt-num 1.0) - (sp-flt spt-y (meters 0.02)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 110.0 32.0 1.0) - (sp-rnd-flt spt-g 128.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 32.0 1.0) - (sp-rnd-flt spt-a 8.0 40.0 1.0) - (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a -0.2) - (sp-int spt-timer 240) - (sp-cpuinfo-flags bit2 bit3 bit14) - (sp-flt spt-userdata -8192.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2391) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 17 + (sp-tex spt-texture (new 'static 'texture-id :index #xa :page #x2)) + (sp-func spt-birth-func 'birth-func-target-orient) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 0.02)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.5) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 110.0 32.0 1.0) + (sp-rnd-flt spt-g 128.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 40.0 1.0) + (sp-rnd-flt spt-scalevel-x (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.2) + (sp-int spt-timer 240) + (sp-cpuinfo-flags bit2 bit3 bit14) + (sp-flt spt-userdata -8192.0) + (sp-end) + ) + ) + ) -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 611) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag screen-space) - :name "group-part-first-person-hud-left" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 2474 :flags (launch-asap)) - ) - :bounds (new 'static 'sphere :w 4096.0) - ) - ) +(set! (-> *part-group-id-table* 611) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag screen-space) + :name "group-part-first-person-hud-left" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2474 :flags (launch-asap))) + :bounds (new 'static 'sphere :w 4096.0) + ) + ) -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 612) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag screen-space) - :name "group-part-first-person-hud-right" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 2475 :flags (launch-asap)) - ) - :bounds (new 'static 'sphere :w 4096.0) - ) - ) +(set! (-> *part-group-id-table* 612) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag screen-space) + :name "group-part-first-person-hud-right" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2475 :flags (launch-asap))) + :bounds (new 'static 'sphere :w 4096.0) + ) + ) -;; failed to figure out what this is: -(set! - (-> *part-group-id-table* 613) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag screen-space) - :name "group-part-first-person-hud-selector" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 2476 :flags (launch-asap)) - ) - :bounds (new 'static 'sphere :w 4096.0) - ) - ) +(set! (-> *part-group-id-table* 613) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag screen-space) + :name "group-part-first-person-hud-selector" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2476 :flags (launch-asap))) + :bounds (new 'static 'sphere :w 4096.0) + ) + ) -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2474) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 12 - (sp-tex spt-texture (new 'static 'texture-id :page #x408)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 3.5)) - (sp-flt spt-scale-y (meters 13.0)) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-flt spt-a 128.0) - (sp-int spt-timer -1) - (sp-cpuinfo-flags bit2 bit9 bit13) - (sp-func spt-func 'part-first-person-hud-left-func) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2474) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-first-person-hud-left-func) + (sp-end) + ) + ) + ) -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2475) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :page #x408)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 3.5)) - (sp-flt spt-rot-z (degrees 180.0)) - (sp-flt spt-scale-y (meters 13.0)) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-flt spt-a 128.0) - (sp-int spt-timer -1) - (sp-cpuinfo-flags bit2 bit9 bit13) - (sp-func spt-func 'part-first-person-hud-right-func) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2475) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-flt spt-rot-z (degrees 180.0)) + (sp-flt spt-scale-y (meters 13.0)) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit2 bit9 bit13) + (sp-func spt-func 'part-first-person-hud-right-func) + (sp-end) + ) + ) + ) -;; failed to figure out what this is: -(set! - (-> *part-id-table* 2476) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 12 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x408)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 1.0)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-flt spt-a 128.0) - (sp-int spt-timer -1) - (sp-cpuinfo-flags bit9 bit13) - (sp-func spt-func 'part-first-person-hud-selector-func) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 2476) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x408)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer -1) + (sp-cpuinfo-flags bit9 bit13) + (sp-func spt-func 'part-first-person-hud-selector-func) + (sp-end) + ) + ) + ) diff --git a/goal_src/engine/target/target-util.gc b/goal_src/engine/target/target-util.gc index dba99801e2..ea54d90c30 100644 --- a/goal_src/engine/target/target-util.gc +++ b/goal_src/engine/target/target-util.gc @@ -229,7 +229,7 @@ ) ) (dotimes (v1-4 3) - (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) 2) + (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) (collide-offense normal-attack)) ) (sphere<-vector+r! (the-as sphere (-> self control root-prim local-sphere)) @@ -239,20 +239,20 @@ (set! (-> self control unknown-symbol30) arg0) (set! (-> self state-flags) (logand -3 (-> self state-flags))) (set! (-> s4-0 transform-index) -2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s4-0 collide-with) (the-as uint 0)) + (set! (-> s4-0 prim-core collide-as) (collide-kind)) + (set! (-> s4-0 collide-with) (collide-kind)) (set! (-> s4-0 local-sphere w) 0.0) - (set! (-> s4-0 prim-core offense) 0) + (set! (-> s4-0 prim-core offense) (collide-offense no-offense)) (set! (-> s5-0 transform-index) -2) - (set! (-> s5-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s5-0 collide-with) (the-as uint 0)) + (set! (-> s5-0 prim-core collide-as) (collide-kind)) + (set! (-> s5-0 collide-with) (collide-kind)) (set! (-> s5-0 local-sphere w) 0.0) - (set! (-> s5-0 prim-core offense) 0) + (set! (-> s5-0 prim-core offense) (collide-offense no-offense)) (set! (-> gp-0 transform-index) -2) - (set! (-> gp-0 prim-core collide-as) (the-as uint 0)) - (set! (-> gp-0 collide-with) (the-as uint 0)) + (set! (-> gp-0 prim-core collide-as) (collide-kind)) + (set! (-> gp-0 collide-with) (collide-kind)) (set! (-> gp-0 local-sphere w) 0.0) - (set! (-> gp-0 prim-core offense) 0) + (set! (-> gp-0 prim-core offense) (collide-offense no-offense)) (case arg0 (('harmless #f) (set! (-> self control unknown-symbol30) #f) @@ -265,8 +265,10 @@ 9830.4 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* spin-offset) @@ -280,64 +282,80 @@ 10649.6 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (-> *TARGET-bank* duck-spin-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 32) ) (('duck-slide) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (-> *TARGET-bank* duck-spin-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 28) ) (('wheel-solid) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-57 3) - (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) 1) + (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) (collide-offense touch)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 7) (set! (-> self control unknown-symbol30) 'roll) ) (('flip) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-71 3) - (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) 1) + (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) (collide-offense touch)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 7) (set! (-> self control unknown-symbol30) 'flip) @@ -349,15 +367,19 @@ 11878.4 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* punch-offset) (-> *TARGET-bank* punch-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* punch-radius)) (set! (-> s5-0 transform-index) 22) ) @@ -368,19 +390,25 @@ 11878.4 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* uppercut0-offset) (-> *TARGET-bank* uppercut-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* uppercut-radius)) (set! (-> s5-0 transform-index) 22) - (set! (-> gp-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> gp-0 collide-with) (the-as uint #x2bce)) + (set! (-> gp-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> gp-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> gp-0 local-sphere)) (-> *TARGET-bank* uppercut1-offset) @@ -389,10 +417,12 @@ ) (('flop) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-114 3) - (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) 3) + (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) (collide-offense strong-attack)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) @@ -404,18 +434,22 @@ ) (('flop-down) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-124 3) - (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) 3) + (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) (collide-offense strong-attack)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* flop0-offset) (-> *TARGET-bank* flop-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) (-> *TARGET-bank* flop1-offset) @@ -433,15 +467,19 @@ 12288.0 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* spin-offset) (+ 2048.0 (-> *TARGET-bank* punch-radius)) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* @@ -449,7 +487,7 @@ ) (set! (-> s5-0 transform-index) 37) (dotimes (v1-148 3) - (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) 3) + (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) (collide-offense strong-attack)) ) ) (else @@ -473,7 +511,7 @@ (set! (-> self control unknown-symbol00) arg0) (set! (-> self control unknown-float90) arg1) (dotimes (v1-2 3) - (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) 1) + (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) (collide-offense touch)) (set! (-> gp-0 unknown-sphere-array00 v1-2 transform-index) -2) ) (case arg0 @@ -496,7 +534,7 @@ (set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 9420.8 0.0 6553.6) (set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 12288.0 0.0 6553.6) (dotimes (v1-22 3) - (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) 3) + (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) (collide-offense strong-attack)) ) ) (('flut) @@ -573,7 +611,7 @@ ) ) (dotimes (v1-52 3) - (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) 3) + (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) (collide-offense strong-attack)) ) ) (else @@ -680,54 +718,49 @@ (defun average-turn-angle ((arg0 target)) (let ((f30-0 0.0)) (dotimes (s5-0 8) - (+! - f30-0 - (fabs - (deg-diff - (atan (-> arg0 control unknown-vector-array00 s5-0 x) (-> arg0 control unknown-vector-array00 s5-0 z)) - 0.0 + (+! f30-0 + (fabs + (deg-diff + (atan (-> arg0 control unknown-vector-array00 s5-0 x) (-> arg0 control unknown-vector-array00 s5-0 z)) + 0.0 + ) ) ) - ) ) (* 0.125 f30-0) ) ) (defbehavior can-play-stance-amibent? target () - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 9000) - (not (-> *setting-control* current talking)) - (not (-> *setting-control* current spooling)) - (not (-> *setting-control* current movie)) - (not (-> *setting-control* current hint)) - (zero? (logand (-> self control status) 32)) - (zero? (logand (-> self water flags) 512)) - ) + (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 9000) + (not (-> *setting-control* current talking)) + (not (-> *setting-control* current spooling)) + (not (-> *setting-control* current movie)) + (not (-> *setting-control* current hint)) + (zero? (logand (-> self control status) 32)) + (zero? (logand (-> self water flags) 512)) + ) ) (defbehavior can-jump? target ((arg0 symbol)) - (and - (or - (logtest? (-> self control status) 1) - (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (and (logtest? (-> self control status) 1) (< 0.866 (-> self control surface-angle))) - ) - (and - (zero? (logand (-> self control unknown-surface01 flags) 64)) - (zero? (logand (-> self state-flags) 2048)) - (case arg0 - (('target-wheel-flip) - (>= 0.5 (-> self control unknown-float61)) - ) - (else - #t - ) - ) - ) - ) + (and (or (logtest? (-> self control status) 1) + (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (and (logtest? (-> self control status) 1) (< 0.866 (-> self control surface-angle))) + ) + (and (zero? (logand (-> self control unknown-surface01 flags) 64)) + (zero? (logand (-> self state-flags) 2048)) + (case arg0 + (('target-wheel-flip) + (>= 0.5 (-> self control unknown-float61)) + ) + (else + #t + ) + ) + ) + ) ) (defbehavior move-legs? target () @@ -739,34 +772,30 @@ ) (defbehavior fall-test target () - (when (and - (zero? (logand (-> self control status) 1)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-15 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (or - (not (or - (= v1-15 (-> self draw art-group data 59)) - (= v1-15 (-> self draw art-group data 60)) - (= v1-15 (-> self draw art-group data 61)) - ) + (when (and (zero? (logand (-> self control status) 1)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-15 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (not (or (= v1-15 (-> self draw art-group data 59)) + (= v1-15 (-> self draw art-group data 60)) + (= v1-15 (-> self draw art-group data 61)) + ) + ) + (< 4096.0 (target-height-above-ground)) ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - (when (and - (< (- (-> *display* base-frame-counter) (the-as int (-> self control rider-time))) - (the-as int (-> *TARGET-bank* ground-timeout)) ) - (logtest? (-> self control unknown-surface01 flags) #x4000) - ) + ) + (when (and (< (- (-> *display* base-frame-counter) (the-as int (-> self control rider-time))) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (logtest? (-> self control unknown-surface01 flags) #x4000) + ) (+! (-> self control transv x) (-> self control rider-last-move x)) (+! (-> self control transv z) (-> self control rider-last-move z)) ) @@ -776,47 +805,42 @@ ) (defbehavior slide-down-test target () - (if (and - (zero? (logand (-> self control status) 129)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (logtest? (-> self control status) 4) - (< 0.5 (-> self control surface-angle)) - ) + (if (and (zero? (logand (-> self control status) 129)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (logtest? (-> self control status) 4) + (< 0.5 (-> self control surface-angle)) + ) (go target-slide-down) ) (none) ) (defbehavior smack-surface? target ((arg0 symbol)) - (and (< 0.7 (-> self control touch-angle)) (and - (< (-> self control surface-angle) 0.3) - (logtest? (-> self control status) 8) - (or arg0 (zero? (logand (-> self control status) 32))) - ) + (and (< 0.7 (-> self control touch-angle)) (and (< (-> self control surface-angle) 0.3) + (logtest? (-> self control status) 8) + (or arg0 (zero? (logand (-> self control status) 32))) + ) ) ) (defbehavior can-wheel? target () - (and - (logtest? (-> self control status) 1) - (or (zero? (logand (-> self control status) 8)) (>= 0.7 (-> self control touch-angle))) - (and (< (-> self control unknown-float61) 0.7) (zero? (logand (-> self state-flags) 8192))) - ) + (and (logtest? (-> self control status) 1) + (or (zero? (logand (-> self control status) 8)) (>= 0.7 (-> self control touch-angle))) + (and (< (-> self control unknown-float61) 0.7) (zero? (logand (-> self state-flags) 8192))) + ) ) (defbehavior can-duck? target () - (and - (logtest? (-> self control status) 1) - (>= (-> self control unknown-float60) 0.7) - (zero? (logand (-> self water flags) 6144)) - (zero? (logand (-> self state-flags) 8192)) - (or - (zero? (logand (-> self water flags) 1024)) - (< (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) - ) - ) + (and (logtest? (-> self control status) 1) + (>= (-> self control unknown-float60) 0.7) + (zero? (logand (-> self water flags) 6144)) + (zero? (logand (-> self state-flags) 8192)) + (or (zero? (logand (-> self water flags) 1024)) + (< (- (- (-> self control trans y) (- (-> self water base-height) (-> self water wade-height)))) 2457.6) + ) + ) ) (defbehavior can-exit-duck? target () @@ -847,43 +871,36 @@ (defbehavior can-hands? target ((arg0 symbol)) (cond - ((or - (zero? (logand - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons square) + ((or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons square) + ) ) - ) - (or - (and - (logtest? (-> self state-flags) 4096) - (or - (zero? (logand (-> self state-flags) #x4000)) - (not (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0))) + (or (and (logtest? (-> self state-flags) 4096) + (or (zero? (logand (-> self state-flags) #x4000)) + (not (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0))) + ) + ) + (logtest? (-> self control unknown-surface01 flags) 384) ) - ) - (logtest? (-> self control unknown-surface01 flags) 384) ) - ) #f ) - ((and - (or (not arg0) (and - (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (-> *TARGET-bank* ground-timeout)) - ) - (< (-> self control unknown-float61) 0.7) - ) - ) - (>= (- (-> *display* base-frame-counter) - (the-as int (if (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) - (-> *TARGET-bank* yellow-attack-timeout) - (-> *TARGET-bank* attack-timeout) - ) - ) - ) - (-> self control unknown-dword31) - ) - ) + ((and (or (not arg0) (and (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (-> *TARGET-bank* ground-timeout)) + ) + (< (-> self control unknown-float61) 0.7) + ) + ) + (>= (- (-> *display* base-frame-counter) + (the-as int (if (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) + (-> *TARGET-bank* yellow-attack-timeout) + (-> *TARGET-bank* attack-timeout) + ) + ) + ) + (-> self control unknown-dword31) + ) + ) #t ) (else @@ -975,7 +992,7 @@ (logior! (-> arg1 state-flags) 32) (set! (-> arg1 control unknown-dword80) (-> *display* base-frame-counter)) (set! (-> arg1 control unknown-dword81) (the-as int arg0)) - (dummy-53 (-> arg1 control) 2 4096 0) + (dummy-53 (-> arg1 control) 2 (collide-kind target-attack) (collide-kind)) 0 (none) ) @@ -983,7 +1000,7 @@ (defun target-timed-invulnerable-off ((arg0 target)) (logclear! (-> arg0 draw status) (draw-status drwf01)) (set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags))) - (dummy-53 (-> arg0 control) 2 0 4096) + (dummy-53 (-> arg0 control) 2 (collide-kind) (collide-kind target-attack)) 0 (none) ) @@ -1223,6 +1240,7 @@ ) ) + (defun target-rot () (let ((v1-0 *target*)) (if v1-0 diff --git a/goal_src/engine/target/target2.gc b/goal_src/engine/target/target2.gc index 6672bde0fa..142dfee71e 100644 --- a/goal_src/engine/target/target2.gc +++ b/goal_src/engine/target/target2.gc @@ -172,11 +172,9 @@ :trans (behavior () (spool-push *art-control* (-> self control unknown-spoolanim00 name) 0 self (the-as float -99.0)) - (if (or - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons start l1 r1 triangle circle x square) - ) + (if (or (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons start l1 r1 triangle circle x square) + ) *progress-process* ) (go target-stance) @@ -348,14 +346,18 @@ (defstate hud-waiting (first-person-hud) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('go-away) - (go hud-going-out) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('go-away) + (go hud-going-out) + ) + ) + ) :enter - (behavior () (disable-hud (the-as int (-> *hud-parts* power))) (none)) + (behavior () + (disable-hud (the-as int (-> *hud-parts* power))) + (none) + ) :code (behavior () (while #t @@ -390,7 +392,10 @@ (none) ) :post - (behavior () (dumb-15 self) (none)) + (behavior () + (dumb-15 self) + (none) + ) ) (defstate hud-normal (first-person-hud) @@ -399,8 +404,7 @@ :code (behavior () (while #t - (if (or - (not *progress-process*) + (if (or (not *progress-process*) (= (-> *progress-process* 0 next-state name) 'progress-going-out) (= (-> *progress-process* 0 next-state name) 'progress-gone) ) @@ -432,7 +436,10 @@ (none) ) :post - (behavior () (dumb-15 self) (none)) + (behavior () + (dumb-15 self) + (none) + ) ) (defun part-first-person-hud-left-func ((arg0 sparticle-system) (arg1 sparticle-cpuinfo) (arg2 matrix)) @@ -517,11 +524,10 @@ (set! (-> a1-0 from) self) (set! (-> a1-0 num-params) 0) (set! (-> a1-0 message) 'dist-from-interp-src) - (and - (< (send-event-function *camera* a1-0) 4915.2) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 21) - (zero? (ja-group-size)) - ) + (and (< (send-event-function *camera* a1-0) 4915.2) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 21) + (zero? (ja-group-size)) + ) ) (suspend) ) @@ -616,21 +622,17 @@ (vf6 :class vf) ) (init-vf0-vector) - (when (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons r2 circle square) - ) - (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) 150) - (not *pause-lock*) - ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons r2 circle square) + ) + (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) 150) + (not *pause-lock*) + ) (let ((gp-1 (vector-float*! (new-stack-vector0) (-> *math-camera* inv-camera-rot vector 2) @@ -682,10 +684,9 @@ ) (set! (-> self control unknown-dword82) (-> *display* base-frame-counter)) ) - (when (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons triangle) - ) + (when (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons triangle) + ) (logclear! (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons triangle) @@ -804,21 +805,17 @@ (vf6 :class vf) ) (init-vf0-vector) - (when (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons r2 circle square) - ) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) 135) - (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) - (not *pause-lock*) - ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons r2 circle square) + ) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) 135) + (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) + (not *pause-lock*) + ) (let ((gp-1 (vector-float*! (new-stack-vector0) (-> *math-camera* inv-camera-rot vector 2) @@ -874,7 +871,12 @@ ) ) :code - (behavior () (ja-channel-set! 0) (set! (-> self control transv quad) (the-as uint128 0)) (anim-loop) (none)) + (behavior () + (ja-channel-set! 0) + (set! (-> self control transv quad) (the-as uint128 0)) + (anim-loop) + (none) + ) :post target-no-move-post ) @@ -927,7 +929,11 @@ (none) ) :exit - (behavior () (set! (-> self state-flags) (logand -17 (-> self state-flags))) (target-exit) (none)) + (behavior () + (set! (-> self state-flags) (logand -17 (-> self state-flags))) + (target-exit) + (none) + ) :code (behavior () (set-forward-vel (the-as float (-> (new 'static 'array int32 1 0) 0))) @@ -938,19 +944,18 @@ (suspend) ) (if (or (> gp-0 0) (let ((v1-11 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (or - (= v1-11 (-> self draw art-group data 34)) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (= v1-11 (-> self draw art-group data 34)) (= v1-11 (-> self draw art-group data 38)) (= v1-11 (-> self draw art-group data 42)) (= v1-11 (-> self draw art-group data 43)) (= v1-11 (-> self draw art-group data 41)) ) - ) - ) + ) + ) (target-hit-ground-anim #f) ) ) @@ -960,28 +965,25 @@ (case gp-1 (('stance) (cond - ((or - (and - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + ((or (and (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 23) ) - (-> self draw art-group data 23) - ) - (< 0.5 (-> self skel root-channel 6 frame-interp)) - ) - (let ((v1-32 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (or - (= v1-32 (-> self draw art-group data 28)) - (= v1-32 (-> self draw art-group data 29)) - (= v1-32 (-> self draw art-group data 54)) - (= v1-32 (-> self draw art-group data 55)) + (< 0.5 (-> self skel root-channel 6 frame-interp)) + ) + (let ((v1-32 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (= v1-32 (-> self draw art-group data 28)) + (= v1-32 (-> self draw art-group data 29)) + (= v1-32 (-> self draw art-group data 54)) + (= v1-32 (-> self draw art-group data 55)) + ) ) ) - ) (ja-channel-push! 1 45) (let ((a0-39 (-> self skel root-channel 0))) (set! (-> a0-39 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) @@ -1024,10 +1026,9 @@ ) ) ) - (and - (or (= v1-87 (-> self draw art-group data 39)) (= v1-87 (-> self draw art-group data 35))) - (not (ja-max? 0)) - ) + (and (or (= v1-87 (-> self draw art-group data 39)) (= v1-87 (-> self draw art-group data 35))) + (not (ja-max? 0)) + ) ) (let ((a0-54 (-> self skel root-channel 0))) (set! (-> a0-54 param 0) (the float (+ (-> a0-54 frame-group data 0 length) -1))) @@ -1040,14 +1041,13 @@ ) (ja-channel-push! 1 22) ) - ((not (and - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) + ((not (and (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + (= (ja-group-size) 1) ) - (= (ja-group-size) 1) - ) ) (ja-channel-push! 1 22) ) @@ -1104,11 +1104,11 @@ ) (('shock-out) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 88) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 88) + ) + ) (ja-channel-push! 1 60) ) (let ((s5-2 (-> self skel root-channel 0))) @@ -1162,7 +1162,7 @@ (set! (-> self control unknown-handle10) arg0) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self control unknown-surface00) *pole-mods*) - (logior! (-> self control root-prim prim-core action) 256) + (logior! (-> self control root-prim prim-core action) (collide-action ca-8)) (target-collide-set! 'pole (the-as float (-> (new 'static 'array int32 1 0) 0))) (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) (set! (-> self control transv quad) (the-as uint128 0)) @@ -1173,26 +1173,22 @@ :exit (behavior () (target-collide-set! 'normal (the-as float (-> (new 'static 'array int32 1 0) 0))) - (set! (-> self control root-prim prim-core action) (logand -257 (-> self control root-prim prim-core action))) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-8)) (set! (-> self control unknown-handle10) (the-as handle #f)) (none) ) :trans (behavior () - (when (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (zero? (logand (-> self state-flags) 2048)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - ) + (when (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (zero? (logand (-> self state-flags) 2048)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) + ) (set! (-> self control transv quad) (the-as uint128 0)) (cond ((< 44.0 (ja-aframe-num 0)) @@ -1240,8 +1236,8 @@ ) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 83) ) (while (not (-> self control unknown-int21)) @@ -1490,7 +1486,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self control unknown-surface00) *edge-grab-mods*) (set! (-> self control unknown-dword41) (-> *display* base-frame-counter)) - (logior! (-> self control root-prim prim-core action) 136) + (logior! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) (set! (-> self control transv quad) (the-as uint128 0)) (send-event *camera* 'ease-in) @@ -1498,33 +1494,28 @@ ) :exit (behavior () - (when (logtest? (-> self control root-prim prim-core action) 128) - (set! (-> self control root-prim prim-core action) (logand -137 (-> self control root-prim prim-core action))) + (when (logtest? (-> self control root-prim prim-core action) (collide-action ca-7)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (send-event *camera* 'damp-up) ) (none) ) :trans (behavior () - (when (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (zero? (logand (-> self state-flags) 2048)) - ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (zero? (logand (-> self state-flags) 2048)) + ) (cond - ((or - (< -0.2 (local-pad-angle)) - (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - ) + ((or (< -0.2 (local-pad-angle)) + (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + ) (let ((a1-2 (new 'stack-no-clear 'collide-using-spheres-params))) (set! (-> a1-2 spheres) (the-as (pointer sphere) (-> *collide-edge-work* world-player-leap-up-spheres))) (set! (-> a1-2 num-spheres) (the-as uint 6)) @@ -1562,8 +1553,8 @@ ) (while (< 0.0 (-> self control unknown-float110)) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 38) ) ) @@ -1682,7 +1673,7 @@ (behavior ((arg0 float) (arg1 float)) (ja-channel-set! 1) (set-quaternion! (-> self control) (-> self control dir-targ)) - (set! (-> self control root-prim prim-core action) (logand -137 (-> self control root-prim prim-core action))) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (set! (-> self control transv quad) (the-as uint128 0)) (let ((s4-0 (new 'stack-no-clear 'vector))) (let ((a0-8 (-> self skel root-channel 0))) @@ -1753,15 +1744,13 @@ ) ) (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control root-prim prim-core action) (logand -137 (-> self control root-prim prim-core action))) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (vector-float*! (-> self control transv) (-> self control unknown-vector101) -40960.0) - (when (and - (< (- (-> *display* base-frame-counter) (the-as int (-> self control rider-time))) 60) - (or - (logtest? (-> self control unknown-surface01 flags) #x4000) - (= (-> self control poly-pat material) (pat-material rotate)) - ) - ) + (when (and (< (- (-> *display* base-frame-counter) (the-as int (-> self control rider-time))) 60) + (or (logtest? (-> self control unknown-surface01 flags) #x4000) + (= (-> self control poly-pat material) (pat-material rotate)) + ) + ) (+! (-> self control transv x) (-> self control rider-last-move x)) (+! (-> self control transv z) (-> self control rider-last-move z)) ) @@ -1894,8 +1883,7 @@ (joint-control-channel-group! s5-3 (the-as art-joint-anim (-> self draw art-group data 84)) num-func-seek!) ) (until (ja-done? 0) - (if (or - (< (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint30)))) + (if (or (< (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint30)))) (the-as uint 30) ) (= (-> self control unknown-uint31) 1) @@ -2078,7 +2066,10 @@ :exit target-exit :trans - (behavior () (slide-down-test) (none)) + (behavior () + (slide-down-test) + (none) + ) :code (behavior ((arg0 object) (arg1 float)) (set! (-> self neck flex-blend) 0.0) @@ -2111,29 +2102,23 @@ (joint-control-channel-group! s5-0 (the-as art-joint-anim (-> self draw art-group data 87)) num-func-seek!) ) (until (ja-done? 0) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (zero? (logand (-> self water flags) 512)) - (zero? (logand (-> self state-flags) 2048)) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (zero? (logand (-> self water flags) 512)) + (zero? (logand (-> self state-flags) 2048)) + ) (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) ) - (if (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons circle) - ) - (can-feet?) - ) + (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons circle) + ) + (can-feet?) + ) (go target-attack-air #f) ) (when (can-hands? #f) @@ -2196,49 +2181,40 @@ :trans (behavior () ((-> self state-hook)) - (when (and - (zero? (logand (-> self water flags) 1024)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self water wade-time))) 15) - ) + (when (and (zero? (logand (-> self water flags) 1024)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self water wade-time))) 15) + ) (if (logtest? (-> self water flags) 2048) (go target-swim-stance) (go target-stance) ) ) - (if (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons l1 r1) - ) - (can-duck?) - ) + (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1) + ) + (can-duck?) + ) (go target-duck-stance) ) (if (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (go target-wade-walk) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) ) - (when (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons circle) - ) - (can-feet?) - ) + (when (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons circle) + ) + (can-feet?) + ) (sound-play-by-name (static-sound-name "swim-stroke") (new-sound-id) 1024 0 0 1 #t) (dummy-13 (-> self water) (the-as float 1.4) (-> self control trans) 0 (-> self control transv)) (go target-attack) @@ -2264,10 +2240,9 @@ :trans (behavior () ((-> self state-hook)) - (when (and - (zero? (logand (-> self water flags) 1024)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self water wade-time))) 30) - ) + (when (and (zero? (logand (-> self water flags) 1024)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self water wade-time))) 30) + ) (if (logtest? (-> self water flags) 2048) (go target-swim-stance) (go target-stance) @@ -2276,37 +2251,29 @@ (if (= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (go target-wade-stance) ) - (if (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons l1 r1) - ) - (can-duck?) - ) + (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1) + ) + (can-duck?) + ) (go target-duck-walk) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) (go target-jump (-> *TARGET-bank* jump-height-min) (-> *TARGET-bank* jump-height-max) (the-as surface #f)) ) - (when (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons circle) - ) - (can-feet?) - ) + (when (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons circle) + ) + (can-feet?) + ) (sound-play-by-name (static-sound-name "swim-stroke") (new-sound-id) 1024 0 0 1 #t) (dummy-13 (-> self water) (the-as float 1.4) (-> self control trans) 0 (-> self control transv)) (go target-attack) @@ -2341,8 +2308,8 @@ (set! gp-0 30) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 92) ) (set! gp-0 120) @@ -2351,8 +2318,8 @@ ) (cond ((and (= (ja-group-size) 6) (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 89) ) ) @@ -2529,10 +2496,9 @@ (set! (-> a0-69 param 0) 0.0) (joint-control-channel-group-eval! a0-69 (the-as art-joint-anim #f) num-func-chan) ) - (when (and - (>= (- (-> *display* base-frame-counter) gp-6) 60) - (< (- (-> self water height) (-> self control trans y)) 4096.0) - ) + (when (and (>= (- (-> *display* base-frame-counter) gp-6) 60) + (< (- (-> self water height) (-> self control trans y)) 4096.0) + ) (case (the int (ja-aframe-num 0)) ((15 16 17 18) (dummy-13 @@ -2626,12 +2592,11 @@ (target-state-hook-exit) (set! (-> self control unknown-surface00 target-speed) 28672.0) (target-exit) - (when (not (or - (= (-> self next-state name) 'target-swim-stance) - (= (-> self next-state name) 'target-swim-walk) - (= (-> self next-state name) 'target-swim-down) - (= (-> self next-state name) 'target-swim-up) - ) + (when (not (or (= (-> self next-state name) 'target-swim-stance) + (= (-> self next-state name) 'target-swim-walk) + (= (-> self next-state name) 'target-swim-down) + (= (-> self next-state name) 'target-swim-up) + ) ) (quaternion-identity! (-> self control unknown-quaternion01)) (set! (-> self control unknown-float00) 0.0) @@ -2644,60 +2609,50 @@ (if (and (logtest? (-> self control status) 1) (zero? (logand (-> self control status) 1024))) (set-zero! (-> self water bob)) ) - (when (and - (zero? (logand (-> self water flags) 2048)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - ) + (when (and (zero? (logand (-> self water flags) 2048)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) + ) (if (logtest? (-> self water flags) 1024) (go target-wade-stance) (go target-stance) ) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self water enter-swim-time))) 30) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self water enter-swim-time))) 30) + ) (go target-swim-jump (-> *TARGET-bank* swim-jump-height-min) (-> *TARGET-bank* swim-jump-height-max)) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground)) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons square) + ) + (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground)) + ) (go target-swim-down) ) - (if (and - (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (let ((gp-0 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (ja-aframe-num 0) - (if (or (and (= gp-0 (-> self draw art-group data 96)) #t) (and (= gp-0 (-> self draw art-group data 95)) #t)) - #f - #t - ) - ) - ) + (if (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (let ((gp-0 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (ja-aframe-num 0) + (if (or (and (= gp-0 (-> self draw art-group data 96)) #t) (and (= gp-0 (-> self draw art-group data 95)) #t)) + #f + #t + ) + ) + ) (go target-swim-walk) ) (target-swim-tilt @@ -2750,8 +2705,8 @@ ) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 92) ) (ja-channel-push! 1 249) @@ -2805,51 +2760,42 @@ (if (and (logtest? (-> self control status) 1) (zero? (logand (-> self control status) 1024))) (set-zero! (-> self water bob)) ) - (when (and - (zero? (logand (-> self water flags) 2048)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self water swim-time))) 30) - ) + (when (and (zero? (logand (-> self water flags) 2048)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self water swim-time))) 30) + ) (if (logtest? (-> self water flags) 1024) (go target-wade-stance) (go target-stance) ) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self water enter-swim-time))) 30) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self water enter-swim-time))) 30) + ) (go target-swim-jump (-> *TARGET-bank* swim-jump-height-min) (-> *TARGET-bank* swim-jump-height-max)) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground)) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons square) + ) + (< (-> *TARGET-bank* min-dive-depth) (target-height-above-ground)) + ) (go target-swim-down) ) (cond ((= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) (if (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) - (the-as uint 15) - ) + (the-as uint 15) + ) (go target-swim-stance) ) ) @@ -2873,16 +2819,15 @@ ) ) (cond - ((or - (= v1-2 (-> self draw art-group data 96)) - (= v1-2 (-> self draw art-group data 95)) - (= v1-2 (-> self draw art-group data 97)) - ) + ((or (= v1-2 (-> self draw art-group data 96)) + (= v1-2 (-> self draw art-group data 95)) + (= v1-2 (-> self draw art-group data 97)) + ) (ja-channel-push! 1 90) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 97) ) (ja-channel-push! 1 45) @@ -2984,12 +2929,11 @@ (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) (target-exit) - (when (not (or - (= (-> self next-state name) 'target-swim-stance) - (= (-> self next-state name) 'target-swim-walk) - (= (-> self next-state name) 'target-swim-down) - (= (-> self next-state name) 'target-swim-up) - ) + (when (not (or (= (-> self next-state name) 'target-swim-stance) + (= (-> self next-state name) 'target-swim-walk) + (= (-> self next-state name) 'target-swim-down) + (= (-> self next-state name) 'target-swim-up) + ) ) (quaternion-identity! (-> self control unknown-quaternion01)) (set! (-> self control unknown-float00) 0.0) @@ -3040,13 +2984,12 @@ ) (set! f30-0 (cond - ((or - (= v1-2 (-> self draw art-group data 91)) - (= v1-2 (-> self draw art-group data 92)) - (= v1-2 (-> self draw art-group data 97)) - (= v1-2 (-> self draw art-group data 96)) - (= v1-2 (-> self draw art-group data 95)) - ) + ((or (= v1-2 (-> self draw art-group data 91)) + (= v1-2 (-> self draw art-group data 92)) + (= v1-2 (-> self draw art-group data 97)) + (= v1-2 (-> self draw art-group data 96)) + (= v1-2 (-> self draw art-group data 95)) + ) (ja-channel-push! 1 22) (let ((a0-17 (-> self skel root-channel 0))) (set! (-> a0-17 frame-group) (the-as art-joint-anim (-> self draw art-group data 93))) @@ -3119,28 +3062,22 @@ ) ) (while #t - (if (and - (or - (zero? (logand - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) - (pad-buttons square) - ) - ) - (-> self control unknown-spoolanim00) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) - ) + (if (and (or (zero? (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons square) + ) + ) + (-> self control unknown-spoolanim00) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) + ) (go target-swim-up) ) - (if (or - (>= (- (-> *display* base-frame-counter) (-> self state-time)) s5-0) - (and - (logtest? (-> self control status) 1) - (and - (< (-> self water swim-depth) 8192.0) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) - ) - ) + (if (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) s5-0) + (and (logtest? (-> self control status) 1) + (and (< (-> self water swim-depth) 8192.0) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) + ) + ) ) (go target-swim-up) ) @@ -3192,11 +3129,10 @@ (-> target-swim-down exit) :trans (behavior () - (if (and - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) (pad-buttons x)) - (zero? (logand (-> self state-flags) 2048)) - (zero? (logand (-> self water flags) #x6000)) - ) + (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) (pad-buttons x)) + (zero? (logand (-> self state-flags) 2048)) + (zero? (logand (-> self water flags) #x6000)) + ) (go target-swim-jump-jump (-> *TARGET-bank* swim-jump-height-min) @@ -3204,10 +3140,9 @@ (the-as surface #f) ) ) - (when (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 3000) - (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) (-> *TARGET-bank* stuck-distance)) - ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 3000) + (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) (-> *TARGET-bank* stuck-distance)) + ) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-1 from) self) (set! (-> a1-1 num-params) 2) @@ -3248,16 +3183,13 @@ (the-as float (-> (new 'static 'array int32 1 0) 0)) (the-as float 0.1) ) - (if (and - (zero? (logand (-> self water flags) 4096)) - (or - (>= (ja-aframe-num 0) 222.0) - (and - (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) - (>= (ja-aframe-num 0) 200.0) - ) - ) - ) + (if (and (zero? (logand (-> self water flags) 4096)) + (or (>= (ja-aframe-num 0) 222.0) + (and (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (>= (ja-aframe-num 0) 200.0) + ) + ) + ) (goto cfg-37) ) (TODO-RENAME-9 (-> self align)) @@ -3549,10 +3481,9 @@ (until (>= (- (-> *display* base-frame-counter) sv-32) arg1) (let ((s4-0 (ppointer->process (-> self parent)))) (cond - ((and - sv-44 - (< (- (-> (the-as target s4-0) control trans y) (-> (the-as target s4-0) control unknown-vector52 y)) arg2) - ) + ((and sv-44 + (< (- (-> (the-as target s4-0) control trans y) (-> (the-as target s4-0) control unknown-vector52 y)) arg2) + ) (vector-xz-normalize! (-> (the-as target s4-0) control transv) (the-as float (-> (new 'static 'array int32 1 0) 0)) @@ -3571,10 +3502,9 @@ (set! sv-32 (-> *display* base-frame-counter)) ) (set! sv-44 (the-as symbol #f)) - (when (or - (= (-> (the-as target s4-0) next-state name) 'target-duck-high-jump-jump) - (= (-> (the-as target s4-0) next-state name) 'target-falling) - ) + (when (or (= (-> (the-as target s4-0) next-state name) 'target-duck-high-jump-jump) + (= (-> (the-as target s4-0) next-state name) 'target-falling) + ) (let ((v1-30 (-> (the-as target s4-0) control trans)) (s3-0 (-> (the-as target s4-0) control transv)) ) @@ -3724,7 +3654,11 @@ (none) ) :exit - (behavior () (send-event (handle->process (-> self control unknown-handle10)) 'end-mode) (target-exit) (none)) + (behavior () + (send-event (handle->process (-> self control unknown-handle10)) 'end-mode) + (target-exit) + (none) + ) :code (behavior ((arg0 string) (arg1 handle)) (let ((gp-0 (the-as art-joint-anim (dummy-10 (-> self draw art-group) arg0 art-joint-anim)))) diff --git a/goal_src/examples/debug-draw-example.gc b/goal_src/examples/debug-draw-example.gc index 3fd0aac20e..029907d5e9 100644 --- a/goal_src/examples/debug-draw-example.gc +++ b/goal_src/examples/debug-draw-example.gc @@ -19,48 +19,6 @@ ;; you can turn on actor marks (full) or visibilty boxes in the debug menu. |# -(defun hack-update-camera ((location vector) (inv-rot matrix)) - "Debugging function to set the camera's position and orientation" - ;; update to compute the perspective matrix. - (update-math-camera - *math-camera* - (-> *setting-control* current video-mode) - (-> *setting-control* current aspect-ratio) - ) - - ;; copy the input rotation - (matrix-copy! (-> *math-camera* inv-camera-rot) inv-rot) - ;; inverse of rotation matrix matrix is its transpose - (matrix-transpose! (-> *math-camera* camera-rot) (-> *math-camera* inv-camera-rot)) - - ;; fake some value here - ;;(set! (-> *math-camera* fov-correction-factor) 1000.0) - (set! (-> *math-camera* fov) (degrees 64.0)) - (let ((f0-28 (fmin 11650.845 (-> *math-camera* fov)))) - (set! (-> *math-camera* fov-correction-factor) (* 0.00008583069 f0-28)) - ) - - ;; do the math - (set! (-> *math-camera* trans quad) (-> location quad)) - (let ((cam-temp (-> *math-camera* camera-temp)) - (cam-rot (-> *math-camera* camera-rot)) - (inv-cam-rot (-> *math-camera* inv-camera-rot)) - (cam-trans (-> *math-camera* trans)) - ) - (let ((rotated-trans (new-stack-vector0))) - (set! (-> rotated-trans x) (- (-> cam-trans x))) - (set! (-> rotated-trans y) (- (-> cam-trans y))) - (set! (-> rotated-trans z) (- (-> cam-trans z))) - (set! (-> rotated-trans w) 1.0) - (vector-matrix*! rotated-trans rotated-trans cam-rot) - (set! (-> cam-rot vector 3 quad) (-> rotated-trans quad)) - ) - (matrix*! cam-temp cam-rot (-> *math-camera* perspective)) - (set! (-> inv-cam-rot vector 3 quad) (-> cam-trans quad)) - ) - - (none) - ) (defun test-function ((iter int)) "This function draws the debug stuff. You can edit this, then reload this file to play with it." @@ -87,7 +45,8 @@ (set! (-> cam-pos x) (- 0. x)) (set! (-> cam-pos z) (- 0. z)) (set! (-> cam-pos y) (meters -2.)) - (hack-update-camera cam-pos cam-inv-rot) + ;;(debug-set-camera-pos-rot! cam-pos cam-inv-rot) + ;;(hack-update-camera cam-pos cam-inv-rot) ;; create some test points @@ -105,14 +64,85 @@ ) ) + (update-hack) ;; these also work - (draw-end-credits (the int frame)) + ;;(draw-end-credits (the int frame)) ;; (draw-title-credits val) ) (none) ) +(defun update-hack () + (let ((a2-0 (new 'stack-no-clear 'vector))) + (set! (-> a2-0 x) 1.0) + (set! (-> a2-0 y) 0.0) + (set! (-> a2-0 z) 1.0) + (set! (-> a2-0 w) 1.0) + (let ((gp-0 (vector+float*! (new 'stack-no-clear 'vector) (new 'static 'vector) a2-0 0.0))) + (let* ((s5-0 (matrix-local->world #f #f)) + (f28-0 (lerp-scale 122.88 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7)) + (f30-0 (lerp-scale 2048.0 245.76 (fabs (-> s5-0 vector 2 y)) 0.0 0.7)) + ) + (let ((f26-0 (lerp-scale 0.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7)) + (f0-10 (lerp-scale 1.0 0.1 (-> s5-0 vector 2 y) 0.3 0.7)) + ) + ; (if (< 0.0 f26-0) + ; (send-event *camera* 'part-water-drip f26-0 f0-10) + ; ) + ) + (set! (-> *part-id-table* 37 init-specs 4 initial-valuef) f28-0) + (set! (-> *part-id-table* 37 init-specs 4 random-rangef) f28-0) + (set! (-> *part-id-table* 38 init-specs 4 initial-valuef) f28-0) + (set! (-> *part-id-table* 38 init-specs 4 random-rangef) f28-0) + (set! (-> *part-id-table* 37 init-specs 5 initial-valuef) f30-0) + (set! (-> *part-id-table* 37 init-specs 5 random-rangef) f30-0) + (set! (-> *part-id-table* 38 init-specs 5 initial-valuef) f30-0) + (set! (-> *part-id-table* 38 init-specs 5 random-rangef) f30-0) + ) + + (dotimes (i 10) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 37) + gp-0 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 38) + gp-0 + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + ) + ) + 0 + (none) + ) + +(defun launch-test-process () + "Call this to launch a process that draws the debug demo" + (let ((proc (get-process *nk-dead-pool* process 1024))) + (activate proc *active-pool* 'test *kernel-dram-stack*) + (run-next-time-in-process proc (lambda () + (let ((iter 0)) + (while #t + (test-function iter) + (suspend) + (+! iter 1) + ) + ) + ) + ) + proc) + + ) + #| (define *wasd-camera-transform* (new 'global 'transform)) (defun wasd-camera-update () diff --git a/goal_src/levels/beach/beach-obs.gc b/goal_src/levels/beach/beach-obs.gc index 4d0e4fc3f5..db589b77fb 100644 --- a/goal_src/levels/beach/beach-obs.gc +++ b/goal_src/levels/beach/beach-obs.gc @@ -41,7 +41,10 @@ (defstate windmill-one-idle (windmill-one) :exit - (behavior () (sound-stop (-> self sound-id)) (none)) + (behavior () + (sound-stop (-> self sound-id)) + (none) + ) :trans (behavior () (rider-trans) @@ -89,26 +92,26 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) -40960.0 -40960.0 32768.0 69632.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 4915.2 0.0 -4915.2 13516.8) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 9) (set-vector! (-> s2-1 local-sphere) 4915.2 0.0 -4915.2 13516.8) (append-prim s3-0 s2-1) @@ -260,15 +263,14 @@ (set! (-> self incomming-attack-id) v1-2) (case (-> arg3 param 1) (('uppercut) - (when (and - (< (-> *target* control trans y) (+ -40960.0 (-> self root-override trans y))) - (< (-> self position) (-> self max-position)) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root-override)) - (the-as uint 2) - ) - ) + (when (and (< (-> *target* control trans y) (+ -40960.0 (-> self root-override trans y))) + (< (-> self position) (-> self max-position)) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 2) + ) + ) (sound-play-by-name (static-sound-name "grotto-pole-hit") (new-sound-id) 1024 0 0 1 #t) (sound-play-by-name (static-sound-name "dirt-crumble") (new-sound-id) 1024 0 0 1 #t) (increment-success-for-hint (game-text-id beach-grottopole-increment)) @@ -276,15 +278,14 @@ ) ) (('flop) - (when (and - (< (+ -40960.0 (-> self root-override trans y)) (-> *target* control trans y)) - (> (-> self position) 0) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root-override)) - (the-as uint 1) - ) - ) + (when (and (< (+ -40960.0 (-> self root-override trans y)) (-> *target* control trans y)) + (> (-> self position) 0) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 1) + ) + ) (sound-play-by-name (static-sound-name "grotto-pole-hit") (new-sound-id) 1024 0 0 1 #t) (sound-play-by-name (static-sound-name "dirt-crumble") (new-sound-id) 1024 0 0 1 #t) (go grottopole-moving-down) @@ -391,34 +392,34 @@ (defmethod init-from-entity! grottopole ((obj grottopole) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 -20480.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 -20480.0 0.0 40960.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 -20480.0 0.0 40960.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 -20480.0 0.0 40960.0) (append-prim s3-0 s2-2) @@ -656,7 +657,10 @@ process-drawable-fuel-cell-handler ) :enter - (behavior ((arg0 symbol)) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior ((arg0 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior ((arg0 symbol)) (local-vars (sv-128 symbol)) @@ -792,10 +796,10 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 6963.2) (set-root-prim! s4-0 s3-0) @@ -841,7 +845,10 @@ (defstate flying-rock-rolling (flying-rock) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior () (let ((gp-0 #f) @@ -870,7 +877,7 @@ (vector-v++! (-> self root-override transv) (dummy-62 (-> self root-override) (new-stack-vector0) 1.0)) ) (dummy-47 (-> self root-override)) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self tumble)) (suspend) ) @@ -887,7 +894,7 @@ ) (set! (-> self root-override transv w) 1.0) (dummy-47 (-> self root-override)) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (let ((gp-2 (new 'stack-no-clear 'vector)) (f30-1 (vector-length (-> self root-override transv))) ) @@ -917,13 +924,11 @@ :code (behavior () (clear-collide-with-as (-> self root-override)) - (while (or - (logtest? (-> self draw status) (draw-status drwf03)) - (and - *target* - (>= 204800.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + (while (or (logtest? (-> self draw status) (draw-status drwf03)) + (and *target* + (>= 204800.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) ) - ) (suspend) ) (deactivate self) @@ -944,10 +949,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 17)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind background target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 (* 409.6 arg2)) (set-root-prim! s3-0 s2-0) @@ -1041,10 +1046,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) @@ -1152,11 +1157,10 @@ (defstate flutflutegg-idle (flutflutegg) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (and - (= arg2 'attack) - (or (= (-> arg3 param 1) 'punch) (= (-> arg3 param 1) 'spin) (= (-> arg3 param 1) 'spin-air)) - (!= (-> self incomming-attack-id) (-> arg3 param 2)) - ) + (when (and (= arg2 'attack) + (or (= (-> arg3 param 1) 'punch) (= (-> arg3 param 1) 'spin) (= (-> arg3 param 1) 'spin-air)) + (!= (-> self incomming-attack-id) (-> arg3 param 2)) + ) (set! (-> self incomming-attack-id) (-> arg3 param 2)) (flutflutegg-hit-sounds) (let ((s5-1 @@ -1251,12 +1255,11 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (the-as object - (when (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (= arg2 'attack) - (or (= (-> arg3 param 1) 'punch) (= (-> arg3 param 1) 'spin) (= (-> arg3 param 1) 'spin-air)) - (!= (-> self incomming-attack-id) (-> arg3 param 2)) - ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (= arg2 'attack) + (or (= (-> arg3 param 1) 'punch) (= (-> arg3 param 1) 'spin) (= (-> arg3 param 1) 'spin-air)) + (!= (-> self incomming-attack-id) (-> arg3 param 2)) + ) (set! (-> self incomming-attack-id) (-> arg3 param 2)) (flutflutegg-hit-sounds) (let ((s5-1 @@ -1358,10 +1361,9 @@ (quaternion*! (-> self root-override quat) (-> self root-override quat) a2-6) ) (suspend) - (set! v1-25 (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (logtest? (-> self root-override status) 1) - ) + (set! v1-25 (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (logtest? (-> self root-override status) 1) + ) ) ) (sound-play-by-name (static-sound-name "sack-land") (new-sound-id) 2048 0 0 1 #t) @@ -1411,10 +1413,9 @@ (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) ) ) - (while (and - (not (task-closed? (game-task beach-flutflut) (task-status need-reward-speech))) - (zero? (logand (-> self ambients-played) 1024)) - ) + (while (and (not (task-closed? (game-task beach-flutflut) (task-status need-reward-speech))) + (zero? (logand (-> self ambients-played) 1024)) + ) (if (play-ambient (-> self ambient) "BIR-AM11" #f (the-as vector #f)) (logior! (-> self ambients-played) 1024) ) @@ -1469,25 +1470,25 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 8192.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 16384.0 0.0 7782.4) (append-prim s3-0 s2-1) ) @@ -1622,53 +1623,53 @@ (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 1)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind background)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 24576.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 16384.0 -20480.0 16384.0 20480.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 16384.0 -20480.0 -16384.0 20480.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 4) (set-vector! (-> s2-3 local-sphere) -16384.0 -20480.0 -16384.0 20480.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 4) (set-vector! (-> s2-4 local-sphere) -16384.0 -20480.0 16384.0 20480.0) (append-prim s3-0 s2-4) diff --git a/goal_src/levels/beach/beach-rocks.gc b/goal_src/levels/beach/beach-rocks.gc index 0f61e2ce17..f2266bfec5 100644 --- a/goal_src/levels/beach/beach-rocks.gc +++ b/goal_src/levels/beach/beach-rocks.gc @@ -318,16 +318,17 @@ (defstate idle (beach-rock) :virtual #t :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('trigger) - (set! (-> self trigger) #t) - (go-virtual falling) - ) - (('loading) - (go-virtual loading) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (set! (-> self trigger) #t) + (go-virtual falling) + ) + (('loading) + (go-virtual loading) + ) + ) + ) :code (behavior () (if (-> self trigger) @@ -557,10 +558,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 1)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind background)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/beach/lurkercrab.gc b/goal_src/levels/beach/lurkercrab.gc index 2efd06dfcd..698d282854 100644 --- a/goal_src/levels/beach/lurkercrab.gc +++ b/goal_src/levels/beach/lurkercrab.gc @@ -7,74 +7,67 @@ ;; DECOMP BEGINS -(set! - (-> *part-group-id-table* 159) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xbb8 - :linger-duration #x5dc - :name "group-lurkercrab-slide" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 663 :fade-after (meters 40.0) :falloff-to (meters 40.0)) - (sp-item 664 :fade-after (meters 40.0) :falloff-to (meters 40.0)) - ) - :bounds - (new 'static 'sphere :y -49152.0 :w 57344.0) - ) - ) +(set! (-> *part-group-id-table* 159) (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :name "group-lurkercrab-slide" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 663 :fade-after (meters 40.0) :falloff-to (meters 40.0)) + (sp-item 664 :fade-after (meters 40.0) :falloff-to (meters 40.0)) + ) + :bounds + (new 'static 'sphere :y -49152.0 :w 57344.0) + ) + ) -(set! - (-> *part-id-table* 663) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.3 0.3 1.0) - (sp-flt spt-y (meters -2.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 100.0 30.0 1.0) - (sp-rnd-flt spt-g 80.0 20.0 1.0) - (sp-rnd-flt spt-b 30.0 30.0 1.0) - (sp-rnd-flt spt-a 16.0 48.0 1.0) - (sp-flt spt-vel-y (meters 0.0033333334)) - (sp-flt spt-scalevel-x (meters 0.033333335)) - (sp-flt spt-fade-a -0.21333334) - (sp-flt spt-accel-y -0.13653333) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 663) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 16 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.3 0.3 1.0) + (sp-flt spt-y (meters -2.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 100.0 30.0 1.0) + (sp-rnd-flt spt-g 80.0 20.0 1.0) + (sp-rnd-flt spt-b 30.0 30.0 1.0) + (sp-rnd-flt spt-a 16.0 48.0 1.0) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-scalevel-x (meters 0.033333335)) + (sp-flt spt-fade-a -0.21333334) + (sp-flt spt-accel-y -0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 664) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-rnd-flt spt-num 0.1 1.0 1.0) - (sp-flt spt-y (meters -2.0)) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 75.0 60.0 1.0) - (sp-rnd-flt spt-g 60.0 20.0 1.0) - (sp-rnd-flt spt-b 23.0 30.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) - (sp-flt spt-fade-a -0.42666668) - (sp-flt spt-accel-y -6.826667) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit12) - (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 30.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.2)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 664) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 0.1 1.0 1.0) + (sp-flt spt-y (meters -2.0)) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 75.0 60.0 1.0) + (sp-rnd-flt spt-g 60.0 20.0 1.0) + (sp-rnd-flt spt-b 23.0 30.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-flt spt-fade-a -0.42666668) + (sp-flt spt-accel-y -6.826667) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 30.0) (degrees 30.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.2)) + (sp-end) + ) + ) + ) (deftype lurkercrab (nav-enemy) ((orient basic :offset-assert 400) @@ -97,145 +90,106 @@ :longest-edge (meters 0) ) -(defmethod - dummy-44 - lurkercrab - ((obj lurkercrab) (arg0 process) (arg1 event-message-block)) - (if - (and - (logtest? (-> obj nav-enemy-flags) 64) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> obj collide-info) - (the-as uint 1) - ) - ) - (nav-enemy-send-attack - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 'generic - ) - ) - (dummy-55 - (-> obj collide-info) - arg0 - (the-as touching-shapes-entry (-> arg1 param 0)) - 0.7 - 6144.0 - 16384.0 - ) +(defmethod dummy-44 lurkercrab ((obj lurkercrab) (arg0 process) (arg1 event-message-block)) + (if (and (logtest? (-> obj nav-enemy-flags) 64) ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) + (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) + ) + (dummy-55 (-> obj collide-info) arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 0.7 6144.0 16384.0) (the-as object (if (zero? (logand (-> obj nav-enemy-flags) 256)) - (dummy-45 (-> obj collide-info)) - ) - ) + (dummy-45 (-> obj collide-info)) + ) + ) ) -(defmethod - dummy-43 - lurkercrab - ((obj lurkercrab) (arg0 process) (arg1 event-message-block)) +(defmethod dummy-43 lurkercrab ((obj lurkercrab) (arg0 process) (arg1 event-message-block)) (let ((s5-0 (-> obj incomming-attack-id))) - (set! (-> obj incomming-attack-id) (the-as handle (-> arg1 param 2))) - (let ((v1-1 (-> arg1 param 1))) - (cond - ((or (= v1-1 'flop) (= v1-1 'explode) (= v1-1 'darkeco)) - (logclear! (-> obj mask) (process-mask actor-pause)) - (go (method-of-object obj nav-enemy-die)) - ) - ((= v1-1 'punch) + (set! (-> obj incomming-attack-id) (the-as handle (-> arg1 param 2))) + (let ((v1-1 (-> arg1 param 1))) (cond - ((logtest? (-> obj nav-enemy-flags) 32) - (logclear! (-> obj mask) (process-mask actor-pause)) - (go (method-of-object obj nav-enemy-die)) - ) - ((begin - (let ((s4-0 (new 'stack-no-clear 'vector))) - (let ((f30-0 (quaternion-xz-angle (target-rot)))) - (set-vector! - s4-0 - (* 24576.0 (sin f30-0)) - 0.0 - (* 24576.0 (cos f30-0)) - 1.0 - ) - ) - (vector+! s4-0 (-> obj collide-info trans) s4-0) - (set! (-> obj nav target-pos quad) (-> s4-0 quad)) - ) - (go lurkercrab-pushed) - (= s5-0 (-> obj incomming-attack-id)) + ((or (= v1-1 'flop) (= v1-1 'explode) (= v1-1 'darkeco)) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) ) - 'push + ((= v1-1 'punch) + (cond + ((logtest? (-> obj nav-enemy-flags) 32) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) + ) + ((begin + (let ((s4-0 (new 'stack-no-clear 'vector))) + (let ((f30-0 (quaternion-xz-angle (target-rot)))) + (set-vector! s4-0 (* 24576.0 (sin f30-0)) 0.0 (* 24576.0 (cos f30-0)) 1.0) + ) + (vector+! s4-0 (-> obj collide-info trans) s4-0) + (set! (-> obj nav target-pos quad) (-> s4-0 quad)) + ) + (go lurkercrab-pushed) + (= s5-0 (-> obj incomming-attack-id)) + ) + 'push + ) + (else + #t + ) + ) + ) + ((logtest? (-> obj nav-enemy-flags) 32) + (logclear! (-> obj mask) (process-mask actor-pause)) + (go (method-of-object obj nav-enemy-die)) + ) + ((begin + (let ((s4-1 (new 'stack-no-clear 'vector))) + (vector-! s4-1 (-> obj collide-info trans) (target-pos 0)) + (vector-normalize! s4-1 24576.0) + (vector+! s4-1 (-> obj collide-info trans) s4-1) + (set! (-> obj nav target-pos quad) (-> s4-1 quad)) + ) + (go lurkercrab-pushed) + (= s5-0 (-> obj incomming-attack-id)) + ) + 'push + ) + (else + #t + ) ) - (else - #t - ) - ) ) - ((logtest? (-> obj nav-enemy-flags) 32) - (logclear! (-> obj mask) (process-mask actor-pause)) - (go (method-of-object obj nav-enemy-die)) - ) - ((begin - (let ((s4-1 (new 'stack-no-clear 'vector))) - (vector-! s4-1 (-> obj collide-info trans) (target-pos 0)) - (vector-normalize! s4-1 24576.0) - (vector+! s4-1 (-> obj collide-info trans) s4-1) - (set! (-> obj nav target-pos quad) (-> s4-1 quad)) - ) - (go lurkercrab-pushed) - (= s5-0 (-> obj incomming-attack-id)) - ) - 'push - ) - (else - #t - ) - ) ) - ) ) nav-enemy-default-event-handler (defmethod TODO-RENAME-37 lurkercrab ((obj lurkercrab)) (when (-> obj orient) - (if (logtest? (nav-control-flags bit19) (-> obj nav flags)) - (seek-to-point-toward-point! - (-> obj collide-info) - (-> obj nav target-pos) - (-> obj rotate-speed) - (-> obj turn-time) - ) - (seek-toward-heading-vec! - (-> obj collide-info) - (-> obj nav travel) - (-> obj rotate-speed) - (-> obj turn-time) - ) + (if (logtest? (nav-control-flags bit19) (-> obj nav flags)) + (seek-to-point-toward-point! + (-> obj collide-info) + (-> obj nav target-pos) + (-> obj rotate-speed) + (-> obj turn-time) + ) + (seek-toward-heading-vec! (-> obj collide-info) (-> obj nav travel) (-> obj rotate-speed) (-> obj turn-time)) + ) ) - ) (if (not (-> obj orient)) - (quaternion-rotate-y! - (-> obj collide-info quat) - (-> obj collide-info quat) - (* 163840.0 (-> *display* seconds-per-frame)) - ) - ) + (quaternion-rotate-y! + (-> obj collide-info quat) + (-> obj collide-info quat) + (* 163840.0 (-> *display* seconds-per-frame)) + ) + ) 0 (none) ) (defmethod TODO-RENAME-38 lurkercrab ((obj lurkercrab)) - (dummy-59 - (-> obj collide-info) - (-> obj collide-info transv) - (the-as uint 1) - 8192.0 - #f - #f - #f - ) + (dummy-59 (-> obj collide-info) (-> obj collide-info transv) (the-as uint 1) 8192.0 #f #f #f) 0 (none) ) @@ -244,950 +198,647 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :exit (behavior () - (set! (-> self draw force-lod) -1) - (none) - ) + (set! (-> self draw force-lod) -1) + (none) + ) :code (behavior () - (set! (-> self target-speed) 0.0) - (set! (-> self draw force-lod) 2) - (ja-channel-push! 1 22) - (while #t - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-identity + (set! (-> self target-speed) 0.0) + (set! (-> self draw force-lod) 2) + (ja-channel-push! 1 22) + (while #t + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-identity + ) + (set! (-> gp-0 frame-num) (ja-aframe 1.0 0)) + ) + (let ((gp-1 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-1) 900) + (suspend) + ) + ) + (let ((gp-2 (-> self skel root-channel 0))) + (set! (-> gp-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> gp-2 param 0) (ja-aframe 19.0 0)) + (set! (-> gp-2 param 1) 1.0) + (set! (-> gp-2 frame-num) (ja-aframe 1.0 0)) + (joint-control-channel-group! gp-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 param 0) (ja-aframe 19.0 0)) + (set! (-> gp-3 param 1) 1.0) + (joint-control-channel-group-eval! gp-3 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 num-func) num-func-identity) + (set! (-> gp-4 frame-num) (ja-aframe 19.0 0)) + ) + (let ((gp-5 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-5) 300) + (suspend) + ) + ) + (let ((gp-6 (-> self skel root-channel 0))) + (set! (-> gp-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> gp-6 param 0) (ja-aframe 1.0 0)) + (set! (-> gp-6 param 1) 1.0) + (set! (-> gp-6 frame-num) (ja-aframe 19.0 0)) + (joint-control-channel-group! gp-6 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-7 (-> self skel root-channel 0))) + (set! (-> gp-7 param 0) (ja-aframe 1.0 0)) + (set! (-> gp-7 param 1) 1.0) + (joint-control-channel-group-eval! gp-7 (the-as art-joint-anim #f) num-func-seek!) + ) + ) ) - (set! (-> gp-0 frame-num) (ja-aframe 1.0 0)) - ) - (let ((gp-1 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-1) 900) - (suspend) - ) - ) - (let ((gp-2 (-> self skel root-channel 0))) - (set! - (-> gp-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! (-> gp-2 param 0) (ja-aframe 19.0 0)) - (set! (-> gp-2 param 1) 1.0) - (set! (-> gp-2 frame-num) (ja-aframe 1.0 0)) - (joint-control-channel-group! - gp-2 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-3 (-> self skel root-channel 0))) - (set! (-> gp-3 param 0) (ja-aframe 19.0 0)) - (set! (-> gp-3 param 1) 1.0) - (joint-control-channel-group-eval! - gp-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((gp-4 (-> self skel root-channel 0))) - (set! (-> gp-4 num-func) num-func-identity) - (set! (-> gp-4 frame-num) (ja-aframe 19.0 0)) - ) - (let ((gp-5 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-5) 300) - (suspend) - ) - ) - (let ((gp-6 (-> self skel root-channel 0))) - (set! - (-> gp-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! (-> gp-6 param 0) (ja-aframe 1.0 0)) - (set! (-> gp-6 param 1) 1.0) - (set! (-> gp-6 frame-num) (ja-aframe 19.0 0)) - (joint-control-channel-group! - gp-6 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-7 (-> self skel root-channel 0))) - (set! (-> gp-7 param 0) (ja-aframe 1.0 0)) - (set! (-> gp-7 param 1) 1.0) - (joint-control-channel-group-eval! - gp-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) + (none) ) - (none) - ) ) (defbehavior lurkercrab-invulnerable lurkercrab () (set! (-> self nav-enemy-flags) (logand -33 (-> self nav-enemy-flags))) (let ((v1-3 (dummy-34 (-> self collide-info) (the-as uint 2)))) - (when v1-3 - (let ((v0-1 4)) - (set! (-> v1-3 prim-core offense) v0-1) - v0-1 - ) + (when v1-3 + (let ((v0-1 4)) + (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) + v0-1 + ) + ) ) - ) ) (defbehavior lurkercrab-vulnerable lurkercrab () (logior! (-> self nav-enemy-flags) 32) (let ((v1-3 (dummy-34 (-> self collide-info) (the-as uint 2)))) - (when v1-3 - (let ((v0-1 1)) - (set! (-> v1-3 prim-core offense) v0-1) - v0-1 - ) + (when v1-3 + (let ((v0-1 1)) + (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) + v0-1 + ) + ) ) - ) ) (defstate nav-enemy-patrol (lurkercrab) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :exit (behavior () - (lurkercrab-invulnerable) - (set! (-> self nav-enemy-flags) (logand -65 (-> self nav-enemy-flags))) - (logior! (-> self nav-enemy-flags) 8) - (none) - ) - :code - (behavior () - (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 4) - ) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-4 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-4 param 1) 1.0) - (set! (-> a0-4 frame-num) 0.0) - (joint-control-channel-group! - a0-4 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 param 0) - (the float (+ (-> a0-5 frame-group data 0 length) -1)) - ) - (set! (-> a0-5 param 1) 1.0) - (joint-control-channel-group-eval! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (ja-channel-push! 1 22) - (while #t - (dotimes (gp-0 6) - (let ((a0-8 (-> self skel root-channel 0))) - (set! - (-> a0-8 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-8 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-8 param 1) 1.0) - (set! (-> a0-8 frame-num) 0.0) - (joint-control-channel-group! - a0-8 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-9 (-> self skel root-channel 0))) - (set! - (-> a0-9 param 0) - (the float (+ (-> a0-9 frame-group data 0 length) -1)) - ) - (set! (-> a0-9 param 1) 1.0) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (when (nav-enemy-rnd-go-idle? 0.2) - (let ((a0-12 (-> self skel root-channel 0))) - (set! (-> a0-12 param 0) 1.0) - (joint-control-channel-group! - a0-12 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 180) - (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) - (nav-enemy-rnd-int-range 2 6) - (until (not (nav-enemy-rnd-go-idle? 0.2)) - (let ((gp-1 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-identity - ) - (set! (-> gp-1 frame-num) (ja-aframe 1.0 0)) - ) - (let ((gp-2 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-2) 600) - (suspend) - ) - ) - ) - (logior! (-> self nav-enemy-flags) 8) - (let ((a0-19 (-> self skel root-channel 0))) - (set! - (-> a0-19 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-19 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-19 param 1) 1.0) - (set! (-> a0-19 frame-num) 0.0) - (joint-control-channel-group! - a0-19 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-20 (-> self skel root-channel 0))) - (set! - (-> a0-20 param 0) - (the float (+ (-> a0-20 frame-group data 0 length) -1)) - ) - (set! (-> a0-20 param 1) 1.0) - (joint-control-channel-group-eval! - a0-20 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (let ((gp-3 (-> self skel root-channel 0))) - (set! - (-> gp-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! (-> gp-3 param 0) (ja-aframe 30.0 0)) - (set! (-> gp-3 param 1) 1.0) - (set! (-> gp-3 frame-num) (ja-aframe 1.0 0)) - (joint-control-channel-group! - gp-3 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-4 (-> self skel root-channel 0))) - (set! (-> gp-4 param 0) (ja-aframe 30.0 0)) - (set! (-> gp-4 param 1) 1.0) - (joint-control-channel-group-eval! - gp-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (lurkercrab-vulnerable) - (logior! (-> self nav-enemy-flags) 64) - (dotimes (gp-5 2) - (let ((s5-0 (-> self skel root-channel 0))) - (set! - (-> s5-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! (-> s5-0 param 0) (ja-aframe 60.0 0)) - (set! (-> s5-0 param 1) 1.0) - (set! (-> s5-0 frame-num) (ja-aframe 30.0 0)) - (joint-control-channel-group! - s5-0 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((s5-1 (-> self skel root-channel 0))) - (set! (-> s5-1 param 0) (ja-aframe 60.0 0)) - (set! (-> s5-1 param 1) 1.0) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) (lurkercrab-invulnerable) (set! (-> self nav-enemy-flags) (logand -65 (-> self nav-enemy-flags))) - (let ((gp-6 (-> self skel root-channel 0))) - (set! - (-> gp-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! (-> gp-6 param 0) (ja-aframe 90.0 0)) - (set! (-> gp-6 param 1) 1.0) - (set! (-> gp-6 frame-num) (ja-aframe 60.0 0)) - (joint-control-channel-group! - gp-6 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-7 (-> self skel root-channel 0))) - (set! (-> gp-7 param 0) (ja-aframe 90.0 0)) - (set! (-> gp-7 param 1) 1.0) - (joint-control-channel-group-eval! - gp-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) + (logior! (-> self nav-enemy-flags) 8) + (none) + ) + :code + (behavior () + (when (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 4) + ) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-4 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 1.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! a0-4 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1))) + (set! (-> a0-5 param 1) 1.0) + (joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (ja-channel-push! 1 22) + (while #t + (dotimes (gp-0 6) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-8 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-8 param 1) 1.0) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! a0-8 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-9 (-> self skel root-channel 0))) + (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) + (set! (-> a0-9 param 1) 1.0) + (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (when (nav-enemy-rnd-go-idle? 0.2) + (let ((a0-12 (-> self skel root-channel 0))) + (set! (-> a0-12 param 0) 1.0) + (joint-control-channel-group! a0-12 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-channel-push! 1 180) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (nav-enemy-rnd-int-range 2 6) + (until (not (nav-enemy-rnd-go-idle? 0.2)) + (let ((gp-1 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim (-> self draw art-group data 4)) + num-func-identity + ) + (set! (-> gp-1 frame-num) (ja-aframe 1.0 0)) + ) + (let ((gp-2 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-2) 600) + (suspend) + ) + ) + ) + (logior! (-> self nav-enemy-flags) 8) + (let ((a0-19 (-> self skel root-channel 0))) + (set! (-> a0-19 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-19 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-19 param 1) 1.0) + (set! (-> a0-19 frame-num) 0.0) + (joint-control-channel-group! a0-19 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-20 (-> self skel root-channel 0))) + (set! (-> a0-20 param 0) (the float (+ (-> a0-20 frame-group data 0 length) -1))) + (set! (-> a0-20 param 1) 1.0) + (joint-control-channel-group-eval! a0-20 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (let ((gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> gp-3 param 0) (ja-aframe 30.0 0)) + (set! (-> gp-3 param 1) 1.0) + (set! (-> gp-3 frame-num) (ja-aframe 1.0 0)) + (joint-control-channel-group! gp-3 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 param 0) (ja-aframe 30.0 0)) + (set! (-> gp-4 param 1) 1.0) + (joint-control-channel-group-eval! gp-4 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (lurkercrab-vulnerable) + (logior! (-> self nav-enemy-flags) 64) + (dotimes (gp-5 2) + (let ((s5-0 (-> self skel root-channel 0))) + (set! (-> s5-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> s5-0 param 0) (ja-aframe 60.0 0)) + (set! (-> s5-0 param 1) 1.0) + (set! (-> s5-0 frame-num) (ja-aframe 30.0 0)) + (joint-control-channel-group! s5-0 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((s5-1 (-> self skel root-channel 0))) + (set! (-> s5-1 param 0) (ja-aframe 60.0 0)) + (set! (-> s5-1 param 1) 1.0) + (joint-control-channel-group-eval! s5-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (lurkercrab-invulnerable) + (set! (-> self nav-enemy-flags) (logand -65 (-> self nav-enemy-flags))) + (let ((gp-6 (-> self skel root-channel 0))) + (set! (-> gp-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> gp-6 param 0) (ja-aframe 90.0 0)) + (set! (-> gp-6 param 1) 1.0) + (set! (-> gp-6 frame-num) (ja-aframe 60.0 0)) + (joint-control-channel-group! gp-6 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-7 (-> self skel root-channel 0))) + (set! (-> gp-7 param 0) (ja-aframe 90.0 0)) + (set! (-> gp-7 param 1) 1.0) + (joint-control-channel-group-eval! gp-7 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (none) ) - (none) - ) ) (defstate nav-enemy-notice (lurkercrab) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-chase) - (none) - ) + (go-virtual nav-enemy-chase) + (none) + ) ) (defstate nav-enemy-chase (lurkercrab) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :exit (behavior () - (lurkercrab-invulnerable) - (set! (-> self nav-enemy-flags) (logand -65 (-> self nav-enemy-flags))) - (none) - ) - :trans - (behavior () - (if (logtest? (-> *target* state-flags) #x80f8) - (go-virtual nav-enemy-victory) - ) - (if (< (ja-aframe-num 0) 2.0) - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - ) - (none) - ) - :code - (behavior () - (logior! (-> self nav-enemy-flags) 8) - (ja-channel-push! 1 22) - (while #t - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-1 param 1) 1.0) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (lurkercrab-vulnerable) - (logior! (-> self nav-enemy-flags) 64) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! (-> gp-0 param 0) (ja-aframe 30.0 0)) - (set! (-> gp-0 param 1) 1.0) - (set! (-> gp-0 frame-num) (ja-aframe 1.0 0)) - (joint-control-channel-group! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 param 0) (ja-aframe 30.0 0)) - (set! (-> gp-1 param 1) 1.0) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((gp-2 (-> self skel root-channel 0))) - (set! - (-> gp-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 9)) - ) - (set! (-> gp-2 param 0) (ja-aframe 120.0 0)) - (set! (-> gp-2 param 1) 1.0) - (set! (-> gp-2 frame-num) (ja-aframe 30.0 0)) - (joint-control-channel-group! - gp-2 - (the-as art-joint-anim (-> self draw art-group data 9)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-3 (-> self skel root-channel 0))) - (set! (-> gp-3 param 0) (ja-aframe 120.0 0)) - (set! (-> gp-3 param 1) 1.0) - (joint-control-channel-group-eval! - gp-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((gp-4 (-> self skel root-channel 0))) - (set! - (-> gp-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! (-> gp-4 param 0) (ja-aframe 60.0 0)) - (set! (-> gp-4 param 1) 1.0) - (set! (-> gp-4 frame-num) (ja-aframe 30.0 0)) - (joint-control-channel-group! - gp-4 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-5 (-> self skel root-channel 0))) - (set! (-> gp-5 param 0) (ja-aframe 60.0 0)) - (set! (-> gp-5 param 1) 1.0) - (joint-control-channel-group-eval! - gp-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((gp-6 (-> self skel root-channel 0))) - (set! - (-> gp-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! (-> gp-6 param 0) (ja-aframe 60.0 0)) - (set! (-> gp-6 param 1) 1.0) - (set! (-> gp-6 frame-num) (ja-aframe 30.0 0)) - (joint-control-channel-group! - gp-6 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-7 (-> self skel root-channel 0))) - (set! (-> gp-7 param 0) (ja-aframe 60.0 0)) - (set! (-> gp-7 param 1) 1.0) - (joint-control-channel-group-eval! - gp-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) (lurkercrab-invulnerable) (set! (-> self nav-enemy-flags) (logand -65 (-> self nav-enemy-flags))) - (let ((gp-8 (-> self skel root-channel 0))) - (set! - (-> gp-8 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! (-> gp-8 param 0) (ja-aframe 90.0 0)) - (set! (-> gp-8 param 1) 1.0) - (set! (-> gp-8 frame-num) (ja-aframe 60.0 0)) - (joint-control-channel-group! - gp-8 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-9 (-> self skel root-channel 0))) - (set! (-> gp-9 param 0) (ja-aframe 90.0 0)) - (set! (-> gp-9 param 1) 1.0) - (joint-control-channel-group-eval! - gp-9 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((a0-35 (-> self skel root-channel 0))) - (set! - (-> a0-35 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-35 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-35 param 1) 1.0) - (set! (-> a0-35 frame-num) 0.0) - (joint-control-channel-group! - a0-35 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-36 (-> self skel root-channel 0))) - (set! - (-> a0-36 param 0) - (the float (+ (-> a0-36 frame-group data 0 length) -1)) - ) - (set! (-> a0-36 param 1) 1.0) - (joint-control-channel-group-eval! - a0-36 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((a0-38 (-> self skel root-channel 0))) - (set! - (-> a0-38 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-38 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-38 param 1) 1.0) - (set! (-> a0-38 frame-num) 0.0) - (joint-control-channel-group! - a0-38 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-39 (-> self skel root-channel 0))) - (set! - (-> a0-39 param 0) - (the float (+ (-> a0-39 frame-group data 0 length) -1)) - ) - (set! (-> a0-39 param 1) 1.0) - (joint-control-channel-group-eval! - a0-39 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) + (none) + ) + :trans + (behavior () + (if (logtest? (-> *target* state-flags) #x80f8) + (go-virtual nav-enemy-victory) + ) + (if (< (ja-aframe-num 0) 2.0) + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + ) + (none) + ) + :code + (behavior () + (logior! (-> self nav-enemy-flags) 8) + (ja-channel-push! 1 22) + (while #t + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 1.0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (lurkercrab-vulnerable) + (logior! (-> self nav-enemy-flags) 64) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> gp-0 param 0) (ja-aframe 30.0 0)) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) (ja-aframe 1.0 0)) + (joint-control-channel-group! gp-0 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 30.0 0)) + (set! (-> gp-1 param 1) 1.0) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((gp-2 (-> self skel root-channel 0))) + (set! (-> gp-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 9))) + (set! (-> gp-2 param 0) (ja-aframe 120.0 0)) + (set! (-> gp-2 param 1) 1.0) + (set! (-> gp-2 frame-num) (ja-aframe 30.0 0)) + (joint-control-channel-group! gp-2 (the-as art-joint-anim (-> self draw art-group data 9)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 param 0) (ja-aframe 120.0 0)) + (set! (-> gp-3 param 1) 1.0) + (joint-control-channel-group-eval! gp-3 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((gp-4 (-> self skel root-channel 0))) + (set! (-> gp-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> gp-4 param 0) (ja-aframe 60.0 0)) + (set! (-> gp-4 param 1) 1.0) + (set! (-> gp-4 frame-num) (ja-aframe 30.0 0)) + (joint-control-channel-group! gp-4 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-5 (-> self skel root-channel 0))) + (set! (-> gp-5 param 0) (ja-aframe 60.0 0)) + (set! (-> gp-5 param 1) 1.0) + (joint-control-channel-group-eval! gp-5 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((gp-6 (-> self skel root-channel 0))) + (set! (-> gp-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> gp-6 param 0) (ja-aframe 60.0 0)) + (set! (-> gp-6 param 1) 1.0) + (set! (-> gp-6 frame-num) (ja-aframe 30.0 0)) + (joint-control-channel-group! gp-6 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-7 (-> self skel root-channel 0))) + (set! (-> gp-7 param 0) (ja-aframe 60.0 0)) + (set! (-> gp-7 param 1) 1.0) + (joint-control-channel-group-eval! gp-7 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (lurkercrab-invulnerable) + (set! (-> self nav-enemy-flags) (logand -65 (-> self nav-enemy-flags))) + (let ((gp-8 (-> self skel root-channel 0))) + (set! (-> gp-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> gp-8 param 0) (ja-aframe 90.0 0)) + (set! (-> gp-8 param 1) 1.0) + (set! (-> gp-8 frame-num) (ja-aframe 60.0 0)) + (joint-control-channel-group! gp-8 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((gp-9 (-> self skel root-channel 0))) + (set! (-> gp-9 param 0) (ja-aframe 90.0 0)) + (set! (-> gp-9 param 1) 1.0) + (joint-control-channel-group-eval! gp-9 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((a0-35 (-> self skel root-channel 0))) + (set! (-> a0-35 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-35 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-35 param 1) 1.0) + (set! (-> a0-35 frame-num) 0.0) + (joint-control-channel-group! a0-35 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-36 (-> self skel root-channel 0))) + (set! (-> a0-36 param 0) (the float (+ (-> a0-36 frame-group data 0 length) -1))) + (set! (-> a0-36 param 1) 1.0) + (joint-control-channel-group-eval! a0-36 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((a0-38 (-> self skel root-channel 0))) + (set! (-> a0-38 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-38 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-38 param 1) 1.0) + (set! (-> a0-38 frame-num) 0.0) + (joint-control-channel-group! a0-38 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-39 (-> self skel root-channel 0))) + (set! (-> a0-39 param 0) (the float (+ (-> a0-39 frame-group data 0 length) -1))) + (set! (-> a0-39 param 1) 1.0) + (joint-control-channel-group-eval! a0-39 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (none) ) - (none) - ) ) (defstate nav-enemy-stop-chase (lurkercrab) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-patrol) - (none) - ) + (go-virtual nav-enemy-patrol) + (none) + ) ) (defstate nav-enemy-stare (lurkercrab) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-patrol) - (none) - ) + (go-virtual nav-enemy-patrol) + (none) + ) ) (defstate nav-enemy-victory (lurkercrab) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :code (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (ja-channel-push! 1 22) - (let ((v1-4 (-> self skel root-channel 0))) - (set! - (-> v1-4 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info victory-anim)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (ja-channel-push! 1 22) + (let ((v1-4 (-> self skel root-channel 0))) + (set! (-> v1-4 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info victory-anim))) + ) ) - ) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (let ((v1-7 (-> self skel root-channel 0))) + (set! (-> v1-7 num-func) num-func-identity) + (set! (-> v1-7 frame-num) 0.0) + ) + (suspend) + ) + (go-virtual nav-enemy-patrol) + (none) ) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (let ((v1-7 (-> self skel root-channel 0))) - (set! (-> v1-7 num-func) num-func-identity) - (set! (-> v1-7 frame-num) 0.0) - ) - (suspend) - ) - (go-virtual nav-enemy-patrol) - (none) - ) ) (defstate lurkercrab-pushed (lurkercrab) :event (the-as - (function process int symbol event-message-block object :behavior lurkercrab) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkercrab) + nav-enemy-default-event-handler + ) :exit (behavior () - (set! (-> self orient) #t) - (none) - ) + (set! (-> self orient) #t) + (none) + ) :code (behavior () - (set! (-> self momentum-speed) 57344.0) - (set! (-> self target-speed) 0.0) - (set! (-> self orient) #f) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 10)) - ) - (set! (-> gp-0 param 0) (ja-aframe 18.0 0)) - (set! (-> gp-0 param 1) 0.75) - (set! (-> gp-0 frame-num) (ja-aframe 1.0 0)) - (joint-control-channel-group! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 10)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 param 0) (ja-aframe 18.0 0)) - (set! (-> gp-1 param 1) 0.75) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim #f) - num-func-seek! + (set! (-> self momentum-speed) 57344.0) + (set! (-> self target-speed) 0.0) + (set! (-> self orient) #f) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 10))) + (set! (-> gp-0 param 0) (ja-aframe 18.0 0)) + (set! (-> gp-0 param 1) 0.75) + (set! (-> gp-0 frame-num) (ja-aframe 1.0 0)) + (joint-control-channel-group! gp-0 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!) ) - ) + (until (ja-done? 0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 18.0 0)) + (set! (-> gp-1 param 1) 0.75) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((gp-2 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-2) 75) + (suspend) + ) + ) + (let ((gp-3 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-3) 30) + (suspend) + ) + ) + (go-virtual nav-enemy-chase) + (none) ) - (let ((gp-2 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-2) 75) - (suspend) - ) - ) - (let ((gp-3 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-3) 30) - (suspend) - ) - ) - (go-virtual nav-enemy-chase) - (none) - ) :post (behavior () - (let ((a0-0 (-> self part)) - (a1-0 (-> self collide-info root-prim prim-core)) - ) - (spawn a0-0 (the-as vector a1-0)) + (let ((a0-0 (-> self part)) + (a1-0 (-> self collide-info root-prim prim-core)) + ) + (spawn a0-0 (the-as vector a1-0)) + ) + (nav-enemy-travel-post) + (none) ) - (nav-enemy-travel-post) - (none) - ) ) -(define - *lurkercrab-nav-enemy-info* - (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim 6 - :turn-anim -1 - :notice-anim 4 - :run-anim 6 - :jump-anim 6 - :jump-land-anim 6 - :victory-anim 4 - :taunt-anim 4 - :die-anim 11 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 5.0) - :run-rotate-speed (degrees 999.99994) - :run-acceleration (meters 12.0) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 2.0) - :walk-rotate-speed (degrees 999.99994) - :walk-acceleration (meters 12.0) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 1.2) - :attack-shove-up (meters 1.5) - :shadow-size (meters 2.0) - :notice-nav-radius (meters 1.0) - :nav-nearest-y-threshold (meters 10.0) - :notice-distance (meters 25.0) - :stop-chase-distance (meters 35.0) - :frustration-distance (meters 8.0) - :frustration-time #x4b0 - :die-anim-hold-frame 4.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1.0) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1.0) - :shadow-min-y (meters -1.0) - :shadow-locus-dist (meters 150.0) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #t - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with #x1 - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *lurkercrab-nav-enemy-info* (new 'static 'nav-enemy-info + :idle-anim 4 + :walk-anim 6 + :turn-anim -1 + :notice-anim 4 + :run-anim 6 + :jump-anim 6 + :jump-land-anim 6 + :victory-anim 4 + :taunt-anim 4 + :die-anim 11 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 5.0) + :run-rotate-speed (degrees 999.99994) + :run-acceleration (meters 12.0) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 2.0) + :walk-rotate-speed (degrees 999.99994) + :walk-acceleration (meters 12.0) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 1.2) + :attack-shove-up (meters 1.5) + :shadow-size (meters 2.0) + :notice-nav-radius (meters 1.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 25.0) + :stop-chase-distance (meters 35.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 4.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1.0) + :shadow-min-y (meters -1.0) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #t + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) (defmethod init-from-entity! lurkercrab ((obj lurkercrab) (arg0 entity-actor)) - (let - ((s4-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum usually-hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 4096.0) + (append-prim s3-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) + (set! (-> s2-1 transform-index) 16) + (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 1638.4) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) + (set! (-> s2-2 transform-index) 21) + (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 1638.4) + (append-prim s3-0 s2-2) + ) ) - ) + (set! (-> s4-0 nav-radius) 4096.0) + (backup-collide-with-as s4-0) + (set! (-> obj collide-info) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) - (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 4096.0) - (append-prim s3-0 s2-0) - ) - (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 2) - (set! (-> s2-1 transform-index) 16) - (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 1638.4) - (append-prim s3-0 s2-1) - ) - (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 2) - (set! (-> s2-2 transform-index) 21) - (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 1638.4) - (append-prim s3-0 s2-2) - ) - ) - (set! (-> s4-0 nav-radius) 4096.0) - (backup-collide-with-as s4-0) - (set! (-> obj collide-info) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *lurkercrab-sg* '()) (TODO-RENAME-45 obj *lurkercrab-nav-enemy-info*) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 159) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 159) obj)) (set! (-> obj orient) #t) (set! (-> obj nav-enemy-flags) (logand -97 (-> obj nav-enemy-flags))) (set! (-> obj target-speed) 0.0) diff --git a/goal_src/levels/beach/lurkerpuppy.gc b/goal_src/levels/beach/lurkerpuppy.gc index d075ea0eb3..bef5161f65 100644 --- a/goal_src/levels/beach/lurkerpuppy.gc +++ b/goal_src/levels/beach/lurkerpuppy.gc @@ -31,584 +31,371 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkerpuppy) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerpuppy) + nav-enemy-default-event-handler + ) :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! (-> a0-0 param 0) 1.0) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 51) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-channel-push! 1 51) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> a0-2 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1)) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1))) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-2 param 1) 1.0) - (set! (-> a0-2 frame-num) 0.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) + (go-virtual nav-enemy-chase) + (none) ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 param 0) - (the float (+ (-> a0-3 frame-group data 0 length) -1)) - ) - (set! (-> a0-3 param 1) 1.0) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go-virtual nav-enemy-chase) - (none) - ) ) (defstate nav-enemy-chase (lurkerpuppy) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkerpuppy) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerpuppy) + nav-enemy-default-event-handler + ) :code (behavior () - (cond - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 10) - ) - (ja-channel-push! 1 51) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> gp-0 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 10) ) - -1 + (ja-channel-push! 1 51) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> gp-0 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) data 0 length) -1)) + ) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) (ja-aframe 4.0 0)) + (joint-control-channel-group! gp-0 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) ) + (until (ja-done? 0) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (else + (ja-channel-push! 1 51) ) - ) - (set! (-> gp-0 param 1) 1.0) - (set! (-> gp-0 frame-num) (ja-aframe 4.0 0)) - (joint-control-channel-group! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) ) - (until (ja-done? 0) - (suspend) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 param 0) - (the float (+ (-> a0-7 frame-group data 0 length) -1)) - ) - (set! (-> a0-7 param 1) 1.0) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (else - (ja-channel-push! 1 51) - ) - ) - (let ((f30-0 (rand-vu-float-range 0.9 1.1))) - (while #t - (if (rand-vu-percent? 0.25) - (sound-play-by-name - (static-sound-name "puppy-bark") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - (let ((a0-14 (-> self skel root-channel 0))) - (set! - (-> a0-14 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> a0-14 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length + (let ((f30-0 (rand-vu-float-range 0.9 1.1))) + (while #t + (if (rand-vu-percent? 0.25) + (sound-play-by-name (static-sound-name "puppy-bark") (new-sound-id) 1024 0 0 1 #t) + ) + (let ((a0-14 (-> self skel root-channel 0))) + (set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> a0-14 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) data 0 length) -1)) + ) + (set! (-> a0-14 param 1) f30-0) + (set! (-> a0-14 frame-num) 0.0) + (joint-control-channel-group! a0-14 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (if (logtest? (-> self nav-enemy-flags) 256) + (go-virtual nav-enemy-attack) + ) + (suspend) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 param 0) (the float (+ (-> a0-15 frame-group data 0 length) -1))) + (set! (-> a0-15 param 1) f30-0) + (joint-control-channel-group-eval! a0-15 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 - ) ) - ) - (set! (-> a0-14 param 1) f30-0) - (set! (-> a0-14 frame-num) 0.0) - (joint-control-channel-group! - a0-14 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) ) - (until (ja-done? 0) - (if (logtest? (-> self nav-enemy-flags) 256) - (go-virtual nav-enemy-attack) - ) - (suspend) - (let ((a0-15 (-> self skel root-channel 0))) - (set! - (-> a0-15 param 0) - (the float (+ (-> a0-15 frame-group data 0 length) -1)) - ) - (set! (-> a0-15 param 1) f30-0) - (joint-control-channel-group-eval! - a0-15 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-stare (lurkerpuppy) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkerpuppy) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerpuppy) + nav-enemy-default-event-handler + ) :code (behavior () - (set! (-> self rotate-speed) 1456355.5) - (set! (-> self turn-time) 30) - (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) - (let ((f30-0 (rand-vu-float-range 0.8 1.2))) - (while #t - (logior! (-> self nav-enemy-flags) 16) - (ja-channel-push! 1 30) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! (-> gp-0 param 0) (ja-aframe 12.0 0)) - (set! (-> gp-0 param 1) f30-0) - (set! (-> gp-0 frame-num) 0.0) - (joint-control-channel-group! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (let ((f0-3 (ja-aframe-num 0))) - (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) - (if (and (>= f0-3 2.5) (>= 7.5 f0-3)) + (set! (-> self rotate-speed) 1456355.5) + (set! (-> self turn-time) 30) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (let ((f30-0 (rand-vu-float-range 0.8 1.2))) + (while #t (logior! (-> self nav-enemy-flags) 16) + (ja-channel-push! 1 30) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> gp-0 param 0) (ja-aframe 12.0 0)) + (set! (-> gp-0 param 1) f30-0) + (set! (-> gp-0 frame-num) 0.0) + (joint-control-channel-group! gp-0 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (let ((f0-3 (ja-aframe-num 0))) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (if (and (>= f0-3 2.5) (>= 7.5 f0-3)) + (logior! (-> self nav-enemy-flags) 16) + ) + ) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 12.0 0)) + (set! (-> gp-1 param 1) f30-0) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (let ((a0-11 (-> self skel root-channel 0))) + (set! (-> a0-11 param 0) 1.0) + (joint-control-channel-group! a0-11 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-channel-push! 1 30) + (let ((v1-31 (-> self skel root-channel 0))) + (set! (-> v1-31 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + ) + (let ((v1-34 (-> self skel root-channel 0))) + (set! (-> v1-34 num-func) num-func-identity) + (set! (-> v1-34 frame-num) 0.0) + ) + (let ((gp-2 (rand-vu-int-range 750 900)) + (s5-0 (-> *display* base-frame-counter)) + ) + (until (>= (- (-> *display* base-frame-counter) s5-0) gp-2) + (let ((a0-18 (-> self skel root-channel 0))) + (set! (-> a0-18 param 0) 1.0) + (joint-control-channel-group-eval! a0-18 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-blend-eval) + (suspend) + ) + ) ) - ) - (suspend) - (let ((gp-1 (-> self skel root-channel 0))) - (set! (-> gp-1 param 0) (ja-aframe 12.0 0)) - (set! (-> gp-1 param 1) f30-0) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) ) - (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) - (let ((a0-11 (-> self skel root-channel 0))) - (set! (-> a0-11 param 0) 1.0) - (joint-control-channel-group! - a0-11 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 30) - (let ((v1-31 (-> self skel root-channel 0))) - (set! - (-> v1-31 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - ) - (let ((v1-34 (-> self skel root-channel 0))) - (set! (-> v1-34 num-func) num-func-identity) - (set! (-> v1-34 frame-num) 0.0) - ) - (let ((gp-2 (rand-vu-int-range 750 900)) - (s5-0 (-> *display* base-frame-counter)) - ) - (until (>= (- (-> *display* base-frame-counter) s5-0) gp-2) - (let ((a0-18 (-> self skel root-channel 0))) - (set! (-> a0-18 param 0) 1.0) - (joint-control-channel-group-eval! - a0-18 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-blend-eval) - (suspend) - ) - ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-give-up (lurkerpuppy) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkerpuppy) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerpuppy) + nav-enemy-default-event-handler + ) :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) 150) - (ja-channel-push! 1 22) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) 150) + (ja-channel-push! 1 22) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 1.0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-1 param 1) 1.0) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) + (logclear! (-> self nav flags) (nav-control-flags bit17 bit19)) + (nav-enemy-get-new-patrol-point) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-7 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-7 param 1) 1.4) + (set! (-> a0-7 frame-num) 0.0) + (joint-control-channel-group! a0-7 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (logclear! (-> self nav flags) (nav-control-flags bit17 bit19)) - (nav-enemy-get-new-patrol-point) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-7 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (until (ja-done? 0) + (seek-to-point-toward-point! + (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time) + ) + (suspend) + (let ((a0-9 (-> self skel root-channel 0))) + (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) + (set! (-> a0-9 param 1) 1.4) + (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-7 param 1) 1.4) - (set! (-> a0-7 frame-num) 0.0) - (joint-control-channel-group! - a0-7 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) + (go-virtual nav-enemy-patrol) + (none) ) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (let ((a0-9 (-> self skel root-channel 0))) - (set! - (-> a0-9 param 0) - (the float (+ (-> a0-9 frame-group data 0 length) -1)) - ) - (set! (-> a0-9 param 1) 1.4) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go-virtual nav-enemy-patrol) - (none) - ) ) (defstate nav-enemy-attack (lurkerpuppy) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkerpuppy) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerpuppy) + nav-enemy-default-event-handler + ) :code (behavior () - (sound-play-by-name - (static-sound-name "head-butt") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (sound-play-by-name (static-sound-name "head-butt") (new-sound-id) 1024 0 0 1 #t) + (go-virtual nav-enemy-victory) + (none) ) - (go-virtual nav-enemy-victory) - (none) - ) ) (defstate nav-enemy-victory (lurkerpuppy) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior lurkerpuppy) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior lurkerpuppy) + nav-enemy-default-event-handler + ) :exit (behavior () - (logior! (-> self nav-enemy-flags) 16) - (none) - ) + (logior! (-> self nav-enemy-flags) 16) + (none) + ) :code (behavior () - (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) - (ja-channel-push! 1 22) - (dotimes (gp-0 4) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length - ) - -1 + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (ja-channel-push! 1 22) + (dotimes (gp-0 4) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> a0-2 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1)) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (let ((f0-4 (ja-aframe-num 0))) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + (if (and (>= f0-4 2.5) (>= 7.5 f0-4)) + (logior! (-> self nav-enemy-flags) 16) + ) + ) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1))) + (set! (-> a0-5 param 1) 1.0) + (joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) ) - (set! (-> a0-2 param 1) 1.0) - (set! (-> a0-2 frame-num) 0.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (let ((f0-4 (ja-aframe-num 0))) - (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) - (if (and (>= f0-4 2.5) (>= 7.5 f0-4)) - (logior! (-> self nav-enemy-flags) 16) - ) - ) - (suspend) - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 param 0) - (the float (+ (-> a0-5 frame-group data 0 length) -1)) - ) - (set! (-> a0-5 param 1) 1.0) - (joint-control-channel-group-eval! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) + (go-virtual nav-enemy-chase) + (none) ) - (go-virtual nav-enemy-chase) - (none) - ) :post (the-as (function none :behavior lurkerpuppy) nav-enemy-face-player-post) ) -(define - *lurkerpuppy-nav-enemy-info* - (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 6 - :turn-anim 6 - :notice-anim 8 - :run-anim 7 - :jump-anim 9 - :jump-land-anim 10 - :victory-anim 8 - :taunt-anim 8 - :die-anim 11 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 5.0) - :run-rotate-speed (degrees 3999.9998) - :run-acceleration (meters 1.0) - :run-turn-time (seconds 0.15) - :walk-travel-speed (meters 2.0) - :walk-rotate-speed (degrees 1999.9999) - :walk-acceleration (meters 1.0) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3.0) - :attack-shove-up (meters 2.0) - :shadow-size (meters 2.0) - :notice-nav-radius (meters 1.0) - :nav-nearest-y-threshold (meters 10.0) - :notice-distance (meters 30.0) - :stop-chase-distance (meters 40.0) - :frustration-distance (meters 8.0) - :frustration-time #x4b0 - :die-anim-hold-frame 6.0 - :jump-anim-start-frame 3.5 - :jump-land-anim-end-frame 14.0 - :jump-height-min (meters 1.0) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.5) - :shadow-min-y (meters -1.0) - :shadow-locus-dist (meters 150.0) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with #x1 - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *lurkerpuppy-nav-enemy-info* (new 'static 'nav-enemy-info + :idle-anim 5 + :walk-anim 6 + :turn-anim 6 + :notice-anim 8 + :run-anim 7 + :jump-anim 9 + :jump-land-anim 10 + :victory-anim 8 + :taunt-anim 8 + :die-anim 11 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 5.0) + :run-rotate-speed (degrees 3999.9998) + :run-acceleration (meters 1.0) + :run-turn-time (seconds 0.15) + :walk-travel-speed (meters 2.0) + :walk-rotate-speed (degrees 1999.9999) + :walk-acceleration (meters 1.0) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3.0) + :attack-shove-up (meters 2.0) + :shadow-size (meters 2.0) + :notice-nav-radius (meters 1.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 30.0) + :stop-chase-distance (meters 40.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 6.0 + :jump-anim-start-frame 3.5 + :jump-land-anim-end-frame 14.0 + :jump-height-min (meters 1.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.5) + :shadow-min-y (meters -1.0) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) (defmethod initialize-collision lurkerpuppy ((obj lurkerpuppy)) - (let - ((s5-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (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) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s5-0 s4-0) ) - ) + (set! (-> s5-0 nav-radius) 2048.0) + (backup-collide-with-as s5-0) + (set! (-> obj collide-info) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 2) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) 2048.0) - (backup-collide-with-as s5-0) - (set! (-> obj collide-info) s5-0) - ) 0 (none) ) @@ -617,10 +404,10 @@ nav-enemy-default-event-handler (initialize-skeleton obj *lurkerpuppy-sg* '()) (TODO-RENAME-45 obj *lurkerpuppy-nav-enemy-info*) (when (nonzero? (-> obj neck)) - (set! (-> obj neck up) (the-as uint 0)) - (set! (-> obj neck nose) (the-as uint 1)) - (set! (-> obj neck ear) (the-as uint 2)) - ) + (set! (-> obj neck up) (the-as uint 0)) + (set! (-> obj neck nose) (the-as uint 1)) + (set! (-> obj neck ear) (the-as uint 2)) + ) 0 (none) ) diff --git a/goal_src/levels/beach/lurkerworm.gc b/goal_src/levels/beach/lurkerworm.gc index 7482c0c22a..d5c4db0689 100644 --- a/goal_src/levels/beach/lurkerworm.gc +++ b/goal_src/levels/beach/lurkerworm.gc @@ -334,10 +334,10 @@ ) (('touch) (if ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root-override) - (the-as uint 1) - ) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root-override) + (the-as uint 1) + ) (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) ) ) @@ -359,15 +359,18 @@ lurkerworm-default-post-behavior :event lurkerworm-default-event-handler :enter - (behavior () (ja-channel-set! 0) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (ja-channel-set! 0) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior () (while #t - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - *target* - (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + *target* + (>= 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) (go lurkerworm-spot) ) (suspend) @@ -411,7 +414,10 @@ lurkerworm-default-post-behavior :event lurkerworm-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior () (ja-channel-set! 1) @@ -452,7 +458,10 @@ lurkerworm-default-post-behavior (none) ) :exit - (behavior () (set! (-> self vulnerable) #f) (none)) + (behavior () + (set! (-> self vulnerable) #f) + (none) + ) :code (behavior () (let* ((f30-0 10.0) @@ -566,7 +575,10 @@ lurkerworm-default-post-behavior :event lurkerworm-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior () (let ((a0-0 (-> self skel root-channel 0))) @@ -605,8 +617,8 @@ lurkerworm-default-post-behavior (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (let ((v1-3 (-> self root-override root-prim))) - (set! (-> v1-3 collide-with) (the-as uint 0)) - (set! (-> v1-3 prim-core collide-as) (the-as uint 0)) + (set! (-> v1-3 collide-with) (collide-kind)) + (set! (-> v1-3 prim-core collide-as) (collide-kind)) ) 0 (let ((a0-1 (-> self skel root-channel 0))) @@ -642,60 +654,60 @@ lurkerworm-default-post-behavior (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 2) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-5 transform-index) 11) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-5) diff --git a/goal_src/levels/beach/pelican.gc b/goal_src/levels/beach/pelican.gc index 2d742be632..6fdc28ca47 100644 --- a/goal_src/levels/beach/pelican.gc +++ b/goal_src/levels/beach/pelican.gc @@ -133,8 +133,8 @@ (while #t (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 5) ) (let ((a0-5 (-> self skel root-channel 0))) @@ -307,10 +307,9 @@ ) (set! (-> self path-pos) (- f0-3 (* (the float (the int (/ f0-3 f1-2))) f1-2))) ) - (when (and - (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self path-vector) (-> *target* control trans)))) - (not (handle->process (-> self cam-tracker))) - ) + (when (and (and *target* (>= 81920.0 (vector-vector-xz-distance (-> self path-vector) (-> *target* control trans)))) + (not (handle->process (-> self cam-tracker))) + ) (let ((gp-1 (get-process *default-dead-pool* camera-tracker #x4000))) (set! (-> self cam-tracker) (ppointer->handle (when gp-1 @@ -436,7 +435,10 @@ (none) ) :exit - (behavior () (set! (-> self draw force-lod) -1) (none)) + (behavior () + (set! (-> self draw force-lod) -1) + (none) + ) :trans (behavior () (if (not (handle->process (-> self fuel-cell))) @@ -581,10 +583,10 @@ (s4-0 (-> (the-as process-drawable v1-13) root trans)) ) (if (< f30-0 - (fabs - (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))) - ) + (fabs + (deg-diff (y-angle gp-1) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s4-0 (-> gp-1 trans)))) ) + ) (go pelican-spit) ) ) @@ -832,11 +834,10 @@ ) (run-next-time-in-process gp-2 (lambda :behavior pelican () - (while (or - (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) + (while (or (-> *setting-control* current ambient) + (-> *setting-control* current movie) + (-> *setting-control* current hint) + ) (suspend) ) (level-hint-spawn @@ -900,11 +901,11 @@ :post (behavior () (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 10) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 10) + ) + ) (quaternion-identity! (-> self root-override quat)) ) (pelican-post) @@ -914,7 +915,10 @@ (defstate pelican-from-nest (pelican) :enter - (behavior () (set! (-> self path-pos) 1.5) (none)) + (behavior () + (set! (-> self path-pos) 1.5) + (none) + ) :trans (behavior () (pelican-path-update 131072.0 150 0.0 0.0 #f) @@ -999,7 +1003,10 @@ (defstate pelican-wait-at-end (pelican) :code - (behavior ((arg0 symbol)) (dummy-18 self) (none)) + (behavior ((arg0 symbol)) + (dummy-18 self) + (none) + ) ) (defstate pelican-explode (pelican) @@ -1072,10 +1079,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) ) diff --git a/goal_src/levels/beach/seagull.gc b/goal_src/levels/beach/seagull.gc index 31edc5c981..ae9658a5df 100644 --- a/goal_src/levels/beach/seagull.gc +++ b/goal_src/levels/beach/seagull.gc @@ -394,7 +394,7 @@ :code (behavior () (set! (-> self root-override trans y) (+ 20480.0 (-> self root-override trans y))) - (dummy-60 (-> self root-override) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self root-override) 40960.0 40960.0 #t (collide-kind background)) (dummy-47 (-> self root-override)) (clear-collide-with-as (-> self root-override)) (let ((gp-0 (-> self skel root-channel 0))) @@ -650,7 +650,7 @@ (vector+! a1-1 a0-2 v1-0) (if (points-in-air? a0-2 a1-1 *seagull-boxes* 10) (dummy-57 (-> obj root-override) (-> obj root-override transv)) - (dummy-33 (-> obj root-override) s5-0 (the-as uint 1)) + (dummy-33 (-> obj root-override) s5-0 (collide-kind background)) ) ) (none) @@ -1072,15 +1072,14 @@ (go seagull-flying) ) (when (< (-> self root-override trans y) 204800.0) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (let* ((f30-1 0.99) - (v1-67 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-68 (the-as number (logior #x3f800000 v1-67))) - ) - (< f30-1 (+ -1.0 (the-as float v1-68))) - ) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (let* ((f30-1 0.99) + (v1-67 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-68 (the-as number (logior #x3f800000 v1-67))) + ) + (< f30-1 (+ -1.0 (the-as float v1-68))) + ) + ) (go seagull-flying) ) ) @@ -1130,7 +1129,7 @@ (while (< 0.5 f30-0) (suspend) (set! f30-0 (- f30-0 (-> *display* seconds-per-frame))) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (let* ((v1-21 self) (f1-3 (the float (sar (shl (the int (- (-> self heading) (-> v1-21 heading))) 48) 48))) (f0-12 (- (-> v1-21 tilt))) @@ -1185,7 +1184,7 @@ (joint-control-channel-group-eval! a0-29 (the-as art-joint-anim #f) num-func-seek!) ) (set! f30-0 (- f30-0 (-> *display* seconds-per-frame))) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (let* ((v1-48 self) (f1-13 (the float (sar (shl (the int (- (-> self heading) (-> v1-48 heading))) 48) 48))) (f0-32 (- (-> v1-48 tilt))) @@ -1301,10 +1300,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s2-0 collide-with) (the-as uint 1)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind)) + (set! (-> s2-0 collide-with) (collide-kind background)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 2048.0) (set-root-prim! s3-0 s2-0) ) @@ -1562,11 +1561,11 @@ (defun-debug beach-rock-trigger () (let ((gp-0 600)) (set! (-> (the-as - seagullflock - (search-process-tree *active-pool* (lambda ((arg0 process)) (= (-> arg0 type) seagullflock))) - ) - teleport-frames - ) + seagullflock + (search-process-tree *active-pool* (lambda ((arg0 process)) (= (-> arg0 type) seagullflock))) + ) + teleport-frames + ) gp-0 ) gp-0 diff --git a/goal_src/levels/citadel/citadel-obs.gc b/goal_src/levels/citadel/citadel-obs.gc index 855d8f332c..225fe25415 100644 --- a/goal_src/levels/citadel/citadel-obs.gc +++ b/goal_src/levels/citadel/citadel-obs.gc @@ -218,10 +218,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) @@ -453,10 +453,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) (set-root-prim! s5-0 s4-0) @@ -590,10 +590,10 @@ (defmethod TODO-RENAME-24 citb-iris-door ((obj citb-iris-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -642,10 +642,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -1078,16 +1078,20 @@ (defstate citb-robotboss-die (citb-robotboss) :code - (behavior () (dummy-18 self) (deactivate self) (none)) + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) ) (defmethod init-from-entity! citb-robotboss ((obj citb-robotboss) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) (set-root-prim! s4-0 s3-0) @@ -1162,12 +1166,13 @@ (defstate citb-coil-idle (citb-coil) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('trigger) - (go citb-coil-break) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go citb-coil-break) + ) + ) + ) :code (behavior () (while #t @@ -1177,12 +1182,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1209,7 +1214,11 @@ (none) ) :post - (behavior () (spawn (-> self part) (-> self root trans)) (ja-post) (none)) + (behavior () + (spawn (-> self part) (-> self root trans)) + (ja-post) + (none) + ) ) (defstate citb-coil-break (citb-coil) @@ -1593,7 +1602,10 @@ ) ) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :code (behavior () (lods-assign! (-> self draw) (-> self normal-look)) @@ -1717,16 +1729,20 @@ (none) ) :post - (behavior () (spawn (-> self part-broken) (-> self root-override trans)) (ja-post) (none)) + (behavior () + (spawn (-> self part-broken) (-> self root-override trans)) + (ja-post) + (none) + ) ) (defmethod init! citb-generator ((obj citb-generator)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) (set-root-prim! s5-0 s4-0) ) @@ -1836,11 +1852,10 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) - (when (and - (task-complete? *game-info* (game-task citadel-sage-blue)) - (task-complete? *game-info* (game-task citadel-sage-red)) - (task-complete? *game-info* (game-task citadel-sage-yellow)) - ) + (when (and (task-complete? *game-info* (game-task citadel-sage-blue)) + (task-complete? *game-info* (game-task citadel-sage-red)) + (task-complete? *game-info* (game-task citadel-sage-yellow)) + ) (logclear! (-> self mask) (process-mask actor-pause)) (go citadelcam-stair-plats) ) @@ -1848,7 +1863,11 @@ ) ) :code - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (anim-loop) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (anim-loop) + (none) + ) ) (defstate citadelcam-stair-plats (citadelcam) diff --git a/goal_src/levels/citadel/citadel-sages.gc b/goal_src/levels/citadel/citadel-sages.gc index d142fdd159..bb641cb36b 100644 --- a/goal_src/levels/citadel/citadel-sages.gc +++ b/goal_src/levels/citadel/citadel-sages.gc @@ -185,10 +185,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 28672.0) (set-root-prim! s5-0 s4-0) @@ -1217,10 +1217,9 @@ :trans (behavior () (cond - ((and - *target* - (and (< (-> (target-pos 0) z) -18821530.0) (= (current-status (-> self tasks)) (task-status need-hint))) - ) + ((and *target* + (and (< (-> (target-pos 0) z) -18821530.0) (= (current-status (-> self tasks)) (task-status need-hint))) + ) (send-event self 'play-anim) ) ((= (-> self which-movie) 1) diff --git a/goal_src/levels/citadel/citb-drop-plat-CIT.gc b/goal_src/levels/citadel/citb-drop-plat-CIT.gc index 1a3c087275..f726f1beb9 100644 --- a/goal_src/levels/citadel/citb-drop-plat-CIT.gc +++ b/goal_src/levels/citadel/citb-drop-plat-CIT.gc @@ -128,12 +128,13 @@ (defstate drop-plat-spawn (drop-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('drop) - (go drop-plat-die) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('drop) + (go drop-plat-die) + ) + ) + ) :code (behavior () (set! (-> self root-override trans y) @@ -159,12 +160,13 @@ (defstate drop-plat-rise (drop-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('drop) - (go drop-plat-drop) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('drop) + (go drop-plat-drop) + ) + ) + ) :code (behavior ((arg0 draw-control)) (set! (-> self interp) 1.0) @@ -233,8 +235,8 @@ (vector-v++! (-> self root-override transv) (dummy-62 (-> self root-override) (new-stack-vector0) 0.0)) (vector-v++! (-> self root-override trans) (-> self root-override transv)) (if (< 204800.0 - (- (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root-override trans y)) - ) + (- (-> (the-as process-drawable (-> self parent 0)) root trans y) (-> self root-override trans y)) + ) (go drop-plat-die) ) (+! (-> self spin-angle) (* (-> self spin-speed) (-> *display* seconds-per-frame))) @@ -256,7 +258,10 @@ (defstate drop-plat-die (drop-plat) :code - (behavior () (dummy-18 self) (none)) + (behavior () + (dummy-18 self) + (none) + ) ) (defmethod TODO-RENAME-20 drop-plat ((obj drop-plat)) @@ -268,10 +273,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -478,12 +483,13 @@ (defstate citb-drop-plat-idle (citb-drop-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('trigger) - (go citb-drop-plat-active) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go citb-drop-plat-active) + ) + ) + ) :code (behavior () (citb-drop-plat-drop-all-children) @@ -517,12 +523,10 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (citb-drop-plat-spawn-children) (while #t - (if (or - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (+ (-> self duration) 600)) - (or - (not *target*) - (< (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) + (if (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) (+ (-> self duration) 600)) + (or (not *target*) + (< (-> self idle-distance) (vector-vector-distance (-> self root trans) (-> *target* control trans))) + ) (not (-> self child)) ) (go citb-drop-plat-idle) diff --git a/goal_src/levels/citadel/citb-plat.gc b/goal_src/levels/citadel/citb-plat.gc index 3fda835ebf..d86603230e 100644 --- a/goal_src/levels/citadel/citb-plat.gc +++ b/goal_src/levels/citadel/citb-plat.gc @@ -78,9 +78,9 @@ :trans (behavior () (if (and *target* (>= (-> self idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (go-virtual citb-base-plat-active) ) (none) @@ -96,9 +96,9 @@ :trans (behavior () (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (go-virtual citb-base-plat-idle) ) (rider-trans) @@ -119,10 +119,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -175,10 +175,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -255,10 +255,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -281,15 +281,15 @@ (set! (-> obj draw bounds w) (* (-> obj draw bounds w) f0-0)) ) (set! (-> obj trans-offset quad) (-> (the-as vector ((method-of-type res-lump get-property-struct) - (-> obj entity) - 'trans-offset - 'interp - -1000000000.0 - *null-vector* - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) + (-> obj entity) + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) quad ) ) @@ -399,11 +399,10 @@ ) (defmethod dummy-24 citb-stair-plat ((obj citb-stair-plat)) - (if (and - (task-complete? *game-info* (game-task citadel-sage-blue)) - (task-complete? *game-info* (game-task citadel-sage-red)) - (task-complete? *game-info* (game-task citadel-sage-yellow)) - ) + (if (and (task-complete? *game-info* (game-task citadel-sage-blue)) + (task-complete? *game-info* (game-task citadel-sage-red)) + (task-complete? *game-info* (game-task citadel-sage-yellow)) + ) (go (method-of-object obj citb-base-plat-active)) (go (method-of-object obj citb-base-plat-idle)) ) @@ -495,20 +494,22 @@ (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) (set! (-> self state-time) (-> *display* base-frame-counter)) - (if (and - (and *target* (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (send-event *target* 'query 'powerup 3) - ) + (if (and (and *target* (>= (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (send-event *target* 'query 'powerup 3) + ) (go-virtual rigid-body-platform-float) ) ) (none) ) :code - (behavior () (anim-loop) (none)) + (behavior () + (anim-loop) + (none) + ) :post (the-as (function none :behavior citb-chain-plat) ja-post) ) @@ -521,21 +522,25 @@ rigid-body-platform-event-handler ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :trans (behavior () (cond - ((and - (and - *target* - (>= (-> self info idle-distance) - (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) - ) - ) - (send-event *target* 'query 'powerup 3) - ) + ((and (and *target* + (>= (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (send-event *target* 'query 'powerup 3) + ) (when (< (- (-> *display* base-frame-counter) (-> self state-time)) 300) (if (rand-vu-percent? 0.05) (spawn-projectile-blue *target*) @@ -561,7 +566,10 @@ (none) ) :code - (behavior () (anim-loop) (none)) + (behavior () + (anim-loop) + (none) + ) :post (the-as (function none :behavior citb-chain-plat) rigid-body-platform-post) ) @@ -611,10 +619,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -697,12 +705,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -726,9 +734,9 @@ ) ) (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (go-virtual citb-base-plat-idle) ) ) @@ -745,10 +753,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 -20480.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) @@ -811,10 +819,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) @@ -901,10 +909,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 22528.0) (set-root-prim! s5-0 s4-0) @@ -955,9 +963,9 @@ :trans (behavior () (if (and *target* (>= (-> self idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (go citb-firehose-active) ) (none) @@ -977,9 +985,9 @@ :trans (behavior () (if (or (not *target*) (< (+ 8192.0 (-> self idle-distance)) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (go citb-firehose-idle) ) (let ((f0-2 (get-current-phase (-> self sync))) @@ -1124,29 +1132,29 @@ (defmethod init-from-entity! citb-firehose ((obj citb-firehose) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 -61440.0 0.0 36864.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 2) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 -49152.0 0.0 12288.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 2) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 -61440.0 0.0 14336.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 2) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-2 local-sphere) 0.0 -73728.0 0.0 16384.0) (append-prim s3-0 s2-2) ) @@ -1322,26 +1330,26 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 122880.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -2867.2 0.0 7372.8) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 122880.0) (append-prim s4-0 s3-1) diff --git a/goal_src/levels/common/babak.gc b/goal_src/levels/common/babak.gc index b8411a2bd6..edcee86660 100644 --- a/goal_src/levels/common/babak.gc +++ b/goal_src/levels/common/babak.gc @@ -34,8 +34,8 @@ (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 10) ) (ja-channel-push! 1 45) @@ -73,8 +73,8 @@ (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 14) ) (let ((a0-5 (-> self skel root-channel 0))) @@ -139,10 +139,9 @@ (behavior () (set! (-> self turn-time) 60) (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when (or - (logtest? (-> self nav-enemy-flags) 256) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) + (when (or (logtest? (-> self nav-enemy-flags) 256) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) + ) (ja-channel-push! 1 30) (let ((gp-0 (-> self skel root-channel 0))) (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 11))) @@ -186,11 +185,11 @@ (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) ) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + ) (ja-channel-push! 1 60) ) (let ((a0-23 (-> self skel root-channel 0))) @@ -245,8 +244,8 @@ (s5-0 (target-pos 0)) ) (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) + (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) + ) 12743.111 ) (let ((a0-6 (-> self skel root-channel 0))) @@ -398,31 +397,31 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s4-0 s3-2) @@ -449,10 +448,9 @@ (defmethod TODO-RENAME-59 babak ((obj babak)) (cond - ((and - (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) - (logtest? (-> obj enemy-info options) (fact-options fop1)) - ) + ((and (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (logtest? (-> obj enemy-info options) (fact-options fop1)) + ) (go (method-of-object obj nav-enemy-fuel-cell)) ) ((logtest? (-> obj enemy-info options) (fact-options fop5)) diff --git a/goal_src/levels/common/basebutton.gc b/goal_src/levels/common/basebutton.gc index 1e14c6744a..d468372280 100644 --- a/goal_src/levels/common/basebutton.gc +++ b/goal_src/levels/common/basebutton.gc @@ -101,7 +101,10 @@ ) ) :enter - (behavior () (press! self #f) (none)) + (behavior () + (press! self #f) + (none) + ) :trans (behavior () (if (-> self move-to?) @@ -138,7 +141,10 @@ ) ) :enter - (behavior () (press! self #t) (none)) + (behavior () + (press! self #t) + (none) + ) :trans (the-as (function none :behavior basebutton) rider-trans) :code @@ -187,7 +193,10 @@ ) ) :enter - (behavior () (press! self #t) (none)) + (behavior () + (press! self #t) + (none) + ) :trans (behavior () (if (-> self move-to?) @@ -240,7 +249,10 @@ ) ) :enter - (behavior () (press! self #f) (none)) + (behavior () + (press! self #f) + (none) + ) :trans (the-as (function none :behavior basebutton) rider-trans) :code @@ -386,25 +398,25 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) (append-prim s4-0 s3-1) @@ -506,7 +518,10 @@ (defstate use (warp-gate) :virtual #t :trans - (behavior () (send-event *camera* 'joystick 0.0 0.0) (none)) + (behavior () + (send-event *camera* 'joystick 0.0 0.0) + (none) + ) :code (behavior ((arg0 int) (arg1 level)) (set! (-> self state-time) (-> *display* base-frame-counter)) @@ -534,10 +549,9 @@ ) (else (load-state-want-levels (-> self level) (-> arg1 load-name)) - (while (or - (not (member (level-status *level* (-> arg1 load-name)) '(loaded active))) - (< (- (-> *display* base-frame-counter) (-> self state-time)) 600) - ) + (while (or (not (member (level-status *level* (-> arg1 load-name)) '(loaded active))) + (< (- (-> *display* base-frame-counter) (-> self state-time)) 600) + ) (suspend) ) ) @@ -605,7 +619,10 @@ (none) ) :exit - (behavior () (set! (-> self state-flags) (logand -1025 (-> self state-flags))) (none)) + (behavior () + (set! (-> self state-flags) (logand -1025 (-> self state-flags))) + (none) + ) :code (behavior ((arg0 vector) (arg1 vector)) (send-event *camera* 'change-state cam-fixed 0) @@ -636,14 +653,14 @@ (f1-1 f0-7) (f2-4 (- (sqrtf - (* 2.0 - (-> self control dynam gravity-length) - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector102) (-> self control trans)) - ) - ) - ) + (* 2.0 + (-> self control dynam gravity-length) + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector102) (-> self control trans)) + ) + ) + ) (* 0.008333334 (- (-> self control dynam gravity-length))) ) ) @@ -681,10 +698,9 @@ (let ((gp-2 (vector-! (new-stack-vector0) (-> self control unknown-vector102) (-> self control trans)))) (set! (-> gp-2 y) 0.0) (send-event *target* 'sidekick #f) - (when (and - (or (< (vector-dot gp-2 (-> self control transv)) 0.0) (-> self control unknown-spoolanim00)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 15) - ) + (when (and (or (< (vector-dot gp-2 (-> self control transv)) 0.0) (-> self control unknown-spoolanim00)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 15) + ) (vector-seek! (-> self draw color-mult) (new 'static 'vector) (* 2.0 (-> *display* seconds-per-frame))) (set! (-> self control transv x) (* 0.95 (-> self control transv x))) (set! (-> self control transv z) (* 0.95 (-> self control transv z))) diff --git a/goal_src/levels/common/baseplat.gc b/goal_src/levels/common/baseplat.gc index b902af4c3b..084befff58 100644 --- a/goal_src/levels/common/baseplat.gc +++ b/goal_src/levels/common/baseplat.gc @@ -181,21 +181,19 @@ eco-door-event-handler ) ) (dummy-26 self) - (if (and - (not (-> self locked)) - (or - (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'powerup)) - (set! (-> a1-1 param 1) (the-as uint 3)) - (send-event-function *target* a1-1) - ) - (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)) - ) - ) + (if (and (not (-> self locked)) + (or (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'powerup)) + (set! (-> a1-1 param 1) (the-as uint 3)) + (send-event-function *target* a1-1) + ) + (and (-> self one-way) (< (vector4-dot (-> self out-dir) (target-pos 0)) -8192.0)) + ) + ) (go-virtual door-opening) ) (level-hint-spawn (game-text-id zero) (the-as string #f) (-> self entity) *entity-pool* (game-task none)) @@ -213,10 +211,9 @@ eco-door-event-handler :code (behavior () (let ((gp-0 - (and - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (send-event *target* 'query 'powerup 3) - ) + (and (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (send-event *target* 'query 'powerup 3) + ) ) ) (if gp-0 @@ -272,13 +269,12 @@ eco-door-event-handler (let ((f30-0 (vector4-dot (-> self out-dir) (target-pos 0))) (f28-0 (vector4-dot (-> self out-dir) (camera-pos))) ) - (when (and - (-> self auto-close) - (or (not *target*) (< (-> self close-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) - ) + (when (and (-> self auto-close) + (or (not *target*) (< (-> self close-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + ) (if (and (>= (* f30-0 f28-0) 0.0) (< 16384.0 (fabs f28-0))) (go-virtual door-closing) ) @@ -338,10 +334,10 @@ eco-door-event-handler (defmethod TODO-RENAME-24 eco-door ((obj eco-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -383,11 +379,10 @@ eco-door-event-handler (set! (-> obj out-dir w) (- (vector-dot (-> obj out-dir) (-> obj root-override trans)))) (dummy-47 (-> obj root-override)) (TODO-RENAME-25 obj) - (if (and - (not (-> obj auto-close)) - (-> obj entity) - (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) - ) + (if (and (not (-> obj auto-close)) + (-> obj entity) + (logtest? (-> obj entity extra perm status) (entity-perm-status complete)) + ) (go (method-of-object obj door-open)) (go (method-of-object obj door-closed)) ) diff --git a/goal_src/levels/common/blocking-plane.gc b/goal_src/levels/common/blocking-plane.gc index 4747e32766..858d34dbe8 100644 --- a/goal_src/levels/common/blocking-plane.gc +++ b/goal_src/levels/common/blocking-plane.gc @@ -53,10 +53,10 @@ (s4-1 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player))) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-1 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 (fmax 122880.0 f30-1)) (set-root-prim! s4-1 s3-1) diff --git a/goal_src/levels/common/joint-exploder.gc b/goal_src/levels/common/joint-exploder.gc index 50117c0bce..f89302d10a 100644 --- a/goal_src/levels/common/joint-exploder.gc +++ b/goal_src/levels/common/joint-exploder.gc @@ -390,10 +390,9 @@ (set! (-> s2-0 rmat vector 1 y) (+ (* f3-0 f2-1) (* f1-2 f0-3))) ) (cond - ((or - (< (-> s1-0 y) (-> obj die-if-below-y)) - (< (-> obj die-if-beyond-xz-dist-sqrd) (vector-vector-xz-distance s1-0 (-> obj root trans))) - ) + ((or (< (-> s1-0 y) (-> obj die-if-below-y)) + (< (-> obj die-if-beyond-xz-dist-sqrd) (vector-vector-xz-distance s1-0 (-> obj root trans))) + ) (set! s3-0 (TODO-RENAME-24 obj arg0 s3-0)) ) (else @@ -408,7 +407,13 @@ ) (defmethod TODO-RENAME-22 joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) - (dummy-13 *collide-cache* (-> arg0 bbox) (the-as uint 1) obj (the-as uint 1)) + (dummy-13 + *collide-cache* + (-> arg0 bbox) + (collide-kind background) + obj + (new 'static 'pat-surface :skip #x1 :noentity #x1) + ) (let ((gp-1 (-> obj joints)) (v1-2 (-> arg0 head)) ) @@ -419,7 +424,7 @@ (s3-0 (new 'stack-no-clear 'collide-tri-result)) ) (vector-! a2-1 s4-0 (-> s5-1 prev-pos)) - (when (>= (dummy-18 *collide-cache* (-> s5-1 prev-pos) a2-1 40.96 1 s3-0 1) 0.0) + (when (>= (dummy-18 *collide-cache* (-> s5-1 prev-pos) a2-1 40.96 (collide-kind background) s3-0 1) 0.0) (set! (-> s4-0 quad) (-> s3-0 intersect quad)) (let ((f28-0 (vector-xz-length (-> s5-1 transv)))) (vector-reflect! (-> s5-1 transv) (-> s5-1 transv) (-> s3-0 normal)) @@ -443,7 +448,10 @@ (defstate joint-exploder-shatter (joint-exploder) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (let* ((f1-0 (the float (- (-> *display* base-frame-counter) (-> self state-time)))) @@ -572,10 +580,9 @@ (-> s3-0 transv) (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi x) (-> obj tuning fountain-rand-transv-hi y)) ) - (+! - (-> s3-0 transv y) - (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi z) (-> obj tuning fountain-rand-transv-hi w)) - ) + (+! (-> s3-0 transv y) + (rand-vu-float-range (-> obj tuning fountain-rand-transv-hi z) (-> obj tuning fountain-rand-transv-hi w)) + ) (set! (-> s3-0 transv w) 1.0) ) (else diff --git a/goal_src/levels/common/launcherdoor.gc b/goal_src/levels/common/launcherdoor.gc index 1cb5da94b2..f8f300912e 100644 --- a/goal_src/levels/common/launcherdoor.gc +++ b/goal_src/levels/common/launcherdoor.gc @@ -76,11 +76,10 @@ ) (suspend) (while #t - (if (and - *target* - (= (-> *target* control unknown-surface00 name) 'launch-jump) - (< (-> *target* control trans y) (-> self thresh-y)) - ) + (if (and *target* + (= (-> *target* control unknown-surface00 name) 'launch-jump) + (< (-> *target* control trans y) (-> self thresh-y)) + ) (go launcherdoor-open #f) ) (let ((a0-13 (-> self skel root-channel 0))) @@ -144,11 +143,10 @@ ) ) (while #t - (when (or - (not *target*) - (!= (-> *target* control unknown-surface00 name) 'launch-jump) - (< (+ 4096.0 (-> self root-override trans y)) (-> *target* control trans y)) - ) + (when (or (not *target*) + (!= (-> *target* control unknown-surface00 name) 'launch-jump) + (< (+ 4096.0 (-> self root-override trans y)) (-> *target* control trans y)) + ) (when (and *target* (< (-> self thresh-y) (-> *target* control trans y))) (let ((a1-3 (res-lump-struct (-> self entity) 'continue-name structure))) (when a1-3 @@ -180,10 +178,10 @@ (set! (-> obj close-speed) 2.0) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) (set-root-prim! s4-0 s3-0) @@ -195,11 +193,11 @@ (process-drawable-from-entity! obj arg0) (cond ((= (-> (if (-> obj entity) - (-> obj entity extra level) - (-> *level* level-default) - ) - name - ) + (-> obj entity extra level) + (-> *level* level-default) + ) + name + ) 'maincave ) (set! (-> obj close-speed) 4.0) @@ -234,9 +232,9 @@ ) ) (set! (-> obj load-mode) (-> (if (-> obj entity) - (-> obj entity extra level) - (-> *level* level-default) - ) + (-> obj entity extra level) + (-> *level* level-default) + ) name ) ) diff --git a/goal_src/levels/common/nav-enemy.gc b/goal_src/levels/common/nav-enemy.gc index 7178e905f1..9756d91bcf 100644 --- a/goal_src/levels/common/nav-enemy.gc +++ b/goal_src/levels/common/nav-enemy.gc @@ -74,15 +74,13 @@ ) (defmethod common-post nav-enemy ((obj nav-enemy)) - (when (and - (logtest? (-> obj nav-enemy-flags) 256) - (or (not *target*) (and - (zero? (logand (-> *target* state-flags) #x80f8)) - (>= (- (-> *display* base-frame-counter) (-> obj touch-time)) 15) - ) - ) - ) - (dummy-54 (-> obj collide-info) 2 1) + (when (and (logtest? (-> obj nav-enemy-flags) 256) + (or (not *target*) (and (zero? (logand (-> *target* state-flags) #x80f8)) + (>= (- (-> *display* base-frame-counter) (-> obj touch-time)) 15) + ) + ) + ) + (dummy-54 (-> obj collide-info) 2 (collide-offense touch)) (set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags))) ) (dummy-14 (-> obj draw shadow-ctrl)) @@ -113,22 +111,22 @@ (defmethod dummy-44 nav-enemy ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) (if (and (logtest? (-> obj nav-enemy-flags) 64) ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> obj collide-info) - (the-as uint 1) - ) - ) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) ) ) (defmethod nav-enemy-touch-handler nav-enemy ((obj nav-enemy) (arg0 process) (arg1 event-message-block)) (if (and (logtest? (-> obj nav-enemy-flags) 64) ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> obj collide-info) - (the-as uint 1) - ) - ) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + ) (nav-enemy-send-attack arg0 (the-as touching-shapes-entry (-> arg1 param 0)) 'generic) ) ) @@ -166,7 +164,7 @@ (set! (-> v1-0 param 1) (the-as uint a1-1)) ) (the-as object (when (send-event-function arg0 v1-0) - (dummy-54 (-> self collide-info) 2 0) + (dummy-54 (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) 256) #t ) @@ -239,7 +237,7 @@ (drop-pickup (-> self fact) #t *entity-pool* (-> self fact) 0) ) (('death-end) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) ) ) (none) @@ -470,17 +468,14 @@ nav-enemy-default-event-handler ) (defmethod TODO-RENAME-46 nav-enemy ((obj nav-enemy) (arg0 float)) - (and - *target* - (zero? (logand (-> *target* state-flags) #x80f8)) - (and - (or - (zero? (logand (-> obj nav-enemy-flags) 4096)) - (< (vector-vector-distance (target-pos 0) (-> obj collide-info trans)) arg0) - ) - (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) - ) - ) + (and *target* + (zero? (logand (-> *target* state-flags) #x80f8)) + (and (or (zero? (logand (-> obj nav-enemy-flags) 4096)) + (< (vector-vector-distance (target-pos 0) (-> obj collide-info trans)) arg0) + ) + (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) + ) + ) ) (defbehavior nav-enemy-notice-player? nav-enemy () @@ -493,16 +488,14 @@ nav-enemy-default-event-handler ) ) (else - (when (or - (TODO-RENAME-46 self (-> self nav-info notice-distance)) - (and - (-> self nav-info use-proximity-notice) - *target* - (>= (-> self nav-info proximity-notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) + (when (or (TODO-RENAME-46 self (-> self nav-info notice-distance)) + (and (-> self nav-info use-proximity-notice) + *target* + (>= (-> self nav-info proximity-notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) ) - ) (logior! (-> self nav-enemy-flags) 1) (set! (-> self notice-time) (-> *display* base-frame-counter)) ) @@ -538,18 +531,16 @@ nav-enemy-default-event-handler ) (defbehavior nav-enemy-test-point-in-nav-mesh? nav-enemy ((arg0 vector)) - (the-as symbol (and - (dummy-16 (-> self nav) arg0) - (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))) - ) + (the-as symbol (and (dummy-16 (-> self nav) arg0) + (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))) + ) ) ) (defbehavior nav-enemy-test-point-near-nav-mesh? nav-enemy ((arg0 vector)) - (and - (dummy-25 (-> self nav) arg0 (-> self nav-info notice-nav-radius)) - (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))) - ) + (and (dummy-25 (-> self nav) arg0 (-> self nav-info notice-nav-radius)) + (< (-> arg0 y) (+ (-> self collide-info trans y) (-> self enemy-info notice-top))) + ) ) (defbehavior nav-enemy-get-new-patrol-point nav-enemy () @@ -559,7 +550,7 @@ nav-enemy-default-event-handler (defbehavior nav-enemy-set-base-collide-sphere-collide-with nav-enemy ((arg0 uint)) (let ((s5-0 (-> self collide-info root-prim))) - (set! (-> s5-0 collide-with) arg0) + (set! (-> s5-0 collide-with) (the-as collide-kind arg0)) (let ((s4-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) collide-shape-prim-group)) s5-0 ) @@ -575,19 +566,17 @@ nav-enemy-default-event-handler ) ) (when v1-6 - (if (or - (not s5-1) + (if (or (not s5-1) (< (-> (the-as collide-shape-prim-sphere v1-6) transform-index) (-> (the-as collide-shape-prim-group s5-1) transform-index) ) - (and - (= (-> (the-as collide-shape-prim-sphere v1-6) transform-index) - (-> (the-as collide-shape-prim-group s5-1) transform-index) + (and (= (-> (the-as collide-shape-prim-sphere v1-6) transform-index) + (-> (the-as collide-shape-prim-group s5-1) transform-index) + ) + (< (-> (the-as collide-shape-prim-sphere v1-6) local-sphere y) + (-> (the-as collide-shape-prim-group s5-1) local-sphere y) + ) ) - (< (-> (the-as collide-shape-prim-sphere v1-6) local-sphere y) - (-> (the-as collide-shape-prim-group s5-1) local-sphere y) - ) - ) ) (set! s5-1 v1-6) ) @@ -595,7 +584,7 @@ nav-enemy-default-event-handler ) ) (if s5-1 - (set! (-> s5-1 collide-with) arg0) + (set! (-> s5-1 collide-with) (the-as collide-kind arg0)) ) ) ) @@ -720,22 +709,18 @@ nav-enemy-default-event-handler ) (defmethod run-logic? nav-enemy ((obj nav-enemy)) - (or - (zero? (logand (-> obj mask) (process-mask actor-pause))) - (or - (and - (nonzero? (-> obj draw)) - (and - (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) - (vector-vector-distance (-> obj collide-info trans) (camera-pos)) - ) - (or (logtest? (-> obj draw status) 8) (!= (-> obj next-state name) 'nav-enemy-idle)) + (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (and (nonzero? (-> obj draw)) + (and (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) + (vector-vector-distance (-> obj collide-info trans) (camera-pos)) + ) + (or (logtest? (-> obj draw status) (draw-status drwf03)) (!= (-> obj next-state name) 'nav-enemy-idle)) + ) + ) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) - ) - (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) 16)) ) - ) ) (defstate nav-enemy-idle (nav-enemy) @@ -750,7 +735,7 @@ nav-enemy-default-event-handler (nav-enemy-neck-control-inactive) (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> self nav-info move-to-ground) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (-> self nav-info gnd-collide-with)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as collide-kind (-> self nav-info gnd-collide-with))) ) (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) (set! (-> self state-timeout) 300) @@ -758,15 +743,14 @@ nav-enemy-default-event-handler ) :trans (behavior () - (if (and - (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) 8) - ) + (if (and (and *target* (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status drwf03)) + ) (go-virtual nav-enemy-patrol) ) (none) @@ -821,16 +805,18 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (logior! (-> self nav-enemy-flags) 8) (none)) + (behavior () + (logior! (-> self nav-enemy-flags) 8) + (none) + ) :trans (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) 8)) + (if (and (nonzero? (-> self draw)) (logtest? (-> self draw status) (draw-status drwf03))) (set! (-> self free-time) (-> *display* base-frame-counter)) ) - (if (or - (or (not *target*) (< (-> self enemy-info idle-distance) + (if (or (or (not *target*) (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) ) ) @@ -839,24 +825,22 @@ nav-enemy-default-event-handler (go-virtual nav-enemy-idle) ) ) - (if (and - (-> self nav-info use-flee) - (and - (and *target* (>= (-> self nav-info notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (let ((gp-0 'racer) - (a1-2 (new 'stack-no-clear 'event-message-block)) + (if (and (-> self nav-info use-flee) + (and (and *target* (>= (-> self nav-info notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (let ((gp-0 'racer) + (a1-2 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 1) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'mode)) + (= gp-0 (send-event-function *target* a1-2)) ) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 1) - (set! (-> a1-2 message) 'query) - (set! (-> a1-2 param 0) (the-as uint 'mode)) - (= gp-0 (send-event-function *target* a1-2)) - ) - ) - ) + ) + ) (go-virtual nav-enemy-flee) ) (if (nav-enemy-notice-player?) @@ -1065,8 +1049,8 @@ nav-enemy-default-event-handler (defbehavior ja-group-index? nav-enemy ((arg0 int)) (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data arg0) ) ) @@ -1079,12 +1063,14 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self reaction-time)) - (if (or - (or (not *target*) (< (-> self nav-info stop-chase-distance) + (if (or (or (not *target*) (< (-> self nav-info stop-chase-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) ) ) @@ -1215,8 +1201,7 @@ nav-enemy-default-event-handler (if (logtest? (-> self nav-enemy-flags) 256) (go-virtual nav-enemy-victory) ) - (if (or - (not (nav-enemy-player-at-frustration-point?)) + (if (or (not (nav-enemy-player-at-frustration-point?)) (< (-> self nav-info frustration-distance) (vector-vector-xz-distance (target-pos 0) (-> self collide-info trans)) ) @@ -1225,12 +1210,11 @@ nav-enemy-default-event-handler ) (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self reaction-time)) (if (>= (- (-> *display* base-frame-counter) (-> self frustration-time)) - (+ (-> self reaction-time) (-> self nav-info frustration-time)) - ) + (+ (-> self reaction-time) (-> self nav-info frustration-time)) + ) (logior! (-> self nav-enemy-flags) 8192) ) - (if (or - (not (TODO-RENAME-46 self (-> self nav-info stop-chase-distance))) + (if (or (not (TODO-RENAME-46 self (-> self nav-info stop-chase-distance))) (logtest? (-> self nav-enemy-flags) 8192) ) (go-virtual nav-enemy-stop-chase) @@ -1306,8 +1290,7 @@ nav-enemy-default-event-handler (if (and (TODO-RENAME-46 self (-> self nav-info notice-distance)) (not (nav-enemy-frustrated?))) (go-virtual nav-enemy-chase) ) - (if (or - (or (not *target*) (< (-> self enemy-info idle-distance) + (if (or (or (not *target*) (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) ) ) @@ -1368,7 +1351,10 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (logior! (-> self nav-enemy-flags) 16) (none)) + (behavior () + (logior! (-> self nav-enemy-flags) 16) + (none) + ) :trans (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) @@ -1377,10 +1363,9 @@ nav-enemy-default-event-handler ) (cond ((TODO-RENAME-46 self (-> self nav-info notice-distance)) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) - (not (nav-enemy-frustrated?)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) + (not (nav-enemy-frustrated?)) + ) (go-virtual nav-enemy-chase) ) ) @@ -1389,24 +1374,21 @@ nav-enemy-default-event-handler ) ) (when (not - (or - (and *target* (>= 40960.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) - (and - (-> self nav-info use-proximity-notice) - *target* - (>= (-> self nav-info proximity-notice-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) + (or (and *target* (>= 40960.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (and (-> self nav-info use-proximity-notice) + *target* + (>= (-> self nav-info proximity-notice-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) ) - ) ) (set! (-> self nav-enemy-flags) (logand -5 (-> self nav-enemy-flags))) (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) (go-virtual nav-enemy-give-up) ) ) - (if (or - (or (not *target*) (< (-> self enemy-info idle-distance) + (if (or (or (not *target*) (< (-> self enemy-info idle-distance) (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) ) ) @@ -1418,7 +1400,10 @@ nav-enemy-default-event-handler (none) ) :code - (behavior () (go-virtual nav-enemy-give-up) (none)) + (behavior () + (go-virtual nav-enemy-give-up) + (none) + ) :post nav-enemy-face-player-post ) @@ -1447,7 +1432,10 @@ nav-enemy-default-event-handler (none) ) :code - (behavior () (go-virtual nav-enemy-patrol) (none)) + (behavior () + (go-virtual nav-enemy-patrol) + (none) + ) :post nav-enemy-simple-post ) @@ -1460,7 +1448,10 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :code - (behavior () (go-virtual nav-enemy-victory) (none)) + (behavior () + (go-virtual nav-enemy-victory) + (none) + ) :post nav-enemy-simple-post ) @@ -1473,7 +1464,10 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set! (-> self collide-info transv quad) (-> *null-vector* quad)) (none)) + (behavior () + (set! (-> self collide-info transv quad) (-> *null-vector* quad)) + (none) + ) :code (behavior () (ja-channel-push! 1 22) @@ -1521,7 +1515,10 @@ nav-enemy-default-event-handler process-drawable-death-event-handler ) :enter - (behavior () (send-event (ppointer->process (-> self parent)) 'child-die) (none)) + (behavior () + (send-event (ppointer->process (-> self parent)) 'child-die) + (none) + ) :code (behavior () (ja-channel-push! 1 22) @@ -1686,8 +1683,8 @@ nav-enemy-default-event-handler ((logtest? (-> self nav-enemy-flags) 1024) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data (-> self nav-info run-anim)) ) ) @@ -1805,7 +1802,10 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (logior! (-> self nav-enemy-flags) 24) (none)) + (behavior () + (logior! (-> self nav-enemy-flags) 24) + (none) + ) :code (behavior () (nav-enemy-execute-jump) @@ -1891,8 +1891,7 @@ nav-enemy-default-event-handler ) :trans (behavior () - (if (or - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (if (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) (logtest? (nav-control-flags bit19) (-> self nav flags)) ) (go-virtual nav-enemy-chase) @@ -1900,7 +1899,11 @@ nav-enemy-default-event-handler (none) ) :code - (behavior () (nav-enemy-jump-land-anim) (go (-> self jump-return-state)) (none)) + (behavior () + (nav-enemy-jump-land-anim) + (go (-> self jump-return-state)) + (none) + ) :post nav-enemy-jump-land-post ) @@ -1913,7 +1916,10 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) @@ -1924,8 +1930,8 @@ nav-enemy-default-event-handler :code (behavior () (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data (-> self nav-info idle-anim)) ) ) @@ -1938,12 +1944,12 @@ nav-enemy-default-event-handler ) (set! (-> gp-0 frame-num) (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2021,9 +2027,15 @@ nav-enemy-default-event-handler :event nav-enemy-jump-event-handler :exit - (behavior () (logior! (-> self nav-enemy-flags) 24) (none)) + (behavior () + (logior! (-> self nav-enemy-flags) 24) + (none) + ) :trans - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :code (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) diff --git a/goal_src/levels/common/orb-cache.gc b/goal_src/levels/common/orb-cache.gc index d61ebf05bd..8aaf90d3f4 100644 --- a/goal_src/levels/common/orb-cache.gc +++ b/goal_src/levels/common/orb-cache.gc @@ -61,17 +61,16 @@ ) :trans (behavior () - (if (and - (and *target* (>= 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 2) - (set! (-> a1-1 message) 'query) - (set! (-> a1-1 param 0) (the-as uint 'powerup)) - (set! (-> a1-1 param 1) (the-as uint 3)) - (not (send-event-function *target* a1-1)) - ) - ) + (if (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (let ((a1-1 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 2) + (set! (-> a1-1 message) 'query) + (set! (-> a1-1 param 0) (the-as uint 'powerup)) + (set! (-> a1-1 param 1) (the-as uint 3)) + (not (send-event-function *target* a1-1)) + ) + ) (level-hint-spawn (game-text-id sidekick-hint-orb-cache-top) "sksp0009" @@ -169,11 +168,10 @@ (set! f30-0 2048.0) (set! s3-0 #t) ) - (when (and - (< f30-0 15155.2) - (and *target* (>= 16384.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans)))) - (< (-> (target-pos 0) y) (-> obj basetrans y)) - ) + (when (and (< f30-0 15155.2) + (and *target* (>= 16384.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans)))) + (< (-> (target-pos 0) y) (-> obj basetrans y)) + ) (set! f30-0 (if (< 14131.2 f28-0) 15155.2 f28-0 @@ -220,7 +218,10 @@ :event (the-as (function process int symbol event-message-block object :behavior orb-cache-top) plat-event) :exit - (behavior () (process-entity-status! self (entity-perm-status bit-3) #f) (none)) + (behavior () + (process-entity-status! self (entity-perm-status bit-3) #f) + (none) + ) :trans (the-as (function none :behavior orb-cache-top) plat-trans) :code @@ -263,43 +264,40 @@ (suspend) ) (calculate-pos self #f) - (while (and - (not - (and - (and *target* (>= (-> self active-distance) - (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) - (let ((a1-11 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-11 from) self) - (set! (-> a1-11 num-params) 2) - (set! (-> a1-11 message) 'query) - (set! (-> a1-11 param 0) (the-as uint 'powerup)) - (set! (-> a1-11 param 1) (the-as uint 3)) - (or (send-event-function *target* a1-11) (-> self activated)) - ) - ) - ) - (not (pos-logic self #f)) - ) + (while (and (not + (and (and *target* (>= (-> self active-distance) + (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (let ((a1-11 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-11 from) self) + (set! (-> a1-11 num-params) 2) + (set! (-> a1-11 message) 'query) + (set! (-> a1-11 param 0) (the-as uint 'powerup)) + (set! (-> a1-11 param 1) (the-as uint 3)) + (or (send-event-function *target* a1-11) (-> self activated)) + ) + ) + ) + (not (pos-logic self #f)) + ) (suspend) ) (if (not - (and - (and *target* (>= (-> self active-distance) - (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) - (let ((a1-14 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-14 from) self) - (set! (-> a1-14 num-params) 2) - (set! (-> a1-14 message) 'query) - (set! (-> a1-14 param 0) (the-as uint 'powerup)) - (set! (-> a1-14 param 1) (the-as uint 3)) - (or (send-event-function *target* a1-14) (-> self activated)) - ) - ) - ) + (and (and *target* (>= (-> self active-distance) + (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (let ((a1-14 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-14 from) self) + (set! (-> a1-14 num-params) 2) + (set! (-> a1-14 message) 'query) + (set! (-> a1-14 param 0) (the-as uint 'powerup)) + (set! (-> a1-14 param 1) (the-as uint 3)) + (or (send-event-function *target* a1-14) (-> self activated)) + ) + ) + ) (go orb-cache-top-idle arg0) ) ) @@ -339,12 +337,12 @@ (defmethod init-from-entity! orb-cache-top ((obj orb-cache-top) (arg0 entity-actor)) (let ((a0-1 (-> obj entity))) (if (when a0-1 - (let ((a0-2 (-> a0-1 extra perm task))) - (if a0-2 - (= a0-2 (game-task none)) - ) - ) + (let ((a0-2 (-> a0-1 extra perm task))) + (if a0-2 + (= a0-2 (game-task none)) + ) ) + ) (set! (-> obj entity extra perm task) (game-task complete)) ) ) @@ -356,10 +354,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint #x8800)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object blue-eco-suck)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/common/plat-button.gc b/goal_src/levels/common/plat-button.gc index 70a07177c0..043f46a791 100644 --- a/goal_src/levels/common/plat-button.gc +++ b/goal_src/levels/common/plat-button.gc @@ -54,163 +54,123 @@ ) (defmethod can-activate? plat-button ((obj plat-button)) - (or - (= (-> obj path-pos) 0.0) - (and (-> obj bidirectional?) (= (-> obj path-pos) 1.0)) - ) + (or (= (-> obj path-pos) 0.0) (and (-> obj bidirectional?) (= (-> obj path-pos) 1.0))) ) (defstate plat-button-idle (plat-button) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch) - (when (can-activate? self) - (if - (and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root-override) - (the-as uint 1) - ) - (or - (not (-> self should-grab-player?)) - (let ((v0-3 (process-grab? *target*))) - (set! (-> self grab-player?) v0-3) - v0-3 - ) - ) + (case arg2 + (('touch) + (when (can-activate? self) + (if (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root-override) + (the-as uint 1) + ) + (or (not (-> self should-grab-player?)) (let ((v0-3 (process-grab? *target*))) + (set! (-> self grab-player?) v0-3) + v0-3 + ) + ) + ) + (go-virtual plat-button-pressed) + ) ) - (go-virtual plat-button-pressed) - ) ) ) ) - ) :code (behavior () - (let ((gp-0 (can-activate? self))) - (cond - (gp-0 - (let ((a0-1 (-> self skel root-channel 0))) - (set! (-> a0-1 param 0) 0.0) - (set! (-> a0-1 param 1) 1.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (else - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (while #t - (if (should-teleport? self) - (go-virtual plat-button-teleport-to-other-end) - ) - (let ((s5-0 (can-activate? self))) - (when (!= s5-0 gp-0) - (set! gp-0 s5-0) - (cond - (s5-0 - (let ((a0-5 (-> self skel root-channel 0))) - (set! (-> a0-5 param 0) 0.0) - (set! (-> a0-5 param 1) 1.0) - (joint-control-channel-group! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) + (let ((gp-0 (can-activate? self))) + (cond + (gp-0 + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) 0.0) + (set! (-> a0-1 param 1) 1.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) (else - (let ((a0-6 (-> self skel root-channel 0))) - (set! - (-> a0-6 param 0) - (the float (+ (-> a0-6 frame-group data 0 length) -1)) - ) - (set! (-> a0-6 param 1) 1.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim #f) - num-func-seek! - ) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) ) - ) - (when (not (ja-done? 0)) - (rider-trans) - (cond - (s5-0 - (let ((a0-8 (-> self skel root-channel 0))) - (set! (-> a0-8 param 0) 0.0) - (set! (-> a0-8 param 1) 1.0) - (joint-control-channel-group-eval! - a0-8 - (the-as art-joint-anim #f) - num-func-seek! - ) + (while #t + (if (should-teleport? self) + (go-virtual plat-button-teleport-to-other-end) + ) + (let ((s5-0 (can-activate? self))) + (when (!= s5-0 gp-0) + (set! gp-0 s5-0) + (cond + (s5-0 + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) 0.0) + (set! (-> a0-5 param 1) 1.0) + (joint-control-channel-group! a0-5 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (else + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 param 0) (the float (+ (-> a0-6 frame-group data 0 length) -1))) + (set! (-> a0-6 param 1) 1.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + ) + (when (not (ja-done? 0)) + (rider-trans) + (cond + (s5-0 + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 param 0) 0.0) + (set! (-> a0-8 param 1) 1.0) + (joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (else + (let ((a0-9 (-> self skel root-channel 0))) + (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) + (set! (-> a0-9 param 1) 1.0) + (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (rider-post) + ) ) - ) - (else - (let ((a0-9 (-> self skel root-channel 0))) - (set! - (-> a0-9 param 0) - (the float (+ (-> a0-9 frame-group data 0 length) -1)) - ) - (set! (-> a0-9 param 1) 1.0) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) + (suspend) ) - (rider-post) - ) ) - (suspend) - ) + (none) ) - (none) - ) ) (defstate plat-button-teleport-to-other-end (plat-button) :virtual #t :code (behavior () - (let ((f0-0 1.0)) - (if (>= (-> self path-pos) 0.5) - (set! f0-0 0.0) - ) - (set! (-> self path-pos) f0-0) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) gp-0 f0-0 'interp) - (vector+! gp-0 gp-0 (-> self trans-off)) - (TODO-RENAME-30 (-> self root-override) gp-0) - ) + (let ((f0-0 1.0)) + (if (>= (-> self path-pos) 0.5) + (set! f0-0 0.0) + ) + (set! (-> self path-pos) f0-0) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) gp-0 f0-0 'interp) + (vector+! gp-0 gp-0 (-> self trans-off)) + (TODO-RENAME-30 (-> self root-override) gp-0) + ) + ) + (ja-post) + (go-virtual plat-button-idle) + (none) ) - (ja-post) - (go-virtual plat-button-idle) - (none) - ) ) (defstate plat-button-pressed (plat-button) @@ -219,51 +179,37 @@ (the-as (function none :behavior plat-button) rider-trans) :code (behavior () - (let ((a0-0 (-> self skel root-channel 0))) - (set! - (-> a0-0 param 0) - (the float (+ (-> a0-0 frame-group data 0 length) -1)) - ) - (set! (-> a0-0 param 1) 1.0) - (joint-control-channel-group! - a0-0 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 param 0) - (the float (+ (-> a0-1 frame-group data 0 length) -1)) + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 param 0) (the float (+ (-> a0-0 frame-group data 0 length) -1))) + (set! (-> a0-0 param 1) 1.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim #f) num-func-seek!) ) - (set! (-> a0-1 param 1) 1.0) - (joint-control-channel-group-eval! - a0-1 - (the-as art-joint-anim #f) - num-func-seek! + (until (ja-done? 0) + (suspend) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 param 0) (the float (+ (-> a0-1 frame-group data 0 length) -1))) + (set! (-> a0-1 param 1) 1.0) + (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) + (set! (-> self go-back-if-lost-player?) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (if (= (-> self path-pos) 0.0) + (go-virtual plat-button-move-downward) + (go-virtual plat-button-move-upward) + ) + (none) ) - (set! (-> self go-back-if-lost-player?) #t) - (process-entity-status! self (entity-perm-status complete) #t) - (if (= (-> self path-pos) 0.0) - (go-virtual plat-button-move-downward) - (go-virtual plat-button-move-upward) - ) - (none) - ) :post (the-as (function none :behavior plat-button) rider-post) ) (defbehavior plat-button-camera-on plat-button () (let ((v1-1 (res-lump-struct (-> self entity) 'camera-name structure))) - (if v1-1 - (send-event *camera* 'change-to-entity-by-name v1-1) + (if v1-1 + (send-event *camera* 'change-to-entity-by-name v1-1) + ) ) - ) 0 (none) ) @@ -278,108 +224,75 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (the-as object (when (or (= arg2 'touch) (= arg2 'attack)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - #f - ) + (the-as object (when (or (= arg2 'touch) (= arg2 'attack)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + #f + ) + ) ) - ) :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (plat-button-camera-on) - (set-setting! *setting-control* self 'allow-look-around #f 0.0 0) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (plat-button-camera-on) + (set-setting! *setting-control* self 'allow-look-around #f 0.0 0) + (none) + ) :exit (behavior () - (plat-button-camera-off) - (clear-pending-settings-from-process - *setting-control* - self - 'allow-look-around + (plat-button-camera-off) + (clear-pending-settings-from-process *setting-control* self 'allow-look-around) + (none) ) - (none) - ) :trans (behavior () - (if (= (-> self path-pos) 1.0) - (go-virtual plat-button-at-end) - ) - (rider-trans) - (when (-> self go-back-if-lost-player?) - (when - (or - (not *target*) - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1200) - (not - (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (if (= (-> self path-pos) 1.0) + (go-virtual plat-button-at-end) ) - ) - ) - (set! (-> self go-back-if-lost-player?) #f) - (go-virtual plat-button-move-upward) - ) - ) - (let - ((f0-4 - (seek-with-smooth - (-> self path-pos) - 1.0 - (* 0.1 (-> *display* seconds-per-frame)) - 0.25 - 0.001 - ) - ) - ) - (set! (-> self path-pos) f0-4) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) gp-0 f0-4 'interp) - (vector+! gp-0 gp-0 (-> self trans-off)) - (TODO-RENAME-30 (-> self root-override) gp-0) - ) - ) - (sound-play-by-name - (static-sound-name "elev-loop") - (-> self sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> gp-1 command) (sound-command set-param)) - (set! (-> gp-1 id) (-> self sound-id)) - (let ((a1-6 (-> self root-override trans))) - (let ((s5-0 self)) - (when (= a1-6 #t) - (if - (and - s5-0 - (type-type? (-> s5-0 type) process-drawable) - (nonzero? (-> s5-0 root-override)) - ) - (set! a1-6 (-> s5-0 root-override trans)) - (set! a1-6 (the-as vector #f)) + (rider-trans) + (when (-> self go-back-if-lost-player?) + (when (or (not *target*) (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1200) + (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + ) + ) + (set! (-> self go-back-if-lost-player?) #f) + (go-virtual plat-button-move-upward) ) - ) ) - (sound-trans-convert (-> gp-1 parms trans) a1-6) - ) - (set! (-> gp-1 parms mask) (the-as uint 32)) - (-> gp-1 id) + (let ((f0-4 (seek-with-smooth (-> self path-pos) 1.0 (* 0.1 (-> *display* seconds-per-frame)) 0.25 0.001))) + (set! (-> self path-pos) f0-4) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) gp-0 f0-4 'interp) + (vector+! gp-0 gp-0 (-> self trans-off)) + (TODO-RENAME-30 (-> self root-override) gp-0) + ) + ) + (sound-play-by-name (static-sound-name "elev-loop") (-> self sound-id) 1024 0 0 1 #t) + (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> gp-1 command) (sound-command set-param)) + (set! (-> gp-1 id) (-> self sound-id)) + (let ((a1-6 (-> self root-override trans))) + (let ((s5-0 self)) + (when (= a1-6 #t) + (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 root-override))) + (set! a1-6 (-> s5-0 root-override trans)) + (set! a1-6 (the-as vector #f)) + ) + ) + ) + (sound-trans-convert (-> gp-1 parms trans) a1-6) + ) + (set! (-> gp-1 parms mask) (the-as uint 32)) + (-> gp-1 id) + ) + (if (and (-> self grab-player?) (< 0.2 (-> self path-pos))) + (set! (-> self grab-player?) (not (process-release? *target*))) + ) + (none) ) - (if (and (-> self grab-player?) (< 0.2 (-> self path-pos))) - (set! (-> self grab-player?) (not (process-release? *target*))) - ) - (none) - ) :code (the-as (function none :behavior plat-button) anim-loop) :post @@ -390,108 +303,75 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (the-as object (when (or (= arg2 'touch) (= arg2 'attack)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - #f - ) + (the-as object (when (or (= arg2 'touch) (= arg2 'attack)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + #f + ) + ) ) - ) :enter (behavior () - (set! (-> self state-time) (-> *display* base-frame-counter)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (plat-button-camera-on) - (set-setting! *setting-control* self 'allow-look-around #f 0.0 0) - (none) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (plat-button-camera-on) + (set-setting! *setting-control* self 'allow-look-around #f 0.0 0) + (none) + ) :exit (behavior () - (plat-button-camera-off) - (clear-pending-settings-from-process - *setting-control* - self - 'allow-look-around + (plat-button-camera-off) + (clear-pending-settings-from-process *setting-control* self 'allow-look-around) + (none) ) - (none) - ) :trans (behavior () - (if (= (-> self path-pos) 0.0) - (go-virtual plat-button-at-end) - ) - (rider-trans) - (when (-> self go-back-if-lost-player?) - (when - (or - (not *target*) - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1200) - (not - (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (if (= (-> self path-pos) 0.0) + (go-virtual plat-button-at-end) ) - ) - ) - (set! (-> self go-back-if-lost-player?) #f) - (go-virtual plat-button-move-downward) - ) - ) - (let - ((f0-4 - (seek-with-smooth - (-> self path-pos) - 0.0 - (* 0.1 (-> *display* seconds-per-frame)) - 0.25 - 0.001 - ) - ) - ) - (set! (-> self path-pos) f0-4) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (eval-path-curve! (-> self path) gp-0 f0-4 'interp) - (vector+! gp-0 gp-0 (-> self trans-off)) - (TODO-RENAME-30 (-> self root-override) gp-0) - ) - ) - (sound-play-by-name - (static-sound-name "elev-loop") - (-> self sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> gp-1 command) (sound-command set-param)) - (set! (-> gp-1 id) (-> self sound-id)) - (let ((a1-6 (-> self root-override trans))) - (let ((s5-0 self)) - (when (= a1-6 #t) - (if - (and - s5-0 - (type-type? (-> s5-0 type) process-drawable) - (nonzero? (-> s5-0 root-override)) - ) - (set! a1-6 (-> s5-0 root-override trans)) - (set! a1-6 (the-as vector #f)) + (rider-trans) + (when (-> self go-back-if-lost-player?) + (when (or (not *target*) (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1200) + (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + ) + ) + (set! (-> self go-back-if-lost-player?) #f) + (go-virtual plat-button-move-downward) ) - ) ) - (sound-trans-convert (-> gp-1 parms trans) a1-6) - ) - (set! (-> gp-1 parms mask) (the-as uint 32)) - (-> gp-1 id) + (let ((f0-4 (seek-with-smooth (-> self path-pos) 0.0 (* 0.1 (-> *display* seconds-per-frame)) 0.25 0.001))) + (set! (-> self path-pos) f0-4) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (eval-path-curve! (-> self path) gp-0 f0-4 'interp) + (vector+! gp-0 gp-0 (-> self trans-off)) + (TODO-RENAME-30 (-> self root-override) gp-0) + ) + ) + (sound-play-by-name (static-sound-name "elev-loop") (-> self sound-id) 1024 0 0 1 #t) + (let ((gp-1 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> gp-1 command) (sound-command set-param)) + (set! (-> gp-1 id) (-> self sound-id)) + (let ((a1-6 (-> self root-override trans))) + (let ((s5-0 self)) + (when (= a1-6 #t) + (if (and s5-0 (type-type? (-> s5-0 type) process-drawable) (nonzero? (-> s5-0 root-override))) + (set! a1-6 (-> s5-0 root-override trans)) + (set! a1-6 (the-as vector #f)) + ) + ) + ) + (sound-trans-convert (-> gp-1 parms trans) a1-6) + ) + (set! (-> gp-1 parms mask) (the-as uint 32)) + (-> gp-1 id) + ) + (if (and (-> self grab-player?) (< (-> self path-pos) 0.8)) + (set! (-> self grab-player?) (not (process-release? *target*))) + ) + (none) ) - (if (and (-> self grab-player?) (< (-> self path-pos) 0.8)) - (set! (-> self grab-player?) (not (process-release? *target*))) - ) - (none) - ) :code (the-as (function none :behavior plat-button) anim-loop) :post @@ -502,106 +382,62 @@ :virtual #t :code (behavior () - (if (-> self allow-auto-kill) - (process-entity-status! self (entity-perm-status bit-3) #f) - ) - (sound-stop (-> self sound-id)) - (sound-play-by-name - (static-sound-name "elev-land") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (while #t - (if - (or - (not *target*) - (< - 268435460.0 - (vector-vector-xz-distance-squared - (-> self root-override trans) - (target-pos 0) + (if (-> self allow-auto-kill) + (process-entity-status! self (entity-perm-status bit-3) #f) ) - ) + (sound-stop (-> self sound-id)) + (sound-play-by-name (static-sound-name "elev-land") (new-sound-id) 1024 0 0 1 #t) + (while #t + (if (or (not *target*) + (< 268435460.0 (vector-vector-xz-distance-squared (-> self root-override trans) (target-pos 0))) + ) + (go-virtual plat-button-idle) + ) + (suspend) ) - (go-virtual plat-button-idle) - ) - (suspend) + (none) ) - (none) - ) ) (defmethod TODO-RENAME-28 plat-button ((obj plat-button)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27033.6) - (set-root-prim! s5-0 s4-0) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 1) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27033.6) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 -3072.0 0.0 7372.8) + (append-prim s4-0 s3-0) ) - ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 4) - (set-vector! (-> s3-0 local-sphere) 0.0 -3072.0 0.0 7372.8) - (append-prim s4-0 s3-0) - ) - (let - ((s3-1 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 1) - (the-as uint 2) + (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) + (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-1 transform-index) 3) + (set-vector! (-> s3-1 local-sphere) 0.0 -4096.0 0.0 27033.6) + (append-prim s4-0 s3-1) ) - ) ) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) - (set! (-> s3-1 transform-index) 3) - (set-vector! (-> s3-1 local-sphere) 0.0 -4096.0 0.0 27033.6) - (append-prim s4-0 s3-1) - ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) + s5-0 ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - s5-0 - ) ) (defmethod can-target-move? plat-button ((obj plat-button)) @@ -611,41 +447,29 @@ (defmethod TODO-RENAME-27 plat-button ((obj plat-button)) (ja-channel-set! 1) (cond - ((can-activate? obj) - (let ((s5-0 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> obj draw art-group data 2)) - num-func-identity - ) - (set! (-> s5-0 frame-num) 0.0) - ) - ) - (else - (let ((s5-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> obj draw art-group data 2)) - num-func-identity - ) - (set! - (-> s5-1 frame-num) - (the - float - (+ - (-> + ((can-activate? obj) + (let ((s5-0 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-0 (the-as art-joint-anim (-> obj draw art-group data 2)) - data - 0 - length + num-func-identity ) - -1 - ) + (set! (-> s5-0 frame-num) 0.0) ) - ) ) + (else + (let ((s5-1 (-> obj skel root-channel 0))) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> obj draw art-group data 2)) data 0 length) -1)) + ) + ) + ) ) - ) (ja-post) (dummy-47 (-> obj root-override)) (none) @@ -667,28 +491,20 @@ (set! (-> obj go-back-if-lost-player?) #f) (set! (-> obj grab-player?) #f) (set! (-> obj should-grab-player?) #f) - (set! - (-> obj trans-off quad) - (-> - (the-as - vector - ((method-of-type res-lump get-property-struct) - arg0 - 'trans-offset - 'interp - -1000000000.0 - *null-vector* - (the-as (pointer res-tag) #f) - *res-static-buf* - ) - ) - quad - ) - ) - (set! - (-> obj bidirectional?) - (nonzero? (res-lump-value arg0 'bidirectional uint128)) - ) + (set! (-> obj trans-off quad) (-> (the-as vector ((method-of-type res-lump get-property-struct) + arg0 + 'trans-offset + 'interp + -1000000000.0 + *null-vector* + (the-as (pointer res-tag) #f) + *res-static-buf* + ) + ) + quad + ) + ) + (set! (-> obj bidirectional?) (nonzero? (res-lump-value arg0 'bidirectional uint128))) (TODO-RENAME-28 obj) (process-drawable-from-entity! obj arg0) (logclear! (-> obj mask) (process-mask actor-pause)) @@ -696,15 +512,12 @@ (logior! (-> obj skel status) 1) (set! (-> obj spawn-pos quad) (-> obj root-override trans quad)) (set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0)) - (logior! - (-> obj path flags) - (path-control-flag display draw-line draw-point draw-text) - ) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> obj path-pos) 0.0) (let ((s5-1 (-> obj root-override trans))) - (eval-path-curve! (-> obj path) s5-1 (-> obj path-pos) 'interp) - (vector+! s5-1 s5-1 (-> obj trans-off)) - ) + (eval-path-curve! (-> obj path) s5-1 (-> obj path-pos) 'interp) + (vector+! s5-1 s5-1 (-> obj trans-off)) + ) (set! (-> obj sound-id) (new-sound-id)) (set! (-> obj allow-auto-kill) #t) (can-target-move? obj) diff --git a/goal_src/levels/common/plat.gc b/goal_src/levels/common/plat.gc index c79d3e7036..73c30b226d 100644 --- a/goal_src/levels/common/plat.gc +++ b/goal_src/levels/common/plat.gc @@ -7,73 +7,66 @@ ;; DECOMP BEGINS -(set! - (-> *part-group-id-table* 107) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xbb8 - :linger-duration #x5dc - :name "group-standard-plat" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 363 :fade-after (meters 60.0) :falloff-to (meters 60.0)) - (sp-item 364 :fade-after (meters 160.0) :falloff-to (meters 160.0)) - ) - :bounds - (new 'static 'sphere :y -49152.0 :w 57344.0) - ) - ) +(set! (-> *part-group-id-table* 107) (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :name "group-standard-plat" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 363 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 364 :fade-after (meters 160.0) :falloff-to (meters 160.0)) + ) + :bounds + (new 'static 'sphere :y -49152.0 :w 57344.0) + ) + ) -(set! - (-> *part-id-table* 363) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 14 - (sp-flt spt-num 1.5) - (sp-flt spt-y (meters 1.0)) - (sp-int spt-rot-x 5) - (sp-flt spt-r 5324.8) - (sp-flt spt-g 4096.0) - (sp-flt spt-b 3686.4) - (sp-flt spt-vel-y (meters 0.0033333334)) - (sp-flt spt-fade-b -16.383999) - (sp-int spt-timer 25) - (sp-cpuinfo-flags aux-list) - (sp-rnd-flt spt-conerot-x (degrees 140.0) (degrees 40.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 3.0)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 363) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 14 + (sp-flt spt-num 1.5) + (sp-flt spt-y (meters 1.0)) + (sp-int spt-rot-x 5) + (sp-flt spt-r 5324.8) + (sp-flt spt-g 4096.0) + (sp-flt spt-b 3686.4) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-fade-b -16.383999) + (sp-int spt-timer 25) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-conerot-x (degrees 140.0) (degrees 40.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 364) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 2.0) - (sp-flt spt-y (meters 1.5)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-g 0.0 64.0 1.0) - (sp-rnd-flt spt-b 128.0 128.0 1.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-flt spt-vel-y (meters 0.01)) - (sp-flt spt-fade-g -0.42666668) - (sp-flt spt-fade-a -0.32) - (sp-flt spt-accel-y -0.13653333) - (sp-flt spt-friction 0.96) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-conerot-x (degrees 130.0) (degrees 100.00001) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 3.0)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 364) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 2.0) + (sp-flt spt-y (meters 1.5)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 1.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-g 0.0 64.0 1.0) + (sp-rnd-flt spt-b 128.0 128.0 1.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.01)) + (sp-flt spt-fade-g -0.42666668) + (sp-flt spt-fade-a -0.32) + (sp-flt spt-accel-y -0.13653333) + (sp-flt spt-friction 0.96) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 130.0) (degrees 100.00001) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 3.0)) + (sp-end) + ) + ) + ) (deftype plat (baseplat) ((path-pos float :offset-assert 228) @@ -121,80 +114,62 @@ (defmethod get-unlit-skel plat ((obj plat)) (cond - ((= (-> (if (-> obj entity) - (-> obj entity extra level) - (-> *level* level-default) - ) - name - ) - 'jungleb - ) - *plat-jungleb-sg* - ) - ((or (= (-> (if (-> obj entity) + ((= (-> (if (-> obj entity) (-> obj entity extra level) (-> *level* level-default) ) name ) - 'sunken - ) - (= (-> (if (-> obj entity) - (-> obj entity extra level) - (-> *level* level-default) - ) - name - ) - 'sunkenb - ) + 'jungleb + ) + *plat-jungleb-sg* ) - *plat-sunken-sg* + ((or (= (-> (if (-> obj entity) + (-> obj entity extra level) + (-> *level* level-default) + ) + name + ) + 'sunken + ) + (= (-> (if (-> obj entity) + (-> obj entity extra level) + (-> *level* level-default) + ) + name + ) + 'sunkenb + ) + ) + *plat-sunken-sg* + ) + (else + *plat-sg* + ) ) - (else - *plat-sg* - ) - ) ) (defmethod dummy-24 plat ((obj plat)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 13107.2) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 13107.2) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) @@ -206,127 +181,103 @@ (defmethod TODO-RENAME-25 plat ((obj plat)) (the-as sparticle-launch-group (when (!= (-> (if (-> obj entity) - (-> obj entity extra level) - (-> *level* level-default) - ) - name - ) - 'maincave - ) - (let - ((v0-0 - (create-launch-control - (-> *part-group-id-table* 107) - obj - ) + (-> obj entity extra level) + (-> *level* level-default) + ) + name + ) + 'maincave + ) + (let ((v0-0 (create-launch-control (-> *part-group-id-table* 107) obj))) + (set! (-> obj part) v0-0) + v0-0 ) - ) - (set! (-> obj part) v0-0) - v0-0 ) - ) - ) + ) ) (defstate plat-startup (plat) :virtual #t :code (behavior ((arg0 plat)) - (cond - ((logtest? (-> self path flags) (path-control-flag not-found)) - (go-virtual plat-idle) - ) - ((> (-> self sync period) 0) - (go-virtual plat-path-active arg0) - ) - (else - (go-virtual plat-idle) - ) + (cond + ((logtest? (-> self path flags) (path-control-flag not-found)) + (go-virtual plat-idle) + ) + ((> (-> self sync period) 0) + (go-virtual plat-path-active arg0) + ) + (else + (go-virtual plat-idle) + ) + ) + (none) ) - (none) - ) ) (defstate plat-idle (plat) :virtual #t :event - (the-as - (function process int symbol event-message-block object :behavior plat) - plat-event - ) + (the-as (function process int symbol event-message-block object :behavior plat) plat-event) :trans (behavior () - (dummy-20 self) - (none) - ) + (dummy-20 self) + (none) + ) :code (behavior () - (plat-trans) - (rider-post) - (suspend) - (while #t - (when (not (-> self bouncing)) - (plat-trans) - (rider-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - ) - (while (-> self bouncing) - (plat-trans) - (rider-post) - (suspend) - ) + (plat-trans) + (rider-post) + (suspend) + (while #t + (when (not (-> self bouncing)) + (plat-trans) + (rider-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + ) + (while (-> self bouncing) + (plat-trans) + (rider-post) + (suspend) + ) + ) + (none) ) - (none) - ) ) (defstate plat-path-active (plat) :virtual #t :event - (the-as - (function process int symbol event-message-block object :behavior plat) - plat-event - ) + (the-as (function process int symbol event-message-block object :behavior plat) plat-event) :exit (behavior () - (sound-stop (-> self sound-id)) - (none) - ) + (sound-stop (-> self sound-id)) + (none) + ) :trans (behavior () - (set! - (-> self path-pos) - (if (logtest? (-> self fact options) (fact-options fop3)) - (get-current-phase (-> self sync)) - (get-current-phase-with-mirror (-> self sync)) - ) + (set! (-> self path-pos) (if (logtest? (-> self fact options) (fact-options fop3)) + (get-current-phase (-> self sync)) + (get-current-phase-with-mirror (-> self sync)) + ) + ) + (eval-path-curve! (-> self path) (-> self basetrans) (-> self path-pos) 'interp) + (if (< (vector-vector-distance (-> self root-override trans) (ear-trans)) 81920.0) + (sound-play-by-name + (static-sound-name "eco-plat-hover") + (-> self sound-id) + 1024 + 0 + 0 + 1 + (the-as symbol (-> self root-override trans)) + ) + ) + (plat-trans) + (none) ) - (eval-path-curve! - (-> self path) - (-> self basetrans) - (-> self path-pos) - 'interp - ) - (if - (< - (vector-vector-distance (-> self root-override trans) (ear-trans)) - 81920.0 - ) - (sound-play-by-name - (static-sound-name "eco-plat-hover") - (-> self sound-id) - 1024 - 0 - 0 - 1 - (the-as symbol (-> self root-override trans)) - ) - ) - (plat-trans) - (none) - ) :code (the-as (function plat none :behavior plat) anim-loop) :post @@ -343,63 +294,41 @@ (dummy-21 obj) (TODO-RENAME-25 obj) (load-params! (-> obj sync) obj (the-as uint 0) 0.0 0.15 0.15) - (set! - (-> obj fact) - (new - 'process - 'fact-info - obj - (pickup-type eco-pill-random) - (-> *FACT-bank* default-pill-inc) - ) - ) + (set! (-> obj fact) + (new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) + ) (set! (-> obj path) (new 'process 'curve-control obj 'path -1000000000.0)) - (logior! - (-> obj path flags) - (path-control-flag display draw-line draw-point draw-text) - ) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) (set! (-> obj sound-id) (new-sound-id)) (cond - ((logtest? (-> obj path flags) (path-control-flag not-found)) - (set! (-> obj path-pos) 0.0) - (let ((a0-14 obj)) - (dummy-26 a0-14) - (go (method-of-object obj plat-startup) a0-14) + ((logtest? (-> obj path flags) (path-control-flag not-found)) + (set! (-> obj path-pos) 0.0) + (let ((a0-14 obj)) + (dummy-26 a0-14) + (go (method-of-object obj plat-startup) a0-14) + ) ) - ) - ((> (-> obj sync period) 0) - (set! - (-> obj path-pos) - (if (logtest? (-> obj fact options) (fact-options fop3)) - (get-current-phase (-> obj sync)) - (get-current-phase-with-mirror (-> obj sync)) + ((> (-> obj sync period) 0) + (set! (-> obj path-pos) (if (logtest? (-> obj fact options) (fact-options fop3)) + (get-current-phase (-> obj sync)) + (get-current-phase-with-mirror (-> obj sync)) + ) + ) + (eval-path-curve! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (let ((a0-18 obj)) + (dummy-26 a0-18) + (go (method-of-object obj plat-startup) a0-18) + ) + ) + (else + (set! (-> obj path-pos) 0.0) + (eval-path-curve! (-> obj path) (-> obj root-override trans) (-> obj path-pos) 'interp) + (let ((a0-20 obj)) + (dummy-26 a0-20) + (go (method-of-object obj plat-startup) a0-20) + ) ) - ) - (eval-path-curve! - (-> obj path) - (-> obj root-override trans) - (-> obj path-pos) - 'interp - ) - (let ((a0-18 obj)) - (dummy-26 a0-18) - (go (method-of-object obj plat-startup) a0-18) - ) ) - (else - (set! (-> obj path-pos) 0.0) - (eval-path-curve! - (-> obj path) - (-> obj root-override trans) - (-> obj path-pos) - 'interp - ) - (let ((a0-20 obj)) - (dummy-26 a0-20) - (go (method-of-object obj plat-startup) a0-20) - ) - ) - ) (none) ) diff --git a/goal_src/levels/common/rigid-body.gc b/goal_src/levels/common/rigid-body.gc index 0e43f8ba58..cc37fbbaf3 100644 --- a/goal_src/levels/common/rigid-body.gc +++ b/goal_src/levels/common/rigid-body.gc @@ -28,10 +28,7 @@ (none) ) -(defmethod - TODO-RENAME-22 - rigid-body - ((obj rigid-body) (arg0 vector) (arg1 quaternion) (arg2 float) (arg3 float)) +(defmethod TODO-RENAME-22 rigid-body ((obj rigid-body) (arg0 vector) (arg1 quaternion) (arg2 float) (arg3 float)) (clear-force-torque! obj) (clear-momentum! obj) (vector+! (-> obj position) arg0 (-> obj cm-offset-joint)) @@ -52,120 +49,96 @@ (none) ) -(defmethod - TODO-RENAME-9 - rigid-body - ((obj rigid-body) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) +(defmethod TODO-RENAME-9 rigid-body ((obj rigid-body) (arg0 float) (arg1 float) (arg2 float) (arg3 float)) (set! (-> obj mass) arg0) (let ((f0-1 arg0)) - (set! (-> obj inv-mass) (/ 1.0 f0-1)) - ) + (set! (-> obj inv-mass) (/ 1.0 f0-1)) + ) (matrix-identity! (-> obj inertial-tensor)) (matrix-identity! (-> obj inv-inertial-tensor)) (let* ((f0-4 arg0) (f1-1 12.0) (f0-5 (* f0-4 (/ 1.0 f1-1))) ) - (let* ((f1-4 arg2) - (f1-6 (* f1-4 f1-4)) - (f2-1 arg3) - ) - (set! (-> obj inertial-tensor vector 0 x) (* f0-5 (+ f1-6 (* f2-1 f2-1)))) + (let* ((f1-4 arg2) + (f1-6 (* f1-4 f1-4)) + (f2-1 arg3) + ) + (set! (-> obj inertial-tensor vector 0 x) (* f0-5 (+ f1-6 (* f2-1 f2-1)))) + ) + (let* ((f1-9 arg1) + (f1-11 (* f1-9 f1-9)) + (f2-4 arg3) + ) + (set! (-> obj inertial-tensor vector 1 y) (* f0-5 (+ f1-11 (* f2-4 f2-4)))) + ) + (let* ((f1-14 arg1) + (f1-16 (* f1-14 f1-14)) + (f2-7 arg2) + ) + (set! (-> obj inertial-tensor vector 2 z) (* f0-5 (+ f1-16 (* f2-7 f2-7)))) + ) ) - (let* ((f1-9 arg1) - (f1-11 (* f1-9 f1-9)) - (f2-4 arg3) - ) - (set! (-> obj inertial-tensor vector 1 y) (* f0-5 (+ f1-11 (* f2-4 f2-4)))) - ) - (let* ((f1-14 arg1) - (f1-16 (* f1-14 f1-14)) - (f2-7 arg2) - ) - (set! (-> obj inertial-tensor vector 2 z) (* f0-5 (+ f1-16 (* f2-7 f2-7)))) - ) - ) (let ((f0-7 (-> obj inertial-tensor vector 0 x))) - (set! (-> obj inv-inertial-tensor vector 0 x) (/ 1.0 f0-7)) - ) + (set! (-> obj inv-inertial-tensor vector 0 x) (/ 1.0 f0-7)) + ) (let ((f0-10 (-> obj inertial-tensor vector 1 y))) - (set! (-> obj inv-inertial-tensor vector 1 y) (/ 1.0 f0-10)) - ) + (set! (-> obj inv-inertial-tensor vector 1 y) (/ 1.0 f0-10)) + ) (let ((f0-13 (-> obj inertial-tensor vector 2 z))) - (set! (-> obj inv-inertial-tensor vector 2 z) (/ 1.0 f0-13)) - ) + (set! (-> obj inv-inertial-tensor vector 2 z) (/ 1.0 f0-13)) + ) 0 (none) ) -(defmethod - TODO-RENAME-17 - rigid-body - ((obj rigid-body) (arg0 vector) (arg1 vector)) +(defmethod TODO-RENAME-17 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector)) (let ((v1-1 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj position)))) - (vector-cross! arg1 (-> obj ang-velocity) v1-1) - ) + (vector-cross! arg1 (-> obj ang-velocity) v1-1) + ) (vector+! arg1 arg1 (-> obj lin-velocity)) arg1 ) -(defun - matrix-3x3-triple-transpose-product - ((arg0 matrix) (arg1 matrix) (arg2 matrix)) +(defun matrix-3x3-triple-transpose-product ((arg0 matrix) (arg1 matrix) (arg2 matrix)) (let ((s2-0 (new 'stack-no-clear 'matrix)) (s3-0 (new 'stack-no-clear 'matrix)) ) - (matrix-transpose! s2-0 arg1) - (cond - (#t - (matrix*! s3-0 arg1 arg2) - (matrix*! arg0 s3-0 s2-0) - ) - (else - (matrix*! s3-0 s2-0 arg2) - (matrix*! arg0 s3-0 arg1) - ) + (matrix-transpose! s2-0 arg1) + (cond + (#t + (matrix*! s3-0 arg1 arg2) + (matrix*! arg0 s3-0 s2-0) + ) + (else + (matrix*! s3-0 s2-0 arg2) + (matrix*! arg0 s3-0 arg1) + ) + ) ) - ) arg0 ) (defmethod dummy-10 rigid-body ((obj rigid-body) (arg0 float)) (vector+*! (-> obj lin-momentum) (-> obj lin-momentum) (-> obj force) arg0) (vector+*! (-> obj ang-momentum) (-> obj ang-momentum) (-> obj torque) arg0) - (vector-float*! - (-> obj lin-momentum) - (-> obj lin-momentum) - (-> obj lin-momentum-damping-factor) - ) - (vector-float*! - (-> obj ang-momentum) - (-> obj ang-momentum) - (-> obj ang-momentum-damping-factor) - ) + (vector-float*! (-> obj lin-momentum) (-> obj lin-momentum) (-> obj lin-momentum-damping-factor)) + (vector-float*! (-> obj ang-momentum) (-> obj ang-momentum) (-> obj ang-momentum-damping-factor)) (vector-float*! (-> obj lin-velocity) (-> obj lin-momentum) (-> obj inv-mass)) (set! (-> obj matrix vector 3 quad) (-> *null-vector* quad)) - (matrix-3x3-triple-transpose-product - (-> obj inv-i-world) - (-> obj matrix) - (-> obj inv-inertial-tensor) - ) - (vector-rotate*! - (-> obj ang-velocity) - (-> obj ang-momentum) - (-> obj inv-i-world) - ) + (matrix-3x3-triple-transpose-product (-> obj inv-i-world) (-> obj matrix) (-> obj inv-inertial-tensor)) + (vector-rotate*! (-> obj ang-velocity) (-> obj ang-momentum) (-> obj inv-i-world)) (vector+*! (-> obj position) (-> obj position) (-> obj lin-velocity) arg0) (let ((s4-0 (new 'stack-no-clear 'quaternion))) - (set! (-> (the-as vector (&-> s4-0 x)) quad) (-> obj ang-velocity quad)) - (set! (-> s4-0 w) 0.0) - (quaternion*! s4-0 s4-0 (-> obj rotation)) - (quaternion-float*! s4-0 s4-0 0.5) - (+! (-> obj rotation x) (* (-> s4-0 x) arg0)) - (+! (-> obj rotation y) (* (-> s4-0 y) arg0)) - (+! (-> obj rotation z) (* (-> s4-0 z) arg0)) - (+! (-> obj rotation w) (* (-> s4-0 w) arg0)) - ) + (set! (-> (the-as vector (&-> s4-0 x)) quad) (-> obj ang-velocity quad)) + (set! (-> s4-0 w) 0.0) + (quaternion*! s4-0 s4-0 (-> obj rotation)) + (quaternion-float*! s4-0 s4-0 0.5) + (+! (-> obj rotation x) (* (-> s4-0 x) arg0)) + (+! (-> obj rotation y) (* (-> s4-0 y) arg0)) + (+! (-> obj rotation z) (* (-> s4-0 z) arg0)) + (+! (-> obj rotation w) (* (-> s4-0 w) arg0)) + ) (quaternion-normalize! (-> obj rotation)) (quaternion->matrix (-> obj matrix) (-> obj rotation)) (TODO-RENAME-18 obj (-> obj matrix vector 3)) @@ -173,51 +146,42 @@ (none) ) -(defmethod - TODO-RENAME-13 - rigid-body - ((obj rigid-body) (arg0 vector) (arg1 vector)) +(defmethod TODO-RENAME-13 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector)) (vector+! (-> obj force) (-> obj force) arg1) (let* ((v1-2 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj position))) (a1-2 (vector-cross! (new 'stack-no-clear 'vector) v1-2 arg1)) ) - (vector+! (-> obj torque) (-> obj torque) a1-2) - ) + (vector+! (-> obj torque) (-> obj torque) a1-2) + ) 0 (none) ) -(defmethod - TODO-RENAME-16 - rigid-body - ((obj rigid-body) (arg0 vector) (arg1 vector) (arg2 float)) +(defmethod TODO-RENAME-16 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector) (arg2 float)) (vector+! (-> obj force) (-> obj force) arg1) (let* ((a0-3 (vector-! (new 'stack-no-clear 'vector) arg0 (-> obj position))) (s4-1 (vector-cross! (new 'stack-no-clear 'vector) a0-3 arg1)) ) - (let ((f0-0 (vector-length a0-3))) - (if (< arg2 f0-0) - (vector-float*! s4-1 s4-1 (/ arg2 f0-0)) - ) + (let ((f0-0 (vector-length a0-3))) + (if (< arg2 f0-0) + (vector-float*! s4-1 s4-1 (/ arg2 f0-0)) + ) + ) + (vector+! (-> obj torque) (-> obj torque) s4-1) ) - (vector+! (-> obj torque) (-> obj torque) s4-1) - ) 0 (none) ) -(defmethod - TODO-RENAME-14 - rigid-body - ((obj rigid-body) (arg0 vector) (arg1 vector)) +(defmethod TODO-RENAME-14 rigid-body ((obj rigid-body) (arg0 vector) (arg1 vector)) (let ((s5-0 (new 'stack-no-clear 'vector)) (s4-0 (new 'stack-no-clear 'vector)) ) - (vector-rotate*! s4-0 arg1 (-> obj matrix)) - (vector-rotate*! s5-0 arg0 (-> obj matrix)) - (vector+! s5-0 s5-0 (-> obj position)) - (TODO-RENAME-13 obj s5-0 s4-0) - ) + (vector-rotate*! s4-0 arg1 (-> obj matrix)) + (vector-rotate*! s5-0 arg0 (-> obj matrix)) + (vector+! s5-0 s5-0 (-> obj position)) + (TODO-RENAME-13 obj s5-0 s4-0) + ) 0 (none) ) @@ -230,89 +194,35 @@ (defmethod TODO-RENAME-18 rigid-body ((obj rigid-body) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-rotate*! gp-0 (-> obj cm-offset-joint) (-> obj matrix)) - (vector-! arg0 (-> obj position) gp-0) - ) + (vector-rotate*! gp-0 (-> obj cm-offset-joint) (-> obj matrix)) + (vector-! arg0 (-> obj position) gp-0) + ) arg0 ) (defmethod dummy-19 rigid-body ((obj rigid-body)) + (format #t " force ~M ~M ~M" (-> obj force x) (-> obj force y) (-> obj force z)) + (format #t " torque ~f ~f ~f~%" (-> obj torque x) (-> obj torque y) (-> obj torque z)) + (format #t " position ~M ~M ~M" (-> obj position x) (-> obj position y) (-> obj position z)) (format - #t - " force ~M ~M ~M" - (-> obj force x) - (-> obj force y) - (-> obj force z) - ) - (format - #t - " torque ~f ~f ~f~%" - (-> obj torque x) - (-> obj torque y) - (-> obj torque z) - ) - (format - #t - " position ~M ~M ~M" - (-> obj position x) - (-> obj position y) - (-> obj position z) - ) - (format - #t - " rotation ~f ~f ~f ~f~%" - (-> obj rotation x) - (-> obj rotation y) - (-> obj rotation z) - (-> obj rotation w) - ) - (format - #t - " lin-mom ~M ~M ~M" - (-> obj lin-momentum x) - (-> obj lin-momentum y) - (-> obj lin-momentum z) - ) - (format - #t - " ang-mom ~f ~f ~f~%" - (-> obj ang-momentum x) - (-> obj ang-momentum y) - (-> obj ang-momentum z) - ) - (format - #t - " lin-vel ~M ~M ~M" - (-> obj lin-velocity x) - (-> obj lin-velocity y) - (-> obj lin-velocity z) - ) - (format - #t - " ang-vel ~f ~f ~f~%" - (-> obj ang-velocity x) - (-> obj ang-velocity y) - (-> obj ang-velocity z) - ) + #t + " rotation ~f ~f ~f ~f~%" + (-> obj rotation x) + (-> obj rotation y) + (-> obj rotation z) + (-> obj rotation w) + ) + (format #t " lin-mom ~M ~M ~M" (-> obj lin-momentum x) (-> obj lin-momentum y) (-> obj lin-momentum z)) + (format #t " ang-mom ~f ~f ~f~%" (-> obj ang-momentum x) (-> obj ang-momentum y) (-> obj ang-momentum z)) + (format #t " lin-vel ~M ~M ~M" (-> obj lin-velocity x) (-> obj lin-velocity y) (-> obj lin-velocity z)) + (format #t " ang-vel ~f ~f ~f~%" (-> obj ang-velocity x) (-> obj ang-velocity y) (-> obj ang-velocity z)) 0 (none) ) (defmethod dummy-20 rigid-body ((obj rigid-body)) - (format - #t - " force ~M ~M ~M" - (-> obj force x) - (-> obj force y) - (-> obj force z) - ) - (format - #t - " torque ~f ~f ~f~%" - (-> obj torque x) - (-> obj torque y) - (-> obj torque z) - ) + (format #t " force ~M ~M ~M" (-> obj force x) (-> obj force y) (-> obj force z)) + (format #t " torque ~f ~f ~f~%" (-> obj torque x) (-> obj torque y) (-> obj torque z)) 0 (none) ) @@ -404,86 +314,65 @@ (defmethod relocate rigid-body-platform ((obj rigid-body-platform) (arg0 int)) (if (nonzero? (-> obj control-point-array)) - (set! - (-> obj control-point-array) - (the-as - rigid-body-control-point-inline-array - (+ (the-as int (-> obj control-point-array)) arg0) - ) - ) - ) + (set! (-> obj control-point-array) + (the-as rigid-body-control-point-inline-array (+ (the-as int (-> obj control-point-array)) arg0)) + ) + ) (the-as - rigid-body-platform - ((the-as - (function process-drawable int process-drawable) - (find-parent-method rigid-body-platform 7) + rigid-body-platform + ((the-as (function process-drawable int process-drawable) (find-parent-method rigid-body-platform 7)) + obj + arg0 ) - obj - arg0 ) - ) ) -(defmethod - TODO-RENAME-22 - rigid-body-platform - ((obj rigid-body-platform) (arg0 vector) (arg1 float)) +(defmethod TODO-RENAME-22 rigid-body-platform ((obj rigid-body-platform) (arg0 vector) (arg1 float)) (let ((v1-0 (-> obj water-anim))) - 0.0 - (+ (the-as float (cond - (v1-0 - (let* ((a2-1 v1-0) - (a0-1 (if a2-1 - (-> a2-1 ppointer-water-anim 3) - ) - ) - ) - (if a0-1 - (get-ripple-height a0-1 arg0) - (-> v1-0 ppointer-water-anim 9) - ) + 0.0 + (+ (the-as float (cond + (v1-0 + (let* ((a2-1 v1-0) + (a0-1 (if a2-1 + (-> a2-1 ppointer-water-anim 3) + ) + ) + ) + (if a0-1 + (get-ripple-height a0-1 arg0) + (-> v1-0 ppointer-water-anim 9) + ) + ) + ) + (else + (ocean-get-height arg0) + ) ) - ) - (else - (ocean-get-height arg0) - ) - ) + ) + (-> obj float-height-offset) ) - (-> obj float-height-offset) ) - ) ) -(defmethod - TODO-RENAME-24 - rigid-body-platform - ((obj rigid-body-platform) (arg0 rigid-body-control-point) (arg1 float)) +(defmethod TODO-RENAME-24 rigid-body-platform ((obj rigid-body-platform) (arg0 rigid-body-control-point) (arg1 float)) (set! (-> arg0 world-pos w) (TODO-RENAME-22 obj (-> arg0 world-pos) arg1)) (let* ((s4-0 (new 'stack-no-clear 'vector)) (f0-2 (- (-> arg0 world-pos w) (-> arg0 world-pos y))) (f30-0 (/ f0-2 (-> obj info max-buoyancy-depth))) ) - (when (< 0.0 f0-2) - (vector-float*! - s4-0 - *y-vector* - (* - (-> obj rbody mass) - (fmin 1.0 f30-0) - (/ (-> obj info gravity) (the float (-> obj info control-point-count))) - (-> obj info gravity-factor) - (-> obj info buoyancy-factor) + (when (< 0.0 f0-2) + (vector-float*! s4-0 *y-vector* (* (-> obj rbody mass) + (fmin 1.0 f30-0) + (/ (-> obj info gravity) (the float (-> obj info control-point-count))) + (-> obj info gravity-factor) + (-> obj info buoyancy-factor) + ) + ) + (TODO-RENAME-13 (-> obj rbody) (-> arg0 world-pos) s4-0) + (vector-float*! s4-0 (-> arg0 velocity) (* -1.0 (-> obj info drag-factor) (fmin 1.0 f30-0))) + (TODO-RENAME-13 (-> obj rbody) (-> arg0 world-pos) s4-0) ) - ) - (TODO-RENAME-13 (-> obj rbody) (-> arg0 world-pos) s4-0) - (vector-float*! - s4-0 - (-> arg0 velocity) - (* -1.0 (-> obj info drag-factor) (fmin 1.0 f30-0)) - ) - (TODO-RENAME-13 (-> obj rbody) (-> arg0 world-pos) s4-0) ) - ) 0 0 (none) @@ -491,69 +380,58 @@ (defmethod TODO-RENAME-25 rigid-body-platform ((obj rigid-body-platform)) (when (or (-> obj player-impulse) (-> obj player-contact)) - (set! (-> obj player-impulse) #f) - (TODO-RENAME-16 - (-> obj rbody) - (-> obj player-force-position) - (-> obj player-force) - (-> obj info player-force-distance) + (set! (-> obj player-impulse) #f) + (TODO-RENAME-16 + (-> obj rbody) + (-> obj player-force-position) + (-> obj player-force) + (-> obj info player-force-distance) + ) ) - ) 0 (none) ) (defmethod TODO-RENAME-26 rigid-body-platform ((obj rigid-body-platform)) (let ((a1-0 (new 'stack-no-clear 'vector))) - (vector-float*! - a1-0 - *y-vector* - (* - -1.0 - (-> obj info gravity-factor) - (-> obj info gravity) - (-> obj rbody mass) - ) + (vector-float*! + a1-0 + *y-vector* + (* -1.0 (-> obj info gravity-factor) (-> obj info gravity) (-> obj rbody mass)) + ) + (TODO-RENAME-15 (-> obj rbody) a1-0) ) - (TODO-RENAME-15 (-> obj rbody) a1-0) - ) 0 (none) ) -(defmethod - TODO-RENAME-27 - rigid-body-platform - ((obj rigid-body-platform) (arg0 vector)) +(defmethod TODO-RENAME-27 rigid-body-platform ((obj rigid-body-platform) (arg0 vector)) (let ((gp-0 (new 'stack-no-clear 'vector))) - (vector-! gp-0 arg0 (-> obj rbody position)) - (set! (-> gp-0 y) 0.0) - (let* ((f0-1 (vector-length gp-0)) - (f1-1 (* 10.0 (fmax 0.0 (fmin 4096.0 (+ -4096.0 f0-1))))) - ) - (when (< 0.0 f1-1) - (vector-float*! gp-0 gp-0 (/ f1-1 f0-1)) - (TODO-RENAME-15 (-> obj rbody) gp-0) - ) + (vector-! gp-0 arg0 (-> obj rbody position)) + (set! (-> gp-0 y) 0.0) + (let* ((f0-1 (vector-length gp-0)) + (f1-1 (* 10.0 (fmax 0.0 (fmin 4096.0 (+ -4096.0 f0-1))))) + ) + (when (< 0.0 f1-1) + (vector-float*! gp-0 gp-0 (/ f1-1 f0-1)) + (TODO-RENAME-15 (-> obj rbody) gp-0) + ) + ) ) - ) 0 (none) ) -(defmethod - TODO-RENAME-23 - rigid-body-platform - ((obj rigid-body-platform) (arg0 float)) +(defmethod TODO-RENAME-23 rigid-body-platform ((obj rigid-body-platform) (arg0 float)) (let ((s4-0 (-> obj rbody matrix))) - (dotimes (s3-0 (-> obj info control-point-count)) - (let ((s2-0 (-> obj control-point-array data s3-0))) - (vector-matrix*! (-> s2-0 world-pos) (-> s2-0 local-pos) s4-0) - (TODO-RENAME-17 (-> obj rbody) (-> s2-0 world-pos) (-> s2-0 velocity)) - (TODO-RENAME-24 obj s2-0 arg0) - ) + (dotimes (s3-0 (-> obj info control-point-count)) + (let ((s2-0 (-> obj control-point-array data s3-0))) + (vector-matrix*! (-> s2-0 world-pos) (-> s2-0 local-pos) s4-0) + (TODO-RENAME-17 (-> obj rbody) (-> s2-0 world-pos) (-> s2-0 velocity)) + (TODO-RENAME-24 obj s2-0 arg0) + ) + ) ) - ) (TODO-RENAME-26 obj) (TODO-RENAME-25 obj) 0 @@ -562,292 +440,192 @@ (defmethod TODO-RENAME-28 rigid-body-platform ((obj rigid-body-platform)) (if (-> obj info platform) - (dummy-35 (-> obj root-overlay)) - ) + (dummy-35 (-> obj root-overlay)) + ) (set! (-> obj player-velocity-prev quad) (-> obj player-velocity quad)) (if *target* - (set! (-> obj player-velocity quad) (-> *target* control transv quad)) - (set! (-> obj player-velocity quad) (-> *null-vector* quad)) - ) - (+! - (-> obj sim-time-remaining) - (* - 0.0033333334 - (the - float - (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) - ) - ) - ) + (set! (-> obj player-velocity quad) (-> *target* control transv quad)) + (set! (-> obj player-velocity quad) (-> *null-vector* quad)) + ) + (+! (-> obj sim-time-remaining) + (* 0.0033333334 (the float (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)))) + ) (let ((f30-0 0.016666668) - (f28-0 - (* - 0.0033333334 - (the float (logand #xffffff (-> *display* base-frame-counter))) - ) - ) + (f28-0 (* 0.0033333334 (the float (logand #xffffff (-> *display* base-frame-counter))))) ) - (while (>= (-> obj sim-time-remaining) (* 0.5 f30-0)) - (clear-force-torque! (-> obj rbody)) - (TODO-RENAME-23 obj f28-0) - (dummy-10 (-> obj rbody) f30-0) - (set! (-> obj sim-time-remaining) (- (-> obj sim-time-remaining) f30-0)) + (while (>= (-> obj sim-time-remaining) (* 0.5 f30-0)) + (clear-force-torque! (-> obj rbody)) + (TODO-RENAME-23 obj f28-0) + (dummy-10 (-> obj rbody) f30-0) + (set! (-> obj sim-time-remaining) (- (-> obj sim-time-remaining) f30-0)) + ) ) - ) (set! (-> obj player-contact) #f) 0 (none) ) -(defbehavior - rigid-body-platform-event-handler rigid-body-platform - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('bonk) - (when - (>= - (- (-> *display* base-frame-counter) (-> self player-bonk-timeout)) - (the-as int (-> self info player-force-timeout)) - ) - (set! (-> self player-bonk-timeout) (-> *display* base-frame-counter)) - (let* ((s5-0 arg0) - (v1-7 - (if - (and - (nonzero? s5-0) - (type-type? (-> s5-0 type) process-drawable) - ) - s5-0 +(defbehavior rigid-body-platform-event-handler rigid-body-platform ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('bonk) + (when (>= (- (-> *display* base-frame-counter) (-> self player-bonk-timeout)) + (the-as int (-> self info player-force-timeout)) ) + (set! (-> self player-bonk-timeout) (-> *display* base-frame-counter)) + (let* ((s5-0 arg0) + (v1-7 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) process-drawable)) + s5-0 + ) + ) ) - ) - (when v1-7 - (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-7) root trans quad) - ) - (let - ((f0-4 - (fmin - (* - 0.00012207031 - (the-as float (-> arg3 param 1)) - (-> self info player-bonk-factor) - (-> self info player-weight) - ) - (-> self info player-force-clamp) - ) - ) - ) - (vector-float*! (-> self player-force) *y-vector* (- f0-4)) - ) - ) - ) - ) - ) - (('attack) - (let ((v1-16 (-> arg3 param 2))) - (when (!= v1-16 (-> self player-attack-id)) - (set! (-> self player-attack-id) (the-as int v1-16)) - (cond - ((= (-> arg3 param 1) 'flop) - (when - (>= - (- (-> *display* base-frame-counter) (-> self player-bonk-timeout)) - (the-as int (-> self info player-force-timeout)) - ) - (set! (-> self player-bonk-timeout) (-> *display* base-frame-counter)) - (let* ((gp-1 arg0) - (v1-24 - (if - (and - (nonzero? gp-1) - (type-type? (-> gp-1 type) process-drawable) - ) - gp-1 - ) - ) - ) - (when v1-24 + (when v1-7 (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-24) root trans quad) - ) - (let - ((f0-9 - (fmin - (* - 16.0 - (-> self info player-weight) - (-> self info player-dive-factor) - ) - (-> self info player-force-clamp) - ) - ) - ) - (vector-float*! (-> self player-force) *y-vector* (- f0-9)) - ) - ) - ) - ) - ) - ((= (-> arg3 param 1) 'explode) - (let* ((gp-2 arg0) - (v1-34 - (if - (and - (nonzero? gp-2) - (type-type? (-> gp-2 type) process-drawable) - ) - gp-2 + (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-7) root trans quad)) + (let ((f0-4 (fmin + (* 0.00012207031 + (the-as float (-> arg3 param 1)) + (-> self info player-bonk-factor) + (-> self info player-weight) + ) + (-> self info player-force-clamp) + ) + ) ) + (vector-float*! (-> self player-force) *y-vector* (- f0-4)) + ) + ) + ) + ) + ) + (('attack) + (let ((v1-16 (-> arg3 param 2))) + (when (!= v1-16 (-> self player-attack-id)) + (set! (-> self player-attack-id) (the-as int v1-16)) + (cond + ((= (-> arg3 param 1) 'flop) + (when (>= (- (-> *display* base-frame-counter) (-> self player-bonk-timeout)) + (the-as int (-> self info player-force-timeout)) + ) + (set! (-> self player-bonk-timeout) (-> *display* base-frame-counter)) + (let* ((gp-1 arg0) + (v1-24 (if (and (nonzero? gp-1) (type-type? (-> gp-1 type) process-drawable)) + gp-1 + ) + ) + ) + (when v1-24 + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-24) root trans quad)) + (let ((f0-9 (fmin + (* 16.0 (-> self info player-weight) (-> self info player-dive-factor)) + (-> self info player-force-clamp) + ) + ) + ) + (vector-float*! (-> self player-force) *y-vector* (- f0-9)) + ) + ) ) - ) - (when v1-34 - (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-34) root trans quad) + ) + ) + ((= (-> arg3 param 1) 'explode) + (let* ((gp-2 arg0) + (v1-34 (if (and (nonzero? gp-2) (type-type? (-> gp-2 type) process-drawable)) + gp-2 + ) + ) + ) + (when v1-34 + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-34) root trans quad)) + (vector-! (-> self player-force) (-> self rbody position) (-> (the-as process-drawable v1-34) root trans)) + (vector-normalize! (-> self player-force) (-> self info explosion-force)) + ) + ) + ) + (else + (the-as vector #f) + ) ) - (vector-! - (-> self player-force) - (-> self rbody position) - (-> (the-as process-drawable v1-34) root trans) - ) - (vector-normalize! - (-> self player-force) - (-> self info explosion-force) - ) - ) ) - ) - (else - (the-as vector #f) - ) ) - ) ) - ) - (('impulse) - (let ((s5-1 arg0)) - (when - (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) - s5-1 - ) - (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) - (set! (-> self player-force-position quad) (-> self rbody position quad)) - (let ((v0-0 (-> self player-force))) - (set! (-> v0-0 quad) (-> (the-as vector (-> arg3 param 0)) quad)) - v0-0 - ) - ) - ) - ) - (('edge-grabbed) - (let ((v1-44 (-> arg3 param 0))) - (when (not (-> self player-impulse)) - (set! (-> self player-contact) #t) - (set! - (-> self player-force-position quad) - (-> (the-as vector (+ v1-44 32)) quad) - ) - (vector-float*! - (-> self player-force) - *y-vector* - (* -1.0 (-> self info player-weight)) - ) - ) - ) - ) - (('ridden) - (let ((v1-48 (the-as object (-> arg3 param 0)))) - (when (the-as uint v1-48) - (let ((v1-50 (handle->process (-> (the-as (pointer handle) v1-48) 0)))) - (when - (and - v1-50 - (= v1-50 *target*) - (!= (-> *target* control unknown-surface00 mode) 'swim) + (('impulse) + (let ((s5-1 arg0)) + (when (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) + s5-1 + ) + (set! (-> self player-impulse) (the-as collide-shape-prim-mesh #t)) + (set! (-> self player-force-position quad) (-> self rbody position quad)) + (let ((v0-0 (-> self player-force))) + (set! (-> v0-0 quad) (-> (the-as vector (-> arg3 param 0)) quad)) + v0-0 + ) ) - (when (not (-> self player-impulse)) + ) + ) + (('edge-grabbed) + (let ((v1-44 (-> arg3 param 0))) + (when (not (-> self player-impulse)) (set! (-> self player-contact) #t) - (set! - (-> self player-force-position quad) - (-> (the-as process-drawable v1-50) root trans quad) - ) - (set! (-> self player-force quad) (-> *null-vector* quad)) - (vector+*! - (-> self player-force) - (-> self player-force) - *y-vector* - (* -1.0 (-> self info player-weight)) - ) + (set! (-> self player-force-position quad) (-> (the-as vector (+ v1-44 32)) quad)) + (vector-float*! (-> self player-force) *y-vector* (* -1.0 (-> self info player-weight))) + ) + ) + ) + (('ridden) + (let ((v1-48 (the-as object (-> arg3 param 0)))) + (when (the-as uint v1-48) + (let ((v1-50 (handle->process (-> (the-as (pointer handle) v1-48) 0)))) + (when (and v1-50 (= v1-50 *target*) (!= (-> *target* control unknown-surface00 mode) 'swim)) + (when (not (-> self player-impulse)) + (set! (-> self player-contact) #t) + (set! (-> self player-force-position quad) (-> (the-as process-drawable v1-50) root trans quad)) + (set! (-> self player-force quad) (-> *null-vector* quad)) + (vector+*! (-> self player-force) (-> self player-force) *y-vector* (* -1.0 (-> self info player-weight))) + ) + ) + ) ) - ) ) - ) ) ) - ) ) (defbehavior rigid-body-platform-post rigid-body-platform () - (set! - (-> self rbody lin-momentum-damping-factor) - (-> self info linear-damping) - ) - (set! - (-> self rbody ang-momentum-damping-factor) - (-> self info angular-damping) - ) + (set! (-> self rbody lin-momentum-damping-factor) (-> self info linear-damping)) + (set! (-> self rbody ang-momentum-damping-factor) (-> self info angular-damping)) (if (-> self player-impulse) - (sound-play-by-name - (string->sound-name (-> self info sound-name)) - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) + (sound-play-by-name (string->sound-name (-> self info sound-name)) (new-sound-id) 1024 0 0 1 #t) + ) (TODO-RENAME-28 self) (quaternion-copy! (-> self root-overlay quat) (-> self rbody rotation)) (TODO-RENAME-18 (-> self rbody) (-> self root-overlay trans)) (if (-> self info platform) - (rider-post) - (transform-post) - ) + (rider-post) + (transform-post) + ) ) (defstate rigid-body-platform-idle (rigid-body-platform) :virtual #t :trans (behavior () - (if - (and - *target* - (>= - (-> self info idle-distance) - (vector-vector-distance - (-> self root-overlay trans) - (-> *target* control trans) - ) - ) - ) - (go-virtual rigid-body-platform-float) + (if (and *target* (>= (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (go-virtual rigid-body-platform-float) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior rigid-body-platform) ja-post) ) @@ -858,155 +636,114 @@ rigid-body-platform-event-handler :trans (behavior () - (if - (or - (not *target*) - (< - (-> self info idle-distance) - (vector-vector-distance - (-> self root-overlay trans) - (-> *target* control trans) - ) - ) - ) - (go-virtual rigid-body-platform-idle) + (if (or (not *target*) (< (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (go-virtual rigid-body-platform-idle) + ) + (none) ) - (none) - ) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post - (the-as - (function none :behavior rigid-body-platform) - rigid-body-platform-post - ) + (the-as (function none :behavior rigid-body-platform) rigid-body-platform-post) ) -(defmethod - TODO-RENAME-29 - rigid-body-platform - ((obj rigid-body-platform) (arg0 rigid-body-platform-constants)) +(defmethod TODO-RENAME-29 rigid-body-platform ((obj rigid-body-platform) (arg0 rigid-body-platform-constants)) (set! (-> obj info) arg0) - (set! - (-> obj control-point-array) - (new - 'process - 'rigid-body-control-point-inline-array - (-> obj info control-point-count) - ) - ) + (set! (-> obj control-point-array) + (new 'process 'rigid-body-control-point-inline-array (-> obj info control-point-count)) + ) (logior! (-> obj skel status) 1) (dummy-47 (-> obj root-overlay)) (set-vector! - (-> obj rbody cm-offset-joint) - (-> obj info cm-joint-x) - (-> obj info cm-joint-y) - (-> obj info cm-joint-z) - 1.0 - ) + (-> obj rbody cm-offset-joint) + (-> obj info cm-joint-x) + (-> obj info cm-joint-y) + (-> obj info cm-joint-z) + 1.0 + ) (TODO-RENAME-22 - (-> obj rbody) - (-> obj root-overlay trans) - (-> obj root-overlay quat) - (-> obj info linear-damping) - (-> obj info angular-damping) - ) + (-> obj rbody) + (-> obj root-overlay trans) + (-> obj root-overlay quat) + (-> obj info linear-damping) + (-> obj info angular-damping) + ) (TODO-RENAME-9 - (-> obj rbody) - (-> obj info mass) - (-> obj info inertial-tensor-x) - (-> obj info inertial-tensor-y) - (-> obj info inertial-tensor-z) - ) + (-> obj rbody) + (-> obj info mass) + (-> obj info inertial-tensor-x) + (-> obj info inertial-tensor-y) + (-> obj info inertial-tensor-z) + ) (set! (-> obj player-impulse) #f) (set! (-> obj player-contact) #f) (set! (-> obj player-bonk-timeout) (-> *display* base-frame-counter)) (set! (-> obj player-force quad) (-> *null-vector* quad)) (set! (-> obj player-velocity quad) (-> *null-vector* quad)) (set! (-> obj player-velocity-prev quad) (-> *null-vector* quad)) - (set! - (-> obj water-anim) - (the-as water-anim (entity-actor-lookup (-> obj entity) 'water-actor 0)) - ) + (set! (-> obj water-anim) (the-as water-anim (entity-actor-lookup (-> obj entity) 'water-actor 0))) 0 (none) ) (defmethod TODO-RENAME-30 rigid-body-platform ((obj rigid-body-platform)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s5-0 1) - (let - ((s4-0 - (new - 'process - 'collide-shape-prim-mesh - s5-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s5-0 1) + (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s4-0 transform-index) 0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) + (set-root-prim! s5-0 s4-0) ) - ) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) 0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) - (set-root-prim! s5-0 s4-0) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-overlay) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-overlay) s5-0) - ) 0 (none) ) -(define - *rigid-body-platform-constants* - (new 'static 'rigid-body-platform-constants - :drag-factor 0.8 - :buoyancy-factor 1.5 - :max-buoyancy-depth (meters 1.5) - :gravity-factor 1.0 - :gravity (meters 10.0) - :player-weight (meters 6.6) - :player-bonk-factor 1.0 - :player-dive-factor 1.0 - :player-force-distance (meters 1000.0) - :player-force-clamp (meters 1000000.0) - :player-force-timeout #x1e - :explosion-force (meters 1000.0) - :linear-damping 1.0 - :angular-damping 1.0 - :control-point-count 1 - :mass 2.0 - :inertial-tensor-x (meters 3.0) - :inertial-tensor-y (meters 2.0) - :inertial-tensor-z (meters 3.0) - :idle-distance (meters 50.0) - :platform #t - :sound-name #f - ) - ) +(define *rigid-body-platform-constants* (new 'static 'rigid-body-platform-constants + :drag-factor 0.8 + :buoyancy-factor 1.5 + :max-buoyancy-depth (meters 1.5) + :gravity-factor 1.0 + :gravity (meters 10.0) + :player-weight (meters 6.6) + :player-bonk-factor 1.0 + :player-dive-factor 1.0 + :player-force-distance (meters 1000.0) + :player-force-clamp (meters 1000000.0) + :player-force-timeout #x1e + :explosion-force (meters 1000.0) + :linear-damping 1.0 + :angular-damping 1.0 + :control-point-count 1 + :mass 2.0 + :inertial-tensor-x (meters 3.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.0) + :idle-distance (meters 50.0) + :platform #t + :sound-name #f + ) + ) (defmethod TODO-RENAME-34 rigid-body-platform ((obj rigid-body-platform)) (go (method-of-object obj rigid-body-platform-idle)) @@ -1018,25 +755,22 @@ (set! (-> obj float-height-offset) 0.0) (TODO-RENAME-29 obj *rigid-body-platform-constants*) (let ((s5-0 (-> obj info control-point-count))) - (dotimes (s4-0 s5-0) - (let ((s3-0 (-> obj control-point-array data s4-0))) - (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) - (set! (-> s3-0 local-pos x) (* 12288.0 (sin f30-0))) - (set! (-> s3-0 local-pos y) -10240.0) - (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) + (dotimes (s4-0 s5-0) + (let ((s3-0 (-> obj control-point-array data s4-0))) + (let ((f30-0 (* 65536.0 (/ (the float s4-0) (the float s5-0))))) + (set! (-> s3-0 local-pos x) (* 12288.0 (sin f30-0))) + (set! (-> s3-0 local-pos y) -10240.0) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) ) - (set! (-> s3-0 local-pos w) 1.0) - ) ) - ) 0 (none) ) -(defmethod - init-from-entity! - rigid-body-platform - ((obj rigid-body-platform) (arg0 entity-actor)) +(defmethod init-from-entity! rigid-body-platform ((obj rigid-body-platform) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) (TODO-RENAME-30 obj) (process-drawable-from-entity! obj arg0) diff --git a/goal_src/levels/common/sharkey.gc b/goal_src/levels/common/sharkey.gc index 146175de31..77832d9bfb 100644 --- a/goal_src/levels/common/sharkey.gc +++ b/goal_src/levels/common/sharkey.gc @@ -80,16 +80,14 @@ nav-enemy-default-event-handler (defmethod run-logic? sharkey ((obj sharkey)) - (or - (zero? (logand (-> obj mask) (process-mask actor-pause))) - (or - (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) - (vector-vector-distance (-> obj collide-info trans) (math-camera-pos)) + (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj collide-info pause-adjust-distance)) + (vector-vector-distance (-> obj collide-info trans) (math-camera-pos)) + ) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) - (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) ) - ) ) (defmethod dummy-40 sharkey ((obj sharkey)) @@ -163,19 +161,18 @@ nav-enemy-default-event-handler (defbehavior sharkey-notice-player? sharkey () (if *target* - (and - (< (- (-> *target* control trans y) (-> self y-max)) 0.0) - (let ((gp-0 'racer) - (a1-0 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) 'query) - (set! (-> a1-0 param 0) (the-as uint 'mode)) - (!= gp-0 (send-event-function *target* a1-0)) - ) - (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) - ) + (and (< (- (-> *target* control trans y) (-> self y-max)) 0.0) + (let ((gp-0 'racer) + (a1-0 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'mode)) + (!= gp-0 (send-event-function *target* a1-0)) + ) + (nav-enemy-test-point-near-nav-mesh? (-> *target* control shadow-pos)) + ) ) ) @@ -240,18 +237,20 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :trans (behavior () (cond ((-> self enable-patrol) - (if (and - (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - ) + (if (and (and *target* (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) + ) (go-virtual nav-enemy-patrol) ) ) @@ -261,13 +260,11 @@ nav-enemy-default-event-handler (set! (-> self notice-time) (-> *display* base-frame-counter)) ) (let ((a0-4 (dummy-16 (-> self nav) (-> *target* control trans)))) - (when (or - (and a0-4 (logtest? (-> a0-4 pat) 2)) - (and - (logtest? (-> self draw status) (draw-status drwf01)) - (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) + (when (or (and a0-4 (logtest? (-> a0-4 pat) 2)) + (and (logtest? (-> self draw status) (draw-status drwf01)) + (>= (- (-> *display* base-frame-counter) (-> self notice-time)) (-> self reaction-time)) + ) ) - ) (sharkey-move-to-attack-position) (set! (-> self player-in-water) #t) (go-virtual nav-enemy-chase) @@ -376,7 +373,10 @@ nav-enemy-default-event-handler (none) ) :post - (behavior () (nav-enemy-travel-post) (none)) + (behavior () + (nav-enemy-travel-post) + (none) + ) ) (defstate nav-enemy-notice (sharkey) @@ -387,9 +387,15 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (go-virtual nav-enemy-chase) (none)) + (behavior () + (go-virtual nav-enemy-chase) + (none) + ) :code - (behavior () (go-virtual nav-enemy-chase) (none)) + (behavior () + (go-virtual nav-enemy-chase) + (none) + ) ) (defbehavior sharkey-follow-trajectory sharkey ((arg0 float)) @@ -496,7 +502,10 @@ nav-enemy-default-event-handler (none) ) :post - (behavior () (nav-enemy-simple-post) (none)) + (behavior () + (nav-enemy-simple-post) + (none) + ) ) (defstate nav-enemy-chase (sharkey) @@ -507,7 +516,10 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :exit - (behavior () (sound-stop (-> self sound-id)) (none)) + (behavior () + (sound-stop (-> self sound-id)) + (none) + ) :trans (behavior () (if (not *target*) @@ -538,10 +550,9 @@ nav-enemy-default-event-handler (cond ((-> self player-in-water) (set! (-> self free-time) (-> *display* base-frame-counter)) - (if (and - (< (fabs (- (-> gp-0 y) (-> self collide-info trans y))) 40960.0) - (< (vector-vector-xz-distance gp-0 (-> self collide-info trans)) 24576.0) - ) + (if (and (< (fabs (- (-> gp-0 y) (-> self collide-info trans y))) 40960.0) + (< (vector-vector-xz-distance gp-0 (-> self collide-info trans)) 24576.0) + ) (go-virtual nav-enemy-attack) ) ) @@ -810,9 +821,9 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 2) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 (* 6144.0 (-> obj scale))) (set-root-prim! s4-0 s3-0) ) diff --git a/goal_src/levels/darkcave/darkcave-obs.gc b/goal_src/levels/darkcave/darkcave-obs.gc index 6c7e498afe..b66d681cf9 100644 --- a/goal_src/levels/darkcave/darkcave-obs.gc +++ b/goal_src/levels/darkcave/darkcave-obs.gc @@ -97,12 +97,13 @@ (defstate cavecrystal-idle (cavecrystal) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('attack) - (go cavecrystal-active) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (go cavecrystal-active) + ) + ) + ) :trans (behavior () (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) @@ -118,7 +119,12 @@ (none) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defstate cavecrystal-active (cavecrystal) @@ -198,7 +204,12 @@ (none) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defmethod deactivate cavecrystal ((obj cavecrystal)) @@ -219,10 +230,10 @@ (set-vector! (-> obj on-color-emissive) 0.0 0.0 0.0 0.0) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/finalboss/final-door.gc b/goal_src/levels/finalboss/final-door.gc index f9aeac1f7c..f264b409c7 100644 --- a/goal_src/levels/finalboss/final-door.gc +++ b/goal_src/levels/finalboss/final-door.gc @@ -60,187 +60,117 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('open) - enter-state - (go-virtual open) + (case arg2 + (('open) + enter-state + (go-virtual open) + ) ) ) - ) :code (behavior () - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - (none) - ) + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) ) (defstate open (final-door) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (when (= v1-0 'brightness) - (let ((f0-0 (the-as float (-> arg3 param 0))) - (f1-0 (the-as float (-> arg3 param 1))) - ) - (set-vector! (-> self draw color-mult) f0-0 f0-0 f0-0 f0-0) - (let ((v0-0 (-> self draw color-emissive))) - (set! (-> v0-0 x) f1-0) - (set! (-> v0-0 y) f1-0) - (set! (-> v0-0 z) f1-0) - (set! (-> v0-0 w) f1-0) - v0-0 - ) - ) - ) - ) + (let ((v1-0 arg2)) + (the-as object (when (= v1-0 'brightness) + (let ((f0-0 (the-as float (-> arg3 param 0))) + (f1-0 (the-as float (-> arg3 param 1))) + ) + (set-vector! (-> self draw color-mult) f0-0 f0-0 f0-0 f0-0) + (let ((v0-0 (-> self draw color-emissive))) + (set! (-> v0-0 x) f1-0) + (set! (-> v0-0 y) f1-0) + (set! (-> v0-0 z) f1-0) + (set! (-> v0-0 w) f1-0) + v0-0 + ) + ) + ) + ) + ) ) - ) :code (behavior () - (case (-> self type) - ((power-left) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - data - 0 - length + (case (-> self type) + ((power-left) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 0.353) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 2)) num-func-seek!) + ) + (until (ja-done? 0) + (transform-post) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 0.353) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 + ) + ) + (else + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> a0-4 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 0.353) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! a0-4 (the-as art-joint-anim (-> self draw art-group data 2)) num-func-seek!) ) - ) - ) - (set! (-> a0-1 param 1) 0.353) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 2)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (transform-post) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 0.353) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (else - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! - (-> a0-4 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - data - 0 - length + (until (ja-done? 0) + (transform-post) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1))) + (set! (-> a0-5 param 1) 0.353) + (joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 - ) ) - ) - (set! (-> a0-4 param 1) 0.353) - (set! (-> a0-4 frame-num) 0.0) - (joint-control-channel-group! - a0-4 - (the-as art-joint-anim (-> self draw art-group data 2)) - num-func-seek! - ) ) - (until (ja-done? 0) - (transform-post) - (suspend) - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 param 0) - (the float (+ (-> a0-5 frame-group data 0 length) -1)) - ) - (set! (-> a0-5 param 1) 0.353) - (joint-control-channel-group-eval! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) ) - (transform-post) - (logior! (-> self mask) (process-mask sleep)) - (suspend) - 0 - (none) - ) ) (defmethod init-from-entity! final-door ((obj final-door) (arg0 entity-actor)) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 45056.0 0.0 49152.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 0.0 45056.0 0.0 49152.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root) s4-0) - ) (process-drawable-from-entity! obj arg0) (dummy-21 obj) (go (method-of-object obj idle)) @@ -269,59 +199,29 @@ :virtual #t :code (behavior () - (ja-post) - (while #t - (if - (and - (and - *target* - (>= - 61440.0 - (vector-vector-distance - (-> self root trans) - (-> *target* control trans) - ) - ) - ) - (and - (zero? (logand (-> *target* state-flags) 256)) - (and - (>= (-> *game-info* fuel) 100.0) - (not - (and - (-> self entity) - (logtest? - (-> self entity extra perm status) - (entity-perm-status complete) - ) + (ja-post) + (while #t + (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (zero? (logand (-> *target* state-flags) 256)) + (and (>= (-> *game-info* fuel) 100.0) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (= (get-task-status (game-task finalboss-movies)) (task-status need-reward-speech)) + (send-event + *target* + 'change-mode + 'final-door + (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-right))) + (search-process-tree *active-pool* (lambda ((arg0 final-door)) (= (-> arg0 type) power-left))) + ) + ) + ) + ) + (process-entity-status! self (entity-perm-status complete) #t) ) - ) - (= - (get-task-status (game-task finalboss-movies)) - (task-status need-reward-speech) - ) - (send-event - *target* - 'change-mode - 'final-door - (search-process-tree *active-pool* (lambda ((arg0 final-door)) - (= (-> arg0 type) power-right) - ) - ) - (search-process-tree *active-pool* (lambda ((arg0 final-door)) - (= (-> arg0 type) power-left) - ) - ) - ) - ) - ) + (suspend) ) - (process-entity-status! self (entity-perm-status complete) #t) - ) - (suspend) + (none) ) - (none) - ) ) (defmethod dummy-21 power-left ((obj power-left)) @@ -358,149 +258,93 @@ :virtual #t :code (behavior () - (sound-play-by-name - (static-sound-name "cell-prize") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((gp-1 (new 'stack 'trajectory))) - (set! (-> self base y) (-> self jump-pos y)) - (setup-from-to-duration! - gp-1 - (-> self root-override trans) - (-> self jump-pos) - 300.0 - -2.2755556 - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (let - ((f0-2 - (the float (- (-> *display* base-frame-counter) (-> self state-time))) + (sound-play-by-name (static-sound-name "cell-prize") (new-sound-id) 1024 0 0 1 #t) + (let ((gp-1 (new 'stack 'trajectory))) + (set! (-> self base y) (-> self jump-pos y)) + (setup-from-to-duration! gp-1 (-> self root-override trans) (-> self jump-pos) 300.0 -2.2755556) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (let ((f0-2 (the float (- (-> *display* base-frame-counter) (-> self state-time))))) + (eval-position! gp-1 f0-2 (-> self root-override trans)) + ) + (transform-post) + (spawn (-> self part) (the-as vector (-> self root-override root-prim prim-core))) + (suspend) + (when (nonzero? (-> self skel)) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) 0.5) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-loop!) + ) + ) ) - ) - (eval-position! gp-1 f0-2 (-> self root-override trans)) ) - (transform-post) - (spawn - (-> self part) - (the-as vector (-> self root-override root-prim prim-core)) - ) - (suspend) - (when (nonzero? (-> self skel)) - (let ((a0-7 (-> self skel root-channel 0))) - (set! (-> a0-7 param 0) 0.5) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-loop! + (set! (-> self root-override trans quad) (-> self jump-pos quad)) + (set! (-> self base quad) (-> self root-override trans quad)) + (transform-post) + (sound-play-by-name (static-sound-name "land-pcmetal") (new-sound-id) 1024 3048 0 1 #t) + (let ((gp-3 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-3 + (let ((t9-12 (method-of-type part-tracker activate))) + (t9-12 (the-as part-tracker gp-3) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-3 + part-tracker-init + (-> *part-group-id-table* 4) + -1 + #f + #f + #f + (-> self root-override root-prim prim-core) + ) + (-> gp-3 ppointer) ) - ) ) - ) + (go-virtual idle) + (none) ) - (set! (-> self root-override trans quad) (-> self jump-pos quad)) - (set! (-> self base quad) (-> self root-override trans quad)) - (transform-post) - (sound-play-by-name - (static-sound-name "land-pcmetal") - (new-sound-id) - 1024 - 3048 - 0 - 1 - #t - ) - (let ((gp-3 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-3 - (let ((t9-12 (method-of-type part-tracker activate))) - (t9-12 - (the-as part-tracker gp-3) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - gp-3 - part-tracker-init - (-> *part-group-id-table* 4) - -1 - #f - #f - #f - (-> self root-override root-prim prim-core) - ) - (-> gp-3 ppointer) - ) - ) - (go-virtual idle) - (none) - ) ) (defstate idle (powercellalt) :virtual #t :code (behavior () - (while #t - (vector<-cspace! - (-> self root-override trans) - (-> - (the-as process-drawable (-> self parent 0)) - node-list - data - (-> self index) + (while #t + (vector<-cspace! + (-> self root-override trans) + (-> (the-as process-drawable (-> self parent 0)) node-list data (-> self index)) + ) + (transform-post) + (suspend) ) - ) - (transform-post) - (suspend) + (none) ) - (none) - ) ) -(defbehavior - powercellalt-init-by-other powercellalt - ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 int)) +(defbehavior powercellalt-init-by-other powercellalt ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 int)) (set! (-> self entity) arg0) - (let - ((s3-0 - (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)) - ) + (let ((s3-0 (new 'process 'collide-shape-moving self (collide-list-enum hit-by-player)))) + (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s3-0 reaction) default-collision-reaction) + (set! (-> s3-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (collide-kind powerup)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) + (set-root-prim! s3-0 s2-0) + ) + (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) + (backup-collide-with-as s3-0) + (set! (-> self root-override) s3-0) ) - (set! (-> s3-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s3-0 reaction) default-collision-reaction) - (set! - (-> s3-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) - (set-root-prim! s3-0 s2-0) - ) - (set! (-> s3-0 nav-radius) (* 0.75 (-> s3-0 root-prim local-sphere w))) - (backup-collide-with-as s3-0) - (set! (-> self root-override) s3-0) - ) (set! (-> self root-override trans quad) (-> arg1 quad)) (set! (-> self jump-pos quad) (-> arg2 quad)) (set-vector! (-> self root-override scale) 0.5 0.5 0.5 1.0) (set! (-> self index) arg3) (initialize-skeleton self *powercellalt-sg* '()) - (set! - (-> self part) - (create-launch-control (-> *part-group-id-table* 63) self) - ) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 63) self)) enter-state (-> self root-override trans) (-> self jump-pos) @@ -511,186 +355,128 @@ (defstate target-final-door (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - ((-> target-grab event) arg0 arg1 arg2 arg3) - ) + ((-> target-grab event) arg0 arg1 arg2 arg3) + ) :enter (behavior ((arg0 basic) (arg1 handle)) - (send-event *camera* 'change-to-entity-by-name "camera-403") - (set! (-> self control unknown-surface00) *empty-mods*) - (logior! (-> self state-flags) 272) - (set-setting! *setting-control* self 'allow-progress #f 0.0 0) - (none) - ) + (send-event *camera* 'change-to-entity-by-name "camera-403") + (set! (-> self control unknown-surface00) *empty-mods*) + (logior! (-> self state-flags) 272) + (set-setting! *setting-control* self 'allow-progress #f 0.0 0) + (none) + ) :exit (behavior () - (send-event *camera* 'change-state *camera-base-mode* 60) - (set! (-> self state-flags) (logand -273 (-> self state-flags))) - (target-exit) - (clear-pending-settings-from-process *setting-control* self 'allow-progress) - (none) - ) + (send-event *camera* 'change-state *camera-base-mode* 60) + (set! (-> self state-flags) (logand -273 (-> self state-flags))) + (target-exit) + (clear-pending-settings-from-process *setting-control* self 'allow-progress) + (none) + ) :trans (behavior () - (set-letterbox-frames 5) - (none) - ) + (set-letterbox-frames 5) + (none) + ) :code (behavior ((arg0 basic) (arg1 handle)) - (local-vars - (sv-144 process) - (sv-160 vector) - (sv-176 process) - (sv-192 vector) - ) - (let ((a0-2 (get-task-control (game-task finalboss-movies)))) - (save-reminder a0-2 (logior (get-reminder a0-2 0) 2) 0) - ) - (TODO-RENAME-30 - (-> self control) - (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0) - ) - (set-quaternion! - (-> self control) - (the-as quaternion (new 'static 'vector :y -0.8472 :w 0.5312)) - ) - (rot->dir-targ! (-> self control)) - (transform-post) - (ja-channel-push! 1 60) - (let ((s4-1 (-> self skel root-channel 0))) - (set! - (-> s4-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 88)) - ) - (set! (-> s4-1 param 0) (ja-aframe 18.0 0)) - (set! (-> s4-1 param 1) 1.0) - (set! (-> s4-1 frame-num) 0.0) - (joint-control-channel-group! - s4-1 - (the-as art-joint-anim (-> self draw art-group data 88)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((s4-2 (-> self skel root-channel 0))) - (set! (-> s4-2 param 0) (ja-aframe 18.0 0)) - (set! (-> s4-2 param 1) 1.0) - (joint-control-channel-group-eval! - s4-2 - (the-as art-joint-anim #f) - num-func-seek! + (local-vars (sv-144 process) (sv-160 vector) (sv-176 process) (sv-192 vector)) + (let ((a0-2 (get-task-control (game-task finalboss-movies)))) + (save-reminder a0-2 (logior (get-reminder a0-2 0) 2) 0) ) - ) - ) - (let ((s4-3 (-> (handle->process (the-as handle arg0)) entity)) - (s3-1 - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> self node-list data 7) - ) + (TODO-RENAME-30 (-> self control) (new 'static 'vector :x 11368946.0 :y 2215900.2 :z -19405602.0 :w 1.0)) + (set-quaternion! (-> self control) (the-as quaternion (new 'static 'vector :y -0.8472 :w 0.5312))) + (rot->dir-targ! (-> self control)) + (transform-post) + (ja-channel-push! 1 60) + (let ((s4-1 (-> self skel root-channel 0))) + (set! (-> s4-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 88))) + (set! (-> s4-1 param 0) (ja-aframe 18.0 0)) + (set! (-> s4-1 param 1) 1.0) + (set! (-> s4-1 frame-num) 0.0) + (joint-control-channel-group! s4-1 (the-as art-joint-anim (-> self draw art-group data 88)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((s4-2 (-> self skel root-channel 0))) + (set! (-> s4-2 param 0) (ja-aframe 18.0 0)) + (set! (-> s4-2 param 1) 1.0) + (joint-control-channel-group-eval! s4-2 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (let ((s4-3 (-> (handle->process (the-as handle arg0)) entity)) + (s3-1 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self node-list data 7))) ) - ) - (dotimes (s2-0 50) - (when (handle->process (the-as handle arg0)) - (let ((s1-0 (handle->process (the-as handle arg0))) - (s0-0 (+ s2-0 4)) + (dotimes (s2-0 50) + (when (handle->process (the-as handle arg0)) + (let ((s1-0 (handle->process (the-as handle arg0))) + (s0-0 (+ s2-0 4)) + ) + (set! sv-160 + (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s1-0) node-list data s0-0)) + ) + (set! sv-144 (get-process *default-dead-pool* powercellalt #x4000)) + (when sv-144 + (let ((t9-16 (method-of-type powercellalt activate))) + (t9-16 (the-as powercellalt sv-144) s1-0 'powercellalt (the-as pointer #x70004000)) + ) + (run-now-in-process sv-144 powercellalt-init-by-other s4-3 s3-1 sv-160 s0-0) + (-> sv-144 ppointer) + ) ) - (set! - sv-160 - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable s1-0) node-list data s0-0) - ) - ) - (set! sv-144 (get-process *default-dead-pool* powercellalt #x4000)) - (when sv-144 - (let ((t9-16 (method-of-type powercellalt activate))) - (t9-16 - (the-as powercellalt sv-144) - s1-0 - 'powercellalt - (the-as pointer #x70004000) ) - ) - (run-now-in-process - sv-144 - powercellalt-init-by-other - s4-3 - s3-1 - sv-160 - s0-0 - ) - (-> sv-144 ppointer) - ) - ) - ) - (let ((s1-1 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) s1-1) 30) - (suspend) - ) - ) - (when (handle->process arg1) - (let ((s1-2 (handle->process arg1)) - (s0-1 (+ s2-0 4)) + (let ((s1-1 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s1-1) 30) + (suspend) + ) + ) + (when (handle->process arg1) + (let ((s1-2 (handle->process arg1)) + (s0-1 (+ s2-0 4)) + ) + (set! sv-192 + (vector<-cspace! (new 'stack-no-clear 'vector) (-> (the-as process-drawable s1-2) node-list data s0-1)) + ) + (set! sv-176 (get-process *default-dead-pool* powercellalt #x4000)) + (when sv-176 + (let ((t9-20 (method-of-type powercellalt activate))) + (t9-20 (the-as powercellalt sv-176) s1-2 'powercellalt (the-as pointer #x70004000)) + ) + (run-now-in-process sv-176 powercellalt-init-by-other s4-3 s3-1 sv-192 s0-1) + (-> sv-176 ppointer) + ) + ) + ) + (let ((s1-3 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s1-3) 30) + (suspend) ) - (set! - sv-192 - (vector<-cspace! - (new 'stack-no-clear 'vector) - (-> (the-as process-drawable s1-2) node-list data s0-1) - ) - ) - (set! sv-176 (get-process *default-dead-pool* powercellalt #x4000)) - (when sv-176 - (let ((t9-20 (method-of-type powercellalt activate))) - (t9-20 - (the-as powercellalt sv-176) - s1-2 - 'powercellalt - (the-as pointer #x70004000) ) - ) - (run-now-in-process - sv-176 - powercellalt-init-by-other - s4-3 - s3-1 - sv-192 - s0-1 - ) - (-> sv-176 ppointer) ) - ) ) - (let ((s1-3 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) s1-3) 30) - (suspend) - ) + (let ((gp-1 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-1) 600) + (suspend) + ) ) - ) - ) - (let ((gp-1 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-1) 600) - (suspend) - ) - ) - (let ((v0-22 (entity-by-name "sage-finalboss-1")) - (a1-26 (new 'stack-no-clear 'event-message-block)) - ) - (set! (-> a1-26 from) self) - (set! (-> a1-26 num-params) 0) - (set! (-> a1-26 message) 'play-anim) - (let ((v1-70 v0-22)) - (send-event-function (if v1-70 - (-> v1-70 extra process) - ) - a1-26 + (let ((v0-22 (entity-by-name "sage-finalboss-1")) + (a1-26 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-26 from) self) + (set! (-> a1-26 num-params) 0) + (set! (-> a1-26 message) 'play-anim) + (let ((v1-70 v0-22)) + (send-event-function + (if v1-70 + (-> v1-70 extra process) + ) + a1-26 + ) + ) ) - ) + (go target-stance) + (none) ) - (go target-stance) - (none) - ) :post target-no-stick-post ) diff --git a/goal_src/levels/finalboss/green-eco-lurker.gc b/goal_src/levels/finalboss/green-eco-lurker.gc index a833a72a40..f6a5e48a90 100644 --- a/goal_src/levels/finalboss/green-eco-lurker.gc +++ b/goal_src/levels/finalboss/green-eco-lurker.gc @@ -428,9 +428,15 @@ (defstate green-eco-lurker-tune-spheres (green-eco-lurker) :trans - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :code - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :post (the-as (function none :behavior green-eco-lurker) transform-post) ) @@ -541,10 +547,9 @@ (go green-eco-lurker-appear-land) ) ) - (when (and - (not (-> self played-sound?)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self sound-delay)) - ) + (when (and (not (-> self played-sound?)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self sound-delay)) + ) (set! (-> self played-sound?) #t) (sound-play-by-name (static-sound-name "blob-jump") @@ -701,8 +706,8 @@ (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 8) ) (let ((a0-5 (-> self skel root-channel 0))) @@ -844,64 +849,64 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 7) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 -4096.0 20480.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core action) (collide-action solid)) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s4-0 s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core offense) 2) + (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-4 collide-with) (collide-kind target)) + (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) (append-prim s4-0 s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core offense) 2) + (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-5 collide-with) (collide-kind target)) + (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 12) (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) (append-prim s4-0 s3-5) ) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-6 collide-with) (the-as uint 16)) - (set! (-> s3-6 prim-core offense) 2) + (set! (-> s3-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-6 collide-with) (collide-kind target)) + (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 16) (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) (append-prim s4-0 s3-6) diff --git a/goal_src/levels/finalboss/light-eco.gc b/goal_src/levels/finalboss/light-eco.gc index 735f2aec66..33d59096c0 100644 --- a/goal_src/levels/finalboss/light-eco.gc +++ b/goal_src/levels/finalboss/light-eco.gc @@ -487,7 +487,10 @@ :event light-eco-child-default-event-handler :enter - (behavior () (set! (-> self falling-start-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self falling-start-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (let ((f30-0 @@ -521,7 +524,10 @@ :event light-eco-child-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (let ((f30-0 (+ (-> self root-override transv y) (* -544768.0 (-> *display* seconds-per-frame))))) @@ -575,7 +581,10 @@ :event light-eco-child-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 1200) @@ -615,7 +624,11 @@ (defstate light-eco-child-grabbed (light-eco-child) :code - (behavior () (suspend) 0 (none)) + (behavior () + (suspend) + 0 + (none) + ) ) (defbehavior light-eco-child-init-by-other light-eco-child ((arg0 entity) (arg1 vector) (arg2 vector) (arg3 int)) @@ -639,9 +652,9 @@ ) (let ((s4-2 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 0) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) (set-root-prim! s4-2 s3-0) ) @@ -790,7 +803,11 @@ :event light-eco-mother-default-event-handler :trans - (behavior () (common-trans self) (spawn (-> self part2) (-> self root trans)) (none)) + (behavior () + (common-trans self) + (spawn (-> self part2) (-> self root trans)) + (none) + ) :code (behavior () (while (!= (-> self root scale x) 12.0) @@ -814,7 +831,12 @@ :event light-eco-mother-default-event-handler :trans - (behavior () (common-trans self) (spawn (-> self part) (-> self root trans)) 0 (none)) + (behavior () + (common-trans self) + (spawn (-> self part) (-> self root trans)) + 0 + (none) + ) :code (behavior () (while #t @@ -834,7 +856,10 @@ :event light-eco-mother-default-event-handler :trans - (behavior () (common-trans self) (none)) + (behavior () + (common-trans self) + (none) + ) :code (behavior () (while (!= (-> self root scale x) 0.0) diff --git a/goal_src/levels/finalboss/robotboss-misc.gc b/goal_src/levels/finalboss/robotboss-misc.gc index 97fe83136e..3775638e77 100644 --- a/goal_src/levels/finalboss/robotboss-misc.gc +++ b/goal_src/levels/finalboss/robotboss-misc.gc @@ -280,12 +280,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -453,44 +453,44 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 19)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 19)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 19)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 19)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 6) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-3) diff --git a/goal_src/levels/finalboss/robotboss-weapon.gc b/goal_src/levels/finalboss/robotboss-weapon.gc index 49a3a22371..7fcf1b9f77 100644 --- a/goal_src/levels/finalboss/robotboss-weapon.gc +++ b/goal_src/levels/finalboss/robotboss-weapon.gc @@ -40,14 +40,15 @@ (defmethod dummy-11 torus ((obj torus) (arg0 vector)) (let ((s4-0 (the-as collide-shape-prim-group (-> *target* control root-prim)))) - (when (and (logtest? (-> s4-0 prim-core collide-as) 16) (TODO-RENAME-10 obj (-> s4-0 prim-core) arg0)) + (when (and (logtest? (-> s4-0 prim-core collide-as) (collide-kind target)) + (TODO-RENAME-10 obj (-> s4-0 prim-core) arg0) + ) (countdown (s3-0 (-> s4-0 num-prims)) (let ((v1-9 (-> s4-0 prims s3-0))) - (if (and - (logtest? (-> v1-9 prim-core action) 1) - (logtest? (-> v1-9 prim-core collide-as) 16) - (TODO-RENAME-10 obj (-> v1-9 prim-core) arg0) - ) + (if (and (logtest? (-> v1-9 prim-core action) (collide-action solid)) + (logtest? (-> v1-9 prim-core collide-as) (collide-kind target)) + (TODO-RENAME-10 obj (-> v1-9 prim-core) arg0) + ) (return #t) ) ) @@ -209,7 +210,11 @@ (defstate arcing-shot-debug-trajectory (arcing-shot) :trans - (behavior () (arcing-shot-setup (camera-pos) (-> self entity extra trans) 40960.0) (arcing-shot-draw) (none)) + (behavior () + (arcing-shot-setup (camera-pos) (-> self entity extra trans) 40960.0) + (arcing-shot-draw) + (none) + ) :code (behavior () (while #t @@ -338,7 +343,10 @@ (none) ) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :trans (behavior () (darkecobomb-explode-if-player-high-enough) @@ -381,8 +389,8 @@ (go darkecobomb-explode #f) ) (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 5) ) (let ((gp-2 (new 'stack-no-clear 'vector))) @@ -442,7 +450,11 @@ :event darkecobomb-handler :enter - (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) 0 (none)) + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + 0 + (none) + ) :trans (behavior () (darkecobomb-explode-if-player-high-enough) @@ -489,7 +501,10 @@ (defstate darkecobomb-idle (darkecobomb) :enter - (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (none) + ) :trans (behavior () (arcing-shot-calculate @@ -553,10 +568,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s0-0 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0)))) - (set! (-> s0-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s0-0 collide-with) (the-as uint 16)) - (set! (-> s0-0 prim-core action) (the-as uint 1)) - (set! (-> s0-0 prim-core offense) 4) + (set! (-> s0-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s0-0 collide-with) (collide-kind target)) + (set! (-> s0-0 prim-core action) (collide-action solid)) + (set! (-> s0-0 prim-core offense) (collide-offense indestructible)) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s1-0 s0-0) @@ -613,7 +628,10 @@ (defstate greenshot-idle (greenshot) :enter - (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (none) + ) :trans (behavior () (arcing-shot-calculate @@ -635,12 +653,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -678,9 +696,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core offense) 4) + (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) (set-root-prim! s2-0 s1-0) ) @@ -875,7 +893,10 @@ :event redshot-handler :enter - (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (none) + ) :trans (behavior () (redshot-trans (- (-> self stall-time) (- (-> *display* game-frame-counter) (-> self state-time)))) @@ -900,7 +921,10 @@ :event redshot-handler :enter - (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (none) + ) :trans (behavior () (redshot-trans 1500) @@ -934,10 +958,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (set! sv-16 (new 'process 'collide-shape-prim-sphere s0-0 (the-as uint 0))) - (set! (-> sv-16 prim-core collide-as) (the-as uint 512)) - (set! (-> sv-16 collide-with) (the-as uint 16)) - (set! (-> sv-16 prim-core action) (the-as uint 1)) - (set! (-> sv-16 prim-core offense) 4) + (set! (-> sv-16 prim-core collide-as) (collide-kind wall-object)) + (set! (-> sv-16 collide-with) (collide-kind target)) + (set! (-> sv-16 prim-core action) (collide-action solid)) + (set! (-> sv-16 prim-core offense) (collide-offense indestructible)) (set! (-> sv-16 transform-index) 4) (set-vector! (-> sv-16 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s0-0 sv-16) @@ -1010,7 +1034,10 @@ ) ) :enter - (behavior () (set! (-> self state-time) (-> *display* game-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* game-frame-counter)) + (none) + ) :trans (behavior () (arcing-shot-calculate @@ -1043,10 +1070,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 4) + (set! (-> s1-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core action) (collide-action solid)) + (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s2-0 s1-0) ) diff --git a/goal_src/levels/finalboss/robotboss.gc b/goal_src/levels/finalboss/robotboss.gc index 27b2c024d1..fc76e21aae 100644 --- a/goal_src/levels/finalboss/robotboss.gc +++ b/goal_src/levels/finalboss/robotboss.gc @@ -50,25 +50,22 @@ (defbehavior robotboss-cut-cam robotboss ((arg0 float) (arg1 float) (arg2 int)) (let ((f0-0 (ja-aframe-num 0))) (cond - ((or - (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - arg2 - ) - ) - (< f0-0 arg0) - (< arg1 f0-0) - ) + ((or (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + arg2 + ) + ) + (< f0-0 arg0) + (< arg1 f0-0) + ) (robotboss-cut-cam-exit) ) - ((or - (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) + ((or (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + (-> self skip-cut) ) - (-> self skip-cut) - ) (set! (-> self skip-cut) #t) ) (else @@ -480,12 +477,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -527,12 +524,12 @@ ) ) (set! (-> a0-16 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -568,12 +565,12 @@ ) ) (set! (-> a0-25 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -609,12 +606,12 @@ ) ) (set! (-> a0-34 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -649,8 +646,8 @@ ) (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 30) ) ) @@ -665,12 +662,12 @@ ) ) (set! (-> a0-48 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -740,7 +737,10 @@ (none) ) :exit - (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :trans (behavior () (spool-push *art-control* "green-sagecage-daxter-sacrifice" 0 self (the-as float -1.0)) @@ -977,12 +977,12 @@ ) ) (set! (-> a0-4 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1006,8 +1006,8 @@ ) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 30) ) ) @@ -1023,12 +1023,12 @@ ) ) (set! (-> a0-15 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1098,18 +1098,17 @@ ) (defbehavior robotboss-is-yellow-hit robotboss () - (or - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 28) - ) - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 35) - ) - ) + (or (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 28) + ) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 35) + ) + ) ) (defbehavior robotboss-time-to-shoot-yellow robotboss () @@ -1236,10 +1235,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 3 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 3 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self use-interesting) #f) (send-event *camera* 'point-of-interest #f) @@ -1304,13 +1303,13 @@ ) ((and (> (-> self hits-to-go) 0) (-> self took-hit)) (if (not - ((method-of-type ambient-control play-ambient) - (the-as ambient-control (&-> self ambient)) - "GOL-AM17" - #t - (the-as vector #f) - ) - ) + ((method-of-type ambient-control play-ambient) + (the-as ambient-control (&-> self ambient)) + "GOL-AM17" + #t + (the-as vector #f) + ) + ) ((method-of-type ambient-control play-ambient) (the-as ambient-control (&-> self ambient)) "MAI-AM06" @@ -1327,10 +1326,9 @@ ) (robotboss-position) (robotboss-cut-cam (the-as float 5.0) (the-as float 50.0) (the-as int (-> self draw art-group data 29))) - (when (and - (-> self keep-charging) - (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - ) + (when (and (-> self keep-charging) + (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) + ) (let ((gp-2 (new 'stack-no-clear 'vector))) (update! (-> self looping-sound 3)) (vector<-cspace! gp-2 (-> self node-list data 21)) @@ -1357,8 +1355,8 @@ (while #t (when (not (robotboss-time-to-shoot-yellow)) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 26) ) ) @@ -1373,18 +1371,17 @@ (set! (-> v1-30 frame-num) 15.0) ) ) - (while (not (or - (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 35) - ) - ) + (while (not (or (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 35) + ) + ) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 26) ) ) @@ -1399,12 +1396,12 @@ ) ) (set! (-> a0-24 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1434,8 +1431,8 @@ (label cfg-36) (when (not (robotboss-is-yellow-hit)) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 26) ) ) @@ -1450,12 +1447,12 @@ ) ) (set! (-> a0-41 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1487,21 +1484,20 @@ ) ) (label cfg-55) - (when (and - (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 35) + (when (and (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 35) + ) ) - ) - (or (robotboss-time-to-shoot-yellow) (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 28) + (or (robotboss-time-to-shoot-yellow) (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 28) + ) ) - ) - ) - ) + ) + ) (set! (-> self state-time) (-> *display* game-frame-counter)) (let* ((f30-1 (-> self dda yellow-shot-time-min)) (f28-0 (-> self dda yellow-shot-time-rnd)) @@ -1581,12 +1577,12 @@ ) ) (set! (-> a0-70 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1610,8 +1606,8 @@ ) ) (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 35) ) (let ((a0-77 (-> self skel root-channel 0))) @@ -1691,12 +1687,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1723,8 +1719,8 @@ (cond ((and *target* (< (+ 81920.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 23) ) ) @@ -1735,8 +1731,8 @@ ) ) ((not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 21) ) ) @@ -1752,12 +1748,12 @@ ) ) (set! (-> a0-27 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1806,10 +1802,9 @@ :trans (behavior () (robotboss-always-trans robotboss-yellow) - (if (and - (< (-> self children-spawned) 0) - (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) - ) + (if (and (< (-> self children-spawned) 0) + (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) + ) (go robotboss-yellow) ) (robotboss-position) @@ -1836,12 +1831,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1870,8 +1865,8 @@ ) (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 21) ) ) @@ -1886,12 +1881,12 @@ ) ) (set! (-> a0-19 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1953,12 +1948,12 @@ ) ) (set! (-> a0-4 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1982,8 +1977,8 @@ ) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 21) ) ) @@ -1999,12 +1994,12 @@ ) ) (set! (-> a0-15 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2183,18 +2178,17 @@ ) (defbehavior robotboss-is-red-hit robotboss () - (or - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 19) - ) - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 34) - ) - ) + (or (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 19) + ) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 34) + ) + ) ) (defstate robotboss-red-wait (robotboss) @@ -2318,10 +2312,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 5 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 5 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self use-interesting) #f) (set! (-> self des-cam-entity) #f) @@ -2403,13 +2397,13 @@ ) ((and (> (-> self hits-to-go) 0) (-> self took-hit)) (if (not - ((method-of-type ambient-control play-ambient) - (the-as ambient-control (&-> self ambient)) - "GOL-AM17" - #t - (the-as vector #f) - ) - ) + ((method-of-type ambient-control play-ambient) + (the-as ambient-control (&-> self ambient)) + "GOL-AM17" + #t + (the-as vector #f) + ) + ) ((method-of-type ambient-control play-ambient) (the-as ambient-control (&-> self ambient)) "MAI-AM06" @@ -2440,14 +2434,13 @@ ) (robotboss-setup-for-hits 1 5) (while #t - (until (or - (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 34) - ) - ) + (until (or (>= (- (-> *display* game-frame-counter) (-> self state-time)) (-> self till-next-shot)) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 34) + ) + ) (ja-channel-push! 1 60) (let ((v1-11 (-> self skel root-channel 0))) (set! (-> v1-11 frame-group) (the-as art-joint-anim (-> self draw art-group data 16))) @@ -2458,12 +2451,12 @@ ) ) (set! (-> a0-7 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2480,10 +2473,10 @@ ) (until (ja-done? 0) (if (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 34) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 34) + ) (goto cfg-24) ) (suspend) @@ -2516,12 +2509,12 @@ ) ) (set! (-> a0-27 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2556,8 +2549,8 @@ (stop! (-> self looping-sound 2)) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 34) ) ) @@ -2645,12 +2638,12 @@ ) ) (set! (-> a0-56 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2674,8 +2667,8 @@ ) ) (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 34) ) (let ((a0-63 (-> self skel root-channel 0))) @@ -2748,12 +2741,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2778,8 +2771,8 @@ ) (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -2794,12 +2787,12 @@ ) ) (set! (-> a0-17 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2833,16 +2826,23 @@ :event robotboss-bomb-handler :enter - (behavior () (set! (-> self children-spawned) 0) 0 (none)) + (behavior () + (set! (-> self children-spawned) 0) + 0 + (none) + ) :exit - (behavior () (set! (-> self ignore-camera) #f) (set! (-> self des-cam-entity) #f) (none)) + (behavior () + (set! (-> self ignore-camera) #f) + (set! (-> self des-cam-entity) #f) + (none) + ) :trans (behavior () (robotboss-always-trans robotboss-red) - (if (and - (< (-> self children-spawned) 0) - (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) - ) + (if (and (< (-> self children-spawned) 0) + (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) + ) (go robotboss-red) ) (robotboss-position) @@ -2869,12 +2869,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2909,8 +2909,8 @@ ) (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -2925,12 +2925,12 @@ ) ) (set! (-> a0-20 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2998,12 +2998,12 @@ ) ) (set! (-> a0-4 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3027,8 +3027,8 @@ ) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -3044,12 +3044,12 @@ ) ) (set! (-> a0-15 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3276,10 +3276,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 9 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 9 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self des-cam-entity) #f) (robotboss-yellow-eco-off) @@ -3389,15 +3389,15 @@ (while #t (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 13) ) (go robotboss-green-dark-bomb) ) ((not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -3413,12 +3413,12 @@ ) ) (set! (-> a0-14 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3498,12 +3498,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3528,8 +3528,8 @@ ) (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -3544,12 +3544,12 @@ ) ) (set! (-> a0-17 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3583,16 +3583,23 @@ :event robotboss-bomb-handler :enter - (behavior () (set! (-> self children-spawned) 0) 0 (none)) + (behavior () + (set! (-> self children-spawned) 0) + 0 + (none) + ) :exit - (behavior () (set! (-> self ignore-camera) #f) (set! (-> self des-cam-entity) #f) (none)) + (behavior () + (set! (-> self ignore-camera) #f) + (set! (-> self des-cam-entity) #f) + (none) + ) :trans (behavior () (robotboss-always-trans robotboss-green) - (if (and - (< (-> self children-spawned) 0) - (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) - ) + (if (and (< (-> self children-spawned) 0) + (or (not *target*) (!= (-> *target* control unknown-surface00 name) 'launch-jump)) + ) (go robotboss-green) ) (robotboss-position) @@ -3619,12 +3626,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3661,8 +3668,8 @@ (cond ((and *target* (< (+ 81920.0 (-> self entity extra trans y)) (-> (target-pos 0) y))) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 7) ) ) @@ -3673,8 +3680,8 @@ ) ) ((not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -3690,12 +3697,12 @@ ) ) (set! (-> a0-30 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3757,12 +3764,12 @@ ) ) (set! (-> a0-4 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3786,8 +3793,8 @@ ) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -3803,12 +3810,12 @@ ) ) (set! (-> a0-15 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -3858,14 +3865,13 @@ ) ) (cond - ((and - (>= (- (-> *display* game-frame-counter) (-> self state-time)) 120) - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 3) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) 120) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 3) + ) ) - ) (spawn (-> self particle 0) s4-0) (when (and arg1 (nonzero? (-> self looping-sound 0))) (update! (-> self looping-sound 0)) @@ -3897,23 +3903,21 @@ ) ) (cond - ((and - (>= (- (-> *display* game-frame-counter) (-> self state-time)) 420) - (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) + ((and (>= (- (-> *display* game-frame-counter) (-> self state-time)) 420) + (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) ) - ) - ) + ) (spawn (-> self particle 1) gp-0) (when (and arg1 (nonzero? (-> self looping-sound 1))) (update! (-> self looping-sound 1)) - (when (and - *target* - (zero? (logand (-> *target* state-flags) #x80f8)) - (>= 8192.0 (vector-vector-distance gp-0 (target-pos 0))) - ) + (when (and *target* + (zero? (logand (-> *target* state-flags) #x80f8)) + (>= 8192.0 (vector-vector-distance gp-0 (target-pos 0))) + ) (let ((a1-16 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-16 from) self) (set! (-> a1-16 num-params) 2) @@ -4093,10 +4097,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self use-interesting) #f) (send-event *camera* 'point-of-interest #f) @@ -4163,13 +4167,13 @@ ) ((-> self took-hit) (if (not - ((method-of-type ambient-control play-ambient) - (the-as ambient-control (&-> self ambient)) - "GOL-AM17" - #t - (the-as vector #f) - ) - ) + ((method-of-type ambient-control play-ambient) + (the-as ambient-control (&-> self ambient)) + "GOL-AM17" + #t + (the-as vector #f) + ) + ) ((method-of-type ambient-control play-ambient) (the-as ambient-control (&-> self ambient)) "MAI-AM06" @@ -4184,18 +4188,17 @@ ) ) ) - (when (not (or - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) - ) - (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 33) - ) - ) + (when (not (or (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 33) + ) + ) ) ) (robotboss-blue-beam 8 #t) @@ -4281,8 +4284,8 @@ ) (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 3) ) ) @@ -4297,12 +4300,12 @@ ) ) (set! (-> a0-12 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -4352,12 +4355,12 @@ ) ) (set! (-> a0-20 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -4398,179 +4401,179 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 19) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 368640.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 4)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 7) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 57344.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 -57344.0 61440.0 73728.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 8)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 16) (set-vector! (-> s2-3 local-sphere) 0.0 -20480.0 69632.0 237568.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 14) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 81920.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 5) (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 1)) - (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid)) + (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 39) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 69632.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 6) (the-as uint 0)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 1)) - (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid)) + (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 31) (set-vector! (-> s2-6 local-sphere) 0.0 -57344.0 0.0 90112.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 7) (the-as uint 0)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 1)) - (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid)) + (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 30) (set-vector! (-> s2-7 local-sphere) 0.0 24576.0 0.0 81920.0) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 8) (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 1)) - (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid)) + (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 57) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 81920.0) (append-prim s3-0 s2-8) ) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 9) (the-as uint 2)))) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 1)) - (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-9 collide-with) (collide-kind target)) + (set! (-> s2-9 prim-core action) (collide-action solid)) + (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 68) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 49152.0) (append-prim s3-0 s2-9) ) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 10) (the-as uint 0)))) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 1)) - (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-10 collide-with) (collide-kind target)) + (set! (-> s2-10 prim-core action) (collide-action solid)) + (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 4) (set-vector! (-> s2-10 local-sphere) 0.0 24576.0 0.0 102400.0) (append-prim s3-0 s2-10) ) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 11) (the-as uint 0)))) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 1)) - (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-11 collide-with) (collide-kind target)) + (set! (-> s2-11 prim-core action) (collide-action solid)) + (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 77) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 73728.0) (append-prim s3-0 s2-11) ) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 12) (the-as uint 0)))) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 1)) - (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-12 collide-with) (collide-kind target)) + (set! (-> s2-12 prim-core action) (collide-action solid)) + (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 75) (set-vector! (-> s2-12 local-sphere) 0.0 24576.0 0.0 81920.0) (append-prim s3-0 s2-12) ) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 13) (the-as uint 0)))) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 1)) - (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-13 collide-with) (collide-kind target)) + (set! (-> s2-13 prim-core action) (collide-action solid)) + (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 74) (set-vector! (-> s2-13 local-sphere) 0.0 40960.0 0.0 73728.0) (append-prim s3-0 s2-13) ) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 14) (the-as uint 0)))) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 1)) - (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-14 collide-with) (collide-kind target)) + (set! (-> s2-14 prim-core action) (collide-action solid)) + (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 73) (set-vector! (-> s2-14 local-sphere) 0.0 32768.0 0.0 61440.0) (append-prim s3-0 s2-14) ) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 15) (the-as uint 0)))) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 1)) - (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-15 collide-with) (collide-kind target)) + (set! (-> s2-15 prim-core action) (collide-action solid)) + (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 84) (set-vector! (-> s2-15 local-sphere) 0.0 40960.0 -8192.0 98304.0) (append-prim s3-0 s2-15) ) (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 16) (the-as uint 0)))) - (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-16 collide-with) (the-as uint 16)) - (set! (-> s2-16 prim-core action) (the-as uint 1)) - (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-16 collide-with) (collide-kind target)) + (set! (-> s2-16 prim-core action) (collide-action solid)) + (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 83) (set-vector! (-> s2-16 local-sphere) 0.0 65536.0 0.0 73728.0) (append-prim s3-0 s2-16) ) (let ((s2-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 17) (the-as uint 0)))) - (set! (-> s2-17 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-17 collide-with) (the-as uint 16)) - (set! (-> s2-17 prim-core action) (the-as uint 1)) - (set! (-> s2-17 prim-core offense) 4) + (set! (-> s2-17 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-17 collide-with) (collide-kind target)) + (set! (-> s2-17 prim-core action) (collide-action solid)) + (set! (-> s2-17 prim-core offense) (collide-offense indestructible)) (set! (-> s2-17 transform-index) 82) (set-vector! (-> s2-17 local-sphere) 0.0 32768.0 0.0 61440.0) (append-prim s3-0 s2-17) ) (let ((s2-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 18) (the-as uint 0)))) - (set! (-> s2-18 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-18 collide-with) (the-as uint 16)) - (set! (-> s2-18 prim-core action) (the-as uint 1)) - (set! (-> s2-18 prim-core offense) 4) + (set! (-> s2-18 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-18 collide-with) (collide-kind target)) + (set! (-> s2-18 prim-core action) (collide-action solid)) + (set! (-> s2-18 prim-core offense) (collide-offense indestructible)) (set! (-> s2-18 transform-index) 3) (set-vector! (-> s2-18 local-sphere) 0.0 0.0 0.0 61440.0) (append-prim s3-0 s2-18) diff --git a/goal_src/levels/firecanyon/firecanyon-obs.gc b/goal_src/levels/firecanyon/firecanyon-obs.gc index 007685f5b3..e4517fb6ac 100644 --- a/goal_src/levels/firecanyon/firecanyon-obs.gc +++ b/goal_src/levels/firecanyon/firecanyon-obs.gc @@ -163,12 +163,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -201,9 +201,9 @@ (defmethod init-from-entity! balloon ((obj balloon) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) ) @@ -261,18 +261,18 @@ (while (< s5-0 (+ (-> self num-alts) -1)) (let ((v1-2 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) (if (and v1-2 (-> v1-2 extra process) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'go-spike-up) - (not (send-event-function - (if v1-2 - (-> v1-2 extra process) - ) - a1-1 - ) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go-spike-up) + (not (send-event-function + (if v1-2 + (-> v1-2 extra process) + ) + a1-1 ) - ) - ) + ) + ) + ) (set! gp-0 #f) ) ) @@ -294,12 +294,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -350,18 +350,18 @@ (while (< s5-0 (/ (-> self num-alts) 2)) (let ((v1-1 (entity-actor-lookup (-> self entity) 'alt-actor s5-0))) (if (and v1-1 (-> v1-1 extra process) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 0) - (set! (-> a1-1 message) 'go-spike-up) - (not (send-event-function - (if v1-1 - (-> v1-1 extra process) - ) - a1-1 - ) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 0) + (set! (-> a1-1 message) 'go-spike-up) + (not (send-event-function + (if v1-1 + (-> v1-1 extra process) + ) + a1-1 ) - ) - ) + ) + ) + ) (set! gp-0 #f) ) ) @@ -388,17 +388,16 @@ (defstate spike-idle (spike) :trans (behavior () - (when (and - *target* - (let ((a1-0 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-0 from) self) - (set! (-> a1-0 num-params) 1) - (set! (-> a1-0 message) 'query) - (set! (-> a1-0 param 0) (the-as uint 'mode)) - (= (send-event-function *target* a1-0) 'racer) - ) - (< (vector-vector-distance (-> self root-override trans) (target-pos 0)) 225280.0) - ) + (when (and *target* + (let ((a1-0 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-0 from) self) + (set! (-> a1-0 num-params) 1) + (set! (-> a1-0 message) 'query) + (set! (-> a1-0 param 0) (the-as uint 'mode)) + (= (send-event-function *target* a1-0) 'racer) + ) + (< (vector-vector-distance (-> self root-override trans) (target-pos 0)) 225280.0) + ) (sound-play-by-name (static-sound-name "magma-rock") (new-sound-id) 1024 0 0 1 #t) (let ((v1-8 (entity-actor-count (-> self entity) 'alt-actor))) 0 @@ -434,45 +433,45 @@ (defmethod init-from-entity! spike ((obj spike) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) (append-prim s3-0 s2-3) @@ -783,16 +782,22 @@ ) ) :code - (behavior () (transform-post) (logior! (-> self mask) (process-mask sleep)) (suspend) 0 (none)) + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) ) (defmethod init-from-entity! crate-darkeco-cluster ((obj crate-darkeco-cluster) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/flut_common/flutflut.gc b/goal_src/levels/flut_common/flutflut.gc index b125294b4c..b0cef02d01 100644 --- a/goal_src/levels/flut_common/flutflut.gc +++ b/goal_src/levels/flut_common/flutflut.gc @@ -8,8 +8,8 @@ ;; DECOMP BEGINS (if (not (nmember "flutp" *kernel-packages*)) - (set! *kernel-packages* (cons "flutp" *kernel-packages*)) - ) + (set! *kernel-packages* (cons "flutp" *kernel-packages*)) + ) (deftype flutflut (process-drawable) ((parent-override (pointer target) :offset 12) @@ -39,26 +39,24 @@ (defmethod relocate flutflut ((obj flutflut) (arg0 int)) (countdown (v1-0 2) - (if (-> obj path-data v1-0) - (&+! (-> obj path-data v1-0) arg0) + (if (-> obj path-data v1-0) + (&+! (-> obj path-data v1-0) arg0) + ) ) - ) (the-as flutflut ((method-of-type process-drawable relocate) obj arg0)) ) (define *flutflut-shadow-control* - (new 'static 'shadow-control - :settings - (new 'static 'shadow-settings - :center - (new 'static 'vector :w (the-as float #xa)) - :shadow-dir - (new 'static 'vector :y -1.0 :w 614400.0) - :bot-plane (new 'static 'plane :y 1.0 :w 81920.0) - :top-plane (new 'static 'plane :y 1.0 :w -2867.2) - ) - ) + (new 'static 'shadow-control :settings (new 'static 'shadow-settings + :center + (new 'static 'vector :w (the-as float #xa)) + :shadow-dir + (new 'static 'vector :y -1.0 :w 614400.0) + :bot-plane (new 'static 'plane :y 1.0 :w 81920.0) + :top-plane (new 'static 'plane :y 1.0 :w -2867.2) + ) + ) ) (defskelgroup *flutflut-sg* flut-saddle @@ -82,153 +80,105 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (let ((v1-0 arg2)) - (the-as object (cond - ((= v1-0 'trans) - (vector+! - (the-as vector (-> arg3 param 0)) - (-> self root-override trans) - (-> self extra-trans) - ) - ) - ((= v1-0 'notify) - (let ((v0-1 (the-as structure #t))) - (set! (-> self auto-get-off) (the-as symbol v0-1)) - v0-1 - ) - ) - ((or (= v1-0 'touch) (= v1-0 'attack)) - (set! - (-> self touch-time) - (the-as uint (-> *display* base-frame-counter)) - ) - #f - ) - ) - ) + (let ((v1-0 arg2)) + (the-as + object + (cond + ((= v1-0 'trans) + (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + ) + ((= v1-0 'notify) + (let ((v0-1 (the-as structure #t))) + (set! (-> self auto-get-off) (the-as symbol v0-1)) + v0-1 + ) + ) + ((or (= v1-0 'touch) (= v1-0 'attack)) + (set! (-> self touch-time) (the-as uint (-> *display* base-frame-counter))) + #f + ) + ) + ) + ) ) - ) :exit (behavior () - (set! (-> self root-override root-prim prim-core action) (the-as uint 0)) - (set! (-> self root-override root-prim prim-core offense) 0) - 0 - (none) - ) + (set! (-> self root-override root-prim prim-core action) (collide-action)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense no-offense)) + 0 + (none) + ) :code (behavior () - (while #t - (let ((v1-0 (-> self condition))) - (cond - ((or (zero? v1-0) (= v1-0 1)) - (if - (or - (and - (task-complete? *game-info* (game-task beach-flutflut)) - (or - (and - (zero? (-> self condition)) - (task-closed? - (game-task village2-levitator) - (task-status need-hint) - ) - ) - (and - (= (-> self condition) 1) - (task-closed? (game-task village3-button) (task-status need-hint)) - ) + (while #t + (let ((v1-0 (-> self condition))) + (cond + ((or (zero? v1-0) (= v1-0 1)) + (if (or (and (task-complete? *game-info* (game-task beach-flutflut)) + (or (and (zero? (-> self condition)) (task-closed? (game-task village2-levitator) (task-status need-hint))) + (and (= (-> self condition) 1) (task-closed? (game-task village3-button) (task-status need-hint))) + ) + ) + (and *cheat-mode* (cpad-hold? 0 l3)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + ) + (goto cfg-75) + ) ) - ) - (and - *cheat-mode* - (logtest? (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons l3)) - ) - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) - ) - ) - (goto cfg-75) - ) - ) - ((= v1-0 4) - (if - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) - ) - (goto cfg-75) - ) - ) - ((= v1-0 3) - (cond - ((and - (task-complete? *game-info* (-> self entity extra perm task)) - (not (handle->process (-> self cell))) - ) - (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) - (set! (-> self auto-get-off) #f) - (go-virtual pickup (method-of-object self idle)) - ) - (set! (-> self auto-get-off) #f) - (if (= (-> self condition) 3) - (goto cfg-75) - ) - (if - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) - (< - (- - (-> *display* base-frame-counter) - (the-as int (-> self touch-time)) - ) - 15 - ) + ((= v1-0 4) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + (goto cfg-75) + ) ) - (go-virtual pickup (method-of-object self idle)) - ) - ) - ((not (handle->process (-> self cell))) - (set! - (-> self cell) - (ppointer->handle - (birth-pickup-at-point - (vector+! - (new 'stack-no-clear 'vector) - (-> self root-override trans) - (new 'static 'vector :y 8192.0 :w 1.0) + ((= v1-0 3) + (cond + ((and (task-complete? *game-info* (-> self entity extra perm task)) (not (handle->process (-> self cell)))) + (when (and (-> self auto-get-off) (send-event *target* 'end-mode)) + (set! (-> self auto-get-off) #f) + (go-virtual pickup (method-of-object self idle)) + ) + (set! (-> self auto-get-off) #f) + (if (= (-> self condition) 3) + (goto cfg-75) + ) + (if (and *target* + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) + (< (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15) + ) + (go-virtual pickup (method-of-object self idle)) + ) + ) + ((not (handle->process (-> self cell))) + (set! (-> self cell) + (ppointer->handle + (birth-pickup-at-point + (vector+! (new 'stack-no-clear 'vector) (-> self root-override trans) (new 'static 'vector :y 8192.0 :w 1.0)) + (pickup-type fuel-cell) + (the float (-> self entity extra perm task)) + #f + self + (-> self fact) + ) + ) + ) + ) ) - (pickup-type fuel-cell) - (the float (-> self entity extra perm task)) - #f - self - (-> self fact) - ) ) + (else + (goto cfg-75) + ) ) - ) ) - ) - (else - (goto cfg-75) - ) + (flutflut-effect) + (suspend) ) - ) - (flutflut-effect) - (suspend) + (label cfg-75) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + (go-virtual wait-for-return) + (go-virtual idle) + ) + (none) ) - (label cfg-75) - (if - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) - ) - (go-virtual wait-for-return) - (go-virtual idle) - ) - (none) - ) ) (defstate idle (flutflut) @@ -237,124 +187,71 @@ (-> (method-of-type flutflut wait-for-start) event) :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (the-as curve-control (-> self path-target))) - (none) - ) + (blocking-plane-destroy) + (blocking-plane-spawn (the-as curve-control (-> self path-target))) + (none) + ) :exit (-> (method-of-type flutflut wait-for-start) exit) :code (behavior () - (ja-channel-set! 1) - (let ((v1-2 (-> self skel root-channel 0))) - (set! - (-> v1-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 3)) - ) - ) - (set! (-> self root-override root-prim prim-core action) (the-as uint 2049)) - (set! (-> self root-override root-prim prim-core offense) 4) - (while #t - (if - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) + (ja-channel-set! 1) + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) ) - (go-virtual wait-for-return) - ) - (when (logtest? (-> self draw status) 8) - (if - (and - *target* - (>= - 40960.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (level-hint-spawn - (game-text-id flutflut-reminder) - "sksp0160" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - ) - ) - (when - (and - (and - *target* - (>= - 20480.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) - ) - (not (movie?)) - (not (level-hint-displayed?)) - (!= (-> self condition) 4) - ) - (hide-hud) - (level-hint-surpress!) - (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when - (and (hud-hidden?) (can-grab-display? (the-as process-taskable self))) - (let - ((gp-0 - (new - 'stack - 'font-context - *font-default-matrix* - 32 - 160 - 0.0 - (font-color default) - (font-flags shadow kerning) + (set! (-> self root-override root-prim prim-core action) (collide-action solid ca-11)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) + (while #t + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + (go-virtual wait-for-return) ) - ) + (when (logtest? (-> self draw status) (draw-status drwf03)) + (if (and *target* (>= 40960.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (level-hint-spawn + (game-text-id flutflut-reminder) + "sksp0160" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) ) - (let ((v1-34 gp-0)) - (set! (-> v1-34 width) (the float 440)) + (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (not (movie?)) + (not (level-hint-displayed?)) + (!= (-> self condition) 4) + ) + (hide-hud) + (level-hint-surpress!) + (kill-current-level-hint '() '(sidekick voicebox) 'exit) + (when (and (hud-hidden?) (can-grab-display? (the-as process-taskable self))) + (let ((gp-0 + (new 'stack 'font-context *font-default-matrix* 32 160 0.0 (font-color default) (font-flags shadow kerning)) + ) + ) + (let ((v1-34 gp-0)) + (set! (-> v1-34 width) (the float 440)) + ) + (let ((v1-35 gp-0)) + (set! (-> v1-35 height) (the float 80)) + ) + (set! (-> gp-0 flags) (font-flags shadow kerning large)) + (print-game-text (lookup-text! *common-text* (game-text-id press-to-use) #f) gp-0 #f 128 22) + ) + (if (and (cpad-pressed? 0 circle) (send-event *target* 'change-mode 'flut self)) + (go-virtual pickup (method-of-object self wait-for-return)) + ) + ) ) - (let ((v1-35 gp-0)) - (set! (-> v1-35 height) (the float 80)) + (flutflut-effect) + (suspend) + (let ((a0-26 (-> self skel root-channel 0))) + (set! (-> a0-26 param 0) 1.0) + (joint-control-channel-group-eval! a0-26 (the-as art-joint-anim #f) num-func-loop!) ) - (set! (-> gp-0 flags) (font-flags shadow kerning large)) - (print-game-text - (lookup-text! *common-text* (game-text-id press-to-use) #f) - gp-0 - #f - 128 - 22 - ) - ) - (if - (and - (logtest? (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons circle)) - (send-event *target* 'change-mode 'flut self) - ) - (go-virtual pickup (method-of-object self wait-for-return)) - ) ) - ) - (flutflut-effect) - (suspend) - (let ((a0-26 (-> self skel root-channel 0))) - (set! (-> a0-26 param 0) 1.0) - (joint-control-channel-group-eval! - a0-26 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) + (none) ) - (none) - ) :post (the-as (function none :behavior flutflut) ja-post) ) @@ -363,219 +260,158 @@ :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('draw) - (ja-channel-set! 1) - (let ((v1-3 (-> self skel root-channel 0))) - (set! - (-> v1-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 3)) - ) + (case arg2 + (('draw) + (ja-channel-set! 1) + (let ((v1-3 (-> self skel root-channel 0))) + (set! (-> v1-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) + ) + (set! (-> self root-override root-prim prim-core action) (collide-action solid ca-11)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) + (transform-post) ) - (set! - (-> self root-override root-prim prim-core action) - (the-as uint 2049) + (('trans) + (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + ) + (('touch 'attack) + #f ) - (set! (-> self root-override root-prim prim-core offense) 4) - (transform-post) ) - (('trans) - (vector+! - (the-as vector (-> arg3 param 0)) - (-> self root-override trans) - (-> self extra-trans) - ) - ) - (('touch 'attack) - #f - ) ) - ) :enter (behavior ((arg0 (state flutflut))) - ((-> arg0 enter)) - (none) - ) + ((-> arg0 enter)) + (none) + ) :code (behavior ((arg0 (state flutflut))) - (ja-channel-set! 0) - (ja-post) - (while (zero? (ja-group-size)) - (if - (or - (not *target*) - (< - 24576.0 - (vector-vector-distance - (-> self root-override trans) - (-> *target* control trans) - ) - ) + (ja-channel-set! 0) + (ja-post) + (while (zero? (ja-group-size)) + (if (or (not *target*) + (< 24576.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (go arg0) + ) + (flutflut-effect) + (suspend) ) - (go arg0) - ) - (flutflut-effect) - (suspend) + (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + (flutflut-effect) + (suspend) + ) + (let ((s5-0 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s5-0) 300) + (flutflut-effect) + (suspend) + ) + ) + (go arg0) + (none) ) - (while - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) - ) - (flutflut-effect) - (suspend) - ) - (let ((s5-0 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) s5-0) 300) - (flutflut-effect) - (suspend) - ) - ) - (go arg0) - (none) - ) ) (defstate wait-for-return (flutflut) :virtual #t :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if - (and (or (= arg2 'touch) (= arg2 'attack)) (send-event *target* 'end-mode)) - (go-virtual pickup (method-of-object self idle)) + (if (and (or (= arg2 'touch) (= arg2 'attack)) (send-event *target* 'end-mode)) + (go-virtual pickup (method-of-object self idle)) + ) + (the-as + object + (if (= arg2 'trans) + (vector+! (the-as vector (-> arg3 param 0)) (-> self root-override trans) (-> self extra-trans)) + ) + ) ) - (the-as object (if (= arg2 'trans) - (vector+! - (the-as vector (-> arg3 param 0)) - (-> self root-override trans) - (-> self extra-trans) - ) - ) - ) - ) :enter (behavior () - (blocking-plane-destroy) - (blocking-plane-spawn (the-as curve-control (-> self path-flut))) - (none) - ) + (blocking-plane-destroy) + (blocking-plane-spawn (the-as curve-control (-> self path-flut))) + (none) + ) :code (behavior () - (ja-channel-set! 0) - (ja-post) - (while #t - (if - (not - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) - ) + (ja-channel-set! 0) + (ja-post) + (while #t + (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)))) + (go-virtual idle) + ) + (flutflut-effect) + (suspend) ) - (go-virtual idle) - ) - (flutflut-effect) - (suspend) + (none) ) - (none) - ) ) (defmethod init-from-entity! flutflut ((obj flutflut) (arg0 entity-actor)) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0) + (set-root-prim! s4-0 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0) - (set-root-prim! s4-0 s3-0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) - (set-yaw-angle-clear-roll-pitch! - (-> obj root-override) - (res-lump-float arg0 'rotoffset) - ) + (set-yaw-angle-clear-roll-pitch! (-> obj root-override) (res-lump-float arg0 'rotoffset)) (initialize-skeleton obj *flutflut-sg* '()) (logior! (-> obj skel status) 256) (set! (-> obj draw shadow-ctrl) *flutflut-shadow-control*) (let ((v1-24 (-> obj node-list data))) - (set! (-> v1-24 0 param0) cspace<-transformq+trans!) - (set! (-> v1-24 0 param1) (the-as basic (-> obj root-override trans))) - (set! (-> v1-24 0 param2) (the-as basic (-> obj extra-trans))) - ) + (set! (-> v1-24 0 param0) cspace<-transformq+trans!) + (set! (-> v1-24 0 param1) (the-as basic (-> obj root-override trans))) + (set! (-> v1-24 0 param2) (the-as basic (-> obj extra-trans))) + ) (dotimes (s4-2 2) - (let ((v1-27 (new 'process 'curve-control obj 'path (the float (+ s4-2 1))))) - (set! (-> obj path-data s4-2) v1-27) - (if v1-27 - (logior! - (-> v1-27 flags) - (path-control-flag display draw-line draw-point draw-text) + (let ((v1-27 (new 'process 'curve-control obj 'path (the float (+ s4-2 1))))) + (set! (-> obj path-data s4-2) v1-27) + (if v1-27 + (logior! (-> v1-27 flags) (path-control-flag display draw-line draw-point draw-text)) + ) ) - ) ) - ) (set! (-> obj condition) (res-lump-value arg0 'index int)) - (set! - (-> obj fact) - (new - 'process - 'fact-info - obj - (pickup-type eco-pill-random) - (-> *FACT-bank* default-pill-inc) - ) - ) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 120) obj) - ) + (set! (-> obj fact) + (new 'process 'fact-info obj (pickup-type eco-pill-random) (-> *FACT-bank* default-pill-inc)) + ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 120) obj)) (set! (-> obj auto-get-off) #f) - (dummy-60 (-> obj root-override) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> obj root-override) 40960.0 40960.0 #t (collide-kind background)) (set! (-> obj cell) (the-as handle #f)) (blocking-plane-spawn - (the-as - curve-control - (if - (and - *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) + (the-as + curve-control + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + (-> obj path-flut) + (-> obj path-target) + ) ) - (-> obj path-flut) - (-> obj path-target) - ) ) - ) - (set! - (-> obj sound) - (new - 'process - 'ambient-sound - (new 'static 'sound-spec - :mask #x80 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "zoom-teleport") - :volume #x400 - :fo-max 30 - ) - (-> obj root-override trans) - ) - ) + (set! (-> obj sound) (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "zoom-teleport") + :volume #x400 + :fo-max 30 + ) + (-> obj root-override trans) + ) + ) (go (method-of-object obj wait-for-start)) (none) ) diff --git a/goal_src/levels/flut_common/target-flut.gc b/goal_src/levels/flut_common/target-flut.gc index 34aeb4e32e..964fffe98b 100644 --- a/goal_src/levels/flut_common/target-flut.gc +++ b/goal_src/levels/flut_common/target-flut.gc @@ -206,8 +206,8 @@ (defbehavior target-flut-hit-ground-anim target () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 144) ) (if (!= (-> self skel root-channel 0) (-> self skel channel)) @@ -254,8 +254,8 @@ #f ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 149) ) (ja-channel-set! 1) @@ -392,10 +392,10 @@ (case arg2 (('touched) (if ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self control) - (the-as uint 224) - ) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 224) + ) (target-send-attack arg0 (the-as uint (-> self control unknown-symbol30)) @@ -426,35 +426,31 @@ target-flut-standard-event-handler :exit (behavior () - (when (not - (or - (= (-> self next-state name) 'target-flut-stance) - (= (-> self next-state name) 'target-flut-walk) - (= (-> self next-state name) 'target-flut-jump) - (= (-> self next-state name) 'target-flut-double-jump) - (= (-> self next-state name) 'target-flut-hit-ground) - (= (-> self next-state name) 'target-flut-falling) - (= (-> self next-state name) 'target-flut-running-attack) - (= (-> self next-state name) 'target-flut-air-attack) - (= (-> self next-state name) 'target-flut-air-attack-hit-ground) - (= (-> self next-state name) 'target-flut-hit) - (= (-> self next-state name) 'target-flut-death) - (= (-> self next-state name) 'target-flut-get-on) - (= (-> self next-state name) 'target-flut-get-off) - (= (-> self next-state name) 'target-flut-get-off-jump) - (= (-> self next-state name) 'target-flut-grab) - (= (-> self next-state name) 'target-flut-clone-anim) - ) - ) + (when (not (or (= (-> self next-state name) 'target-flut-stance) + (= (-> self next-state name) 'target-flut-walk) + (= (-> self next-state name) 'target-flut-jump) + (= (-> self next-state name) 'target-flut-double-jump) + (= (-> self next-state name) 'target-flut-hit-ground) + (= (-> self next-state name) 'target-flut-falling) + (= (-> self next-state name) 'target-flut-running-attack) + (= (-> self next-state name) 'target-flut-air-attack) + (= (-> self next-state name) 'target-flut-air-attack-hit-ground) + (= (-> self next-state name) 'target-flut-hit) + (= (-> self next-state name) 'target-flut-death) + (= (-> self next-state name) 'target-flut-get-on) + (= (-> self next-state name) 'target-flut-get-off) + (= (-> self next-state name) 'target-flut-get-off-jump) + (= (-> self next-state name) 'target-flut-grab) + (= (-> self next-state name) 'target-flut-clone-anim) + ) + ) (let ((v1-33 (-> self manipy))) (when v1-33 (deactivate (-> v1-33 0)) (set! (-> self manipy) (the-as (pointer manipy) #f)) ) ) - (set! (-> self control root-prim prim-core action) - (logand -16385 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-14)) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self state-flags) (logand -1025 (-> self state-flags))) (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) @@ -487,7 +483,7 @@ (target-collide-set! 'flut (-> (new 'static 'array float 1 0.0) 0)) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) #x4000) + (logior! (-> self control root-prim prim-core action) (collide-action ca-14)) (let ((s5-0 (-> self entity))) (set! (-> self entity) (the-as entity (-> self flut entity))) (let ((s4-0 (get-process *default-dead-pool* manipy #x4000))) @@ -579,7 +575,10 @@ :event target-flut-standard-event-handler :enter - (behavior () (set! (-> self control unknown-surface00) *flut-walk-mods*) (none)) + (behavior () + (set! (-> self control unknown-surface00) *flut-walk-mods*) + (none) + ) :exit (-> target-flut-start exit) :trans @@ -587,46 +586,38 @@ (if (move-legs?) (go target-flut-walk) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max)) ) (if (can-hands? #t) (go target-flut-running-attack) ) - (when (and - (zero? (logand (-> self control status) 1)) - (and - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-37 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (when (and (zero? (logand (-> self control status) 1)) + (and (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-37 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (not (or (= v1-37 (-> self draw art-group data 59)) + (= v1-37 (-> self draw art-group data 60)) + (= v1-37 (-> self draw art-group data 61)) + ) ) - ) + (< 4096.0 (target-height-above-ground)) + ) + ) ) - (or - (not (or - (= v1-37 (-> self draw art-group data 59)) - (= v1-37 (-> self draw art-group data 60)) - (= v1-37 (-> self draw art-group data 61)) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - ) + ) enter-state (go target-flut-falling) ) @@ -645,8 +636,8 @@ (set! gp-0 60) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 155) ) (let ((a0-11 (-> self skel root-channel 0))) @@ -660,8 +651,8 @@ ) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 158) ) (let ((a0-17 (-> self skel root-channel 0))) @@ -683,8 +674,8 @@ ) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 150) ) (let ((a0-24 (-> self skel root-channel 0))) @@ -708,11 +699,11 @@ ) ) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 140) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 140) + ) + ) (ja-channel-push! 1 gp-0) ) ) @@ -755,46 +746,38 @@ (if (not (move-legs?)) (go target-flut-stance) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max)) ) (if (can-hands? #t) (go target-flut-running-attack) ) - (when (and - (zero? (logand (-> self control status) 1)) - (and - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-37 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (when (and (zero? (logand (-> self control status) 1)) + (and (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-37 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (not (or (= v1-37 (-> self draw art-group data 59)) + (= v1-37 (-> self draw art-group data 60)) + (= v1-37 (-> self draw art-group data 61)) + ) ) - ) + (< 4096.0 (target-height-above-ground)) + ) + ) ) - (or - (not (or - (= v1-37 (-> self draw art-group data 59)) - (= v1-37 (-> self draw art-group data 60)) - (= v1-37 (-> self draw art-group data 61)) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - ) + ) enter-state (go target-flut-falling) ) @@ -832,8 +815,8 @@ (let ((gp-0 22)) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 140) ) (set! gp-0 60) @@ -843,12 +826,11 @@ ) ) ) - (or - (= v1-9 (-> self draw art-group data 143)) - (= v1-9 (-> self draw art-group data 144)) - (= v1-9 (-> self draw art-group data 152)) - (= v1-9 (-> self draw art-group data 154)) - ) + (or (= v1-9 (-> self draw art-group data 143)) + (= v1-9 (-> self draw art-group data 144)) + (= v1-9 (-> self draw art-group data 152)) + (= v1-9 (-> self draw art-group data 154)) + ) ) (ja-channel-push! 1 24) (let ((a0-18 (-> self skel root-channel 0))) @@ -872,16 +854,16 @@ ) (set! f30-0 (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 161) ) (ja-channel-set! 2) 1.0 ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 141) ) (set! f28-0 (ja-frame-num 0)) @@ -961,20 +943,19 @@ (defstate target-flut-jump (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (when (and - (= arg2 'touched) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self control) - (the-as uint 6) - ) - (< 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans)) - ) + (when (and (= arg2 'touched) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 6) + ) + (< 0.0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans)) + ) + ) ) - ) (send-event arg0 'bonk (-> arg3 param 0) (-> self control ground-impact-vel)) (when (target-send-attack arg0 @@ -1010,7 +991,11 @@ (none) ) :exit - (behavior () (target-exit) ((-> target-flut-start exit)) (none)) + (behavior () + (target-exit) + ((-> target-flut-start exit)) + (none) + ) :trans (behavior () (set! (-> self control unknown-float123) @@ -1022,46 +1007,38 @@ (if (logtest? (-> self control status) 1) (go target-flut-hit-ground) ) - (if (and - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) (pad-buttons x)) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 40960.0) - (and - (zero? (logand (-> self water flags) 512)) - (zero? (logand (-> self state-flags) 2048)) - (< 4096.0 (target-height-above-ground)) - ) - ) + (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) (pad-buttons x)) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 40960.0) + (and (zero? (logand (-> self water flags) 512)) + (zero? (logand (-> self state-flags) 2048)) + (< 4096.0 (target-height-above-ground)) + ) + ) (go target-flut-double-jump (-> *FLUT-bank* double-jump-height-min) (-> *FLUT-bank* double-jump-height-max)) ) - (if (and - (logtest? - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (pad-buttons square) - ) - (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 61440.0) - (and - (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) - (the-as int (-> *TARGET-bank* stuck-timeout)) + (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons square) + ) + (< (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) 61440.0) + (and (< -61440.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as int (-> *TARGET-bank* stuck-timeout)) + ) + (zero? (logand (-> self state-flags) 4096)) + (zero? (logand (-> self control unknown-surface01 flags) 384)) ) - (zero? (logand (-> self state-flags) 4096)) - (zero? (logand (-> self control unknown-surface01 flags) 384)) - ) - ) + ) (go target-flut-air-attack (-> *FLUT-bank* air-attack-speed)) ) - (when (if (and - (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) (-> *TARGET-bank* stuck-distance)) - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - (not - (and - *cheat-mode* - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + (when (if (and (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) (-> *TARGET-bank* stuck-distance)) + (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) + (not + (and *cheat-mode* + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) ) - ) - ) - ) + ) #t ) (logior! (-> self control status) 1) @@ -1218,26 +1195,21 @@ (if (logtest? (-> self control status) 1) (go target-flut-hit-ground) ) - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons square) + ) + (and (zero? (logand (-> self state-flags) 4096)) + (zero? (logand (-> self control unknown-surface01 flags) 384)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) + (the-as int (-> *TARGET-bank* stuck-timeout)) + ) + (< 4096.0 (target-height-above-ground)) ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons square) - ) - (and - (zero? (logand (-> self state-flags) 4096)) - (zero? (logand (-> self control unknown-surface01 flags) 384)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword36)) - (the-as int (-> *TARGET-bank* stuck-timeout)) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) + ) (go target-flut-air-attack (-> *FLUT-bank* air-attack-speed)) ) (if (!= (-> self state-time) (-> *display* base-frame-counter)) @@ -1249,10 +1221,10 @@ ) ) (if (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 149) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 149) + ) (sound-play-by-name (static-sound-name "flut-flap") (-> self flut flap-sound-id) 1024 0 0 1 #t) ) (set! (-> self control unknown-float122) @@ -1397,46 +1369,38 @@ (-> target-flut-start exit) :trans (behavior () - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) (go target-flut-jump (-> *FLUT-bank* jump-height-min) (-> *FLUT-bank* jump-height-max)) ) (if (move-legs?) (go target-flut-walk) ) - (when (and - (zero? (logand (-> self control status) 1)) - (and - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-34 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (when (and (zero? (logand (-> self control status) 1)) + (and (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-34 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (not (or (= v1-34 (-> self draw art-group data 59)) + (= v1-34 (-> self draw art-group data 60)) + (= v1-34 (-> self draw art-group data 61)) + ) ) - ) + (< 4096.0 (target-height-above-ground)) + ) + ) ) - (or - (not (or - (= v1-34 (-> self draw art-group data 59)) - (= v1-34 (-> self draw art-group data 60)) - (= v1-34 (-> self draw art-group data 61)) - ) - ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) - ) + ) enter-state (go target-flut-falling) ) @@ -1467,25 +1431,21 @@ (-> target-flut-start exit) :trans (behavior () - (when (or - (logtest? (-> self control status) 1) - (if (and - (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) (-> *TARGET-bank* stuck-distance)) - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) - (/ (the-as int (-> *TARGET-bank* stuck-time)) 2) - ) - (not - (and - *cheat-mode* - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) - ) - ) - ) - ) - #t - ) - ) + (when (or (logtest? (-> self control status) 1) + (if (and (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) (-> *TARGET-bank* stuck-distance)) + (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) + (/ (the-as int (-> *TARGET-bank* stuck-time)) 2) + ) + (not + (and *cheat-mode* + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) + ) + ) + #t + ) + ) (logior! (-> self control status) 1) (go target-flut-hit-ground) ) @@ -1502,14 +1462,14 @@ (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 144) ) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 149) ) (ja-channel-push! 2 60) @@ -1562,15 +1522,14 @@ (-> self control) (the-as uint 224) ) - (let ((gp-1 - (target-send-attack - arg0 - (the-as uint (-> self control unknown-symbol30)) - (-> arg3 param 0) - (-> self control unknown-dword50) - (-> self control unknown-dword51) - ) - ) + (let ((gp-1 (target-send-attack + arg0 + (the-as uint (-> self control unknown-symbol30)) + (-> arg3 param 0) + (-> self control unknown-dword50) + (-> self control unknown-dword51) + ) + ) ) (when gp-1 (set! (-> self control unknown-uint20) (the-as uint (-> *display* base-frame-counter))) @@ -1586,13 +1545,11 @@ ) ) ) - (if (and - v1-11 - (or - (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core collide-as) 256) - (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core action) 1024) - ) - ) + (if (and v1-11 + (or (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core action) (collide-action ca-10)) + ) + ) (set! (-> self control unknown-uint31) (the-as uint 1)) ) ) @@ -1628,10 +1585,9 @@ (set! (-> *run-attack-mods* turnvv) 655360.0) (target-start-attack) (target-danger-set! 'flut-attack #f) - (when (and - (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) 75) - ) + (when (and (and (= (-> self fact-info-target eco-type) 1) (>= (-> self fact-info-target eco-level) 1.0)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword82)) 75) + ) (let ((gp-0 (vector-z-quaternion! (new 'stack-no-clear 'vector) (-> self control quat))) (s5-0 (vector<-cspace! (new 'stack-no-clear 'vector) (-> self manipy 0 node-list data 32))) ) @@ -1676,40 +1632,37 @@ :trans (behavior () (when (!= (-> self state-time) (-> *display* base-frame-counter)) - (if (and - (or - (smack-surface? #t) - (and (>= (-> self control unknown-float63) 0.7) (zero? (logand (-> self control status) 32))) - ) - (begin - (set! (-> self control unknown-int21) (-> *display* base-frame-counter)) - (set! (-> self control unknown-float81) 0.0) - (let ((gp-0 (new-stack-vector0)) - (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - ) - 0.0 - (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) - (let* ((f0-5 (vector-length gp-0)) - (f1-1 f0-5) - (f2-1 (fmin 0.0 f30-0)) - ) - (vector+! - (-> self control transv) - (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) - (vector-float*! gp-0 gp-0 (/ f0-5 f1-1)) - ) - ) - ) - #t - ) - (or - (zero? (-> self control unknown-uint20)) - (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) - (the-as uint 12) - ) - ) - (!= (-> self control unknown-uint31) 1) - ) + (if (and (or (smack-surface? #t) + (and (>= (-> self control unknown-float63) 0.7) (zero? (logand (-> self control status) 32))) + ) + (begin + (set! (-> self control unknown-int21) (-> *display* base-frame-counter)) + (set! (-> self control unknown-float81) 0.0) + (let ((gp-0 (new-stack-vector0)) + (f30-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! gp-0 (-> self control transv) (vector-float*! gp-0 (-> self control dynam gravity-normal) f30-0)) + (let* ((f0-5 (vector-length gp-0)) + (f1-1 f0-5) + (f2-1 (fmin 0.0 f30-0)) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-1) + (vector-float*! gp-0 gp-0 (/ f0-5 f1-1)) + ) + ) + ) + #t + ) + (or (zero? (-> self control unknown-uint20)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 12) + ) + ) + (!= (-> self control unknown-uint31) 1) + ) (target-shoved (meters 2.0) (-> *TARGET-bank* smack-surface-height) @@ -1717,10 +1670,9 @@ (the-as (state target) target-flut-hit) ) ) - (if (and - (logtest? (-> self water flags) 512) - (zero? (mod (- (-> *display* base-frame-counter) (-> self state-time)) 21)) - ) + (if (and (logtest? (-> self water flags) 512) + (zero? (mod (- (-> *display* base-frame-counter) (-> self state-time)) 21)) + ) (dummy-13 (-> self water) (the-as float 0.6) @@ -1758,44 +1710,38 @@ (TODO-RENAME-9 (-> self align)) (when (not (ja-min? 0)) (cond - ((and - (>= (ja-aframe-num 0) 20.0) - (and - (and - (zero? (logand (-> self control status) 1)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-39 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + ((and (>= (ja-aframe-num 0) 20.0) + (and (and (zero? (logand (-> self control status) 1)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-39 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (not + (or (= v1-39 (-> self draw art-group data 59)) + (= v1-39 (-> self draw art-group data 60)) + (= v1-39 (-> self draw art-group data 61)) + ) ) - ) - ) - (or - (not - (or - (= v1-39 (-> self draw art-group data 59)) - (= v1-39 (-> self draw art-group data 60)) - (= v1-39 (-> self draw art-group data 61)) + (< 4096.0 (target-height-above-ground)) + ) + ) + ) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) + (the-as uint 12) ) - ) - (< 4096.0 (target-height-above-ground)) ) - ) - ) - (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint20)))) - (the-as uint 12) - ) - ) - ) + ) enter-state (go target-flut-falling) ) - ((and - (nonzero? (-> self control unknown-uint30)) - (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint30)))) - (the-as uint 12) - ) - ) + ((and (nonzero? (-> self control unknown-uint30)) + (>= (the-as uint (- (-> *display* base-frame-counter) (the-as int (-> self control unknown-uint30)))) + (the-as uint 12) + ) + ) (set-forward-vel (-> (new 'static 'array float 1 0.0) 0)) (set! f30-0 0.0) ) @@ -1828,26 +1774,23 @@ (set! f30-0 (* f30-0 (the-as float (fmin 1.0 (the-as float (-> self control unknown-float140)))))) ) ) - (when (and - (zero? (logand (-> self control status) 1)) - (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) - (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) - (let ((v1-105 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (when (and (zero? (logand (-> self control status) 1)) + (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) (-> *FLUT-bank* ground-timeout)) + (>= 0.0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + (let ((v1-105 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + ) + (or (not (or (= v1-105 (-> self draw art-group data 59)) + (= v1-105 (-> self draw art-group data 60)) + (= v1-105 (-> self draw art-group data 61)) ) ) - ) - (or - (not (or - (= v1-105 (-> self draw art-group data 59)) - (= v1-105 (-> self draw art-group data 60)) - (= v1-105 (-> self draw art-group data 61)) - ) + (< 4096.0 (target-height-above-ground)) ) - (< 4096.0 (target-height-above-ground)) - ) - ) - ) + ) + ) enter-state (go target-flut-falling) ) @@ -1887,20 +1830,19 @@ (defstate target-flut-air-attack (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and - (= arg2 'touched) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self control) - (the-as uint 6) + (if (and (= arg2 'touched) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self control) + (the-as uint 6) + ) + (< 0.0 + (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans)) + ) + ) ) - (< 0.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! (new 'stack-no-clear 'vector) (the-as vector (-> self control trans-old)) (-> self control trans)) - ) - ) - ) (send-event arg0 'bonk (-> arg3 param 0) (-> self control ground-impact-vel)) ) (case arg2 @@ -1974,18 +1916,15 @@ (remove-exit) (go target-flut-air-attack-hit-ground) ) - (when (if (and - (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) 4096.0) - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (not - (and - *cheat-mode* - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + (when (if (and (< (target-move-dist (the-as int (-> *TARGET-bank* stuck-time))) 4096.0) + (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (not + (and *cheat-mode* + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) + ) ) - ) - ) - ) + ) #t ) (logior! (-> self control status) 1) @@ -2157,10 +2096,9 @@ :trans (behavior () (when (= *cheat-mode* 'debug) - (when (and - (not *pause-lock*) - (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) - ) + (when (and (not *pause-lock*) + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons r2)) + ) (pickup-collectable! (-> self fact-info-target) (pickup-type eco-green) (the-as float 1.0) (the-as handle #f)) (go target-flut-stance) ) @@ -2280,8 +2218,8 @@ (case (-> gp-0 angle) (('shove) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 158) ) ) @@ -2300,8 +2238,8 @@ ) (else (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 157) ) ) @@ -2572,7 +2510,11 @@ (none) ) :post - (behavior () (target-no-stick-post) (target-flut-post-post) (none)) + (behavior () + (target-no-stick-post) + (target-flut-post-post) + (none) + ) ) (defstate target-flut-get-off-jump (target) @@ -2689,7 +2631,11 @@ :enter (-> target-hit-ground enter) :trans - (behavior () (logior! (-> self control status) 7) ((-> target-hit-ground trans)) (none)) + (behavior () + (logior! (-> self control status) 7) + ((-> target-hit-ground trans)) + (none) + ) :code (behavior ((arg0 symbol)) (ja-channel-set! 1) @@ -2756,7 +2702,11 @@ :code (-> target-flut-stance code) :post - (behavior () (target-no-stick-post) (target-flut-post-post) (none)) + (behavior () + (target-no-stick-post) + (target-flut-post-post) + (none) + ) ) (defstate target-flut-clone-anim (target) @@ -2784,7 +2734,11 @@ (none) ) :post - (behavior () (target-no-ja-move-post) (target-flut-post-post) (none)) + (behavior () + (target-no-ja-move-post) + (target-flut-post-post) + (none) + ) ) diff --git a/goal_src/levels/jungle/bouncer.gc b/goal_src/levels/jungle/bouncer.gc index 0d3ea6330d..710a7689da 100644 --- a/goal_src/levels/jungle/bouncer.gc +++ b/goal_src/levels/jungle/bouncer.gc @@ -173,10 +173,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/jungle/darkvine.gc b/goal_src/levels/jungle/darkvine.gc index 0438921e0a..ae4c383a8a 100644 --- a/goal_src/levels/jungle/darkvine.gc +++ b/goal_src/levels/jungle/darkvine.gc @@ -35,20 +35,17 @@ (defmethod run-logic? darkvine ((obj darkvine)) - (or - (zero? (logand (-> obj mask) (process-mask actor-pause))) - (or - (and - (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) - (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) - (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) - ) - ) - (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (and (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) (draw-status drwf03)) + (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root-override pause-adjust-distance)) + (vector-vector-distance (-> obj root-override trans) (math-camera-pos)) + ) + ) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + ) ) - ) ) (defskelgroup *darkvine-sg* darkvine @@ -164,7 +161,7 @@ (set! (-> a1-1 param 0) (-> arg3 param 0)) (set! (-> a1-1 param 1) (the-as uint (new 'static 'attack-info))) (if (send-event-function arg0 a1-1) - (dummy-54 (-> self root-override) 2 0) + (dummy-54 (-> self root-override) 2 (collide-offense no-offense)) ) ) ) @@ -233,11 +230,10 @@ ) :post (behavior () - (when (and - (-> self hit-player) - (or (not *target*) (>= (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15)) - ) - (dummy-54 (-> self root-override) 2 4) + (when (and (-> self hit-player) + (or (not *target*) (>= (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15)) + ) + (dummy-54 (-> self root-override) 2 (collide-offense indestructible)) (set! (-> self hit-player) #f) ) (transform-post) @@ -376,43 +372,43 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3072)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action ca-10 ca-11)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3073)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3073)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 2867.2) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3073)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 2457.6) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3073)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 8) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-3) diff --git a/goal_src/levels/jungle/fisher-JUN.gc b/goal_src/levels/jungle/fisher-JUN.gc index 27744a9261..9b3cf1fddd 100644 --- a/goal_src/levels/jungle/fisher-JUN.gc +++ b/goal_src/levels/jungle/fisher-JUN.gc @@ -950,12 +950,12 @@ ) ) (set! (-> a0-2 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -973,12 +973,11 @@ (until (ja-done? 0) (fisher-fish-move) (if (< (vector-vector-xz-distance (-> self root trans) (-> (the-as fisher (-> self parent 0)) paddle-pos)) - (+ (-> *FISHER-bank* net-radius) (* (-> self size) (-> self root scale x))) - ) + (+ (-> *FISHER-bank* net-radius) (* (-> self size) (-> self root scale x))) + ) (go fisher-fish-caught) ) - (if (or - (>= (-> self pos) (the float (+ (-> (the-as fisher (-> self parent 0)) path curve num-cverts) -1))) + (if (or (>= (-> self pos) (the float (+ (-> (the-as fisher (-> self parent 0)) path curve num-cverts) -1))) (>= (-> self pos) 7.2) ) (go fisher-fish-die) @@ -1515,28 +1514,25 @@ ) (cond ((and (< 0.3 f0-2) (< (+ (-> *FISHER-bank* max-caught) -30) (-> self caught))) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self ambient-almost)) 3000) - (play-ambient (-> self ambient) "FIS-TA11" #t (-> self root-override trans)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self ambient-almost)) 3000) + (play-ambient (-> self ambient) "FIS-TA11" #t (-> self root-override trans)) + ) (set! (-> self ambient-almost) (-> *display* base-frame-counter)) ) ) ((< 0.125 f0-2) ) ((< 0.1 f0-2) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self ambient-steady)) 3000) - (play-ambient (-> self ambient) "FIS-TA06" #t (-> self root-override trans)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self ambient-steady)) 3000) + (play-ambient (-> self ambient) "FIS-TA06" #t (-> self root-override trans)) + ) (set! (-> self ambient-steady) (-> *display* base-frame-counter)) ) ) ((< (+ (-> *FISHER-bank* max-missed) -6) (-> self missed)) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self ambient-sagging)) 3000) - (play-ambient (-> self ambient) "FIS-TA07" #t (-> self root-override trans)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self ambient-sagging)) 3000) + (play-ambient (-> self ambient) "FIS-TA07" #t (-> self root-override trans)) + ) (set! (-> self ambient-sagging) (-> *display* base-frame-counter)) ) ) @@ -1576,17 +1572,15 @@ (set! (-> self spawner) 0.0) ) ) - (when (and - (nonzero? (-> self params period)) - (>= (- (-> *display* base-frame-counter) (-> self spawn-time)) (the-as int (-> self params period))) - ) + (when (and (nonzero? (-> self params period)) + (>= (- (-> *display* base-frame-counter) (-> self spawn-time)) (the-as int (-> self params period))) + ) (let ((gp-0 (cond ((rand-vu-percent? (-> self params powerup-percent)) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self ambient-big-one)) 9000) - (play-ambient (-> self ambient) "FIS-TA03" #t (-> self root-override trans)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self ambient-big-one)) 9000) + (play-ambient (-> self ambient) "FIS-TA03" #t (-> self root-override trans)) + ) (set! (-> self ambient-big-one) (-> *display* base-frame-counter)) ) 'powerup @@ -1750,8 +1744,7 @@ (while #t (hide-hud-quick) (fisher-game-update) - (if (or - (zero? (-> self params timeout)) + (if (or (zero? (-> self params timeout)) (>= (-> self missed) (-> *FISHER-bank* max-missed)) (>= (-> self caught) (-> *FISHER-bank* max-caught)) ) @@ -1762,7 +1755,10 @@ (none) ) :post - (behavior () (ja-post) (none)) + (behavior () + (ja-post) + (none) + ) ) (defstate enter-playing (fisher) @@ -2062,10 +2058,10 @@ :code (behavior () (if (!= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (get-art-elem self) - ) + (-> self skel root-channel 0 frame-group) + ) + (get-art-elem self) + ) (ja-channel-push! 1 60) ) (while #t @@ -2083,12 +2079,12 @@ ) ) (set! (-> a0-10 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -2115,8 +2111,8 @@ ) ) (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) (let ((a0-19 (-> self skel root-channel 0))) @@ -2146,26 +2142,26 @@ (defmethod initialize-collision fisher ((obj fisher) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 6144.0 0.0 4096.0 14336.0) (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6553.6) (append-prim s4-0 s2-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 57) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 4096.0) (append-prim s4-0 s3-1) @@ -2318,12 +2314,12 @@ (let ((a0-28 (-> self skel root-channel 0))) (set! (-> a0-28 param 0) (* (fmax 0.0 (- 1.0 (-> (the-as fisher v1-42) paddle))) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) diff --git a/goal_src/levels/jungle/hopper.gc b/goal_src/levels/jungle/hopper.gc index 8ff2aed96f..83ed38caa1 100644 --- a/goal_src/levels/jungle/hopper.gc +++ b/goal_src/levels/jungle/hopper.gc @@ -31,11 +31,8 @@ nav-enemy-default-event-handler (defmethod common-post hopper ((obj hopper)) (let ((v1-1 (-> obj draw shadow-ctrl))) - (set! - (-> v1-1 settings bot-plane w) - (- (- (-> obj shadow-min-y) (-> obj collide-info trans y))) + (set! (-> v1-1 settings bot-plane w) (- (- (-> obj shadow-min-y) (-> obj collide-info trans y)))) ) - ) 0 ((the-as (function nav-enemy none) (find-parent-method hopper 39)) obj) 0 @@ -44,66 +41,50 @@ nav-enemy-default-event-handler (defbehavior hopper-find-ground hopper ((arg0 vector)) (let ((s5-0 (new 'stack-no-clear 'vector))) - (let ((t1-0 (new 'stack-no-clear 'collide-tri-result)) - (f30-0 61440.0) - ) - (set! (-> s5-0 quad) (-> arg0 quad)) - (set! (-> s5-0 y) (+ 20480.0 (-> s5-0 y))) - (let - ((f0-2 - (fill-and-probe-using-y-probe - *collide-cache* - s5-0 - f30-0 - (the-as uint 1) - self - t1-0 - (the-as uint 1) + (let ((t1-0 (new 'stack-no-clear 'collide-tri-result)) + (f30-0 61440.0) + ) + (set! (-> s5-0 quad) (-> arg0 quad)) + (set! (-> s5-0 y) (+ 20480.0 (-> s5-0 y))) + (let ((f0-2 + (fill-and-probe-using-y-probe *collide-cache* s5-0 f30-0 (collide-kind background) self t1-0 (the-as uint 1)) + ) + ) + (if (< f0-2 0.0) + (return (the-as object #f)) + ) + (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) ) - ) ) - (if (< f0-2 0.0) - (return (the-as object #f)) - ) - (set! (-> s5-0 y) (- (-> s5-0 y) (* f0-2 f30-0))) - ) + (set! (-> arg0 quad) (-> s5-0 quad)) ) - (set! (-> arg0 quad) (-> s5-0 quad)) - ) 0 ) (defbehavior hopper-jump-to hopper ((arg0 vector)) (set! (-> self jump-dest quad) (-> arg0 quad)) (hopper-find-ground (-> self jump-dest)) - (set! - (-> self shadow-min-y) - (+ - (fmin (-> self collide-info trans y) (-> self jump-dest y)) - (-> self nav-info shadow-min-y) - ) - ) + (set! (-> self shadow-min-y) + (+ (fmin (-> self collide-info trans y) (-> self jump-dest y)) (-> self nav-info shadow-min-y)) + ) (nav-enemy-initialize-custom-jump - (-> self jump-dest) - #f - (-> self nav-info jump-height-min) - (-> self nav-info jump-height-factor) - -409600.0 - ) + (-> self jump-dest) + #f + (-> self nav-info jump-height-min) + (-> self nav-info jump-height-factor) + -409600.0 + ) (set! (-> self nav-enemy-flags) (logand -513 (-> self nav-enemy-flags))) (set! (-> self nav-enemy-flags) (logand -1025 (-> self nav-enemy-flags))) (logior! (-> self nav-enemy-flags) 16) (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) (when (not (nav-enemy-facing-point? (-> self jump-dest) 5461.3335)) - (ja-channel-push! 1 60) - (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) - ) + (ja-channel-push! 1 60) + (nav-enemy-turn-to-face-point (-> self jump-dest) 1820.4445) + ) (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) (nav-enemy-execute-jump) - (set! - (-> self shadow-min-y) - (+ (-> self collide-info trans y) (-> self nav-info shadow-min-y)) - ) + (set! (-> self shadow-min-y) (+ (-> self collide-info trans y) (-> self nav-info shadow-min-y))) (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) (nav-enemy-jump-land-anim) 0 @@ -113,13 +94,9 @@ nav-enemy-default-event-handler (defbehavior hopper-do-jump hopper () (dummy-11 (-> self nav) (-> self nav target-pos)) (if (< (-> self jump-length) (vector-length (-> self nav travel))) - (vector-normalize! (-> self nav travel) (-> self jump-length)) - ) - (vector+! - (-> self jump-dest) - (-> self collide-info trans) - (-> self nav travel) - ) + (vector-normalize! (-> self nav travel) (-> self jump-length)) + ) + (vector+! (-> self jump-dest) (-> self collide-info trans) (-> self nav travel)) (hopper-jump-to (-> self jump-dest)) 0 (none) @@ -129,267 +106,155 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior hopper) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior hopper) + nav-enemy-default-event-handler + ) :code (behavior () - (ja-channel-push! 1 22) - (while #t - (dotimes (gp-0 3) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (ja-channel-push! 1 22) + (while #t + (dotimes (gp-0 3) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 1.0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 - ) ) - ) - (set! (-> a0-1 param 1) 1.0) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-4 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 1.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! a0-4 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! + (until (ja-done? 0) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1))) + (set! (-> a0-5 param 1) 1.0) + (joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) ) - ) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-4 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-4 param 1) 1.0) - (set! (-> a0-4 frame-num) 0.0) - (joint-control-channel-group! - a0-4 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 param 0) - (the float (+ (-> a0-5 frame-group data 0 length) -1)) - ) - (set! (-> a0-5 param 1) 1.0) - (joint-control-channel-group-eval! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-patrol (hopper) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior hopper) - nav-enemy-jump-event-handler - ) + (function process int symbol event-message-block object :behavior hopper) + nav-enemy-jump-event-handler + ) :trans (behavior () - (if (zero? (logand (-> self nav-enemy-flags) 8)) - ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) + (if (zero? (logand (-> self nav-enemy-flags) 8)) + ((-> (method-of-type nav-enemy nav-enemy-patrol) trans)) + ) + (none) ) - (none) - ) :code (behavior () - (vector-reset! (-> self collide-info transv)) - (set! (-> self jump-length) 16384.0) - (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) - (while #t - (cond - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 7) - ) - (ja-channel-push! 1 20) - (let ((a0-6 (-> self skel root-channel 0))) - (set! - (-> a0-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-6 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length + (vector-reset! (-> self collide-info transv)) + (set! (-> self jump-length) 16384.0) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (while #t + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 7) + ) + (ja-channel-push! 1 20) + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> a0-6 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1)) + ) + (set! (-> a0-6 param 1) 1.0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) ) - -1 - ) - ) - ) - (set! (-> a0-6 param 1) 1.0) - (set! (-> a0-6 frame-num) 0.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 param 0) - (the float (+ (-> a0-7 frame-group data 0 length) -1)) - ) - (set! (-> a0-7 param 1) 1.0) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (ja-channel-push! 1 30) - ) - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 9) - ) - (ja-channel-push! 1 30) - (let ((a0-15 (-> self skel root-channel 0))) - (set! - (-> a0-15 frame-group) - (the-as art-joint-anim (-> self draw art-group data 10)) - ) - (set! - (-> a0-15 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 10)) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 + (ja-channel-push! 1 30) + ) + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 9) + ) + (ja-channel-push! 1 30) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 frame-group) (the-as art-joint-anim (-> self draw art-group data 10))) + (set! (-> a0-15 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1)) + ) + (set! (-> a0-15 param 1) 1.0) + (set! (-> a0-15 frame-num) 0.0) + (joint-control-channel-group! a0-15 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-16 (-> self skel root-channel 0))) + (set! (-> a0-16 param 0) (the float (+ (-> a0-16 frame-group data 0 length) -1))) + (set! (-> a0-16 param 1) 1.0) + (joint-control-channel-group-eval! a0-16 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (ja-channel-push! 1 30) + ) + (else + (ja-channel-push! 1 22) ) - ) ) - (set! (-> a0-15 param 1) 1.0) - (set! (-> a0-15 frame-num) 0.0) - (joint-control-channel-group! - a0-15 - (the-as art-joint-anim (-> self draw art-group data 10)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-16 (-> self skel root-channel 0))) - (set! - (-> a0-16 param 0) - (the float (+ (-> a0-16 frame-group data 0 length) -1)) - ) - (set! (-> a0-16 param 1) 1.0) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((gp-0 (-> self skel root-channel 0))) (joint-control-channel-group-eval! - a0-16 - (the-as art-joint-anim #f) - num-func-seek! - ) + gp-0 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) ) - ) - (ja-channel-push! 1 30) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + (suspend) + (let ((a0-21 (-> self skel root-channel 0))) + (set! (-> a0-21 param 0) 1.0) + (joint-control-channel-group-eval! a0-21 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + (when (or (logtest? (nav-control-flags bit19) (-> self nav flags)) (< 2.0 (-> self nav block-count))) + (set! (-> self nav block-count) 0.0) + (logior! (-> self nav flags) (nav-control-flags bit10)) + (nav-enemy-get-new-patrol-point) + (set! (-> self nav target-pos quad) (-> self nav destination-pos quad)) + ) + (hopper-do-jump) ) - (else - (ja-channel-push! 1 22) - ) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) - ) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) - (suspend) - (let ((a0-21 (-> self skel root-channel 0))) - (set! (-> a0-21 param 0) 1.0) - (joint-control-channel-group-eval! - a0-21 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - (when - (or - (logtest? (nav-control-flags bit19) (-> self nav flags)) - (< 2.0 (-> self nav block-count)) - ) - (set! (-> self nav block-count) 0.0) - (logior! (-> self nav flags) (nav-control-flags bit10)) - (nav-enemy-get-new-patrol-point) - (set! (-> self nav target-pos quad) (-> self nav destination-pos quad)) - ) - (hopper-do-jump) + (none) ) - (none) - ) :post (the-as (function none :behavior hopper) nav-enemy-jump-post) ) @@ -398,168 +263,112 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior hopper) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior hopper) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-chase) - (none) - ) + (go-virtual nav-enemy-chase) + (none) + ) ) (defstate nav-enemy-chase (hopper) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior hopper) - nav-enemy-jump-event-handler - ) + (function process int symbol event-message-block object :behavior hopper) + nav-enemy-jump-event-handler + ) :trans (behavior () - (if (zero? (logand (-> self nav-enemy-flags) 8)) - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + (if (zero? (logand (-> self nav-enemy-flags) 8)) + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + ) + (none) ) - (none) - ) :code (behavior () - (vector-reset! (-> self collide-info transv)) - (set! (-> self jump-length) 32768.0) - (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) - (while #t - (cond - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 7) - ) - (ja-channel-push! 1 20) - (let ((a0-6 (-> self skel root-channel 0))) - (set! - (-> a0-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-6 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length + (vector-reset! (-> self collide-info transv)) + (set! (-> self jump-length) 32768.0) + (set! (-> self nav-enemy-flags) (logand -9 (-> self nav-enemy-flags))) + (while #t + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 7) + ) + (ja-channel-push! 1 20) + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> a0-6 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1)) + ) + (set! (-> a0-6 param 1) 1.0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) ) - -1 - ) - ) - ) - (set! (-> a0-6 param 1) 1.0) - (set! (-> a0-6 frame-num) 0.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 param 0) - (the float (+ (-> a0-7 frame-group data 0 length) -1)) - ) - (set! (-> a0-7 param 1) 1.0) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (ja-channel-push! 1 30) - ) - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 9) - ) - (ja-channel-push! 1 30) - (let ((a0-15 (-> self skel root-channel 0))) - (set! - (-> a0-15 frame-group) - (the-as art-joint-anim (-> self draw art-group data 10)) - ) - (set! - (-> a0-15 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 10)) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 + (ja-channel-push! 1 30) + ) + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 9) + ) + (ja-channel-push! 1 30) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 frame-group) (the-as art-joint-anim (-> self draw art-group data 10))) + (set! (-> a0-15 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1)) + ) + (set! (-> a0-15 param 1) 1.0) + (set! (-> a0-15 frame-num) 0.0) + (joint-control-channel-group! a0-15 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-16 (-> self skel root-channel 0))) + (set! (-> a0-16 param 0) (the float (+ (-> a0-16 frame-group data 0 length) -1))) + (set! (-> a0-16 param 1) 1.0) + (joint-control-channel-group-eval! a0-16 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (ja-channel-push! 1 30) + ) + (else + (ja-channel-push! 1 22) ) - ) ) - (set! (-> a0-15 param 1) 1.0) - (set! (-> a0-15 frame-num) 0.0) - (joint-control-channel-group! - a0-15 - (the-as art-joint-anim (-> self draw art-group data 10)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-16 (-> self skel root-channel 0))) - (set! - (-> a0-16 param 0) - (the float (+ (-> a0-16 frame-group data 0 length) -1)) - ) - (set! (-> a0-16 param 1) 1.0) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((gp-0 (-> self skel root-channel 0))) (joint-control-channel-group-eval! - a0-16 - (the-as art-joint-anim #f) - num-func-seek! - ) + gp-0 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) ) - ) - (ja-channel-push! 1 30) + (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + (suspend) + (let ((a0-21 (-> self skel root-channel 0))) + (set! (-> a0-21 param 0) 1.0) + (joint-control-channel-group-eval! a0-21 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) + (hopper-do-jump) ) - (else - (ja-channel-push! 1 22) - ) - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) - ) - (until (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) - (suspend) - (let ((a0-21 (-> self skel root-channel 0))) - (set! (-> a0-21 param 0) 1.0) - (joint-control-channel-group-eval! - a0-21 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - (set! (-> self nav target-pos quad) (-> (target-pos 0) quad)) - (hopper-do-jump) + (none) ) - (none) - ) :post (the-as (function none :behavior hopper) nav-enemy-jump-post) ) @@ -568,120 +377,105 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior hopper) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior hopper) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-stare) - (none) - ) + (go-virtual nav-enemy-stare) + (none) + ) ) -(define - *hopper-nav-enemy-info* - (new 'static 'nav-enemy-info - :idle-anim 5 - :walk-anim 5 - :turn-anim 9 - :notice-anim 5 - :run-anim 5 - :jump-anim 7 - :jump-land-anim 8 - :victory-anim 6 - :taunt-anim 6 - :die-anim 11 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 10.0) - :run-rotate-speed (degrees 7999.9995) - :run-acceleration (meters 1.0) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 6.0) - :walk-rotate-speed (degrees 7999.9995) - :walk-acceleration (meters 1.0) - :walk-turn-time (seconds 0.1) - :attack-shove-back (meters 3.0) - :attack-shove-up (meters 2.0) - :shadow-size (meters 2.0) - :notice-nav-radius (meters 1.0) - :nav-nearest-y-threshold (meters 10.0) - :notice-distance (meters 30.0) - :stop-chase-distance (meters 40.0) - :frustration-distance (meters 8.0) - :frustration-time #x4b0 - :die-anim-hold-frame 10000000000.0 - :jump-anim-start-frame 3.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 3.0) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1.0) - :shadow-min-y (meters -1.0) - :shadow-locus-dist (meters 150.0) - :use-align #t - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #t - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with #x1 - :debug-draw-neck #f - :debug-draw-jump #t - ) - ) +(define *hopper-nav-enemy-info* (new 'static 'nav-enemy-info + :idle-anim 5 + :walk-anim 5 + :turn-anim 9 + :notice-anim 5 + :run-anim 5 + :jump-anim 7 + :jump-land-anim 8 + :victory-anim 6 + :taunt-anim 6 + :die-anim 11 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 10.0) + :run-rotate-speed (degrees 7999.9995) + :run-acceleration (meters 1.0) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 6.0) + :walk-rotate-speed (degrees 7999.9995) + :walk-acceleration (meters 1.0) + :walk-turn-time (seconds 0.1) + :attack-shove-back (meters 3.0) + :attack-shove-up (meters 2.0) + :shadow-size (meters 2.0) + :notice-nav-radius (meters 1.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 30.0) + :stop-chase-distance (meters 40.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 10000000000.0 + :jump-anim-start-frame 3.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 3.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1.0) + :shadow-min-y (meters -1.0) + :shadow-locus-dist (meters 150.0) + :use-align #t + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #t + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #t + ) + ) (defmethod initialize-collision hopper ((obj hopper)) - (let - ((s5-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (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) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 10240.0) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) + (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (append-prim s4-0 s3-0) + ) + (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) + (set-vector! (-> s3-1 local-sphere) 0.0 6963.2 0.0 4096.0) + (append-prim s4-0 s3-1) + ) ) - ) + (set! (-> s5-0 nav-radius) 6144.0) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 2)) + (set! (-> obj collide-info) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 10240.0) - (set-root-prim! s5-0 s4-0) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) - (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (append-prim s4-0 s3-0) - ) - (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) - (set-vector! (-> s3-1 local-sphere) 0.0 6963.2 0.0 4096.0) - (append-prim s4-0 s3-1) - ) - ) - (set! (-> s5-0 nav-radius) 6144.0) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> obj collide-info) s5-0) - ) 0 (none) ) @@ -689,10 +483,7 @@ nav-enemy-default-event-handler (defmethod TODO-RENAME-48 hopper ((obj hopper)) (initialize-skeleton obj *hopper-sg* '()) (TODO-RENAME-45 obj *hopper-nav-enemy-info*) - (set! - (-> obj shadow-min-y) - (+ (-> obj collide-info trans y) (-> obj nav-info shadow-min-y)) - ) + (set! (-> obj shadow-min-y) (+ (-> obj collide-info trans y) (-> obj nav-info shadow-min-y))) 0 (none) ) diff --git a/goal_src/levels/jungle/jungle-mirrors.gc b/goal_src/levels/jungle/jungle-mirrors.gc index fed4296c2c..a283082c6c 100644 --- a/goal_src/levels/jungle/jungle-mirrors.gc +++ b/goal_src/levels/jungle/jungle-mirrors.gc @@ -876,10 +876,10 @@ (set! (-> self entity) (-> self parent-override 0 entity)) (let ((s5-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -1370,7 +1370,10 @@ ) ) :enter - (behavior () (clear-collide-with-as (-> self root-override)) (none)) + (behavior () + (clear-collide-with-as (-> self root-override)) + (none) + ) :exit (behavior () (restore-collide-with-as (-> self root-override)) @@ -1497,10 +1500,9 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch) - (when (and *target* (not (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (when (and *target* (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) ) ) (when ((method-of-type touching-shapes-entry prims-touching?) @@ -1528,7 +1530,10 @@ ) ) :exit - (behavior () (sound-stop (-> self grips-sound-id)) (none)) + (behavior () + (sound-stop (-> self grips-sound-id)) + (none) + ) :code (behavior () (hide-hud) @@ -1661,7 +1666,10 @@ (none) ) :trans - (behavior () (hide-hud) (none)) + (behavior () + (hide-hud) + (none) + ) :code (behavior () (set! (-> self lock-time) (the-as uint (-> *display* base-frame-counter))) @@ -1775,10 +1783,9 @@ (set! (-> self lock-time) (the-as uint (-> *display* base-frame-counter))) ) (periscope-crosshair) - (when (or - (cpad-pressed? 0 triangle x) - (and (-> self aligned?) (>= (- (-> *display* base-frame-counter) (the-as int (-> self lock-time))) 900)) - ) + (when (or (cpad-pressed? 0 triangle x) + (and (-> self aligned?) (>= (- (-> *display* base-frame-counter) (the-as int (-> self lock-time))) 900)) + ) (sound-stop (-> self sound-id)) (if (periscope-test-task-complete?) (close-specific-task! (game-task jungle-lurkerm) (task-status need-reminder)) @@ -1816,11 +1823,10 @@ (run-next-time-in-process gp-2 (lambda ((arg0 string)) - (while (or - (-> *setting-control* current ambient) - (-> *setting-control* current movie) - (-> *setting-control* current hint) - ) + (while (or (-> *setting-control* current ambient) + (-> *setting-control* current movie) + (-> *setting-control* current hint) + ) (suspend) ) (cond @@ -1880,7 +1886,12 @@ (none) ) :post - (behavior () (periscope-draw-beam) (periscope-update-joints) (ja-post) (none)) + (behavior () + (periscope-draw-beam) + (periscope-update-joints) + (ja-post) + (none) + ) ) (defstate periscope-power-on (periscope) @@ -1927,34 +1938,34 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 96256.0 0.0 98304.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 96256.0 0.0 98304.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 9216.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 11264.0) (append-prim s3-0 s2-2) @@ -2085,7 +2096,10 @@ (none) ) :post - (behavior () (draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans)) (none)) + (behavior () + (draw-power-beam (-> self reflector-trans) (-> self next-reflector-trans)) + (none) + ) ) (defmethod init-from-entity! reflector-origin ((obj reflector-origin) (arg0 entity-actor)) @@ -2111,7 +2125,10 @@ ) ) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :code (behavior () (let ((gp-0 (new-stack-vector0))) @@ -2227,33 +2244,33 @@ (defmethod init-from-entity! reflector-mirror ((obj reflector-mirror) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 6963.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 18432.0 0.0 6963.2) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 30720.0 0.0 8192.0) (append-prim s3-0 s2-2) ) @@ -2305,10 +2322,9 @@ ) ) ) - (if (and - (< 4096.0 (vector-vector-distance (camera-pos) arg0)) - (< 4096.0 (vector-vector-distance (camera-pos) arg1)) - ) + (if (and (< 4096.0 (vector-vector-distance (camera-pos) arg0)) + (< 4096.0 (vector-vector-distance (camera-pos) arg1)) + ) (draw-eco-beam arg0 arg1) ) ) diff --git a/goal_src/levels/jungle/jungle-obs.gc b/goal_src/levels/jungle/jungle-obs.gc index 9eb3e6cea2..2b89486ff9 100644 --- a/goal_src/levels/jungle/jungle-obs.gc +++ b/goal_src/levels/jungle/jungle-obs.gc @@ -127,8 +127,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) (set-root-prim! s4-0 s3-0) @@ -286,17 +286,17 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 36044.8 0.0 47104.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) (append-prim s3-0 s2-0) @@ -400,34 +400,34 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) (append-prim s3-0 s2-2) @@ -535,10 +535,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) (set-root-prim! s4-0 s3-0) @@ -759,12 +759,13 @@ (defstate precurbridge-idle (precurbridge) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('go) - (go precurbridge-activate) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('go) + (go precurbridge-activate) + ) + ) + ) :code (behavior () (let ((gp-0 (-> self skel root-channel 0))) @@ -777,13 +778,12 @@ ) (transform-post) (while #t - (when (and - *target* - (< (vector-vector-xz-distance (-> self activation-point) (-> *target* control trans)) 49152.0) - (< (-> self activation-point y) (-> *target* control trans y)) - (< (-> *target* control trans y) (+ 20480.0 (-> self activation-point y))) - (not (-> self child)) - ) + (when (and *target* + (< (vector-vector-xz-distance (-> self activation-point) (-> *target* control trans)) 49152.0) + (< (-> self activation-point y) (-> *target* control trans y)) + (< (-> *target* control trans y) (+ 20480.0 (-> self activation-point y))) + (not (-> self child)) + ) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 2) @@ -845,7 +845,10 @@ (defstate precurbridge-activate (precurbridge) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans (the-as (function none :behavior precurbridge) rider-trans) :code @@ -932,8 +935,8 @@ (cond ((and *target* (>= 61440.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 5) ) ) @@ -950,8 +953,8 @@ ) (else (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 4) ) ) @@ -991,152 +994,152 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 16) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 81920.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 9) (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 11) (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 13) (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 3)) - (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 15) (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 3)) - (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 17) (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 3)) - (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 19) (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 3)) - (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 4) (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-8) ) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 3)) - (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-9 collide-with) (collide-kind target)) + (set! (-> s2-9 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 6) (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-9) ) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 3)) - (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-10 collide-with) (collide-kind target)) + (set! (-> s2-10 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 8) (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-10) ) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 3)) - (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-11 collide-with) (collide-kind target)) + (set! (-> s2-11 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 10) (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-11) ) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 3)) - (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-12 collide-with) (collide-kind target)) + (set! (-> s2-12 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 12) (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-12) ) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 3)) - (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-13 collide-with) (collide-kind target)) + (set! (-> s2-13 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 14) (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-13) ) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 3)) - (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-14 collide-with) (collide-kind target)) + (set! (-> s2-14 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 16) (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-14) ) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 3)) - (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-15 collide-with) (collide-kind target)) + (set! (-> s2-15 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 18) (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-15) @@ -1203,16 +1206,13 @@ (suspend) (dummy-47 (-> self root-override)) (while #t - (when (or - (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) - (and - (and - *target* - (>= (-> self thresh w) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (send-event *target* 'query 'powerup 3) + (when (or (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete))) + (and (and *target* + (>= (-> self thresh w) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (send-event *target* 'query 'powerup 3) + ) ) - ) (sound-play-by-name (static-sound-name "blue-eco-on") (new-sound-id) @@ -1224,10 +1224,9 @@ ) (go maindoor-open #f) ) - (if (and - *target* - (>= (-> self thresh w) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= (-> self thresh w) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) (level-hint-spawn (game-text-id jungle-maindoor-hint) "sksp0038" @@ -1237,8 +1236,8 @@ ) ) (when (ja-min? 0) - (set! (-> self root-override root-prim prim-core action) (the-as uint 1)) - (set! (-> self root-override root-prim prim-core offense) 4) + (set! (-> self root-override root-prim prim-core action) (collide-action solid)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) ) (let ((a0-19 (-> self skel root-channel 0))) (set! (-> a0-19 param 0) 0.0) @@ -1264,8 +1263,8 @@ (set! (-> v1-6 frame-num) (the float (+ (-> v1-6 frame-group data 0 length) -1))) ) ) - (set! (-> self root-override root-prim prim-core action) (the-as uint 0)) - (set! (-> self root-override root-prim prim-core offense) 0) + (set! (-> self root-override root-prim prim-core action) (collide-action)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense no-offense)) (while (not (ja-max? 0)) (let ((a0-10 (-> self skel root-channel 0))) (set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1))) @@ -1290,10 +1289,10 @@ (defmethod init-from-entity! maindoor ((obj maindoor) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -1306,15 +1305,12 @@ (initialize-skeleton obj *maindoor-sg* '()) (dummy-47 (-> obj root-override)) (set! (-> obj thresh w) 61440.0) - (if (or - (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) - (and - (and - *target* - (>= (-> obj thresh w) (vector-vector-distance (-> obj root-override trans) (-> *target* control trans))) - ) - (send-event *target* 'query 'powerup 3) - ) + (if (or (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (and (and *target* + (>= (-> obj thresh w) (vector-vector-distance (-> obj root-override trans) (-> *target* control trans))) + ) + (send-event *target* 'query 'powerup 3) + ) ) (go maindoor-open #t) (go maindoor-closed #t) @@ -1342,10 +1338,10 @@ (defmethod TODO-RENAME-24 sidedoor ((obj sidedoor)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) (set-root-prim! s5-0 s4-0) @@ -1413,13 +1409,13 @@ ) (cond ((< (ja-frame-num 0) (the float (/ (ja-num-frames 0) 3))) - (set! (-> self back-prim prim-core collide-as) (the-as uint 0)) - (set! (-> self back-prim collide-with) (the-as uint 0)) + (set! (-> self back-prim prim-core collide-as) (collide-kind)) + (set! (-> self back-prim collide-with) (collide-kind)) 0 ) (else - (set! (-> self back-prim prim-core collide-as) (the-as uint 2048)) - (set! (-> self back-prim collide-with) (the-as uint 16)) + (set! (-> self back-prim prim-core collide-as) (collide-kind ground-object)) + (set! (-> self back-prim collide-with) (collide-kind target)) ) ) (suspend) @@ -1439,26 +1435,26 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 36864.0 0.0 0.0 20480.0) (append-prim s3-0 s2-1) diff --git a/goal_src/levels/jungle/junglefish.gc b/goal_src/levels/jungle/junglefish.gc index c6557b3b2d..d3a0e40726 100644 --- a/goal_src/levels/jungle/junglefish.gc +++ b/goal_src/levels/jungle/junglefish.gc @@ -37,398 +37,246 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :exit (behavior () - (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) - (none) - ) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (none) + ) :code (behavior () - (ja-channel-push! 1 60) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) - (while #t - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info walk-anim)) - ) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info walk-anim)) - ) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-2 param 1) f30-0) - (set! (-> a0-2 frame-num) 0.0) - (joint-control-channel-group! - a0-2 - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info walk-anim)) - ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 param 0) - (the float (+ (-> a0-3 frame-group data 0 length) -1)) - ) - (set! (-> a0-3 param 1) f30-0) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (when (nav-enemy-rnd-go-idle? 0.2) - (let ((a0-6 (-> self skel root-channel 0))) - (set! (-> a0-6 param 0) 1.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 180) - (set! (-> self target-speed) 0.0) - (let ((a0-8 (-> self skel root-channel 0))) - (set! - (-> a0-8 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info idle-anim)) - ) - ) - (set! - (-> a0-8 param 0) - (the - float - (+ - (-> - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info idle-anim)) + (ja-channel-push! 1 60) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) + (while #t + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info walk-anim))) + ) + (set! (-> a0-2 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self nav-info walk-anim))) data 0 length) -1) + ) + ) + (set! (-> a0-2 param 1) f30-0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! + a0-2 + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info walk-anim))) + num-func-seek! ) - data - 0 - length - ) - -1 ) - ) - ) - (set! (-> a0-8 param 1) f30-0) - (set! (-> a0-8 frame-num) 0.0) - (joint-control-channel-group! - a0-8 - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info idle-anim)) - ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (let ((a0-9 (-> self skel root-channel 0))) - (set! - (-> a0-9 param 0) - (the float (+ (-> a0-9 frame-group data 0 length) -1)) - ) - (set! (-> a0-9 param 1) f30-0) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (until (not (nav-enemy-rnd-go-idle? 0.2)) - (let ((a0-11 (-> self skel root-channel 0))) - (set! - (-> a0-11 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info idle-anim)) - ) - ) - (set! - (-> a0-11 param 0) - (the - float - (+ - (-> - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info idle-anim)) - ) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1))) + (set! (-> a0-3 param 1) f30-0) + (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-11 param 1) f30-0) - (set! (-> a0-11 frame-num) 0.0) - (joint-control-channel-group! - a0-11 - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info idle-anim)) - ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-12 (-> self skel root-channel 0))) - (set! - (-> a0-12 param 0) - (the float (+ (-> a0-12 frame-group data 0 length) -1)) - ) - (set! (-> a0-12 param 1) f30-0) - (joint-control-channel-group-eval! - a0-12 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) - (let ((a0-15 (-> self skel root-channel 0))) - (set! (-> a0-15 param 0) 1.0) - (joint-control-channel-group! - a0-15 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 180) - (let ((a0-17 (-> self skel root-channel 0))) - (set! - (-> a0-17 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info walk-anim)) - ) - ) - (set! - (-> a0-17 param 0) - (the - float - (+ - (-> - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info walk-anim)) + (when (nav-enemy-rnd-go-idle? 0.2) + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 param 0) 1.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-channel-push! 1 180) + (set! (-> self target-speed) 0.0) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info idle-anim))) + ) + (set! (-> a0-8 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self nav-info idle-anim))) data 0 length) -1) + ) + ) + (set! (-> a0-8 param 1) f30-0) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! + a0-8 + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info idle-anim))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (let ((a0-9 (-> self skel root-channel 0))) + (set! (-> a0-9 param 0) (the float (+ (-> a0-9 frame-group data 0 length) -1))) + (set! (-> a0-9 param 1) f30-0) + (joint-control-channel-group-eval! a0-9 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (until (not (nav-enemy-rnd-go-idle? 0.2)) + (let ((a0-11 (-> self skel root-channel 0))) + (set! (-> a0-11 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info idle-anim))) + ) + (set! (-> a0-11 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self nav-info idle-anim))) data 0 length) -1) + ) + ) + (set! (-> a0-11 param 1) f30-0) + (set! (-> a0-11 frame-num) 0.0) + (joint-control-channel-group! + a0-11 + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info idle-anim))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-12 (-> self skel root-channel 0))) + (set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1))) + (set! (-> a0-12 param 1) f30-0) + (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (set! (-> self target-speed) (-> self nav-info walk-travel-speed)) + (let ((a0-15 (-> self skel root-channel 0))) + (set! (-> a0-15 param 0) 1.0) + (joint-control-channel-group! a0-15 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-channel-push! 1 180) + (let ((a0-17 (-> self skel root-channel 0))) + (set! (-> a0-17 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info walk-anim))) + ) + (set! (-> a0-17 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self nav-info walk-anim))) data 0 length) -1) + ) + ) + (set! (-> a0-17 param 1) f30-0) + (set! (-> a0-17 frame-num) 0.0) + (joint-control-channel-group! + a0-17 + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info walk-anim))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (ja-blend-eval) + (suspend) + (let ((a0-18 (-> self skel root-channel 0))) + (set! (-> a0-18 param 0) (the float (+ (-> a0-18 frame-group data 0 length) -1))) + (set! (-> a0-18 param 1) f30-0) + (joint-control-channel-group-eval! a0-18 (the-as art-joint-anim #f) num-func-seek!) + ) ) - data - 0 - length - ) - -1 ) - ) ) - (set! (-> a0-17 param 1) f30-0) - (set! (-> a0-17 frame-num) 0.0) - (joint-control-channel-group! - a0-17 - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info walk-anim)) - ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (ja-blend-eval) - (suspend) - (let ((a0-18 (-> self skel root-channel 0))) - (set! - (-> a0-18 param 0) - (the float (+ (-> a0-18 frame-group data 0 length) -1)) - ) - (set! (-> a0-18 param 1) f30-0) - (joint-control-channel-group-eval! - a0-18 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-notice (junglefish) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-chase) - (none) - ) + (go-virtual nav-enemy-chase) + (none) + ) ) (defstate nav-enemy-chase (junglefish) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :trans (behavior () - ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - (if - (and - *target* - (>= - 8192.0 - (vector-vector-distance - (-> self collide-info trans) - (-> *target* control trans) - ) - ) - ) - (go-virtual nav-enemy-attack) + ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) + (if (and *target* (>= 8192.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) + (go-virtual nav-enemy-attack) + ) + (none) ) - (none) - ) ) (defstate nav-enemy-stop-chase (junglefish) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-patrol) - (none) - ) + (go-virtual nav-enemy-patrol) + (none) + ) ) (defstate nav-enemy-stare (junglefish) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-patrol) - (none) - ) + (go-virtual nav-enemy-patrol) + (none) + ) ) (defstate nav-enemy-give-up (junglefish) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :code (behavior () - (go-virtual nav-enemy-patrol) - (none) - ) + (go-virtual nav-enemy-patrol) + (none) + ) ) (defstate nav-enemy-attack (junglefish) :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :code (behavior () - (ja-channel-push! 1 30) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (ja-channel-push! 1 30) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 1.0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 1.0) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-1 param 1) 1.0) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) + (go-virtual nav-enemy-chase) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) - ) - (set! (-> a0-2 param 1) 1.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go-virtual nav-enemy-chase) - (none) - ) :post (the-as (function none :behavior junglefish) nav-enemy-chase-post) ) @@ -437,185 +285,123 @@ nav-enemy-default-event-handler :virtual #t :event (the-as - (function process int symbol event-message-block object :behavior junglefish) - nav-enemy-default-event-handler - ) + (function process int symbol event-message-block object :behavior junglefish) + nav-enemy-default-event-handler + ) :code (behavior () - (ja-channel-push! 1 22) - (let ((a0-1 (-> self skel root-channel 0))) - (set! - (-> a0-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! - (-> a0-1 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 4)) - data - 0 - length + (ja-channel-push! 1 22) + (let ((a0-1 (-> self skel root-channel 0))) + (set! (-> a0-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> a0-1 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1)) + ) + (set! (-> a0-1 param 1) 2.0) + (set! (-> a0-1 frame-num) 0.0) + (joint-control-channel-group! a0-1 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 param 0) (the float (+ (-> a0-2 frame-group data 0 length) -1))) + (set! (-> a0-2 param 1) 2.0) + (joint-control-channel-group-eval! a0-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-1 param 1) 2.0) - (set! (-> a0-1 frame-num) 0.0) - (joint-control-channel-group! - a0-1 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 param 0) - (the float (+ (-> a0-2 frame-group data 0 length) -1)) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> a0-4 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 2.0) + (set! (-> a0-4 frame-num) 0.0) + (joint-control-channel-group! a0-4 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) ) - (set! (-> a0-2 param 1) 2.0) - (joint-control-channel-group-eval! - a0-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! - (-> a0-4 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 4)) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 param 0) (the float (+ (-> a0-5 frame-group data 0 length) -1))) + (set! (-> a0-5 param 1) 2.0) + (joint-control-channel-group-eval! a0-5 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-4 param 1) 2.0) - (set! (-> a0-4 frame-num) 0.0) - (joint-control-channel-group! - a0-4 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-seek! - ) + (go-virtual nav-enemy-patrol) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-5 (-> self skel root-channel 0))) - (set! - (-> a0-5 param 0) - (the float (+ (-> a0-5 frame-group data 0 length) -1)) - ) - (set! (-> a0-5 param 1) 2.0) - (joint-control-channel-group-eval! - a0-5 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go-virtual nav-enemy-patrol) - (none) - ) ) -(define - *junglefish-nav-enemy-info* - (new 'static 'nav-enemy-info - :idle-anim 4 - :walk-anim 4 - :turn-anim -1 - :notice-anim 4 - :run-anim 4 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 4 - :taunt-anim 4 - :die-anim 6 - :neck-joint -1 - :player-look-at-joint 5 - :run-travel-speed (meters 5.5) - :run-rotate-speed (degrees 720.0) - :run-acceleration (meters 6.0) - :run-turn-time (seconds 0.15) - :walk-travel-speed (meters 4.0) - :walk-rotate-speed (degrees 720.0) - :walk-acceleration (meters 6.0) - :walk-turn-time (seconds 0.15) - :attack-shove-back (meters 1.0) - :attack-shove-up (meters 0.5) - :shadow-size (meters 2.0) - :notice-nav-radius (meters 1.0) - :nav-nearest-y-threshold (meters 10.0) - :notice-distance (meters 25.0) - :stop-chase-distance (meters 35.0) - :frustration-distance (meters 8.0) - :frustration-time #x4b0 - :die-anim-hold-frame 10000000000.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1.0) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 1.0) - :shadow-min-y (meters -1.0) - :shadow-locus-dist (meters 150.0) - :use-align #f - :draw-shadow #f - :move-to-ground #f - :hover-if-no-ground #f - :use-momentum #t - :use-flee #f - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with #x1 - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *junglefish-nav-enemy-info* (new 'static 'nav-enemy-info + :idle-anim 4 + :walk-anim 4 + :turn-anim -1 + :notice-anim 4 + :run-anim 4 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 4 + :taunt-anim 4 + :die-anim 6 + :neck-joint -1 + :player-look-at-joint 5 + :run-travel-speed (meters 5.5) + :run-rotate-speed (degrees 720.0) + :run-acceleration (meters 6.0) + :run-turn-time (seconds 0.15) + :walk-travel-speed (meters 4.0) + :walk-rotate-speed (degrees 720.0) + :walk-acceleration (meters 6.0) + :walk-turn-time (seconds 0.15) + :attack-shove-back (meters 1.0) + :attack-shove-up (meters 0.5) + :shadow-size (meters 2.0) + :notice-nav-radius (meters 1.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 25.0) + :stop-chase-distance (meters 35.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 10000000000.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 1.0) + :shadow-min-y (meters -1.0) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #f + :move-to-ground #f + :hover-if-no-ground #f + :use-momentum #t + :use-flee #f + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) (defmethod init-from-entity! junglefish ((obj junglefish) (arg0 entity-actor)) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) + (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 2457.6) + (set-root-prim! s4-0 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj collide-info) s4-0) ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) - (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 2457.6) - (set-root-prim! s4-0 s3-0) - ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj collide-info) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *junglefish-sg* '()) (TODO-RENAME-45 obj *junglefish-nav-enemy-info*) diff --git a/goal_src/levels/jungle/junglesnake.gc b/goal_src/levels/jungle/junglesnake.gc index fd5fc0a2b2..b9aa40f1ba 100644 --- a/goal_src/levels/jungle/junglesnake.gc +++ b/goal_src/levels/jungle/junglesnake.gc @@ -61,7 +61,8 @@ (ry float :offset-assert 4) (drag-delta-ry float :offset-assert 8) ) - :allow-misaligned :method-count-assert 9 + :allow-misaligned + :method-count-assert 9 :size-assert #xc :flag-assert #x90000000c ) @@ -71,7 +72,8 @@ ((joint-index int32 :offset-assert 0) (flip-it symbol :offset-assert 4) ) - :allow-misaligned :method-count-assert 9 + :allow-misaligned + :method-count-assert 9 :size-assert #x8 :flag-assert #x900000008 ) @@ -369,7 +371,12 @@ junglesnake-default-event-handler (none) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defstate junglesnake-wake (junglesnake) @@ -438,17 +445,15 @@ junglesnake-default-event-handler ) :trans (behavior () - (if (and - (and *target* (>= 24576.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self refractory-delay)) - (zero? (logand (-> *target* state-flags) #x80f8)) - ) + (if (and (and *target* (>= 24576.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self refractory-delay)) + (zero? (logand (-> *target* state-flags) #x80f8)) + ) (go junglesnake-attack) ) (when *target* (let ((a0-8 (target-pos 0))) - (if (or - (>= (- (-> a0-8 y) (-> self root-override trans y)) 57344.0) + (if (or (>= (- (-> a0-8 y) (-> self root-override trans y)) 57344.0) (>= (vector-vector-xz-distance a0-8 (-> self root-override trans)) 163840.0) ) (go junglesnake-give-up) @@ -472,8 +477,8 @@ junglesnake-default-event-handler (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 2) ) (while (not (ja-done? 0)) @@ -518,9 +523,15 @@ junglesnake-default-event-handler :event junglesnake-default-event-handler :enter - (behavior () (set! (-> self hit-player) #f) (none)) + (behavior () + (set! (-> self hit-player) #f) + (none) + ) :exit - (behavior () (dummy-24 self) (none)) + (behavior () + (dummy-24 self) + (none) + ) :trans (behavior () (dummy-20 self) @@ -619,7 +630,10 @@ junglesnake-default-event-handler (none) ) :trans - (behavior () (dummy-20 self) (none)) + (behavior () + (dummy-20 self) + (none) + ) :code (behavior () (ja-channel-push! 1 30) @@ -707,7 +721,7 @@ junglesnake-default-event-handler (when (not (-> obj is-lethal?)) (set! (-> obj is-lethal?) #t) (let ((v1-5 (-> (the-as collide-shape-prim-group (-> obj root-override root-prim)) prims 0))) - (set! (-> v1-5 prim-core action) (logand -2 (-> v1-5 prim-core action))) + (logclear! (-> v1-5 prim-core action) (collide-action solid)) ) ) 0 @@ -718,7 +732,7 @@ junglesnake-default-event-handler (when (-> obj is-lethal?) (set! (-> obj is-lethal?) #f) (let ((v1-4 (-> (the-as collide-shape-prim-group (-> obj root-override root-prim)) prims 0))) - (logior! (-> v1-4 prim-core action) 1) + (logior! (-> v1-4 prim-core action) (collide-action solid)) ) (dummy-45 (-> obj root-override)) ) @@ -796,88 +810,88 @@ junglesnake-default-event-handler (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 30720.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 25) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 21) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 1) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense touch)) (set! (-> s2-3 transform-index) 19) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 1) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense touch)) (set! (-> s2-4 transform-index) 18) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 1)) - (set! (-> s2-5 prim-core offense) 1) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid)) + (set! (-> s2-5 prim-core offense) (collide-offense touch)) (set! (-> s2-5 transform-index) 17) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 1)) - (set! (-> s2-6 prim-core offense) 1) + (set! (-> s2-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid)) + (set! (-> s2-6 prim-core offense) (collide-offense touch)) (set! (-> s2-6 transform-index) 16) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 1)) - (set! (-> s2-7 prim-core offense) 1) + (set! (-> s2-7 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid)) + (set! (-> s2-7 prim-core offense) (collide-offense touch)) (set! (-> s2-7 transform-index) 15) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 1)) - (set! (-> s2-8 prim-core offense) 1) + (set! (-> s2-8 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid)) + (set! (-> s2-8 prim-core offense) (collide-offense touch)) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-8) diff --git a/goal_src/levels/jungleb/aphid.gc b/goal_src/levels/jungleb/aphid.gc index 527cf2828e..decae656c2 100644 --- a/goal_src/levels/jungleb/aphid.gc +++ b/goal_src/levels/jungleb/aphid.gc @@ -28,30 +28,27 @@ (defbehavior aphid-invulnerable aphid () (set! (-> self nav-enemy-flags) (logand -33 (-> self nav-enemy-flags))) - (dummy-54 (-> self collide-info) 2 4) + (dummy-54 (-> self collide-info) 2 (collide-offense indestructible)) (none) ) (defbehavior aphid-vulnerable aphid () (logior! (-> self nav-enemy-flags) 32) - (dummy-54 (-> self collide-info) 2 1) + (dummy-54 (-> self collide-info) 2 (collide-offense touch)) (none) ) (defmethod dummy-43 aphid ((obj aphid) (arg0 process) (arg1 event-message-block)) (cond - ((or - (logtest? (-> obj nav-enemy-flags) 32) - (= arg0 (ppointer->process (-> obj parent))) + ((or (logtest? (-> obj nav-enemy-flags) 32) (= arg0 (ppointer->process (-> obj parent)))) + (send-event arg0 'get-attack-count 1) + (logclear! (-> obj mask) (process-mask actor-pause attackable)) + (go (method-of-object obj nav-enemy-die)) ) - (send-event arg0 'get-attack-count 1) - (logclear! (-> obj mask) (process-mask actor-pause attackable)) - (go (method-of-object obj nav-enemy-die)) + (else + (dummy-44 obj arg0 arg1) + ) ) - (else - (dummy-44 obj arg0 arg1) - ) - ) ) (defstate nav-enemy-chase (aphid) @@ -60,554 +57,335 @@ aphid-vulnerable :code (behavior () - (let ((gp-0 (cond - ((>= (-> self try) 15) - 450 - ) - ((>= (-> self try) 10) - 300 - ) - ((>= (-> self try) 5) - 150 - ) - (else - 0 - ) + (let ((gp-0 (cond + ((>= (-> self try) 15) + 450 + ) + ((>= (-> self try) 10) + 300 + ) + ((>= (-> self try) 5) + 150 + ) + (else + 0 + ) + ) ) ) - ) - (while #t - (ja-channel-push! 1 15) - (sound-play-by-name - (static-sound-name "aphid-spike-out") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! - (-> a0-3 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length + (while #t + (ja-channel-push! 1 15) + (sound-play-by-name (static-sound-name "aphid-spike-out") (new-sound-id) 1024 0 0 1 #t) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-3 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-3 param 1) 1.0) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) ) - -1 - ) - ) - ) - (set! (-> a0-3 param 1) 1.0) - (set! (-> a0-3 frame-num) 0.0) - (joint-control-channel-group! - a0-3 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 param 0) - (the float (+ (-> a0-4 frame-group data 0 length) -1)) - ) - (set! (-> a0-4 param 1) 1.0) - (joint-control-channel-group-eval! - a0-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (aphid-invulnerable) - (ja-channel-push! 1 30) - (let ((v1-28 (-> self skel root-channel 0))) - (set! - (-> v1-28 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - ) - (let ((v1-31 (-> self skel root-channel 0))) - (set! (-> v1-31 num-func) num-func-identity) - (set! (-> v1-31 frame-num) 0.0) - ) - (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) - (s5-1 (-> *display* base-frame-counter)) - (s4-1 (- (the int (nav-enemy-rnd-float-range 900.0 1440.0)) gp-0)) - ) - (until (>= (- (-> *display* base-frame-counter) s5-1) s4-1) - (suspend) - (let ((a0-13 (-> self skel root-channel 0))) - (set! (-> a0-13 param 0) f30-0) - (joint-control-channel-group-eval! - a0-13 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - ) - (aphid-vulnerable) - (ja-channel-push! 1 15) - (sound-play-by-name - (static-sound-name "aphid-spike-in") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((a0-17 (-> self skel root-channel 0))) - (set! - (-> a0-17 frame-group) - (the-as art-joint-anim (-> self draw art-group data 6)) - ) - (set! (-> a0-17 param 0) 0.0) - (set! (-> a0-17 param 1) 1.0) - (set! - (-> a0-17 frame-num) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 6)) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1))) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (aphid-invulnerable) + (ja-channel-push! 1 30) + (let ((v1-28 (-> self skel root-channel 0))) + (set! (-> v1-28 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + ) + (let ((v1-31 (-> self skel root-channel 0))) + (set! (-> v1-31 num-func) num-func-identity) + (set! (-> v1-31 frame-num) 0.0) + ) + (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1)) + (s5-1 (-> *display* base-frame-counter)) + (s4-1 (- (the int (nav-enemy-rnd-float-range 900.0 1440.0)) gp-0)) + ) + (until (>= (- (-> *display* base-frame-counter) s5-1) s4-1) + (suspend) + (let ((a0-13 (-> self skel root-channel 0))) + (set! (-> a0-13 param 0) f30-0) + (joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + ) + (aphid-vulnerable) + (ja-channel-push! 1 15) + (sound-play-by-name (static-sound-name "aphid-spike-in") (new-sound-id) 1024 0 0 1 #t) + (let ((a0-17 (-> self skel root-channel 0))) + (set! (-> a0-17 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-17 param 0) 0.0) + (set! (-> a0-17 param 1) 1.0) + (set! (-> a0-17 frame-num) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (joint-control-channel-group! a0-17 (the-as art-joint-anim (-> self draw art-group data 6)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-18 (-> self skel root-channel 0))) + (set! (-> a0-18 param 0) 0.0) + (set! (-> a0-18 param 1) 1.0) + (joint-control-channel-group-eval! a0-18 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (ja-channel-push! 1 30) + (let ((v1-63 (-> self skel root-channel 0))) + (set! (-> v1-63 frame-group) + (the-as art-joint-anim (-> self draw art-group data (-> self nav-info run-anim))) + ) + ) + (let ((v1-66 (-> self skel root-channel 0))) + (set! (-> v1-66 num-func) num-func-identity) + (set! (-> v1-66 frame-num) 0.0) + ) + (let ((f30-1 (nav-enemy-rnd-float-range 0.9 1.1)) + (s5-3 (-> *display* base-frame-counter)) + (s4-3 (+ (the int (nav-enemy-rnd-float-range 660.0 900.0)) gp-0)) + ) + (until (>= (- (-> *display* base-frame-counter) s5-3) s4-3) + (suspend) + (let ((a0-29 (-> self skel root-channel 0))) + (set! (-> a0-29 param 0) f30-1) + (joint-control-channel-group-eval! a0-29 (the-as art-joint-anim #f) num-func-loop!) + ) + ) ) - -1 - ) ) - ) - (joint-control-channel-group! - a0-17 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-seek! - ) ) - (until (ja-done? 0) - (suspend) - (let ((a0-18 (-> self skel root-channel 0))) - (set! (-> a0-18 param 0) 0.0) - (set! (-> a0-18 param 1) 1.0) - (joint-control-channel-group-eval! - a0-18 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (ja-channel-push! 1 30) - (let ((v1-63 (-> self skel root-channel 0))) - (set! - (-> v1-63 frame-group) - (the-as - art-joint-anim - (-> self draw art-group data (-> self nav-info run-anim)) - ) - ) - ) - (let ((v1-66 (-> self skel root-channel 0))) - (set! (-> v1-66 num-func) num-func-identity) - (set! (-> v1-66 frame-num) 0.0) - ) - (let ((f30-1 (nav-enemy-rnd-float-range 0.9 1.1)) - (s5-3 (-> *display* base-frame-counter)) - (s4-3 (+ (the int (nav-enemy-rnd-float-range 660.0 900.0)) gp-0)) - ) - (until (>= (- (-> *display* base-frame-counter) s5-3) s4-3) - (suspend) - (let ((a0-29 (-> self skel root-channel 0))) - (set! (-> a0-29 param 0) f30-1) - (joint-control-channel-group-eval! - a0-29 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-stare (aphid) :virtual #t :code (behavior () - (set! (-> self turn-time) 60) - (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when - (or - (logtest? (-> self nav-enemy-flags) 256) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) - (ja-channel-push! 1 30) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 10)) - ) - (set! - (-> a0-3 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 10)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-3 param 1) f30-0) - (set! (-> a0-3 frame-num) 0.0) - (joint-control-channel-group! - a0-3 - (the-as art-joint-anim (-> self draw art-group data 10)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 param 0) - (the float (+ (-> a0-4 frame-group data 0 length) -1)) - ) - (set! (-> a0-4 param 1) f30-0) - (joint-control-channel-group-eval! - a0-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (while #t - (when (not (nav-enemy-facing-player? 2730.6667)) - (logior! (-> self nav-enemy-flags) 16) - (let ((a0-7 (-> self skel root-channel 0))) - (set! (-> a0-7 param 0) 1.0) - (joint-control-channel-group! - a0-7 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - (ja-channel-push! 1 60) - (let ((v1-35 (-> self skel root-channel 0))) - (set! - (-> v1-35 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - ) - (let ((v1-38 (-> self skel root-channel 0))) - (set! (-> v1-38 num-func) num-func-identity) - (set! (-> v1-38 frame-num) 0.0) - ) - (until (nav-enemy-facing-player? 1820.4445) - (ja-blend-eval) - (suspend) - (let ((a0-13 (-> self skel root-channel 0))) - (set! (-> a0-13 param 0) 0.75) - (joint-control-channel-group-eval! - a0-13 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) - (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) - ) - (when (nav-enemy-rnd-percent? 0.3) - (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 10) + (set! (-> self turn-time) 60) + (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) + (when (or (logtest? (-> self nav-enemy-flags) 256) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) ) - ) - (ja-channel-push! 1 30) - ) - (let ((a0-22 (-> self skel root-channel 0))) - (set! - (-> a0-22 frame-group) - (the-as art-joint-anim (-> self draw art-group data 10)) - ) - (set! - (-> a0-22 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 10)) - data - 0 - length - ) - -1 + (ja-channel-push! 1 30) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 10))) + (set! (-> a0-3 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1)) + ) + (set! (-> a0-3 param 1) f30-0) + (set! (-> a0-3 frame-num) 0.0) + (joint-control-channel-group! a0-3 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1))) + (set! (-> a0-4 param 1) f30-0) + (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) + ) ) - ) ) - (set! (-> a0-22 param 1) f30-0) - (set! (-> a0-22 frame-num) 0.0) - (joint-control-channel-group! - a0-22 - (the-as art-joint-anim (-> self draw art-group data 10)) - num-func-seek! + (while #t + (when (not (nav-enemy-facing-player? 2730.6667)) + (logior! (-> self nav-enemy-flags) 16) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) 1.0) + (joint-control-channel-group! a0-7 (the-as art-joint-anim #f) num-func-loop!) + ) + (ja-channel-push! 1 60) + (let ((v1-35 (-> self skel root-channel 0))) + (set! (-> v1-35 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + ) + (let ((v1-38 (-> self skel root-channel 0))) + (set! (-> v1-38 num-func) num-func-identity) + (set! (-> v1-38 frame-num) 0.0) + ) + (until (nav-enemy-facing-player? 1820.4445) + (ja-blend-eval) + (suspend) + (let ((a0-13 (-> self skel root-channel 0))) + (set! (-> a0-13 param 0) 0.75) + (joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-loop!) + ) + ) + (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) + ) + (when (nav-enemy-rnd-percent? 0.3) + (if (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 10) + ) + ) + (ja-channel-push! 1 30) + ) + (let ((a0-22 (-> self skel root-channel 0))) + (set! (-> a0-22 frame-group) (the-as art-joint-anim (-> self draw art-group data 10))) + (set! (-> a0-22 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 10)) data 0 length) -1)) + ) + (set! (-> a0-22 param 1) f30-0) + (set! (-> a0-22 frame-num) 0.0) + (joint-control-channel-group! a0-22 (the-as art-joint-anim (-> self draw art-group data 10)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-23 (-> self skel root-channel 0))) + (set! (-> a0-23 param 0) (the float (+ (-> a0-23 frame-group data 0 length) -1))) + (set! (-> a0-23 param 1) f30-0) + (joint-control-channel-group-eval! a0-23 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-23 (-> self skel root-channel 0))) - (set! - (-> a0-23 param 0) - (the float (+ (-> a0-23 frame-group data 0 length) -1)) - ) - (set! (-> a0-23 param 1) f30-0) - (joint-control-channel-group-eval! - a0-23 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) ) - ) + (none) ) - (none) - ) ) (defstate nav-enemy-give-up (aphid) :virtual #t :code (behavior () - (set! (-> self rotate-speed) 218453.33) - (set! (-> self turn-time) 150) - (ja-channel-push! 1 45) - (let ((s4-0 (-> self collide-info)) - (s5-0 (target-pos 0)) - ) - (when - (< - (fabs - (deg-diff - (y-angle s4-0) - (vector-y-angle - (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)) - ) - ) - ) - 12743.111 - ) - (let ((a0-6 (-> self skel root-channel 0))) - (set! - (-> a0-6 frame-group) - (the-as art-joint-anim (-> self draw art-group data 7)) - ) - (set! - (-> a0-6 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 7)) - data - 0 - length + (set! (-> self rotate-speed) 218453.33) + (set! (-> self turn-time) 150) + (ja-channel-push! 1 45) + (let ((s4-0 (-> self collide-info)) + (s5-0 (target-pos 0)) + ) + (when (< (fabs + (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) + ) + 12743.111 + ) + (let ((a0-6 (-> self skel root-channel 0))) + (set! (-> a0-6 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) + (set! (-> a0-6 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 7)) data 0 length) -1)) + ) + (set! (-> a0-6 param 1) 1.0) + (set! (-> a0-6 frame-num) 0.0) + (joint-control-channel-group! a0-6 (the-as art-joint-anim (-> self draw art-group data 7)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-7 (-> self skel root-channel 0))) + (set! (-> a0-7 param 0) (the float (+ (-> a0-7 frame-group data 0 length) -1))) + (set! (-> a0-7 param 1) 1.0) + (joint-control-channel-group-eval! a0-7 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 - ) ) - ) - (set! (-> a0-6 param 1) 1.0) - (set! (-> a0-6 frame-num) 0.0) - (joint-control-channel-group! - a0-6 - (the-as art-joint-anim (-> self draw art-group data 7)) - num-func-seek! - ) ) - (until (ja-done? 0) + (logclear! (-> self nav flags) (nav-control-flags bit17 bit19)) + (nav-enemy-get-new-patrol-point) + (let ((a0-12 (-> self skel root-channel 0))) + (set! (-> a0-12 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) + (set! (-> a0-12 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 8)) data 0 length) -1)) + ) + (set! (-> a0-12 param 1) 1.0) + (set! (-> a0-12 frame-num) 0.0) + (joint-control-channel-group! a0-12 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) + ) + (until (ja-done? 0) + (seek-to-point-toward-point! + (-> self collide-info) + (-> self nav destination-pos) + (-> self rotate-speed) + (-> self turn-time) + ) (suspend) - (let ((a0-7 (-> self skel root-channel 0))) - (set! - (-> a0-7 param 0) - (the float (+ (-> a0-7 frame-group data 0 length) -1)) + (let ((a0-14 (-> self skel root-channel 0))) + (set! (-> a0-14 param 0) (the float (+ (-> a0-14 frame-group data 0 length) -1))) + (set! (-> a0-14 param 1) 1.0) + (joint-control-channel-group-eval! a0-14 (the-as art-joint-anim #f) num-func-seek!) ) - (set! (-> a0-7 param 1) 1.0) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) ) - ) + (go-virtual nav-enemy-patrol) + (none) ) - (logclear! (-> self nav flags) (nav-control-flags bit17 bit19)) - (nav-enemy-get-new-patrol-point) - (let ((a0-12 (-> self skel root-channel 0))) - (set! - (-> a0-12 frame-group) - (the-as art-joint-anim (-> self draw art-group data 8)) - ) - (set! - (-> a0-12 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 8)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-12 param 1) 1.0) - (set! (-> a0-12 frame-num) 0.0) - (joint-control-channel-group! - a0-12 - (the-as art-joint-anim (-> self draw art-group data 8)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (seek-to-point-toward-point! - (-> self collide-info) - (-> self nav destination-pos) - (-> self rotate-speed) - (-> self turn-time) - ) - (suspend) - (let ((a0-14 (-> self skel root-channel 0))) - (set! - (-> a0-14 param 0) - (the float (+ (-> a0-14 frame-group data 0 length) -1)) - ) - (set! (-> a0-14 param 1) 1.0) - (joint-control-channel-group-eval! - a0-14 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go-virtual nav-enemy-patrol) - (none) - ) ) -(define - *aphid-nav-enemy-info* - (new 'static 'nav-enemy-info - :idle-anim 3 - :walk-anim 4 - :turn-anim 9 - :notice-anim 3 - :run-anim 4 - :jump-anim -1 - :jump-land-anim -1 - :victory-anim 10 - :taunt-anim 10 - :die-anim 11 - :neck-joint 10 - :player-look-at-joint 5 - :run-travel-speed (meters 5.0) - :run-rotate-speed (degrees 2880.0) - :run-acceleration (meters 1.0) - :run-turn-time (seconds 0.1) - :walk-travel-speed (meters 3.0) - :walk-rotate-speed (degrees 720.0) - :walk-acceleration (meters 1.0) - :walk-turn-time (seconds 0.5) - :attack-shove-back (meters 3.0) - :attack-shove-up (meters 2.0) - :shadow-size (meters 2.0) - :notice-nav-radius (meters 2.0) - :nav-nearest-y-threshold (meters 10.0) - :notice-distance (meters 30.0) - :stop-chase-distance (meters 40.0) - :frustration-distance (meters 8.0) - :frustration-time #x4b0 - :die-anim-hold-frame 24.0 - :jump-anim-start-frame 10.0 - :jump-land-anim-end-frame 10000000000.0 - :jump-height-min (meters 1.0) - :jump-height-factor 0.5 - :jump-start-anim-speed 1.0 - :shadow-max-y (meters 0.25) - :shadow-min-y (meters -0.25) - :shadow-locus-dist (meters 150.0) - :use-align #f - :draw-shadow #t - :move-to-ground #t - :hover-if-no-ground #f - :use-momentum #f - :use-flee #t - :use-proximity-notice #f - :use-jump-blocked #f - :use-jump-patrol #f - :gnd-collide-with #x1 - :debug-draw-neck #f - :debug-draw-jump #f - ) - ) +(define *aphid-nav-enemy-info* (new 'static 'nav-enemy-info + :idle-anim 3 + :walk-anim 4 + :turn-anim 9 + :notice-anim 3 + :run-anim 4 + :jump-anim -1 + :jump-land-anim -1 + :victory-anim 10 + :taunt-anim 10 + :die-anim 11 + :neck-joint 10 + :player-look-at-joint 5 + :run-travel-speed (meters 5.0) + :run-rotate-speed (degrees 2880.0) + :run-acceleration (meters 1.0) + :run-turn-time (seconds 0.1) + :walk-travel-speed (meters 3.0) + :walk-rotate-speed (degrees 720.0) + :walk-acceleration (meters 1.0) + :walk-turn-time (seconds 0.5) + :attack-shove-back (meters 3.0) + :attack-shove-up (meters 2.0) + :shadow-size (meters 2.0) + :notice-nav-radius (meters 2.0) + :nav-nearest-y-threshold (meters 10.0) + :notice-distance (meters 30.0) + :stop-chase-distance (meters 40.0) + :frustration-distance (meters 8.0) + :frustration-time #x4b0 + :die-anim-hold-frame 24.0 + :jump-anim-start-frame 10.0 + :jump-land-anim-end-frame 10000000000.0 + :jump-height-min (meters 1.0) + :jump-height-factor 0.5 + :jump-start-anim-speed 1.0 + :shadow-max-y (meters 0.25) + :shadow-min-y (meters -0.25) + :shadow-locus-dist (meters 150.0) + :use-align #f + :draw-shadow #t + :move-to-ground #t + :hover-if-no-ground #f + :use-momentum #f + :use-flee #t + :use-proximity-notice #f + :use-jump-blocked #f + :use-jump-patrol #f + :gnd-collide-with #x1 + :debug-draw-neck #f + :debug-draw-jump #f + ) + ) (defmethod initialize-collision aphid ((obj aphid)) - (let - ((s5-0 - (new - 'process - 'collide-shape-moving - obj - (collide-list-enum usually-hit-by-player) + (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) default-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) + (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) + (set-root-prim! s5-0 s4-0) ) - ) + (set! (-> s5-0 nav-radius) 6144.0) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 2)) + (set! (-> obj collide-info) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) default-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 1) - (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) 6144.0) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> obj collide-info) s5-0) - ) 0 (none) ) @@ -622,31 +400,26 @@ (none) ) -(defbehavior - aphid-init-by-other aphid - ((arg0 nav-enemy) (arg1 vector) (arg2 vector)) +(defbehavior aphid-init-by-other aphid ((arg0 nav-enemy) (arg1 vector) (arg2 vector)) (initialize-collision self) (logior! (-> self mask) (process-mask actor-pause)) (set! (-> self collide-info trans quad) (-> arg1 quad)) (set! (-> self event-param-point quad) (-> arg2 quad)) (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) arg2 arg1))) - (set! (-> s3-1 y) 0.0) - (vector-normalize! s3-1 1.0) - (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*) - ) + (set! (-> s3-1 y) 0.0) + (vector-normalize! s3-1 1.0) + (forward-up->quaternion (-> self collide-info quat) s3-1 *up-vector*) + ) (vector-identity! (-> self collide-info scale)) (set! (-> self entity) (-> arg0 entity)) (TODO-RENAME-48 self) (set! (-> self nav-enemy-flags) (logand -4097 (-> self nav-enemy-flags))) (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 0) - (set! (-> a1-3 message) 'try) - (set! - (-> self try) - (the-as int (send-event-function (ppointer->process (-> self parent)) a1-3)) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 0) + (set! (-> a1-3 message) 'try) + (set! (-> self try) (the-as int (send-event-function (ppointer->process (-> self parent)) a1-3))) ) - ) (go-virtual nav-enemy-chase) (none) ) diff --git a/goal_src/levels/jungleb/jungleb-obs.gc b/goal_src/levels/jungleb/jungleb-obs.gc index 75b5321be6..b9bc3d9604 100644 --- a/goal_src/levels/jungleb/jungleb-obs.gc +++ b/goal_src/levels/jungleb/jungleb-obs.gc @@ -255,7 +255,10 @@ ) ) :exit - (behavior () (sound-stop (-> self sound-id)) (none)) + (behavior () + (sound-stop (-> self sound-id)) + (none) + ) :trans (behavior () (if (and (not (-> self child)) (task-complete? *game-info* (-> self entity extra perm task))) @@ -266,14 +269,23 @@ (none) ) :code - (behavior () (suspend) (dummy-47 (-> self root-override)) (anim-loop) (none)) + (behavior () + (suspend) + (dummy-47 (-> self root-override)) + (anim-loop) + (none) + ) :post (the-as (function none :behavior eggtop) ja-post) ) (defstate eggtop-close (eggtop) :trans - (behavior () (rider-trans) (hide-hud-quick) (none)) + (behavior () + (rider-trans) + (hide-hud-quick) + (none) + ) :code (behavior ((arg0 symbol)) (when (not arg0) @@ -403,10 +415,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) (set-root-prim! s4-0 s3-0) @@ -460,10 +472,10 @@ (defmethod TODO-RENAME-24 jng-iris-door ((obj jng-iris-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/jungleb/plant-boss.gc b/goal_src/levels/jungleb/plant-boss.gc index 1d51a48e47..ed09028d1b 100644 --- a/goal_src/levels/jungleb/plant-boss.gc +++ b/goal_src/levels/jungleb/plant-boss.gc @@ -227,19 +227,18 @@ (defbehavior plant-boss-default-event-handler plant-boss ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch 'attack) - (if (and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root-override)) - (the-as uint 1) - ) - (not (= (if (> (-> self skel active-channels) 0) + (if (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 1) + ) + (not (= (if (> (-> self skel active-channels) 0) (-> self skel root-channel 0 frame-group) ) - (-> self draw art-group data 13) - ) - ) - ) + (-> self draw art-group data 13) + ) + ) + ) (send-event arg0 'attack-or-shove (-> arg3 param 0) (new 'static 'attack-info)) ) ) @@ -364,9 +363,9 @@ (let ((a0-1 (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0))) (set! (-> self root-override root-prim local-sphere w) 81920.0) (set! (-> (the-as collide-shape-prim-mesh a0-1) local-sphere w) 69632.0) - (set! (-> (the-as collide-shape-prim-mesh a0-1) collide-with) (the-as uint 16)) - (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core collide-as) (the-as uint 256)) - (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core offense) 4) + (set! (-> (the-as collide-shape-prim-mesh a0-1) collide-with) (collide-kind target)) + (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core collide-as) (collide-kind enemy)) + (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core offense) (collide-offense indestructible)) (let ((t9-0 (method-of-object (the-as collide-shape-prim-mesh a0-1) change-mesh)) (v1-10 (-> self side)) ) @@ -456,9 +455,9 @@ ) ) ) - (set! (-> (dummy-34 (-> self root-override) (the-as uint 1)) prim-core action) (the-as uint 0)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 1)) prim-core action) (collide-action)) 0 - (set! (-> (dummy-34 (-> self root-override) (the-as uint 2)) prim-core action) (the-as uint 0)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 2)) prim-core action) (collide-action)) 0 (dummy-47 (-> self root-override)) (while #t @@ -826,34 +825,34 @@ (stack-size-set! (-> self main-thread) 128) (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-group s3-0 (the-as uint 3) 0))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 16384.0 0.0 16384.0) (set-root-prim! s3-0 s2-0) (let ((s1-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s1-0 collide-with) (the-as uint 0)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 0) + (set! (-> s1-0 prim-core collide-as) (collide-kind)) + (set! (-> s1-0 collide-with) (collide-kind)) + (set! (-> s1-0 prim-core action) (collide-action solid)) + (set! (-> s1-0 prim-core offense) (collide-offense no-offense)) (set! (-> s1-0 transform-index) 5) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 81920.0) (append-prim s2-0 s1-0) ) (let ((s1-1 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 1)))) - (set! (-> s1-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-1 collide-with) (the-as uint 16)) - (set! (-> s1-1 prim-core action) (the-as uint 1)) - (set! (-> s1-1 prim-core offense) 4) + (set! (-> s1-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-1 collide-with) (collide-kind target)) + (set! (-> s1-1 prim-core action) (collide-action solid)) + (set! (-> s1-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-1 local-sphere) 0.0 12288.0 0.0 12288.0) (append-prim s2-0 s1-1) ) (let ((s1-2 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 2)))) - (set! (-> s1-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-2 collide-with) (the-as uint 16)) - (set! (-> s1-2 prim-core action) (the-as uint 1)) - (set! (-> s1-2 prim-core offense) 4) + (set! (-> s1-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-2 collide-with) (collide-kind target)) + (set! (-> s1-2 prim-core action) (collide-action solid)) + (set! (-> s1-2 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-2 local-sphere) 0.0 20480.0 0.0 12288.0) (append-prim s2-0 s1-2) ) @@ -875,25 +874,25 @@ (stack-size-set! (-> self main-thread) 128) (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-group s3-0 (the-as uint 2) 0))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) -30720.0 6144.0 26624.0 16384.0) (set-root-prim! s3-0 s2-0) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 4) + (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core action) (collide-action solid)) + (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) -32768.0 6144.0 32768.0 4915.2) (append-prim s2-0 s1-0) ) (let ((s1-1 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s1-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-1 collide-with) (the-as uint 16)) - (set! (-> s1-1 prim-core action) (the-as uint 1)) - (set! (-> s1-1 prim-core offense) 4) + (set! (-> s1-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-1 collide-with) (collide-kind target)) + (set! (-> s1-1 prim-core action) (collide-action solid)) + (set! (-> s1-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-1 local-sphere) -28672.0 6144.0 20480.0 4915.2) (append-prim s2-0 s1-1) ) @@ -1319,10 +1318,10 @@ ) (dummy-29 s3-0 1) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 12288.0 13926.4) (set-root-prim! s3-0 s2-0) @@ -1377,13 +1376,11 @@ ) (until (ja-done? 0) (set! (-> self energy) (seek (-> self energy) (the-as float 0.25) (-> *display* seconds-per-frame))) - (if (and - (and - *target* - (>= 245760.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (< (fabs (- (-> (target-pos 0) y) (-> self root-override trans y))) 40960.0) - ) + (if (and (and *target* + (>= 245760.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (< (fabs (- (-> (target-pos 0) y) (-> self root-override trans y))) 40960.0) + ) (go plant-boss-intro) ) (suspend) @@ -1402,7 +1399,7 @@ (defstate plant-boss-intro (plant-boss) :code - (behavior ()) + (behavior () (none)) ;; TODO :post (the-as (function none :behavior plant-boss) ja-post) ) @@ -1424,26 +1421,25 @@ (if (< 409600.0 f30-0) (go plant-boss-far-idle) ) - (if (and - (< f30-0 143360.0) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (cond - ((>= (-> self try) 15) - 1500 - ) - ((>= (-> self try) 10) - 1200 - ) - ((>= (-> self try) 5) - 900 - ) - (else - 600 + (if (and (< f30-0 143360.0) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (cond + ((>= (-> self try) 15) + 1500 ) - ) - ) - *target* - (zero? (logand (-> *target* state-flags) #x80f8)) - ) + ((>= (-> self try) 10) + 1200 + ) + ((>= (-> self try) 5) + 900 + ) + (else + 600 + ) + ) + ) + *target* + (zero? (logand (-> *target* state-flags) #x80f8)) + ) (go plant-boss-attack 1) ) ) @@ -1453,8 +1449,8 @@ (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 7) ) (ja-channel-push! 1 150) @@ -1478,8 +1474,8 @@ ) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 12) ) (ja-channel-push! 1 75) @@ -1525,8 +1521,8 @@ ) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 10) ) ) @@ -1720,8 +1716,8 @@ (set! (-> self body flex-blend) 0.0) (set! (-> self neck flex-blend) 0.0) (set! (-> self attack-prim 0 local-sphere w) 12288.0) - (set! (-> self attack-prim 0 prim-core offense) 4) - (logior! (-> self attack-prim 0 prim-core action) 1) + (set! (-> self attack-prim 0 prim-core offense) (collide-offense indestructible)) + (logior! (-> self attack-prim 0 prim-core action) (collide-action solid)) (none) ) :exit @@ -1729,8 +1725,8 @@ (send-event (ppointer->process (-> self leaf 1)) 'kill 0) (send-event (ppointer->process (-> self leaf 0)) 'kill 150) (set! (-> self attack-prim 0 local-sphere w) 16384.0) - (set! (-> self attack-prim 0 prim-core offense) 0) - (set! (-> self attack-prim 0 prim-core action) (logand -2 (-> self attack-prim 0 prim-core action))) + (set! (-> self attack-prim 0 prim-core offense) (collide-offense no-offense)) + (logclear! (-> self attack-prim 0 prim-core action) (collide-action solid)) (none) ) :code @@ -1834,19 +1830,18 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('touch 'attack) - (when (and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root-override)) - (the-as uint 1) - ) - (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 13) + (when (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 1) + ) + (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 13) + ) ) - ) - ) + ) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 2) @@ -1878,10 +1873,10 @@ (set! (-> self interp) 0.0) (let ((s5-0 #f)) (if (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 7) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 7) + ) (set! s5-0 #t) ) (ja-channel-push! 2 75) @@ -1984,10 +1979,10 @@ :code (behavior () (let ((f30-1 (if (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) (fmax (-> (new 'static 'array float 1 129.0) 0) (ja-aframe-num 0)) (-> (new 'static 'array float 1 129.0) 0) ) @@ -2093,8 +2088,8 @@ (let ((gp-0 #f)) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 10) ) (set! gp-0 #t) @@ -2369,17 +2364,17 @@ (set! s5-3 (-> s5-3 0 brother)) ) ) - (set! (-> self death-prim 0 collide-with) (the-as uint 16)) - (set! (-> self death-prim 0 prim-core collide-as) (the-as uint 256)) - (set! (-> self death-prim 0 prim-core offense) 4) - (logior! (-> self death-prim 0 prim-core action) 1) - (set! (-> self death-prim 1 prim-core collide-as) (the-as uint 256)) - (set! (-> self death-prim 1 collide-with) (the-as uint 16)) - (set! (-> self death-prim 1 prim-core offense) 4) - (logior! (-> self death-prim 1 prim-core action) 1) - (set! (-> (dummy-34 (-> self root-override) (the-as uint 8)) prim-core action) (the-as uint 0)) + (set! (-> self death-prim 0 collide-with) (collide-kind target)) + (set! (-> self death-prim 0 prim-core collide-as) (collide-kind enemy)) + (set! (-> self death-prim 0 prim-core offense) (collide-offense indestructible)) + (logior! (-> self death-prim 0 prim-core action) (collide-action solid)) + (set! (-> self death-prim 1 prim-core collide-as) (collide-kind enemy)) + (set! (-> self death-prim 1 collide-with) (collide-kind target)) + (set! (-> self death-prim 1 prim-core offense) (collide-offense indestructible)) + (logior! (-> self death-prim 1 prim-core action) (collide-action solid)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 8)) prim-core action) (collide-action)) 0 - (set! (-> (dummy-34 (-> self root-override) (the-as uint 16)) prim-core action) (the-as uint 0)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 16)) prim-core action) (collide-action)) 0 (logior! (-> self mask) (process-mask actor-pause)) (clear-pending-settings-from-process *setting-control* self 'music) @@ -2387,7 +2382,11 @@ (none) ) :post - (behavior () (plant-boss-post) (dummy-45 (-> self root-override)) (none)) + (behavior () + (plant-boss-post) + (dummy-45 (-> self root-override)) + (none) + ) ) (defstate plant-boss-dead-idle (plant-boss) @@ -2502,50 +2501,50 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 32768.0 81920.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 8)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 12288.0 12288.0 12288.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 16)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 12288.0 12288.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 5)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 13) (set-vector! (-> s2-2 local-sphere) 0.0 (-> (new 'static 'array float 1 8192.0) 0) 0.0 16384.0) (append-prim s3-0 s2-2) (set! (-> obj attack-prim 0) s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 0)) - (set! (-> s2-3 collide-with) (the-as uint 0)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind)) + (set! (-> s2-3 collide-with) (collide-kind)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 13) (set-vector! (-> s2-3 local-sphere) 0.0 (-> (new 'static 'array float 1 8192.0) 0) 0.0 16384.0) (append-prim s3-0 s2-3) (set! (-> obj death-prim 0) s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 0)) - (set! (-> s2-4 collide-with) (the-as uint 0)) - (set! (-> s2-4 prim-core offense) 0) + (set! (-> s2-4 prim-core collide-as) (collide-kind)) + (set! (-> s2-4 collide-with) (collide-kind)) + (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 12) (set-vector! (-> s2-4 local-sphere) 0.0 -24576.0 0.0 40960.0) (append-prim s3-0 s2-4) diff --git a/goal_src/levels/jungleb/plat-flip.gc b/goal_src/levels/jungleb/plat-flip.gc index 4a923bd950..a09b49e516 100644 --- a/goal_src/levels/jungleb/plat-flip.gc +++ b/goal_src/levels/jungleb/plat-flip.gc @@ -151,10 +151,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/lavatube/lavatube-energy.gc b/goal_src/levels/lavatube/lavatube-energy.gc index 81eded1fe7..6dd5ae978c 100644 --- a/goal_src/levels/lavatube/lavatube-energy.gc +++ b/goal_src/levels/lavatube/lavatube-energy.gc @@ -519,12 +519,12 @@ (set! (-> a0-0 param 0) 0.0) (set! (-> a0-0 param 1) 1.0) (set! (-> a0-0 frame-num) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -545,8 +545,7 @@ (joint-control-channel-group-eval! a0-1 (the-as art-joint-anim #f) num-func-seek!) ) ) - (if (or - (task-closed? (-> self entity extra perm task) (task-status need-resolution)) + (if (or (task-closed? (-> self entity extra perm task) (task-status need-resolution)) (< (energydoor-player-dist) 0.0) ) (go energydoor-closed-till-near) @@ -561,8 +560,10 @@ (defstate energydoor-opened (energydoor) :event energydoor-open-handler - :trans - (behavior () (none)) ;; TODO fix me + :trans (behavior () + (format 0 "energydoor-opened trans NYI~%") + (none)) + ;; TODO :code (behavior () (let ((v1-2 (-> self skel root-channel 0))) @@ -588,12 +589,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -699,10 +700,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 8) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) (set-root-prim! s4-0 s3-0) @@ -798,12 +799,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -840,12 +841,13 @@ (defstate energybase-idle (energybase) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('stop) - (go energybase-stopping) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('stop) + (go energybase-stopping) + ) + ) + ) :code (behavior () (while #t @@ -864,12 +866,12 @@ ) ) (set! (-> a0-2 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1056,12 +1058,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1100,10 +1102,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) ) @@ -1171,7 +1173,10 @@ (defstate energyarm-stop (energyarm) :enter - (behavior () '() (none)) + (behavior () + '() + (none) + ) :trans (behavior () (update! (-> self x-rotation) 0.0) @@ -1188,12 +1193,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1225,14 +1230,18 @@ (defstate energyarm-no-ball (energyarm) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('stop) - (go energyarm-stop) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('stop) + (go energyarm-stop) + ) + ) + ) :enter - (behavior () (set! (-> self y-chatter-rotation osc target) 1.0) (none)) + (behavior () + (set! (-> self y-chatter-rotation osc target) 1.0) + (none) + ) :trans (behavior () (set! (-> self x-correction) (fmax -1.0 (+ -0.1 (-> self x-correction)))) @@ -1269,12 +1278,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1306,7 +1315,10 @@ (defstate energyarm-fall (energyarm) :enter - (behavior () (set! (-> self x-fall-rotation osc target) 1.0) (none)) + (behavior () + (set! (-> self x-fall-rotation osc target) 1.0) + (none) + ) :trans (behavior () (update! (-> self x-fall-rotation) 0.0) @@ -1330,12 +1342,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1367,12 +1379,13 @@ (defstate energyarm-idle (energyarm) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('stop) - (go energyarm-stop) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('stop) + (go energyarm-stop) + ) + ) + ) :trans (behavior () (update! (-> self x-rotation) 0.0) @@ -1449,10 +1462,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -12288.0 -81920.0 69632.0) (set-root-prim! s5-0 s4-0) @@ -1525,13 +1538,12 @@ ) (defbehavior energyhub-trans energyhub () - (+! - (-> self y-rotation) - (* 36.40889 - (-> self rotation-speed value) - (the float (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter))) - ) - ) + (+! (-> self y-rotation) + (* 36.40889 + (-> self rotation-speed value) + (the float (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter))) + ) + ) (cond ((< 65536.0 (-> self y-rotation)) (set! (-> self y-rotation) (+ -65536.0 (-> self y-rotation))) @@ -1878,12 +1890,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) diff --git a/goal_src/levels/lavatube/lavatube-obs.gc b/goal_src/levels/lavatube/lavatube-obs.gc index 5d1ddf74d0..a50ea3a053 100644 --- a/goal_src/levels/lavatube/lavatube-obs.gc +++ b/goal_src/levels/lavatube/lavatube-obs.gc @@ -37,12 +37,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -110,12 +110,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -183,12 +183,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -663,25 +663,24 @@ (cond ((= arg0 *target*) (let ((s5-0 (-> arg3 param 0))) - (if (and - s5-0 - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry s5-0) - (-> self root-override) - (the-as uint 1) - ) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'attack-invinc) - (set! (-> a1-2 param 0) s5-0) - (let ((a0-4 (new 'static 'attack-info :mask #x20))) - (set! (-> a0-4 mode) 'death) - (set! (-> a1-2 param 1) (the-as uint a0-4)) - ) - (send-event-function arg0 a1-2) + (if (and s5-0 + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry s5-0) + (-> self root-override) + (the-as uint 1) ) - ) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'attack-invinc) + (set! (-> a1-2 param 0) s5-0) + (let ((a0-4 (new 'static 'attack-info :mask #x20))) + (set! (-> a0-4 mode) 'death) + (set! (-> a1-2 param 1) (the-as uint a0-4)) + ) + (send-event-function arg0 a1-2) + ) + ) (go darkecobarrel-mover-die) ) ) @@ -778,26 +777,26 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s1-0 (new 'process 'collide-shape-prim-group s2-0 (the-as uint 2) 0))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) + (set! (-> s1-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core action) (collide-action solid)) (set! (-> s1-0 transform-index) 3) (set-vector! (-> s1-0 local-sphere) 0.0 -32768.0 0.0 32768.0) (set-root-prim! s2-0 s1-0) (let ((s0-0 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s0-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s0-0 collide-with) (the-as uint 16)) - (set! (-> s0-0 prim-core action) (the-as uint 1)) - (set! (-> s0-0 prim-core offense) 4) + (set! (-> s0-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s0-0 collide-with) (collide-kind target)) + (set! (-> s0-0 prim-core action) (collide-action solid)) + (set! (-> s0-0 prim-core offense) (collide-offense indestructible)) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 -32768.0 0.0 32768.0) (append-prim s1-0 s0-0) ) (let ((s0-1 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s0-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s0-1 collide-with) (the-as uint 16)) - (set! (-> s0-1 prim-core action) (the-as uint 1)) - (set! (-> s0-1 prim-core offense) 4) + (set! (-> s0-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s0-1 collide-with) (collide-kind target)) + (set! (-> s0-1 prim-core action) (collide-action solid)) + (set! (-> s0-1 prim-core offense) (collide-offense indestructible)) (set! (-> s0-1 transform-index) 3) (set-vector! (-> s0-1 local-sphere) 0.0 -32768.0 0.0 32768.0) (append-prim s1-0 s0-1) @@ -880,12 +879,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1027,12 +1026,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1100,12 +1099,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1395,12 +1394,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1442,10 +1441,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 -73728.0 0.0 18432.0) (set-root-prim! s4-0 s3-0) @@ -1641,12 +1640,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1679,9 +1678,9 @@ (defmethod init-from-entity! lavaballoon ((obj lavaballoon) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) ) @@ -1785,12 +1784,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) diff --git a/goal_src/levels/maincave/baby-spider.gc b/goal_src/levels/maincave/baby-spider.gc index 8bab5c3485..a893ddcdc4 100644 --- a/goal_src/levels/maincave/baby-spider.gc +++ b/goal_src/levels/maincave/baby-spider.gc @@ -342,15 +342,14 @@ baby-spider-default-event-handler ((TODO-RENAME-46 self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase) ) - ((and - (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) - ) + ((and (and *target* (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status drwf03)) + ) (go-virtual nav-enemy-patrol) ) ) @@ -391,7 +390,10 @@ baby-spider-default-event-handler (none) ) :post - (behavior () (ja-post) (none)) + (behavior () + (ja-post) + (none) + ) ) (defstate nav-enemy-patrol (baby-spider) @@ -544,7 +546,11 @@ baby-spider-default-event-handler (none) ) :post - (behavior () (dummy-52 self (target-pos 0)) (nav-enemy-travel-post) (none)) + (behavior () + (dummy-52 self (target-pos 0)) + (nav-enemy-travel-post) + (none) + ) ) (defstate nav-enemy-stop-chase (baby-spider) @@ -807,10 +813,10 @@ baby-spider-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0) (set-root-prim! s5-0 s4-0) ) diff --git a/goal_src/levels/maincave/dark-crystal.gc b/goal_src/levels/maincave/dark-crystal.gc index a9ff06ebdf..f9ed9162a1 100644 --- a/goal_src/levels/maincave/dark-crystal.gc +++ b/goal_src/levels/maincave/dark-crystal.gc @@ -715,10 +715,10 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 6963.2 0.0 15564.8) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/maincave/driller-lurker.gc b/goal_src/levels/maincave/driller-lurker.gc index e34720d53c..bc91e101ce 100644 --- a/goal_src/levels/maincave/driller-lurker.gc +++ b/goal_src/levels/maincave/driller-lurker.gc @@ -270,13 +270,11 @@ ) (while s0-0 (set! sv-96 (get-touched-prim s0-0 (-> self root-overeride) (the-as touching-prims-entry s1-0))) - (if (and - (logtest? - (-> (get-touched-prim s0-0 (-> s4-0 control) (the-as touching-prims-entry s1-0)) prim-core action) - 1 - ) - (logtest? (-> sv-96 prim-id) 1) - ) + (if (and (logtest? (-> (get-touched-prim s0-0 (-> s4-0 control) (the-as touching-prims-entry s1-0)) prim-core action) + (collide-action solid) + ) + (logtest? (-> sv-96 prim-id) 1) + ) (set! s2-0 #t) ) (if (logtest? (-> sv-96 prim-id) 2) @@ -300,7 +298,7 @@ (when (send-event-function arg0 a1-6) (set! (-> self hit-player?) #t) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-overeride) 2 0) + (dummy-54 (-> self root-overeride) 2 (collide-offense no-offense)) (let ((v1-39 (-> self mode))) (if (or (zero? v1-39) (= v1-39 1) (= v1-39 2)) (go driller-lurker-chase #t) @@ -349,7 +347,7 @@ (when (send-event-function arg0 a1-11) (set! (-> self hit-player?) #t) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-overeride) 2 0) + (dummy-54 (-> self root-overeride) 2 (collide-offense no-offense)) (let ((v1-62 (-> self mode))) (if (or (zero? v1-62) (= v1-62 1) (= v1-62 2)) (go driller-lurker-chase #t) @@ -544,15 +542,13 @@ 0 ) ) - (when (and - (-> obj hit-player?) - (or (not *target*) (and - (zero? (logand (-> *target* state-flags) #x80f8)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> obj hit-player-time))) 15) - ) - ) - ) - (dummy-54 (-> obj root-overeride) 2 1) + (when (and (-> obj hit-player?) + (or (not *target*) (and (zero? (logand (-> *target* state-flags) #x80f8)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> obj hit-player-time))) 15) + ) + ) + ) + (dummy-54 (-> obj root-overeride) 2 (collide-offense touch)) (set! (-> obj hit-player?) #f) #f ) @@ -614,11 +610,10 @@ (let* ((a1-0 (target-pos 0)) (f0-1 (- (-> a1-0 y) (-> obj root-overeride trans y))) ) - (if (and - (< f0-1 40960.0) - (< -10240.0 f0-1) - (< (vector-vector-xz-distance (-> obj root-overeride trans) a1-0) 143360.0) - ) + (if (and (< f0-1 40960.0) + (< -10240.0 f0-1) + (< (vector-vector-xz-distance (-> obj root-overeride trans) a1-0) 143360.0) + ) (return #f) ) ) @@ -667,7 +662,10 @@ (defstate driller-lurker-debug-play-anims (driller-lurker) :code - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :post (the-as (function none :behavior driller-lurker) transform-post) ) @@ -684,7 +682,10 @@ (none) ) :exit - (behavior () (stop! (-> self sound2)) (none)) + (behavior () + (stop! (-> self sound2)) + (none) + ) :trans (behavior () (if (dummy-25 self) @@ -823,10 +824,9 @@ ) ) (when (ja-done? 0) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self timeout)) - (>= 546.13336 (fabs (deg- (-> self path-ry) (-> self facing-ry)))) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self timeout)) + (>= 546.13336 (fabs (deg- (-> self path-ry) (-> self facing-ry)))) + ) (go driller-lurker-patrol-pause) ) (let ((v1-34 (-> self skel root-channel 0))) @@ -873,11 +873,11 @@ (cond ((zero? v1-0) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 5) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 5) + ) + ) (ja-channel-push! 1 60) ) (let ((s4-0 (-> self skel root-channel 0))) @@ -891,11 +891,11 @@ ) ((= v1-0 1) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 6) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 6) + ) + ) (ja-channel-push! 1 60) ) (let ((s4-1 (-> self skel root-channel 0))) @@ -909,11 +909,11 @@ ) ((= v1-0 2) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 7) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 7) + ) + ) (ja-channel-push! 1 60) ) (let ((s4-2 (-> self skel root-channel 0))) @@ -1136,7 +1136,10 @@ (none) ) :trans - (behavior () (dummy-20 self #f (the-as target #f)) (none)) + (behavior () + (dummy-20 self #f (the-as target #f)) + (none) + ) :code (behavior () (ja-channel-push! 1 60) @@ -1259,56 +1262,56 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 2) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 11264.0 0.0 22528.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3073)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 3276.8 0.0 4505.6) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3073)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 7372.8 0.0 4505.6) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3073)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 11468.8 0.0 4505.6) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 2) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-3 transform-index) 25) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 4096.0 3276.8) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core offense) 2) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-4 transform-index) 25) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 5734.4 3686.4) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 2) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-5 transform-index) 25) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 9420.8 2457.6) (append-prim s3-0 s2-5) diff --git a/goal_src/levels/maincave/gnawer.gc b/goal_src/levels/maincave/gnawer.gc index 4052197034..32aa83fd5d 100644 --- a/goal_src/levels/maincave/gnawer.gc +++ b/goal_src/levels/maincave/gnawer.gc @@ -822,10 +822,10 @@ (s3-0 (get-death-count *game-info* #f)) (s5-0 (-> obj money-mask)) ) - (when (and *target* (or - (and (= s3-0 1) (and (>= 1.0 (-> *target* fact-info-target health)) (rand-vu-percent? 0.1))) - (and (< 1 s3-0) (and (>= 2.0 (-> *target* fact-info-target health)) (rand-vu-percent? 0.05))) - ) + (when (and *target* + (or (and (= s3-0 1) (and (>= 1.0 (-> *target* fact-info-target health)) (rand-vu-percent? 0.1))) + (and (< 1 s3-0) (and (>= 2.0 (-> *target* fact-info-target health)) (rand-vu-percent? 0.05))) + ) ) (let ((v1-14 (dummy-28 obj s4-0 (the-as int s5-0)))) (logior s5-0 (the-as uint v1-14)) @@ -932,7 +932,10 @@ ) ) :exit - (behavior () (stop! (-> self sound2)) (none)) + (behavior () + (stop! (-> self sound2)) + (none) + ) :trans (behavior () (if (and *target* (>= 81920.0 (vector-vector-distance (target-pos 0) (-> self root-override trans)))) @@ -953,12 +956,12 @@ ) (set! (-> gp-0 frame-num) (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -975,12 +978,12 @@ ) (set! (-> gp-1 frame-num) (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1137,7 +1140,10 @@ (defstate gnawer-retreat-into-post (gnawer) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :code (behavior () (logclear! (-> self mask) (process-mask actor-pause)) @@ -1225,15 +1231,14 @@ (return #f) ) (let* ((a2-1 (the-as object (-> arg3 param 0))) - (v1-19 - (-> (get-touched-prim - (-> (the-as touching-shapes-entry a2-1) head) - (-> self root-override) - (the-as touching-prims-entry a2-1) - ) - prim-id - ) - ) + (v1-19 (-> (get-touched-prim + (-> (the-as touching-shapes-entry a2-1) head) + (-> self root-override) + (the-as touching-prims-entry a2-1) + ) + prim-id + ) + ) (v1-22 (-> self segments v1-19)) ) (spawn (-> self part) (-> v1-22 world-pos)) @@ -1258,7 +1263,11 @@ (none) ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (stop! (-> self sound)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (stop! (-> self sound)) + (none) + ) :trans (behavior () (+! (-> self route-dist) (* (-> self speed) (-> *display* seconds-per-frame))) @@ -1407,7 +1416,10 @@ ) ) :trans - (behavior () (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0) (none)) + (behavior () + (spool-push *art-control* "maincavecam-gnawer-fuel-cell" 0 self -1.0) + (none) + ) :code (behavior () (local-vars (sv-128 symbol)) @@ -1496,28 +1508,28 @@ (set-vector! gp-0 4503813.0 46363.85 -12796366.0 1.0) (let ((s5-0 (the-as maincavecam (get-process *default-dead-pool* maincavecam #x4000)))) (set! (-> (the-as - maincavecam - (-> (when s5-0 - (let ((t9-4 (method-of-type maincavecam activate))) - (t9-4 s5-0 self 'maincavecam (the-as pointer #x70004000)) - ) - (run-now-in-process - s5-0 - pov-camera-init-by-other - gp-0 - *maincavecam-sg* - (new 'static 'spool-anim :name "maincavecam-gnawer-fuel-cell" :index 3 :parts 1 :command-list '()) - 0 - self - '() - ) - (-> s5-0 ppointer) - ) - 0 - ) + maincavecam + (-> (when s5-0 + (let ((t9-4 (method-of-type maincavecam activate))) + (t9-4 s5-0 self 'maincavecam (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + gp-0 + *maincavecam-sg* + (new 'static 'spool-anim :name "maincavecam-gnawer-fuel-cell" :index 3 :parts 1 :command-list '()) + 0 + self + '() + ) + (-> s5-0 ppointer) ) - seq - ) + 0 + ) + ) + seq + ) (the-as uint 0) ) ) @@ -1652,70 +1664,70 @@ (logclear! (-> obj mask) (process-mask attackable)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 8) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 32768.0 0.0 53248.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 13) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 0) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 -409.6 1228.8 6144.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 8) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 5)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core offense) 0) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 9) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 6)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 0) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense no-offense)) (set! (-> s2-5 transform-index) 10) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 7)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core offense) 0) + (set! (-> s2-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core offense) (collide-offense no-offense)) (set! (-> s2-6 transform-index) 11) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 7)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core offense) 0) + (set! (-> s2-7 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core offense) (collide-offense no-offense)) (set! (-> s2-7 transform-index) 12) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-7) diff --git a/goal_src/levels/maincave/maincave-obs.gc b/goal_src/levels/maincave/maincave-obs.gc index 31499b56be..d230ebced2 100644 --- a/goal_src/levels/maincave/maincave-obs.gc +++ b/goal_src/levels/maincave/maincave-obs.gc @@ -142,11 +142,11 @@ (the-as object (when (or (= v1-0 'touch) (= v1-0 'attack)) (when (= (-> arg0 type) target) (if ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> *target* control) - (the-as uint 1) - (the-as uint 0) - ) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> *target* control) + (collide-action solid) + (collide-action) + ) (target-attack-up *target* 'attack-or-shove 'deadlyup) ) ) @@ -185,10 +185,10 @@ (defmethod init-from-entity! cavecrusher ((obj cavecrusher) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) @@ -344,20 +344,16 @@ (suspend) (ja-eval) ) - (until (or - (or - (not *target*) - (< 28672.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (and - (not (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (until (or (or (not *target*) + (< 28672.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (and (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-7))) ) - (zero? (logand (-> *target* control root-prim prim-core action) 128)) ) - ) (let ((a0-14 (-> self skel root-channel 0))) (set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 7))) (set! (-> a0-14 param 0) @@ -387,16 +383,13 @@ (joint-control-channel-group! a0-27 (the-as art-joint-anim (-> self draw art-group data 8)) num-func-seek!) ) (until (ja-done? 0) - (when (and - (and *target* (>= 28672.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - (or - (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) - (logtest? (-> *target* control root-prim prim-core action) 128) - ) - ) + (when (and (and *target* (>= 28672.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (or (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-7)) + ) + ) (while (not (ja-min? 0)) (suspend) (let ((a0-38 (-> self skel root-channel 0))) @@ -431,10 +424,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 9830.4 10240.0 0.0 17203.2) (set-root-prim! s4-0 s3-0) @@ -555,17 +548,16 @@ (when ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> *target* control) - (the-as uint 1) - (the-as uint 0) + (collide-action solid) + (collide-action) ) (let ((s4-0 (new 'stack 'attack-info))) (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) (cond - ((or - (= (-> *target* control unknown-surface00 mode) 'air) - (>= (+ (-> *display* base-frame-counter) -60) (-> *target* control unknown-dword11)) - (< 0.75 (-> *target* control poly-normal y)) - ) + ((or (= (-> *target* control unknown-surface00 mode) 'air) + (>= (+ (-> *display* base-frame-counter) -60) (-> *target* control unknown-dword11)) + (< 0.75 (-> *target* control poly-normal y)) + ) (let ((a1-5 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-5 from) self) (set! (-> a1-5 num-params) 2) @@ -684,36 +676,36 @@ (logior! (-> obj mask) (process-mask actor-pause)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 0) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-0 local-sphere) 4915.2 8192.0 0.0 3686.4) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 0) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-1 local-sphere) 4915.2 14336.0 0.0 3276.8) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-2 local-sphere) -4915.2 8192.0 0.0 3686.4) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-3 local-sphere) -4915.2 14336.0 0.0 3276.8) (append-prim s3-0 s2-3) ) @@ -864,10 +856,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 -8192.0 0.0 67584.0) (set-root-prim! s4-0 s3-0) @@ -894,9 +886,9 @@ ) ) (case (-> (if (-> obj entity) - (-> obj entity extra level) - (-> *level* level-default) - ) + (-> obj entity extra level) + (-> *level* level-default) + ) name ) (('darkcave) @@ -994,10 +986,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 75776.0) (set-root-prim! s4-0 s3-0) @@ -1136,11 +1128,21 @@ ) ) :enter - (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans - (behavior () (rider-trans) (TODO-RENAME-20 self) (none)) + (behavior () + (rider-trans) + (TODO-RENAME-20 self) + (none) + ) :code (behavior () (while #t @@ -1167,7 +1169,11 @@ (none) ) :post - (behavior () (rider-post) (TODO-RENAME-21 self) (none)) + (behavior () + (rider-post) + (TODO-RENAME-21 self) + (none) + ) ) (defstate caveelevator-one-way-idle-start (caveelevator) @@ -1179,17 +1185,20 @@ (go caveelevator-one-way-travel-to-end) ) (('attack 'touch) - (if (and - (= (-> arg0 type) target) - (>= 8192.0 (vector-vector-xz-distance (target-pos 0) (-> self root-override trans))) - ) + (if (and (= (-> arg0 type) target) + (>= 8192.0 (vector-vector-xz-distance (target-pos 0) (-> self root-override trans))) + ) (go caveelevator-one-way-travel-to-end) ) ) ) ) :trans - (behavior () (rider-trans) (TODO-RENAME-20 self) (none)) + (behavior () + (rider-trans) + (TODO-RENAME-20 self) + (none) + ) :code (behavior () (let ((gp-0 (-> self skel root-channel 0))) @@ -1211,7 +1220,11 @@ (none) ) :post - (behavior () (rider-post) (TODO-RENAME-21 self) (none)) + (behavior () + (rider-post) + (TODO-RENAME-21 self) + (none) + ) ) (defstate caveelevator-one-way-travel-to-end (caveelevator) @@ -1225,11 +1238,21 @@ ) ) :enter - (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans - (behavior () (rider-trans) (TODO-RENAME-20 self) (none)) + (behavior () + (rider-trans) + (TODO-RENAME-20 self) + (none) + ) :code (behavior () (let ((gp-0 (-> self skel root-channel 0))) @@ -1257,7 +1280,11 @@ (none) ) :post - (behavior () (rider-post) (TODO-RENAME-21 self) (none)) + (behavior () + (rider-post) + (TODO-RENAME-21 self) + (none) + ) ) (defstate caveelevator-one-way-idle-end (caveelevator) @@ -1271,7 +1298,10 @@ ) ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (cond @@ -1306,7 +1336,11 @@ (none) ) :post - (behavior () (rider-post) (TODO-RENAME-21 self) (none)) + (behavior () + (rider-post) + (TODO-RENAME-21 self) + (none) + ) ) (defstate caveelevator-one-way-travel-to-start (caveelevator) @@ -1320,11 +1354,21 @@ ) ) :enter - (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans - (behavior () (rider-trans) (TODO-RENAME-20 self) (none)) + (behavior () + (rider-trans) + (TODO-RENAME-20 self) + (none) + ) :code (behavior () (let ((gp-0 (-> self skel root-channel 0))) @@ -1352,7 +1396,11 @@ (none) ) :post - (behavior () (rider-post) (TODO-RENAME-21 self) (none)) + (behavior () + (rider-post) + (TODO-RENAME-21 self) + (none) + ) ) (defun caveelevator-joint-callback ((arg0 caveelevator)) @@ -1389,10 +1437,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 19)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17408.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/maincave/mother-spider-egg.gc b/goal_src/levels/maincave/mother-spider-egg.gc index 647d429a01..a2566c8e69 100644 --- a/goal_src/levels/maincave/mother-spider-egg.gc +++ b/goal_src/levels/maincave/mother-spider-egg.gc @@ -193,7 +193,7 @@ (defmethod draw-egg-shadow mother-spider-egg ((obj mother-spider-egg) (arg0 vector) (arg1 symbol)) (cond - ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) 8)) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) (let ((s5-0 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) (a2-1 (new 'stack-no-clear 'vector)) @@ -246,7 +246,10 @@ ) ) :enter - (behavior () (set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter))) (none)) + (behavior () + (set! (-> self falling-start-time) (the-as uint (-> *display* base-frame-counter))) + (none) + ) :trans (behavior () (let ((f30-0 (fmin @@ -401,7 +404,7 @@ (defstate mother-spider-egg-hatch (mother-spider-egg) :trans (behavior () - (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) 8)) + (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) (let ((a1-0 (new 'stack-no-clear 'vector))) (set! (-> a1-0 quad) (-> self fall-dest quad)) (compute-and-draw-shadow @@ -590,7 +593,7 @@ :code (behavior () (send-event (ppointer->process (-> self parent-override)) 'untrigger) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (let ((v1-8 (-> self draw shadow-ctrl))) (logior! (-> v1-8 settings flags) 32) ) @@ -618,10 +621,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) (set-root-prim! s4-1 s3-0) ) diff --git a/goal_src/levels/maincave/mother-spider-proj.gc b/goal_src/levels/maincave/mother-spider-proj.gc index 3f0295cdb0..9f5205d028 100644 --- a/goal_src/levels/maincave/mother-spider-proj.gc +++ b/goal_src/levels/maincave/mother-spider-proj.gc @@ -18,419 +18,344 @@ ) -(set! - (-> *part-group-id-table* 326) - (new 'static 'sparticle-launch-group - :length 48 - :duration #x12c - :linger-duration #x5dc - :name "group-mother-spider-proj-fly" - :launcher - (new 'static 'inline-array sparticle-group-item 48 - (sp-item 718 :flags (launch-asap) :binding 716) - (sp-item 716 :flags (start-dead) :binding 717) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - (sp-item 717 :flags (start-dead launch-asap)) - ) - :bounds (new 'static 'sphere :w 12288.0) - ) - ) +(set! (-> *part-group-id-table* 326) (new 'static 'sparticle-launch-group + :length 48 + :duration #x12c + :linger-duration #x5dc + :name "group-mother-spider-proj-fly" + :launcher + (new 'static 'inline-array sparticle-group-item 48 + (sp-item 718 :flags (launch-asap) :binding 716) + (sp-item 716 :flags (start-dead) :binding 717) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + (sp-item 717 :flags (start-dead launch-asap)) + ) + :bounds (new 'static 'sphere :w 12288.0) + ) + ) -(set! - (-> *part-id-table* 718) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 9 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 0.01)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-a 0.0) - (sp-int spt-timer 1200) - (sp-cpuinfo-flags bit3) - (sp-func spt-func 'sparticle-track-root-prim) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 718) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 9 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 0.01)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-a 0.0) + (sp-int spt-timer 1200) + (sp-cpuinfo-flags bit3) + (sp-func spt-func 'sparticle-track-root-prim) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 716) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 22 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-scale-x (meters 1.0)) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-flt spt-scalevel-x (meters -0.006666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -1.0666667) - (sp-flt spt-fade-g -1.0666667) - (sp-flt spt-fade-b 0.0) - (sp-int spt-timer 150) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 81) - (sp-launcher-by-id spt-next-launcher 720) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.1)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 716) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-scale-x (meters 1.0)) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-flt spt-scalevel-x (meters -0.006666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -1.0666667) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-b 0.0) + (sp-int spt-timer 150) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 81) + (sp-launcher-by-id spt-next-launcher 720) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.1)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 720) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 4 - (sp-flt spt-fade-r 0.0) - (sp-flt spt-fade-g 0.0) - (sp-flt spt-fade-b 0.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 720) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-r 0.0) + (sp-flt spt-fade-g 0.0) + (sp-flt spt-fade-b 0.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 717) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-rnd-flt spt-num 1.0 5.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0) - (sp-flt spt-scalevel-x (meters -0.0026666666)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -1.0666667) - (sp-flt spt-fade-g -1.0666667) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-accel-y -2.7306666) - (sp-flt spt-friction 0.97) - (sp-int-plain-rnd spt-timer 30 119 1) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 60) - (sp-launcher-by-id spt-next-launcher 720) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 717) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-rnd-flt spt-num 1.0 5.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.2) (meters 0.1) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters -0.0026666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -1.0666667) + (sp-flt spt-fade-g -1.0666667) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-accel-y -2.7306666) + (sp-flt spt-friction 0.97) + (sp-int-plain-rnd spt-timer 30 119 1) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 720) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 327) - (new 'static 'sparticle-launch-group - :length 3 - :duration #x5 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-mother-spider-proj-hit" - :launcher - (new 'static 'inline-array sparticle-group-item 3 - (sp-item 722) - (sp-item 723) - (sp-item 724) - ) - :bounds (new 'static 'sphere :w 32768.0) - ) - ) +(set! (-> *part-group-id-table* 327) + (new 'static 'sparticle-launch-group + :length 3 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-mother-spider-proj-hit" + :launcher + (new 'static 'inline-array sparticle-group-item 3 (sp-item 722) (sp-item 723) (sp-item 724)) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) -(set! - (-> *part-id-table* 722) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 64.0) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 192.0 32.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-flt spt-a 128.0) - (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0) - (sp-flt spt-scalevel-x (meters -0.006666667)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-r -0.7111111) - (sp-flt spt-fade-g -0.7111111) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-accel-y -0.68266666) - (sp-rnd-flt spt-friction 0.85 0.05 1.0) - (sp-int-plain-rnd spt-timer 30 119 1) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 90) - (sp-launcher-by-id spt-next-launcher 720) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 722) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 64.0) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 192.0 32.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-flt spt-a 128.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.10666667) 1.0) + (sp-flt spt-scalevel-x (meters -0.006666667)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-r -0.7111111) + (sp-flt spt-fade-g -0.7111111) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-accel-y -0.68266666) + (sp-rnd-flt spt-friction 0.85 0.05 1.0) + (sp-int-plain-rnd spt-timer 30 119 1) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 720) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters 0.4) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 724) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 21 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 6.0) - (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 96.0 64.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 96.0 64.0 1.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-flt spt-fade-r -0.35555556) - (sp-flt spt-fade-g -0.35555556) - (sp-flt spt-fade-b 0.0) - (sp-flt spt-fade-a -0.30476192) - (sp-rnd-flt spt-accel-y -0.68266666 0.68266666 1.0) - (sp-int spt-timer 210) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 60) - (sp-launcher-by-id spt-next-launcher 720) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 724) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 6.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 96.0 64.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 96.0 64.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-fade-r -0.35555556) + (sp-flt spt-fade-g -0.35555556) + (sp-flt spt-fade-b 0.0) + (sp-flt spt-fade-a -0.30476192) + (sp-rnd-flt spt-accel-y -0.68266666 0.68266666 1.0) + (sp-int spt-timer 210) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 720) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 723) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 32.0 1.0) - (sp-rnd-flt spt-g 64.0 32.0 1.0) - (sp-rnd-flt spt-b 128.0 32.0 1.0) - (sp-flt spt-a 96.0) - (sp-flt spt-fade-a -4.8) - (sp-int spt-timer 15) - (sp-cpuinfo-flags bit2) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 723) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 64.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -4.8) + (sp-int spt-timer 15) + (sp-cpuinfo-flags bit2) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 328) - (new 'static 'sparticle-launch-group - :length 1 - :duration #x5 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-mother-spider-proj-die" - :launcher - (new 'static 'inline-array sparticle-group-item 1 (sp-item 722)) - :bounds (new 'static 'sphere :w 32768.0) - ) - ) +(set! (-> *part-group-id-table* 328) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-mother-spider-proj-die" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 722)) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) (defmethod dummy-24 mother-spider-proj ((obj mother-spider-proj)) (with-pp - (spawn - (-> obj part) - (the-as vector (-> obj root-override root-prim prim-core)) - ) - (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) - (set! (-> s5-0 command) (sound-command set-param)) - (set! (-> s5-0 id) (-> obj sound-id)) - (let ((a1-1 (-> obj root-override trans))) - (let ((s4-0 pp)) - (when (= a1-1 #t) - (if - (and - s4-0 - (type-type? (-> s4-0 type) process-drawable) - (nonzero? (-> (the-as process-drawable s4-0) root)) - ) - (set! a1-1 (-> (the-as process-drawable s4-0) root trans)) - (set! a1-1 (the-as vector #f)) - ) - ) - ) - (sound-trans-convert (-> s5-0 parms trans) a1-1) - ) - (set! (-> s5-0 parms mask) (the-as uint 32)) - (-> s5-0 id) - ) - (let - ((f0-5 - (* - 5120.0 - (+ - 0.9 - (* - 0.1 - (cos - (* 873.81335 (the float (mod (-> *display* base-frame-counter) 75))) + (spawn (-> obj part) (the-as vector (-> obj root-override root-prim prim-core))) + (let ((s5-0 (the-as sound-rpc-set-param (get-sound-buffer-entry)))) + (set! (-> s5-0 command) (sound-command set-param)) + (set! (-> s5-0 id) (-> obj sound-id)) + (let ((a1-1 (-> obj root-override trans))) + (let ((s4-0 pp)) + (when (= a1-1 #t) + (if (and s4-0 (type-type? (-> s4-0 type) process-drawable) (nonzero? (-> (the-as process-drawable s4-0) root))) + (set! a1-1 (-> (the-as process-drawable s4-0) root trans)) + (set! a1-1 (the-as vector #f)) + ) + ) ) - ) + (sound-trans-convert (-> s5-0 parms trans) a1-1) ) - ) + (set! (-> s5-0 parms mask) (the-as uint 32)) + (-> s5-0 id) ) - ) - (find-ground-and-draw-shadow - (-> obj root-override trans) - (the-as vector #f) - f0-5 - (the-as uint 1) - (the-as process #f) - 0.0 - 81920.0 - ) + (let ((f0-5 (* 5120.0 (+ 0.9 (* 0.1 (cos (* 873.81335 (the float (mod (-> *display* base-frame-counter) 75))))))))) + (find-ground-and-draw-shadow + (-> obj root-override trans) + (the-as vector #f) + f0-5 + (collide-kind background) + (the-as process #f) + 0.0 + 81920.0 + ) + ) + (none) ) - (none) - ) ) (defun mother-spider-proj-update-velocity ((arg0 mother-spider-proj)) - (when - (>= - (vector-vector-xz-distance - (-> arg0 parent-process 0 root-override trans) - (-> arg0 target) - ) - (vector-vector-xz-distance - (-> arg0 parent-process 0 root-override trans) - (-> arg0 root-override trans) - ) + (when (>= (vector-vector-xz-distance (-> arg0 parent-process 0 root-override trans) (-> arg0 target)) + (vector-vector-xz-distance (-> arg0 parent-process 0 root-override trans) (-> arg0 root-override trans)) + ) + (let ((s3-1 (vector-! (new 'stack-no-clear 'vector) (-> arg0 target) (-> arg0 root-override trans))) + (s4-0 (new 'stack-no-clear 'vector)) + (s5-0 (vector-normalize-copy! (new 'stack-no-clear 'vector) (-> arg0 root-override transv) 1.0)) + ) + (if (logtest? (-> arg0 root-override status) 4) + (vector-flatten! s3-1 s3-1 (-> arg0 root-override local-normal)) + ) + (vector-normalize-copy! s4-0 s3-1 1.0) + (let ((s3-2 (new 'stack-no-clear 'vector))) + (matrix-from-two-vectors-max-angle-partial! + (the-as matrix s3-2) + s5-0 + s4-0 + (* (-> arg0 max-turn) (-> *display* seconds-per-frame)) + (-> arg0 tween) + ) + (vector-matrix*! s5-0 s5-0 (the-as matrix s3-2)) + ) + (vector-normalize! s5-0 1.0) + (vector-float*! (-> arg0 root-override transv) s5-0 (-> arg0 max-speed)) + ) ) - (let - ((s3-1 - (vector-! - (new 'stack-no-clear 'vector) - (-> arg0 target) - (-> arg0 root-override trans) - ) - ) - (s4-0 (new 'stack-no-clear 'vector)) - (s5-0 - (vector-normalize-copy! - (new 'stack-no-clear 'vector) - (-> arg0 root-override transv) - 1.0 - ) - ) - ) - (if (logtest? (-> arg0 root-override status) 4) - (vector-flatten! s3-1 s3-1 (-> arg0 root-override local-normal)) - ) - (vector-normalize-copy! s4-0 s3-1 1.0) - (let ((s3-2 (new 'stack-no-clear 'vector))) - (matrix-from-two-vectors-max-angle-partial! - (the-as matrix s3-2) - s5-0 - s4-0 - (* (-> arg0 max-turn) (-> *display* seconds-per-frame)) - (-> arg0 tween) - ) - (vector-matrix*! s5-0 s5-0 (the-as matrix s3-2)) - ) - (vector-normalize! s5-0 1.0) - (vector-float*! (-> arg0 root-override transv) s5-0 (-> arg0 max-speed)) - ) - ) 0 (none) ) (defmethod dummy-26 mother-spider-proj ((obj mother-spider-proj)) - (let - ((s5-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) + (let ((s5-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s5-0 reaction) projectile-collision-reaction) + (set! (-> s5-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) + (set! (-> s4-0 collide-with) + (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) + ) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) + (set-root-prim! s5-0 s4-0) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> s5-0 max-iteration-count) (the-as uint 2)) + (set! (-> s5-0 event-self) 'touched) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s5-0 reaction) projectile-collision-reaction) - (set! - (-> s5-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) - (set! (-> s4-0 collide-with) (the-as uint 2973)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 3) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) - (set-root-prim! s5-0 s4-0) - ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> s5-0 max-iteration-count) (the-as uint 2)) - (set! (-> s5-0 event-self) 'touched) - (set! (-> obj root-override) s5-0) - ) (logclear! (-> obj mask) (process-mask enemy)) (logclear! (-> obj mask) (process-mask crate)) (logclear! (-> obj mask) (process-mask attackable)) @@ -440,10 +365,7 @@ ) (defmethod dummy-27 mother-spider-proj ((obj mother-spider-proj)) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 326) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 326) obj)) (set! (-> obj max-speed) 32768.0) (set! (-> obj update-velocity) mother-spider-proj-update-velocity) (set! (-> obj max-turn) 5916.4443) @@ -453,49 +375,30 @@ (set! (-> obj target quad) (-> (target-pos 0) quad)) (set! (-> obj target y) (+ 4915.2 (-> obj target y))) (set! (-> obj target-base quad) (-> obj target quad)) - (set! - (-> obj sound-id) - (sound-play-by-name - (static-sound-name "mother-track") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - (sound-play-by-name - (static-sound-name "mother-fire") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) + (set! (-> obj sound-id) (sound-play-by-name (static-sound-name "mother-track") (new-sound-id) 1024 0 0 1 #t)) + (sound-play-by-name (static-sound-name "mother-fire") (new-sound-id) 1024 0 0 1 #t) (none) ) (defmethod dummy-28 mother-spider-proj ((obj mother-spider-proj)) (when (and *target* (zero? (logand (-> *target* state-flags) #x80f8))) - (let ((gp-0 (-> obj target))) - (set! (-> gp-0 quad) (-> (target-pos 0) quad)) - (set! (-> gp-0 y) (+ 4915.2 (-> gp-0 y))) - (let ((f0-2 (vector-vector-distance gp-0 (-> obj root-override trans))) - (a2-0 (new 'stack-no-clear 'vector)) + (let ((gp-0 (-> obj target))) + (set! (-> gp-0 quad) (-> (target-pos 0) quad)) + (set! (-> gp-0 y) (+ 4915.2 (-> gp-0 y))) + (let ((f0-2 (vector-vector-distance gp-0 (-> obj root-override trans))) + (a2-0 (new 'stack-no-clear 'vector)) + ) + (if (>= 0.0 f0-2) + (set! f0-2 409.6) + ) + (set! (-> a2-0 quad) (-> *target* control transv quad)) + (set! (-> a2-0 y) 0.0) + (let ((f0-3 (/ f0-2 (* 32768.0 (-> *display* seconds-per-frame))))) + (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (-> *display* seconds-per-frame))) ) - (if (>= 0.0 f0-2) - (set! f0-2 409.6) + ) ) - (set! (-> a2-0 quad) (-> *target* control transv quad)) - (set! (-> a2-0 y) 0.0) - (let ((f0-3 (/ f0-2 (* 32768.0 (-> *display* seconds-per-frame))))) - (vector+float*! gp-0 gp-0 a2-0 (* f0-3 (-> *display* seconds-per-frame))) - ) - ) ) - ) (none) ) @@ -503,81 +406,63 @@ :virtual #t :code (behavior () - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-1 (method-of-type part-tracker activate))) - (t9-1 - (the-as part-tracker gp-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 327) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 327) - -1 - #f - #f - #f - (-> self root-override trans) - ) - (-> gp-0 ppointer) - ) + (if (nonzero? (-> self sound-id)) + (sound-stop (-> self sound-id)) + ) + (sound-play-by-name (static-sound-name "mother-hit") (new-sound-id) 1024 0 0 1 #t) + (suspend) + (go-virtual projectile-die) + (none) ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (sound-play-by-name - (static-sound-name "mother-hit") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (suspend) - (go-virtual projectile-die) - (none) - ) ) (defstate projectile-dissipate (mother-spider-proj) :virtual #t :code (behavior () - (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-0 - (let ((t9-1 (method-of-type part-tracker activate))) - (t9-1 - (the-as part-tracker gp-0) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) + (let ((gp-0 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-0 + (let ((t9-1 (method-of-type part-tracker activate))) + (t9-1 (the-as part-tracker gp-0) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + part-tracker-init + (-> *part-group-id-table* 328) + -1 + #f + #f + #f + (-> self root-override trans) + ) + (-> gp-0 ppointer) + ) ) - (run-now-in-process - gp-0 - part-tracker-init - (-> *part-group-id-table* 328) - -1 - #f - #f - #f - (-> self root-override trans) - ) - (-> gp-0 ppointer) - ) + (if (nonzero? (-> self sound-id)) + (sound-stop (-> self sound-id)) + ) + (suspend) + (go-virtual projectile-die) + (none) ) - (if (nonzero? (-> self sound-id)) - (sound-stop (-> self sound-id)) - ) - (suspend) - (go-virtual projectile-die) - (none) - ) ) diff --git a/goal_src/levels/maincave/mother-spider.gc b/goal_src/levels/maincave/mother-spider.gc index 184103414a..b67f67cf51 100644 --- a/goal_src/levels/maincave/mother-spider.gc +++ b/goal_src/levels/maincave/mother-spider.gc @@ -414,10 +414,9 @@ ) (defmethod is-player-stuck? mother-spider ((obj mother-spider)) - (when (and *target* (not (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (when (and *target* (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) ) ) (let* ((v1-10 (target-pos 0)) @@ -495,10 +494,9 @@ (defmethod grab-player? mother-spider ((obj mother-spider)) (when *target* (let ((s5-0 (target-pos 0))) - (when (and - (>= 40960.0 (- (-> obj thread-min-trans y) (-> s5-0 y))) - (>= (-> obj activate-xz-dist) (vector-vector-xz-distance (-> obj thread-min-trans) s5-0)) - ) + (when (and (>= 40960.0 (- (-> obj thread-min-trans y) (-> s5-0 y))) + (>= (-> obj activate-xz-dist) (vector-vector-xz-distance (-> obj thread-min-trans) s5-0)) + ) (cond ((-> obj check-z-thresh?) (let ((f0-3 (- (-> s5-0 z) (-> obj root-override trans z)))) @@ -527,8 +525,7 @@ (return #t) ) ) - (if (or - (>= (- (-> obj thread-min-trans y) (-> a1-0 y)) 49152.0) + (if (or (>= (- (-> obj thread-min-trans y) (-> a1-0 y)) 49152.0) (>= (vector-vector-xz-distance (-> obj thread-min-trans) a1-0) (-> obj deactivate-xz-dist)) ) (return #t) @@ -596,8 +593,8 @@ ) ) (let ((v1-43 (-> (the-as collide-shape-prim-group s3-1) prims (-> s1-1 cprim-index)))) - (set! (-> v1-43 collide-with) (the-as uint 0)) - (set! (-> v1-43 prim-core collide-as) (the-as uint 0)) + (set! (-> v1-43 collide-with) (collide-kind)) + (set! (-> v1-43 prim-core collide-as) (collide-kind)) ) ) 0 @@ -750,10 +747,9 @@ (vector-reflect! (-> obj swing-vel) (-> obj swing-vel) (the-as vector (&-> s5-1 param 6))) (set! (-> obj swing-vel y) 0.0) (vector-normalize! (-> obj swing-vel) (* 0.5 (vector-length (-> obj swing-vel)))) - (when (and - (!= (-> obj spin-vel) 0.0) - (>= (- (-> *display* base-frame-counter) (the-as int (-> obj spin-time))) 150) - ) + (when (and (!= (-> obj spin-vel) 0.0) + (>= (- (-> *display* base-frame-counter) (the-as int (-> obj spin-time))) 150) + ) (set! (-> obj spin-vel) (* 0.75 (- (-> obj spin-vel)))) (set! (-> obj spin-time) (the-as uint (-> *display* base-frame-counter))) ) @@ -1046,7 +1042,10 @@ :event mother-spider-default-event-handler :enter - (behavior () (set! (-> self hit?) #f) (none)) + (behavior () + (set! (-> self hit?) #f) + (none) + ) :trans (behavior () (if (-> self hit?) @@ -1132,19 +1131,17 @@ ) ) ) - (if (or (not *target*) (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) - ) + (if (or (not *target*) (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) (set! (-> self last-player-in-air-time) (the-as uint (-> *display* base-frame-counter))) ) - (when (and - *target* - (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-spit-time))) 900) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-player-in-air-time))) 18) - (>= (-> self max-spit-xz-dist) (vector-vector-xz-distance (-> self root-override trans) (target-pos 0))) - ) + (when (and *target* + (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-spit-time))) 900) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-player-in-air-time))) 18) + (>= (-> self max-spit-xz-dist) (vector-vector-xz-distance (-> self root-override trans) (target-pos 0))) + ) (let ((gp-2 (new 'stack-no-clear 'vector)) (s5-2 (new 'stack-no-clear 'vector)) ) @@ -1174,8 +1171,8 @@ (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 5) ) (let ((a0-4 (-> self skel root-channel 0))) @@ -1221,7 +1218,10 @@ :event mother-spider-default-event-handler :enter - (behavior () (set! (-> self hit?) #f) (none)) + (behavior () + (set! (-> self hit?) #f) + (none) + ) :trans (behavior () (if (-> self hit?) @@ -1284,7 +1284,11 @@ :event mother-spider-default-event-handler :enter - (behavior () (set! (-> self hit?) #f) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self hit?) #f) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (-> self hit?) @@ -1373,7 +1377,11 @@ :event mother-spider-default-event-handler :enter - (behavior () (set! (-> self hit?) #f) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self hit?) #f) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (-> self hit?) @@ -1382,21 +1390,18 @@ (if (letgo-player? self) (go mother-spider-traveling (the-as uint 0)) ) - (if (and - (>= (- (-> *display* base-frame-counter) (the-as int (-> self started-birthing-time))) 1800) - (zero? (logand (-> *target* state-flags) #x80f8)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (the-as int (-> self started-birthing-time))) 1800) + (zero? (logand (-> *target* state-flags) #x80f8)) + ) (go mother-spider-traveling (the-as uint 1)) ) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 75) - (> (-> self birthing-counter) 0) - (and - (>= 49152.0 (- (-> self max-dist-from-anchor) (-> self dist-from-anchor))) - (zero? (logand (-> *target* state-flags) #x80f8)) - (dummy-21 (-> self nav) (-> self root-override trans)) - ) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 75) + (> (-> self birthing-counter) 0) + (and (>= 49152.0 (- (-> self max-dist-from-anchor) (-> self dist-from-anchor))) + (zero? (logand (-> *target* state-flags) #x80f8)) + (dummy-21 (-> self nav) (-> self root-override trans)) + ) + ) (go mother-spider-birth-baby) ) (TODO-RENAME-29 self #t #t) @@ -1406,8 +1411,8 @@ (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 5) ) (let ((a0-4 (-> self skel root-channel 0))) @@ -1453,7 +1458,11 @@ :event mother-spider-default-event-handler :enter - (behavior () (set! (-> self hit?) #f) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self hit?) #f) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (-> self hit?) @@ -1589,7 +1598,10 @@ :event mother-spider-default-event-handler :enter - (behavior () (set! (-> self hit?) #f) (none)) + (behavior () + (set! (-> self hit?) #f) + (none) + ) :trans (behavior () (if (-> self hit?) @@ -1690,7 +1702,10 @@ (none) ) :trans - (behavior () (TODO-RENAME-29 self #f #f) (none)) + (behavior () + (TODO-RENAME-29 self #f #f) + (none) + ) :code (behavior () (let ((v1-2 (-> self entity extra perm))) @@ -1728,7 +1743,10 @@ :event mother-spider-death-event-handler :trans - (behavior () (TODO-RENAME-29 self #f #f) (none)) + (behavior () + (TODO-RENAME-29 self #f #f) + (none) + ) :code (behavior () (let ((v1-2 (-> self entity extra perm))) @@ -1857,14 +1875,12 @@ ) (defmethod run-logic? mother-spider ((obj mother-spider)) - (or - (zero? (logand (-> obj mask) (process-mask actor-pause))) - (or - (< (vector-vector-xz-distance (-> obj root-override trans) (math-camera-pos)) (-> obj deactivate-xz-dist)) - (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (< (vector-vector-xz-distance (-> obj root-override trans) (math-camera-pos)) (-> obj deactivate-xz-dist)) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + ) ) - ) ) (defmethod relocate mother-spider ((obj mother-spider) (arg0 int)) @@ -1905,79 +1921,79 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 8192)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12697.6) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4505.6) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 0) + (set! (-> s2-1 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4505.6) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 -409.6 1228.8 2457.6) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 12) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core offense) 0) + (set! (-> s2-4 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 10) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 0) + (set! (-> s2-5 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense no-offense)) (set! (-> s2-5 transform-index) 8) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core offense) 0) + (set! (-> s2-6 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core offense) (collide-offense no-offense)) (set! (-> s2-6 transform-index) 18) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core offense) 0) + (set! (-> s2-7 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core offense) (collide-offense no-offense)) (set! (-> s2-7 transform-index) 16) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core offense) 0) + (set! (-> s2-8 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core offense) (collide-offense no-offense)) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-8) diff --git a/goal_src/levels/maincave/spiderwebs.gc b/goal_src/levels/maincave/spiderwebs.gc index 60f1aab3ca..8ab8bf9dd4 100644 --- a/goal_src/levels/maincave/spiderwebs.gc +++ b/goal_src/levels/maincave/spiderwebs.gc @@ -7,36 +7,34 @@ ;; DECOMP BEGINS -(define - *spider-jump-mods* - (new 'static 'surface - :name 'jump - :turnv 131072.0 - :turnvv 18204.445 - :tiltv 32768.0 - :tiltvv 131072.0 - :transv-max 49152.0 - :target-speed 49152.0 - :seek0 0.6 - :seek90 0.6 - :seek180 0.6 - :fric 0.2 - :nonlin-fric-dist 1.0 - :slip-factor 1.0 - :slide-factor 1.0 - :slope-up-factor 1.0 - :slope-down-factor 1.0 - :slope-slip-angle 1.0 - :impact-fric 1.0 - :bend-factor 1.0 - :bend-speed 1.0 - :alignv 1.0 - :slope-up-traction 1.0 - :align-speed 1.0 - :mode 'air - :flags #xc00 - ) - ) +(define *spider-jump-mods* (new 'static 'surface + :name 'jump + :turnv 131072.0 + :turnvv 18204.445 + :tiltv 32768.0 + :tiltvv 131072.0 + :transv-max 49152.0 + :target-speed 49152.0 + :seek0 0.6 + :seek90 0.6 + :seek180 0.6 + :fric 0.2 + :nonlin-fric-dist 1.0 + :slip-factor 1.0 + :slide-factor 1.0 + :slope-up-factor 1.0 + :slope-down-factor 1.0 + :slope-slip-angle 1.0 + :impact-fric 1.0 + :bend-factor 1.0 + :bend-speed 1.0 + :alignv 1.0 + :slope-up-traction 1.0 + :align-speed 1.0 + :mode 'air + :flags #xc00 + ) + ) (deftype spiderwebs (process-drawable) ((spring-height meters :offset-assert 176) @@ -60,64 +58,45 @@ :longest-edge (meters 0) ) -(defbehavior - spiderwebs-default-event-handler spiderwebs - ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('bonk) +(defbehavior spiderwebs-default-event-handler spiderwebs ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('bonk) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-1 from) self) - (set! (-> a1-1 num-params) 3) - (set! (-> a1-1 message) 'jump) - (set! (-> a1-1 param 0) (the-as uint (-> self spring-height))) - (set! (-> a1-1 param 1) (the-as uint (-> self spring-height))) - (set! (-> a1-1 param 2) (the-as uint *spider-jump-mods*)) - (if (send-event-function arg0 a1-1) - (go spiderwebs-bounce) + (set! (-> a1-1 from) self) + (set! (-> a1-1 num-params) 3) + (set! (-> a1-1 message) 'jump) + (set! (-> a1-1 param 0) (the-as uint (-> self spring-height))) + (set! (-> a1-1 param 1) (the-as uint (-> self spring-height))) + (set! (-> a1-1 param 2) (the-as uint *spider-jump-mods*)) + (if (send-event-function arg0 a1-1) + (go spiderwebs-bounce) + ) ) - ) ) - (('touch) - (when (= (-> arg0 type) target) - (let* ((a0-8 (target-pos 0)) - (f1-1 (- (-> a0-8 y) (-> self root trans y))) - ) - (if - (and - (>= 2048.0 (fabs f1-1)) - (and - (>= 13516.8 (vector-vector-distance a0-8 (-> self root trans))) - (send-event - arg0 - 'jump - (-> self spring-height) - (-> self spring-height) - *spider-jump-mods* - ) + (('touch) + (when (= (-> arg0 type) target) + (let* ((a0-8 (target-pos 0)) + (f1-1 (- (-> a0-8 y) (-> self root trans y))) + ) + (if (and (>= 2048.0 (fabs f1-1)) + (and (>= 13516.8 (vector-vector-distance a0-8 (-> self root trans))) + (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*) + ) + ) + (go spiderwebs-bounce) + ) ) - ) - (go spiderwebs-bounce) ) - ) + ) + (('attack) + (if (and (= (-> arg3 param 1) 'flop) + (send-event arg0 'jump (-> self spring-height) (-> self spring-height) *spider-jump-mods*) + ) + (go spiderwebs-bounce) + ) + #f ) ) - (('attack) - (if - (and - (= (-> arg3 param 1) 'flop) - (send-event - arg0 - 'jump - (-> self spring-height) - (-> self spring-height) - *spider-jump-mods* - ) - ) - (go spiderwebs-bounce) - ) - #f - ) - ) ) (defstate spiderwebs-idle (spiderwebs) @@ -125,180 +104,107 @@ spiderwebs-default-event-handler :code (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 2)) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) + (logior! (-> self mask) (process-mask actor-pause)) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 2)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (transform-post) + (while #t + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + ) + (none) ) - (transform-post) - (while #t - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - ) - (none) - ) ) (defstate spiderwebs-bounce (spiderwebs) :code (behavior () - (logclear! (-> self mask) (process-mask actor-pause)) - (sound-play-by-name - (static-sound-name "web-tramp") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((gp-1 (-> self skel root-channel 0))) - (set! - (-> gp-1 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! (-> gp-1 param 0) (ja-aframe 10.0 0)) - (set! (-> gp-1 param 1) 1.0) - (set! (-> gp-1 frame-num) 0.0) - (joint-control-channel-group! - gp-1 - (the-as art-joint-anim (-> self draw art-group data 2)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((gp-2 (-> self skel root-channel 0))) - (set! (-> gp-2 param 0) (ja-aframe 10.0 0)) - (set! (-> gp-2 param 1) 1.0) - (joint-control-channel-group-eval! - gp-2 - (the-as art-joint-anim #f) - num-func-seek! + (logclear! (-> self mask) (process-mask actor-pause)) + (sound-play-by-name (static-sound-name "web-tramp") (new-sound-id) 1024 0 0 1 #t) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> gp-1 param 0) (ja-aframe 10.0 0)) + (set! (-> gp-1 param 1) 1.0) + (set! (-> gp-1 frame-num) 0.0) + (joint-control-channel-group! gp-1 (the-as art-joint-anim (-> self draw art-group data 2)) num-func-seek!) ) - ) - ) - (set! (-> self event-hook) (-> spiderwebs-idle event)) - (let ((gp-3 (-> self skel root-channel 0))) - (set! - (-> gp-3 frame-group) - (the-as art-joint-anim (-> self draw art-group data 2)) - ) - (set! - (-> gp-3 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 2)) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((gp-2 (-> self skel root-channel 0))) + (set! (-> gp-2 param 0) (ja-aframe 10.0 0)) + (set! (-> gp-2 param 1) 1.0) + (joint-control-channel-group-eval! gp-2 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> gp-3 param 1) 1.0) - (set! (-> gp-3 frame-num) (ja-aframe 10.0 0)) - (joint-control-channel-group! - gp-3 - (the-as art-joint-anim (-> self draw art-group data 2)) - num-func-seek! - ) + (set! (-> self event-hook) (-> spiderwebs-idle event)) + (let ((gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + (set! (-> gp-3 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 2)) data 0 length) -1)) + ) + (set! (-> gp-3 param 1) 1.0) + (set! (-> gp-3 frame-num) (ja-aframe 10.0 0)) + (joint-control-channel-group! gp-3 (the-as art-joint-anim (-> self draw art-group data 2)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-10 (-> self skel root-channel 0))) + (set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1))) + (set! (-> a0-10 param 1) 1.0) + (joint-control-channel-group-eval! a0-10 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + (go spiderwebs-idle) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-10 (-> self skel root-channel 0))) - (set! - (-> a0-10 param 0) - (the float (+ (-> a0-10 frame-group data 0 length) -1)) - ) - (set! (-> a0-10 param 1) 1.0) - (joint-control-channel-group-eval! - a0-10 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go spiderwebs-idle) - (none) - ) :post (the-as (function none :behavior spiderwebs) transform-post) ) (defmethod init-from-entity! spiderwebs ((obj spiderwebs) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-0 transform-index) 3) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 3) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) 13926.4) + (backup-collide-with-as s4-0) + (set! (-> obj root) s4-0) ) - (set! (-> s4-0 nav-radius) 13926.4) - (backup-collide-with-as s4-0) - (set! (-> obj root) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *spiderwebs-sg* '()) - (set! - (-> obj spring-height) - (res-lump-float arg0 'spring-height :default 45056.0) - ) + (set! (-> obj spring-height) (res-lump-float arg0 'spring-height :default 45056.0)) (ja-channel-set! 1) (let ((a0-11 (-> obj skel root-channel 0))) - (set! - (-> a0-11 param 0) - (the float (+ (-> a0-11 frame-group data 0 length) -1)) + (set! (-> a0-11 param 0) (the float (+ (-> a0-11 frame-group data 0 length) -1))) + (set! (-> a0-11 param 1) 1.0) + (joint-control-channel-group! a0-11 (the-as art-joint-anim #f) num-func-seek!) ) - (set! (-> a0-11 param 1) 1.0) - (joint-control-channel-group! - a0-11 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) (let ((s5-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> obj draw art-group data 2)) - num-func-identity + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) ) - (set! (-> s5-1 frame-num) 0.0) - ) (nav-mesh-connect obj (-> obj root) (the-as nav-control #f)) (transform-post) (go spiderwebs-idle) diff --git a/goal_src/levels/misty/balloonlurker.gc b/goal_src/levels/misty/balloonlurker.gc index b596129ba6..f4404240f5 100644 --- a/goal_src/levels/misty/balloonlurker.gc +++ b/goal_src/levels/misty/balloonlurker.gc @@ -544,10 +544,10 @@ (f0-0 (vector-vector-xz-distance (-> obj dest-point-old) (-> obj root-overlay trans))) (f0-6 (/ (- (+ (/ (+ (* f30-0 (-> obj dest-point-old y)) (* f0-0 (-> obj dest-point y))) (fmax 409.6 (+ f30-0 f0-0))) - (-> *BALLOONLURKER-bank* buoyancy-depth-offset) - ) - (-> s1-0 world-pos y) - ) + (-> *BALLOONLURKER-bank* buoyancy-depth-offset) + ) + (-> s1-0 world-pos y) + ) (-> obj info max-buoyancy-depth) ) ) @@ -748,10 +748,9 @@ (balloonlurker-play-sounds) (when (nonzero? (-> self draw)) (cond - ((or - (logtest? (-> self draw status) (draw-status drwf04)) - (logtest? (-> self draw status) (draw-status drwf03)) - ) + ((or (logtest? (-> self draw status) (draw-status drwf04)) + (logtest? (-> self draw status) (draw-status drwf03)) + ) (logclear! (-> self draw status) (draw-status drwf05)) (dummy-47 (-> self root-overlay)) (ja-post) @@ -780,8 +779,8 @@ :code (behavior () (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 4) ) ) @@ -909,10 +908,9 @@ (set! (-> a0-8 param 0) 1.0) (joint-control-channel-group-eval! a0-8 (the-as art-joint-anim #f) num-func-loop!) ) - (set! v1-27 (or - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 9000) - (< 819200.0 (- (-> self root-overlay trans y) (-> self water-y))) - ) + (set! v1-27 (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) 9000) + (< 819200.0 (- (-> self root-overlay trans y) (-> self water-y))) + ) ) ) (dummy-18 self) @@ -1053,9 +1051,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 6) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) (set-root-prim! s5-0 s4-0) @@ -1098,39 +1096,39 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 4) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 40960.0 0.0 61440.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 57344.0 0.0 28672.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 4)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core offense) 2) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-1 transform-index) 4) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 -8192.0 10240.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 8)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 10) (set-vector! (-> s3-2 local-sphere) 0.0 -8192.0 0.0 6144.0) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 16)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 7) (set-vector! (-> s3-3 local-sphere) 0.0 -8192.0 0.0 6144.0) (append-prim s4-0 s3-3) @@ -1220,10 +1218,9 @@ (process-drawable-from-entity! obj arg0) (TODO-RENAME-31 obj) (cond - ((logtest? - (-> (entity-actor-lookup (-> obj entity) 'alt-actor 0) extra perm status) - (entity-perm-status complete) - ) + ((logtest? (-> (entity-actor-lookup (-> obj entity) 'alt-actor 0) extra perm status) + (entity-perm-status complete) + ) (process-entity-status! obj (entity-perm-status dead) #t) (return #f) ) diff --git a/goal_src/levels/misty/bonelurker.gc b/goal_src/levels/misty/bonelurker.gc index a4b08c588c..e2ca0f826a 100644 --- a/goal_src/levels/misty/bonelurker.gc +++ b/goal_src/levels/misty/bonelurker.gc @@ -98,21 +98,20 @@ (go bonelurker-stun) #t ) - ((and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg1 param 0)) - (-> obj collide-info) - (the-as uint 1) - ) - (= (-> obj skel root-channel 0) (-> obj skel channel)) - (let ((v1-30 (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) - ) - ) - (or (= v1-30 (-> obj draw art-group data 9)) (= v1-30 (-> obj draw art-group data 10))) - ) - ) + ((and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg1 param 0)) + (-> obj collide-info) + (the-as uint 1) + ) + (= (-> obj skel root-channel 0) (-> obj skel channel)) + (let ((v1-30 (if (> (-> obj skel active-channels) 0) + (-> obj skel root-channel 0 frame-group) + ) + ) + ) + (or (= v1-30 (-> obj draw art-group data 9)) (= v1-30 (-> obj draw art-group data 10))) + ) + ) (let ((a1-6 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-6 from) pp) (set! (-> a1-6 num-params) 2) @@ -179,7 +178,10 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :exit - (behavior () (bonelurker-set-large-bounds-sphere) (none)) + (behavior () + (bonelurker-set-large-bounds-sphere) + (none) + ) :code (behavior () (bonelurker-set-small-bounds-sphere) @@ -224,10 +226,9 @@ nav-enemy-default-event-handler :trans (behavior () ((-> (method-of-type nav-enemy nav-enemy-chase) trans)) - (if (and - (zero? (logand (-> self nav-enemy-flags) 64)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self bump-player-time))) 150) - ) + (if (and (zero? (logand (-> self nav-enemy-flags) 64)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self bump-player-time))) 150) + ) (logior! (-> self nav-enemy-flags) 64) ) (none) @@ -240,15 +241,15 @@ nav-enemy-default-event-handler (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 13) ) (ja-channel-push! 1 90) ) ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 15) ) (ja-channel-push! 1 60) @@ -293,10 +294,9 @@ nav-enemy-default-event-handler ) (while #t (cond - ((or - (not *target*) - (< 36864.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) + ((or (not *target*) + (< 36864.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) + ) (let ((a0-19 (-> self skel root-channel 0))) (set! (-> a0-19 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) (set! (-> a0-19 param 0) @@ -505,8 +505,8 @@ nav-enemy-default-event-handler (s5-0 (target-pos 0)) ) (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) + (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) + ) 12743.111 ) (let ((a0-6 (-> self skel root-channel 0))) @@ -607,9 +607,15 @@ nav-enemy-default-event-handler :event bonelurker-stunned-event-handler :enter - (behavior () (nav-enemy-neck-control-inactive) (none)) + (behavior () + (nav-enemy-neck-control-inactive) + (none) + ) :exit - (behavior () (nav-enemy-neck-control-look-at) (none)) + (behavior () + (nav-enemy-neck-control-look-at) + (none) + ) :code (behavior () (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -704,31 +710,31 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 10240.0 0.0 24576.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 11468.8 0.0 4096.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 29) (set-vector! (-> s3-2 local-sphere) 0.0 4915.2 0.0 4915.2) (append-prim s4-0 s3-2) diff --git a/goal_src/levels/misty/misty-conveyor.gc b/goal_src/levels/misty/misty-conveyor.gc index 8cafb33b9a..70237406a8 100644 --- a/goal_src/levels/misty/misty-conveyor.gc +++ b/goal_src/levels/misty/misty-conveyor.gc @@ -211,12 +211,13 @@ (defstate keg-on-paddle (keg) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('detach) - (go keg-paddle-to-path) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('detach) + (go keg-paddle-to-path) + ) + ) + ) :code (behavior () (set! (-> (the-as keg (-> self parent 0)) sync-offset) (the-as float (process->ppointer self))) @@ -459,7 +460,11 @@ :event (the-as (function process int symbol event-message-block object :behavior keg) #f) :code - (behavior () (sound-stop (-> self sound-id)) (dummy-18 self) (none)) + (behavior () + (sound-stop (-> self sound-id)) + (dummy-18 self) + (none) + ) :post (the-as (function none :behavior keg) transform-post) ) @@ -473,9 +478,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) @@ -571,10 +576,9 @@ ) (while #t (let ((s4-0 #f)) - (when (or - (not *target*) - (< 102400.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (when (or (not *target*) + (< 102400.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) (let ((v1-10 (-> *keg-conveyor-keg-spawn-table* gp-0))) (cond ((zero? v1-10) @@ -602,12 +606,12 @@ ) ) (set! (-> a0-6 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -668,10 +672,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/misty/misty-obs.gc b/goal_src/levels/misty/misty-obs.gc index ec404de045..768731adb1 100644 --- a/goal_src/levels/misty/misty-obs.gc +++ b/goal_src/levels/misty/misty-obs.gc @@ -1231,12 +1231,12 @@ (f28-0 (the float s4-0)) ) (set! s4-0 (/ (the int (* 65536.0 (ja-frame-num 0))) (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1542,12 +1542,12 @@ num-func-identity ) (set! (-> gp-2 frame-num) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1572,27 +1572,27 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 98304.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 9011.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 49152.0 0.0 49152.0) (append-prim s3-0 s2-1) @@ -1787,10 +1787,10 @@ ) (dummy-29 s4-0 1) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg1) (set-vector! (-> s2-0 local-sphere) 8192.0 -4096.0 8192.0 16384.0) (set-root-prim! s4-0 s2-0) @@ -1956,7 +1956,10 @@ (defstate rigid-body-platform-idle (bone-platform) :virtual #t :enter - (behavior () (ja-channel-set! 0) (none)) + (behavior () + (ja-channel-set! 0) + (none) + ) :code (behavior () (while #t @@ -2028,10 +2031,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -2297,7 +2300,10 @@ (defstate boat-fuelcell-die (boat-fuelcell) :code - (behavior () (dummy-18 self) (none)) + (behavior () + (dummy-18 self) + (none) + ) ) (defmethod init-from-entity! boat-fuelcell ((obj boat-fuelcell) (arg0 entity-actor)) diff --git a/goal_src/levels/misty/misty-teetertotter.gc b/goal_src/levels/misty/misty-teetertotter.gc index 5e60e91655..31d7fbb359 100644 --- a/goal_src/levels/misty/misty-teetertotter.gc +++ b/goal_src/levels/misty/misty-teetertotter.gc @@ -94,14 +94,13 @@ :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (the-as object (when (= arg2 'touch) - (when (and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - (-> self rock-is-dangerous) - ) + (when (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1) + ) + (-> self rock-is-dangerous) + ) (let ((a1-2 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-2 from) self) (set! (-> a1-2 num-params) 2) @@ -114,16 +113,15 @@ (send-event-function arg0 a1-2) ) ) - (when (and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root)) - (the-as uint 2) - ) - (target-on-end-of-teetertotter? self) - (not (-> self launched-player)) - (-> self in-launch-window) - ) + (when (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root)) + (the-as uint 2) + ) + (target-on-end-of-teetertotter? self) + (not (-> self launched-player)) + (-> self in-launch-window) + ) (let ((a1-4 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-4 from) self) (set! (-> a1-4 num-params) 2) @@ -216,52 +214,52 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 36864.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 2)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 3) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-4) diff --git a/goal_src/levels/misty/misty-warehouse.gc b/goal_src/levels/misty/misty-warehouse.gc index 32404284e9..a670117a8a 100644 --- a/goal_src/levels/misty/misty-warehouse.gc +++ b/goal_src/levels/misty/misty-warehouse.gc @@ -35,15 +35,16 @@ (defstate silostep-idle (silostep) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('trigger) - (go silostep-camera) - ) - (('trigger-rise) - (go silostep-rise #f) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go silostep-camera) + ) + (('trigger-rise) + (go silostep-rise #f) + ) + ) + ) :code (behavior () (let ((gp-0 (-> self skel root-channel 0))) @@ -177,10 +178,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 18432.0) (set-root-prim! s4-0 s3-0) @@ -224,10 +225,10 @@ (defmethod TODO-RENAME-24 rounddoor ((obj rounddoor)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) -12288.0 0.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/misty/mistycannon.gc b/goal_src/levels/misty/mistycannon.gc index 49f8b07050..a6bb708b3e 100644 --- a/goal_src/levels/misty/mistycannon.gc +++ b/goal_src/levels/misty/mistycannon.gc @@ -912,13 +912,13 @@ :post (behavior () (vector-v++! (-> self root-override transv) (dummy-62 (-> self root-override) (new-stack-vector0) 1.0)) - (set! (-> self root-override root-prim prim-core offense) 1) + (set! (-> self root-override root-prim prim-core offense) (collide-offense touch)) (dummy-33 (-> self root-override) (-> self root-override transv) (-> self root-override root-prim collide-with) ) - (set! (-> self root-override root-prim prim-core offense) 4) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) (spawn-part self) (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) (if (logtest? (-> self root-override status) 1) @@ -934,7 +934,7 @@ (-> self root-override trans) (-> self root-override shadow-pos) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -1075,8 +1075,8 @@ (let ((v1-11 (-> self root-override root-prim))) (set! (-> v1-11 local-sphere w) (-> self blast-radius)) (set! (-> v1-11 prim-core world-sphere w) (-> self blast-radius)) - (set! (-> v1-11 collide-with) (the-as uint 924)) - (set! (-> v1-11 prim-core collide-as) (the-as uint 256)) + (set! (-> v1-11 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object)) + (set! (-> v1-11 prim-core collide-as) (collide-kind enemy)) ) (dummy-47 (-> self root-override)) (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) @@ -1150,10 +1150,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 925)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1720.3201) (set-root-prim! s5-0 s4-0) @@ -1916,25 +1916,25 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 20480.0 0.0 40960.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 28672.0 -8192.0 4096.0) (append-prim s3-0 s2-1) @@ -2023,5 +2023,3 @@ ) - - diff --git a/goal_src/levels/misty/muse.gc b/goal_src/levels/misty/muse.gc index 915893d325..d3edfcab52 100644 --- a/goal_src/levels/misty/muse.gc +++ b/goal_src/levels/misty/muse.gc @@ -209,8 +209,8 @@ nav-enemy-default-event-handler :code (behavior () (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 4) ) (ja-channel-push! 1 30) @@ -272,25 +272,26 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (cond - ((or - (not *target*) - (< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) - ) + ((or (not *target*) + (< 102400.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) + ) (set! (-> self target-speed) 0.0) (if (= (-> self momentum-speed) 0.0) (go muse-idle) ) ) - ((or - (not *target*) - (< (-> self sprint-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) + ((or (not *target*) + (< (-> self sprint-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) (set! (-> self target-speed) 40960.0) ) (else @@ -307,8 +308,8 @@ nav-enemy-default-event-handler (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 3) ) (ja-channel-push! 1 30) @@ -433,7 +434,10 @@ nav-enemy-default-event-handler :event (the-as (function process int symbol event-message-block object :behavior muse) #f) :trans - (behavior () (spool-push *art-control* (-> self anim name) 0 self -1.0) (none)) + (behavior () + (spool-push *art-control* (-> self anim name) 0 self -1.0) + (none) + ) :code (behavior () (sound-play-by-name (static-sound-name "money-pickup") (new-sound-id) 1024 0 0 1 #t) @@ -456,7 +460,7 @@ nav-enemy-default-event-handler (else (TODO-RENAME-30 (-> self collide-info) (-> *target* control trans)) (quaternion-copy! (-> self collide-info quat) (-> *target* control quat)) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #f (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #f (collide-kind background)) ) ) ) @@ -534,7 +538,13 @@ nav-enemy-default-event-handler (none) ) :post - (behavior () (dummy-51 self) (level-hint-surpress!) (kill-current-level-hint '() '() 'exit) (ja-post) (none)) + (behavior () + (dummy-51 self) + (level-hint-surpress!) + (kill-current-level-hint '() '() 'exit) + (ja-post) + (none) + ) ) (define *muse-nav-enemy-info* (new 'static 'nav-enemy-info @@ -601,10 +611,10 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6) (set-root-prim! s4-0 s3-0) ) diff --git a/goal_src/levels/misty/quicksandlurker.gc b/goal_src/levels/misty/quicksandlurker.gc index 85b1cfcb8b..28c7e27ce4 100644 --- a/goal_src/levels/misty/quicksandlurker.gc +++ b/goal_src/levels/misty/quicksandlurker.gc @@ -402,7 +402,10 @@ ) ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior () (while (< (- (-> *display* base-frame-counter) (-> self state-time)) 1200) @@ -411,8 +414,7 @@ (-> self root-override transv) (-> self root-override root-prim collide-with) ) - (if (or - (logtest? (-> self root-override status) 8) + (if (or (logtest? (-> self root-override status) 8) (< (vector-vector-distance (-> self root-override trans) (the-as vector (-> self root-override trans-old))) 40.96 ) @@ -424,7 +426,7 @@ (-> self root-override trans) (the-as vector #f) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -435,7 +437,10 @@ (none) ) :post - (behavior () (dummy-47 (-> self root-override)) (none)) + (behavior () + (dummy-47 (-> self root-override)) + (none) + ) ) (defstate quicksandlurker-missile-impact (quicksandlurker-missile) @@ -496,10 +501,12 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 2973)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) + (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) + ) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) (set-root-prim! s5-0 s4-0) ) @@ -639,10 +646,9 @@ (defbehavior quicksandlurker-check-hide-transition quicksandlurker () (when *target* - (if (and - (and *target* (>= 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - (!= (-> *target* next-state name) 'target-flop) - ) + (if (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (!= (-> *target* next-state name) 'target-flop) + ) (go quicksandlurker-hide) ) 0.0 @@ -665,15 +671,20 @@ :event (the-as (function process int symbol event-message-block object :behavior quicksandlurker) #f) :enter - (behavior () (logior! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logior! (-> self draw status) (draw-status drwf01)) + (none) + ) :exit - (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :trans (behavior () - (if (and - *target* - (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) (go quicksandlurker-wait) ) (none) @@ -699,10 +710,9 @@ (set! (-> self y-offset) 1228.8) (go quicksandlurker-track) ) - ((or - (not *target*) - (< 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + ((or (not *target*) + (< 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) (set! (-> self y-offset) (seek (-> self y-offset) -6553.6 (* 20480.0 (-> *display* seconds-per-frame)))) (if (= (-> self y-offset) -6553.6) (go quicksandlurker-idle) @@ -815,8 +825,7 @@ quicksandlurker-default-event-handler :trans (behavior () - (if (or - (not *target*) + (if (or (not *target*) (< 81920.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) ) (go quicksandlurker-wait) @@ -997,9 +1006,15 @@ :event quicksandlurker-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :exit - (behavior () (restore-collide-with-as (-> self root-override)) (none)) + (behavior () + (restore-collide-with-as (-> self root-override)) + (none) + ) :trans (behavior () (if (not *target*) @@ -1009,12 +1024,11 @@ (a1-0 (-> *target* control trans)) ) (cond - ((or - (if (dummy-16 a0-0 a1-0) - #t - ) - (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - ) + ((or (if (dummy-16 a0-0 a1-0) + #t + ) + (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + ) (set! (-> self state-time) (-> *display* base-frame-counter)) ) (else @@ -1161,31 +1175,31 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core offense) 2) + (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-2 transform-index) 5) (set-vector! (-> s2-2 local-sphere) 0.0 -2048.0 0.0 5324.8) (append-prim s3-0 s2-2) diff --git a/goal_src/levels/ogre/flying-lurker.gc b/goal_src/levels/ogre/flying-lurker.gc index 1d6c5f791a..598e9d0e3d 100644 --- a/goal_src/levels/ogre/flying-lurker.gc +++ b/goal_src/levels/ogre/flying-lurker.gc @@ -347,17 +347,23 @@ (defstate plunger-lurker-die (plunger-lurker) :code - (behavior () (dummy-18 self) (deactivate self) (suspend) 0 (none)) + (behavior () + (dummy-18 self) + (deactivate self) + (suspend) + 0 + (none) + ) ) (defmethod init-from-entity! plunger-lurker ((obj plunger-lurker) (arg0 entity-actor)) (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 -16384.0 40960.0) (set-root-prim! s4-0 s3-0) @@ -432,10 +438,9 @@ (s4-0 #f) ) (when (-> obj draw shadow) - (when (or - (logtest? (-> obj draw status) (draw-status drwf03)) - (< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0) - ) + (when (or (logtest? (-> obj draw status) (draw-status drwf03)) + (< (vector-vector-xz-distance-squared (-> obj root trans) (camera-pos)) 10485760000.0) + ) (let ((s3-1 (new 'stack-no-clear 'collide-tri-result)) (a1-1 (new 'stack-no-clear 'vector)) (a2-0 (new 'stack-no-clear 'vector)) @@ -445,10 +450,9 @@ (set-vector! a2-0 0.0 -81920.0 0.0 1.0) (when (>= (dummy-10 *collide-cache* a1-1 a2-0 8192.0 1 pp s3-1 1) 0.0) (set! (-> s3-1 intersect w) 8192.0) - (when (and - (sphere-in-view-frustum? (the-as sphere (-> s3-1 intersect))) - (< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos))) - ) + (when (and (sphere-in-view-frustum? (the-as sphere (-> s3-1 intersect))) + (< 822083600.0 (vector-vector-distance-squared (-> s3-1 intersect) (camera-pos))) + ) (set! s4-0 #t) (let ((v1-17 s5-0)) (set! (-> v1-17 settings flags) (logand -33 (-> v1-17 settings flags))) @@ -518,7 +522,11 @@ (defstate flying-lurker-die (flying-lurker) :code - (behavior () (dummy-18 self) (deactivate self) (none)) + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) ) (defstate flying-lurker-sleep (flying-lurker) @@ -557,9 +565,9 @@ 0.0 (let* ((f1-6 (* -81920.0 (the float (-> self rank)))) (f0-10 (+ (if (< f26-0 f0-6) - (fmax (+ -81920.0 f1-6) (- f26-0 f0-6)) - (fmin (+ 245760.0 f1-6) (- f26-0 f0-6)) - ) + (fmax (+ -81920.0 f1-6) (- f26-0 f0-6)) + (fmin (+ 245760.0 f1-6) (- f26-0 f0-6)) + ) f28-0 ) ) @@ -577,14 +585,13 @@ ) (defbehavior flying-lurker-move flying-lurker () - (+! - (-> self curve-position) - (/ (the float - (* (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) (the int (-> self speed))) - ) - (path-distance (-> self path)) - ) - ) + (+! (-> self curve-position) + (/ (the float + (* (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) (the int (-> self speed))) + ) + (path-distance (-> self path)) + ) + ) (set! (-> self curve-position) (fmin 1.0 (fmax 0.0 (-> self curve-position)))) (eval-path-curve! (-> self path) (-> self root trans) (-> self curve-position) 'interp) (cond @@ -777,13 +784,11 @@ (flying-lurker-calc-speed (meters 15.0) (meters 30.0) (meters 0.11666667) (meters 0.083333336)) (flying-lurker-move) (flying-lurker-rotate) - (when (and - (-> self alt-actor) - (or - (< (vector-vector-distance-squared (-> self root trans) (-> self alt-actor extra trans)) 6710886400.0) - (and *target* (< 4194304000000.0 (vector-vector-distance-squared (-> self root trans) (target-pos 0)))) - ) - ) + (when (and (-> self alt-actor) + (or (< (vector-vector-distance-squared (-> self root trans) (-> self alt-actor extra trans)) 6710886400.0) + (and *target* (< 4194304000000.0 (vector-vector-distance-squared (-> self root trans) (target-pos 0)))) + ) + ) (dummy-30 (-> self alt-actor) (entity-perm-status dead) #f) (entity-birth-no-kill (-> self alt-actor)) (let ((a1-4 (new 'stack-no-clear 'event-message-block))) @@ -809,8 +814,8 @@ (behavior () (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 5) ) ) @@ -949,23 +954,21 @@ (defbehavior flying-lurker-play-intro flying-lurker () (logclear! (-> self mask) (process-mask actor-pause)) (close-specific-task! (game-task plunger-lurker-hit) (task-status unknown)) - (while (and - *target* - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) (suspend) ) (while (not (process-grab? *target*)) (suspend) ) (kill-current-level-hint '(notice) '() 'exit) - (while (or - (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (!= (-> *level* loading-level) (-> *level* level-default)) - ) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (!= (-> *level* loading-level) (-> *level* level-default)) + ) (suspend) ) (suspend) @@ -1065,7 +1068,10 @@ :event flying-lurker-handler :exit - (behavior () (clear-pending-settings-from-process *setting-control* self 'allow-progress) (none)) + (behavior () + (clear-pending-settings-from-process *setting-control* self 'allow-progress) + (none) + ) :code (behavior () (when (play-movie?) @@ -1197,9 +1203,15 @@ ) ) :exit - (behavior () (ja-channel-set! 0) (none)) + (behavior () + (ja-channel-set! 0) + (none) + ) :code - (behavior ((arg0 handle) (arg1 string)) (clone-anim arg0 3 #t arg1) (none)) + (behavior ((arg0 handle) (arg1 string)) + (clone-anim arg0 3 #t arg1) + (none) + ) ) (defstate flying-lurker-idle (flying-lurker) @@ -1270,7 +1282,10 @@ ) ) :exit - (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :trans (behavior () (spool-push *art-control* "flying-lurker-intro" 0 self -99.0) diff --git a/goal_src/levels/ogre/ogre-obs.gc b/goal_src/levels/ogre/ogre-obs.gc index 5348d71afb..baee56dcf8 100644 --- a/goal_src/levels/ogre/ogre-obs.gc +++ b/goal_src/levels/ogre/ogre-obs.gc @@ -498,16 +498,22 @@ ) ) :code - (behavior () (transform-post) (logior! (-> self mask) (process-mask sleep)) (suspend) 0 (none)) + (behavior () + (transform-post) + (logior! (-> self mask) (process-mask sleep)) + (suspend) + 0 + (none) + ) ) (defmethod init-from-entity! tntbarrel ((obj tntbarrel) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) (set-root-prim! s4-0 s3-0) @@ -632,10 +638,9 @@ ) ) (else - (if (and - (-> self triggered) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self delay))) - ) + (if (and (-> self triggered) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self delay))) + ) (set! (-> self active) #t) ) ) @@ -706,10 +711,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) (set-root-prim! s5-0 s4-0) @@ -1027,16 +1032,17 @@ (defstate ogre-bridge-idle (ogre-bridge) :exit - (behavior () (ogre-bridge-update-joints) (none)) + (behavior () + (ogre-bridge-update-joints) + (none) + ) :trans (behavior () - (if (and - (and - *target* - (>= 286720.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (send-event *target* 'query 'powerup 3) - ) + (if (and (and *target* + (>= 286720.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) + (send-event *target* 'query 'powerup 3) + ) (go ogre-bridge-activate) ) 0 @@ -1212,161 +1218,161 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 143360.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 3)) - (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 9) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 3)) - (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 10) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 3)) - (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 11) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 3)) - (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 12) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-8) ) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 3)) - (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-9 collide-with) (collide-kind target)) + (set! (-> s2-9 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 13) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-9) ) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 3)) - (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-10 collide-with) (collide-kind target)) + (set! (-> s2-10 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 14) (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-10) ) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 3)) - (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-11 collide-with) (collide-kind target)) + (set! (-> s2-11 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 15) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-11) ) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 3)) - (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-12 collide-with) (collide-kind target)) + (set! (-> s2-12 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 16) (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-12) ) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 3)) - (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-13 collide-with) (collide-kind target)) + (set! (-> s2-13 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 17) (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-13) ) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 3)) - (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-14 collide-with) (collide-kind target)) + (set! (-> s2-14 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 18) (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-14) ) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 3)) - (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-15 collide-with) (collide-kind target)) + (set! (-> s2-15 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 19) (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-15) ) (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 1)))) - (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-16 collide-with) (the-as uint 16)) - (set! (-> s2-16 prim-core action) (the-as uint 3)) - (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-16 collide-with) (collide-kind target)) + (set! (-> s2-16 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 20) (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) (append-prim s3-0 s2-16) @@ -1422,16 +1428,20 @@ (defstate ogre-bridgeend-idle (ogre-bridgeend) :code - (behavior () (transform-post) (anim-loop) (none)) + (behavior () + (transform-post) + (anim-loop) + (none) + ) ) (defmethod init-from-entity! ogre-bridgeend ((obj ogre-bridgeend) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) (set-root-prim! s4-0 s3-0) @@ -1735,12 +1745,12 @@ ) ) (set! (-> a0-5 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1796,10 +1806,10 @@ (defmethod init-from-entity! shortcut-boulder ((obj shortcut-boulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc index 8bc7d8977b..4094011165 100644 --- a/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc +++ b/goal_src/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL.gc @@ -12,488 +12,335 @@ (defstate target-racing-start (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) - 'racer - ) - ((and (= arg2 'get-pickup) (= (-> arg3 param 0) 3)) - (if - (>= - (- - (-> *display* base-frame-counter) - (the-as int (-> self racer boost-time)) - ) - 300 + (cond + ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + 'racer ) - (send-event - self - 'boost - (fmax 1.0 (fmin 2.0 (the-as float (-> arg3 param 1)))) - ) - ) - ) - (else - (case arg2 - (('end-mode) - (go target-racing-get-off (process->handle arg0)) - ) - (('touched) - (send-event arg0 'attack (-> arg3 param 0) 'racer 0 0) - (when - (and - (type-type? (-> arg0 type) babak) - (< 40960.0 (-> self control unknown-float01)) - ) - (let - ((f0-5 - (lerp-scale - 16384.0 - 32768.0 - (-> self control unknown-float01) - 40960.0 - (-> self racer transv-max) - ) + ((and (= arg2 'get-pickup) (= (-> arg3 param 0) 3)) + (if (>= (- (-> *display* base-frame-counter) (the-as int (-> self racer boost-time))) 300) + (send-event self 'boost (fmax 1.0 (fmin 2.0 (the-as float (-> arg3 param 1))))) ) - ) - (go target-racing-jump f0-5 f0-5 #f) - ) - ) - ) - (('attack 'attack-or-shove 'attack-invinc) - (let ((v1-27 (the-as attack-info (-> arg3 param 1)))) - (if - (not - (and - (logtest? (-> v1-27 mask) 32) - (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup)) - ) - ) - (target-attacked - arg2 - (the-as attack-info (-> arg3 param 1)) - arg0 - (the-as process (-> arg3 param 0)) - target-racing-hit - ) - ) - ) - ) - (('heat) - (let - ((f0-7 - (fmax - 0.0 - (fmin - (+ (-> self racer heat) (the-as float (-> arg3 param 0))) - (-> *RACER-bank* heat-max) - ) - ) - ) - ) - (set! (-> self racer heat) f0-7) - f0-7 - ) - ) - (('boost) - (sound-play-by-name - (static-sound-name "get-blue-eco") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! - (-> self racer boost-sound-id) - (sound-play-by-name - (static-sound-name "zoom-boost") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - (set! - (-> self racer boost-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (let - ((f0-12 - (seek - (-> self racer boost-level) - (-> *RACER-bank* boost-level-max) - (* - (-> *RACER-bank* boost-level-inc) - (the-as float (-> arg3 param 0)) - ) - ) - ) - ) - (set! (-> self racer boost-level) f0-12) - f0-12 - ) - ) - (('smack) - (go target-racing-smack (-> self control unknown-float01) #t) - ) - (('jump) - (go - target-racing-jump - (the-as float (-> arg3 param 0)) - (the-as float (-> arg3 param 1)) - #f - ) - ) - (('change-mode) - (case (-> arg3 param 0) - (('grab) - (go target-racing-grab) - ) - ) - ) - (('clone-anim) - (go - target-racing-clone-anim - (process->handle (the-as process (-> arg3 param 0))) - ) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) - ) + (case arg2 + (('end-mode) + (go target-racing-get-off (process->handle arg0)) + ) + (('touched) + (send-event arg0 'attack (-> arg3 param 0) 'racer 0 0) + (when (and (type-type? (-> arg0 type) babak) (< 40960.0 (-> self control unknown-float01))) + (let ((f0-5 (lerp-scale 16384.0 32768.0 (-> self control unknown-float01) 40960.0 (-> self racer transv-max)))) + (go target-racing-jump f0-5 f0-5 #f) + ) + ) + ) + (('attack 'attack-or-shove 'attack-invinc) + (let ((v1-27 (the-as attack-info (-> arg3 param 1)))) + (if (not (and (logtest? (-> v1-27 mask) 32) (or (= (-> v1-27 mode) 'burn) (= (-> v1-27 mode) 'burnup)))) + (target-attacked + arg2 + (the-as attack-info (-> arg3 param 1)) + arg0 + (the-as process (-> arg3 param 0)) + target-racing-hit + ) + ) + ) + ) + (('heat) + (let ((f0-7 (fmax 0.0 (fmin (+ (-> self racer heat) (the-as float (-> arg3 param 0))) (-> *RACER-bank* heat-max)))) + ) + (set! (-> self racer heat) f0-7) + f0-7 + ) + ) + (('boost) + (sound-play-by-name (static-sound-name "get-blue-eco") (new-sound-id) 1024 0 0 1 #t) + (set! (-> self racer boost-sound-id) + (sound-play-by-name (static-sound-name "zoom-boost") (new-sound-id) 1024 0 0 1 #t) + ) + (set! (-> self racer boost-time) (the-as uint (-> *display* base-frame-counter))) + (let ((f0-12 (seek + (-> self racer boost-level) + (-> *RACER-bank* boost-level-max) + (* (-> *RACER-bank* boost-level-inc) (the-as float (-> arg3 param 0))) + ) + ) + ) + (set! (-> self racer boost-level) f0-12) + f0-12 + ) + ) + (('smack) + (go target-racing-smack (-> self control unknown-float01) #t) + ) + (('jump) + (go target-racing-jump (the-as float (-> arg3 param 0)) (the-as float (-> arg3 param 1)) #f) + ) + (('change-mode) + (case (-> arg3 param 0) + (('grab) + (go target-racing-grab) + ) + ) + ) + (('clone-anim) + (go target-racing-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + ) + (else + (target-generic-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) ) - ) ) - ) :exit (behavior () - (when - (not - (or - (= (-> self next-state name) 'target-racing) - (= (-> self next-state name) 'target-racing-jump) - (= (-> self next-state name) 'target-racing-bounce) - (= (-> self next-state name) 'target-racing-hit) - (= (-> self next-state name) 'target-racing-death) - (= (-> self next-state name) 'target-racing-smack) - (= (-> self next-state name) 'target-racing-falling) - (= (-> self next-state name) 'target-racing-get-on) - (= (-> self next-state name) 'target-racing-get-off) - (= (-> self next-state name) 'target-racing-get-off-jump) - (= (-> self next-state name) 'target-racing-grab) - (= (-> self next-state name) 'target-racing-clone-anim) + (when (not (or (= (-> self next-state name) 'target-racing) + (= (-> self next-state name) 'target-racing-jump) + (= (-> self next-state name) 'target-racing-bounce) + (= (-> self next-state name) 'target-racing-hit) + (= (-> self next-state name) 'target-racing-death) + (= (-> self next-state name) 'target-racing-smack) + (= (-> self next-state name) 'target-racing-falling) + (= (-> self next-state name) 'target-racing-get-on) + (= (-> self next-state name) 'target-racing-get-off) + (= (-> self next-state name) 'target-racing-get-off-jump) + (= (-> self next-state name) 'target-racing-grab) + (= (-> self next-state name) 'target-racing-clone-anim) + ) + ) + (let ((v1-25 (-> self manipy))) + (when v1-25 + (deactivate (-> v1-25 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)) + ) + ) + (let ((v1-29 (-> *hud-parts* bike-speed))) + (when v1-29 + (set! (-> v1-29 0 deactivate-when-hidden) #t) + (send-event (ppointer->process v1-29) 'hide-quick) + ) + ) + (let ((v1-32 (-> *hud-parts* bike-heat))) + (when v1-32 + (set! (-> v1-32 0 deactivate-when-hidden) #t) + (send-event (ppointer->process v1-32) 'hide-quick) + ) + ) + (set! (-> *hud-parts* buzzers 0 next-y-offset) 0) + (set! (-> *hud-parts* power 0 next-y-offset) 0) + (set! (-> *hud-parts* buzzers 0 y-sgn) 1) + (set! (-> *hud-parts* power 0 y-sgn) 1) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-9 ca-16)) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self state-flags) (logand -1025 (-> self state-flags))) + (send-event *camera* 'clear-slave-option #x6000) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (let ((v1-60 (-> self node-list data))) + (set! (-> v1-60 0 param0) cspace<-transformq+trans!) + (set! (-> v1-60 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-60 0 param2) (the-as basic (-> self control unknown-vector12))) + ) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (sound-stop (-> self racer engine-sound-id)) + (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) + (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) + (clear-pending-settings-from-process *setting-control* self 'sound-flava) + (target-exit) ) - ) - (let ((v1-25 (-> self manipy))) - (when v1-25 - (deactivate (-> v1-25 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) - ) - ) - (let ((v1-29 (-> *hud-parts* bike-speed))) - (when v1-29 - (set! (-> v1-29 0 deactivate-when-hidden) #t) - (send-event (ppointer->process v1-29) 'hide-quick) - ) - ) - (let ((v1-32 (-> *hud-parts* bike-heat))) - (when v1-32 - (set! (-> v1-32 0 deactivate-when-hidden) #t) - (send-event (ppointer->process v1-32) 'hide-quick) - ) - ) - (set! (-> *hud-parts* buzzers 0 next-y-offset) 0) - (set! (-> *hud-parts* power 0 next-y-offset) 0) - (set! (-> *hud-parts* buzzers 0 y-sgn) 1) - (set! (-> *hud-parts* power 0 y-sgn) 1) - (set! - (-> self control root-prim prim-core action) - (logand -66049 (-> self control root-prim prim-core action)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! (-> self state-flags) (logand -1025 (-> self state-flags))) - (send-event *camera* 'clear-slave-option #x6000) - (set! - (-> self control dynam gravity-max) - (-> self control unknown-dynamics00 gravity-max) - ) - (set! - (-> self control dynam gravity-length) - (-> self control unknown-dynamics00 gravity-length) - ) - (let ((v1-60 (-> self node-list data))) - (set! (-> v1-60 0 param0) cspace<-transformq+trans!) - (set! (-> v1-60 0 param1) (the-as basic (-> self control trans))) - (set! - (-> v1-60 0 param2) - (the-as basic (-> self control unknown-vector12)) - ) - ) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) - (sound-stop (-> self racer engine-sound-id)) - (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) - (set! (-> self control unknown-vector12 quad) (the-as uint128 0)) - (clear-pending-settings-from-process *setting-control* self 'sound-flava) - (target-exit) + (none) ) - (none) - ) :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (set-setting! *setting-control* self 'sound-flava #f 30.0 1) - (if (zero? (-> self racer)) - (set! (-> self racer) (new 'process 'racer-info)) - ) - (set! (-> self racer turn-anim-targ) 0.0) - (set! (-> self racer turn-anim-frame) 0.0) - (set! (-> self racer turn-anim-vel) 0.0) - (set! (-> self racer tail-anim-vel) 0.0) - (set! (-> self racer tail-anim-frame) 0.0) - (set! (-> self racer rudd-anim-vel) 0.0) - (set! (-> self racer rudd-anim-frame) 0.0) - (set! (-> self racer stick-lock) #f) - (set! (-> self racer stick-off) #f) - (set! (-> self racer heavy) #f) - (set! (-> self racer unstuck-time) (-> *display* base-frame-counter)) - (set! (-> self racer stuck-count) 0) - (set! (-> self racer cushion-base) 10240.0) - (set! (-> self racer shock-offset) 0.0) - (set! (-> self racer shock-offsetv) 0.0) - (set! (-> self racer shock-rotx) 0.0) - (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) - (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) - (set! (-> self racer scrape-sound-id) (new-sound-id)) - (set! (-> self racer entity) #f) - (let ((v1-28 (handle->process arg0))) - (if v1-28 - (set! (-> self racer entity) (the-as entity-actor (-> v1-28 entity))) - ) - ) - (set! (-> self control surf) *race-track-surface*) - (set! - (-> self control reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - racer-collision-reaction - ) - ) - (vector-reset! (-> self racer rot)) - (set! (-> self racer rot y) (y-angle (-> self control))) - (target-collide-set! 'racer 0.0) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) 512) - (set! (-> self control unknown-surface00) *racer-mods*) - (set! (-> self racer lean-rotx) 0.0) - (vector-reset! (-> self racer rotv)) - (quaternion-identity! (the-as quaternion (-> self racer surface-quat))) - (quaternion-identity! - (the-as quaternion (-> self racer surface-quat-smooth)) - ) - (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - (set! (-> self racer front-rotv) 0.0) - (set! (-> self racer bottom-rot) 0.0) - (let ((v1-56 (-> self node-list data))) - (set! (-> v1-56 0 param0) cspace<-transformq+world-trans!) - (set! (-> v1-56 0 param1) (the-as basic (-> self control trans))) - (set! (-> v1-56 0 param2) (the-as basic (-> self control unknown-vector12))) - ) - (set! (-> self control unknown-float81) 1.0) - (set! (-> self racer hop?) #f) - (set! (-> self racer bounce) 0) - (set! (-> self racer bounce-hit) 0.0) - (set! (-> self racer bob-period) 900.0) - (set! (-> self racer bob-mult-rot) 0.0) - (set! (-> self racer bob-mult-trans) 0.0) - (set! (-> self racer bob-meta-timer) 0.0) - (set! (-> self racer bob-meta-meta-timer) 0.0) - (set! (-> self racer bob-hit-ground-time) (the-as uint 0)) - (set! (-> self racer cushion-bob) 0.0) - (set! (-> self racer cushion-bob-old) 0.0) - (set! (-> self racer hill-value) 0.0) - (set! (-> self racer hill-ground-value) 0.0) - (set! (-> self racer hill-offset) 0.0) - (set! (-> self racer hill-boost) 0.0) - (set! (-> self racer cur-rotx) 0.0) - (set! (-> self racer targ-rotx) 0.0) - (set! (-> self racer hill-rotx) 0.0) - (set! (-> self racer mult-rotx) 0.0) - (set! (-> self racer speed-rotx) 0.25) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) (the-as uint 0)) - (set! - (-> self racer boost-duration) - (the-as uint (-> *RACER-bank* boost-duration)) - ) - (set! (-> self racer heat) 0.0) - (set! (-> self racer slide-mode) 0) - (set! (-> self racer slide-amp) 0.0) - (set! (-> self racer slide-down-time 0) (the-as uint 0)) - (set! (-> self racer slide-down-time 1) (the-as uint 0)) - (set! (-> self racer slide-interp) 0.0) - (set! (-> self racer surface-y) (-> self control trans y)) - (let ((s5-0 (-> self entity))) - (set! (-> self entity) (-> self racer entity)) - (let ((s4-0 (get-process *8k-dead-pool* manipy #x4000))) - (set! (-> self manipy) (the-as (pointer manipy) (when s4-0 - (let - ((t9-9 - (method-of-type - manipy - activate - ) - ) - ) - (t9-9 - (the-as manipy s4-0) - self - 'manipy - (the-as - pointer - #x70004000 - ) - ) - ) - (run-now-in-process - s4-0 - manipy-init - (-> self control trans) - (-> self entity) - *racer-sg* - #f - ) - (-> s4-0 ppointer) - ) - ) + (target-exit) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (set-setting! *setting-control* self 'sound-flava #f 30.0 1) + (if (zero? (-> self racer)) + (set! (-> self racer) (new 'process 'racer-info)) + ) + (set! (-> self racer turn-anim-targ) 0.0) + (set! (-> self racer turn-anim-frame) 0.0) + (set! (-> self racer turn-anim-vel) 0.0) + (set! (-> self racer tail-anim-vel) 0.0) + (set! (-> self racer tail-anim-frame) 0.0) + (set! (-> self racer rudd-anim-vel) 0.0) + (set! (-> self racer rudd-anim-frame) 0.0) + (set! (-> self racer stick-lock) #f) + (set! (-> self racer stick-off) #f) + (set! (-> self racer heavy) #f) + (set! (-> self racer unstuck-time) (-> *display* base-frame-counter)) + (set! (-> self racer stuck-count) 0) + (set! (-> self racer cushion-base) 10240.0) + (set! (-> self racer shock-offset) 0.0) + (set! (-> self racer shock-offsetv) 0.0) + (set! (-> self racer shock-rotx) 0.0) + (set! (-> self racer engine-sound-id) (new 'static 'sound-id)) + (set! (-> self racer boost-sound-id) (new 'static 'sound-id)) + (set! (-> self racer scrape-sound-id) (new-sound-id)) + (set! (-> self racer entity) #f) + (let ((v1-28 (handle->process arg0))) + (if v1-28 + (set! (-> self racer entity) (the-as entity-actor (-> v1-28 entity))) + ) ) - ) - (set! (-> self entity) s5-0) - ) - (when (-> self manipy) - (send-event - (ppointer->process (-> self manipy)) - 'trans-hook - (lambda :behavior manipy - () - (let ((v1-0 (ppointer->process (-> self parent)))) - (set! - (-> self root trans quad) - (-> (the-as target v1-0) racer bike-trans quad) - ) - (let ((a0-4 (-> (the-as target v1-0) racer bike-quat quad))) - (set! (-> self root quat vec quad) a0-4) - ) - (set! - (-> self root scale quad) - (-> (the-as target v1-0) racer bike-scale quad) - ) - (set! (-> self draw light-index) (the-as uint 255)) - (let ((a0-9 (-> (the-as target v1-0) draw color-mult quad))) - (set! (-> self draw color-mult quad) a0-9) - ) - (let ((a0-11 (-> (the-as target v1-0) draw color-emissive quad))) - (set! (-> self draw color-emissive quad) a0-11) - ) - (let ((f0-0 (-> (the-as target v1-0) draw secondary-interp))) - (set! (-> self draw secondary-interp) f0-0) - f0-0 - ) - ) + (set! (-> self control surf) *race-track-surface*) + (set! (-> self control reaction) racer-collision-reaction) + (vector-reset! (-> self racer rot)) + (set! (-> self racer rot y) (y-angle (-> self control))) + (target-collide-set! 'racer 0.0) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (logior! (-> self control root-prim prim-core action) (collide-action ca-9)) + (set! (-> self control unknown-surface00) *racer-mods*) + (set! (-> self racer lean-rotx) 0.0) + (vector-reset! (-> self racer rotv)) + (quaternion-identity! (the-as quaternion (-> self racer surface-quat))) + (quaternion-identity! (the-as quaternion (-> self racer surface-quat-smooth))) + (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) + (set! (-> self racer front-rotv) 0.0) + (set! (-> self racer bottom-rot) 0.0) + (let ((v1-56 (-> self node-list data))) + (set! (-> v1-56 0 param0) cspace<-transformq+world-trans!) + (set! (-> v1-56 0 param1) (the-as basic (-> self control trans))) + (set! (-> v1-56 0 param2) (the-as basic (-> self control unknown-vector12))) ) - ) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event - (ppointer->process (-> self manipy)) - 'art-joint-anim - "racer-get-on" - 0.0 - ) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior manipy - () - (set! (-> self clone-copy-trans) #f) - (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) - (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-1) - ) - (set! (-> self draw shadow-ctrl) *racer-shadow-control*) - (let ((gp-0 (-> self parent))) - (set! - (-> (the-as target (-> gp-0 0)) racer front-blade) - (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 4) + (set! (-> self control unknown-float81) 1.0) + (set! (-> self racer hop?) #f) + (set! (-> self racer bounce) 0) + (set! (-> self racer bounce-hit) 0.0) + (set! (-> self racer bob-period) 900.0) + (set! (-> self racer bob-mult-rot) 0.0) + (set! (-> self racer bob-mult-trans) 0.0) + (set! (-> self racer bob-meta-timer) 0.0) + (set! (-> self racer bob-meta-meta-timer) 0.0) + (set! (-> self racer bob-hit-ground-time) (the-as uint 0)) + (set! (-> self racer cushion-bob) 0.0) + (set! (-> self racer cushion-bob-old) 0.0) + (set! (-> self racer hill-value) 0.0) + (set! (-> self racer hill-ground-value) 0.0) + (set! (-> self racer hill-offset) 0.0) + (set! (-> self racer hill-boost) 0.0) + (set! (-> self racer cur-rotx) 0.0) + (set! (-> self racer targ-rotx) 0.0) + (set! (-> self racer hill-rotx) 0.0) + (set! (-> self racer mult-rotx) 0.0) + (set! (-> self racer speed-rotx) 0.25) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) (the-as uint 0)) + (set! (-> self racer boost-duration) (the-as uint (-> *RACER-bank* boost-duration))) + (set! (-> self racer heat) 0.0) + (set! (-> self racer slide-mode) 0) + (set! (-> self racer slide-amp) 0.0) + (set! (-> self racer slide-down-time 0) (the-as uint 0)) + (set! (-> self racer slide-down-time 1) (the-as uint 0)) + (set! (-> self racer slide-interp) 0.0) + (set! (-> self racer surface-y) (-> self control trans y)) + (let ((s5-0 (-> self entity))) + (set! (-> self entity) (-> self racer entity)) + (let ((s4-0 (get-process *8k-dead-pool* manipy #x4000))) + (set! (-> self manipy) + (the-as + (pointer manipy) + (when s4-0 + (let ((t9-9 (method-of-type manipy activate))) + (t9-9 (the-as manipy s4-0) self 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s4-0 manipy-init (-> self control trans) (-> self entity) *racer-sg* #f) + (-> s4-0 ppointer) + ) + ) + ) ) - (set! - (-> (the-as target (-> gp-0 0)) racer bottom-blade) - (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 10) - ) - (let - ((v0-2 (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 7)) - ) - (set! (-> (the-as target (-> gp-0 0)) racer tail) v0-2) - v0-2 - ) - ) + (set! (-> self entity) s5-0) ) - ) + (when (-> self manipy) + (send-event + (ppointer->process (-> self manipy)) + 'trans-hook + (lambda :behavior manipy + () + (let ((v1-0 (ppointer->process (-> self parent)))) + (set! (-> self root trans quad) (-> (the-as target v1-0) racer bike-trans quad)) + (let ((a0-4 (-> (the-as target v1-0) racer bike-quat quad))) + (set! (-> self root quat vec quad) a0-4) + ) + (set! (-> self root scale quad) (-> (the-as target v1-0) racer bike-scale quad)) + (set! (-> self draw light-index) (the-as uint 255)) + (let ((a0-9 (-> (the-as target v1-0) draw color-mult quad))) + (set! (-> self draw color-mult quad) a0-9) + ) + (let ((a0-11 (-> (the-as target v1-0) draw color-emissive quad))) + (set! (-> self draw color-emissive quad) a0-11) + ) + (let ((f0-0 (-> (the-as target v1-0) draw secondary-interp))) + (set! (-> self draw secondary-interp) f0-0) + f0-0 + ) + ) + ) + ) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'art-joint-anim "racer-get-on" 0.0) + (send-event + (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior manipy + () + (set! (-> self clone-copy-trans) #f) + (let ((v1-1 (-> *target-shadow-control* settings shadow-dir quad))) + (set! (-> *racer-shadow-control* settings shadow-dir quad) v1-1) + ) + (set! (-> self draw shadow-ctrl) *racer-shadow-control*) + (let ((gp-0 (-> self parent))) + (set! (-> (the-as target (-> gp-0 0)) racer front-blade) + (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 4) + ) + (set! (-> (the-as target (-> gp-0 0)) racer bottom-blade) + (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 10) + ) + (let ((v0-2 (new 'process 'joint-mod (joint-mod-handler-mode rotate) self 7))) + (set! (-> (the-as target (-> gp-0 0)) racer tail) v0-2) + v0-2 + ) + ) + ) + ) + ) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + (remove-exit) + (go target-racing-get-on arg0) + (none) ) - (set-twist! - (-> self racer front-blade) - (the-as float #f) - (- (-> self racer front-rot)) - (the-as float #f) - ) - (set-twist! - (-> self racer bottom-blade) - (the-as float #f) - (the-as float #f) - (- (-> self racer bottom-rot)) - ) - (remove-exit) - (go target-racing-get-on arg0) - (none) - ) :post (the-as (function none :behavior target) target-post) ) (defbehavior target-racing-smack-check target () - (if - (and - (< 20480.0 (-> self control unknown-float01)) - (and - (logtest? (-> self control status) 8) - (< (-> self control surface-angle) 0.5) - (let - ((gp-1 - (vector-! - (new 'stack-no-clear 'vector) - (-> self control unknown-vector70) - (-> self control trans) - ) - ) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (set! (-> s5-0 quad) (-> self control unknown-vector10 quad)) - (set! (-> gp-1 y) 0.0) - (set! (-> s5-0 y) 0.0) - (vector-xz-normalize! gp-1 1.0) - (vector-xz-normalize! s5-0 1.0) - (< 0.87 (vector-dot gp-1 s5-0)) + (if (and (< 20480.0 (-> self control unknown-float01)) + (and (logtest? (-> self control status) 8) + (< (-> self control surface-angle) 0.5) + (let ((gp-1 (vector-! (new 'stack-no-clear 'vector) (-> self control unknown-vector70) (-> self control trans))) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (set! (-> s5-0 quad) (-> self control unknown-vector10 quad)) + (set! (-> gp-1 y) 0.0) + (set! (-> s5-0 y) 0.0) + (vector-xz-normalize! gp-1 1.0) + (vector-xz-normalize! s5-0 1.0) + (< 0.87 (vector-dot gp-1 s5-0)) + ) + ) + ) + (go target-racing-smack (-> self control unknown-float01) #t) ) - ) - ) - (go target-racing-smack (-> self control unknown-float01) #t) - ) (none) ) @@ -502,418 +349,257 @@ (-> target-racing-start event) :enter (behavior () - (set! (-> self control unknown-surface00) *racer-mods*) - (none) - ) + (set! (-> self control unknown-surface00) *racer-mods*) + (none) + ) :exit (behavior () - (target-racing-center-anim) - ((-> target-racing-start exit)) - (none) - ) + (target-racing-center-anim) + ((-> target-racing-start exit)) + (none) + ) :trans (behavior () - (if - (and - (logtest? - (logior - (logior - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 0 - ) - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 1 - ) - ) - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 2 - ) - ) - (pad-buttons l1 r1) - ) - (or - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - 30 - ) - (< - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (-> self control trans) - (-> self control shadow-pos) - ) - ) - 4096.0 - ) - ) - ) - (go target-racing-jump 2048.0 5324.8 #t) - ) - (target-racing-smack-check) - (let* ((f30-0 (target-height-above-ground)) - (v1-28 - (time-to-ground - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons l1 r1) + ) + (or (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 30) + (< (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) + ) + 4096.0 + ) + ) ) - (-> self control dynam gravity-length) - f30-0 - ) - ) - ) - (if - (and - (zero? (logand (-> self control status) 1)) - (or - (>= - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - (the-as int (* (-> *TARGET-bank* ground-timeout) 2)) + (go target-racing-jump 2048.0 5324.8 #t) ) - (< 75 v1-28) - ) - (< 30 v1-28) - (< 4096.0 f30-0) + (target-racing-smack-check) + (let* ((f30-0 (target-height-above-ground)) + (v1-28 (time-to-ground + (vector-dot (-> self control dynam gravity-normal) (-> self control transv)) + (-> self control dynam gravity-length) + f30-0 + ) + ) + ) + (if (and (zero? (logand (-> self control status) 1)) + (or (>= (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) + (the-as int (* (-> *TARGET-bank* ground-timeout) 2)) + ) + (< 75 v1-28) + ) + (< 30 v1-28) + (< 4096.0 f30-0) + ) + (go target-racing-falling) + ) ) - (go target-racing-falling) - ) + (set! (-> self racer turn-anim-targ) (* 20.0 (-> self racer mod-x))) + (racer-buzz (+ 0.45 (* 1.7 (fabs (-> self racer slide-shift-x))))) + (none) ) - (set! (-> self racer turn-anim-targ) (* 20.0 (-> self racer mod-x))) - (racer-buzz (+ 0.45 (* 1.7 (fabs (-> self racer slide-shift-x))))) - (none) - ) :code (behavior () - (cond - ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 138) - ) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 param 0) - (the float (+ (-> a0-4 frame-group data 0 length) -1)) - ) - (set! (-> a0-4 param 1) 1.0) - (joint-control-channel-group! - a0-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - (while (not (ja-done? 0)) - (suspend) - (ja-eval) - ) - ) - ((let ((v1-16 (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - ) - ) - (or - (or - (= v1-16 (-> self draw art-group data 130)) - (= v1-16 (-> self draw art-group data 131)) - ) - (> (-> self racer bounce) 0) - ) - ) - (let ((s5-0 #f) - (gp-0 #f) - ) - (when - (and - (< (fabs (-> self racer bob-mult-trans)) 0.2) - (and - (>= - (- - (-> *display* base-frame-counter) - (the-as int (-> self racer racing-time)) - ) - 45 + (cond + ((= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 138) ) - (< 16384.0 (-> self control ground-impact-vel)) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1))) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group! a0-4 (the-as art-joint-anim #f) num-func-seek!) ) - ) - (when (>= (-> self control unknown-float01) 40960.0) - (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) 100.0) - (sp-launch-particles-var - *sp-particle-system-2d* - (-> *part-id-table* 2225) - (-> self control trans) - (the-as sparticle-launch-state #f) - (the-as sparticle-launch-control #f) - 1.0 + (while (not (ja-done? 0)) + (suspend) + (ja-eval) ) - ) - (target-land-effect) - (when - (and - (>= (-> self control ground-impact-vel) 61440.0) - (zero? (-> self racer bounce)) - ) - (set! (-> self racer bounce) 0) - (set! (-> self racer bounce-hit) (-> self control ground-impact-vel)) - ) - (when (< (-> self racer bounce-hit) 73728.0) - (set! (-> self racer bounce) 0) - 0 - ) - (set! (-> self racer bob-timer) 90.0) - (let - ((f0-14 - (lerp-scale - 2.0 - 3.0 - (-> self control unknown-float01) - 0.0 - (-> self racer transv-max) - ) - ) - ) - (set! (-> self racer bob-meta-meta-timer) f0-14) - (set! (-> self racer bob-meta-timer) f0-14) - ) - (set! - (-> self racer bob-mult-trans) - (lerp-scale 0.2 2.5 (-> self control ground-impact-vel) 20480.0 81920.0) - ) - (set! - (-> self racer bob-hit-ground-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (set! - (-> self racer bob-meta-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (cond - ((or - s5-0 - (and (>= (-> self racer bounce) 1) (< (-> self racer bounce) 2)) - ) - (+! (-> self racer bounce) 1) - (let* ((v1-73 (-> self racer bounce)) - (a1-6 (cond - ((= v1-73 1) - (lerp-scale - 4096.0 - 8192.0 - (-> self racer bounce-hit) - 61440.0 - 81920.0 - ) + ) + ((let ((v1-16 (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) ) - ((= v1-73 2) - 2048.0 - ) - ) - ) - ) - (go target-racing-bounce a1-6 a1-6 gp-0) - ) - ) - ((>= (-> self racer slide-mode) 0) - ) - (else - (target-racing-land-anim gp-0) - ) - ) - ) - ) - ) - ) - (when (!= (-> self racer slide-shift-x) 0.0) - (if (rand-vu-percent? 0.5) - (sound-play-by-name - (static-sound-name "zoomer-rev1") - (new-sound-id) - 819 - 0 - 0 - 1 - #t - ) - (sound-play-by-name - (static-sound-name "zoomer-rev2") - (new-sound-id) - 819 - 0 - 0 - 1 - #t - ) - ) - ) - (set! (-> self racer bounce) 0) - (while #t - (let ((gp-3 (-> *display* base-frame-counter))) - (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) ) - (-> self draw art-group data 123) - ) - ) - (ja-channel-push! 4 30) - (let ((s5-3 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - s5-3 - (the-as art-joint-anim (-> self draw art-group data 123)) - num-func-identity - ) - (set! (-> s5-3 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) - ) - (let ((a0-43 (-> self skel root-channel 1))) - (set! - (-> a0-43 frame-group) - (the-as art-joint-anim (-> self draw art-group data 124)) - ) - (set! (-> a0-43 param 0) 0.0) - (joint-control-channel-group-eval! - a0-43 - (the-as art-joint-anim (-> self draw art-group data 124)) - num-func-chan - ) - ) - (let ((a0-44 (-> self skel root-channel 2))) - (set! - (-> a0-44 frame-group) - (the-as art-joint-anim (-> self draw art-group data 125)) - ) - (set! (-> a0-44 param 0) 0.0) - (joint-control-channel-group-eval! - a0-44 - (the-as art-joint-anim (-> self draw art-group data 125)) - num-func-chan - ) - ) - (let ((a0-45 (-> self skel root-channel 3))) - (set! - (-> a0-45 frame-group) - (the-as art-joint-anim (-> self draw art-group data 126)) - ) - (set! (-> a0-45 param 0) 0.0) - (joint-control-channel-group-eval! - a0-45 - (the-as art-joint-anim (-> self draw art-group data 126)) - num-func-chan - ) - ) - ) - (while (< (- (-> *display* base-frame-counter) gp-3) 300) - (if - (or - (!= - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - stick0-speed - ) - 0.0 + ) + (or (or (= v1-16 (-> self draw art-group data 130)) (= v1-16 (-> self draw art-group data 131))) + (> (-> self racer bounce) 0) + ) ) - (or - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons l1 r1 x) - ) - (>= (fabs (-> self racer turn-anim-frame)) 1.0) - ) - ) - (set! gp-3 (-> *display* base-frame-counter)) - ) - (target-racing-turn-anim) - (suspend) - ) - ) - (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 133) + (let ((s5-0 #f) + (gp-0 #f) + ) + (when (and (< (fabs (-> self racer bob-mult-trans)) 0.2) + (and (>= (- (-> *display* base-frame-counter) (the-as int (-> self racer racing-time))) 45) + (< 16384.0 (-> self control ground-impact-vel)) + ) + ) + (when (>= (-> self control unknown-float01) 40960.0) + (set! (-> *part-id-table* 2225 init-specs 1 initial-valuef) 100.0) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 2225) + (-> self control trans) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + ) + (target-land-effect) + (when (and (>= (-> self control ground-impact-vel) 61440.0) (zero? (-> self racer bounce))) + (set! (-> self racer bounce) 0) + (set! (-> self racer bounce-hit) (-> self control ground-impact-vel)) + ) + (when (< (-> self racer bounce-hit) 73728.0) + (set! (-> self racer bounce) 0) + 0 + ) + (set! (-> self racer bob-timer) 90.0) + (let ((f0-14 (lerp-scale 2.0 3.0 (-> self control unknown-float01) 0.0 (-> self racer transv-max)))) + (set! (-> self racer bob-meta-meta-timer) f0-14) + (set! (-> self racer bob-meta-timer) f0-14) + ) + (set! (-> self racer bob-mult-trans) (lerp-scale 0.2 2.5 (-> self control ground-impact-vel) 20480.0 81920.0)) + (set! (-> self racer bob-hit-ground-time) (the-as uint (-> *display* base-frame-counter))) + (set! (-> self racer bob-meta-time) (the-as uint (-> *display* base-frame-counter))) + (cond + ((or s5-0 (and (>= (-> self racer bounce) 1) (< (-> self racer bounce) 2))) + (+! (-> self racer bounce) 1) + (let* ((v1-73 (-> self racer bounce)) + (a1-6 (cond + ((= v1-73 1) + (lerp-scale 4096.0 8192.0 (-> self racer bounce-hit) 61440.0 81920.0) + ) + ((= v1-73 2) + 2048.0 + ) + ) + ) + ) + (go target-racing-bounce a1-6 a1-6 gp-0) ) + ) + ((>= (-> self racer slide-mode) 0) + ) + (else + (target-racing-land-anim gp-0) + ) + ) ) - (ja-channel-push! 1 120) - (let ((gp-4 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-4 - (the-as art-joint-anim (-> self draw art-group data 133)) - num-func-identity - ) - (set! (-> gp-4 frame-num) 0.0) - ) - ) - (while - (not - (or - (!= - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - stick0-speed ) - 0.0 - ) - (or - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 + ) + ) + (when (!= (-> self racer slide-shift-x) 0.0) + (if (rand-vu-percent? 0.5) + (sound-play-by-name (static-sound-name "zoomer-rev1") (new-sound-id) 819 0 0 1 #t) + (sound-play-by-name (static-sound-name "zoomer-rev2") (new-sound-id) 819 0 0 1 #t) + ) + ) + (set! (-> self racer bounce) 0) + (while #t + (let ((gp-3 (-> *display* base-frame-counter))) + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 123) + ) + ) + (ja-channel-push! 4 30) + (let ((s5-3 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + s5-3 + (the-as art-joint-anim (-> self draw art-group data 123)) + num-func-identity + ) + (set! (-> s5-3 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) + ) + (let ((a0-43 (-> self skel root-channel 1))) + (set! (-> a0-43 frame-group) (the-as art-joint-anim (-> self draw art-group data 124))) + (set! (-> a0-43 param 0) 0.0) + (joint-control-channel-group-eval! + a0-43 + (the-as art-joint-anim (-> self draw art-group data 124)) + num-func-chan + ) + ) + (let ((a0-44 (-> self skel root-channel 2))) + (set! (-> a0-44 frame-group) (the-as art-joint-anim (-> self draw art-group data 125))) + (set! (-> a0-44 param 0) 0.0) + (joint-control-channel-group-eval! + a0-44 + (the-as art-joint-anim (-> self draw art-group data 125)) + num-func-chan + ) + ) + (let ((a0-45 (-> self skel root-channel 3))) + (set! (-> a0-45 frame-group) (the-as art-joint-anim (-> self draw art-group data 126))) + (set! (-> a0-45 param 0) 0.0) + (joint-control-channel-group-eval! + a0-45 + (the-as art-joint-anim (-> self draw art-group data 126)) + num-func-chan + ) + ) + ) + (while (< (- (-> *display* base-frame-counter) gp-3) 300) + (if (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (or (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1 x) + ) + (>= (fabs (-> self racer turn-anim-frame)) 1.0) + ) + ) + (set! gp-3 (-> *display* base-frame-counter)) + ) + (target-racing-turn-anim) + (suspend) + ) + ) + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 133) + ) + ) + (ja-channel-push! 1 120) + (let ((gp-4 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-4 + (the-as art-joint-anim (-> self draw art-group data 133)) + num-func-identity + ) + (set! (-> gp-4 frame-num) 0.0) + ) + ) + (while (not (or (!= (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) stick0-speed) 0.0) + (or (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1 x) + ) + (>= (fabs (-> self racer turn-anim-frame)) 1.0) + ) + ) + ) + (suspend) + (let ((a0-54 (-> self skel root-channel 0))) + (set! (-> a0-54 param 0) 1.0) + (joint-control-channel-group-eval! a0-54 (the-as art-joint-anim #f) num-func-loop!) ) - (pad-buttons l1 r1 x) - ) - (>= (fabs (-> self racer turn-anim-frame)) 1.0) ) - ) ) - (suspend) - (let ((a0-54 (-> self skel root-channel 0))) - (set! (-> a0-54 param 0) 1.0) - (joint-control-channel-group-eval! - a0-54 - (the-as art-joint-anim #f) - num-func-loop! - ) - ) - ) + (none) ) - (none) - ) :post (behavior () - (if (= (-> self next-state name) 'target-racing) - (set! - (-> self racer racing-time) - (the-as uint (-> *display* base-frame-counter)) - ) + (if (= (-> self next-state name) 'target-racing) + (set! (-> self racer racing-time) (the-as uint (-> *display* base-frame-counter))) + ) + (target-racing-post) + (none) ) - (target-racing-post) - (none) - ) ) (defstate target-racing-jump (target) @@ -921,280 +607,136 @@ (-> target-racing-start event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (set! (-> self racer shock-offsetv) 0.0) - (sound-play-by-name - (static-sound-name "zoomer-jump") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (when arg2 - (when (>= (-> self racer hill-ground-value) 0.11) - (set! - (-> self racer hill-boost) - (* 40960.0 (-> self racer hill-ground-value)) - ) - (vector-normalize! - (-> self control transv) - (+ (-> self control unknown-float01) (-> self racer hill-boost)) - ) - ) - ) - (if - (and - (logtest? (-> self control status) 1) - (< 16384.0 (-> self control transv y)) - ) - (set! (-> self racer hop?) #f) - (set! (-> self racer hop?) arg2) - ) - (set! (-> self racer hop-start-y) (-> self control trans y)) - (racer-calc-gravity) - (init-var-jump - arg0 - arg1 - (the-as vector #t) - (the-as vector #f) - (-> self control transv) - ) - (set! (-> self control status) (logand -8 (-> self control status))) - (set! (-> self control unknown-surface00) *racer-air-mods*) - (set! - (-> self control unknown-float123) - (fmax - 0.0 - (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01)))) - ) - ) - (if (< (-> self racer slide-mode) 0) - (set! - (-> self racer slide-down-time 0) - (the-as - uint - (if - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons l1 r1) + (set! (-> self racer shock-offsetv) 0.0) + (sound-play-by-name (static-sound-name "zoomer-jump") (new-sound-id) 1024 0 0 1 #t) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (when arg2 + (when (>= (-> self racer hill-ground-value) 0.11) + (set! (-> self racer hill-boost) (* 40960.0 (-> self racer hill-ground-value))) + (vector-normalize! (-> self control transv) (+ (-> self control unknown-float01) (-> self racer hill-boost))) ) - (-> *display* base-frame-counter) - 0 - ) ) - ) + (if (and (logtest? (-> self control status) 1) (< 16384.0 (-> self control transv y))) + (set! (-> self racer hop?) #f) + (set! (-> self racer hop?) arg2) + ) + (set! (-> self racer hop-start-y) (-> self control trans y)) + (racer-calc-gravity) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (set! (-> self control status) (logand -8 (-> self control status))) + (set! (-> self control unknown-surface00) *racer-air-mods*) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) + ) + (if (< (-> self racer slide-mode) 0) + (set! (-> self racer slide-down-time 0) + (the-as uint (if (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1) + ) + (-> *display* base-frame-counter) + 0 + ) + ) + ) + ) + (none) ) - (none) - ) :exit (behavior () - (set! - (-> self control root-prim prim-core action) - (logand -32769 (-> self control root-prim prim-core action)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-15)) + (set! (-> self racer hop?) #f) + ((-> target-racing-start exit)) + (none) ) - (set! (-> self racer hop?) #f) - ((-> target-racing-start exit)) - (none) - ) :trans (behavior () - (set! - (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* - 0.003921569 - (the - float - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - abutton - 6 - ) + (set! (-> self control unknown-float123) + (fmax + (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) + ) + ) + (cond + ((logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (pad-buttons l1 r1) + ) + (set! (-> self racer slide-down-time 0) (the-as uint (-> *display* base-frame-counter))) ) - ) - ) - ) - (cond - ((logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel + ((zero? + (logand (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons l1 r1)) + ) + (set! (-> self racer slide-down-time 0) (the-as uint 0)) 0 ) - (pad-buttons l1 r1) - ) - (set! - (-> self racer slide-down-time 0) - (the-as uint (-> *display* base-frame-counter)) - ) - ) - ((zero? - (logand - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons l1 r1) - ) - ) - (set! (-> self racer slide-down-time 0) (the-as uint 0)) - 0 - ) - ((and - (>= - (- - (-> *display* base-frame-counter) - (the-as int (-> self racer slide-down-time 0)) - ) - (the-as int (-> *RACER-bank* slide-hold-time)) - ) - (< (-> self racer slide-mode) 0) - (or - (< - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - leftx - ) - (the-as uint 64) - ) - (< - (the-as uint 192) - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - leftx - ) - ) - ) - ) - (set! - (-> self racer slide-mode) - (if - (< - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - leftx - ) - (the-as uint 64) - ) - 0 - 1 - ) - ) - (set! - (-> self racer slide-enter-time) - (the-as uint (-> *display* base-frame-counter)) - ) - (set! (-> self racer slide-amp) 1.0) - (set! (-> self racer slide-grip-mult) 0.0) - ) - ((>= (-> self racer slide-mode) 0) - (cond - ((< - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - leftx - ) - (the-as uint 64) - ) - (set! (-> self racer slide-mode) 0) - 0 - ) - ((< - (the-as uint 192) - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - leftx - ) - ) - (set! (-> self racer slide-mode) 1) - ) - ) - ) - ) - (if - (and - (logtest? (-> self control status) 1) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - ) - (go target-racing) - ) - (if - (or - (< (-> self control trans y) (-> self racer hop-start-y)) - (< - 10240.0 - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (-> self control trans) - (-> self control shadow-pos) - ) - ) - ) - ) - (set! (-> self racer hop?) #f) - ) - (target-racing-smack-check) - (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (logior! (-> self control root-prim prim-core action) #x8000) - ) - (mod-var-jump - #t - #t - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons l1 r1) - ) - (-> self control transv) - ) - (set! (-> self racer shock-offset) (* 0.8 (-> self racer shock-offset))) - (racer-buzz 0.4) - (none) - ) - :code - (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (let ((a0-1 (if (< 0.1 (-> self racer hill-value)) - 'jump + ((and (>= (- (-> *display* base-frame-counter) (the-as int (-> self racer slide-down-time 0))) + (the-as int (-> *RACER-bank* slide-hold-time)) ) + (< (-> self racer slide-mode) 0) + (or (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + (< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) + ) + ) + (set! (-> self racer slide-mode) + (if (< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + 0 + 1 + ) + ) + (set! (-> self racer slide-enter-time) (the-as uint (-> *display* base-frame-counter))) + (set! (-> self racer slide-amp) 1.0) + (set! (-> self racer slide-grip-mult) 0.0) + ) + ((>= (-> self racer slide-mode) 0) + (cond + ((< (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx) (the-as uint 64)) + (set! (-> self racer slide-mode) 0) + 0 + ) + ((< (the-as uint 192) (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) leftx)) + (set! (-> self racer slide-mode) 1) ) ) - (target-racing-jump-anim a0-1 60) + ) + ) + (if (and (logtest? (-> self control status) 1) (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30)) + (go target-racing) + ) + (if (or (< (-> self control trans y) (-> self racer hop-start-y)) + (< 10240.0 (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) + ) + ) + ) + (set! (-> self racer hop?) #f) + ) + (target-racing-smack-check) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (logior! (-> self control root-prim prim-core action) (collide-action ca-15)) + ) + (mod-var-jump + #t + #t + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1) + ) + (-> self control transv) + ) + (set! (-> self racer shock-offset) (* 0.8 (-> self racer shock-offset))) + (racer-buzz 0.4) + (none) + ) + :code + (behavior ((arg0 float) (arg1 float) (arg2 symbol)) + (let ((a0-1 (if (< 0.1 (-> self racer hill-value)) + 'jump + ) + ) + ) + (target-racing-jump-anim a0-1 60) + ) + (none) ) - (none) - ) :post (-> target-racing post) ) @@ -1204,202 +746,116 @@ (-> target-racing-start event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (logior! (-> self control root-prim prim-core action) #x8000) - (sound-play-by-name - (static-sound-name "zoomer-jump") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t + (logior! (-> self control root-prim prim-core action) (collide-action ca-15)) + (sound-play-by-name (static-sound-name "zoomer-jump") (new-sound-id) 1024 0 0 1 #t) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (racer-calc-gravity) + (init-var-jump arg0 arg1 (the-as vector #t) (the-as vector #f) (-> self control transv)) + (set! (-> self control status) (logand -8 (-> self control status))) + (set! (-> self control unknown-float123) + (fmax 0.0 (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01))))) + ) + (none) ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (racer-calc-gravity) - (init-var-jump - arg0 - arg1 - (the-as vector #t) - (the-as vector #f) - (-> self control transv) - ) - (set! (-> self control status) (logand -8 (-> self control status))) - (set! - (-> self control unknown-float123) - (fmax - 0.0 - (fmin 1.0 (* 0.00004359654 (+ -11468.8 (-> self control unknown-float01)))) - ) - ) - (none) - ) :exit (behavior () - (set! - (-> self control root-prim prim-core action) - (logand -32769 (-> self control root-prim prim-core action)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-15)) + ((-> target-racing-start exit)) + (none) ) - ((-> target-racing-start exit)) - (none) - ) :trans (behavior () - (set! - (-> self control unknown-float123) - (fmax - (-> self control unknown-float123) - (* - 0.003921569 - (the - float - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - abutton - 6 + (set! (-> self control unknown-float123) + (fmax + (-> self control unknown-float123) + (* 0.003921569 (the float (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) abutton 6))) + ) + ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons l1 r1) + ) + (or (< (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) 60) + (< (vector-dot + (-> self control dynam gravity-normal) + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control shadow-pos)) + ) + 8192.0 + ) + ) + ) + (go target-racing-jump 2048.0 5324.8 #t) ) - ) - ) - ) - ) - (if - (and - (logtest? - (logior - (logior - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 0 - ) - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 1 - ) + (if (and (logtest? (-> self control status) 1) (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30)) + (go target-racing) ) - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-rel - 2 - ) - ) - (pad-buttons l1 r1) + (mod-var-jump + #t + #t + (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) + (pad-buttons l1 r1) + ) + (-> self control transv) ) - (or - (< - (- (-> *display* base-frame-counter) (-> self control unknown-dword11)) - 60 - ) - (< - (vector-dot - (-> self control dynam gravity-normal) - (vector-! - (new 'stack-no-clear 'vector) - (-> self control trans) - (-> self control shadow-pos) - ) - ) - 8192.0 - ) - ) - ) - (go target-racing-jump 2048.0 5324.8 #t) + (target-racing-smack-check) + (racer-buzz 0.4) + (none) ) - (if - (and - (logtest? (-> self control status) 1) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - ) - (go target-racing) - ) - (mod-var-jump - #t - #t - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons l1 r1) - ) - (-> self control transv) - ) - (target-racing-smack-check) - (racer-buzz 0.4) - (none) - ) :code (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (target-racing-land-anim arg2) - (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (target-racing-land-anim arg2) + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 123) ) - (-> self draw art-group data 123) ) + (ja-channel-push! 4 30) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 123)) + num-func-identity ) - (ja-channel-push! 4 30) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 123)) - num-func-identity + (set! (-> gp-0 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) + ) + (let ((a0-9 (-> self skel root-channel 1))) + (set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 124))) + (set! (-> a0-9 param 0) 0.0) + (joint-control-channel-group-eval! + a0-9 + (the-as art-joint-anim (-> self draw art-group data 124)) + num-func-chan + ) + ) + (let ((a0-10 (-> self skel root-channel 2))) + (set! (-> a0-10 frame-group) (the-as art-joint-anim (-> self draw art-group data 125))) + (set! (-> a0-10 param 0) 0.0) + (joint-control-channel-group-eval! + a0-10 + (the-as art-joint-anim (-> self draw art-group data 125)) + num-func-chan + ) + ) + (let ((a0-11 (-> self skel root-channel 3))) + (set! (-> a0-11 frame-group) (the-as art-joint-anim (-> self draw art-group data 126))) + (set! (-> a0-11 param 0) 0.0) + (joint-control-channel-group-eval! + a0-11 + (the-as art-joint-anim (-> self draw art-group data 126)) + num-func-chan + ) + ) ) - (set! (-> gp-0 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) - ) - (let ((a0-9 (-> self skel root-channel 1))) - (set! - (-> a0-9 frame-group) - (the-as art-joint-anim (-> self draw art-group data 124)) + (while #t + (target-racing-turn-anim) + (suspend) ) - (set! (-> a0-9 param 0) 0.0) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim (-> self draw art-group data 124)) - num-func-chan - ) - ) - (let ((a0-10 (-> self skel root-channel 2))) - (set! - (-> a0-10 frame-group) - (the-as art-joint-anim (-> self draw art-group data 125)) - ) - (set! (-> a0-10 param 0) 0.0) - (joint-control-channel-group-eval! - a0-10 - (the-as art-joint-anim (-> self draw art-group data 125)) - num-func-chan - ) - ) - (let ((a0-11 (-> self skel root-channel 3))) - (set! - (-> a0-11 frame-group) - (the-as art-joint-anim (-> self draw art-group data 126)) - ) - (set! (-> a0-11 param 0) 0.0) - (joint-control-channel-group-eval! - a0-11 - (the-as art-joint-anim (-> self draw art-group data 126)) - num-func-chan - ) - ) + (none) ) - (while #t - (target-racing-turn-anim) - (suspend) - ) - (none) - ) :post (-> target-racing post) ) @@ -1409,123 +865,67 @@ (-> target-racing-start event) :enter (behavior ((arg0 float) (arg1 symbol)) - (sound-play-by-name - (static-sound-name "smack-surface") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 150) - (set! (-> self racer heavy) arg1) - (vector-! - (-> self control transv) - (-> self control unknown-vector70) - (-> self control trans) - ) - (let ((f0-0 (lerp-scale 0.0 -61440.0 arg0 0.0 163840.0))) - (if - (logtest? - (-> - *cpad-list* - cpads - (-> self control unknown-cpad-info00 number) - button0-abs - 0 - ) - (pad-buttons x) + (sound-play-by-name (static-sound-name "smack-surface") (new-sound-id) 1024 0 0 1 #t) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 150) + (set! (-> self racer heavy) arg1) + (vector-! (-> self control transv) (-> self control unknown-vector70) (-> self control trans)) + (let ((f0-0 (lerp-scale 0.0 -61440.0 arg0 0.0 163840.0))) + (if (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-abs 0) (pad-buttons x)) + (set! f0-0 (* 2.0 f0-0)) + ) + (vector-normalize! (-> self control transv) f0-0) ) - (set! f0-0 (* 2.0 f0-0)) - ) - (vector-normalize! (-> self control transv) f0-0) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) (the-as uint 0)) + 0 + (none) ) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) (the-as uint 0)) - 0 - (none) - ) :exit (behavior () - (set! (-> self racer heavy) #f) - ((-> target-racing-start exit)) - (none) - ) + (set! (-> self racer heavy) #f) + ((-> target-racing-start exit)) + (none) + ) :trans (behavior () - (set! (-> self racer turn-anim-targ) 0.0) - (none) - ) + (set! (-> self racer turn-anim-targ) 0.0) + (none) + ) :code (behavior ((arg0 float) (arg1 symbol)) - (sound-play-by-name - (static-sound-name "zoomer-crash-2") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (ja-channel-push! 2 15) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 frame-group) - (the-as art-joint-anim (-> self draw art-group data 136)) - ) - (set! - (-> a0-4 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 136)) - data - 0 - length + (sound-play-by-name (static-sound-name "zoomer-crash-2") (new-sound-id) 1024 0 0 1 #t) + (ja-channel-push! 2 15) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 frame-group) (the-as art-joint-anim (-> self draw art-group data 136))) + (set! (-> a0-4 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 136)) data 0 length) -1)) + ) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group! a0-4 (the-as art-joint-anim (-> self draw art-group data 136)) num-func-seek!) + ) + (let ((s5-1 (-> self skel root-channel 1))) + (set! (-> s5-1 frame-interp) (lerp-scale 1.0 0.25 arg0 0.0 122880.0)) + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> self draw art-group data 122)) + num-func-identity ) - -1 - ) + (set! (-> s5-1 frame-num) (ja-aframe 0.0 0)) ) - ) - (set! (-> a0-4 param 1) 1.0) - (joint-control-channel-group! - a0-4 - (the-as art-joint-anim (-> self draw art-group data 136)) - num-func-seek! - ) - ) - (let ((s5-1 (-> self skel root-channel 1))) - (set! (-> s5-1 frame-interp) (lerp-scale 1.0 0.25 arg0 0.0 122880.0)) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> self draw art-group data 122)) - num-func-identity - ) - (set! (-> s5-1 frame-num) (ja-aframe 0.0 0)) - ) - (until (ja-done? 0) - (suspend) - (let ((s5-2 (-> self skel root-channel 0))) - (set! - (-> s5-2 param 0) - (the float (+ (-> s5-2 frame-group data 0 length) -1)) + (until (ja-done? 0) + (suspend) + (let ((s5-2 (-> self skel root-channel 0))) + (set! (-> s5-2 param 0) (the float (+ (-> s5-2 frame-group data 0 length) -1))) + (set! (-> s5-2 param 1) (lerp-scale 2.0 1.0 arg0 0.0 163840.0)) + (joint-control-channel-group-eval! s5-2 (the-as art-joint-anim #f) num-func-seek!) + ) ) - (set! (-> s5-2 param 1) (lerp-scale 2.0 1.0 arg0 0.0 163840.0)) - (joint-control-channel-group-eval! - s5-2 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) + (go target-racing) + (none) ) - (go target-racing) - (none) - ) :post (-> target-racing post) ) @@ -1535,36 +935,33 @@ (-> target-racing-start event) :enter (behavior () - (set! (-> self control unknown-surface00) *racer-air-mods*) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (none) - ) + (set! (-> self control unknown-surface00) *racer-air-mods*) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :exit (behavior () - (set! - (-> self control root-prim prim-core action) - (logand -32769 (-> self control root-prim prim-core action)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-15)) + ((-> target-racing-start exit)) + (none) ) - ((-> target-racing-start exit)) - (none) - ) :trans (behavior () - (if (logtest? (-> self control status) 1) - (go target-racing) + (if (logtest? (-> self control status) 1) + (go target-racing) + ) + (target-racing-smack-check) + (racer-buzz 0.3) + (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (logior! (-> self control root-prim prim-core action) (collide-action ca-15)) + ) + (none) ) - (target-racing-smack-check) - (racer-buzz 0.3) - (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (logior! (-> self control root-prim prim-core action) #x8000) - ) - (none) - ) :code (behavior () - (target-racing-jump-anim #f 30) - (none) - ) + (target-racing-jump-anim #f 30) + (none) + ) :post (-> target-racing post) ) @@ -1574,158 +971,110 @@ target-generic-event-handler :enter (behavior ((arg0 handle) (arg1 attack-info)) - (let ((v1-0 (-> self attack-info))) - (set! (-> v1-0 attacker) arg0) - (set! (-> v1-0 mode) 'generic) - (set! (-> v1-0 shove-back) 6144.0) - (set! (-> v1-0 shove-up) 4915.2) - (set! (-> v1-0 angle) #f) - ) - (set! (-> self attack-info trans quad) (the-as uint128 0)) - (dummy-9 (-> self attack-info) arg1) - (case (-> self attack-info mode) - (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) - (pickup-collectable! - (-> self fact-info-target) - (pickup-type eco-green) - -1000.0 - (the-as handle #f) + (let ((v1-0 (-> self attack-info))) + (set! (-> v1-0 attacker) arg0) + (set! (-> v1-0 mode) 'generic) + (set! (-> v1-0 shove-back) 6144.0) + (set! (-> v1-0 shove-up) 4915.2) + (set! (-> v1-0 angle) #f) + ) + (set! (-> self attack-info trans quad) (the-as uint128 0)) + (dummy-9 (-> self attack-info) arg1) + (case (-> self attack-info mode) + (('endlessfall 'death 'explode 'water-vol 'heat 'melt 'instant-death) + (pickup-collectable! (-> self fact-info-target) (pickup-type eco-green) -1000.0 (the-as handle #f)) ) + (else + (pickup-collectable! + (-> self fact-info-target) + (pickup-type eco-green) + (- (-> *FACT-bank* health-single-inc)) + (the-as handle #f) + ) + ) ) - (else - (pickup-collectable! - (-> self fact-info-target) - (pickup-type eco-green) - (- (-> *FACT-bank* health-single-inc)) - (the-as handle #f) - ) - ) + (none) ) - (none) - ) :exit (behavior () - (if (!= (-> self next-state name) 'target-racing-death) - (set! (-> self state-flags) (logand -32777 (-> self state-flags))) + (if (!= (-> self next-state name) 'target-racing-death) + (set! (-> self state-flags) (logand -32777 (-> self state-flags))) + ) + ((-> target-racing-start exit)) + (none) ) - ((-> target-racing-start exit)) - (none) - ) :code (behavior ((arg0 handle) (arg1 attack-info)) - (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) - (when (!= (-> self attack-info mode) 'endlessfall) - (dummy-10 (-> self skel effect) 'group-target-hit -1.0 -1) - (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 90) - (sound-play-by-name (static-sound-name "oof") (new-sound-id) 1024 0 0 1 #t) - ) - (set! (-> self game hit-time) (-> *display* base-frame-counter)) - (logior! (-> self state-flags) 8) - (set! (-> self racer boost-curve) 0.0) - (set! (-> self racer boost-level) 0.0) - (set! (-> self racer boost-target) 0.0) - (set! (-> self racer boost-output) 0.0) - (set! (-> self racer boost-time) (the-as uint 0)) - (if - (and - (= (-> self game mode) 'play) - (>= 0.0 (-> self fact-info-target health)) - ) - (go target-racing-death (-> self attack-info mode)) - ) - (case (-> self attack-info mode) - (('endlessfall) + (target-timed-invulnerable (-> *TARGET-bank* hit-invulnerable-timeout) self) + (when (!= (-> self attack-info mode) 'endlessfall) + (dummy-10 (-> self skel effect) 'group-target-hit -1.0 -1) + (cpad-set-buzz! (-> *cpad-list* cpads 0) 1 255 90) + (sound-play-by-name (static-sound-name "oof") (new-sound-id) 1024 0 0 1 #t) ) - (('darkeco) - (let ((s5-1 (new 'stack-no-clear 'vector))) - (set! (-> s5-1 quad) (-> self control transv quad)) - (let - ((a2-3 - (vector-xz-normalize! - (vector-! - (new 'stack-no-clear 'vector) - (-> self control trans) - (-> self attack-info intersection) + (set! (-> self game hit-time) (-> *display* base-frame-counter)) + (logior! (-> self state-flags) 8) + (set! (-> self racer boost-curve) 0.0) + (set! (-> self racer boost-level) 0.0) + (set! (-> self racer boost-target) 0.0) + (set! (-> self racer boost-output) 0.0) + (set! (-> self racer boost-time) (the-as uint 0)) + (if (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-info-target health))) + (go target-racing-death (-> self attack-info mode)) + ) + (case (-> self attack-info mode) + (('endlessfall) + ) + (('darkeco) + (let ((s5-1 (new 'stack-no-clear 'vector))) + (set! (-> s5-1 quad) (-> self control transv quad)) + (let ((a2-3 (vector-xz-normalize! + (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self attack-info intersection)) + 1.0 + ) + ) + ) + (set! (-> a2-3 y) 0.0) + (let ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) s5-1 a2-3)) + (f30-0 (vector-xz-length s5-1)) + ) + (set! (-> gp-1 y) 0.0) + (vector-normalize! gp-1 1.0) + (vector-normalize-copy! (-> self control transv) gp-1 (* 2.0 f30-0)) + (let ((f28-0 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) + (if (< 16384.0 (fabs f28-0)) + (set! f28-0 (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1)))) + ) + (set! (-> self racer rotv y) (* f28-0 (lerp-scale 4.0 7.0 f30-0 4096.0 (-> self racer transv-max)))) + ) + ) ) - 1.0 - ) ) - ) - (set! (-> a2-3 y) 0.0) - (let - ((gp-1 (vector-reflect-flat! (new 'stack-no-clear 'vector) s5-1 a2-3)) - (f30-0 (vector-xz-length s5-1)) - ) - (set! (-> gp-1 y) 0.0) - (vector-normalize! gp-1 1.0) - (vector-normalize-copy! (-> self control transv) gp-1 (* 2.0 f30-0)) - (let ((f28-0 (deg-diff (-> self racer rot y) (vector-y-angle gp-1)))) - (if (< 16384.0 (fabs f28-0)) - (set! - f28-0 - (deg-diff (-> self racer rot y) (+ 32768.0 (vector-y-angle gp-1))) - ) - ) - (set! - (-> self racer rotv y) - (* f28-0 (lerp-scale 4.0 7.0 f30-0 4096.0 (-> self racer transv-max))) - ) - ) - ) ) + (else + (set! (-> self post-hook) target-racing-post) + (ja-channel-push! 1 15) + (let ((a0-24 (-> self skel root-channel 0))) + (set! (-> a0-24 frame-group) (the-as art-joint-anim (-> self draw art-group data 136))) + (set! (-> a0-24 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 136)) data 0 length) -1)) + ) + (set! (-> a0-24 param 1) 1.0) + (set! (-> a0-24 frame-num) 0.0) + (joint-control-channel-group! a0-24 (the-as art-joint-anim (-> self draw art-group data 136)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-25 (-> self skel root-channel 0))) + (set! (-> a0-25 param 0) (the float (+ (-> a0-25 frame-group data 0 length) -1))) + (set! (-> a0-25 param 1) 1.0) + (joint-control-channel-group-eval! a0-25 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) ) - ) - (else - (set! (-> self post-hook) target-racing-post) - (ja-channel-push! 1 15) - (let ((a0-24 (-> self skel root-channel 0))) - (set! - (-> a0-24 frame-group) - (the-as art-joint-anim (-> self draw art-group data 136)) - ) - (set! - (-> a0-24 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 136)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-24 param 1) 1.0) - (set! (-> a0-24 frame-num) 0.0) - (joint-control-channel-group! - a0-24 - (the-as art-joint-anim (-> self draw art-group data 136)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-25 (-> self skel root-channel 0))) - (set! - (-> a0-25 param 0) - (the float (+ (-> a0-25 frame-group data 0 length) -1)) - ) - (set! (-> a0-25 param 1) 1.0) - (joint-control-channel-group-eval! - a0-25 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) + (go target-racing) + (none) ) - (go target-racing) - (none) - ) :post target-no-stick-post ) @@ -1735,477 +1084,242 @@ (-> target-death event) :exit (behavior () - (set! (-> self state-flags) (logand -32769 (-> self state-flags))) - (send-event (ppointer->process (-> self manipy)) 'draw #t) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (target-timed-invulnerable-off self) - (set! - (-> self control pat-ignore-mask) - (new 'static 'pat-surface :skip #x1 :noentity #x1) + (set! (-> self state-flags) (logand -32769 (-> self state-flags))) + (send-event (ppointer->process (-> self manipy)) 'draw #t) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (target-timed-invulnerable-off self) + (set! (-> self control pat-ignore-mask) (new 'static 'pat-surface :skip #x1 :noentity #x1)) + (restore-collide-with-as (-> self control)) + ((-> target-racing-start exit)) + (target-exit) + (set! (-> self racer stick-off) #f) + (none) ) - (restore-collide-with-as (-> self control)) - ((-> target-racing-start exit)) - (target-exit) - (set! (-> self racer stick-off) #f) - (none) - ) :code (behavior ((arg0 symbol)) - (local-vars (v1-154 symbol)) - (set! (-> self racer stick-off) #t) - (set! (-> self neck flex-blend) 0.0) - (target-timed-invulnerable-off self) - (logior! (-> self state-flags) #x8000) - (case (-> self attack-info mode) - (('explode 'darkeco 'heat 'death 'deadly 'balloonlurker) - ((-> target-racing-start exit)) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) - (send-event (ppointer->process (-> self manipy)) 'draw #f) - (sound-play-by-name - (static-sound-name "zoomer-explode") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-1 - (let ((t9-7 (method-of-type part-tracker activate))) - (t9-7 - (the-as part-tracker gp-1) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - gp-1 - part-tracker-init - (-> *part-group-id-table* 116) - -1 - #f - #f - #f - (-> self control trans) - ) - (-> gp-1 ppointer) - ) - ) - (send-event - (ppointer->process (-> self manipy)) - 'eval - (lambda :behavior racer () (let ((s5-0 (-> self parent-override)) - (gp-0 - (new 'stack 'joint-exploder-tuning 1) - ) - ) - (let* - ((f0-0 - (vector-length (-> s5-0 0 control transv)) - ) - (f30-0 (fmin 1.0 (* 0.000008138021 f0-0))) - ) - (set! (-> gp-0 duration) (the-as uint 1500)) - (set! - (-> gp-0 fountain-rand-transv-hi x) - (fmax 24576.0 f0-0) - ) - (set! - (-> gp-0 fountain-rand-transv-hi y) - (+ 81920.0 f0-0) - ) - (set! - (-> gp-0 fountain-rand-transv-hi z) - 20480.0 - ) - (set! - (-> gp-0 fountain-rand-transv-hi w) - 36864.0 - ) - (vector-negate! - (-> gp-0 fountain-rand-transv-lo) - (-> s5-0 0 control transv) - ) - (vector-normalize! - (-> gp-0 fountain-rand-transv-lo) - (* 12288.0 f30-0) - ) - ) - (vector+! - (-> gp-0 fountain-rand-transv-lo) - (-> gp-0 fountain-rand-transv-lo) - (-> s5-0 0 control trans) - ) - (let - ((s5-1 - (get-process - *default-dead-pool* - joint-exploder - #x4000 - ) - ) - ) - (when s5-1 - (let - ((t9-5 - (method-of-type joint-exploder activate) - ) - ) - (t9-5 - (the-as joint-exploder s5-1) - self - 'joint-exploder - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-1 - joint-exploder-init-by-other - *racer-explode-sg* - 24 - gp-0 - (new 'static 'joint-exploder-static-params - :joints - (new - 'static - 'boxed-array - :type joint-exploder-static-joint-params :length 16 :allocated-length 16 - (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 - ) - (new 'static 'joint-exploder-static-joint-params - :joint-index 13 - :parent-joint-index -1 - ) - (new 'static 'joint-exploder-static-joint-params - :joint-index 14 - :parent-joint-index -1 - ) - (new 'static 'joint-exploder-static-joint-params - :joint-index 15 - :parent-joint-index -1 - ) - (new 'static 'joint-exploder-static-joint-params - :joint-index 16 - :parent-joint-index -1 - ) - (new 'static 'joint-exploder-static-joint-params - :joint-index 17 - :parent-joint-index -1 - ) - (new 'static 'joint-exploder-static-joint-params - :joint-index 18 - :parent-joint-index -1 - ) - ) - ) - ) - (-> s5-1 ppointer) - ) - ) - ) - ) - ) - (ja-channel-push! 1 30) - (fmax -182044.44 (fmin 182044.44 (* -40.0 (-> self racer rot z)))) - (case (-> self attack-info mode) - (('balloonlurker) - (dummy-13 - (-> self water) - 2.0 - (-> self control trans) - 1 - (-> self control transv) - ) - (let ((gp-2 (-> self skel root-channel 0))) - (set! - (-> gp-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 139)) - ) - (set! (-> gp-2 param 0) (ja-aframe 240.0 0)) - (set! (-> gp-2 param 1) 1.0) - (set! (-> gp-2 frame-num) 0.0) - (joint-control-channel-group! - gp-2 - (the-as art-joint-anim (-> self draw art-group data 139)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (set! (-> self racer stick-lock) #t) - (set! - (-> self control unknown-vector11 y) - (seek - (-> self control unknown-vector11 y) - 6144.0 - (* 12288.0 (-> *display* seconds-per-frame)) - ) - ) - (send-event *camera* 'joystick 0.0 1.0) - (suspend) - (let ((gp-3 (-> self skel root-channel 0))) - (set! (-> gp-3 param 0) (ja-aframe 240.0 0)) - (set! (-> gp-3 param 1) 1.0) - (joint-control-channel-group-eval! - gp-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (else - (let ((a0-30 (-> self skel root-channel 0))) - (set! - (-> a0-30 frame-group) - (the-as art-joint-anim (-> self draw art-group data 139)) - ) - (set! - (-> a0-30 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 139)) - data - 0 - length + (local-vars (v1-154 symbol)) + (set! (-> self racer stick-off) #t) + (set! (-> self neck flex-blend) 0.0) + (target-timed-invulnerable-off self) + (logior! (-> self state-flags) #x8000) + (case (-> self attack-info mode) + (('explode 'darkeco 'heat 'death 'deadly 'balloonlurker) + ((-> target-racing-start exit)) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'loop) + (send-event (ppointer->process (-> self manipy)) 'draw #f) + (sound-play-by-name (static-sound-name "zoomer-explode") (new-sound-id) 1024 0 0 1 #t) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-7 (method-of-type part-tracker activate))) + (t9-7 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000)) ) - -1 - ) + (run-now-in-process gp-1 part-tracker-init (-> *part-group-id-table* 116) -1 #f #f #f (-> self control trans)) + (-> gp-1 ppointer) ) - ) - (set! (-> a0-30 param 1) 1.0) - (set! (-> a0-30 frame-num) 0.0) - (joint-control-channel-group! - a0-30 - (the-as art-joint-anim (-> self draw art-group data 139)) - num-func-seek! - ) ) - (until (ja-done? 0) - (set! (-> self racer stick-lock) #t) - (send-event *camera* 'joystick 0.0 1.0) - (set! - (-> self control unknown-vector11 y) - (seek - (-> self control unknown-vector11 y) - 6144.0 - (* 12288.0 (-> *display* seconds-per-frame)) - ) - ) - (if (>= (ja-aframe-num 0) 245.0) - (set-forward-vel (* 0.5 (-> self control unknown-float01))) - ) - (suspend) - (let ((a0-36 (-> self skel root-channel 0))) - (set! - (-> a0-36 param 0) - (the float (+ (-> a0-36 frame-group data 0 length) -1)) - ) - (set! (-> a0-36 param 1) 1.0) - (joint-control-channel-group-eval! - a0-36 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - ) - ) - (('melt) - (sound-play-by-name - (static-sound-name "zoomer-melt") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((gp-5 (get-process *default-dead-pool* part-tracker #x4000))) - (when gp-5 - (let ((t9-29 (method-of-type part-tracker activate))) - (t9-29 - (the-as part-tracker gp-5) - *entity-pool* - 'part-tracker - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - gp-5 - part-tracker-init - (-> *part-group-id-table* 32) - -1 - #f - #f - #f - (-> self control trans) - ) - (-> gp-5 ppointer) - ) - ) - (clear-collide-with-as (-> self control)) - (set! (-> self post-hook) target-no-ja-move-post) - (ja-channel-set! 0) - (ja-post) - (let ((gp-6 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-6) 600) - (suspend) - ) - ) - ) - (('endlessfall) - (sound-play-by-name - (static-sound-name "death-fall") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (camera-change-to (the-as string cam-endlessfall) 30 #f) - (set! (-> self control pat-ignore-mask unknown-bit) 1) - (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) - (let ((gp-8 (new-stack-vector0))) - (let - ((f0-28 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) - ) - ) - ) - 0.0 - (vector-! - gp-8 - (-> self control transv) - (vector-float*! gp-8 (-> self control dynam gravity-normal) f0-28) - ) - ) - (let* ((f0-29 (vector-length gp-8)) - (f1-9 f0-29) - (f2-2 f30-0) - ) - (vector+! - (-> self control transv) - (vector-float*! - (-> self control transv) - (-> self control dynam gravity-normal) - f2-2 - ) - (vector-float*! gp-8 gp-8 (/ f0-29 f1-9)) - ) - ) - ) - (let ((gp-9 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) gp-9) 225) - (vector-seek! - (-> self draw color-mult) - *zero-vector* - (* 1.5 (-> *display* seconds-per-frame)) - ) - (set-forward-vel (* 0.96 (-> self control unknown-float01))) - (let ((s5-3 (new-stack-vector0)) - (f28-0 - (vector-dot - (-> self control dynam gravity-normal) - (-> self control transv) - ) + (send-event + (ppointer->process (-> self manipy)) + 'eval + (lambda :behavior racer + () + (let ((s5-0 (-> self parent-override)) + (gp-0 (new 'stack 'joint-exploder-tuning 1)) + ) + (let* ((f0-0 (vector-length (-> s5-0 0 control transv))) + (f30-0 (fmin 1.0 (* 0.000008138021 f0-0))) + ) + (set! (-> gp-0 duration) (the-as uint 1500)) + (set! (-> gp-0 fountain-rand-transv-hi x) (fmax 24576.0 f0-0)) + (set! (-> gp-0 fountain-rand-transv-hi y) (+ 81920.0 f0-0)) + (set! (-> gp-0 fountain-rand-transv-hi z) 20480.0) + (set! (-> gp-0 fountain-rand-transv-hi w) 36864.0) + (vector-negate! (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control transv)) + (vector-normalize! (-> gp-0 fountain-rand-transv-lo) (* 12288.0 f30-0)) ) - ) - 0.0 - (vector-! - s5-3 - (-> self control transv) - (vector-float*! s5-3 (-> self control dynam gravity-normal) f28-0) - ) - (let* ((f0-38 (vector-length s5-3)) - (f1-12 f0-38) - ) - (if (< f30-0 f28-0) - (set! f28-0 f30-0) + (vector+! (-> gp-0 fountain-rand-transv-lo) (-> gp-0 fountain-rand-transv-lo) (-> s5-0 0 control trans)) + (let ((s5-1 (get-process *default-dead-pool* joint-exploder #x4000))) + (when s5-1 + (let ((t9-5 (method-of-type joint-exploder activate))) + (t9-5 (the-as joint-exploder s5-1) self 'joint-exploder (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-1 + joint-exploder-init-by-other + *racer-explode-sg* + 24 + gp-0 + (new 'static 'joint-exploder-static-params + :joints + (new + 'static + 'boxed-array + :type joint-exploder-static-joint-params :length 16 :allocated-length 16 + (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) + (new 'static 'joint-exploder-static-joint-params :joint-index 13 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 14 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 15 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 16 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 17 :parent-joint-index -1) + (new 'static 'joint-exploder-static-joint-params :joint-index 18 :parent-joint-index -1) + ) + ) + ) + (-> s5-1 ppointer) + ) + ) + ) ) - (vector+! - (-> self control transv) - (vector-float*! - (-> self control transv) - (-> self control dynam gravity-normal) - f28-0 - ) - (vector-float*! s5-3 s5-3 (/ f0-38 f1-12)) - ) - ) ) - (suspend) - ) + (ja-channel-push! 1 30) + (fmax -182044.44 (fmin 182044.44 (* -40.0 (-> self racer rot z)))) + (case (-> self attack-info mode) + (('balloonlurker) + (dummy-13 (-> self water) 2.0 (-> self control trans) 1 (-> self control transv)) + (let ((gp-2 (-> self skel root-channel 0))) + (set! (-> gp-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 139))) + (set! (-> gp-2 param 0) (ja-aframe 240.0 0)) + (set! (-> gp-2 param 1) 1.0) + (set! (-> gp-2 frame-num) 0.0) + (joint-control-channel-group! gp-2 (the-as art-joint-anim (-> self draw art-group data 139)) num-func-seek!) + ) + (until (ja-done? 0) + (set! (-> self racer stick-lock) #t) + (set! (-> self control unknown-vector11 y) + (seek (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (-> *display* seconds-per-frame))) + ) + (send-event *camera* 'joystick 0.0 1.0) + (suspend) + (let ((gp-3 (-> self skel root-channel 0))) + (set! (-> gp-3 param 0) (ja-aframe 240.0 0)) + (set! (-> gp-3 param 1) 1.0) + (joint-control-channel-group-eval! gp-3 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (else + (let ((a0-30 (-> self skel root-channel 0))) + (set! (-> a0-30 frame-group) (the-as art-joint-anim (-> self draw art-group data 139))) + (set! (-> a0-30 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 139)) data 0 length) -1)) + ) + (set! (-> a0-30 param 1) 1.0) + (set! (-> a0-30 frame-num) 0.0) + (joint-control-channel-group! a0-30 (the-as art-joint-anim (-> self draw art-group data 139)) num-func-seek!) + ) + (until (ja-done? 0) + (set! (-> self racer stick-lock) #t) + (send-event *camera* 'joystick 0.0 1.0) + (set! (-> self control unknown-vector11 y) + (seek (-> self control unknown-vector11 y) 6144.0 (* 12288.0 (-> *display* seconds-per-frame))) + ) + (if (>= (ja-aframe-num 0) 245.0) + (set-forward-vel (* 0.5 (-> self control unknown-float01))) + ) + (suspend) + (let ((a0-36 (-> self skel root-channel 0))) + (set! (-> a0-36 param 0) (the float (+ (-> a0-36 frame-group data 0 length) -1))) + (set! (-> a0-36 param 1) 1.0) + (joint-control-channel-group-eval! a0-36 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + ) + ) + (('melt) + (sound-play-by-name (static-sound-name "zoomer-melt") (new-sound-id) 1024 0 0 1 #t) + (let ((gp-5 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-5 + (let ((t9-29 (method-of-type part-tracker activate))) + (t9-29 (the-as part-tracker gp-5) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process gp-5 part-tracker-init (-> *part-group-id-table* 32) -1 #f #f #f (-> self control trans)) + (-> gp-5 ppointer) + ) + ) + (clear-collide-with-as (-> self control)) + (set! (-> self post-hook) target-no-ja-move-post) + (ja-channel-set! 0) + (ja-post) + (let ((gp-6 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-6) 600) + (suspend) + ) + ) + ) + (('endlessfall) + (sound-play-by-name (static-sound-name "death-fall") (new-sound-id) 1024 0 0 1 #t) + (camera-change-to (the-as string cam-endlessfall) 30 #f) + (set! (-> self control pat-ignore-mask unknown-bit) 1) + (let ((f30-0 (fmin -4096.0 (- (-> self control ground-impact-vel))))) + (let ((gp-8 (new-stack-vector0))) + (let ((f0-28 (vector-dot (-> self control dynam gravity-normal) (-> self control transv)))) + 0.0 + (vector-! gp-8 (-> self control transv) (vector-float*! gp-8 (-> self control dynam gravity-normal) f0-28)) + ) + (let* ((f0-29 (vector-length gp-8)) + (f1-9 f0-29) + (f2-2 f30-0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f2-2) + (vector-float*! gp-8 gp-8 (/ f0-29 f1-9)) + ) + ) + ) + (let ((gp-9 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) gp-9) 225) + (vector-seek! (-> self draw color-mult) *zero-vector* (* 1.5 (-> *display* seconds-per-frame))) + (set-forward-vel (* 0.96 (-> self control unknown-float01))) + (let ((s5-3 (new-stack-vector0)) + (f28-0 (vector-dot (-> self control dynam gravity-normal) (-> self control transv))) + ) + 0.0 + (vector-! s5-3 (-> self control transv) (vector-float*! s5-3 (-> self control dynam gravity-normal) f28-0)) + (let* ((f0-38 (vector-length s5-3)) + (f1-12 f0-38) + ) + (if (< f30-0 f28-0) + (set! f28-0 f30-0) + ) + (vector+! + (-> self control transv) + (vector-float*! (-> self control transv) (-> self control dynam gravity-normal) f28-0) + (vector-float*! s5-3 s5-3 (/ f0-38 f1-12)) + ) + ) + ) + (suspend) + ) + ) + ) + (camera-change-to (the-as string 'base) 0 #f) ) ) - (camera-change-to (the-as string 'base) 0 #f) - ) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (set! (-> self post-hook) target-no-stick-post) - (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (until v1-154 - (suspend) - (set! - v1-154 - (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (zero? - (logand (-> *kernel-context* prevent-from-run) (process-mask movie)) - ) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (set! (-> self post-hook) target-no-stick-post) + (initialize! (-> self game) 'dead (the-as game-save #f) (the-as string #f)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (until v1-154 + (suspend) + (set! v1-154 (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (zero? (logand (-> *kernel-context* prevent-from-run) (process-mask movie))) + ) + ) ) - ) + (go target-stance) + (none) ) - (go target-stance) - (none) - ) :post target-racing-post ) @@ -2217,333 +1331,177 @@ (-> target-racing-start exit) :code (behavior ((arg0 handle)) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! - (-> self alt-cam-pos quad) - (-> (&-> (-> self control) unknown-qword00) 0) - ) - (logior! (-> self state-flags) 1024) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (let ((gp-0 (new 'stack-no-clear 'vector))) - (set! (-> gp-0 quad) (-> self control trans quad)) - (let ((s5-0 (new 'stack-no-clear 'vector))) - (set! (-> s5-0 quad) (-> self control trans quad)) - (quaternion-copy! - (-> self control unknown-quaternion02) - (-> self control quat) - ) - (quaternion-copy! - (-> self control unknown-quaternion03) - (-> self control unknown-quaternion00) - ) - (set! - (-> self control unknown-uint20) - (the-as uint (-> self control unknown-vector11 y)) - ) - (let* ((s3-0 (handle->process arg0)) - (s4-1 - (if - (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) - (the-as racer s3-0) - ) - ) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self alt-cam-pos quad) (-> (&-> (-> self control) unknown-qword00) 0)) + (logior! (-> self state-flags) 1024) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (let ((gp-0 (new 'stack-no-clear 'vector))) + (set! (-> gp-0 quad) (-> self control trans quad)) + (let ((s5-0 (new 'stack-no-clear 'vector))) + (set! (-> s5-0 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s3-0 (handle->process arg0)) + (s4-1 (if (and (nonzero? s3-0) (type-type? (-> s3-0 type) process-drawable)) + (the-as racer s3-0) + ) + ) + ) + (when s4-1 + (set! (-> s5-0 quad) (-> s4-1 root-override trans quad)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> s4-1 root-override quat)) + (send-event s4-1 'trans (-> self racer bike-trans)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s4-1 root-override quat)) + (set! (-> self racer bike-scale quad) (-> s4-1 root-override scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))) ) - (when s4-1 - (set! (-> s5-0 quad) (-> s4-1 root-override trans quad)) - (quaternion-copy! - (-> self control unknown-quaternion03) - (-> s4-1 root-override quat) - ) - (send-event s4-1 'trans (-> self racer bike-trans)) - (quaternion-copy! - (the-as quaternion (-> self racer bike-quat)) - (-> s4-1 root-override quat) - ) - (set! (-> self racer bike-scale quad) (-> s4-1 root-override scale quad)) - (set! - (-> self control unknown-int21) - (the-as int (-> self racer bike-trans y)) - ) - ) - ) - (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) - (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)) - ) - ) - (let ((s5-1 #f) - (gp-1 #f) - ) - (ja-channel-push! 1 15) - (let ((s4-2 (-> self skel root-channel 0))) - (set! - (-> s4-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 138)) - ) - (set! (-> s4-2 param 0) (ja-aframe 77.0 0)) - (set! (-> s4-2 param 1) 1.0) - (set! (-> s4-2 frame-num) 0.0) - (joint-control-channel-group! - s4-2 - (the-as art-joint-anim (-> self draw art-group data 138)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (when - (and (not s5-1) (= (-> self skel root-channel 0) (-> self skel channel))) - (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) - (set! s5-1 #t) - ) - (set! (-> self control transv quad) (the-as uint128 0)) - (when (< 50.0 (ja-aframe-num 0)) - (when (not gp-1) - (sound-play-by-name - (static-sound-name "zoomer-start") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! gp-1 #t) - ) - (set! (-> self racer front-rotv) 65536.0) - (set! - (-> self racer front-rot) - (the - float - (sar - (shl - (the - int - (+ - (-> self racer front-rot) - (* (-> self racer front-rotv) (-> *display* seconds-per-frame)) - ) - ) - 48 ) - 48 - ) + (set! (-> self control unknown-vector102 quad) (-> gp-0 quad)) + (set! (-> self control unknown-vector103 quad) (-> s5-0 quad)) ) - ) - (+! - (-> self racer bottom-rot) - (* 364088.88 (-> *display* seconds-per-frame)) - ) - (set-twist! - (-> self racer front-blade) - (the-as float #f) - (- (-> self racer front-rot)) - (the-as float #f) - ) - (set-twist! - (-> self racer bottom-blade) - (the-as float #f) - (the-as float #f) - (- (-> self racer bottom-rot)) - ) ) - (suspend) - (let ((s4-4 (-> self skel root-channel 0))) - (set! (-> s4-4 param 0) (ja-aframe 77.0 0)) - (set! (-> s4-4 param 1) 1.0) - (joint-control-channel-group-eval! - s4-4 - (the-as art-joint-anim #f) - num-func-seek! - ) + (let ((s5-1 #f) + (gp-1 #f) + ) + (ja-channel-push! 1 15) + (let ((s4-2 (-> self skel root-channel 0))) + (set! (-> s4-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 138))) + (set! (-> s4-2 param 0) (ja-aframe 77.0 0)) + (set! (-> s4-2 param 1) 1.0) + (set! (-> s4-2 frame-num) 0.0) + (joint-control-channel-group! s4-2 (the-as art-joint-anim (-> self draw art-group data 138)) num-func-seek!) + ) + (until (ja-done? 0) + (when (and (not s5-1) (= (-> self skel root-channel 0) (-> self skel channel))) + (send-event (ppointer->process (-> self manipy)) 'anim-mode 'clone-anim) + (set! s5-1 #t) + ) + (set! (-> self control transv quad) (the-as uint128 0)) + (when (< 50.0 (ja-aframe-num 0)) + (when (not gp-1) + (sound-play-by-name (static-sound-name "zoomer-start") (new-sound-id) 1024 0 0 1 #t) + (set! gp-1 #t) + ) + (set! (-> self racer front-rotv) 65536.0) + (set! (-> self racer front-rot) + (the float + (sar + (shl + (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (-> *display* seconds-per-frame)))) + 48 + ) + 48 + ) + ) + ) + (+! (-> self racer bottom-rot) (* 364088.88 (-> *display* seconds-per-frame))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + ) + (suspend) + (let ((s4-4 (-> self skel root-channel 0))) + (set! (-> s4-4 param 0) (ja-aframe 77.0 0)) + (set! (-> s4-4 param 1) 1.0) + (joint-control-channel-group-eval! s4-4 (the-as art-joint-anim #f) num-func-seek!) + ) + ) ) - ) + (set! (-> self state-flags) (logand -1025 (-> self state-flags))) + (send-event *camera* 'set-slave-option #x6000) + (set! (-> self control transv quad) (the-as uint128 0)) + (quaternion-copy! (-> self control quat) (-> self control unknown-quaternion00)) + (rot->dir-targ! (-> self control)) + (set! (-> self racer rot y) (y-angle (-> self control))) + (when *target* + (when (or (= (-> *target* current-level name) 'lavatube) + (= (-> *target* current-level name) 'firecanyon) + (= (-> *target* current-level name) 'citadel) + ) + (let ((gp-3 (get-process *default-dead-pool* hud-bike-heat #x4000))) + (set! (-> *hud-parts* bike-heat) + (the-as + (pointer hud-bike-heat) + (when gp-3 + (let ((t9-23 (method-of-type hud-bike-heat activate))) + (t9-23 (the-as hud-bike-heat gp-3) self 'hud-bike-heat (the-as pointer #x70004000)) + ) + (run-now-in-process gp-3 hud-init-by-other 0) + (-> gp-3 ppointer) + ) + ) + ) + ) + (set! (-> *hud-parts* buzzers 0 next-y-offset) -120) + (set! (-> *hud-parts* buzzers 0 y-sgn) 0) + 0 + ) + (let ((gp-4 (get-process *default-dead-pool* hud-bike-speed #x4000))) + (set! (-> *hud-parts* bike-speed) + (the-as + (pointer hud-bike-speed) + (when gp-4 + (let ((t9-26 (method-of-type hud-bike-speed activate))) + (t9-26 (the-as hud-bike-speed gp-4) self 'hud-bike-speed (the-as pointer #x70004000)) + ) + (run-now-in-process gp-4 hud-init-by-other 0) + (-> gp-4 ppointer) + ) + ) + ) + ) + (set! (-> *hud-parts* power 0 next-y-offset) -120) + (set! (-> *hud-parts* power 0 y-sgn) 0) + 0 + ) + (go target-racing) + (none) ) - (set! (-> self state-flags) (logand -1025 (-> self state-flags))) - (send-event *camera* 'set-slave-option #x6000) - (set! (-> self control transv quad) (the-as uint128 0)) - (quaternion-copy! - (-> self control quat) - (-> self control unknown-quaternion00) - ) - (rot->dir-targ! (-> self control)) - (set! (-> self racer rot y) (y-angle (-> self control))) - (when *target* - (when - (or - (= (-> *target* current-level name) 'lavatube) - (= (-> *target* current-level name) 'firecanyon) - (= (-> *target* current-level name) 'citadel) - ) - (let ((gp-3 (get-process *default-dead-pool* hud-bike-heat #x4000))) - (set! (-> *hud-parts* bike-heat) (the-as (pointer hud-bike-heat) (when gp-3 - (let - ((t9-23 - (method-of-type - hud-bike-heat - activate - ) - ) - ) - (t9-23 - (the-as - hud-bike-heat - gp-3 - ) - self - 'hud-bike-heat - (the-as - pointer - #x70004000 - ) - ) - ) - (run-now-in-process - gp-3 - hud-init-by-other - 0 - ) - (-> - gp-3 - ppointer - ) - ) - ) - ) - ) - (set! (-> *hud-parts* buzzers 0 next-y-offset) -120) - (set! (-> *hud-parts* buzzers 0 y-sgn) 0) - 0 - ) - (let ((gp-4 (get-process *default-dead-pool* hud-bike-speed #x4000))) - (set! (-> *hud-parts* bike-speed) (the-as (pointer hud-bike-speed) (when gp-4 - (let - ((t9-26 - (method-of-type - hud-bike-speed - activate - ) - ) - ) - (t9-26 - (the-as - hud-bike-speed - gp-4 - ) - self - 'hud-bike-speed - (the-as - pointer - #x70004000 - ) - ) - ) - (run-now-in-process - gp-4 - hud-init-by-other - 0 - ) - (-> - gp-4 - ppointer - ) - ) - ) - ) - ) - (set! (-> *hud-parts* power 0 next-y-offset) -120) - (set! (-> *hud-parts* power 0 y-sgn) 0) - 0 - ) - (go target-racing) - (none) - ) :post (behavior () - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 - (fmin - 1.0 - (* - 0.0044444446 - (the - float - (- (-> *display* base-frame-counter) (-> self state-time)) - ) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 (fmin 1.0 (* 0.0044444446 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) + ) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp + (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax + 0.0 + (fmin 1.0 (* 0.0044444446 (the float (+ (- -150 (-> self state-time)) (-> *display* base-frame-counter))))) + ) + ) ) - ) - ) - ) - (vector-lerp! - gp-0 - (-> self control unknown-vector102) - (-> self control unknown-vector103) - f30-0 - ) - (set! - (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) - (fmax - 0.0 - (fmin - 1.0 - (* - 0.0044444446 - (the - float - (+ (- -150 (-> self state-time)) (-> *display* base-frame-counter)) - ) - ) + (TODO-RENAME-30 (-> self control) gp-0) + (quaternion-slerp! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0 ) - ) ) - ) - (TODO-RENAME-30 (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - ) - (let - ((f30-1 - (fmax - 0.0 - (fmin - 1.0 - (* - 0.010528533 - (+ - -279.99 - (the float (- (-> *display* base-frame-counter) (-> self state-time))) + (let ((f30-1 + (fmax + 0.0 + (fmin 1.0 (* 0.010528533 (+ -279.99 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) + ) + ) ) - ) - ) - ) + (set! (-> self control unknown-vector11 y) + (lerp (the-as float (-> self control unknown-uint20)) (-> self racer cushion-base) f30-1) + ) + (set! (-> self racer bike-trans y) (lerp + (the-as float (-> self control unknown-uint30)) + (+ 4096.0 (the-as float (-> self control unknown-uint30))) + f30-1 + ) + ) ) - ) - (set! - (-> self control unknown-vector11 y) - (lerp - (the-as float (-> self control unknown-uint20)) - (-> self racer cushion-base) - f30-1 - ) - ) - (set! - (-> self racer bike-trans y) - (lerp - (the-as float (-> self control unknown-uint30)) - (+ 4096.0 (the-as float (-> self control unknown-uint30))) - f30-1 - ) - ) + (hide-hud-quick) + (target-no-move-post) + (none) ) - (hide-hud-quick) - (target-no-move-post) - (none) - ) ) (defstate target-racing-get-off (target) @@ -2553,91 +1511,77 @@ (-> target-racing-start exit) :code (behavior ((arg0 handle)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self control unknown-surface00) *racer-mods*) - (let ((a0-2 (-> *hud-parts* bike-speed))) - (if a0-2 - (set! (-> a0-2 0 deactivate-when-hidden) #t) - ) - ) - (let ((a0-4 (-> *hud-parts* bike-heat))) - (if a0-4 - (set! (-> a0-4 0 deactivate-when-hidden) #t) - ) - ) - (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 123) - ) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control unknown-surface00) *racer-mods*) + (let ((a0-2 (-> *hud-parts* bike-speed))) + (if a0-2 + (set! (-> a0-2 0 deactivate-when-hidden) #t) ) - (ja-channel-push! 4 30) - (let ((s5-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - s5-0 - (the-as art-joint-anim (-> self draw art-group data 123)) - num-func-identity ) - (set! (-> s5-0 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) - ) - (let ((a0-13 (-> self skel root-channel 1))) - (set! - (-> a0-13 frame-group) - (the-as art-joint-anim (-> self draw art-group data 124)) + (let ((a0-4 (-> *hud-parts* bike-heat))) + (if a0-4 + (set! (-> a0-4 0 deactivate-when-hidden) #t) + ) ) - (set! (-> a0-13 param 0) 0.0) - (joint-control-channel-group-eval! - a0-13 - (the-as art-joint-anim (-> self draw art-group data 124)) - num-func-chan + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 123) + ) + ) + (ja-channel-push! 4 30) + (let ((s5-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + s5-0 + (the-as art-joint-anim (-> self draw art-group data 123)) + num-func-identity + ) + (set! (-> s5-0 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) + ) + (let ((a0-13 (-> self skel root-channel 1))) + (set! (-> a0-13 frame-group) (the-as art-joint-anim (-> self draw art-group data 124))) + (set! (-> a0-13 param 0) 0.0) + (joint-control-channel-group-eval! + a0-13 + (the-as art-joint-anim (-> self draw art-group data 124)) + num-func-chan + ) + ) + (let ((a0-14 (-> self skel root-channel 2))) + (set! (-> a0-14 frame-group) (the-as art-joint-anim (-> self draw art-group data 125))) + (set! (-> a0-14 param 0) 0.0) + (joint-control-channel-group-eval! + a0-14 + (the-as art-joint-anim (-> self draw art-group data 125)) + num-func-chan + ) + ) + (let ((a0-15 (-> self skel root-channel 3))) + (set! (-> a0-15 frame-group) (the-as art-joint-anim (-> self draw art-group data 126))) + (set! (-> a0-15 param 0) 0.0) + (joint-control-channel-group-eval! + a0-15 + (the-as art-joint-anim (-> self draw art-group data 126)) + num-func-chan + ) + ) ) - ) - (let ((a0-14 (-> self skel root-channel 2))) - (set! - (-> a0-14 frame-group) - (the-as art-joint-anim (-> self draw art-group data 125)) + (let ((s5-1 (-> *display* base-frame-counter))) + (until (>= (- (-> *display* base-frame-counter) s5-1) 150) + (set! (-> self racer stick-lock) #t) + (set-forward-vel (* 0.9 (-> self control unknown-float01))) + (set! (-> self racer turn-anim-targ) 0.0) + (set! (-> self racer turn-anim-targ) 0.0) + (target-racing-turn-anim) + (set! (-> self control unknown-vector11 y) + (seek (-> self control unknown-vector11 y) 6144.0 (* 3.0 (-> *display* seconds-per-frame))) + ) + (suspend) + ) ) - (set! (-> a0-14 param 0) 0.0) - (joint-control-channel-group-eval! - a0-14 - (the-as art-joint-anim (-> self draw art-group data 125)) - num-func-chan - ) - ) - (let ((a0-15 (-> self skel root-channel 3))) - (set! - (-> a0-15 frame-group) - (the-as art-joint-anim (-> self draw art-group data 126)) - ) - (set! (-> a0-15 param 0) 0.0) - (joint-control-channel-group-eval! - a0-15 - (the-as art-joint-anim (-> self draw art-group data 126)) - num-func-chan - ) - ) + (go target-racing-get-off-jump arg0) + (none) ) - (let ((s5-1 (-> *display* base-frame-counter))) - (until (>= (- (-> *display* base-frame-counter) s5-1) 150) - (set! (-> self racer stick-lock) #t) - (set-forward-vel (* 0.9 (-> self control unknown-float01))) - (set! (-> self racer turn-anim-targ) 0.0) - (set! (-> self racer turn-anim-targ) 0.0) - (target-racing-turn-anim) - (set! - (-> self control unknown-vector11 y) - (seek - (-> self control unknown-vector11 y) - 6144.0 - (* 3.0 (-> *display* seconds-per-frame)) - ) - ) - (suspend) - ) - ) - (go target-racing-get-off-jump arg0) - (none) - ) :post target-racing-post ) @@ -2649,287 +1593,143 @@ (-> target-racing-start exit) :code (behavior ((arg0 handle)) - (sound-play-by-name - (static-sound-name "zoomer-stop") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! (-> self state-time) (-> *display* base-frame-counter)) - (set! (-> self control transv quad) (the-as uint128 0)) - (let ((gp-1 (new 'stack-no-clear 'vector))) - (set! (-> gp-1 quad) (-> self control trans quad)) - (let ((s4-1 (new 'stack-no-clear 'vector))) - (set! (-> s4-1 quad) (-> self control trans quad)) - (quaternion-copy! - (-> self control unknown-quaternion02) - (-> self control quat) - ) - (quaternion-copy! - (-> self control unknown-quaternion03) - (-> self control unknown-quaternion00) - ) - (set! - (-> self control unknown-uint20) - (the-as uint (-> self control unknown-vector11 y)) - ) - (let* ((s2-0 (handle->process arg0)) - (s3-0 - (if - (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) - (the-as racer s2-0) - ) - ) + (sound-play-by-name (static-sound-name "zoomer-stop") (new-sound-id) 1024 0 0 1 #t) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (set! (-> self control transv quad) (the-as uint128 0)) + (let ((gp-1 (new 'stack-no-clear 'vector))) + (set! (-> gp-1 quad) (-> self control trans quad)) + (let ((s4-1 (new 'stack-no-clear 'vector))) + (set! (-> s4-1 quad) (-> self control trans quad)) + (quaternion-copy! (-> self control unknown-quaternion02) (-> self control quat)) + (quaternion-copy! (-> self control unknown-quaternion03) (-> self control unknown-quaternion00)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (let* ((s2-0 (handle->process arg0)) + (s3-0 (if (and (nonzero? s2-0) (type-type? (-> s2-0 type) process-drawable)) + (the-as racer s2-0) + ) + ) + ) + (when s3-0 + (set! (-> s4-1 quad) (-> s3-0 root-override trans quad)) + (set-yaw-angle-clear-roll-pitch! (-> s3-0 root-override) (quaternion-y-angle (-> self control quat))) + (quaternion-copy! (-> self control unknown-quaternion03) (-> s3-0 root-override quat)) + (send-event s3-0 'trans (-> self racer bike-trans)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> s3-0 root-override quat)) + (set! (-> self racer bike-scale quad) (-> s3-0 root-override scale quad)) + (set! (-> self control unknown-int21) (the-as int (-> self racer bike-trans y))) ) - (when s3-0 - (set! (-> s4-1 quad) (-> s3-0 root-override trans quad)) - (set-yaw-angle-clear-roll-pitch! - (-> s3-0 root-override) - (quaternion-y-angle (-> self control quat)) + ) + (set! (-> self control unknown-vector102 quad) (-> gp-1 quad)) + (set! (-> self control unknown-vector103 quad) (-> s4-1 quad)) ) - (quaternion-copy! - (-> self control unknown-quaternion03) - (-> s3-0 root-override quat) + (ja-channel-push! 1 15) + (let ((a0-24 (-> self skel root-channel 0))) + (set! (-> a0-24 frame-group) (the-as art-joint-anim (-> self draw art-group data 137))) + (set! (-> a0-24 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 137)) data 0 length) -1)) + ) + (set! (-> a0-24 param 1) 1.0) + (set! (-> a0-24 frame-num) 0.0) + (joint-control-channel-group! a0-24 (the-as art-joint-anim (-> self draw art-group data 137)) num-func-seek!) ) - (send-event s3-0 'trans (-> self racer bike-trans)) - (quaternion-copy! - (the-as quaternion (-> self racer bike-quat)) - (-> s3-0 root-override quat) + (until (ja-done? 0) + (suspend) + (let ((a0-25 (-> self skel root-channel 0))) + (set! (-> a0-25 param 0) (the float (+ (-> a0-25 frame-group data 0 length) -1))) + (set! (-> a0-25 param 1) 1.0) + (joint-control-channel-group-eval! a0-25 (the-as art-joint-anim #f) num-func-seek!) + ) ) - (set! (-> self racer bike-scale quad) (-> s3-0 root-override scale quad)) - (set! - (-> self control unknown-int21) - (the-as int (-> self racer bike-trans y)) + (send-event (handle->process arg0) 'draw) + (set-yaw-angle-clear-roll-pitch! + (-> self control) + (quaternion-y-angle (-> self control unknown-quaternion03)) ) - ) + (rot->dir-targ! (-> self control)) + (ja-post) + (vector<-cspace! gp-1 (-> self node-list data 3)) + (set! (-> gp-1 y) (+ -5896.192 (-> gp-1 y))) + (TODO-RENAME-30 (-> self control) gp-1) ) - (set! (-> self control unknown-vector102 quad) (-> gp-1 quad)) - (set! (-> self control unknown-vector103 quad) (-> s4-1 quad)) - ) - (ja-channel-push! 1 15) - (let ((a0-24 (-> self skel root-channel 0))) - (set! - (-> a0-24 frame-group) - (the-as art-joint-anim (-> self draw art-group data 137)) - ) - (set! - (-> a0-24 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 137)) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-24 param 1) 1.0) - (set! (-> a0-24 frame-num) 0.0) - (joint-control-channel-group! - a0-24 - (the-as art-joint-anim (-> self draw art-group data 137)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-25 (-> self skel root-channel 0))) - (set! - (-> a0-25 param 0) - (the float (+ (-> a0-25 frame-group data 0 length) -1)) - ) - (set! (-> a0-25 param 1) 1.0) - (joint-control-channel-group-eval! - a0-25 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (send-event (handle->process arg0) 'draw) - (set-yaw-angle-clear-roll-pitch! - (-> self control) - (quaternion-y-angle (-> self control unknown-quaternion03)) - ) - (rot->dir-targ! (-> self control)) - (ja-post) - (vector<-cspace! gp-1 (-> self node-list data 3)) - (set! (-> gp-1 y) (+ -5896.192 (-> gp-1 y))) - (TODO-RENAME-30 (-> self control) gp-1) + (send-event *camera* 'ease-in) + (ja-channel-set! 0) + (go target-racing-get-off-hit-ground #f) + (none) ) - (send-event *camera* 'ease-in) - (ja-channel-set! 0) - (go target-racing-get-off-hit-ground #f) - (none) - ) :post (behavior () - (let* - ((f0-2 - (deg-diff (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - ) - (f0-5 (if (< 0.0 f0-2) - (fmax 5461.3335 (* 4.0 f0-2)) - 54613.332 - ) - ) - ) - (set! - (-> self racer front-rotv) - (seek - (-> self racer front-rotv) - f0-5 - (* 54613.332 (-> *display* seconds-per-frame)) - ) - ) - ) - (set! - (-> self racer front-rot) - (the - float - (sar - (shl - (the - int - (+ - (-> self racer front-rot) - (* (-> self racer front-rotv) (-> *display* seconds-per-frame)) - ) - ) - 48 - ) - 48 - ) - ) - ) - (when - (and - (< - (fabs - (deg-diff - (-> *RACER-bank* default-front-blade) - (-> self racer front-rot) - ) - ) - 1820.4445 - ) - (= (-> self racer front-rotv) 5461.3335) - ) - (set! (-> self racer front-rotv) 0.0) - (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) - ) - (+! - (-> self racer bottom-rot) - (* 364088.88 (-> *display* seconds-per-frame)) - ) - (set-twist! - (-> self racer front-blade) - (the-as float #f) - (- (-> self racer front-rot)) - (the-as float #f) - ) - (set-twist! - (-> self racer bottom-blade) - (the-as float #f) - (the-as float #f) - (- (-> self racer bottom-rot)) - ) - (let ((gp-0 (new 'stack-no-clear 'vector)) - (f30-0 - (fmax - 0.0 - (fmin - 1.0 - (* - 0.004761905 - (+ - -150.0 - (the - float - (- (-> *display* base-frame-counter) (-> self state-time)) - ) - ) - ) - ) + (let* ((f0-2 (deg-diff (-> self racer front-rot) (-> *RACER-bank* default-front-blade))) + (f0-5 (if (< 0.0 f0-2) + (fmax 5461.3335 (* 4.0 f0-2)) + 54613.332 + ) + ) ) - ) - ) - (fmax - 0.0 - (fmin - 1.0 - (* - 0.006666667 - (+ - -225.0 - (the float (- (-> *display* base-frame-counter) (-> self state-time))) - ) - ) + (set! (-> self racer front-rotv) + (seek (-> self racer front-rotv) f0-5 (* 54613.332 (-> *display* seconds-per-frame))) + ) ) - ) - (vector-lerp! - gp-0 - (-> self control unknown-vector102) - (-> self control unknown-vector103) - f30-0 - ) - (set! - (-> gp-0 y) - (lerp - (-> self control unknown-vector102 y) - (-> self control unknown-vector103 y) + (set! (-> self racer front-rot) + (the float + (sar + (shl + (the int (+ (-> self racer front-rot) (* (-> self racer front-rotv) (-> *display* seconds-per-frame)))) + 48 + ) + 48 + ) + ) + ) + (when (and (< (fabs (deg-diff (-> *RACER-bank* default-front-blade) (-> self racer front-rot))) 1820.4445) + (= (-> self racer front-rotv) 5461.3335) + ) + (set! (-> self racer front-rotv) 0.0) + (set! (-> self racer front-rot) (-> *RACER-bank* default-front-blade)) + ) + (+! (-> self racer bottom-rot) (* 364088.88 (-> *display* seconds-per-frame))) + (set-twist! (-> self racer front-blade) (the-as float #f) (- (-> self racer front-rot)) (the-as float #f)) + (set-twist! (-> self racer bottom-blade) (the-as float #f) (the-as float #f) (- (-> self racer bottom-rot))) + (let ((gp-0 (new 'stack-no-clear 'vector)) + (f30-0 + (fmax + 0.0 + (fmin 1.0 (* 0.004761905 (+ -150.0 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) + ) + ) + ) (fmax - 0.0 - (fmin - 1.0 - (* - 0.0044444446 - (the - float - (+ (- -150 (-> self state-time)) (-> *display* base-frame-counter)) - ) - ) + 0.0 + (fmin 1.0 (* 0.006666667 (+ -225.0 (the float (- (-> *display* base-frame-counter) (-> self state-time)))))) ) - ) + (vector-lerp! gp-0 (-> self control unknown-vector102) (-> self control unknown-vector103) f30-0) + (set! (-> gp-0 y) + (lerp + (-> self control unknown-vector102 y) + (-> self control unknown-vector103 y) + (fmax + 0.0 + (fmin 1.0 (* 0.0044444446 (the float (+ (- -150 (-> self state-time)) (-> *display* base-frame-counter))))) + ) + ) + ) + (TODO-RENAME-30 (-> self control) gp-0) + (quaternion-slerp! + (-> self control unknown-quaternion00) + (-> self control unknown-quaternion02) + (-> self control unknown-quaternion03) + f30-0 + ) + (set! (-> self control unknown-vector11 y) + (lerp (the-as float (-> self control unknown-uint20)) 6144.0 (fmin 1.0 (* 2.0 f30-0))) + ) ) - ) - (TODO-RENAME-30 (-> self control) gp-0) - (quaternion-slerp! - (-> self control unknown-quaternion00) - (-> self control unknown-quaternion02) - (-> self control unknown-quaternion03) - f30-0 - ) - (set! - (-> self control unknown-vector11 y) - (lerp - (the-as float (-> self control unknown-uint20)) - 6144.0 - (fmin 1.0 (* 2.0 f30-0)) - ) - ) + (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) + (set! (-> self racer bike-scale quad) (-> self control scale quad)) + (hide-hud) + (target-no-move-post) + (none) ) - (vector+! - (-> self racer bike-trans) - (-> self control trans) - (-> self control unknown-vector12) - ) - (quaternion-copy! - (the-as quaternion (-> self racer bike-quat)) - (-> self control quat) - ) - (set! (-> self racer bike-scale quad) (-> self control scale quad)) - (hide-hud) - (target-no-move-post) - (none) - ) ) (defstate target-racing-get-off-hit-ground (target) @@ -2939,169 +1739,131 @@ (-> target-hit-ground enter) :trans (behavior () - (logior! (-> self control status) 7) - ((-> target-hit-ground trans)) - (none) - ) + (logior! (-> self control status) 7) + ((-> target-hit-ground trans)) + (none) + ) :code (behavior ((arg0 symbol)) - (ja-channel-set! 1) - (let ((gp-0 (-> self skel root-channel 0))) - (set! - (-> gp-0 frame-group) - (the-as art-joint-anim (-> self draw art-group data 35)) - ) - (set! - (-> gp-0 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 35)) - data - 0 - length + (ja-channel-set! 1) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 35))) + (set! (-> gp-0 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 35)) data 0 length) -1)) + ) + (set! (-> gp-0 param 1) 1.0) + (set! (-> gp-0 frame-num) (ja-aframe 42.0 0)) + (joint-control-channel-group! gp-0 (the-as art-joint-anim (-> self draw art-group data 35)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-4 (-> self skel root-channel 0))) + (set! (-> a0-4 param 0) (the float (+ (-> a0-4 frame-group data 0 length) -1))) + (set! (-> a0-4 param 1) 1.0) + (joint-control-channel-group-eval! a0-4 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> gp-0 param 1) 1.0) - (set! (-> gp-0 frame-num) (ja-aframe 42.0 0)) - (joint-control-channel-group! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 35)) - num-func-seek! - ) + (go target-stance) + (none) ) - (until (ja-done? 0) - (suspend) - (let ((a0-4 (-> self skel root-channel 0))) - (set! - (-> a0-4 param 0) - (the float (+ (-> a0-4 frame-group data 0 length) -1)) - ) - (set! (-> a0-4 param 1) 1.0) - (joint-control-channel-group-eval! - a0-4 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (go target-stance) - (none) - ) :post (behavior () - (hide-hud) - (target-post) - (none) - ) + (hide-hud) + (target-post) + (none) + ) ) (defstate target-racing-grab (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) - (-> self state name) - ) - (else - (case arg2 - (('end-mode) - (go target-racing) - ) - (('clone-anim) - (go - target-racing-clone-anim - (process->handle (the-as process (-> arg3 param 0))) - ) + (cond + ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + (-> self state name) ) (else - (target-generic-event-handler arg0 arg1 arg2 arg3) - ) + (case arg2 + (('end-mode) + (go target-racing) + ) + (('clone-anim) + (go target-racing-clone-anim (process->handle (the-as process (-> arg3 param 0)))) + ) + (else + (target-generic-event-handler arg0 arg1 arg2 arg3) + ) + ) + ) ) - ) ) - ) :enter (behavior () - (set! (-> self control unknown-surface00) *grab-mods*) - (set! (-> self neck flex-blend) 0.0) - (logior! (-> self state-flags) 272) - (set! (-> self racer stick-off) #t) - (none) - ) + (set! (-> self control unknown-surface00) *grab-mods*) + (set! (-> self neck flex-blend) 0.0) + (logior! (-> self state-flags) 272) + (set! (-> self racer stick-off) #t) + (none) + ) :exit (behavior () - (set! (-> self racer stick-off) #f) - (set! (-> self state-flags) (logand -273 (-> self state-flags))) - (set! (-> self water flags) (logand -65537 (-> self water flags))) - ((-> target-racing-start exit)) - (none) - ) + (set! (-> self racer stick-off) #f) + (set! (-> self state-flags) (logand -273 (-> self state-flags))) + (set! (-> self water flags) (logand -65537 (-> self water flags))) + ((-> target-racing-start exit)) + (none) + ) :code (behavior () - (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (when (not (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 123) ) - (-> self draw art-group data 123) ) + (ja-channel-push! 4 30) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 123)) + num-func-identity ) - (ja-channel-push! 4 30) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 123)) - num-func-identity + (set! (-> gp-0 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) + ) + (let ((a0-7 (-> self skel root-channel 1))) + (set! (-> a0-7 frame-group) (the-as art-joint-anim (-> self draw art-group data 124))) + (set! (-> a0-7 param 0) 0.0) + (joint-control-channel-group-eval! + a0-7 + (the-as art-joint-anim (-> self draw art-group data 124)) + num-func-chan + ) + ) + (let ((a0-8 (-> self skel root-channel 2))) + (set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 125))) + (set! (-> a0-8 param 0) 0.0) + (joint-control-channel-group-eval! + a0-8 + (the-as art-joint-anim (-> self draw art-group data 125)) + num-func-chan + ) + ) + (let ((a0-9 (-> self skel root-channel 3))) + (set! (-> a0-9 frame-group) (the-as art-joint-anim (-> self draw art-group data 126))) + (set! (-> a0-9 param 0) 0.0) + (joint-control-channel-group-eval! + a0-9 + (the-as art-joint-anim (-> self draw art-group data 126)) + num-func-chan + ) + ) ) - (set! (-> gp-0 frame-num) (ja-aframe (-> self racer turn-anim-frame) 0)) - ) - (let ((a0-7 (-> self skel root-channel 1))) - (set! - (-> a0-7 frame-group) - (the-as art-joint-anim (-> self draw art-group data 124)) + (while #t + (target-racing-turn-anim) + (set-forward-vel 0.0) + (suspend) ) - (set! (-> a0-7 param 0) 0.0) - (joint-control-channel-group-eval! - a0-7 - (the-as art-joint-anim (-> self draw art-group data 124)) - num-func-chan - ) - ) - (let ((a0-8 (-> self skel root-channel 2))) - (set! - (-> a0-8 frame-group) - (the-as art-joint-anim (-> self draw art-group data 125)) - ) - (set! (-> a0-8 param 0) 0.0) - (joint-control-channel-group-eval! - a0-8 - (the-as art-joint-anim (-> self draw art-group data 125)) - num-func-chan - ) - ) - (let ((a0-9 (-> self skel root-channel 3))) - (set! - (-> a0-9 frame-group) - (the-as art-joint-anim (-> self draw art-group data 126)) - ) - (set! (-> a0-9 param 0) 0.0) - (joint-control-channel-group-eval! - a0-9 - (the-as art-joint-anim (-> self draw art-group data 126)) - num-func-chan - ) - ) + (none) ) - (while #t - (target-racing-turn-anim) - (set-forward-vel 0.0) - (suspend) - ) - (none) - ) :post target-racing-post ) @@ -3109,65 +1871,44 @@ (defstate target-racing-clone-anim (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore)) - (set! (-> self control unknown-uint20) (the-as uint #f)) + (if (and (= arg2 'trans) (= (-> arg3 param 0) 'restore)) + (set! (-> self control unknown-uint20) (the-as uint #f)) + ) + ((-> target-racing-grab event) arg0 arg1 arg2 arg3) ) - ((-> target-racing-grab event) arg0 arg1 arg2 arg3) - ) :enter (-> target-clone-anim enter) :exit (behavior () - (set! - (-> self control unknown-vector11 y) - (the-as float (-> self control unknown-uint20)) + (set! (-> self control unknown-vector11 y) (the-as float (-> self control unknown-uint20))) + (set! (-> self control unknown-vector12 y) (-> self control unknown-vector11 y)) + (send-event (ppointer->process (-> self sidekick)) 'matrix #f) + ((-> target-clone-anim exit)) + ((-> target-racing-start exit)) + (vector-reset! (-> self control transv)) + (none) ) - (set! - (-> self control unknown-vector12 y) - (-> self control unknown-vector11 y) - ) - (send-event (ppointer->process (-> self sidekick)) 'matrix #f) - ((-> target-clone-anim exit)) - ((-> target-racing-start exit)) - (vector-reset! (-> self control transv)) - (none) - ) :code (behavior ((arg0 handle)) - (set! - (-> self control unknown-uint20) - (the-as uint (-> self control unknown-vector11 y)) + (set! (-> self control unknown-uint20) (the-as uint (-> self control unknown-vector11 y))) + (set! (-> self control unknown-vector11 y) 0.0) + (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) + (clone-anim arg0 33 #t "") + (go target-racing) + (none) ) - (set! (-> self control unknown-vector11 y) 0.0) - (send-event (ppointer->process (-> self sidekick)) 'matrix 'play-anim) - (clone-anim arg0 33 #t "") - (go target-racing) - (none) - ) :post (behavior () - (racer-sounds) - (set! - (-> self racer heat) - (seek - (-> self racer heat) - 0.0 - (* (-> *RACER-bank* surface-heat-inc) (-> *display* seconds-per-frame)) - ) + (racer-sounds) + (set! (-> self racer heat) + (seek (-> self racer heat) 0.0 (* (-> *RACER-bank* surface-heat-inc) (-> *display* seconds-per-frame))) + ) + (vector+! (-> self racer bike-trans) (-> self control trans) (-> self control unknown-vector12)) + (quaternion-copy! (the-as quaternion (-> self racer bike-quat)) (-> self control quat)) + (set! (-> self racer bike-scale quad) (-> self control scale quad)) + (target-no-ja-move-post) + (none) ) - (vector+! - (-> self racer bike-trans) - (-> self control trans) - (-> self control unknown-vector12) - ) - (quaternion-copy! - (the-as quaternion (-> self racer bike-quat)) - (-> self control quat) - ) - (set! (-> self racer bike-scale quad) (-> self control scale quad)) - (target-no-ja-move-post) - (none) - ) ) diff --git a/goal_src/levels/robocave/cave-trap.gc b/goal_src/levels/robocave/cave-trap.gc index 96afc62b2e..dd1df4288d 100644 --- a/goal_src/levels/robocave/cave-trap.gc +++ b/goal_src/levels/robocave/cave-trap.gc @@ -62,7 +62,12 @@ ) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defmethod init-from-entity! spider-vent ((obj spider-vent) (arg0 entity-actor)) @@ -264,14 +269,22 @@ (none) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defstate cave-trap-active (cave-trap) :event cave-trap-default-event-handler :enter - (behavior () (set! (-> self spawn-delay) (the-as uint 150)) (none)) + (behavior () + (set! (-> self spawn-delay) (the-as uint 150)) + (none) + ) :trans (behavior () (cond @@ -284,12 +297,11 @@ (go cave-trap-give-up) ) ) - (if (and - (< (-> self spider-count) 8) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-spawn-time))) - (the-as int (-> self spawn-delay)) - ) - ) + (if (and (< (-> self spider-count) 8) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-spawn-time))) + (the-as int (-> self spawn-delay)) + ) + ) (TODO-RENAME-20 self) ) ) @@ -301,14 +313,23 @@ (none) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defstate cave-trap-give-up (cave-trap) :event cave-trap-default-event-handler :code - (behavior () (suspend) (go cave-trap-idle) (none)) + (behavior () + (suspend) + (go cave-trap-idle) + (none) + ) ) (defmethod relocate cave-trap ((obj cave-trap) (arg0 int)) @@ -327,7 +348,7 @@ (set! (-> obj last-spawn-time) (the-as uint 0)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core offense) 0) + (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) (set-root-prim! s4-0 s3-0) ) diff --git a/goal_src/levels/robocave/spider-egg.gc b/goal_src/levels/robocave/spider-egg.gc index 773f818cbd..eb2525e818 100644 --- a/goal_src/levels/robocave/spider-egg.gc +++ b/goal_src/levels/robocave/spider-egg.gc @@ -72,7 +72,10 @@ ) ) :enter - (behavior ((arg0 symbol)) (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior ((arg0 symbol)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :code (behavior ((arg0 symbol)) (let ((f30-0 (rand-vu-float-range 0.8 1.2))) @@ -87,12 +90,12 @@ (set! (-> gp-1 param 1) f30-0) (set! (-> gp-1 frame-num) (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -316,10 +319,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) (set-root-prim! s4-0 s3-0) ) @@ -331,7 +334,7 @@ (initialize-skeleton obj *spider-egg-unbroken-sg* '()) (dummy-9 (-> obj broken-look) *spider-egg-broken-sg* (-> obj draw art-group) (-> obj entity)) (set-vector! (-> obj root-override scale) 0.4 0.4 0.4 1.0) - (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1))) + (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (collide-kind background))) (go process-drawable-art-error "no ground") ) (set! (-> obj root-override trans y) (+ -409.6 (-> obj root-override trans y))) diff --git a/goal_src/levels/rolling/rolling-obs.gc b/goal_src/levels/rolling/rolling-obs.gc index c7978b9d4f..99b8efe0bd 100644 --- a/goal_src/levels/rolling/rolling-obs.gc +++ b/goal_src/levels/rolling/rolling-obs.gc @@ -88,17 +88,17 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s5-0 (new 'process 'collide-shape-prim-group gp-0 (the-as uint 1) 0))) - (set! (-> s5-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s5-0 collide-with) (the-as uint 16)) - (set! (-> s5-0 prim-core action) (the-as uint 3)) + (set! (-> s5-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s5-0 collide-with) (collide-kind target)) + (set! (-> s5-0 prim-core action) (collide-action solid ca-1)) (set! (-> s5-0 transform-index) 0) (set-vector! (-> s5-0 local-sphere) -8192.0 0.0 0.0 40960.0) (set-root-prim! gp-0 s5-0) (let ((s4-0 (new 'process 'collide-shape-prim-mesh gp-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 8192.0 0.0 0.0 28672.0) (append-prim s5-0 s4-0) @@ -247,10 +247,9 @@ ) (defun dark-plant-check-target ((arg0 dark-plant)) - (the-as symbol (and *target* (and - (< (vector-vector-distance (-> arg0 root trans) (target-pos 0)) 16384.0) - (send-event *target* 'query 'powerup 4) - ) + (the-as symbol (and *target* (and (< (vector-vector-distance (-> arg0 root trans) (target-pos 0)) 16384.0) + (send-event *target* 'query 'powerup 4) + ) ) ) ) @@ -345,10 +344,9 @@ ) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t - (when (and - (!= (get-task-status (game-task rolling-plants)) (task-status invalid)) - (!= (get-task-status (game-task rolling-plants)) 7) - ) + (when (and (!= (get-task-status (game-task rolling-plants)) (task-status invalid)) + (!= (get-task-status (game-task rolling-plants)) 7) + ) (cond ((>= (- (-> *display* base-frame-counter) (-> self state-time)) gp-0) (go dark-plant-sprout) @@ -408,11 +406,10 @@ :code (behavior () (while #t - (when (and - (logtest? (-> self draw status) (draw-status drwf03)) - *target* - (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) - ) + (when (and (logtest? (-> self draw status) (draw-status drwf03)) + *target* + (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans))) + ) (if (rand-vu-percent? 0.3) (sound-play-by-name (static-sound-name "darkvine-move") (new-sound-id) 1024 0 0 1 #t) ) @@ -774,12 +771,12 @@ ) ) (set! (-> a0-1 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -813,10 +810,10 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) ) @@ -974,12 +971,13 @@ (defstate rolling-start-break (rolling-start) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('unbreak) - (go rolling-start-whole) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('unbreak) + (go rolling-start-whole) + ) + ) + ) :code (behavior ((arg0 symbol)) (let ((a0-1 (-> self skel root-channel 0))) @@ -1182,12 +1180,11 @@ ) (let ((gp-0 (new-stack-vector0))) (vector-matrix*! gp-0 (target-pos 0) (-> arg0 coord)) - (and - (< (fabs (-> gp-0 x)) (-> arg0 radius)) - (< (-> gp-0 y) (-> arg0 radius)) - (< 0.0 (-> gp-0 y)) - (< (-> gp-0 z) 0.0) - ) + (and (< (fabs (-> gp-0 x)) (-> arg0 radius)) + (< (-> gp-0 y) (-> arg0 radius)) + (< 0.0 (-> gp-0 y)) + (< (-> gp-0 z) 0.0) + ) ) ) @@ -1197,13 +1194,12 @@ ) (let ((s5-0 (new-stack-vector0))) (vector-matrix*! s5-0 (target-pos 0) (-> arg0 coord)) - (and - (< (fabs (-> s5-0 x)) (-> arg0 radius)) - (< (-> s5-0 y) (-> arg0 radius)) - (< 0.0 (-> s5-0 y)) - (< 0.0 (-> s5-0 z)) - (< (-> s5-0 z) (-> arg0 thickness)) - ) + (and (< (fabs (-> s5-0 x)) (-> arg0 radius)) + (< (-> s5-0 y) (-> arg0 radius)) + (< 0.0 (-> s5-0 y)) + (< 0.0 (-> s5-0 z)) + (< (-> s5-0 z) (-> arg0 thickness)) + ) ) ) @@ -1420,7 +1416,10 @@ (defstate gorge-start-race-finished (gorge-start) :trans - (behavior () (gorge-trans) (none)) + (behavior () + (gorge-trans) + (none) + ) :code (behavior () (gorge-start-draw-time #t #t) @@ -1447,7 +1446,10 @@ (defstate gorge-start-race-aborted (gorge-start) :trans - (behavior () (gorge-trans) (none)) + (behavior () + (gorge-trans) + (none) + ) :code (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) @@ -1700,7 +1702,11 @@ (none) ) :trans - (behavior () (gorge-start-launch-start-banner) (gorge-trans) (none)) + (behavior () + (gorge-start-launch-start-banner) + (gorge-trans) + (none) + ) :code (behavior () (while #t diff --git a/goal_src/levels/rolling/rolling-robber.gc b/goal_src/levels/rolling/rolling-robber.gc index 776c34b45f..2f97d6b94f 100644 --- a/goal_src/levels/rolling/rolling-robber.gc +++ b/goal_src/levels/rolling/rolling-robber.gc @@ -213,14 +213,13 @@ ) (defbehavior robber-move robber () - (+! - (-> self curve-position) - (/ (the float - (* (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) (the int (-> self speed))) - ) - (path-distance (-> self path)) - ) - ) + (+! (-> self curve-position) + (/ (the float + (* (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter)) (the int (-> self speed))) + ) + (path-distance (-> self path)) + ) + ) (cond ((< 1.0 (-> self curve-position)) (set! (-> self curve-position) (+ -1.0 (-> self curve-position))) @@ -300,12 +299,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -356,7 +355,11 @@ (defstate robber-dead (robber) :code - (behavior () (dummy-18 self) (deactivate self) (none)) + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) ) (defstate robber-die (robber) @@ -455,20 +458,17 @@ robber-event-handler :trans (behavior () - (if (and - (not (and - *target* - (>= 204800.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) - ) - (robber-find-ground) - ) + (if (and (not (and *target* + (>= 204800.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) + ) + (robber-find-ground) + ) (go robber-idle) ) - (if (and - *target* - (>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) (go robber-flee) ) (none) @@ -476,8 +476,8 @@ :code (behavior () (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 7) ) ) @@ -508,16 +508,21 @@ :event robber-event-handler :enter - (behavior () (set! (-> self y-offset-desired) -12288.0) (none)) + (behavior () + (set! (-> self y-offset-desired) -12288.0) + (none) + ) :exit - (behavior () (set! (-> self y-offset-desired) 0.0) (none)) + (behavior () + (set! (-> self y-offset-desired) 0.0) + (none) + ) :trans (behavior () - (if (not (and - *target* - (>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) - ) + (if (not (and *target* + (>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) + ) (go robber-got-away) ) (none) @@ -526,8 +531,8 @@ (behavior () (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 7) ) ) @@ -599,17 +604,15 @@ ) :trans (behavior () - (if (not (and - *target* - (>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) - ) + (if (not (and *target* + (>= 163840.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) + ) (go robber-got-away) ) - (when (and - *target* - (>= 102400.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) + (when (and *target* + (>= 102400.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) (set! (-> self near-timer) (- (-> self near-timer) (- (-> *display* base-frame-counter) (-> *display* old-base-frame-counter))) ) @@ -627,8 +630,8 @@ (behavior () (while #t (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 7) ) ) @@ -692,13 +695,15 @@ :event robber-event-handler :enter - (behavior () (set! (-> self speed) 0.0) (none)) + (behavior () + (set! (-> self speed) 0.0) + (none) + ) :trans (behavior () - (if (and - *target* - (>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) (go robber-flee) ) (robber-rotate (the-as target #t) 182.04445) @@ -739,10 +744,9 @@ :trans (behavior () (when (logtest? (-> self draw status) (draw-status drwf03)) - (if (and - *target* - (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= 163840.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) (level-hint-spawn (game-text-id rolling-flying-lurker-intro) "sksp0116" @@ -752,10 +756,9 @@ ) ) ) - (if (and - *target* - (>= 32768.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= 32768.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) (go robber-flee) ) (none) @@ -805,13 +808,15 @@ :event robber-event-handler :enter - (behavior () (set! (-> self speed) 0.0) (none)) + (behavior () + (set! (-> self speed) 0.0) + (none) + ) :trans (behavior () - (if (and - *target* - (>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) - ) + (if (and *target* + (>= 122880.0 (vector-vector-xz-distance (-> self root-override trans) (-> *target* control trans))) + ) (go robber-initial-notice) ) (robber-move) @@ -853,10 +858,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/snow/snow-bumper.gc b/goal_src/levels/snow/snow-bumper.gc index adc23cfdea..2752af748b 100644 --- a/goal_src/levels/snow/snow-bumper.gc +++ b/goal_src/levels/snow/snow-bumper.gc @@ -208,14 +208,13 @@ (('touch 'attack 'bonk) (when (= (-> arg0 type) target) (let ((gp-0 (-> arg3 param 0))) - (when (and - (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry gp-0) - (the-as collide-shape-moving (-> self root)) - (the-as uint 1) - ) - ) + (when (and (>= 6144.0 (vector-vector-xz-distance (-> self root trans) (target-pos 0))) + ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry gp-0) + (the-as collide-shape-moving (-> self root)) + (the-as uint 1) + ) + ) (close-specific-task! (game-task snow-bumpers) (task-status need-hint)) (go snow-bumper-deactivate) ) @@ -235,12 +234,11 @@ (if (< 368640.0 f30-0) (go snow-bumper-active-far-idle) ) - (if (and - (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-shoved-player-time))) 150) - (>= 20480.0 f30-0) - (>= f28-0 -4096.0) - (>= 11059.2 f28-0) - ) + (if (and (>= (- (-> *display* base-frame-counter) (the-as int (-> self last-shoved-player-time))) 150) + (>= 20480.0 f30-0) + (>= f28-0 -4096.0) + (>= 11059.2 f28-0) + ) (shove-player self *target*) ) ) @@ -267,7 +265,11 @@ (defstate snow-bumper-deactivate (snow-bumper) :exit - (behavior () (stop! (-> self sound)) (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans (the-as (function none :behavior snow-bumper) rider-trans) :code @@ -415,25 +417,25 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 9011.2 0.0 13926.4) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4) (append-prim s3-0 s2-1) @@ -485,10 +487,9 @@ ) (cond ((and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) - (if (and - (= (get-reminder (get-task-control (game-task snow-bumpers)) 0) (-> obj bumper-id)) - (not (task-complete? *game-info* (-> obj entity extra perm task))) - ) + (if (and (= (get-reminder (get-task-control (game-task snow-bumpers)) 0) (-> obj bumper-id)) + (not (task-complete? *game-info* (-> obj entity extra perm task))) + ) (go snow-bumper-spawn-fuel-cell) (go snow-bumper-inactive-idle) ) diff --git a/goal_src/levels/snow/snow-flutflut-obs.gc b/goal_src/levels/snow/snow-flutflut-obs.gc index 60d4f8d076..0159f7b1af 100644 --- a/goal_src/levels/snow/snow-flutflut-obs.gc +++ b/goal_src/levels/snow/snow-flutflut-obs.gc @@ -287,11 +287,10 @@ (local-vars (v0-2 object)) (case arg2 (('touch 'attack 'bonk) - (when (and - (= (-> arg0 type) target) - (logtest? (-> *target* control root-prim prim-core action) #x4000) - (>= 10649.6 (vector-vector-xz-distance (-> self root-override trans) (target-pos 0))) - ) + (when (and (= (-> arg0 type) target) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) + (>= 10649.6 (vector-vector-xz-distance (-> self root-override trans) (target-pos 0))) + ) (close-specific-task! (game-task snow-ball) (task-status need-hint)) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) @@ -458,33 +457,33 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17612.8) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) (append-prim s3-0 s2-2) @@ -583,10 +582,9 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) - (when (or - (!= (-> self plat-type) 1) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) + (when (or (!= (-> self plat-type) 1) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + ) (logclear! (-> self mask) (process-mask actor-pause)) (go flutflut-plat-appear) ) @@ -596,11 +594,10 @@ :code (behavior ((arg0 plat)) (cond - ((and - (= (-> self plat-type) 1) - (-> self entity) - (logtest? (-> self entity extra perm status) (entity-perm-status complete)) - ) + ((and (= (-> self plat-type) 1) + (-> self entity) + (logtest? (-> self entity extra perm status) (entity-perm-status complete)) + ) (set! (-> self basetrans quad) (-> self appear-trans-top quad)) (go elevator-idle-at-cave) ) @@ -689,7 +686,10 @@ (none) ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans (behavior () (plat-trans) @@ -810,8 +810,7 @@ (t9-0 arg0) ) ) - (if (or - (!= (-> self plat-type) 1) + (if (or (!= (-> self plat-type) 1) (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) ) (logclear! (-> self mask) (process-mask actor-pause)) @@ -844,9 +843,7 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self root-override root-prim prim-core action) - (logand -3 (-> self root-override root-prim prim-core action)) - ) + (logclear! (-> self root-override root-prim prim-core action) (collide-action ca-1)) (set! (-> self start-trans quad) (-> self root-override trans quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'quaternion)) @@ -863,7 +860,7 @@ :exit (behavior () (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self root-override root-prim prim-core action) 2) + (logior! (-> self root-override root-prim prim-core action) (collide-action ca-1)) (none) ) :trans @@ -912,7 +909,7 @@ ) ) ((= v1-0 'ridden) - (if (or (not *target*) (zero? (logand (-> *target* control root-prim prim-core action) #x4000))) + (if (or (not *target*) (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-14)))) (go elevator-travel-to-fort) ) ) @@ -927,7 +924,11 @@ (none) ) :trans - (behavior () (plat-trans) (dummy-20 self) (none)) + (behavior () + (plat-trans) + (dummy-20 self) + (none) + ) :code (the-as (function none :behavior flutflut-plat) anim-loop) :post @@ -981,14 +982,12 @@ :trans (behavior () (when *target* - (if (and - (>= 798720.0 (-> (target-pos 0) y)) - (not (and - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) - ) - ) + (if (and (>= 798720.0 (-> (target-pos 0) y)) + (not (and (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) + ) + ) (go elevator-travel-to-cave) ) ) @@ -1094,10 +1093,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -1130,10 +1129,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) (set-root-prim! s5-0 s4-0) @@ -1183,10 +1182,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/snow/snow-obs.gc b/goal_src/levels/snow/snow-obs.gc index 8c22d5c0cd..8639c58a14 100644 --- a/goal_src/levels/snow/snow-obs.gc +++ b/goal_src/levels/snow/snow-obs.gc @@ -617,10 +617,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 18022.4) (set-root-prim! s4-0 s3-0) @@ -776,10 +776,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-1 (new 'process 'collide-shape-prim-mesh s3-1 (the-as uint s4-0) (the-as uint 0)))) - (set! (-> s4-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-1 collide-with) (the-as uint 16)) - (set! (-> s4-1 prim-core action) (the-as uint 3)) - (set! (-> s4-1 prim-core offense) 4) + (set! (-> s4-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-1 collide-with) (collide-kind target)) + (set! (-> s4-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-1 prim-core offense) (collide-offense indestructible)) (set! (-> s4-1 transform-index) 3) (set-vector! (-> s4-1 local-sphere) 0.0 20480.0 -12288.0 25600.0) (set-root-prim! s3-1 s4-1) @@ -908,10 +908,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 49152.0 -16384.0 16384.0) (set-root-prim! s4-0 s3-0) @@ -1215,9 +1215,16 @@ (defstate snow-fort-gate-activate (snow-fort-gate) :enter - (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit - (behavior () (stop! (-> self sound)) (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (stop! (-> self sound)) + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :code (behavior () (let ((gp-0 #f)) @@ -1316,10 +1323,10 @@ (defmethod init-from-entity! snow-fort-gate ((obj snow-fort-gate) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 99123.2) (set-root-prim! s4-0 s3-0) @@ -1528,7 +1535,10 @@ (defstate snow-gears-activate (snow-gears) :trans - (behavior () (TODO-RENAME-20 self) (none)) + (behavior () + (TODO-RENAME-20 self) + (none) + ) :code (behavior () (sound-play-by-name (static-sound-name "eng-start-up") (new-sound-id) 1024 0 0 1 #t) @@ -1589,9 +1599,15 @@ (defstate snow-gears-halt (snow-gears) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :trans - (behavior () (TODO-RENAME-20 self) (none)) + (behavior () + (TODO-RENAME-20 self) + (none) + ) :code (behavior () (let ((a0-0 (-> self skel root-channel 0))) @@ -1761,26 +1777,26 @@ (sound-play-by-name (static-sound-name "prec-button1") (new-sound-id) 1024 -1524 0 1 #t) (let ((gp-1 (get-process *default-dead-pool* snowcam #x4000))) (set! (-> (the-as snowcam (-> (when gp-1 - (let ((t9-3 (method-of-type snowcam activate))) - (t9-3 (the-as snowcam gp-1) self 'snowcam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-1 - pov-camera-init-by-other - (new 'static 'vector :x 3411656.8 :y 779689.56 :z -13573010.0 :w 1.0) - *snowcam-sg* - "gearstart" - 0 - self - '() - ) - (-> gp-1 ppointer) - ) - 0 - ) - ) - seq - ) + (let ((t9-3 (method-of-type snowcam activate))) + (t9-3 (the-as snowcam gp-1) self 'snowcam (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-1 + pov-camera-init-by-other + (new 'static 'vector :x 3411656.8 :y 779689.56 :z -13573010.0 :w 1.0) + *snowcam-sg* + "gearstart" + 0 + self + '() + ) + (-> gp-1 ppointer) + ) + 0 + ) + ) + seq + ) (the-as uint 0) ) ) @@ -1844,10 +1860,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) @@ -1923,12 +1939,13 @@ (defstate snow-log-wait-for-master (snow-log) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('trigger) - (go snow-log-activate) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go snow-log-activate) + ) + ) + ) :code (behavior () (while #t @@ -2128,10 +2145,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 36864.0) (set-root-prim! s4-0 s3-0) @@ -2175,11 +2192,10 @@ (local-vars (v0-2 basic)) (case arg2 (('touch 'bonk 'attack) - (when (and - (= (-> arg0 type) target) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - (>= 6553.6 (vector-vector-xz-distance (target-pos 0) (-> self root-override trans))) - ) + (when (and (= (-> arg0 type) target) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + (>= 6553.6 (vector-vector-xz-distance (target-pos 0) (-> self root-override trans))) + ) (process-entity-status! self (entity-perm-status complete) #t) (logclear! (-> self mask) (process-mask actor-pause)) (process-entity-status! self (entity-perm-status bit-3) #t) @@ -2290,10 +2306,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/snow/snow-ram.gc b/goal_src/levels/snow/snow-ram.gc index cc6e4aabba..a6b2a68ac7 100644 --- a/goal_src/levels/snow/snow-ram.gc +++ b/goal_src/levels/snow/snow-ram.gc @@ -20,391 +20,306 @@ :longest-edge (meters 7.7) ) -(set! - (-> *part-group-id-table* 526) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-ram-hit-wall" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 1921) - (sp-item 1922 :fade-after (meters 60.0) :falloff-to (meters 60.0)) - ) - :bounds (new 'static 'sphere :w 32768.0) - ) - ) +(set! (-> *part-group-id-table* 526) (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ram-hit-wall" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 1921) + (sp-item 1922 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) -(set! - (-> *part-id-table* 1920) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) - (sp-rnd-flt spt-num 64.0 16.0 1.0) - (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-rnd-flt spt-r 128.0 16.0 1.0) - (sp-rnd-flt spt-g 128.0 48.0 1.0) - (sp-rnd-flt spt-b 128.0 64.0 1.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0) - (sp-flt spt-scalevel-x (meters -0.00066666666)) - (sp-copy-from-other spt-scalevel-y -4) - (sp-rnd-flt spt-accel-y -20.48 13.653334 1.0) - (sp-rnd-flt spt-friction 0.92 0.05 1.0) - (sp-int spt-timer 210) - (sp-cpuinfo-flags bit0 bit3 bit12) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 170.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1920) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :index #x4 :page #x2)) + (sp-rnd-flt spt-num 64.0 16.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.1) (meters 0.2) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 128.0 16.0 1.0) + (sp-rnd-flt spt-g 128.0 48.0 1.0) + (sp-rnd-flt spt-b 128.0 64.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.10666667) (meters 0.053333335) 1.0) + (sp-flt spt-scalevel-x (meters -0.00066666666)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y -20.48 13.653334 1.0) + (sp-rnd-flt spt-friction 0.92 0.05 1.0) + (sp-int spt-timer 210) + (sp-cpuinfo-flags bit0 bit3 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 170.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1922) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 8.0) - (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 100.0) - (sp-flt spt-g 100.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 64.0 64.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-flt spt-fade-a -0.60952383) - (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) - (sp-int spt-timer 210) - (sp-cpuinfo-flags bit2 bit3 bit12) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1922) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-scale-x (meters 3.0) (meters 3.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 100.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-fade-a -0.60952383) + (sp-rnd-flt spt-accel-y 0.68266666 0.68266666 1.0) + (sp-int spt-timer 210) + (sp-cpuinfo-flags bit2 bit3 bit12) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 180.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 180.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1921) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 13 - (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 100.0) - (sp-flt spt-g 100.0) - (sp-flt spt-b 128.0) - (sp-flt spt-a 96.0) - (sp-flt spt-fade-a -2.1333334) - (sp-int spt-timer 42) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1921) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 13 + (sp-tex spt-texture (new 'static 'texture-id :index #x12 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 100.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 128.0) + (sp-flt spt-a 96.0) + (sp-flt spt-fade-a -2.1333334) + (sp-int spt-timer 42) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) -(set! - (-> *part-group-id-table* 527) - (new 'static 'sparticle-launch-group - :length 1 - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-ram-wheel-puffs" - :launcher - (new 'static 'inline-array sparticle-group-item 1 - (sp-item 1923 :fade-after (meters 70.0) :falloff-to (meters 70.0)) - ) - :bounds (new 'static 'sphere :w 32768.0) - ) - ) +(set! (-> *part-group-id-table* 527) (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-ram-wheel-puffs" + :launcher + (new 'static 'inline-array sparticle-group-item 1 + (sp-item 1923 :fade-after (meters 70.0) :falloff-to (meters 70.0)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) -(set! - (-> *part-id-table* 1923) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0) - (sp-rnd-flt spt-z -2048.0 4096.0 1.0) - (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 100.0) - (sp-flt spt-g 100.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0033333334) 1.0) - (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) - (sp-flt spt-fade-a -0.26666668) - (sp-flt spt-accel-y -1.3653333) - (sp-int spt-timer 120) - (sp-cpuinfo-flags bit2) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1923) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.0) 1.0) + (sp-rnd-flt spt-z -2048.0 4096.0 1.0) + (sp-rnd-flt spt-scale-x (meters 1.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 100.0) + (sp-flt spt-g 100.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.0) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-flt spt-fade-a -0.26666668) + (sp-flt spt-accel-y -1.3653333) + (sp-int spt-timer 120) + (sp-cpuinfo-flags bit2) + (sp-end) + ) + ) + ) (defmethod dummy-20 ram ((obj ram)) (let ((gp-0 (-> obj part))) - (when (nonzero? gp-0) - (let ((a2-0 (-> obj node-list data 8 bone transform)) - (s5-0 (new 'stack-no-clear 'vector)) - ) - (set-vector! s5-0 0.0 0.0 -49152.0 1.0) - (vector-matrix*! s5-0 s5-0 a2-0) - (set! - (-> *part-id-table* 1920 init-specs 16 initial-valuef) - (+ 16384.0 (-> obj orient-ry)) + (when (nonzero? gp-0) + (let ((a2-0 (-> obj node-list data 8 bone transform)) + (s5-0 (new 'stack-no-clear 'vector)) + ) + (set-vector! s5-0 0.0 0.0 -49152.0 1.0) + (vector-matrix*! s5-0 s5-0 a2-0) + (set! (-> *part-id-table* 1920 init-specs 16 initial-valuef) (+ 16384.0 (-> obj orient-ry))) + (spawn gp-0 s5-0) + ) ) - (spawn gp-0 s5-0) - ) ) - ) ) (defmethod dummy-21 ram ((obj ram)) (let ((gp-0 (-> obj part2))) - (let ((s3-0 (new 'stack-no-clear 'vector)) - (s4-0 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! s3-0 (-> obj node-list data 5)) - (set-vector! s4-0 13312.0 -5324.8 0.0 1.0) - (vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry)) - (vector+! s4-0 s4-0 s3-0) - (spawn gp-0 s4-0) - (set-vector! s4-0 -13312.0 -5324.8 0.0 1.0) - (vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry)) - (vector+! s4-0 s4-0 s3-0) - (spawn gp-0 s4-0) + (let ((s3-0 (new 'stack-no-clear 'vector)) + (s4-0 (new 'stack-no-clear 'vector)) + ) + (vector<-cspace! s3-0 (-> obj node-list data 5)) + (set-vector! s4-0 13312.0 -5324.8 0.0 1.0) + (vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry)) + (vector+! s4-0 s4-0 s3-0) + (spawn gp-0 s4-0) + (set-vector! s4-0 -13312.0 -5324.8 0.0 1.0) + (vector-rotate-around-y! s4-0 s4-0 (-> obj orient-ry)) + (vector+! s4-0 s4-0 s3-0) + (spawn gp-0 s4-0) + ) + (let ((s3-1 (new 'stack-no-clear 'vector)) + (s4-1 (new 'stack-no-clear 'vector)) + ) + (vector<-cspace! s3-1 (-> obj node-list data 6)) + (set-vector! s4-1 13312.0 -5324.8 0.0 1.0) + (vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry)) + (vector+! s4-1 s4-1 s3-1) + (spawn gp-0 s4-1) + (set-vector! s4-1 -13312.0 -5324.8 0.0 1.0) + (vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry)) + (vector+! s4-1 s4-1 s3-1) + (spawn gp-0 s4-1) + ) ) - (let ((s3-1 (new 'stack-no-clear 'vector)) - (s4-1 (new 'stack-no-clear 'vector)) - ) - (vector<-cspace! s3-1 (-> obj node-list data 6)) - (set-vector! s4-1 13312.0 -5324.8 0.0 1.0) - (vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry)) - (vector+! s4-1 s4-1 s3-1) - (spawn gp-0 s4-1) - (set-vector! s4-1 -13312.0 -5324.8 0.0 1.0) - (vector-rotate-around-y! s4-1 s4-1 (-> obj orient-ry)) - (vector+! s4-1 s4-1 s3-1) - (spawn gp-0 s4-1) - ) - ) ) (defmethod dummy-22 ram ((obj ram)) (process-entity-status! obj (entity-perm-status complete) #t) (let ((v1-0 (alt-actor-list-subtask-incomplete-count obj))) - (cond - ((zero? v1-0) - (let ((v1-3 (-> obj entity extra perm))) - (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-3 user-int8 2) 1) + (cond + ((zero? v1-0) + (let ((v1-3 (-> obj entity extra perm))) + (logior! (-> v1-3 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-3 user-int8 2) 1) + ) + (if (not (task-complete? *game-info* (-> obj entity extra perm task))) + (return #t) + ) + ) + ((= v1-0 1) + (close-specific-task! (game-task snow-ram) (task-status need-reminder)) + ) + (else + (close-specific-task! (game-task snow-ram) (task-status need-reminder-a)) + ) ) - (if (not (task-complete? *game-info* (-> obj entity extra perm task))) - (return #t) - ) - ) - ((= v1-0 1) - (close-specific-task! (game-task snow-ram) (task-status need-reminder)) - ) - (else - (close-specific-task! (game-task snow-ram) (task-status need-reminder-a)) - ) ) - ) #f ) (defstate ram-idle (ram) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch 'attack) - (when - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> self root-override) - (the-as uint 1) - ) - (let ((a1-3 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-3 from) self) - (set! (-> a1-3 num-params) 2) - (set! (-> a1-3 message) 'attack) - (set! (-> a1-3 param 0) (-> arg3 param 0)) - (let ((v1-7 (new 'static 'attack-info :mask #xc0))) - (set! (-> v1-7 shove-up) 2048.0) - (set! (-> v1-7 shove-back) 8192.0) - (set! (-> a1-3 param 1) (the-as uint v1-7)) + (case arg2 + (('touch 'attack) + (when ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> self root-override) + (the-as uint 1) + ) + (let ((a1-3 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-3 from) self) + (set! (-> a1-3 num-params) 2) + (set! (-> a1-3 message) 'attack) + (set! (-> a1-3 param 0) (-> arg3 param 0)) + (let ((v1-7 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-7 shove-up) 2048.0) + (set! (-> v1-7 shove-back) 8192.0) + (set! (-> a1-3 param 1) (the-as uint v1-7)) + ) + (send-event-function arg0 a1-3) + ) ) - (send-event-function arg0 a1-3) - ) ) ) ) - ) :exit (behavior () - (logior! (-> self mask) (process-mask actor-pause)) - (none) - ) + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans (behavior () - (rider-trans) - (if (-> self give-fuel-cell-anim) - (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) + (rider-trans) + (if (-> self give-fuel-cell-anim) + (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) + ) + (none) ) - (none) - ) :code (behavior () - (local-vars (sv-16 symbol)) - (ja-channel-push! 1 22) - (while #t - (sound-play-by-name - (static-sound-name "set-ram") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (let ((a0-2 (-> self skel root-channel 0))) - (set! - (-> a0-2 frame-group) - (the-as art-joint-anim (-> self draw art-group data 4)) - ) - (set! - (-> a0-2 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 4)) - data - 0 - length - ) - -1 + (local-vars (sv-16 symbol)) + (ja-channel-push! 1 22) + (while #t + (sound-play-by-name (static-sound-name "set-ram") (new-sound-id) 1024 0 0 1 #t) + (let ((a0-2 (-> self skel root-channel 0))) + (set! (-> a0-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 4))) + (set! (-> a0-2 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 4)) data 0 length) -1)) + ) + (set! (-> a0-2 param 1) 1.0) + (set! (-> a0-2 frame-num) 0.0) + (joint-control-channel-group! a0-2 (the-as art-joint-anim (-> self draw art-group data 4)) num-func-seek!) ) - ) - ) - (set! (-> a0-2 param 1) 1.0) - (set! (-> a0-2 frame-num) 0.0) - (joint-control-channel-group! - a0-2 - (the-as art-joint-anim (-> self draw art-group data 4)) - num-func-seek! - ) - ) - (until (ja-done? 0) - (suspend) - (let ((a0-3 (-> self skel root-channel 0))) - (set! - (-> a0-3 param 0) - (the float (+ (-> a0-3 frame-group data 0 length) -1)) - ) - (set! (-> a0-3 param 1) 1.0) - (joint-control-channel-group-eval! - a0-3 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - (let ((gp-1 #f)) - (sound-play-by-name - (static-sound-name "slam-crash") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (let ((a0-8 (-> self skel root-channel 0))) - (set! - (-> a0-8 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-8 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + (until (ja-done? 0) + (suspend) + (let ((a0-3 (-> self skel root-channel 0))) + (set! (-> a0-3 param 0) (the float (+ (-> a0-3 frame-group data 0 length) -1))) + (set! (-> a0-3 param 1) 1.0) + (joint-control-channel-group-eval! a0-3 (the-as art-joint-anim #f) num-func-seek!) ) - -1 - ) ) - ) - (set! (-> a0-8 param 1) 1.0) - (set! (-> a0-8 frame-num) 0.0) - (joint-control-channel-group! - a0-8 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) + (let ((gp-1 #f)) + (sound-play-by-name (static-sound-name "slam-crash") (new-sound-id) 1024 0 0 1 #t) + (logclear! (-> self mask) (process-mask actor-pause)) + (let ((a0-8 (-> self skel root-channel 0))) + (set! (-> a0-8 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-8 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-8 param 1) 1.0) + (set! (-> a0-8 frame-num) 0.0) + (joint-control-channel-group! a0-8 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (let ((f30-0 (ja-aframe-num 0))) + (when (and (not gp-1) (>= f30-0 61.0)) + (set! gp-1 #t) + (dummy-20 self) + ) + (if (and (>= f30-0 62.0) (< f30-0 97.0)) + (dummy-21 self) + ) + ) + (suspend) + (let ((a0-12 (-> self skel root-channel 0))) + (set! (-> a0-12 param 0) (the float (+ (-> a0-12 frame-group data 0 length) -1))) + (set! (-> a0-12 param 1) 1.0) + (joint-control-channel-group-eval! a0-12 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (logior! (-> self mask) (process-mask actor-pause)) + (set! sv-16 (the-as symbol #f)) + (apply-function-forward (-> self link) actor-link-dead-hook (& sv-16)) + (when (or sv-16 (nonzero? (-> self root-override riders num-riders))) + (let ((v1-67 (-> self entity extra perm))) + (logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage)) + (set! (-> v1-67 user-int8 0) 1) + ) + (send-event (ppointer->process (-> self child)) 'jump) + (go ram-fun-idle) + ) ) - (until (ja-done? 0) - (let ((f30-0 (ja-aframe-num 0))) - (when (and (not gp-1) (>= f30-0 61.0)) - (set! gp-1 #t) - (dummy-20 self) - ) - (if (and (>= f30-0 62.0) (< f30-0 97.0)) - (dummy-21 self) - ) - ) - (suspend) - (let ((a0-12 (-> self skel root-channel 0))) - (set! - (-> a0-12 param 0) - (the float (+ (-> a0-12 frame-group data 0 length) -1)) - ) - (set! (-> a0-12 param 1) 1.0) - (joint-control-channel-group-eval! - a0-12 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - (logior! (-> self mask) (process-mask actor-pause)) - (set! sv-16 (the-as symbol #f)) - (apply-function-forward (-> self link) actor-link-dead-hook (& sv-16)) - (when (or sv-16 (nonzero? (-> self root-override riders num-riders))) - (let ((v1-67 (-> self entity extra perm))) - (logior! (-> v1-67 status) (entity-perm-status user-set-from-cstage)) - (set! (-> v1-67 user-int8 0) 1) - ) - (send-event (ppointer->process (-> self child)) 'jump) - (go ram-fun-idle) - ) + (none) ) - (none) - ) :post (the-as (function none :behavior ram) rider-post) ) @@ -412,212 +327,171 @@ (defstate ram-fun-idle (ram) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('notify) - (when (= (-> arg0 type) ram-boss) - (if (dummy-22 self) - (go ram-give-fuel-cell) - ) + (case arg2 + (('notify) + (when (= (-> arg0 type) ram-boss) + (if (dummy-22 self) + (go ram-give-fuel-cell) + ) + ) ) ) ) - ) :trans (behavior () - (if (-> self give-fuel-cell-anim) - (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) + (if (-> self give-fuel-cell-anim) + (spool-push *art-control* (-> self give-fuel-cell-anim name) 0 self -99.0) + ) + (none) ) - (none) - ) :code (behavior () - (if (-> self give-fuel-cell?) - (go ram-give-fuel-cell) + (if (-> self give-fuel-cell?) + (go ram-give-fuel-cell) + ) + (ja-channel-push! 1 0) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 6)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) + ) + (transform-post) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) ) - (ja-channel-push! 1 0) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) - ) - (transform-post) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 - (none) - ) ) (defstate ram-give-fuel-cell (ram) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('notify) - (if (and (= (-> arg0 type) snowcam) (= (-> arg3 param 0) 'die)) - (go ram-fun-idle) + (case arg2 + (('notify) + (if (and (= (-> arg0 type) snowcam) (= (-> arg3 param 0) 'die)) + (go ram-fun-idle) + ) ) ) ) - ) :exit (behavior () - (process-entity-status! self (entity-perm-status bit-3) #f) - (logior! (-> self mask) (process-mask actor-pause)) - (none) - ) + (process-entity-status! self (entity-perm-status bit-3) #f) + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :code (behavior () - (set! (-> self give-fuel-cell?) #f) - (ja-channel-push! 1 0) - (let ((gp-0 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-0 - (the-as art-joint-anim (-> self draw art-group data 6)) - num-func-identity - ) - (set! (-> gp-0 frame-num) 0.0) - ) - (transform-post) - (when - (and - (not (task-complete? *game-info* (-> self entity extra perm task))) - (-> self give-fuel-cell-anim) - ) - (logclear! (-> self mask) (process-mask actor-pause)) - (process-entity-status! self (entity-perm-status bit-3) #t) - (let* - ((gp-1 (the-as snowcam (get-process *default-dead-pool* snowcam #x4000))) - (v1-14 (when gp-1 - (let ((t9-6 (method-of-type snowcam activate))) - (t9-6 gp-1 self 'snowcam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-1 - pov-camera-init-by-other - (-> self root-override trans) - *snowcam-sg* - (-> self give-fuel-cell-anim) - 0 - self - '() - ) - (-> gp-1 ppointer) - ) - ) + (set! (-> self give-fuel-cell?) #f) + (ja-channel-push! 1 0) + (let ((gp-0 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-0 + (the-as art-joint-anim (-> self draw art-group data 6)) + num-func-identity + ) + (set! (-> gp-0 frame-num) 0.0) ) - (set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1)) - ) - (sound-play-by-name - (static-sound-name "cell-prize") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (logior! (-> self mask) (process-mask sleep-code)) - (suspend) - 0 + (transform-post) + (when (and (not (task-complete? *game-info* (-> self entity extra perm task))) (-> self give-fuel-cell-anim)) + (logclear! (-> self mask) (process-mask actor-pause)) + (process-entity-status! self (entity-perm-status bit-3) #t) + (let* ((gp-1 (the-as snowcam (get-process *default-dead-pool* snowcam #x4000))) + (v1-14 (when gp-1 + (let ((t9-6 (method-of-type snowcam activate))) + (t9-6 gp-1 self 'snowcam (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-1 + pov-camera-init-by-other + (-> self root-override trans) + *snowcam-sg* + (-> self give-fuel-cell-anim) + 0 + self + '() + ) + (-> gp-1 ppointer) + ) + ) + ) + (set! (-> (the-as (pointer snowcam) v1-14) 0 seq) (the-as uint 1)) + ) + (sound-play-by-name (static-sound-name "cell-prize") (new-sound-id) 1024 0 0 1 #t) + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + ) + (go ram-fun-idle) + (none) ) - (go ram-fun-idle) - (none) - ) ) (defmethod deactivate ram ((obj ram)) (if (nonzero? (-> obj part2)) - (kill-and-free-particles (-> obj part2)) - ) + (kill-and-free-particles (-> obj part2)) + ) ((method-of-type process-drawable deactivate) obj) (none) ) (defmethod relocate ram ((obj ram) (arg0 int)) (if (nonzero? (-> obj part2)) - (&+! (-> obj part2) arg0) - ) + (&+! (-> obj part2) arg0) + ) (the-as ram ((method-of-type process-drawable relocate) obj arg0)) ) (defmethod init-from-entity! ram ((obj ram) (arg0 entity-actor)) (set! (-> obj give-fuel-cell?) #f) (set! (-> obj link) (new 'process 'actor-link-info obj)) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 34816.0) - (set-root-prim! s4-0 s3-0) - (let - ((s2-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 1) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-others)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 34816.0) + (set-root-prim! s4-0 s3-0) + (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s2-0 transform-index) 8) + (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) + (append-prim s3-0 s2-0) ) - ) - ) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) - (set! (-> s2-0 transform-index) 8) - (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) - (append-prim s3-0 s2-0) - ) - (let - ((s2-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 1) - (the-as uint 2) + (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) + (set! (-> s2-1 transform-index) 3) + (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0) + (append-prim s3-0 s2-1) + ) + (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) + (set! (-> s2-2 transform-index) 3) + (set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8) + (append-prim s3-0 s2-2) ) - ) ) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) - (set! (-> s2-1 transform-index) 3) - (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0) - (append-prim s3-0 s2-1) - ) - (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) - (set! (-> s2-2 transform-index) 3) - (set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8) - (append-prim s3-0 s2-2) - ) + (set! (-> s4-0 nav-radius) 20480.0) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) 20480.0) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *ram-sg* '()) (logior! (-> obj skel status) 1) @@ -625,163 +499,90 @@ (dummy-47 (-> obj root-override)) (set! (-> obj orient-ry) (quaternion-y-angle (-> obj root-override quat))) (nav-mesh-connect obj (-> obj root-override) (the-as nav-control #f)) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 526) obj) - ) - (set! - (-> obj part2) - (create-launch-control (-> *part-group-id-table* 527) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 526) obj)) + (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 527) obj)) (set! (-> obj ram-id) (res-lump-value arg0 'extra-id int)) - (case (-> obj ram-id) - ((1) - (set! - (-> obj give-fuel-cell-anim) - (new 'static 'spool-anim - :name "snowcam-ram-boss-in-cave-fuel-cell" - :index 7 - :parts 1 - :command-list '() - ) - ) - (set-vector! - (-> obj fuel-cell-dest-pos) - 3137396.8 - 803676.2 - -13560558.0 - 1.0 - ) + (case (-> obj ram-id) + ((1) + (set! (-> obj give-fuel-cell-anim) + (new 'static 'spool-anim :name "snowcam-ram-boss-in-cave-fuel-cell" :index 7 :parts 1 :command-list '()) + ) + (set-vector! (-> obj fuel-cell-dest-pos) 3137396.8 803676.2 -13560558.0 1.0) ) - ((2) - (set! - (-> obj give-fuel-cell-anim) - (new 'static 'spool-anim - :name "snowcam-ram-boss-ice-pond-fuel-cell" - :index 8 - :parts 1 - :command-list '() + ((2) + (set! (-> obj give-fuel-cell-anim) + (new 'static 'spool-anim :name "snowcam-ram-boss-ice-pond-fuel-cell" :index 8 :parts 1 :command-list '()) + ) + (set-vector! (-> obj fuel-cell-dest-pos) 2790289.5 1058152.5 -13639766.0 1.0) + ) + ((3) + (set! (-> obj give-fuel-cell-anim) + (new 'static 'spool-anim :name "snowcam-ram-boss-snow-ball-fuel-cell" :index 9 :parts 1 :command-list '()) + ) + (set-vector! (-> obj fuel-cell-dest-pos) 4208423.0 1037348.9 -13591491.0 1.0) + ) + (else + (set! (-> obj give-fuel-cell-anim) #f) ) - ) - (set-vector! - (-> obj fuel-cell-dest-pos) - 2790289.5 - 1058152.5 - -13639766.0 - 1.0 - ) ) - ((3) - (set! - (-> obj give-fuel-cell-anim) - (new 'static 'spool-anim - :name "snowcam-ram-boss-snow-ball-fuel-cell" - :index 9 - :parts 1 - :command-list '() - ) - ) - (set-vector! - (-> obj fuel-cell-dest-pos) - 4208423.0 - 1037348.9 - -13591491.0 - 1.0 - ) - ) - (else - (set! (-> obj give-fuel-cell-anim) #f) - ) - ) (let ((s4-1 #f)) - (if (nonzero? (-> obj entity extra perm user-int8 0)) - (set! s4-1 #t) - ) - (let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1))) - (when (not s3-1) - (when - (and - (-> obj entity) - (logtest? - (-> obj entity extra perm status) - (entity-perm-status complete) + (if (nonzero? (-> obj entity extra perm user-int8 0)) + (set! s4-1 #t) ) - ) - (set! s3-1 #t) - (if - (and - (nonzero? (-> obj entity extra perm user-int8 2)) - (not (task-complete? *game-info* (-> obj entity extra perm task))) + (let ((s3-1 (= (res-lump-value arg0 'mode uint128) 1))) + (when (not s3-1) + (when (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (set! s3-1 #t) + (if (and (nonzero? (-> obj entity extra perm user-int8 2)) + (not (task-complete? *game-info* (-> obj entity extra perm task))) + ) + (birth-pickup-at-point + (-> obj fuel-cell-dest-pos) + (pickup-type fuel-cell) + (the float (-> obj entity extra perm task)) + #f + obj + (the-as fact-info #f) + ) + ) + (go ram-fun-idle) + ) ) - (birth-pickup-at-point - (-> obj fuel-cell-dest-pos) - (pickup-type fuel-cell) - (the float (-> obj entity extra perm task)) - #f - obj - (the-as fact-info #f) - ) - ) - (go ram-fun-idle) - ) - ) - (cond - ((and (not s3-1) (has-nav-mesh? arg0)) (cond - (s4-1 - (let ((s5-1 (get-process *default-dead-pool* ram-boss #x4000))) - (when s5-1 - (let ((t9-28 (method-of-type ram-boss activate))) - (t9-28 - (the-as ram-boss s5-1) - obj - 'ram-boss - (the-as pointer #x70004000) - ) + ((and (not s3-1) (has-nav-mesh? arg0)) + (cond + (s4-1 + (let ((s5-1 (get-process *default-dead-pool* ram-boss #x4000))) + (when s5-1 + (let ((t9-28 (method-of-type ram-boss activate))) + (t9-28 (the-as ram-boss s5-1) obj 'ram-boss (the-as pointer #x70004000)) + ) + (run-now-in-process s5-1 ram-boss-init-by-other (-> obj entity) obj #t) + (-> s5-1 ppointer) + ) + ) + (go ram-fun-idle) + ) + (else + (let ((s5-2 (get-process *default-dead-pool* ram-boss #x4000))) + (when s5-2 + (let ((t9-32 (method-of-type ram-boss activate))) + (t9-32 (the-as ram-boss s5-2) obj 'ram-boss (the-as pointer #x70004000)) + ) + (run-now-in-process s5-2 ram-boss-init-by-other (-> obj entity) obj #f) + (-> s5-2 ppointer) + ) + ) + (go ram-idle) + ) ) - (run-now-in-process - s5-1 - ram-boss-init-by-other - (-> obj entity) - obj - #t - ) - (-> s5-1 ppointer) - ) ) - (go ram-fun-idle) - ) - (else - (let ((s5-2 (get-process *default-dead-pool* ram-boss #x4000))) - (when s5-2 - (let ((t9-32 (method-of-type ram-boss activate))) - (t9-32 - (the-as ram-boss s5-2) - obj - 'ram-boss - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-2 - ram-boss-init-by-other - (-> obj entity) - obj - #f - ) - (-> s5-2 ppointer) + (else + (go ram-fun-idle) ) - ) - (go ram-idle) ) - ) ) - (else - (go ram-fun-idle) - ) - ) ) - ) (none) ) diff --git a/goal_src/levels/snow/target-snowball.gc b/goal_src/levels/snow/target-snowball.gc index b6de16f7a8..5f84ba6b71 100644 --- a/goal_src/levels/snow/target-snowball.gc +++ b/goal_src/levels/snow/target-snowball.gc @@ -29,16 +29,16 @@ (defbehavior target-snowball-post target () (let ((gp-0 (the int (-> *display* time-ratio)))) - (set-time-ratios *display* 1.0) - (countdown (s5-0 gp-0) - (set! (-> self control unknown-int40) s5-0) - (flag-setup) - (build-conversions (-> self control transv)) - (reverse-conversions (-> self control transv)) - (post-flag-setup) + (set-time-ratios *display* 1.0) + (countdown (s5-0 gp-0) + (set! (-> self control unknown-int40) s5-0) + (flag-setup) + (build-conversions (-> self control transv)) + (reverse-conversions (-> self control transv)) + (post-flag-setup) + ) + (set-time-ratios *display* (the float gp-0)) ) - (set-time-ratios *display* (the float gp-0)) - ) (rot->dir-targ! (-> self control)) (ja-post) (joint-points) @@ -51,85 +51,76 @@ (defstate target-snowball-start (target) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (cond - ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) - 'snowball - ) - ((let ((v1-3 arg2)) - (= v1-3 'end-mode) + (cond + ((and (= arg2 'query) (= (-> arg3 param 0) 'mode)) + 'snowball + ) + ((let ((v1-3 arg2)) + (= v1-3 'end-mode) + ) + (go + target-jump + (-> *TARGET-bank* duck-jump-height-min) + (-> *TARGET-bank* duck-jump-height-max) + (the-as surface #f) + ) + ) + (else + (target-generic-event-handler arg0 arg1 arg2 arg3) + ) ) - (go - target-jump - (-> *TARGET-bank* duck-jump-height-min) - (-> *TARGET-bank* duck-jump-height-max) - (the-as surface #f) - ) - ) - (else - (target-generic-event-handler arg0 arg1 arg2 arg3) - ) ) - ) :exit (behavior () - (when (!= (-> self next-state name) 'target-snowball) - (let ((v1-1 (-> self manipy))) - (when v1-1 - (deactivate (-> v1-1 0)) - (set! (-> self manipy) (the-as (pointer manipy) #f)) + (when (!= (-> self next-state name) 'target-snowball) + (let ((v1-1 (-> self manipy))) + (when v1-1 + (deactivate (-> v1-1 0)) + (set! (-> self manipy) (the-as (pointer manipy) #f)) + ) + ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-12)) + (set! (-> self control unknown-surface00) *walk-mods*) + (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) + (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) + (target-collide-set! 'normal 0.0) + (set! (-> self control reaction) target-collision-reaction) + (target-exit) ) - ) - (set! - (-> self control root-prim prim-core action) - (logand -4097 (-> self control root-prim prim-core action)) - ) - (set! (-> self control unknown-surface00) *walk-mods*) - (set! - (-> self control dynam gravity-max) - (-> self control unknown-dynamics00 gravity-max) - ) - (set! - (-> self control dynam gravity-length) - (-> self control unknown-dynamics00 gravity-length) - ) - (target-collide-set! 'normal 0.0) - (set! (-> self control reaction) target-collision-reaction) - (target-exit) + (none) ) - (none) - ) :code (behavior ((arg0 handle)) - (target-exit) - (set! *display-profile* #f) - (set! *display-entity-errors* #f) - (if (zero? (-> self snowball)) - (set! (-> self snowball) (new 'process 'snowball-info)) + (target-exit) + (set! *display-profile* #f) + (set! *display-entity-errors* #f) + (if (zero? (-> self snowball)) + (set! (-> self snowball) (new 'process 'snowball-info)) + ) + (set! (-> self snowball entity) #f) + (let ((a0-2 (handle->process arg0))) + (if a0-2 + (set! (-> self snowball entity) (-> a0-2 entity)) + ) + ) + (reset-target-state #t) + (set! (-> self control transv quad) (the-as uint128 0)) + (set! (-> self control unknown-float01) 0.0) + (TODO-RENAME-28 (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) + (logior! (-> self control root-prim prim-core action) (collide-action ca-12)) + (ja-channel-set! 1) + (let ((gp-1 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-1 + (the-as art-joint-anim (-> self draw art-group data 5)) + num-func-identity + ) + (set! (-> gp-1 frame-num) 0.0) + ) + (remove-exit) + (go target-snowball) + (none) ) - (set! (-> self snowball entity) #f) - (let ((a0-2 (handle->process arg0))) - (if a0-2 - (set! (-> self snowball entity) (-> a0-2 entity)) - ) - ) - (reset-target-state #t) - (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control unknown-float01) 0.0) - (TODO-RENAME-28 (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) - (logior! (-> self control root-prim prim-core action) 4096) - (ja-channel-set! 1) - (let ((gp-1 (-> self skel root-channel 0))) - (joint-control-channel-group-eval! - gp-1 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-identity - ) - (set! (-> gp-1 frame-num) 0.0) - ) - (remove-exit) - (go target-snowball) - (none) - ) :post (the-as (function none :behavior target) target-post) ) @@ -141,16 +132,16 @@ (-> target-snowball-start exit) :code (behavior () - (while #t - (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (behavior () - (target-snowball-post) - (none) - ) + (target-snowball-post) + (none) + ) ) diff --git a/goal_src/levels/snow/yeti.gc b/goal_src/levels/snow/yeti.gc index 09a0b197e2..0af73ce634 100644 --- a/goal_src/levels/snow/yeti.gc +++ b/goal_src/levels/snow/yeti.gc @@ -246,7 +246,7 @@ (nav-enemy-neck-control-inactive) (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> self nav-info move-to-ground) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) ) (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) (set! (-> self state-timeout) 300) @@ -337,9 +337,15 @@ (defstate yeti-slave-show-anims (yeti-slave) :trans - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :code - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :post (the-as (function none :behavior yeti-slave) transform-post) ) @@ -350,8 +356,8 @@ (behavior () (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 7) ) (ja-channel-push! 1 45) @@ -461,8 +467,8 @@ (let ((f30-0 (nav-enemy-rnd-float-range 0.9 1.1))) (cond ((= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 11) ) (let ((a0-5 (-> self skel root-channel 0))) @@ -527,10 +533,9 @@ (behavior () (set! (-> self turn-time) 60) (let ((f30-0 (nav-enemy-rnd-float-range 0.8 1.2))) - (when (or - (logtest? (-> self nav-enemy-flags) 256) - (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) - ) + (when (or (logtest? (-> self nav-enemy-flags) 256) + (and (nav-enemy-player-vulnerable?) (nav-enemy-rnd-percent? 0.5)) + ) (ja-channel-push! 1 30) (let ((gp-0 (-> self skel root-channel 0))) (set! (-> gp-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 8))) @@ -574,11 +579,11 @@ (set! (-> self nav-enemy-flags) (logand -17 (-> self nav-enemy-flags))) ) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 2) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 2) + ) + ) (ja-channel-push! 1 60) ) (let ((a0-23 (-> self skel root-channel 0))) @@ -633,8 +638,8 @@ (s5-0 (target-pos 0)) ) (when (< (fabs - (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) - ) + (deg-diff (y-angle s4-0) (vector-y-angle (vector-! (new 'stack-no-clear 'vector) s5-0 (-> s4-0 trans)))) + ) 12743.111 ) (let ((a0-6 (-> self skel root-channel 0))) @@ -731,31 +736,31 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s4-0 s3-2) @@ -816,8 +821,8 @@ (let ((s5-0 (the-as (pointer process-tree) (-> obj child-process)))) (while s5-0 (if (< (vector-vector-xz-distance-squared arg0 (-> (the-as (pointer yeti-slave) s5-0) 0 collide-info trans)) - 603979800.0 - ) + 603979800.0 + ) (return #f) ) (set! s5-0 (-> s5-0 0 brother)) diff --git a/goal_src/levels/sunken/bully.gc b/goal_src/levels/sunken/bully.gc index 1a0c0e1e8d..0a5d756dfa 100644 --- a/goal_src/levels/sunken/bully.gc +++ b/goal_src/levels/sunken/bully.gc @@ -411,7 +411,7 @@ (set! (-> self bounced?) #t) (set! (-> self bounce-volume) 100) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-override) 2 0) + (dummy-54 (-> self root-override) 2 (collide-offense no-offense)) ) ) ) @@ -460,15 +460,13 @@ ) (defbehavior bully-post bully () - (when (and - (-> self hit-player?) - (or (not *target*) (and - (zero? (logand (-> *target* state-flags) #x80f8)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self hit-player-time))) 15) - ) - ) - ) - (dummy-54 (-> self root-override) 2 2) + (when (and (-> self hit-player?) + (or (not *target*) (and (zero? (logand (-> *target* state-flags) #x80f8)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self hit-player-time))) 15) + ) + ) + ) + (dummy-54 (-> self root-override) 2 (collide-offense normal-attack)) (set! (-> self hit-player?) #f) ) (transform-post) @@ -521,12 +519,11 @@ (vector-normalize-copy! (-> obj nav travel) (-> obj root-override transv) 2048.0) (let ((s5-3 (new 'stack 'clip-travel-vector-to-mesh-return-info))) (dummy-24 (-> obj nav) 2048.0 s5-3) - (when (and - (-> s5-3 found-boundary) - (>= (* (-> obj travel-speed) (-> *display* seconds-per-frame)) - (vector-vector-xz-distance (-> s5-3 intersection) (-> obj root-override trans)) - ) - ) + (when (and (-> s5-3 found-boundary) + (>= (* (-> obj travel-speed) (-> *display* seconds-per-frame)) + (vector-vector-xz-distance (-> s5-3 intersection) (-> obj root-override trans)) + ) + ) (let ((s4-1 (new 'stack-no-clear 'vector))) (vector-negate! s4-1 (-> s5-3 boundary-normal)) (set! (-> s4-1 y) 0.0) @@ -575,13 +572,12 @@ ) :trans (behavior () - (when (and - (and *target* (>= (-> self fact-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self reaction-delay))) - ) + (when (and (and *target* (>= (-> self fact-override idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self reaction-delay))) + ) (start-hint-timer (game-text-id sunken-bully-dive-hint)) (go bully-notice) ) @@ -600,12 +596,12 @@ ) (set! (-> gp-1 frame-num) (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -961,9 +957,9 @@ ) ) (if (or (not *target*) (< (-> self fact-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (go bully-idle #f) ) (go bully-start-spinning) @@ -1010,7 +1006,7 @@ ) ) (increment-success-for-hint (game-text-id sunken-bully-dive-hint)) - (logior! (-> self draw status) 2) + (logior! (-> self draw status) (draw-status drwf01)) (while (-> self child) (suspend) ) @@ -1044,25 +1040,25 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 404)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 2) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind cak-2 target crate enemy)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 404)) - (set! (-> s2-0 prim-core action) (the-as uint 3073)) - (set! (-> s2-0 prim-core offense) 2) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind cak-2 target crate enemy)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 6963.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 404)) - (set! (-> s2-1 prim-core action) (the-as uint 3073)) - (set! (-> s2-1 prim-core offense) 2) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind cak-2 target crate enemy)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 9420.8 0.0 4096.0) (append-prim s3-0 s2-1) ) @@ -1092,7 +1088,7 @@ (set! (-> v1-49 ignore-angle) 16384.0) ) (transform-post) - (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1))) + (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (collide-kind background))) (go process-drawable-art-error "no ground") ) (set! (-> obj facing-ry) (quaternion-y-angle (-> obj root-override quat))) diff --git a/goal_src/levels/sunken/double-lurker.gc b/goal_src/levels/sunken/double-lurker.gc index 605f47083c..89e84089c2 100644 --- a/goal_src/levels/sunken/double-lurker.gc +++ b/goal_src/levels/sunken/double-lurker.gc @@ -381,15 +381,14 @@ ((TODO-RENAME-46 self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase) ) - ((and - (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) - ) + ((and (and *target* (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status drwf03)) + ) (go-virtual nav-enemy-patrol) ) ) @@ -453,55 +452,55 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 10240.0 0.0 14336.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2662.4 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6758.4 0.0 4096.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core action) (collide-action solid)) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10854.4 0.0 4096.0) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 10) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 1228.8) (append-prim s4-0 s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core offense) 2) + (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-4 collide-with) (collide-kind target)) + (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 16) (set-vector! (-> s3-4 local-sphere) 0.0 0.0 0.0 1228.8) (append-prim s4-0 s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core offense) 2) + (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-5 collide-with) (collide-kind target)) + (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 5) (set-vector! (-> s3-5 local-sphere) 0.0 -2048.0 0.0 3276.8) (append-prim s4-0 s3-5) @@ -562,7 +561,7 @@ (set! (-> gp-2 frame-num) 0.0) ) (transform-post) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) (dummy-51 self) (go double-lurker-top-resume) ) @@ -587,10 +586,9 @@ (let ((s4-0 (new 'stack-no-clear 'vector))) (vector-! s4-0 (target-pos 0) (-> self collide-info trans)) (cond - ((and - (>= (-> s4-0 y) 8192.0) - (>= 14563.556 (fabs (deg- (quaternion-y-angle (-> self collide-info quat)) (atan (-> s4-0 x) (-> s4-0 z))))) - ) + ((and (>= (-> s4-0 y) 8192.0) + (>= 14563.556 (fabs (deg- (quaternion-y-angle (-> self collide-info quat)) (atan (-> s4-0 x) (-> s4-0 z))))) + ) (let ((a1-4 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-4 from) self) (set! (-> a1-4 num-params) 2) @@ -610,26 +608,25 @@ ) ) (else - (when (and - ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> (the-as target arg0) control) - (the-as uint 1) - (the-as uint 0) - ) - (let ((a1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-6 from) self) - (set! (-> a1-6 num-params) 2) - (set! (-> a1-6 message) 'shove) - (set! (-> a1-6 param 0) (-> arg3 param 0)) - (let ((v1-23 (new 'static 'attack-info :mask #xc0))) - (set! (-> v1-23 shove-up) 12288.0) - (set! (-> v1-23 shove-back) 8192.0) - (set! (-> a1-6 param 1) (the-as uint v1-23)) + (when (and ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> (the-as target arg0) control) + (collide-action solid) + (collide-action) ) - (send-event-function arg0 a1-6) - ) - ) + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) self) + (set! (-> a1-6 num-params) 2) + (set! (-> a1-6 message) 'shove) + (set! (-> a1-6 param 0) (-> arg3 param 0)) + (let ((v1-23 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-23 shove-up) 12288.0) + (set! (-> v1-23 shove-back) 8192.0) + (set! (-> a1-6 param 1) (the-as uint v1-23)) + ) + (send-event-function arg0 a1-6) + ) + ) (level-hint-spawn (game-text-id sunken-double-lurker-hint) "sksp0127" @@ -657,9 +654,15 @@ (defstate double-lurker-show-anims (double-lurker) :trans - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :code - (behavior () 0 (none)) + (behavior () + 0 + (none) + ) :post (the-as (function none :behavior double-lurker) transform-post) ) @@ -674,15 +677,14 @@ ((TODO-RENAME-46 self (-> self nav-info notice-distance)) (go-virtual nav-enemy-chase) ) - ((and - (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) - (nonzero? (-> self draw)) - (logtest? (-> self draw status) (draw-status drwf03)) - ) + ((and (and *target* (>= (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (-> self state-timeout)) + (nonzero? (-> self draw)) + (logtest? (-> self draw status) (draw-status drwf03)) + ) (go-virtual nav-enemy-patrol) ) ) @@ -782,7 +784,10 @@ (defstate double-lurker-both-knocked-back (double-lurker) :enter - (behavior () (set! (-> self knocked-back-speed) 40960.0) (none)) + (behavior () + (set! (-> self knocked-back-speed) 40960.0) + (none) + ) :trans (behavior () (local-vars (at-0 int)) @@ -947,7 +952,10 @@ (defstate double-lurker-knocked-back (double-lurker) :enter - (behavior () (set! (-> self knocked-back-speed) 40960.0) (none)) + (behavior () + (set! (-> self knocked-back-speed) 40960.0) + (none) + ) :trans (behavior () (local-vars (at-0 int)) @@ -1072,79 +1080,79 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 9) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 15564.8 0.0 3686.4) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 19660.8 0.0 3686.4) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 0) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense no-offense)) (set! (-> s3-2 transform-index) 5) (set-vector! (-> s3-2 local-sphere) 0.0 8192.0 -1024.0 3276.8) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core action) (the-as uint 1)) - (set! (-> s3-3 prim-core offense) 4) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core action) (collide-action solid)) + (set! (-> s3-3 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-3 local-sphere) 0.0 3276.8 0.0 3686.4) (append-prim s4-0 s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core action) (the-as uint 1)) - (set! (-> s3-4 prim-core offense) 4) + (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-4 collide-with) (collide-kind target)) + (set! (-> s3-4 prim-core action) (collide-action solid)) + (set! (-> s3-4 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-4 local-sphere) 0.0 7372.8 0.0 3686.4) (append-prim s4-0 s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core action) (the-as uint 1)) - (set! (-> s3-5 prim-core offense) 4) + (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-5 collide-with) (collide-kind target)) + (set! (-> s3-5 prim-core action) (collide-action solid)) + (set! (-> s3-5 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-5 local-sphere) 0.0 11468.8 0.0 3686.4) (append-prim s4-0 s3-5) ) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-6 collide-with) (the-as uint 16)) - (set! (-> s3-6 prim-core offense) 2) + (set! (-> s3-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-6 collide-with) (collide-kind target)) + (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 5) (set-vector! (-> s3-6 local-sphere) 0.0 -2048.0 -2048.0 3686.4) (append-prim s4-0 s3-6) ) (let ((s3-7 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-7 collide-with) (the-as uint 16)) - (set! (-> s3-7 prim-core offense) 2) + (set! (-> s3-7 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-7 collide-with) (collide-kind target)) + (set! (-> s3-7 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-7 transform-index) 10) (set-vector! (-> s3-7 local-sphere) 0.0 1024.0 0.0 1638.4) (append-prim s4-0 s3-7) ) (let ((s3-8 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-8 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-8 collide-with) (the-as uint 16)) - (set! (-> s3-8 prim-core offense) 2) + (set! (-> s3-8 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-8 collide-with) (collide-kind target)) + (set! (-> s3-8 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-8 transform-index) 16) (set-vector! (-> s3-8 local-sphere) 0.0 -1024.0 0.0 1638.4) (append-prim s4-0 s3-8) @@ -1162,10 +1170,10 @@ (let ((a0-1 0)) (dotimes (a1-0 3) (let ((a2-2 (-> (the-as collide-shape-prim-group v1-1) prims a0-1))) - (set! (-> a2-2 collide-with) (the-as uint 0)) - (set! (-> a2-2 prim-core collide-as) (the-as uint 0)) - (set! (-> a2-2 prim-core action) (the-as uint 0)) - (set! (-> a2-2 prim-core offense) 0) + (set! (-> a2-2 collide-with) (collide-kind)) + (set! (-> a2-2 prim-core collide-as) (collide-kind)) + (set! (-> a2-2 prim-core action) (collide-action)) + (set! (-> a2-2 prim-core offense) (collide-offense no-offense)) ) 0 (+! a0-1 1) @@ -1173,8 +1181,8 @@ ) (countdown (a0-4 (-> (the-as collide-shape-prim-group v1-1) num-prims)) (let ((a1-3 (-> (the-as collide-shape-prim-group v1-1) prims a0-4))) - (if (and (= (-> a1-3 prim-core offense) 4) (logtest? (-> a1-3 prim-id) 2)) - (set! (-> a1-3 prim-core offense) 1) + (if (and (= (-> a1-3 prim-core offense) (collide-offense indestructible)) (logtest? (-> a1-3 prim-id) 2)) + (set! (-> a1-3 prim-core offense) (collide-offense touch)) ) ) ) diff --git a/goal_src/levels/sunken/floating-launcher.gc b/goal_src/levels/sunken/floating-launcher.gc index e2b15ca304..2101d234dd 100644 --- a/goal_src/levels/sunken/floating-launcher.gc +++ b/goal_src/levels/sunken/floating-launcher.gc @@ -33,92 +33,68 @@ (defstate floating-launcher-idle (floating-launcher) :event - (the-as - (function process int symbol event-message-block object :behavior floating-launcher) - plat-event - ) + (the-as (function process int symbol event-message-block object :behavior floating-launcher) plat-event) :trans (behavior () - (plat-trans) - (when - (< - (vector-xz-length - (vector-! - (new 'stack-no-clear 'vector) - (target-pos 0) - (-> self root-override trans) - ) + (plat-trans) + (when (< (vector-xz-length (vector-! (new 'stack-no-clear 'vector) (target-pos 0) (-> self root-override trans))) + 81920.0 + ) + (if (and (>= (-> (target-pos 0) y) (-> self trigger-height)) (logtest? (-> *target* control status) 2)) + (go floating-launcher-lowering) + ) ) - 81920.0 - ) - (if - (and - (>= (-> (target-pos 0) y) (-> self trigger-height)) - (logtest? (-> *target* control status) 2) - ) - (go floating-launcher-lowering) - ) + (none) ) - (none) - ) :code (behavior () - (transform-post) - (suspend) - (transform-post) - (suspend) - (while #t + (transform-post) (suspend) + (transform-post) + (suspend) + (while #t + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior floating-launcher) plat-post) ) (defstate floating-launcher-lowering (floating-launcher) :event - (the-as - (function process int symbol event-message-block object :behavior floating-launcher) - plat-event - ) + (the-as (function process int symbol event-message-block object :behavior floating-launcher) plat-event) :trans (the-as (function none :behavior floating-launcher) plat-trans) :code (behavior () - (let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (if a0-1 - (entity-birth-no-kill a0-1) - ) - ) - (let ((f30-0 1.0)) - (while (!= f30-0 0.0) - (set! f30-0 (seek f30-0 0.0 (-> *display* seconds-per-frame))) - (eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp) - (set! - (-> self launcher 0 root-override trans quad) - (-> self basetrans quad) + (let ((a0-1 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (if a0-1 + (entity-birth-no-kill a0-1) + ) ) - (dummy-47 (-> self launcher 0 root-override)) - (suspend) - ) + (let ((f30-0 1.0)) + (while (!= f30-0 0.0) + (set! f30-0 (seek f30-0 0.0 (-> *display* seconds-per-frame))) + (eval-path-curve-div! (-> self path) (-> self basetrans) f30-0 'interp) + (set! (-> self launcher 0 root-override trans quad) (-> self basetrans quad)) + (dummy-47 (-> self launcher 0 root-override)) + (suspend) + ) + ) + (eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp) + (set! (-> self launcher 0 root-override trans quad) (-> self basetrans quad)) + (dummy-47 (-> self launcher 0 root-override)) + (go floating-launcher-ready) + (none) ) - (eval-path-curve-div! (-> self path) (-> self basetrans) 0.0 'interp) - (set! (-> self launcher 0 root-override trans quad) (-> self basetrans quad)) - (dummy-47 (-> self launcher 0 root-override)) - (go floating-launcher-ready) - (none) - ) :post (the-as (function none :behavior floating-launcher) plat-post) ) (defstate floating-launcher-ready (floating-launcher) :event - (the-as - (function process int symbol event-message-block object :behavior floating-launcher) - plat-event - ) + (the-as (function process int symbol event-message-block object :behavior floating-launcher) plat-event) :trans (the-as (function none :behavior floating-launcher) plat-trans) :code @@ -127,95 +103,48 @@ (the-as (function none :behavior floating-launcher) plat-post) ) -(defmethod - init-from-entity! - floating-launcher - ((obj floating-launcher) (arg0 entity-actor)) +(defmethod init-from-entity! floating-launcher ((obj floating-launcher) (arg0 entity-actor)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-0 transform-index) 0) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 0) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (set! (-> obj path) (new 'process 'path-control obj 'path 0.0)) - (logior! - (-> obj path flags) - (path-control-flag display draw-line draw-point draw-text) - ) + (logior! (-> obj path flags) (path-control-flag display draw-line draw-point draw-text)) (eval-path-curve-div! (-> obj path) (-> obj root-override trans) 1.0 'interp) (let ((f30-0 (res-lump-float arg0 'spring-height :default 163840.0)) (s4-1 (get-process *default-dead-pool* launcher #x4000)) ) - (set! (-> obj launcher) (the-as (pointer launcher) (when s4-1 - (let - ((t9-11 - (method-of-type - launcher - activate - ) - ) - ) - (t9-11 - (the-as launcher s4-1) - obj - 'launcher - (the-as - pointer - #x70004000 - ) - ) - ) - (run-now-in-process - s4-1 - launcher-init-by-other - (-> - obj - root-override - trans - ) - f30-0 - 0 - 81920.0 - ) - (-> s4-1 ppointer) - ) - ) + (set! (-> obj launcher) + (the-as + (pointer launcher) + (when s4-1 + (let ((t9-11 (method-of-type launcher activate))) + (t9-11 (the-as launcher s4-1) obj 'launcher (the-as pointer #x70004000)) + ) + (run-now-in-process s4-1 launcher-init-by-other (-> obj root-override trans) f30-0 0 81920.0) + (-> s4-1 ppointer) + ) + ) + ) ) - ) (initialize-skeleton obj *floating-launcher-sg* '()) (logior! (-> obj skel status) 1) (dummy-47 (-> obj root-override)) diff --git a/goal_src/levels/sunken/helix-water.gc b/goal_src/levels/sunken/helix-water.gc index 3b3615f315..547654ebc8 100644 --- a/goal_src/levels/sunken/helix-water.gc +++ b/goal_src/levels/sunken/helix-water.gc @@ -208,10 +208,10 @@ (defmethod init-from-entity! helix-slide-door ((obj helix-slide-door) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 53248.0) (set-root-prim! s4-0 s3-0) @@ -571,10 +571,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 14336.0 0.0 22118.4) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/sunken/orbit-plat.gc b/goal_src/levels/sunken/orbit-plat.gc index 41d0725498..ebe7d7c319 100644 --- a/goal_src/levels/sunken/orbit-plat.gc +++ b/goal_src/levels/sunken/orbit-plat.gc @@ -430,8 +430,7 @@ (cond (*target* (let ((s5-0 (target-pos 0))) - (if (or - (>= (vector-vector-xz-distance s5-0 (-> obj root-override trans)) 102400.0) + (if (or (>= (vector-vector-xz-distance s5-0 (-> obj root-override trans)) 102400.0) (>= (- (-> obj root-override trans y) (-> s5-0 y)) 16384.0) ) (return #t) @@ -624,12 +623,11 @@ (the-as symbol (cond - ((and - s5-0 - (< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128))) - (vector-vector-xz-distance (-> obj basetrans) (-> obj reset-trans)) + ((and s5-0 + (< (vector-vector-xz-distance (the-as vector (&-> s5-0 stack 96)) (the-as vector (&-> s5-0 stack 128))) + (vector-vector-xz-distance (-> obj basetrans) (-> obj reset-trans)) + ) ) - ) (cond ((-> (the-as orbit-plat s5-0) is-reset?) (when (!= (-> obj plat-status) 2) @@ -660,9 +658,9 @@ (a1-5 (-> obj other)) ) (set! (-> v1-9 quad) (-> (the-as orbit-plat (if a1-5 - (-> a1-5 extra process) - ) - ) + (-> a1-5 extra process) + ) + ) root-override trans quad @@ -701,9 +699,9 @@ (a0-19 (-> obj other)) ) (set! (-> v1-20 quad) (-> (the-as orbit-plat (if a0-19 - (-> a0-19 extra process) - ) - ) + (-> a0-19 extra process) + ) + ) root-override trans quad @@ -870,10 +868,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 13926.4) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/sunken/puffer.gc b/goal_src/levels/sunken/puffer.gc index 0cc06c70c9..e2dad1c84b 100644 --- a/goal_src/levels/sunken/puffer.gc +++ b/goal_src/levels/sunken/puffer.gc @@ -130,7 +130,7 @@ (when (send-event-function arg0 a1-9) (set! (-> self hit-player?) #t) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-override) 2 0) + (dummy-54 (-> self root-override) 2 (collide-offense no-offense)) ) ) ) @@ -140,15 +140,13 @@ ) (defbehavior puffer-post puffer () - (when (and - (-> self hit-player?) - (or (not *target*) (and - (zero? (logand (-> *target* state-flags) #x80f8)) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self hit-player-time))) 15) - ) - ) - ) - (dummy-54 (-> self root-override) 2 2) + (when (and (-> self hit-player?) + (or (not *target*) (and (zero? (logand (-> *target* state-flags) #x80f8)) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self hit-player-time))) 15) + ) + ) + ) + (dummy-54 (-> self root-override) 2 (collide-offense normal-attack)) (set! (-> self hit-player?) #f) ) (transform-post) @@ -199,10 +197,9 @@ ) (defmethod dummy-24 puffer ((obj puffer) (arg0 vector)) - (and - (dummy-25 (-> obj nav) arg0 11468.8) - (< (-> arg0 y) (+ (-> obj root-override trans y) (-> obj fact-info-override notice-top))) - ) + (and (dummy-25 (-> obj nav) arg0 11468.8) + (< (-> arg0 y) (+ (-> obj root-override trans y) (-> obj fact-info-override notice-top))) + ) ) (defmethod dummy-22 puffer ((obj puffer)) @@ -212,12 +209,11 @@ ) ) ) - (if (and - v1-0 - (>= 25395.2 - (vector-vector-xz-distance (-> obj root-override trans) (-> (the-as process-drawable v1-0) root trans)) - ) - ) + (if (and v1-0 + (>= 25395.2 + (vector-vector-xz-distance (-> obj root-override trans) (-> (the-as process-drawable v1-0) root trans)) + ) + ) (return #t) ) ) @@ -227,12 +223,11 @@ (defmethod dummy-25 puffer ((obj puffer) (arg0 float)) (when *target* (let ((gp-0 (target-pos 0))) - (when (and - (zero? (logand (-> *target* state-flags) #x80f8)) - (dummy-24 obj gp-0) - (>= (-> gp-0 y) (+ -14336.0 (-> obj attack-bottom-y))) - (>= (+ 2048.0 (-> obj top-y)) (-> gp-0 y)) - ) + (when (and (zero? (logand (-> *target* state-flags) #x80f8)) + (dummy-24 obj gp-0) + (>= (-> gp-0 y) (+ -14336.0 (-> obj attack-bottom-y))) + (>= (+ 2048.0 (-> obj top-y)) (-> gp-0 y)) + ) (let ((f30-0 (vector-vector-xz-distance gp-0 (-> obj root-override trans)))) (when (>= arg0 f30-0) (let* ((a0-4 (-> obj buddy)) @@ -510,14 +505,13 @@ :code (behavior () (while #t - (if (and - (and *target* (>= (-> self fact-info-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) - (logtest? (-> self draw status) (draw-status drwf03)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) - ) + (if (and (and *target* (>= (-> self fact-info-override idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (logtest? (-> self draw status) (draw-status drwf03)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + ) (go puffer-patrol) ) (dummy-26 self) @@ -547,14 +541,13 @@ ) :trans (behavior () - (if (and - (not (and *target* (>= (-> self fact-info-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 900) - ) + (if (and (not (and *target* (>= (-> self fact-info-override idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 900) + ) (go puffer-idle) ) (cond @@ -573,18 +566,16 @@ (set! (-> self pick-new-point-delay) (the-as uint (rand-vu-int-range 900 3000))) ) ) - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self reaction-delay))) - (dummy-25 self (-> self notice-dist)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the-as int (-> self reaction-delay))) + (dummy-25 self (-> self notice-dist)) + ) (go puffer-attack) ) - (when (or - (< (vector-vector-xz-distance (-> self root-override trans) (-> self dest-pos)) 8192.0) - (>= (- (-> *display* base-frame-counter) (the-as int (-> self picked-point-time))) - (the-as int (-> self pick-new-point-delay)) - ) - ) + (when (or (< (vector-vector-xz-distance (-> self root-override trans) (-> self dest-pos)) 8192.0) + (>= (- (-> *display* base-frame-counter) (the-as int (-> self picked-point-time))) + (the-as int (-> self pick-new-point-delay)) + ) + ) (when (dummy-23 self #f) (set! (-> self picked-point-time) (the-as uint (-> *display* base-frame-counter))) (set! (-> self pick-new-point-delay) (the-as uint (rand-vu-int-range 900 3000))) @@ -723,30 +714,30 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 6144.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 5) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set! (-> s3-2 transform-index) 9) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 3072.0) (append-prim s4-0 s3-2) @@ -814,8 +805,8 @@ ((< f30-0 0.5) (cond ((= (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) + (-> obj skel root-channel 0 frame-group) + ) (-> obj draw art-group data 9) ) (cond @@ -856,8 +847,8 @@ ) ) ((= (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) + (-> obj skel root-channel 0 frame-group) + ) (-> obj draw art-group data 11) ) (cond @@ -898,8 +889,8 @@ ) ) ((= (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) + (-> obj skel root-channel 0 frame-group) + ) (-> obj draw art-group data 14) ) (cond @@ -961,8 +952,8 @@ ) ) ((= (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) + (-> obj skel root-channel 0 frame-group) + ) (-> obj draw art-group data 10) ) (cond @@ -1003,8 +994,8 @@ ) ) ((= (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) + (-> obj skel root-channel 0 frame-group) + ) (-> obj draw art-group data 12) ) (cond @@ -1045,8 +1036,8 @@ ) ) ((= (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) + (-> obj skel root-channel 0 frame-group) + ) (-> obj draw art-group data 13) ) (cond diff --git a/goal_src/levels/sunken/qbert-plat.gc b/goal_src/levels/sunken/qbert-plat.gc index 424ab14b0f..68aaf80799 100644 --- a/goal_src/levels/sunken/qbert-plat.gc +++ b/goal_src/levels/sunken/qbert-plat.gc @@ -110,12 +110,13 @@ (defstate qbert-plat-on-mimic (qbert-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('die) - (go qbert-plat-on-die) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('die) + (go qbert-plat-on-die) + ) + ) + ) :code (behavior () (set-vector! (-> self draw color-emissive) 0.0 0.0 1.0 0.0) @@ -142,7 +143,10 @@ (defstate qbert-plat-on-die (qbert-plat) :code - (behavior () '() (none)) + (behavior () + '() + (none) + ) ) (defbehavior qbert-plat-on-init-by-other qbert-plat ((arg0 entity) (arg1 qbert-plat)) @@ -332,10 +336,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/sunken/shover.gc b/goal_src/levels/sunken/shover.gc index a7cc089045..e5c6eca7df 100644 --- a/goal_src/levels/sunken/shover.gc +++ b/goal_src/levels/sunken/shover.gc @@ -35,75 +35,67 @@ (defstate shover-idle (shover) :event (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) - (case arg2 - (('touch 'attack) - (when (= (-> arg0 type) target) - (when - ((method-of-type touching-shapes-entry prims-touching-action?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (-> *target* control) - (the-as uint 1) - (the-as uint 0) - ) - (let ((s4-0 (new 'stack 'attack-info))) - (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) - (level-hint-spawn - (game-text-id sunken-take-it-easy-hot-pipes) - "sksp0134" - (the-as entity #f) - *entity-pool* - (game-task none) - ) - (cond - ((or - (= (-> *target* control unknown-surface00 mode) 'air) - (>= - (+ (-> *display* base-frame-counter) -60) - (-> *target* control unknown-dword11) + (case arg2 + (('touch 'attack) + (when (= (-> arg0 type) target) + (when ((method-of-type touching-shapes-entry prims-touching-action?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (-> *target* control) + (collide-action solid) + (collide-action) + ) + (let ((s4-0 (new 'stack 'attack-info))) + (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) + (level-hint-spawn + (game-text-id sunken-take-it-easy-hot-pipes) + "sksp0134" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + (cond + ((or (= (-> *target* control unknown-surface00 mode) 'air) + (>= (+ (-> *display* base-frame-counter) -60) (-> *target* control unknown-dword11)) + (< 0.75 (-> *target* control poly-normal y)) + ) + (let ((a1-6 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-6 from) self) + (set! (-> a1-6 num-params) 2) + (set! (-> a1-6 message) 'attack-or-shove) + (set! (-> a1-6 param 0) (-> arg3 param 0)) + (let ((v1-22 (new 'static 'attack-info :mask #xa2))) + (set! (-> v1-22 mode) 'burn) + (set! (-> v1-22 vector quad) (-> s4-0 vector quad)) + (set! (-> v1-22 shove-up) (-> s4-0 shove-up)) + (set! (-> a1-6 param 1) (the-as uint v1-22)) + ) + (send-event-function arg0 a1-6) + ) + ) + (else + (let ((a1-7 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-7 from) self) + (set! (-> a1-7 num-params) 2) + (set! (-> a1-7 message) 'attack-or-shove) + (set! (-> a1-7 param 0) (-> arg3 param 0)) + (let ((v1-26 (new 'static 'attack-info :mask #x8e2))) + (set! (-> v1-26 mode) 'burn) + (set! (-> v1-26 shove-up) 0.0) + (set! (-> v1-26 shove-back) 8192.0) + (set! (-> v1-26 vector quad) (-> *target* control poly-normal quad)) + (set! (-> v1-26 angle) 'shove) + (set! (-> a1-7 param 1) (the-as uint v1-26)) + ) + (send-event-function arg0 a1-7) + ) + ) + ) ) - (< 0.75 (-> *target* control poly-normal y)) - ) - (let ((a1-6 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-6 from) self) - (set! (-> a1-6 num-params) 2) - (set! (-> a1-6 message) 'attack-or-shove) - (set! (-> a1-6 param 0) (-> arg3 param 0)) - (let ((v1-22 (new 'static 'attack-info :mask #xa2))) - (set! (-> v1-22 mode) 'burn) - (set! (-> v1-22 vector quad) (-> s4-0 vector quad)) - (set! (-> v1-22 shove-up) (-> s4-0 shove-up)) - (set! (-> a1-6 param 1) (the-as uint v1-22)) - ) - (send-event-function arg0 a1-6) - ) ) - (else - (let ((a1-7 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-7 from) self) - (set! (-> a1-7 num-params) 2) - (set! (-> a1-7 message) 'attack-or-shove) - (set! (-> a1-7 param 0) (-> arg3 param 0)) - (let ((v1-26 (new 'static 'attack-info :mask #x8e2))) - (set! (-> v1-26 mode) 'burn) - (set! (-> v1-26 shove-up) 0.0) - (set! (-> v1-26 shove-back) 8192.0) - (set! - (-> v1-26 vector quad) - (-> *target* control poly-normal quad) - ) - (set! (-> v1-26 angle) 'shove) - (set! (-> a1-7 param 1) (the-as uint v1-26)) - ) - (send-event-function arg0 a1-7) - ) - ) - ) ) - ) ) ) ) - ) :code (the-as (function none :behavior shover) anim-loop) ) @@ -112,75 +104,52 @@ (local-vars (sv-16 res-tag)) (set! (-> obj shove-up) (res-lump-float arg0 'shove :default 12288.0)) (let ((s3-0 (res-lump-value arg0 'collision-mesh-id uint128)) - (s4-0 - (new 'process 'collide-shape obj (collide-list-enum hit-by-player)) - ) + (s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))) ) - (let - ((s3-1 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint s3-0) - (the-as uint 0) - ) + (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint s3-0) (the-as uint 0)))) + (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-1 transform-index) 0) + (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) + (set-root-prim! s4-0 s3-1) ) - ) - (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) - (set! (-> s3-1 transform-index) 0) - (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) - (set-root-prim! s4-0 s3-1) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *shover-sg* '()) (let ((v1-17 (new 'process 'path-control obj 'path 0.0))) - (set! (-> obj path) v1-17) - (logior! - (-> v1-17 flags) - (path-control-flag display draw-line draw-point draw-text) + (set! (-> obj path) v1-17) + (logior! (-> v1-17 flags) (path-control-flag display draw-line draw-point draw-text)) + (if (<= (-> v1-17 curve num-cverts) 0) + (go process-drawable-art-error "no path") + ) ) - (if (<= (-> v1-17 curve num-cverts) 0) - (go process-drawable-art-error "no path") - ) - ) (set! sv-16 (new 'static 'res-tag)) - (let - ((v1-23 - (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)) - ) + (let ((v1-23 (res-lump-data arg0 'trans-offset (pointer float) :tag-ptr (& sv-16)))) + (when v1-23 + (+! (-> obj root-override trans x) (-> v1-23 0)) + (+! (-> obj root-override trans y) (-> v1-23 1)) + (+! (-> obj root-override trans z) (-> v1-23 2)) + ) ) - (when v1-23 - (+! (-> obj root-override trans x) (-> v1-23 0)) - (+! (-> obj root-override trans y) (-> v1-23 1)) - (+! (-> obj root-override trans z) (-> v1-23 2)) - ) - ) (let ((f0-13 (res-lump-float arg0 'rotoffset))) - (if (!= f0-13 0.0) - (quaternion-rotate-y! - (-> obj root-override quat) - (-> obj root-override quat) - f0-13 - ) + (if (!= f0-13 0.0) + (quaternion-rotate-y! (-> obj root-override quat) (-> obj root-override quat) f0-13) + ) ) - ) (ja-channel-set! 1) (let ((s5-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> obj draw art-group data 2)) - num-func-identity + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) ) - (set! (-> s5-1 frame-num) 0.0) - ) (ja-post) (dummy-47 (-> obj root-override)) (set! *shover* obj) diff --git a/goal_src/levels/sunken/square-platform.gc b/goal_src/levels/sunken/square-platform.gc index e4d0188022..4519c1c527 100644 --- a/goal_src/levels/sunken/square-platform.gc +++ b/goal_src/levels/sunken/square-platform.gc @@ -303,10 +303,9 @@ (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 (('trigger) - (if (and - (= (-> arg0 type) square-platform-master) - (= (-> (the-as square-platform-master arg0) plat-id) (-> self plat-id)) - ) + (if (and (= (-> arg0 type) square-platform-master) + (= (-> (the-as square-platform-master arg0) plat-id) (-> self plat-id)) + ) (go square-platform-rising) ) ) @@ -339,7 +338,12 @@ ) ) :enter - (behavior () (set! (-> self start-splash-time) (the-as uint 0)) (set! (-> self splash-counter) 0) 0 (none)) + (behavior () + (set! (-> self start-splash-time) (the-as uint 0)) + (set! (-> self splash-counter) 0) + 0 + (none) + ) :trans (behavior () (set! (-> self pos-u) @@ -416,7 +420,12 @@ ) ) :enter - (behavior () (set! (-> self start-splash-time) (the-as uint 0)) (set! (-> self splash-counter) 0) 0 (none)) + (behavior () + (set! (-> self start-splash-time) (the-as uint 0)) + (set! (-> self splash-counter) 0) + 0 + (none) + ) :trans (behavior () (set! (-> self pos-u) @@ -484,10 +493,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0) (set-root-prim! s4-0 s3-0) @@ -559,7 +568,12 @@ ) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defstate square-platform-master-activate (square-platform-master) @@ -576,48 +590,46 @@ (cond ((zero? v1-7) (let* ((s5-0 (get-process *default-dead-pool* sunkencam #x4000)) - (a0-4 - (when s5-0 - (let ((t9-3 (method-of-type sunkencam activate))) - (t9-3 (the-as sunkencam s5-0) self 'sunkencam (the-as pointer #x70004000)) + (a0-4 (when s5-0 + (let ((t9-3 (method-of-type sunkencam activate))) + (t9-3 (the-as sunkencam s5-0) self 'sunkencam (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + ) + (-> s5-0 ppointer) + ) ) - (run-now-in-process - s5-0 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> s5-0 ppointer) - ) - ) ) (set! (-> (the-as sunkencam (-> a0-4 0)) seq) (the-as uint 3)) ) ) ((= v1-7 1) (let* ((gp-1 (get-process *default-dead-pool* sunkencam #x4000)) - (v1-13 - (when gp-1 - (let ((t9-6 (method-of-type sunkencam activate))) - (t9-6 (the-as sunkencam gp-1) self 'sunkencam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-1 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> gp-1 ppointer) - ) - ) + (v1-13 (when gp-1 + (let ((t9-6 (method-of-type sunkencam activate))) + (t9-6 (the-as sunkencam gp-1) self 'sunkencam (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-1 + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + ) + (-> gp-1 ppointer) + ) + ) ) (set! (-> (the-as sunkencam (-> v1-13 0)) seq) (the-as uint 4)) ) @@ -625,48 +637,46 @@ ) ((= v1-7 2) (let* ((s5-1 (get-process *default-dead-pool* sunkencam #x4000)) - (a0-17 - (when s5-1 - (let ((t9-9 (method-of-type sunkencam activate))) - (t9-9 (the-as sunkencam s5-1) self 'sunkencam (the-as pointer #x70004000)) - ) - (run-now-in-process - s5-1 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> s5-1 ppointer) - ) - ) + (a0-17 (when s5-1 + (let ((t9-9 (method-of-type sunkencam activate))) + (t9-9 (the-as sunkencam s5-1) self 'sunkencam (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-1 + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + ) + (-> s5-1 ppointer) + ) + ) ) (set! (-> (the-as sunkencam (-> a0-17 0)) seq) (the-as uint 5)) ) ) ((= v1-7 3) (let* ((gp-2 (get-process *default-dead-pool* sunkencam #x4000)) - (v1-24 - (when gp-2 - (let ((t9-12 (method-of-type sunkencam activate))) - (t9-12 (the-as sunkencam gp-2) self 'sunkencam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-2 - pov-camera-init-by-other - (-> self root trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> gp-2 ppointer) - ) - ) + (v1-24 (when gp-2 + (let ((t9-12 (method-of-type sunkencam activate))) + (t9-12 (the-as sunkencam gp-2) self 'sunkencam (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-2 + pov-camera-init-by-other + (-> self root trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + ) + (-> gp-2 ppointer) + ) + ) ) (set! (-> (the-as sunkencam (-> v1-24 0)) seq) (the-as uint 6)) ) @@ -730,7 +740,12 @@ (none) ) :code - (behavior () (logior! (-> self mask) (process-mask sleep-code)) (suspend) 0 (none)) + (behavior () + (logior! (-> self mask) (process-mask sleep-code)) + (suspend) + 0 + (none) + ) ) (defmethod init-from-entity! square-platform-master ((obj square-platform-master) (arg0 entity-actor)) diff --git a/goal_src/levels/sunken/steam-cap.gc b/goal_src/levels/sunken/steam-cap.gc index d345caa0a1..df67bfe1ad 100644 --- a/goal_src/levels/sunken/steam-cap.gc +++ b/goal_src/levels/sunken/steam-cap.gc @@ -45,488 +45,443 @@ ) -(set! - (-> *part-group-id-table* 441) - (new 'static 'sparticle-launch-group - :length 7 - :duration #xbb8 - :linger-duration #x5dc - :name "group-steam-cap-sides" - :launcher - (new 'static 'inline-array sparticle-group-item 7 - (sp-item 1718 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75) - (sp-item 1719 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 60) - (sp-item 1720 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 120) - (sp-item 1721 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75) - (sp-item 1722 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 60) - (sp-item 1723 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 120) - (sp-item 1724 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 180 :length 75 :offset 120) - ) - :bounds (new 'static 'sphere :w 40960.0) - ) - ) +(set! (-> *part-group-id-table* 441) + (new 'static 'sparticle-launch-group + :length 7 + :duration #xbb8 + :linger-duration #x5dc + :name "group-steam-cap-sides" + :launcher + (new 'static 'inline-array sparticle-group-item 7 + (sp-item 1718 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75) + (sp-item 1719 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 60) + (sp-item 1720 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 120) + (sp-item 1721 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75) + (sp-item 1722 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 60) + (sp-item 1723 :fade-after (meters 100.0) :falloff-to (meters 160.0) :period 180 :length 75 :offset 120) + (sp-item 1724 :fade-after (meters 60.0) :falloff-to (meters 60.0) :period 180 :length 75 :offset 120) + ) + :bounds (new 'static 'sphere :w 40960.0) + ) + ) -(set! - (-> *part-id-table* 1724) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-flt spt-num 1.0) - (sp-int spt-rot-x 5) - (sp-flt spt-r 4096.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1725) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1724) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-flt spt-num 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 4096.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1725) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1725) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-b -2.7306666) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1725) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-b -2.7306666) (sp-end)) + ) + ) -(set! - (-> *part-id-table* 1718) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.01)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.10666667) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1726) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1718) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.10666667) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1726) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1721) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.01)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.10666667) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1726) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1721) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.10666667) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1726) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1719) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.01)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.10666667) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1726) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1719) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.10666667) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1726) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1722) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.01)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.10666667) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1726) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1722) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.10666667) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1726) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 120.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1720) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.01)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.10666667) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1726) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1720) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.10666667) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1726) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1723) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 25 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.0 2.0 1.0) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 0.0 16.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-scalevel-x (meters 0.01)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-fade-a 0.10666667) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1726) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1723) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.0 2.0 1.0) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 0.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-scalevel-x (meters 0.01)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.10666667) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1726) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 240.0) (degrees 120.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1726) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.21333334) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1726) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end)) + ) + ) -(set! - (-> *part-group-id-table* 442) - (new 'static 'sparticle-launch-group - :length 4 - :duration #xbb8 - :linger-duration #x5dc - :name "group-steam-cap-plume" - :launcher - (new 'static 'inline-array sparticle-group-item 4 - (sp-item 1727 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1728 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1729 :fade-after (meters 60.0) :falloff-to (meters 60.0)) - (sp-item 1730 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead)) - ) - :bounds (new 'static 'sphere :w 131072.0) - ) - ) +(set! (-> *part-group-id-table* 442) + (new 'static 'sparticle-launch-group + :length 4 + :duration #xbb8 + :linger-duration #x5dc + :name "group-steam-cap-plume" + :launcher + (new 'static 'inline-array sparticle-group-item 4 + (sp-item 1727 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1728 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1729 :fade-after (meters 60.0) :falloff-to (meters 60.0)) + (sp-item 1730 :fade-after (meters 60.0) :falloff-to (meters 60.0) :flags (start-dead)) + ) + :bounds (new 'static 'sphere :w 131072.0) + ) + ) -(set! - (-> *part-group-id-table* 443) - (new 'static 'sparticle-launch-group - :length 2 - :duration #xbb8 - :linger-duration #x5dc - :name "group-steam-cap-plume-spread" - :launcher - (new 'static 'inline-array sparticle-group-item 2 - (sp-item 1731 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - (sp-item 1732 :fade-after (meters 120.0) :falloff-to (meters 160.0)) - ) - :bounds (new 'static 'sphere :w 131072.0) - ) - ) +(set! (-> *part-group-id-table* 443) (new 'static 'sparticle-launch-group + :length 2 + :duration #xbb8 + :linger-duration #x5dc + :name "group-steam-cap-plume-spread" + :launcher + (new 'static 'inline-array sparticle-group-item 2 + (sp-item 1731 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + (sp-item 1732 :fade-after (meters 120.0) :falloff-to (meters 160.0)) + ) + :bounds (new 'static 'sphere :w 131072.0) + ) + ) -(set! - (-> *part-id-table* 1730) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 16 - (sp-flt spt-num 0.4) - (sp-int spt-rot-x 5) - (sp-flt spt-r 6144.0) - (sp-flt spt-g 2867.2) - (sp-flt spt-b 3276.8) - (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.94 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags aux-list) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1725) - (sp-flt spt-conerot-x (degrees 90.0)) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 2.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1730) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (sp-flt spt-num 0.4) + (sp-int spt-rot-x 5) + (sp-flt spt-r 6144.0) + (sp-flt spt-g 2867.2) + (sp-flt spt-b 3276.8) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.94 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags aux-list) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1725) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1732) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 0.5) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.013333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2 bit3) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1735) - (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1732) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1735) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1731) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 24 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 0.5) - (sp-flt spt-y (meters -0.5)) - (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 32.0 1.0) - (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) - (sp-flt spt-scalevel-x (meters 0.013333334)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-copy-from-other spt-scalevel-y -4) - (sp-flt spt-accel-y 0.13653333) - (sp-rnd-flt spt-friction 0.92 0.02 1.0) - (sp-int spt-timer 300) - (sp-cpuinfo-flags bit2) - (sp-int spt-next-time 150) - (sp-launcher-by-id spt-next-launcher 1735) - (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-flt spt-conerot-radius (meters 0.5)) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1731) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 0.5) + (sp-flt spt-y (meters -0.5)) + (sp-rnd-flt spt-scale-x (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.026666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.013333334)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-accel-y 0.13653333) + (sp-rnd-flt spt-friction 0.92 0.02 1.0) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 1735) + (sp-rnd-flt spt-conerot-x (degrees 90.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 0.5)) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1735) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a -0.32) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1735) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.32) (sp-end)) + ) + ) -(set! - (-> *part-id-table* 1727) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 19 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 16.0 16.0 1.0) - (sp-flt spt-vel-y (meters 0.053333335)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-flt spt-accel-y 2.7306666) - (sp-int spt-timer 153) - (sp-cpuinfo-flags bit2) - (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1727) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 19 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 1.0) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-flt spt-vel-y (meters 0.053333335)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-accel-y 2.7306666) + (sp-int spt-timer 153) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 15.0) 1.0) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1728) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 18 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-rnd-flt spt-num 0.5 0.5 1.0) - (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) - (sp-flt spt-y (meters -1.0)) - (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) - (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 128.0) - (sp-flt spt-g 128.0) - (sp-flt spt-b 128.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-flt spt-vel-y (meters 0.053333335)) - (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) - (sp-flt spt-accel-y 2.7306666) - (sp-int spt-timer 153) - (sp-cpuinfo-flags bit2 bit3) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1728) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 18 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-rnd-flt spt-num 0.5 0.5 1.0) + (sp-rnd-flt spt-x (meters 0.0) (meters 0.5) 1.0) + (sp-flt spt-y (meters -1.0)) + (sp-rnd-flt spt-scale-x (meters 2.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 128.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 128.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-vel-y (meters 0.053333335)) + (sp-rnd-flt spt-rotvel-z (degrees -0.2) (degrees 0.4) 1.0) + (sp-flt spt-accel-y 2.7306666) + (sp-int spt-timer 153) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1729) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 11 - (sp-flt spt-num 0.5) - (sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0) - (sp-int spt-rot-x 5) - (sp-flt spt-r 6144.0) - (sp-flt spt-g 2457.6) - (sp-flt spt-b 3276.8) - (sp-flt spt-vel-y (meters 0.053333335)) - (sp-int spt-timer 153) - (sp-cpuinfo-flags aux-list) - (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1729) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 11 + (sp-flt spt-num 0.5) + (sp-rnd-flt spt-x (meters 0.5) (meters 0.5) 1.0) + (sp-int spt-rot-x 5) + (sp-flt spt-r 6144.0) + (sp-flt spt-g 2457.6) + (sp-flt spt-b 3276.8) + (sp-flt spt-vel-y (meters 0.053333335)) + (sp-int spt-timer 153) + (sp-cpuinfo-flags aux-list) + (sp-rnd-flt spt-rotate-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) (defskelgroup *steam-cap-sg* steam-cap 0 @@ -538,54 +493,49 @@ (defmethod dummy-20 steam-cap ((obj steam-cap)) (with-pp - (when *target* - (let* ((a1-0 (target-pos 0)) - (f0-0 (-> a1-0 y)) - ) - (when - (and - (>= f0-0 (+ -8192.0 (-> obj down y))) - (and - (>= (+ -4096.0 (-> obj root-override trans y)) f0-0) - (zero? (-> obj root-override riders num-riders)) - ) - ) - (let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0))) - (when (>= 104857600.0 f0-1) - (let ((s5-0 (>= 37748736.0 f0-1))) - (when (not s5-0) - (when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0) - (let ((a1-1 (new 'stack-no-clear 'vector))) - (set! (-> a1-1 x) (the-as float 1)) - (set! (-> a1-1 y) (the-as float #f)) - (if (dummy-40 (-> obj root-override) a1-1) - (set! s5-0 #t) + (when *target* + (let* ((a1-0 (target-pos 0)) + (f0-0 (-> a1-0 y)) ) + (when (and (>= f0-0 (+ -8192.0 (-> obj down y))) + (and (>= (+ -4096.0 (-> obj root-override trans y)) f0-0) (zero? (-> obj root-override riders num-riders))) + ) + (let ((f0-1 (vector-vector-xz-distance-squared (-> obj down) a1-0))) + (when (>= 104857600.0 f0-1) + (let ((s5-0 (>= 37748736.0 f0-1))) + (when (not s5-0) + (when (>= (- (-> obj root-override trans y) (-> obj down y)) 3072.0) + (let ((a1-1 (new 'stack-no-clear 'vector))) + (set! (-> a1-1 x) (the-as float 1)) + (set! (-> a1-1 y) (the-as float #f)) + (if (dummy-40 (-> obj root-override) a1-1) + (set! s5-0 #t) + ) + ) + ) + ) + (when s5-0 + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) pp) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'shove) + (set! (-> a1-2 param 0) (the-as uint #f)) + (let ((v1-16 (new 'static 'attack-info :mask #xc0))) + (set! (-> v1-16 shove-up) 2048.0) + (set! (-> v1-16 shove-back) 6144.0) + (set! (-> a1-2 param 1) (the-as uint v1-16)) + ) + (send-event-function *target* a1-2) + ) + ) + ) + ) ) - ) ) - (when s5-0 - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) pp) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'shove) - (set! (-> a1-2 param 0) (the-as uint #f)) - (let ((v1-16 (new 'static 'attack-info :mask #xc0))) - (set! (-> v1-16 shove-up) 2048.0) - (set! (-> v1-16 shove-back) 6144.0) - (set! (-> a1-2 param 1) (the-as uint v1-16)) - ) - (send-event-function *target* a1-2) - ) - ) - ) ) - ) ) - ) + (none) ) - (none) - ) ) (defmethod dummy-21 steam-cap ((obj steam-cap)) @@ -594,238 +544,185 @@ (vf1 :class vf) (vf2 :class vf) ) - (init-vf0-vector) - (let ((f0-0 (get-current-phase (-> obj sync)))) - #t - (cond - ((< f0-0 (-> obj begin-travel-up)) - (let ((f30-0 (/ f0-0 (-> obj begin-travel-up)))) - (set! s5-0 #t) - (dotimes (s4-0 3) - (let ((s3-0 (-> obj control-pt s4-0))) - (when (= (-> s3-0 trans y) (-> obj down y)) - (set! (-> obj do-burst?) #t) - (let ((a0-2 (+ (the int (* 60.0 (- 1.0 f30-0))) 3))) - (if (zero? (rand-vu-int-count a0-2)) - (+! - (-> s3-0 transv y) - (* (rand-vu-float-range 40960.0 57344.0) f30-0) + (init-vf0-vector) + (let ((f0-0 (get-current-phase (-> obj sync)))) + #t + (cond + ((< f0-0 (-> obj begin-travel-up)) + (let ((f30-0 (/ f0-0 (-> obj begin-travel-up)))) + (set! s5-0 #t) + (dotimes (s4-0 3) + (let ((s3-0 (-> obj control-pt s4-0))) + (when (= (-> s3-0 trans y) (-> obj down y)) + (set! (-> obj do-burst?) #t) + (let ((a0-2 (+ (the int (* 60.0 (- 1.0 f30-0))) 3))) + (if (zero? (rand-vu-int-count a0-2)) + (+! (-> s3-0 transv y) (* (rand-vu-float-range 40960.0 57344.0) f30-0)) + ) + ) + ) + ) + ) + (let ((a0-4 (+ (the int (* 60.0 (- 1.0 f30-0))) 1))) + (if (zero? (rand-vu-int-count a0-4)) + (spawn (-> obj part) (-> obj down)) + ) ) - ) ) - ) ) - ) - (let ((a0-4 (+ (the int (* 60.0 (- 1.0 f30-0))) 1))) - (if (zero? (rand-vu-int-count a0-4)) - (spawn (-> obj part) (-> obj down)) - ) - ) - ) - ) - ((< f0-0 (-> obj begin-travel-down)) - (let - ((f30-1 - (/ - (- f0-0 (-> obj begin-travel-up)) - (- (-> obj begin-travel-down) (-> obj begin-travel-up)) - ) - ) - ) - (set! s5-0 #f) - (set! (-> obj do-falling-sound?) #t) - (when (-> obj do-burst?) - (sound-play-by-name - (static-sound-name "sunk-top-rises") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - (set! (-> obj do-burst?) #f) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - (spawn (-> obj part) (-> obj down)) - ) - (when (< f30-1 0.94) - (spawn (-> obj part2) (-> obj down)) - (let ((a1-8 (new 'stack-no-clear 'vector))) - (set! (-> a1-8 quad) (-> obj root-override trans quad)) - (set! (-> a1-8 y) (+ -3072.0 (-> a1-8 y))) - (spawn (-> obj part3) a1-8) - ) - ) - ) - ) - (else - (set! s5-0 #t) - (when (-> obj do-falling-sound?) - (set! (-> obj do-falling-sound?) #f) - (sound-play-by-name - (static-sound-name "sunk-top-falls") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - ) - ) - ) - (dotimes (s4-3 3) - (let ((s2-0 (-> obj control-pt s4-3)) - (s3-3 (new 'stack-no-clear 'vector)) - ) - (set! (-> s3-3 quad) (-> s2-0 trans quad)) - (cond - (s5-0 - (+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame))) - (let ((a1-10 s3-3) - (v1-42 s3-3) - (a0-21 (new 'stack-no-clear 'vector)) + ((< f0-0 (-> obj begin-travel-down)) + (let ((f30-1 (/ (- f0-0 (-> obj begin-travel-up)) (- (-> obj begin-travel-down) (-> obj begin-travel-up))))) + (set! s5-0 #f) + (set! (-> obj do-falling-sound?) #t) + (when (-> obj do-burst?) + (sound-play-by-name (static-sound-name "sunk-top-rises") (new-sound-id) 1024 0 0 1 #t) + (set! (-> obj do-burst?) #f) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) + (spawn (-> obj part) (-> obj down)) ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f0-17 (-> *display* seconds-per-frame))) - (.mov at-0 f0-17) - ) - (.mov vf2 at-0) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-21 quad) vf1) - (vector+! a1-10 v1-42 a0-21) - ) - (when (< (-> s3-3 y) (-> obj down y)) - (when (-> obj do-landing-sound?) - (set! (-> obj do-landing-sound?) #f) - (sound-play-by-name - (static-sound-name "sunk-top-lands") - (new-sound-id) - 1024 - 0 - 0 - 1 - #t - ) - ) - (set! (-> s3-3 y) (-> obj down y)) - (let ((f0-20 (-> s2-0 transv y))) - (when (< f0-20 0.0) - (let ((f0-22 (* 0.3 (- f0-20)))) - (set! (-> s2-0 transv y) f0-22) - (if (< 7782.4 f0-22) - (sound-play-by-name - (static-sound-name "sunk-top-lands") - (new-sound-id) - 614 - 0 - 0 - 1 - #t + (when (< f30-1 0.94) + (spawn (-> obj part2) (-> obj down)) + (let ((a1-8 (new 'stack-no-clear 'vector))) + (set! (-> a1-8 quad) (-> obj root-override trans quad)) + (set! (-> a1-8 y) (+ -3072.0 (-> a1-8 y))) + (spawn (-> obj part3) a1-8) + ) ) - ) ) - ) ) + (else + (set! s5-0 #t) + (when (-> obj do-falling-sound?) + (set! (-> obj do-falling-sound?) #f) + (sound-play-by-name (static-sound-name "sunk-top-falls") (new-sound-id) 1024 0 0 1 #t) + ) + ) ) - ) - (else - (set! (-> obj do-landing-sound?) #t) - (let ((f0-24 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y))))) + ) + (dotimes (s4-3 3) + (let ((s2-0 (-> obj control-pt s4-3)) + (s3-3 (new 'stack-no-clear 'vector)) + ) + (set! (-> s3-3 quad) (-> s2-0 trans quad)) (cond - ((< 1.0 f0-24) - (set! f0-24 1.0) - ) - ((< f0-24 -1.0) - (set! f0-24 -1.0) - ) - ) - (+! - (-> s2-0 transv y) - (* 819200.0 (-> *display* seconds-per-frame) f0-24) - ) - (let ((f1-24 (-> s2-0 transv y))) - (when (< 122880.0 (fabs f1-24)) - (if (>= f1-24 0.0) - (set! (-> s2-0 transv y) 122880.0) - (set! (-> s2-0 transv y) -122880.0) - ) - ) - ) - (let ((a1-14 s3-3) - (v1-61 s3-3) - (a0-26 (new 'stack-no-clear 'vector)) + (s5-0 + (+! (-> s2-0 transv y) (* -819200.0 (-> *display* seconds-per-frame))) + (let ((a1-10 s3-3) + (v1-42 s3-3) + (a0-21 (new 'stack-no-clear 'vector)) + ) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f0-17 (-> *display* seconds-per-frame))) + (.mov at-0 f0-17) + ) + (.mov vf2 at-0) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-21 quad) vf1) + (vector+! a1-10 v1-42 a0-21) ) - (.lvf vf1 (&-> (-> s2-0 transv) quad)) - (let ((f1-27 (-> *display* seconds-per-frame))) - (.mov at-1 f1-27) - ) - (.mov vf2 at-1) - (.mov.vf vf1 vf0 :mask #b1000) - (.mul.x.vf vf1 vf1 vf2 :mask #b111) - (.svf (&-> a0-26 quad) vf1) - (vector+! a1-14 v1-61 a0-26) - ) - (let ((f1-29 (- (-> obj up y) (-> s3-3 y))) - (v1-62 (>= f0-24 0.0)) + (when (< (-> s3-3 y) (-> obj down y)) + (when (-> obj do-landing-sound?) + (set! (-> obj do-landing-sound?) #f) + (sound-play-by-name (static-sound-name "sunk-top-lands") (new-sound-id) 1024 0 0 1 #t) + ) + (set! (-> s3-3 y) (-> obj down y)) + (let ((f0-20 (-> s2-0 transv y))) + (when (< f0-20 0.0) + (let ((f0-22 (* 0.3 (- f0-20)))) + (set! (-> s2-0 transv y) f0-22) + (if (< 7782.4 f0-22) + (sound-play-by-name (static-sound-name "sunk-top-lands") (new-sound-id) 614 0 0 1 #t) + ) + ) + ) + ) + ) + ) + (else + (set! (-> obj do-landing-sound?) #t) + (let ((f0-24 (* 0.000048828126 (- (-> obj up y) (-> s2-0 trans y))))) + (cond + ((< 1.0 f0-24) + (set! f0-24 1.0) + ) + ((< f0-24 -1.0) + (set! f0-24 -1.0) + ) + ) + (+! (-> s2-0 transv y) (* 819200.0 (-> *display* seconds-per-frame) f0-24)) + (let ((f1-24 (-> s2-0 transv y))) + (when (< 122880.0 (fabs f1-24)) + (if (>= f1-24 0.0) + (set! (-> s2-0 transv y) 122880.0) + (set! (-> s2-0 transv y) -122880.0) + ) + ) + ) + (let ((a1-14 s3-3) + (v1-61 s3-3) + (a0-26 (new 'stack-no-clear 'vector)) + ) + (.lvf vf1 (&-> (-> s2-0 transv) quad)) + (let ((f1-27 (-> *display* seconds-per-frame))) + (.mov at-1 f1-27) + ) + (.mov vf2 at-1) + (.mov.vf vf1 vf0 :mask #b1000) + (.mul.x.vf vf1 vf1 vf2 :mask #b111) + (.svf (&-> a0-26 quad) vf1) + (vector+! a1-14 v1-61 a0-26) + ) + (let ((f1-29 (- (-> obj up y) (-> s3-3 y))) + (v1-62 (>= f0-24 0.0)) + ) + (when (!= v1-62 (>= f1-29 0.0)) + (let ((f0-26 (-> s2-0 transv y))) + (when (< 40960.0 (fabs f0-26)) + (if (>= f0-26 0.0) + (set! (-> s2-0 transv y) 40960.0) + (set! (-> s2-0 transv y) -40960.0) + ) + ) + ) + (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y))) + ) + ) ) - (when (!= v1-62 (>= f1-29 0.0)) - (let ((f0-26 (-> s2-0 transv y))) - (when (< 40960.0 (fabs f0-26)) - (if (>= f0-26 0.0) - (set! (-> s2-0 transv y) 40960.0) - (set! (-> s2-0 transv y) -40960.0) - ) ) - ) - (set! (-> s2-0 transv y) (* 0.8 (-> s2-0 transv y))) ) - ) + (set! (-> s2-0 trans quad) (-> s3-3 quad)) ) - ) ) - (set! (-> s2-0 trans quad) (-> s3-3 quad)) - ) - ) - (let ((f0-31 0.0)) - (dotimes (v1-71 3) - (+! f0-31 (-> obj control-pt v1-71 trans y)) - ) - (let ((f0-32 (* 0.33333334 f0-31)) - (a1-16 (new 'stack-no-clear 'vector)) + (let ((f0-31 0.0)) + (dotimes (v1-71 3) + (+! f0-31 (-> obj control-pt v1-71 trans y)) + ) + (let ((f0-32 (* 0.33333334 f0-31)) + (a1-16 (new 'stack-no-clear 'vector)) + ) + (set! (-> a1-16 quad) (-> obj root-override trans quad)) + (set! (-> a1-16 y) f0-32) + (TODO-RENAME-30 (-> obj root-override) a1-16) + ) + ) + (let ((v1-77 (new 'stack-no-clear 'vector)) + (a0-35 (new 'stack-no-clear 'vector)) + (s5-1 (new 'stack-no-clear 'vector)) ) - (set! (-> a1-16 quad) (-> obj root-override trans quad)) - (set! (-> a1-16 y) f0-32) - (TODO-RENAME-30 (-> obj root-override) a1-16) - ) + (vector-! v1-77 (the-as vector (&-> obj stack 176)) (the-as vector (-> obj control-pt))) + (vector-! a0-35 (the-as vector (&-> obj stack 208)) (the-as vector (-> obj control-pt))) + (vector-cross! s5-1 v1-77 a0-35) + (vector-normalize! s5-1 1.0) + (forward-up-nopitch->quaternion + (-> obj root-override quat) + (vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat)) + s5-1 + ) + ) ) - (let ((v1-77 (new 'stack-no-clear 'vector)) - (a0-35 (new 'stack-no-clear 'vector)) - (s5-1 (new 'stack-no-clear 'vector)) - ) - (vector-! - v1-77 - (the-as vector (&-> obj stack 176)) - (the-as vector (-> obj control-pt)) - ) - (vector-! - a0-35 - (the-as vector (&-> obj stack 208)) - (the-as vector (-> obj control-pt)) - ) - (vector-cross! s5-1 v1-77 a0-35) - (vector-normalize! s5-1 1.0) - (forward-up-nopitch->quaternion - (-> obj root-override quat) - (vector-z-quaternion! (new-stack-vector0) (-> obj root-override quat)) - s5-1 - ) - ) - ) ) (defstate steam-cap-idle (steam-cap) @@ -833,43 +730,37 @@ (the-as (function none :behavior steam-cap) rider-trans) :code (behavior () - (while #t - (dummy-20 self) - (dummy-21 self) - (suspend) + (while #t + (dummy-20 self) + (dummy-21 self) + (suspend) + ) + (none) ) - (none) - ) :post (the-as (function none :behavior steam-cap) rider-post) ) (defmethod relocate steam-cap ((obj steam-cap) (arg0 int)) (if (nonzero? (-> obj part2)) - (&+! (-> obj part2) arg0) - ) + (&+! (-> obj part2) arg0) + ) (if (nonzero? (-> obj part3)) - (&+! (-> obj part3) arg0) - ) + (&+! (-> obj part3) arg0) + ) (the-as - steam-cap - ((the-as - (function process-drawable int process-drawable) - (find-parent-method steam-cap 7) - ) - obj - arg0 + steam-cap + ((the-as (function process-drawable int process-drawable) (find-parent-method steam-cap 7)) obj arg0) ) - ) ) (defmethod deactivate steam-cap ((obj steam-cap)) (if (nonzero? (-> obj part2)) - (kill-and-free-particles (-> obj part2)) - ) + (kill-and-free-particles (-> obj part2)) + ) (if (nonzero? (-> obj part3)) - (kill-and-free-particles (-> obj part3)) - ) + (kill-and-free-particles (-> obj part3)) + ) ((method-of-type process-drawable deactivate) obj) (none) ) @@ -877,44 +768,26 @@ (defmethod init-from-entity! steam-cap ((obj steam-cap) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (set! (-> obj mask) (logior (process-mask platform) (-> obj mask))) - (let - ((s4-0 - (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)) - ) - ) - (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) - (set! (-> s4-0 reaction) default-collision-reaction) - (set! - (-> s4-0 no-reaction) - (the-as - (function collide-shape-moving collide-shape-intersect vector vector none) - nothing - ) - ) - (dummy-29 s4-0 1) - (let - ((s3-0 - (new - 'process - 'collide-shape-prim-mesh - s4-0 - (the-as uint 0) - (the-as uint 0) - ) + (let ((s4-0 (new 'process 'collide-shape-moving obj (collide-list-enum hit-by-player)))) + (set! (-> s4-0 dynam) (copy *standard-dynamics* 'process)) + (set! (-> s4-0 reaction) default-collision-reaction) + (set! (-> s4-0 no-reaction) + (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) + ) + (dummy-29 s4-0 1) + (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s3-0 transform-index) 4) + (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) + (set-root-prim! s4-0 s3-0) ) - ) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) - (set! (-> s3-0 transform-index) 4) - (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) - (set-root-prim! s4-0 s3-0) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (set! (-> obj do-burst?) #f) (set! (-> obj do-falling-sound?) #f) (set! (-> obj do-landing-sound?) #f) @@ -923,71 +796,61 @@ (logior! (-> obj skel status) 1) (ja-channel-set! 1) (let ((s4-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s4-1 - (the-as art-joint-anim (-> obj draw art-group data 2)) - num-func-identity + (joint-control-channel-group-eval! + s4-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s4-1 frame-num) 0.0) ) - (set! (-> s4-1 frame-num) 0.0) - ) (dummy-47 (-> obj root-override)) (load-params! (-> obj sync) obj (the-as uint 1800) 0.0 0.15 0.15) (let ((f30-0 0.4) (f28-0 0.9) ) - (set! sv-16 (new 'static 'res-tag)) - (let - ((v1-36 (res-lump-data arg0 'percent (pointer float) :tag-ptr (& sv-16)))) - (when v1-36 - (set! f30-0 (-> v1-36 0)) - (set! f28-0 (-> v1-36 1)) - (if (>= 0.01 f30-0) - (set! f30-0 0.01) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-36 (res-lump-data arg0 'percent (pointer float) :tag-ptr (& sv-16)))) + (when v1-36 + (set! f30-0 (-> v1-36 0)) + (set! f28-0 (-> v1-36 1)) + (if (>= 0.01 f30-0) + (set! f30-0 0.01) + ) + (if (>= 0.01 f28-0) + (set! f28-0 0.01) + ) + (if (>= f30-0 f28-0) + (set! f28-0 (+ 0.01 f30-0)) + ) + (when (>= f30-0 1.0) + (set! f28-0 (* 0.9 (/ f28-0 f30-0))) + (set! f30-0 0.9) + ) + ) ) - (if (>= 0.01 f28-0) - (set! f28-0 0.01) - ) - (if (>= f30-0 f28-0) - (set! f28-0 (+ 0.01 f30-0)) - ) - (when (>= f30-0 1.0) - (set! f28-0 (* 0.9 (/ f28-0 f30-0))) - (set! f30-0 0.9) - ) - ) + (set! (-> obj begin-travel-up) f30-0) + (set! (-> obj begin-travel-down) f28-0) ) - (set! (-> obj begin-travel-up) f30-0) - (set! (-> obj begin-travel-down) f28-0) - ) (set! (-> obj down quad) (-> obj root-override trans quad)) (set! (-> obj up quad) (-> obj root-override trans quad)) (set! (-> obj up y) (+ 40960.0 (-> obj up y))) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 441) obj) - ) - (set! - (-> obj part2) - (create-launch-control (-> *part-group-id-table* 442) obj) - ) - (set! - (-> obj part3) - (create-launch-control (-> *part-group-id-table* 443) obj) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 441) obj)) + (set! (-> obj part2) (create-launch-control (-> *part-group-id-table* 442) obj)) + (set! (-> obj part3) (create-launch-control (-> *part-group-id-table* 443) obj)) (vector-reset! (-> obj root-override transv)) (let ((s5-1 (new 'stack-no-clear 'vector)) (f30-1 0.0) ) - (dotimes (s4-2 3) - (let ((s3-1 (-> obj control-pt s4-2))) - (set-vector! s5-1 0.0 0.0 10240.0 1.0) - (vector-rotate-around-y! s5-1 s5-1 f30-1) - (set! f30-1 (+ 21845.334 f30-1)) - (vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans)) - (vector-reset! (-> s3-1 transv)) - ) + (dotimes (s4-2 3) + (let ((s3-1 (-> obj control-pt s4-2))) + (set-vector! s5-1 0.0 0.0 10240.0 1.0) + (vector-rotate-around-y! s5-1 s5-1 f30-1) + (set! f30-1 (+ 21845.334 f30-1)) + (vector+! (-> s3-1 trans) s5-1 (-> obj root-override trans)) + (vector-reset! (-> s3-1 transv)) + ) + ) ) - ) (go steam-cap-idle) (none) ) diff --git a/goal_src/levels/sunken/sun-exit-chamber.gc b/goal_src/levels/sunken/sun-exit-chamber.gc index da1d453ba8..893dcfd898 100644 --- a/goal_src/levels/sunken/sun-exit-chamber.gc +++ b/goal_src/levels/sunken/sun-exit-chamber.gc @@ -373,10 +373,9 @@ ) (defmethod dummy-20 blue-eco-charger ((obj blue-eco-charger)) - (and - (and *target* (>= 16384.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans)))) - (send-event *target* 'query 'powerup 3) - ) + (and (and *target* (>= 16384.0 (vector-vector-distance (-> obj root-override trans) (-> *target* control trans)))) + (send-event *target* 'query 'powerup 3) + ) ) (defstate blue-eco-charger-idle (blue-eco-charger) @@ -394,17 +393,16 @@ ) (while #t (when (logtest? (-> self draw status) (draw-status drwf03)) - (if (and - (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - (let ((a1-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> a1-2 from) self) - (set! (-> a1-2 num-params) 2) - (set! (-> a1-2 message) 'query) - (set! (-> a1-2 param 0) (the-as uint 'powerup)) - (set! (-> a1-2 param 1) (the-as uint 3)) - (not (send-event-function *target* a1-2)) - ) - ) + (if (and (and *target* (>= 16384.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (let ((a1-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-2 from) self) + (set! (-> a1-2 num-params) 2) + (set! (-> a1-2 message) 'query) + (set! (-> a1-2 param 0) (the-as uint 'powerup)) + (set! (-> a1-2 param 1) (the-as uint 3)) + (not (send-event-function *target* a1-2)) + ) + ) (level-hint-spawn (game-text-id sunken-blue-eco-charger-hint) "sksp0125" @@ -463,12 +461,12 @@ ) (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -503,7 +501,10 @@ (defstate blue-eco-charger-stuck-open (blue-eco-charger) :trans - (behavior () (update! (-> self sound)) (none)) + (behavior () + (update! (-> self sound)) + (none) + ) :code (behavior () (while #t @@ -516,7 +517,10 @@ (defstate blue-eco-charger-close (blue-eco-charger) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :code (behavior () (let ((a0-0 (-> self skel root-channel 0))) @@ -541,12 +545,12 @@ ) (set! (-> self open-level) (/ (ja-frame-num 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -565,10 +569,10 @@ (set! (-> obj open-level) 0.0) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 8192.0 0.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) @@ -795,7 +799,10 @@ ) ) :exit - (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :code (behavior () (while #t @@ -868,7 +875,10 @@ ) ) :exit - (behavior () (logclear! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logclear! (-> self draw status) (draw-status drwf01)) + (none) + ) :code (behavior () (save-reminder (get-task-control (game-task sunken-room)) 1 0) @@ -892,7 +902,10 @@ (defstate exit-chamber-rise (exit-chamber) :enter - (behavior () (set! (-> self move-player?) #f) (none)) + (behavior () + (set! (-> self move-player?) #f) + (none) + ) :trans (behavior () (if (not (-> self move-player?)) @@ -912,26 +925,26 @@ (send-event *target* 'reset-pickup 'eco) (let ((gp-0 (get-process *default-dead-pool* sunkencam #x4000))) (set! (-> (the-as sunkencam (-> (when gp-0 - (let ((t9-5 (method-of-type sunkencam activate))) - (t9-5 (the-as sunkencam gp-0) self 'sunkencam (the-as pointer #x70004000)) - ) - (run-now-in-process - gp-0 - pov-camera-init-by-other - (-> self root-override trans) - *sunkencam-sg* - "qbert-show-door-open" - 0 - #f - '() - ) - (-> gp-0 ppointer) - ) - 0 - ) - ) - seq - ) + (let ((t9-5 (method-of-type sunkencam activate))) + (t9-5 (the-as sunkencam gp-0) self 'sunkencam (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + pov-camera-init-by-other + (-> self root-override trans) + *sunkencam-sg* + "qbert-show-door-open" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + 0 + ) + ) + seq + ) (the-as uint 0) ) ) @@ -1105,7 +1118,10 @@ (none) ) :exit - (behavior () (logclear! (-> self mask) (process-mask platform)) (none)) + (behavior () + (logclear! (-> self mask) (process-mask platform)) + (none) + ) :trans (behavior () (rider-trans) @@ -1331,10 +1347,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 67584.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/sunken/sun-iris-door.gc b/goal_src/levels/sunken/sun-iris-door.gc index a7f4d2f4ac..d9249dae30 100644 --- a/goal_src/levels/sunken/sun-iris-door.gc +++ b/goal_src/levels/sunken/sun-iris-door.gc @@ -266,10 +266,9 @@ (go sun-iris-door-closing) ) ) - (if (and - (!= (-> self timeout) 0.0) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the int (* 300.0 (-> self timeout)))) - ) + (if (and (!= (-> self timeout) 0.0) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) (the int (* 300.0 (-> self timeout)))) + ) (go sun-iris-door-closing) ) (none) @@ -350,10 +349,10 @@ (set! (-> obj move-to?) #f) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -412,10 +411,10 @@ (set! (-> self move-to?) #f) (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others)))) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s3-0 s2-0) diff --git a/goal_src/levels/sunken/sunken-obs.gc b/goal_src/levels/sunken/sunken-obs.gc index 52555e1bb6..a327db7e15 100644 --- a/goal_src/levels/sunken/sunken-obs.gc +++ b/goal_src/levels/sunken/sunken-obs.gc @@ -8,6 +8,9 @@ (define-extern *seaweed-sg* skeleton-group) (define-extern *side-to-side-plat-sg* skeleton-group) (define-extern *sunkencam-sg* skeleton-group) + +(declare-type seaweed basic) +(define-extern *seaweed* seaweed) ;; DECOMP BEGINS @@ -115,10 +118,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) (set-root-prim! s5-0 s4-0) @@ -179,7 +182,10 @@ (defstate pov-camera-playing (sunkencam) :virtual #t :exit - (behavior () (set! (-> *screen-filter* draw?) #f) (none)) + (behavior () + (set! (-> *screen-filter* draw?) #f) + (none) + ) :code (behavior () (let ((v1-0 (-> self seq))) @@ -441,8 +447,6 @@ ) ) -;; NOTE - manually added -(define-extern *seaweed* seaweed) (defskelgroup *seaweed-sg* seaweed 0 @@ -502,12 +506,12 @@ ) (set! (-> s5-1 frame-num) (rand-vu-float-range 0.0 (the float (+ (-> (if (> (-> obj skel active-channels) 0) - (-> obj skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> obj skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) diff --git a/goal_src/levels/sunken/target-tube.gc b/goal_src/levels/sunken/target-tube.gc index 24fd29f165..ec7fb405cf 100644 --- a/goal_src/levels/sunken/target-tube.gc +++ b/goal_src/levels/sunken/target-tube.gc @@ -386,7 +386,7 @@ ) (set! (-> self control reaction) target-collision-reaction) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -462,22 +462,18 @@ ) :exit (behavior () - (when (not - (or - (= (-> self next-state name) 'target-tube) - (= (-> self next-state name) 'target-tube-jump) - (= (-> self next-state name) 'target-tube-hit) - ) - ) + (when (not (or (= (-> self next-state name) 'target-tube) + (= (-> self next-state name) 'target-tube-jump) + (= (-> self next-state name) 'target-tube-hit) + ) + ) (let ((v1-7 (-> self manipy))) (when v1-7 (deactivate (-> v1-7 0)) (set! (-> self manipy) (the-as (pointer manipy) #f)) ) ) - (set! (-> self control root-prim prim-core action) - (logand -8193 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-13)) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) @@ -514,7 +510,7 @@ (target-collide-set! 'tube 0.0) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) 8192) + (logior! (-> self control root-prim prim-core action) (collide-action ca-13)) (remove-exit) (let ((a1-4 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-4 from) self) @@ -551,26 +547,24 @@ (countdown (s5-0 gp-0) (set! (-> self control unknown-int40) s5-0) (set! (-> self tube turn-anim-targ) (fmax -20.0 (fmin 20.0 (-> self tube turn-anim-targ)))) - (or - (not (>= (* (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) 0.0)) - (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) - ) - (+! - (-> self tube turn-anim-vel) - (* (- (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) - (lerp-scale - 20.0 - (if (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) - 30.0 - 60.0 - ) - (-> self control unknown-float01) - 0.0 - 36864.0 + (or (not (>= (* (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) 0.0)) + (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) + ) + (+! (-> self tube turn-anim-vel) + (* (- (-> self tube turn-anim-targ) (-> self tube turn-anim-frame)) + (lerp-scale + 20.0 + (if (< (fabs (-> self tube turn-anim-frame)) (fabs (-> self tube turn-anim-targ))) + 30.0 + 60.0 + ) + (-> self control unknown-float01) + 0.0 + 36864.0 + ) + (-> *display* seconds-per-frame) ) - (-> *display* seconds-per-frame) - ) - ) + ) (set! (-> self tube turn-anim-vel) (fmax -100.0 @@ -618,19 +612,15 @@ (-> target-tube-start exit) :trans (behavior () - (if (and - (logtest? - (logior - (logior - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) - ) - (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) - ) - (pad-buttons x) - ) - (can-jump? #f) - ) + (if (and (logtest? (logior (logior (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 1) + ) + (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 2) + ) + (pad-buttons x) + ) + (can-jump? #f) + ) (go target-tube-jump (-> *TARGET-bank* tube-jump-height-min) (-> *TARGET-bank* tube-jump-height-max)) ) (none) @@ -673,7 +663,10 @@ (none) ) :post - (behavior () (target-tube-post) (none)) + (behavior () + (target-tube-post) + (none) + ) ) (defstate target-tube-jump (target) @@ -1019,17 +1012,15 @@ ) :trans (behavior () - (if (and - (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and - (< 0.0 (vector-dot - (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self trans)) - (-> self rot) - ) - ) - (send-event *target* 'change-mode 'tube self) - ) - ) + (if (and (and *target* (>= 81920.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (< 0.0 (vector-dot + (vector-! (new 'stack-no-clear 'vector) (-> *target* control trans) (-> self trans)) + (-> self rot) + ) + ) + (send-event *target* 'change-mode 'tube self) + ) + ) (go-virtual slide-control-ride) ) (none) diff --git a/goal_src/levels/sunken/wall-plat.gc b/goal_src/levels/sunken/wall-plat.gc index 0a8344a048..4475275437 100644 --- a/goal_src/levels/sunken/wall-plat.gc +++ b/goal_src/levels/sunken/wall-plat.gc @@ -41,12 +41,13 @@ (defstate wall-plat-retracted (wall-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('trigger) - (go wall-plat-extending) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('trigger) + (go wall-plat-extending) + ) + ) + ) :code (behavior () (set! (-> self extended-amount) 0.0) @@ -73,7 +74,10 @@ ) ) :enter - (behavior () (sound-play-by-name (static-sound-name "wall-plat") (new-sound-id) 1024 0 0 1 #t) (none)) + (behavior () + (sound-play-by-name (static-sound-name "wall-plat") (new-sound-id) 1024 0 0 1 #t) + (none) + ) :trans (the-as (function none :behavior wall-plat) rider-trans) :code @@ -99,12 +103,13 @@ (defstate wall-plat-extended (wall-plat) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('untrigger) - (go wall-plat-retracting) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('untrigger) + (go wall-plat-retracting) + ) + ) + ) :code (behavior () (set! (-> self extended-amount) 1.0) @@ -130,7 +135,10 @@ ) ) :enter - (behavior () (sound-play-by-name (static-sound-name "wall-plat") (new-sound-id) 1024 0 0 1 #t) (none)) + (behavior () + (sound-play-by-name (static-sound-name "wall-plat") (new-sound-id) 1024 0 0 1 #t) + (none) + ) :trans (the-as (function none :behavior wall-plat) rider-trans) :code @@ -165,9 +173,15 @@ ) ) :enter - (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans (the-as (function none :behavior wall-plat) rider-trans) :code @@ -217,10 +231,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 19)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 2) (set-vector! (-> s3-0 local-sphere) 0.0 -6144.0 -12288.0 19456.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/sunken/wedge-plats.gc b/goal_src/levels/sunken/wedge-plats.gc index 826b0c2e32..e37e77c9ff 100644 --- a/goal_src/levels/sunken/wedge-plats.gc +++ b/goal_src/levels/sunken/wedge-plats.gc @@ -244,10 +244,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -447,10 +447,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 19)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 32768.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/sunken/whirlpool.gc b/goal_src/levels/sunken/whirlpool.gc index f56be292c1..70d089cc87 100644 --- a/goal_src/levels/sunken/whirlpool.gc +++ b/goal_src/levels/sunken/whirlpool.gc @@ -35,385 +35,337 @@ :longest-edge (meters 0) ) -(set! - (-> *part-group-id-table* 447) - (new 'static 'sparticle-launch-group - :length #xbb - :duration #xbb8 - :linger-duration #x5dc - :flags (sp-group-flag use-local-clock) - :name "group-whirlpool-swirl" - :launcher - (new 'static 'inline-array sparticle-group-item 187 - (sp-item 1739 :fade-after (meters 60.0) :falloff-to (meters 60.0) :binding 1737) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - (sp-item 1738 :flags (bit1 start-dead)) - ) - :bounds (new 'static 'sphere :w 32768.0) - ) - ) +(set! (-> *part-group-id-table* 447) + (new 'static 'sparticle-launch-group + :length #xbb + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-whirlpool-swirl" + :launcher + (new 'static 'inline-array sparticle-group-item 187 + (sp-item 1739 :fade-after (meters 60.0) :falloff-to (meters 60.0) :binding 1737) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1737 :flags (bit1 start-dead launch-asap) :binding 1738) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + (sp-item 1738 :flags (bit1 start-dead)) + ) + :bounds (new 'static 'sphere :w 32768.0) + ) + ) -(set! - (-> *part-id-table* 1739) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 11 - (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-y (meters 6.6)) - (sp-flt spt-scale-x (meters 0.2)) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-g 0.0) - (sp-flt spt-a 128.0) - (sp-flt spt-accel-y -0.68266666) - (sp-int spt-timer 510) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1739) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 11 + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-y (meters 6.6)) + (sp-flt spt-scale-x (meters 0.2)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-g 0.0) + (sp-flt spt-a 128.0) + (sp-flt spt-accel-y -0.68266666) + (sp-int spt-timer 510) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1737) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 22 - (sp-tex spt-texture (new 'static 'texture-id :page #x2)) - (sp-flt spt-num 1.0) - (sp-flt spt-x (meters 0.0)) - (sp-flt spt-y (meters 0.0)) - (sp-rnd-flt spt-z 16384.0 4096.0 1.0) - (sp-flt spt-scale-x (meters 3.2)) - (sp-flt spt-scale-y (meters 1.0)) - (sp-flt spt-r 150.0) - (sp-flt spt-g 150.0) - (sp-flt spt-b 255.0) - (sp-flt spt-a 0.0) - (sp-rnd-flt spt-omega 0.0 65536.0 1.0) - (sp-flt spt-vel-x (meters 0.053333335)) - (sp-flt spt-vel-y (meters 0.0)) - (sp-flt spt-vel-z (meters -0.01)) - (sp-flt spt-scalevel-x (meters -0.004888889)) - (sp-flt spt-fade-a 0.42666668) - (sp-int spt-timer 450) - (sp-cpuinfo-flags bit2 bit3 bit7) - (sp-int-plain-rnd spt-next-time 37 36 1) - (sp-launcher-by-id spt-next-launcher 1740) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1737) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-x (meters 0.0)) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-z 16384.0 4096.0 1.0) + (sp-flt spt-scale-x (meters 3.2)) + (sp-flt spt-scale-y (meters 1.0)) + (sp-flt spt-r 150.0) + (sp-flt spt-g 150.0) + (sp-flt spt-b 255.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-omega 0.0 65536.0 1.0) + (sp-flt spt-vel-x (meters 0.053333335)) + (sp-flt spt-vel-y (meters 0.0)) + (sp-flt spt-vel-z (meters -0.01)) + (sp-flt spt-scalevel-x (meters -0.004888889)) + (sp-flt spt-fade-a 0.42666668) + (sp-int spt-timer 450) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-int-plain-rnd spt-next-time 37 36 1) + (sp-launcher-by-id spt-next-launcher 1740) + (sp-end) + ) + ) + ) -(set! - (-> *part-id-table* 1740) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 2 - (sp-flt spt-fade-a 0.0) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1740) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a 0.0) (sp-end)) + ) + ) -(set! - (-> *part-id-table* 1738) - (new 'static 'sparticle-launcher - :init-specs - (new 'static 'inline-array sp-field-init-spec 12 - (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) - (sp-flt spt-num 1.0) - (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) - (sp-copy-from-other spt-scale-y -4) - (sp-flt spt-r 255.0) - (sp-flt spt-g 255.0) - (sp-flt spt-b 255.0) - (sp-rnd-flt spt-a 32.0 32.0 1.0) - (sp-flt spt-fade-a -1.8285716) - (sp-int spt-timer 30) - (sp-cpuinfo-flags bit2 bit3) - (sp-end) - ) - ) - ) +(set! (-> *part-id-table* 1738) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-scale-x (meters 0.3) (meters 0.1) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 255.0) + (sp-flt spt-g 255.0) + (sp-flt spt-b 255.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-flt spt-fade-a -1.8285716) + (sp-int spt-timer 30) + (sp-cpuinfo-flags bit2 bit3) + (sp-end) + ) + ) + ) (defmethod dummy-20 whirlpool ((obj whirlpool) (arg0 float)) (let* ((gp-0 (target-pos 0)) (f28-0 (vector-vector-xz-distance (-> obj root-override trans) gp-0)) ) - (when (< f28-0 40960.0) - (let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0))) - (f26-0 (* f0-2 f0-2)) - (f0-7 - (atan - (- (-> gp-0 x) (-> obj root-override trans x)) - (- (-> gp-0 z) (-> obj root-override trans z)) + (when (< f28-0 40960.0) + (let* ((f0-2 (* 0.000024414063 (- 40960.0 f28-0))) + (f26-0 (* f0-2 f0-2)) + (f0-7 (atan (- (-> gp-0 x) (-> obj root-override trans x)) (- (-> gp-0 z) (-> obj root-override trans z)))) + (f30-0 (* 0.5 f26-0 arg0 (-> *display* seconds-per-frame))) + (f24-0 (+ f0-7 f30-0)) + (f28-1 (- f28-0 (fmin f28-0 (* 0.16874999 f26-0 (fabs arg0) (-> *display* seconds-per-frame))))) + (s4-1 (new 'stack-no-clear 'vector)) ) + (set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0) + (vector+! s4-1 s4-1 (-> obj root-override trans)) + (set! (-> s4-1 x) (* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second))) + (set! (-> s4-1 y) 0.0) + (set! (-> s4-1 z) (* (- (-> s4-1 z) (-> gp-0 z)) (-> *display* frames-per-second))) + (let ((gp-1 (-> *target* control))) + (send-event (-> gp-1 process) 'rotate-y-angle f30-0) + (dummy-32 gp-1 8192.0 (-> gp-1 root-prim collide-with)) + (let ((s3-0 (-> gp-1 status))) + (dummy-37 gp-1 s4-1) + (set! (-> gp-1 status) s3-0) + s3-0 ) - (f30-0 (* 0.5 f26-0 arg0 (-> *display* seconds-per-frame))) - (f24-0 (+ f0-7 f30-0)) - (f28-1 - (- - f28-0 - (fmin - f28-0 - (* 0.16874999 f26-0 (fabs arg0) (-> *display* seconds-per-frame)) - ) - ) - ) - (s4-1 (new 'stack-no-clear 'vector)) - ) - (set-vector! s4-1 (* (sin f24-0) f28-1) 0.0 (* (cos f24-0) f28-1) 1.0) - (vector+! s4-1 s4-1 (-> obj root-override trans)) - (set! - (-> s4-1 x) - (* (- (-> s4-1 x) (-> gp-0 x)) (-> *display* frames-per-second)) + ) + ) ) - (set! (-> s4-1 y) 0.0) - (set! - (-> s4-1 z) - (* (- (-> s4-1 z) (-> gp-0 z)) (-> *display* frames-per-second)) - ) - (let ((gp-1 (-> *target* control))) - (send-event (-> gp-1 process) 'rotate-y-angle f30-0) - (dummy-32 gp-1 8192.0 (-> gp-1 root-prim collide-with)) - (let ((s3-0 (-> gp-1 status))) - (dummy-37 gp-1 s4-1) - (set! (-> gp-1 status) s3-0) - s3-0 - ) - ) - ) ) - ) ) (defstate whirlpool-idle (whirlpool) :trans (behavior () - (let - ((f30-0 - (+ - (* - (get-current-phase-with-mirror (-> self sync)) - (-> self spin-speed-delta) + (let ((f30-0 + (+ (* (get-current-phase-with-mirror (-> self sync)) (-> self spin-speed-delta)) (-> self spin-speed-idle)) + ) + ) + (when (>= (fabs f30-0) 45511.11) + (let ((a1-0 (new 'stack-no-clear 'vector))) + (set! (-> a1-0 quad) (-> self root-override trans quad)) + (set! (-> a1-0 y) (+ -8192.0 (-> a1-0 y))) + (spawn (-> self part) a1-0) + ) + ) + (+! (-> self spin-ry) (* f30-0 (-> *display* seconds-per-frame))) + (quaternion-axis-angle! (-> self root-override quat) 0.0 1.0 0.0 (-> self spin-ry)) + (if (and *target* (logtest? (-> *target* water flags) 512)) + (dummy-20 self f30-0) + ) + (update! (-> self sound)) + (let ((f0-9 (fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0))))))) + (update-vol! (-> self sound) (the int (* 100.0 f0-9))) ) - (-> self spin-speed-idle) - ) ) - ) - (when (>= (fabs f30-0) 45511.11) - (let ((a1-0 (new 'stack-no-clear 'vector))) - (set! (-> a1-0 quad) (-> self root-override trans quad)) - (set! (-> a1-0 y) (+ -8192.0 (-> a1-0 y))) - (spawn (-> self part) a1-0) - ) - ) - (+! (-> self spin-ry) (* f30-0 (-> *display* seconds-per-frame))) - (quaternion-axis-angle! - (-> self root-override quat) - 0.0 - 1.0 - 0.0 - (-> self spin-ry) - ) - (if (and *target* (logtest? (-> *target* water flags) 512)) - (dummy-20 self f30-0) - ) - (update! (-> self sound)) - (let - ((f0-9 - (fmin 1.0 (* 0.000007608261 (fmax 0.0 (+ -28580.979 (fabs f30-0))))) - ) - ) - (update-vol! (-> self sound) (the int (* 100.0 f0-9))) - ) + (none) ) - (none) - ) :code (the-as (function none :behavior whirlpool) anim-loop) :post @@ -422,8 +374,8 @@ (defmethod deactivate whirlpool ((obj whirlpool)) (if (nonzero? (-> obj sound)) - (stop! (-> obj sound)) - ) + (stop! (-> obj sound)) + ) ((method-of-type process-drawable deactivate) obj) (none) ) @@ -431,65 +383,59 @@ (defmethod init-from-entity! whirlpool ((obj whirlpool) (arg0 entity-actor)) (local-vars (sv-16 res-tag)) (set! (-> obj spin-ry) (rand-vu-float-range 0.0 65536.0)) - (let - ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) - (set-root-prim! s4-0 s3-0) + (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) + (set-root-prim! s4-0 s3-0) + ) + (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) + (backup-collide-with-as s4-0) + (set! (-> obj root-override) s4-0) ) - (set! (-> s4-0 nav-radius) (* 0.75 (-> s4-0 root-prim local-sphere w))) - (backup-collide-with-as s4-0) - (set! (-> obj root-override) s4-0) - ) (process-drawable-from-entity! obj arg0) (initialize-skeleton obj *whirlpool-sg* '()) (load-params! (-> obj sync) obj (the-as uint 1500) 0.0 0.15 0.15) (let ((f30-0 32768.0) (f28-0 145635.56) ) - (set! sv-16 (new 'static 'res-tag)) - (let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16)))) - (when v1-17 - (set! f30-0 (-> v1-17 0)) - (set! f28-0 (-> v1-17 1)) - ) + (set! sv-16 (new 'static 'res-tag)) + (let ((v1-17 (res-lump-data arg0 'speed (pointer float) :tag-ptr (& sv-16)))) + (when v1-17 + (set! f30-0 (-> v1-17 0)) + (set! f28-0 (-> v1-17 1)) + ) + ) + (set! (-> obj spin-speed-idle) f30-0) + (set! (-> obj spin-speed-delta) (- f28-0 f30-0)) ) - (set! (-> obj spin-speed-idle) f30-0) - (set! (-> obj spin-speed-delta) (- f28-0 f30-0)) - ) - (set! - (-> obj part) - (create-launch-control (-> *part-group-id-table* 447) obj) - ) - (set! - (-> obj sound) - (new - 'process - 'ambient-sound - (new 'static 'sound-spec - :mask #x80 - :num 1.0 - :group #x1 - :sound-name (static-sound-name "whirlpool") - :volume #x400 - :fo-max 55 - ) - (-> obj root-override trans) - ) - ) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 447) obj)) + (set! (-> obj sound) (new + 'process + 'ambient-sound + (new 'static 'sound-spec + :mask #x80 + :num 1.0 + :group #x1 + :sound-name (static-sound-name "whirlpool") + :volume #x400 + :fo-max 55 + ) + (-> obj root-override trans) + ) + ) (ja-channel-set! 1) (let ((s5-1 (-> obj skel root-channel 0))) - (joint-control-channel-group-eval! - s5-1 - (the-as art-joint-anim (-> obj draw art-group data 2)) - num-func-identity + (joint-control-channel-group-eval! + s5-1 + (the-as art-joint-anim (-> obj draw art-group data 2)) + num-func-identity + ) + (set! (-> s5-1 frame-num) 0.0) ) - (set! (-> s5-1 frame-num) 0.0) - ) (ja-post) (dummy-47 (-> obj root-override)) (go whirlpool-idle) diff --git a/goal_src/levels/swamp/kermit.gc b/goal_src/levels/swamp/kermit.gc index fa825ddd15..b5a6d5f0d2 100644 --- a/goal_src/levels/swamp/kermit.gc +++ b/goal_src/levels/swamp/kermit.gc @@ -665,9 +665,15 @@ ) ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :exit - (behavior () (sound-stop (-> self sound-id)) (none)) + (behavior () + (sound-stop (-> self sound-id)) + (none) + ) :code (behavior () (while (< (- (-> *display* base-frame-counter) (-> self state-time)) 1200) @@ -685,7 +691,7 @@ (-> self root-override trans) (the-as vector #f) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -696,7 +702,10 @@ (none) ) :post - (behavior () (dummy-47 (-> self root-override)) (none)) + (behavior () + (dummy-47 (-> self root-override)) + (none) + ) ) (defstate kermit-pulse-impact (kermit-pulse) @@ -737,10 +746,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) (set-root-prim! s5-0 s4-0) ) @@ -1065,13 +1074,17 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set! (-> self notice-time) 0) 0 (none)) + (behavior () + (set! (-> self notice-time) 0) + 0 + (none) + ) :trans (behavior () (if (and *target* (>= (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) (go kermit-patrol) ) (none) @@ -1116,13 +1129,12 @@ nav-enemy-default-event-handler ) :trans (behavior () - (if (and - (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - ) + (if (and (or (not *target*) (< (-> self enemy-info idle-distance) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + ) (go kermit-idle) ) (kermit-set-rotate-dir-to-nav-target) @@ -1169,9 +1181,15 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) (none)) + (behavior () + (set-mode! (-> self neck) (joint-mod-handler-mode look-at)) + (none) + ) :trans - (behavior () (kermit-set-rotate-dir-to-player) (none)) + (behavior () + (kermit-set-rotate-dir-to-player) + (none) + ) :code (behavior () (ja-channel-push! 1 30) @@ -1191,9 +1209,15 @@ nav-enemy-default-event-handler nav-enemy-default-event-handler ) :enter - (behavior () (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) (none)) + (behavior () + (set-mode! (-> self neck) (joint-mod-handler-mode flex-blend)) + (none) + ) :code - (behavior () (go kermit-patrol) (none)) + (behavior () + (go kermit-patrol) + (none) + ) :post kermit-simple-post ) @@ -1233,12 +1257,10 @@ nav-enemy-default-event-handler :trans (behavior () (when (not (-> self airborne)) - (if (or - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 900) - (and - (logtest? (nav-control-flags bit19) (-> self nav flags)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) - ) + (if (or (>= (- (-> *display* base-frame-counter) (-> self state-time)) 900) + (and (logtest? (nav-control-flags bit19) (-> self nav flags)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) + ) ) (go kermit-chase) ) @@ -1304,9 +1326,9 @@ nav-enemy-default-event-handler ) (when (not (-> self airborne)) (if (or (not *target*) (< (-> self enemy-info idle-distance) - (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)) + ) + ) (go kermit-patrol) ) (let ((gp-1 (kermit-check-to-hit-player? 3640.889)) @@ -1464,8 +1486,7 @@ nav-enemy-default-event-handler (let ((s5-0 (kermit-player-target-pos)) (gp-0 (kermit-tongue-pos self)) ) - (if (or - (< 73728.0 (vector-vector-distance s5-0 gp-0)) + (if (or (< 73728.0 (vector-vector-distance s5-0 gp-0)) (or (not (kermit-check-tongue-is-clear?)) (not (-> self child-override))) ) (go kermit-retract-tongue) @@ -1475,10 +1496,10 @@ nav-enemy-default-event-handler ) (when (and (-> self child-override) (let ((v1-9 (-> self child-override))) (= (-> (if v1-9 - (-> v1-9 0 self-override) - ) - type - ) + (-> v1-9 0 self-override) + ) + type + ) kermit-pulse ) ) @@ -1552,7 +1573,11 @@ nav-enemy-default-event-handler (none) ) :exit - (behavior () (set! (-> self tongue-control forward-scale-control) 0.0) (kermit-disable-tongue) (none)) + (behavior () + (set! (-> self tongue-control forward-scale-control) 0.0) + (kermit-disable-tongue) + (none) + ) :trans (behavior () (kermit-set-nav-mesh-target (-> self collide-info trans)) @@ -1682,16 +1707,16 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3072.0) (append-prim s3-0 s2-0) diff --git a/goal_src/levels/swamp/swamp-bat.gc b/goal_src/levels/swamp/swamp-bat.gc index 492bdd37ef..1d6167f958 100644 --- a/goal_src/levels/swamp/swamp-bat.gc +++ b/goal_src/levels/swamp/swamp-bat.gc @@ -469,16 +469,16 @@ swamp-bat-slave-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 6144.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-0) @@ -569,10 +569,9 @@ swamp-bat-slave-event-handler (defbehavior swamp-bat-check-slave-paths-match? swamp-bat ((arg0 int)) (let ((v1-0 (the-as (pointer process-tree) (-> self child-process)))) (while v1-0 - (if (and - (-> (the-as swamp-bat-slave (-> v1-0 0)) launch-ready) - (!= (-> (the-as swamp-bat-slave (-> v1-0 0)) path-select) arg0) - ) + (if (and (-> (the-as swamp-bat-slave (-> v1-0 0)) launch-ready) + (!= (-> (the-as swamp-bat-slave (-> v1-0 0)) path-select) arg0) + ) (return #f) ) (set! v1-0 (-> v1-0 0 brother)) @@ -591,13 +590,12 @@ swamp-bat-slave-event-handler (deactivate self) ) (while #t - (when (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) - *target* - (>= (-> self fact-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) - ) + (when (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) + *target* + (>= (-> self fact-override idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) (when (not (-> self child-process)) (process-entity-status! self (entity-perm-status dead) #t) (deactivate self) diff --git a/goal_src/levels/swamp/swamp-obs.gc b/goal_src/levels/swamp/swamp-obs.gc index e3c48535d0..f4aa50da97 100644 --- a/goal_src/levels/swamp/swamp-obs.gc +++ b/goal_src/levels/swamp/swamp-obs.gc @@ -176,10 +176,10 @@ (('touch) (when (-> self dangerous) (if ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root-override)) - (the-as uint 1) - ) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 1) + ) (send-event arg0 'attack (-> arg3 param 0) (new 'static 'attack-info)) ) ) @@ -233,16 +233,14 @@ ) (suspend) ) - (let ((s5-0 (or - (not *target*) - (< 204800.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (let ((s5-0 (or (not *target*) + (< 204800.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) ) ) - (if (and - (and *target* (>= 61440.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) - *camera* - ) + (if (and (and *target* (>= 61440.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + *camera* + ) (set! s5-0 (< (* (vector4-dot gp-0 (target-pos 0)) (vector4-dot gp-0 (camera-pos))) 0.0)) ) (cond @@ -434,7 +432,11 @@ (defstate swamp-spike-gate-down (swampgate) :code - (behavior () (process-entity-status! self (entity-perm-status complete) #t) (dummy-18 self) (none)) + (behavior () + (process-entity-status! self (entity-perm-status complete) #t) + (dummy-18 self) + (none) + ) :post (the-as (function none :behavior swampgate) swamp-spike-post) ) @@ -442,25 +444,25 @@ (defmethod init! swamp-spike ((obj swamp-spike)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 24576.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) (append-prim s4-0 s3-1) @@ -604,10 +606,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) @@ -797,10 +799,10 @@ (let ((f30-0 (res-lump-float arg0 'scale-factor :default 1.0))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 (* 4096.0 f30-0) 0.0 (* 4096.0 (* 3.0 f30-0))) (set-root-prim! s4-0 s3-0) @@ -829,10 +831,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -912,7 +914,10 @@ (defstate rigid-body-platform-idle (tar-plat) :virtual #t :enter - (behavior () (ja-channel-set! 0) (none)) + (behavior () + (ja-channel-set! 0) + (none) + ) :code (behavior () (while #t @@ -983,10 +988,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/swamp/swamp-rat-nest.gc b/goal_src/levels/swamp/swamp-rat-nest.gc index ee12529133..87fb3dc6a2 100644 --- a/goal_src/levels/swamp/swamp-rat-nest.gc +++ b/goal_src/levels/swamp/swamp-rat-nest.gc @@ -878,12 +878,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -927,12 +927,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1152,20 +1152,24 @@ swamp-rat-nest-default-event-handler (defstate swamp-rat-nest-idle (swamp-rat-nest) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('hit) - (go swamp-rat-nest-active) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('hit) + (go swamp-rat-nest-active) + ) + ) + ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (and *target* (>= (-> self fact-override idle-distance) - (vector-vector-distance (-> self root trans) (-> *target* control trans)) - ) - ) + (vector-vector-distance (-> self root trans) (-> *target* control trans)) + ) + ) (go swamp-rat-nest-active) ) (none) @@ -1186,7 +1190,10 @@ swamp-rat-nest-default-event-handler :event swamp-rat-nest-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (swamp-rat-nest-check-dummy) @@ -1224,7 +1231,10 @@ swamp-rat-nest-default-event-handler :event swamp-rat-nest-default-event-handler :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (swamp-rat-nest-check-dummy) @@ -1349,10 +1359,10 @@ swamp-rat-nest-default-event-handler (defmethod dummy-20 swamp-rat-nest-dummy-a ((obj swamp-rat-nest-dummy-a)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -1368,10 +1378,10 @@ swamp-rat-nest-default-event-handler (defmethod dummy-20 swamp-rat-nest-dummy-b ((obj swamp-rat-nest-dummy-b)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -1387,10 +1397,10 @@ swamp-rat-nest-default-event-handler (defmethod dummy-20 swamp-rat-nest-dummy-c ((obj swamp-rat-nest-dummy-c)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) diff --git a/goal_src/levels/swamp/swamp-rat.gc b/goal_src/levels/swamp/swamp-rat.gc index a184f34017..b819a937b3 100644 --- a/goal_src/levels/swamp/swamp-rat.gc +++ b/goal_src/levels/swamp/swamp-rat.gc @@ -108,7 +108,10 @@ swamp-rat-default-event-handler :event swamp-rat-default-event-handler :post - (behavior () (ja-post) (none)) + (behavior () + (ja-post) + (none) + ) ) (defstate nav-enemy-patrol (swamp-rat) @@ -262,7 +265,11 @@ swamp-rat-default-event-handler (none) ) :post - (behavior () (swamp-rat-update-wiggle-target (target-pos 0)) (nav-enemy-travel-post) (none)) + (behavior () + (swamp-rat-update-wiggle-target (target-pos 0)) + (nav-enemy-travel-post) + (none) + ) ) (defstate nav-enemy-stop-chase (swamp-rat) @@ -441,13 +448,11 @@ swamp-rat-default-event-handler (set! f30-0 (seek f30-0 1.5 0.1)) (vector-v++! (-> self collide-info transv) gp-0) (dummy-59 (-> self collide-info) (-> self collide-info transv) (the-as uint 1) 8192.0 #t #f #f) - (when (or - (logtest? (-> self collide-info status) 4) - (or - (< (-> self collide-info trans y) (-> self min-height)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + (when (or (logtest? (-> self collide-info status) 4) + (or (< (-> self collide-info trans y) (-> self min-height)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) + ) ) - ) 0 (goto cfg-13) ) @@ -554,10 +559,10 @@ swamp-rat-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001) (set-root-prim! s5-0 s4-0) ) diff --git a/goal_src/levels/training/training-obs.gc b/goal_src/levels/training/training-obs.gc index cc7f6b491f..23f724877e 100644 --- a/goal_src/levels/training/training-obs.gc +++ b/goal_src/levels/training/training-obs.gc @@ -81,33 +81,29 @@ :code (behavior () (while #t - (when (and - *target* - (< (vector-vector-distance (target-pos 0) (-> self root trans)) (-> self range)) - (-> *setting-control* current play-hints) - (and - (< 0.0 (-> *setting-control* current dialog-volume)) - (let ((a0-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) - (or (not a0-3) (zero? (logand (-> a0-3 extra perm status) (entity-perm-status dead)))) - ) - ) - ) + (when (and *target* + (< (vector-vector-distance (target-pos 0) (-> self root trans)) (-> self range)) + (-> *setting-control* current play-hints) + (and (< 0.0 (-> *setting-control* current dialog-volume)) + (let ((a0-3 (entity-actor-lookup (-> self entity) 'alt-actor 0))) + (or (not a0-3) (zero? (logand (-> a0-3 extra perm status) (entity-perm-status dead)))) + ) + ) + ) (when (!= (-> self index) 6) - (while (and - *target* - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) (suspend) ) (set! (-> self state-time) (the-as uint (-> *display* base-frame-counter))) (process-grab? *target*) (process-entity-status! self (entity-perm-status bit-3) #t) - (until (not (or (-> *setting-control* current talking) (or - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - ) + (until (not (or (-> *setting-control* current talking) (or (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + ) ) ) (set-setting! *setting-control* self 'allow-progress #f 0.0 0) @@ -120,13 +116,12 @@ ) (copy-settings-from-target! *setting-control*) (dotimes (gp-1 2) - (while (or - (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - *progress-process* - ) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + *progress-process* + ) (suspend) ) ) @@ -332,12 +327,12 @@ ) (let ((a0-61 (-> self entity))) (if (when a0-61 - (let ((a0-62 (-> a0-61 extra perm task))) - (if a0-62 - (= a0-62 (game-task none)) - ) - ) + (let ((a0-62 (-> a0-61 extra perm task))) + (if a0-62 + (= a0-62 (game-task none)) + ) ) + ) (set! (-> self entity extra perm task) (game-task complete)) ) ) @@ -434,10 +429,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) @@ -505,10 +500,10 @@ (defmethod TODO-RENAME-24 tra-iris-door ((obj tra-iris-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -857,21 +852,18 @@ (dummy-11 a0-24 (-> self intersection)) (target-pos 0) ) - (the-as symbol (and - ((method-of-type touching-shapes-entry prims-touching?) - (the-as touching-shapes-entry (-> arg3 param 0)) - (the-as collide-shape-moving (-> self root-override)) - (the-as uint 2) - ) - (or - (= (-> self type) scarecrow-a) - (and - (= (-> arg0 type) target) - (logtest? (-> (the-as target arg0) control unknown-surface00 flags) 2048) - (zero? (logand (-> (the-as target arg0) control status) 1)) + (the-as symbol (and ((method-of-type touching-shapes-entry prims-touching?) + (the-as touching-shapes-entry (-> arg3 param 0)) + (the-as collide-shape-moving (-> self root-override)) + (the-as uint 2) ) - ) - ) + (or (= (-> self type) scarecrow-a) + (and (= (-> arg0 type) target) + (logtest? (-> (the-as target arg0) control unknown-surface00 flags) 2048) + (zero? (logand (-> (the-as target arg0) control status) 1)) + ) + ) + ) ) ) ) @@ -1049,24 +1041,24 @@ (defmethod init-from-entity! scarecrow-a ((obj scarecrow-a) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 7372.8 0.0 7372.8) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 12288.0 0.0 7372.8) (append-prim s3-0 s2-1) ) @@ -1261,32 +1253,32 @@ (defmethod init-from-entity! scarecrow-b ((obj scarecrow-b) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 14336.0 0.0 15564.8) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 14745.6 0.0 6553.6) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 20480.0 0.0 6553.6) (append-prim s3-0 s2-2) ) diff --git a/goal_src/levels/village1/farmer.gc b/goal_src/levels/village1/farmer.gc index 937b2eb1d1..50b842b664 100644 --- a/goal_src/levels/village1/farmer.gc +++ b/goal_src/levels/village1/farmer.gc @@ -26,154 +26,122 @@ ) (defmethod play-anim! farmer ((obj farmer) (arg0 symbol)) - (case (current-status (-> obj tasks)) - (((task-status need-hint) (task-status need-introduction)) + (case (current-status (-> obj tasks)) + (((task-status need-hint) (task-status need-introduction)) (if arg0 - (close-status! (-> obj tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "farmer-introduction" - :index 6 - :parts 5 - :command-list '() - ) + (close-status! (-> obj tasks) (task-status need-introduction)) + ) + (new 'static 'spool-anim :name "farmer-introduction" :index 6 :parts 5 :command-list '()) ) - (((task-status need-reminder)) - (set! (-> obj skippable) #t) - (cond - ((zero? (get-reminder (-> obj tasks) 0)) + (((task-status need-reminder)) + (set! (-> obj skippable) #t) + (cond + ((zero? (get-reminder (-> obj tasks) 0)) + (if arg0 + (save-reminder (-> obj tasks) 1 0) + ) + (new 'static 'spool-anim :name "farmer-reminder-1" :index 7 :parts 2 :command-list '()) + ) + (else + (if arg0 + (save-reminder (-> obj tasks) 0 0) + ) + (new 'static 'spool-anim :name "farmer-reminder-2" :index 8 :parts 2 :command-list '()) + ) + ) + ) + (((task-status need-reward-speech)) + (when arg0 + (set! (-> obj cell-for-task) (current-task (-> obj tasks))) + (close-current! (-> obj tasks)) + ) + (new 'static 'spool-anim :name "farmer-resolution" :index 9 :parts 4 :command-list '()) + ) + (else (if arg0 - (save-reminder (-> obj tasks) 1 0) - ) - (new 'static 'spool-anim - :name "farmer-reminder-1" - :index 7 - :parts 2 - :command-list '() - ) + (format + 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> obj name) + (task-status->string (current-status (-> obj tasks))) + ) + ) + (-> obj draw art-group data 4) ) - (else - (if arg0 - (save-reminder (-> obj tasks) 0 0) - ) - (new 'static 'spool-anim - :name "farmer-reminder-2" - :index 8 - :parts 2 - :command-list '() - ) - ) - ) ) - (((task-status need-reward-speech)) - (when arg0 - (set! (-> obj cell-for-task) (current-task (-> obj tasks))) - (close-current! (-> obj tasks)) - ) - (new 'static 'spool-anim - :name "farmer-resolution" - :index 9 - :parts 4 - :command-list '() - ) - ) - (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> obj name) - (task-status->string (current-status (-> obj tasks))) - ) - ) - (-> obj draw art-group data 4) - ) - ) ) (defmethod get-art-elem farmer ((obj farmer)) - (case (current-status (-> obj tasks)) - (((task-status need-hint) - (task-status need-introduction) - (task-status need-resolution) - (task-status invalid) - ) + (case (current-status (-> obj tasks)) + (((task-status need-hint) (task-status need-introduction) (task-status need-resolution) (task-status invalid)) (-> obj draw art-group data 4) ) - (else - (-> obj draw art-group data 5) + (else + (-> obj draw art-group data 5) + ) ) - ) ) (defmethod TODO-RENAME-43 farmer ((obj farmer)) - (when - (TODO-RENAME-10 - (-> obj ambient) - (new 'stack-no-clear 'vector) - 9000 - 122880.0 - obj - ) - (let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-4 (the-as number (logior #x3f800000 v1-3))) - (f0-2 (+ -1.0 (the-as float v1-4))) + (when (TODO-RENAME-10 (-> obj ambient) (new 'stack-no-clear 'vector) 9000 122880.0 obj) + (let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-4 (the-as number (logior #x3f800000 v1-3))) + (f0-2 (+ -1.0 (the-as float v1-4))) + ) + (cond + ((< 0.8333333 f0-2) + (play-ambient (-> obj ambient) "FAR-LO1A" #f (-> obj root-override trans)) + ) + ((< 0.6666667 f0-2) + (play-ambient (-> obj ambient) "FAR-AM01" #f (-> obj root-override trans)) + ) + ((< 0.5 f0-2) + #f + ) + ((< 0.33333334 f0-2) + (play-ambient (-> obj ambient) "FAR-AM2A" #f (-> obj root-override trans)) + ) + ((< 0.16666667 f0-2) + (play-ambient (-> obj ambient) "FAR-AM02" #f (-> obj root-override trans)) + ) + (else + #f ) - (cond - ((< 0.8333333 f0-2) - (play-ambient (-> obj ambient) "FAR-LO1A" #f (-> obj root-override trans)) + ) ) - ((< 0.6666667 f0-2) - (play-ambient (-> obj ambient) "FAR-AM01" #f (-> obj root-override trans)) - ) - ((< 0.5 f0-2) - #f - ) - ((< 0.33333334 f0-2) - (play-ambient (-> obj ambient) "FAR-AM2A" #f (-> obj root-override trans)) - ) - ((< 0.16666667 f0-2) - (play-ambient (-> obj ambient) "FAR-AM02" #f (-> obj root-override trans)) - ) - (else - #f - ) - ) ) - ) ) (defmethod initialize-collision farmer ((obj farmer) (arg0 int) (arg1 vector)) - (let - ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) - (set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0) - (set-root-prim! s5-0 s4-0) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) - (append-prim s4-0 s3-0) - ) - (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) - (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) - (append-prim s4-0 s3-1) - ) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) + (append-prim s4-0 s3-0) + ) + (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) + (append-prim s4-0 s3-1) + ) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) diff --git a/goal_src/levels/village1/fishermans-boat.gc b/goal_src/levels/village1/fishermans-boat.gc index 19de330aeb..58a64d562d 100644 --- a/goal_src/levels/village1/fishermans-boat.gc +++ b/goal_src/levels/village1/fishermans-boat.gc @@ -806,16 +806,13 @@ ) ) ) - (when (and - (-> self player-riding) - (and - (zero? (-> self root-overlay riders num-riders)) - (or - (not *target*) - (< 32768.0 (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans))) - ) - ) - ) + (when (and (-> self player-riding) + (and (zero? (-> self root-overlay riders num-riders)) + (or (not *target*) + (< 32768.0 (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans))) + ) + ) + ) (if (process-release? *target*) (set! (-> self kill-player) #t) ) @@ -871,13 +868,12 @@ (defbehavior fishermans-boat-leave-dock? fishermans-boat () (let ((gp-0 #f)) - (when (and - (< (vector-vector-distance (target-pos 0) (-> self rbody position)) 6144.0) - (or (task-complete? *game-info* (game-task jungle-fishgame)) (and *cheat-mode* (cpad-hold? 0 l3))) - (not (level-hint-displayed?)) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 900) - (file-status *art-control* (-> self anim name) 0) - ) + (when (and (< (vector-vector-distance (target-pos 0) (-> self rbody position)) 6144.0) + (or (task-complete? *game-info* (game-task jungle-fishgame)) (and *cheat-mode* (cpad-hold? 0 l3))) + (not (level-hint-displayed?)) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 900) + (file-status *art-control* (-> self anim name) 0) + ) (hide-hud) (level-hint-surpress!) (kill-current-level-hint '() '(sidekick voicebox) 'exit) @@ -916,11 +912,10 @@ ) ) (let ((f0-0 (vector-vector-xz-distance (-> self root-overlay trans) (-> self dock-point)))) - (when (and - (= (-> self controller path-dest-index) (-> self dock-point-index)) - (not (-> self anchored)) - (< f0-0 81920.0) - ) + (when (and (= (-> self controller path-dest-index) (-> self dock-point-index)) + (not (-> self anchored)) + (< f0-0 81920.0) + ) (set! (-> self ignition) #f) (set! (-> self anchored) #t) ) @@ -935,7 +930,10 @@ rigid-body-platform-event-handler ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (fishermans-boat-leave-dock?) @@ -1068,7 +1066,10 @@ rigid-body-platform-event-handler ) :enter - (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (none)) + (behavior () + (set! (-> self state-time) (-> *display* base-frame-counter)) + (none) + ) :trans (behavior () (if (fishermans-boat-leave-dock?) @@ -1227,7 +1228,11 @@ (defstate fishermans-boat-player-control (fishermans-boat) :exit - (behavior () (send-event *camera* 'change-state *camera-base-mode* 0) (set! (-> self auto-pilot) #t) (none)) + (behavior () + (send-event *camera* 'change-state *camera-base-mode* 0) + (set! (-> self auto-pilot) #t) + (none) + ) :trans (behavior () (let ((gp-0 (new 'stack-no-clear 'vector))) @@ -1274,7 +1279,10 @@ (defstate fishermans-boat-measurements (fishermans-boat) :exit - (behavior () (set! (-> self measure-parameters) #f) (none)) + (behavior () + (set! (-> self measure-parameters) #f) + (none) + ) :trans (behavior () (if (cpad-pressed? 1 square) @@ -1348,17 +1356,17 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 61440.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 61440.0) (append-prim s4-0 s3-0) @@ -1469,12 +1477,12 @@ (set! (-> obj draw origin-joint-index) (the-as uint 3)) (let ((a0-29 (-> obj entity))) (if (when a0-29 - (let ((a0-30 (-> a0-29 extra perm task))) - (if a0-30 - (= a0-30 (game-task none)) - ) - ) + (let ((a0-30 (-> a0-29 extra perm task))) + (if a0-30 + (= a0-30 (game-task none)) + ) ) + ) (set! (-> obj entity extra perm task) (game-task complete)) ) ) @@ -1585,11 +1593,10 @@ (suspend) ) ) - (while (or - (-> *setting-control* current ambient) - (-> *setting-control* current hint) - (-> *setting-control* current movie) - ) + (while (or (-> *setting-control* current ambient) + (-> *setting-control* current hint) + (-> *setting-control* current movie) + ) (suspend) ) (suspend) @@ -1610,7 +1617,12 @@ (none) ) :post - (behavior () (ja-post) (fishermans-boat-spawn-particles 81920.0) (fishermans-boat-play-sounds) (none)) + (behavior () + (ja-post) + (fishermans-boat-spawn-particles 81920.0) + (fishermans-boat-play-sounds) + (none) + ) ) (defstate fishermans-boat-ride-to-village1 (fishermans-boat) @@ -1749,7 +1761,12 @@ (none) ) :post - (behavior () (ja-post) (fishermans-boat-spawn-particles 81920.0) (fishermans-boat-play-sounds) (none)) + (behavior () + (ja-post) + (fishermans-boat-spawn-particles 81920.0) + (fishermans-boat-play-sounds) + (none) + ) ) diff --git a/goal_src/levels/village1/sage.gc b/goal_src/levels/village1/sage.gc index 83048104fd..24ade71998 100644 --- a/goal_src/levels/village1/sage.gc +++ b/goal_src/levels/village1/sage.gc @@ -29,1300 +29,585 @@ (defmethod play-anim! sage ((obj sage) (arg0 symbol)) (with-pp - (when (!= *kernel-boot-message* 'play) - (close-specific-task! (game-task intro) (task-status need-resolution)) - (return - (new 'static 'spool-anim - :name "sage-introduction-misty-cannon" - :index 8 - :parts 12 - :command-list - '( - ((the binteger 1) - blackout - 0 - ) - ((the binteger 100) - want-levels - village1 - misty - ) - ((the binteger 261) - joint - "cameraB" - ) - ((the binteger 521) - joint - "camera" - ) - ((the binteger 776) - joint - "cameraB" - ) - ((the binteger 810) - joint - "camera" - ) - ((the binteger 1171) - joint - "cameraB" - ) - ((the binteger 1235) - joint - "camera" - ) - ((the binteger 1235) - save - ) - ((the binteger 1418) blackout (the binteger 30)) - ) - ) - ) - ) - (case (current-status (-> obj tasks)) - (((task-status need-hint) (task-status need-introduction)) - (case (current-task (-> obj tasks)) - (((game-task intro)) - (when arg0 - (close-status! (-> obj tasks) (task-status need-introduction)) - (set-setting! *setting-control* pp 'music-volume-movie 'abs 0.0 0) - (copy-settings-from-target! *setting-control*) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-d1" - :index 16 - :parts 17 - :command-list - '( - (0 - display-level - misty - #f - ) - (0 - display-level - village1 - display - ) - (0 - want-vis - vi1 - ) - (0 - save - ) - (0 - want-force-inside - village1 - #t - ) - (0 - want-force-vis - village1 - #t - ) - (0 - kill - "assistant-11" - ) - (0 - kill - "reflector-middle-2" - ) - (0 - kill - "eco-11" - ) - (0 - kill - "eco-10" - ) - (0 - kill - "sharkey-12" - ) - (0 - kill - "reflector-end-1" - ) - (0 - kill - "water-vol-10" - ) - (0 - kill - "water-vol-8" - ) - (0 - kill - "water-vol-7" - ) - (0 - kill - "fishermans-boat-2" - ) - (0 - kill - "revcycleprop-2" - ) - (0 - kill - "revcycle-8" - ) - (0 - kill - "ropebridge-5" - ) - (0 - kill - "ropebridge-4" - ) - (0 - kill - "villagea-water-2" - ) - (0 - time-of-day - (the binteger 7) - ) - ((the binteger 1) - time-of-day - (the binteger -1) - ) - ((the binteger 3) - blackout - 0 - ) - ((the binteger 25) - blackout - 0 - ) - ((the binteger 25) - want-force-vis - village1 - #f - ) - ((the binteger 56) - joint - "cameraB" - ) - ((the binteger 100) - want-force-inside - village1 - #f - ) - ((the binteger 107) - joint - "camera" - ) - ((the binteger 137) - joint - "cameraB" - ) - ((the binteger 202) - joint - "camera" - ) - ((the binteger 286) - joint - "cameraB" - ) - ((the binteger 554) - joint - "camera" - ) - ((the binteger 633) - joint - "cameraB" - ) - ((the binteger 711) - joint - "camera" - ) - ((the binteger 796) - joint - "cameraB" - ) - ((the binteger 921) - joint - "camera" - ) - ((the binteger 1021) - shadow - self - #f - ) - ((the binteger 1021) - joint - "cameraB" - ) - ((the binteger 1081) - joint - "camera" - ) - ((the binteger 1183) - joint - "cameraB" - ) - ((the binteger 1221) - joint - "camera" - ) - ((the binteger 1496) - shadow - self - #t - ) - ((the binteger 1496) - joint - "cameraB" - ) - ((the binteger 1496) - time-of-day - (the binteger 18) - ) - ((the binteger 1721) - joint - "camera" - ) - ((the binteger 1721) - time-of-day - (the binteger 7) - ) - ((the binteger 1722) time-of-day (the binteger -1)) - ) - ) - ) - (((game-task beach-ecorocks)) - (when arg0 - (let* ((s5-1 (-> obj tasks)) - (s4-0 (method-of-object s5-1 save-reminder)) - (a1-6 (new 'stack-no-clear 'event-message-block)) + (when (!= *kernel-boot-message* 'play) + (close-specific-task! (game-task intro) (task-status need-resolution)) + (return (new 'static 'spool-anim + :name "sage-introduction-misty-cannon" + :index 8 + :parts 12 + :command-list + '((1 blackout 0) + (100 want-levels village1 misty) + (261 joint "cameraB") + (521 joint "camera") + (776 joint "cameraB") + (810 joint "camera") + (1171 joint "cameraB") + (1235 joint "camera") + (1235 save) + (1418 blackout 30) + ) ) - (set! (-> a1-6 from) pp) - (set! (-> a1-6 num-params) 2) - (set! (-> a1-6 message) 'query) - (set! (-> a1-6 param 0) (the-as uint 'pickup)) - (set! (-> a1-6 param 1) (the-as uint 6)) - (s4-0 - s5-1 - (the int (the-as float (send-event-function *target* a1-6))) - 1 - ) - ) - (close-status! (-> obj tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-e" - :index 14 - :parts 13 - :command-list - '( - (0 - want-levels - village1 - beach - ) - (0 - blackout - 0 - ) - ((the binteger 197) - joint - "cameraB" - ) - ((the binteger 361) - joint - "camera" - ) - ((the binteger 660) - joint - "cameraB" - ) - ((the binteger 937) - display-level - beach - movie - ) - ((the binteger 937) - want-force-vis - beach - #t - ) - ((the binteger 938) - alive - "ecoventrock-3" - ) - ((the binteger 938) - alive - "ecoventrock-4" - ) - ((the binteger 938) - alive - "ecoventrock-5" - ) - ((the binteger 938) - alive - "ecoventrock-6" - ) - ((the binteger 938) - alive - "ecoventrock-7" - ) - ((the binteger 938) - alive - "harvester-87" - ) - ((the binteger 938) - alive - "harvester-88" - ) - ((the binteger 938) - alive - "harvester-89" - ) - ((the binteger 938) - alive - "harvester-90" - ) - ((the binteger 938) - alive - "harvester-91" - ) - ((the binteger 940) - joint - "camera" - ) - ((the binteger 1160) - joint - "cameraB" - ) - ((the binteger 1162) - dead - "ecoventrock-3" - ) - ((the binteger 1162) - dead - "ecoventrock-4" - ) - ((the binteger 1162) - dead - "ecoventrock-5" - ) - ((the binteger 1162) - dead - "ecoventrock-6" - ) - ((the binteger 1162) - dead - "ecoventrock-7" - ) - ((the binteger 1162) - dead - "harvester-87" - ) - ((the binteger 1162) - dead - "harvester-88" - ) - ((the binteger 1162) - dead - "harvester-89" - ) - ((the binteger 1162) - dead - "harvester-90" - ) - ((the binteger 1162) - dead - "harvester-91" - ) - ((the binteger 1310) - joint - "camera" - ) - ((the binteger 1313) - want-force-vis - beach - #f - ) - ((the binteger 1313) - display-level - beach - #f - ) - ((the binteger 1313) send-event "warp-gate-switch-3" 'hide) - ) - ) - ) - (else - (if arg0 - (close-status! (-> obj tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "sage-introduction-misty-cannon" - :index 8 - :parts 12 - :command-list - '( - (0 - want-levels - village1 - beach - ) - ((the binteger 261) - joint - "cameraB" - ) - ((the binteger 521) - joint - "camera" - ) - ((the binteger 776) - joint - "cameraB" - ) - ((the binteger 810) - joint - "camera" - ) - ((the binteger 1171) - joint - "cameraB" - ) - ((the binteger 1235) joint "camera") - ) - ) - ) - ) + ) ) - (((task-status need-reminder)) - (set! (-> obj skippable) #t) - (if arg0 - (set! (-> obj reminder-played) #t) - ) - (case (get-reminder (-> obj tasks) 0) - ((3) - (new 'static 'spool-anim - :name "sage-reminder-2-generic" - :index 13 - :parts 4 - :command-list '() - ) - ) - ((2) - (new 'static 'spool-anim - :name "sage-reminder-1-generic" - :index 12 - :parts 3 - :command-list '() - ) - ) - ((1) - (new 'static 'spool-anim - :name "sage-reminder-1-misty-cannon" - :index 9 - :parts 5 - :command-list - '( - ((the binteger 86) joint "cameraB") ((the binteger 320) joint "camera") + (case (current-status (-> obj tasks)) + (((task-status need-hint) (task-status need-introduction)) + (case (current-task (-> obj tasks)) + (((game-task intro)) + (when arg0 + (close-status! (-> obj tasks) (task-status need-introduction)) + (set-setting! *setting-control* pp 'music-volume-movie 'abs 0.0 0) + (copy-settings-from-target! *setting-control*) + ) + (new 'static 'spool-anim + :name "sage-intro-sequence-d1" + :index 16 + :parts 17 + :command-list + '((0 display-level misty #f) + (0 display-level village1 display) + (0 want-vis vi1) + (0 save) + (0 want-force-inside village1 #t) + (0 want-force-vis village1 #t) + (0 kill "assistant-11") + (0 kill "reflector-middle-2") + (0 kill "eco-11") + (0 kill "eco-10") + (0 kill "sharkey-12") + (0 kill "reflector-end-1") + (0 kill "water-vol-10") + (0 kill "water-vol-8") + (0 kill "water-vol-7") + (0 kill "fishermans-boat-2") + (0 kill "revcycleprop-2") + (0 kill "revcycle-8") + (0 kill "ropebridge-5") + (0 kill "ropebridge-4") + (0 kill "villagea-water-2") + (0 time-of-day 7) + (1 time-of-day -1) + (3 blackout 0) + (25 blackout 0) + (25 want-force-vis village1 #f) + (56 joint "cameraB") + (100 want-force-inside village1 #f) + (107 joint "camera") + (137 joint "cameraB") + (202 joint "camera") + (286 joint "cameraB") + (554 joint "camera") + (633 joint "cameraB") + (711 joint "camera") + (796 joint "cameraB") + (921 joint "camera") + (1021 shadow self #f) + (1021 joint "cameraB") + (1081 joint "camera") + (1183 joint "cameraB") + (1221 joint "camera") + (1496 shadow self #t) + (1496 joint "cameraB") + (1496 time-of-day 18) + (1721 joint "camera") + (1721 time-of-day 7) + (1722 time-of-day -1) + ) + ) ) - ) + (((game-task beach-ecorocks)) + (when arg0 + (let* ((s5-1 (-> obj tasks)) + (s4-0 (method-of-object s5-1 save-reminder)) + (a1-6 (new 'stack-no-clear 'event-message-block)) + ) + (set! (-> a1-6 from) pp) + (set! (-> a1-6 num-params) 2) + (set! (-> a1-6 message) 'query) + (set! (-> a1-6 param 0) (the-as uint 'pickup)) + (set! (-> a1-6 param 1) (the-as uint 6)) + (s4-0 s5-1 (the int (the-as float (send-event-function *target* a1-6))) 1) + ) + (close-status! (-> obj tasks) (task-status need-introduction)) + ) + (new 'static 'spool-anim + :name "sage-intro-sequence-e" + :index 14 + :parts 13 + :command-list + '((0 want-levels village1 beach) + (0 blackout 0) + (197 joint "cameraB") + (361 joint "camera") + (660 joint "cameraB") + (937 display-level beach movie) + (937 want-force-vis beach #t) + (938 alive "ecoventrock-3") + (938 alive "ecoventrock-4") + (938 alive "ecoventrock-5") + (938 alive "ecoventrock-6") + (938 alive "ecoventrock-7") + (938 alive "harvester-87") + (938 alive "harvester-88") + (938 alive "harvester-89") + (938 alive "harvester-90") + (938 alive "harvester-91") + (940 joint "camera") + (1160 joint "cameraB") + (1162 dead "ecoventrock-3") + (1162 dead "ecoventrock-4") + (1162 dead "ecoventrock-5") + (1162 dead "ecoventrock-6") + (1162 dead "ecoventrock-7") + (1162 dead "harvester-87") + (1162 dead "harvester-88") + (1162 dead "harvester-89") + (1162 dead "harvester-90") + (1162 dead "harvester-91") + (1310 joint "camera") + (1313 want-force-vis beach #f) + (1313 display-level beach #f) + (1313 send-event "warp-gate-switch-3" 'hide) + ) + ) + ) + (else + (if arg0 + (close-status! (-> obj tasks) (task-status need-introduction)) + ) + (new 'static 'spool-anim + :name "sage-introduction-misty-cannon" + :index 8 + :parts 12 + :command-list + '((0 want-levels village1 beach) + (261 joint "cameraB") + (521 joint "camera") + (776 joint "cameraB") + (810 joint "camera") + (1171 joint "cameraB") + (1235 joint "camera") + ) + ) + ) + ) + ) + (((task-status need-reminder)) + (set! (-> obj skippable) #t) + (if arg0 + (set! (-> obj reminder-played) #t) + ) + (case (get-reminder (-> obj tasks) 0) + ((3) + (new 'static 'spool-anim :name "sage-reminder-2-generic" :index 13 :parts 4 :command-list '()) + ) + ((2) + (new 'static 'spool-anim :name "sage-reminder-1-generic" :index 12 :parts 3 :command-list '()) + ) + ((1) + (new 'static 'spool-anim + :name "sage-reminder-1-misty-cannon" + :index 9 + :parts 5 + :command-list + '((86 joint "cameraB") (320 joint "camera")) + ) + ) + (else + (new 'static 'spool-anim + :name "sage-reminder-1-ecorocks" + :index 11 + :parts 4 + :command-list + '((0 want-levels village1 beach) + (245 display-level beach movie) + (245 want-force-vis beach #t) + (246 alive "ecoventrock-3") + (246 alive "ecoventrock-4") + (246 alive "ecoventrock-5") + (246 alive "ecoventrock-6") + (246 alive "ecoventrock-7") + (246 alive "harvester-87") + (246 alive "harvester-88") + (246 alive "harvester-89") + (246 alive "harvester-90") + (246 alive "harvester-91") + (246 joint "cameraB") + (365 want-force-vis beach #f) + (365 display-level beach #f) + (366 joint "camera") + ) + ) + ) + ) + ) + (((task-status need-reward-speech)) + (when arg0 + (set-setting! *setting-control* pp 'music-volume-movie 'abs 0.0 0) + (copy-settings-from-target! *setting-control*) + (close-status! (-> obj tasks) (task-status need-reward-speech)) + (let ((s5-2 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> obj assistant) + (ppointer->handle + (when s5-2 + (let ((t9-15 (method-of-type manipy activate))) + (t9-15 (the-as manipy s5-2) obj 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s5-2 manipy-init (-> obj root-override trans) (-> obj entity) *assistant-sg* #f) + (-> s5-2 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> obj assistant)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> obj assistant)) 'blend-shape #t) + (send-event (handle->process (-> obj assistant)) 'center-joint 3) + (let ((v1-68 (handle->process (-> obj assistant)))) + (if v1-68 + (set! (-> (the-as assistant v1-68) draw light-index) (the-as uint 1)) + ) + ) + (set! (-> obj draw bounds w) 40960.0) + ) + (new 'static 'spool-anim + :name "sage-intro-sequence-d2" + :index 15 + :parts 20 + :command-list + '((0 want-levels village1 beach) + (0 kill "assistant-11") + (0 kill "reflector-middle-2") + (0 kill "eco-11") + (0 kill "eco-10") + (0 kill "sharkey-12") + (0 kill "reflector-end-1") + (0 kill "water-vol-10") + (0 kill "water-vol-8") + (0 kill "water-vol-7") + (0 kill "fishermans-boat-2") + (0 kill "revcycleprop-2") + (0 kill "revcycle-8") + (113 joint "cameraB") + (232 joint "camera") + (289 joint "cameraB") + (338 joint "camera") + (405 joint "cameraB") + (560 joint "camera") + (660 joint "cameraB") + (699 joint "camera") + (837 joint "cameraB") + (837 shadow self #f) + (910 joint "camera") + (945 alive "farmer-3") + (945 alive "hutlamp-2") + (950 joint "cameraB") + (974 display-level beach movie) + (974 want-force-vis beach #t) + (1011 alive "bird-lady-4") + (1015 joint "camera") + (1018 dead "farmer-3") + (1018 dead "hutlamp-2") + (1075 alive "explorer-4") + (1080 joint "cameraB") + (1080 want-force-vis beach #f) + (1080 display-level beach #f) + (1082 dead "bird-lady-4") + (1133 joint "camera") + (1135 dead "explorer-4") + (1244 display-level beach movie) + (1244 want-force-vis beach #t) + (1245 alive "fuel-cell-42") + (1246 joint "cameraB") + (1369 joint "camera") + (1438 alive "fuel-cell-42") + (1438 want-force-vis beach #f) + (1438 dead "fuel-cell-42") + (1438 kill "villagea-water-2") + (1438 kill "crate-3147") + (1438 kill "crate-3146") + (1438 kill "crate-3143") + (1438 kill "sagesail-6") + (1438 kill "windmill-sail-4") + (1438 kill "ropebridge-4") + (1438 kill "ropebridge-5") + (1438 kill "windspinner-8") + (1438 kill "windspinner-9") + (1438 joint "cameraB") + (1439 want-levels village1 training) + (1439 save) + (1529 joint "camera") + (1691 joint "cameraB") + (1753 joint "camera") + (1874 joint "cameraB") + (2057 joint "camera") + (2176 joint "cameraB") + (2226 joint "camera") + (2226 shadow self #t) + ) + ) ) (else - (new 'static 'spool-anim - :name "sage-reminder-1-ecorocks" - :index 11 - :parts 4 - :command-list - '( - (0 - want-levels - village1 - beach + (if arg0 + (format + 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> obj name) + (task-status->string (current-status (-> obj tasks))) + ) ) - ((the binteger 245) - display-level - beach - movie - ) - ((the binteger 245) - want-force-vis - beach - #t - ) - ((the binteger 246) - alive - "ecoventrock-3" - ) - ((the binteger 246) - alive - "ecoventrock-4" - ) - ((the binteger 246) - alive - "ecoventrock-5" - ) - ((the binteger 246) - alive - "ecoventrock-6" - ) - ((the binteger 246) - alive - "ecoventrock-7" - ) - ((the binteger 246) - alive - "harvester-87" - ) - ((the binteger 246) - alive - "harvester-88" - ) - ((the binteger 246) - alive - "harvester-89" - ) - ((the binteger 246) - alive - "harvester-90" - ) - ((the binteger 246) - alive - "harvester-91" - ) - ((the binteger 246) - joint - "cameraB" - ) - ((the binteger 365) - want-force-vis - beach - #f - ) - ((the binteger 365) - display-level - beach - #f - ) - ((the binteger 366) joint "camera") - ) - ) - ) - ) - ) - (((task-status need-reward-speech)) - (when arg0 - (set-setting! *setting-control* pp 'music-volume-movie 'abs 0.0 0) - (copy-settings-from-target! *setting-control*) - (close-status! (-> obj tasks) (task-status need-reward-speech)) - (let ((s5-2 (get-process *default-dead-pool* manipy #x4000))) - (set! (-> obj assistant) (ppointer->handle (when s5-2 - (let - ((t9-15 - (method-of-type - manipy - activate - ) - ) - ) - (t9-15 - (the-as manipy s5-2) - obj - 'manipy - (the-as pointer #x70004000) - ) - ) - (run-now-in-process - s5-2 - manipy-init - (-> obj root-override trans) - (-> obj entity) - *assistant-sg* - #f - ) - (-> s5-2 ppointer) - ) - ) - ) - ) - (send-event (handle->process (-> obj assistant)) 'anim-mode 'clone-anim) - (send-event (handle->process (-> obj assistant)) 'blend-shape #t) - (send-event (handle->process (-> obj assistant)) 'center-joint 3) - (let ((v1-68 (handle->process (-> obj assistant)))) - (if v1-68 - (set! (-> (the-as assistant v1-68) draw light-index) (the-as uint 1)) - ) - ) - (set! (-> obj draw bounds w) 40960.0) - ) - (new 'static 'spool-anim - :name "sage-intro-sequence-d2" - :index 15 - :parts 20 - :command-list - '( - (0 - want-levels - village1 - beach - ) - (0 - kill - "assistant-11" - ) - (0 - kill - "reflector-middle-2" - ) - (0 - kill - "eco-11" - ) - (0 - kill - "eco-10" - ) - (0 - kill - "sharkey-12" - ) - (0 - kill - "reflector-end-1" - ) - (0 - kill - "water-vol-10" - ) - (0 - kill - "water-vol-8" - ) - (0 - kill - "water-vol-7" - ) - (0 - kill - "fishermans-boat-2" - ) - (0 - kill - "revcycleprop-2" - ) - (0 - kill - "revcycle-8" - ) - ((the binteger 113) - joint - "cameraB" - ) - ((the binteger 232) - joint - "camera" - ) - ((the binteger 289) - joint - "cameraB" - ) - ((the binteger 338) - joint - "camera" - ) - ((the binteger 405) - joint - "cameraB" - ) - ((the binteger 560) - joint - "camera" - ) - ((the binteger 660) - joint - "cameraB" - ) - ((the binteger 699) - joint - "camera" - ) - ((the binteger 837) - joint - "cameraB" - ) - ((the binteger 837) - shadow - self - #f - ) - ((the binteger 910) - joint - "camera" - ) - ((the binteger 945) - alive - "farmer-3" - ) - ((the binteger 945) - alive - "hutlamp-2" - ) - ((the binteger 950) - joint - "cameraB" - ) - ((the binteger 974) - display-level - beach - movie - ) - ((the binteger 974) - want-force-vis - beach - #t - ) - ((the binteger 1011) - alive - "bird-lady-4" - ) - ((the binteger 1015) - joint - "camera" - ) - ((the binteger 1018) - dead - "farmer-3" - ) - ((the binteger 1018) - dead - "hutlamp-2" - ) - ((the binteger 1075) - alive - "explorer-4" - ) - ((the binteger 1080) - joint - "cameraB" - ) - ((the binteger 1080) - want-force-vis - beach - #f - ) - ((the binteger 1080) - display-level - beach - #f - ) - ((the binteger 1082) - dead - "bird-lady-4" - ) - ((the binteger 1133) - joint - "camera" - ) - ((the binteger 1135) - dead - "explorer-4" - ) - ((the binteger 1244) - display-level - beach - movie - ) - ((the binteger 1244) - want-force-vis - beach - #t - ) - ((the binteger 1245) - alive - "fuel-cell-42" - ) - ((the binteger 1246) - joint - "cameraB" - ) - ((the binteger 1369) - joint - "camera" - ) - ((the binteger 1438) - alive - "fuel-cell-42" - ) - ((the binteger 1438) - want-force-vis - beach - #f - ) - ((the binteger 1438) - dead - "fuel-cell-42" - ) - ((the binteger 1438) - kill - "villagea-water-2" - ) - ((the binteger 1438) - kill - "crate-3147" - ) - ((the binteger 1438) - kill - "crate-3146" - ) - ((the binteger 1438) - kill - "crate-3143" - ) - ((the binteger 1438) - kill - "sagesail-6" - ) - ((the binteger 1438) - kill - "windmill-sail-4" - ) - ((the binteger 1438) - kill - "ropebridge-4" - ) - ((the binteger 1438) - kill - "ropebridge-5" - ) - ((the binteger 1438) - kill - "windspinner-8" - ) - ((the binteger 1438) - kill - "windspinner-9" - ) - ((the binteger 1438) - joint - "cameraB" - ) - ((the binteger 1439) - want-levels - village1 - training - ) - ((the binteger 1439) - save - ) - ((the binteger 1529) - joint - "camera" - ) - ((the binteger 1691) - joint - "cameraB" - ) - ((the binteger 1753) - joint - "camera" - ) - ((the binteger 1874) - joint - "cameraB" - ) - ((the binteger 2057) - joint - "camera" - ) - ((the binteger 2176) - joint - "cameraB" - ) - ((the binteger 2226) - joint - "camera" - ) - ((the binteger 2226) shadow self #t) + (get-art-elem obj) ) ) - ) - (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> obj name) - (task-status->string (current-status (-> obj tasks))) - ) - ) - (get-art-elem obj) - ) ) - ) ) (defmethod dummy-45 sage ((obj sage)) (cond - ((and - (closed? - (-> obj tasks) - (game-task beach-ecorocks) - (task-status need-reminder) - ) - (= (get-reminder (-> obj tasks) 0) 0) + ((and (closed? (-> obj tasks) (game-task beach-ecorocks) (task-status need-reminder)) + (= (get-reminder (-> obj tasks) 0) 0) + ) + #t ) - #t - ) - ((and - (closed? - (-> obj tasks) - (game-task misty-cannon) - (task-status need-reminder) - ) - (= (get-reminder (-> obj tasks) 0) 1) + ((and (closed? (-> obj tasks) (game-task misty-cannon) (task-status need-reminder)) + (= (get-reminder (-> obj tasks) 0) 1) + ) + #t ) - #t - ) - ((and - (-> obj reminder-played) - (< - 81920.0 - (vector-vector-distance (-> obj root-override trans) (camera-pos)) - ) + ((and (-> obj reminder-played) (< 81920.0 (vector-vector-distance (-> obj root-override trans) (camera-pos)))) + #t ) - #t + (else + ) ) - (else - ) - ) (none) ) (defmethod get-art-elem sage ((obj sage)) (cond - ((and - (= (current-task (-> obj tasks)) (game-task beach-ecorocks)) - (or - (= (current-status (-> obj tasks)) (task-status need-hint)) - (= (current-status (-> obj tasks)) (task-status need-introduction)) - ) + ((and (= (current-task (-> obj tasks)) (game-task beach-ecorocks)) + (or (= (current-status (-> obj tasks)) (task-status need-hint)) + (= (current-status (-> obj tasks)) (task-status need-introduction)) + ) + ) + (save-reminder (-> obj tasks) 0 0) ) - (save-reminder (-> obj tasks) 0 0) - ) - ((and - (= (current-task (-> obj tasks)) (game-task misty-cannon)) - (or - (= (current-status (-> obj tasks)) (task-status need-hint)) - (= (current-status (-> obj tasks)) (task-status need-introduction)) - ) + ((and (= (current-task (-> obj tasks)) (game-task misty-cannon)) + (or (= (current-status (-> obj tasks)) (task-status need-hint)) + (= (current-status (-> obj tasks)) (task-status need-introduction)) + ) + ) + (save-reminder (-> obj tasks) 1 0) ) - (save-reminder (-> obj tasks) 1 0) - ) - ((dummy-45 obj) - (set! (-> obj reminder-played) #f) - (cond - ((= (current-task (-> obj tasks)) (game-task none)) - (case (get-reminder (-> obj tasks) 0) - ((2) - (save-reminder (-> obj tasks) 3 0) - ) + ((dummy-45 obj) + (set! (-> obj reminder-played) #f) + (cond + ((= (current-task (-> obj tasks)) (game-task none)) + (case (get-reminder (-> obj tasks) 0) + ((2) + (save-reminder (-> obj tasks) 3 0) + ) + (else + (save-reminder (-> obj tasks) 2 0) + ) + ) + ) + ((closed? (-> obj tasks) (game-task beach-ecorocks) (task-status need-reminder)) + (save-reminder (-> obj tasks) 1 0) + ) + ((or (closed? (-> obj tasks) (game-task misty-cannon) (task-status need-reminder)) + (not (closed? (-> obj tasks) (game-task misty-cannon) (task-status need-introduction))) + ) + (save-reminder (-> obj tasks) 0 0) + ) + ((zero? (get-reminder (-> obj tasks) 0)) + (save-reminder (-> obj tasks) 1 0) + ) (else - (save-reminder (-> obj tasks) 2 0) - ) - ) - ) - ((closed? - (-> obj tasks) - (game-task beach-ecorocks) - (task-status need-reminder) - ) - (save-reminder (-> obj tasks) 1 0) - ) - ((or - (closed? - (-> obj tasks) - (game-task misty-cannon) - (task-status need-reminder) - ) - (not - (closed? - (-> obj tasks) - (game-task misty-cannon) - (task-status need-introduction) + (save-reminder (-> obj tasks) 0 0) ) - ) ) - (save-reminder (-> obj tasks) 0 0) - ) - ((zero? (get-reminder (-> obj tasks) 0)) - (save-reminder (-> obj tasks) 1 0) - ) - (else - (save-reminder (-> obj tasks) 0 0) - ) ) ) - ) - (case (get-reminder (-> obj tasks) 0) - ((3) + (case (get-reminder (-> obj tasks) 0) + ((3) (-> obj draw art-group data 7) ) - ((2) - (-> obj draw art-group data 6) + ((2) + (-> obj draw art-group data 6) + ) + ((1) + (-> obj draw art-group data 3) + ) + (else + (-> obj draw art-group data 4) + ) ) - ((1) - (-> obj draw art-group data 3) - ) - (else - (-> obj draw art-group data 4) - ) - ) ) (defmethod TODO-RENAME-43 sage ((obj sage)) - (let - ((s5-0 - (TODO-RENAME-10 - (-> obj ambient) - (new 'stack-no-clear 'vector) - 9000 - 122880.0 - obj - ) - ) - ) - (when s5-0 - (let* ((v1-2 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-3 (the-as number (logior #x3f800000 v1-2))) - (f0-2 (+ -1.0 (the-as float v1-3))) + (let ((s5-0 (TODO-RENAME-10 (-> obj ambient) (new 'stack-no-clear 'vector) 9000 122880.0 obj))) + (when s5-0 + (let* ((v1-2 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-3 (the-as number (logior #x3f800000 v1-2))) + (f0-2 (+ -1.0 (the-as float v1-3))) + ) + (cond + ((< (-> s5-0 y) -12288.0) + #f ) - (cond - ((< (-> s5-0 y) -12288.0) - #f - ) - ((< 0.8 f0-2) - (play-ambient - (-> obj ambient) - "SAGELP03" - #f - (-> obj root-override trans) + ((< 0.8 f0-2) + (play-ambient (-> obj ambient) "SAGELP03" #f (-> obj root-override trans)) + ) + ((< 0.6 f0-2) + (play-ambient (-> obj ambient) "SAGELP04" #f (-> obj root-override trans)) + ) + ((< 0.4 f0-2) + (play-ambient (-> obj ambient) "SAGELP05" #f (-> obj root-override trans)) + ) + ((< 0.2 f0-2) + (play-ambient (-> obj ambient) "SAGELP06" #f (-> obj root-override trans)) + ) + (else + (play-ambient (-> obj ambient) "SAGELP11" #f (-> obj root-override trans)) + ) + ) ) - ) - ((< 0.6 f0-2) - (play-ambient - (-> obj ambient) - "SAGELP04" - #f - (-> obj root-override trans) - ) - ) - ((< 0.4 f0-2) - (play-ambient - (-> obj ambient) - "SAGELP05" - #f - (-> obj root-override trans) - ) - ) - ((< 0.2 f0-2) - (play-ambient - (-> obj ambient) - "SAGELP06" - #f - (-> obj root-override trans) - ) - ) - (else - (play-ambient - (-> obj ambient) - "SAGELP11" - #f - (-> obj root-override trans) - ) - ) ) - ) ) - ) ) (defstate idle (sage) :virtual #t :trans (behavior () - (case (get-task-status (game-task intro)) - (((task-status need-reward-speech)) - (if (process-grab? *target*) - (send-event self 'play-anim) + (case (get-task-status (game-task intro)) + (((task-status need-reward-speech)) + (if (process-grab? *target*) + (send-event self 'play-anim) + ) ) ) + ((-> (method-of-type process-taskable idle) trans)) + (none) ) - ((-> (method-of-type process-taskable idle) trans)) - (none) - ) :code (behavior () - (if (!= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (if (!= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (get-art-elem self) ) - (get-art-elem self) + (ja-channel-push! 1 60) ) - (ja-channel-push! 1 60) - ) - (while #t - (let ((gp-0 (-> self skel root-channel 0))) - (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) - ) - (let* ((f30-0 3.0) - (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-10 (the-as number (logior #x3f800000 v1-9))) - ) - (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) - (TODO-RENAME-43 self) - (let ((a0-11 (-> self skel root-channel 0))) - (set! (-> a0-11 frame-group) (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (while #t + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (the-as art-joint-anim (get-art-elem self))) ) - (set! - (-> a0-11 param 0) - (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) - -1 - ) - ) - ) - (set! (-> a0-11 param 1) 1.0) - (set! (-> a0-11 frame-num) 0.0) - (joint-control-channel-group! - a0-11 - (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - num-func-seek! - ) - ) - (until (ja-done? 0) - (if - (and - (-> self reminder-played) - (< - 81920.0 - (vector-vector-distance (-> self root-override trans) (camera-pos)) - ) - ) - (go-virtual idle) - ) - (suspend) - (let ((a0-13 (-> self skel root-channel 0))) - (set! - (-> a0-13 param 0) - (the float (+ (-> a0-13 frame-group data 0 length) -1)) - ) - (set! (-> a0-13 param 1) 1.0) - (joint-control-channel-group-eval! - a0-13 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) - ) - (when (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) + (let* ((f30-0 3.0) + (v1-9 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-10 (the-as number (logior #x3f800000 v1-9))) + ) + (countdown (gp-1 (+ (the int (* f30-0 (+ -1.0 (the-as float v1-10)))) 5)) + (TODO-RENAME-43 self) + (let ((a0-11 (-> self skel root-channel 0))) + (set! (-> a0-11 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> a0-11 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) + -1 + ) + ) + ) + (set! (-> a0-11 param 1) 1.0) + (set! (-> a0-11 frame-num) 0.0) + (joint-control-channel-group! + a0-11 + (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + num-func-seek! ) - (-> self draw art-group data 4) - ) - (let ((a0-20 (-> self skel root-channel 0))) - (set! - (-> a0-20 frame-group) - (the-as art-joint-anim (-> self draw art-group data 5)) - ) - (set! - (-> a0-20 param 0) - (the - float - (+ - (-> - (the-as art-joint-anim (-> self draw art-group data 5)) - data - 0 - length + ) + (until (ja-done? 0) + (if (and (-> self reminder-played) + (< 81920.0 (vector-vector-distance (-> self root-override trans) (camera-pos))) + ) + (go-virtual idle) + ) + (suspend) + (let ((a0-13 (-> self skel root-channel 0))) + (set! (-> a0-13 param 0) (the float (+ (-> a0-13 frame-group data 0 length) -1))) + (set! (-> a0-13 param 1) 1.0) + (joint-control-channel-group-eval! a0-13 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + ) + (when (= (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 4) + ) + (let ((a0-20 (-> self skel root-channel 0))) + (set! (-> a0-20 frame-group) (the-as art-joint-anim (-> self draw art-group data 5))) + (set! (-> a0-20 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 5)) data 0 length) -1)) + ) + (set! (-> a0-20 param 1) 1.0) + (set! (-> a0-20 frame-num) 0.0) + (joint-control-channel-group! a0-20 (the-as art-joint-anim (-> self draw art-group data 5)) num-func-seek!) + ) + (until (ja-done? 0) + (suspend) + (let ((a0-21 (-> self skel root-channel 0))) + (set! (-> a0-21 param 0) (the float (+ (-> a0-21 frame-group data 0 length) -1))) + (set! (-> a0-21 param 1) 1.0) + (joint-control-channel-group-eval! a0-21 (the-as art-joint-anim #f) num-func-seek!) + ) ) - -1 - ) ) - ) - (set! (-> a0-20 param 1) 1.0) - (set! (-> a0-20 frame-num) 0.0) - (joint-control-channel-group! - a0-20 - (the-as art-joint-anim (-> self draw art-group data 5)) - num-func-seek! - ) ) - (until (ja-done? 0) - (suspend) - (let ((a0-21 (-> self skel root-channel 0))) - (set! - (-> a0-21 param 0) - (the float (+ (-> a0-21 frame-group data 0 length) -1)) - ) - (set! (-> a0-21 param 1) 1.0) - (joint-control-channel-group-eval! - a0-21 - (the-as art-joint-anim #f) - num-func-seek! - ) - ) - ) - ) + (none) ) - (none) - ) ) (defstate play-anim (sage) :virtual #t :exit (behavior () - (set! (-> self draw bounds w) 10240.0) - (let ((a0-1 (handle->process (-> self assistant)))) - (if a0-1 - (deactivate a0-1) - ) - ) - ((-> (method-of-type process-taskable play-anim) exit)) - (case (get-task-status (game-task intro)) - (((task-status need-resolution)) - (clear-pending-settings-from-process - *setting-control* - self - 'music-volume-movie - ) - (close-specific-task! (game-task intro) (task-status need-resolution)) - (start 'play (get-continue-by-name *game-info* "game-start")) + (set! (-> self draw bounds w) 10240.0) + (let ((a0-1 (handle->process (-> self assistant)))) + (if a0-1 + (deactivate a0-1) + ) ) + ((-> (method-of-type process-taskable play-anim) exit)) + (case (get-task-status (game-task intro)) + (((task-status need-resolution)) + (clear-pending-settings-from-process *setting-control* self 'music-volume-movie) + (close-specific-task! (game-task intro) (task-status need-resolution)) + (start 'play (get-continue-by-name *game-info* "game-start")) + ) + ) + (none) ) - (none) - ) :trans (behavior () - (case (get-task-status (game-task intro)) - (((task-status need-reward-speech)) - (spool-push *art-control* "sage-intro-sequence-d2" 0 self -1.0) + (case (get-task-status (game-task intro)) + (((task-status need-reward-speech)) + (spool-push *art-control* "sage-intro-sequence-d2" 0 self -1.0) + ) ) + ((-> (method-of-type process-taskable play-anim) trans)) + (none) ) - ((-> (method-of-type process-taskable play-anim) trans)) - (none) - ) ) (defmethod should-display? sage ((obj sage)) @@ -1330,39 +615,38 @@ ) (defmethod initialize-collision sage ((obj sage) (arg0 int) (arg1 vector)) - (let - ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) - (set! (-> s4-0 transform-index) arg0) - (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) - (set-root-prim! s5-0 s4-0) - (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) - (set! (-> s2-0 transform-index) arg0) - (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) - (append-prim s4-0 s2-0) - ) - (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) - (set! (-> s2-1 transform-index) arg0) - (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) - (append-prim s4-0 s2-1) - ) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s4-0 transform-index) arg0) + (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) + (set-root-prim! s5-0 s4-0) + (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) + (set! (-> s2-0 transform-index) arg0) + (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) + (append-prim s4-0 s2-0) + ) + (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) + (set! (-> s2-1 transform-index) arg0) + (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) + (append-prim s4-0 s2-1) + ) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) diff --git a/goal_src/levels/village1/village-obs-VI1.gc b/goal_src/levels/village1/village-obs-VI1.gc index 2a4a816ef8..0f778c9a65 100644 --- a/goal_src/levels/village1/village-obs-VI1.gc +++ b/goal_src/levels/village1/village-obs-VI1.gc @@ -475,20 +475,17 @@ (defmethod run-logic? windspinner ((obj windspinner)) - (or - (zero? (logand (-> obj mask) (process-mask actor-pause))) - (or - (and - (nonzero? (-> obj draw)) - (logtest? (-> obj draw status) (draw-status drwf03)) - (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) - (vector-vector-distance (-> obj root trans) (math-camera-pos)) - ) - ) - (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) - (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + (or (zero? (logand (-> obj mask) (process-mask actor-pause))) + (or (and (nonzero? (-> obj draw)) + (logtest? (-> obj draw status) (draw-status drwf03)) + (>= (+ (-> *ACTOR-bank* pause-dist) (-> obj root pause-adjust-distance)) + (vector-vector-distance (-> obj root trans) (math-camera-pos)) + ) + ) + (and (nonzero? (-> obj skel)) (!= (-> obj skel root-channel 0) (-> obj skel channel))) + (and (nonzero? (-> obj draw)) (logtest? (-> obj draw status) (draw-status drwf04))) + ) ) - ) ) (defskelgroup *windspinner-sg* windspinner @@ -508,11 +505,11 @@ (f0-1 (* f0-0 (+ (* f1-0 - (-> *wind-work* - wind-force - (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) - ) - ) + (-> *wind-work* + wind-force + (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) + ) + ) (-> self angle-vel) ) ) @@ -732,13 +729,16 @@ (defstate starfish-idle (starfish) :enter (behavior () - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-channel-set! 0) (none) ) :exit - (behavior () (ja-channel-set! 1) (none)) + (behavior () + (ja-channel-set! 1) + (none) + ) :trans (behavior () (if (and *target* (>= 163840.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans)))) @@ -767,8 +767,7 @@ :trans (behavior () (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (if (or - (not *target*) + (if (or (not *target*) (< 204800.0 (vector-vector-distance (-> self collide-info trans) (-> *target* control trans))) ) (go starfish-idle) @@ -867,7 +866,7 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) (set-root-prim! s5-0 s4-0) ) @@ -935,10 +934,9 @@ (while #t (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 150) (set! (-> self state-time) (-> *display* base-frame-counter)) - (if (and - (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (< (process-drawable-child-count) (-> self child-count)) - ) + (if (and (and *target* (>= 204800.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (< (process-drawable-child-count) (-> self child-count)) + ) (starfish-spawn-child) ) ) diff --git a/goal_src/levels/village1/yakow.gc b/goal_src/levels/village1/yakow.gc index 4555f799ef..db7d04ba73 100644 --- a/goal_src/levels/village1/yakow.gc +++ b/goal_src/levels/village1/yakow.gc @@ -291,10 +291,9 @@ yakow-default-event-handler ) (set! (-> self travel-speed) (fmin (-> self travel-speed) (-> self final-speed))) (dummy-10 (-> self water)) - (when (and - (logtest? (-> self nav current-poly pat) 2) - (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) - ) + (when (and (logtest? (-> self nav current-poly pat) 2) + (not (and (-> self entity) (logtest? (-> self entity extra perm status) (entity-perm-status complete)))) + ) (set! (-> self in-pen) #t) (set! (-> self nav destination-pos quad) (-> self dest-base quad)) (yakow-task-complete? #t) @@ -343,11 +342,11 @@ yakow-default-event-handler (cond ((and (>= 409.6 (-> self final-speed)) (not (-> self rotating))) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 4) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 4) + ) + ) (ja-channel-push! 1 45) ) (let ((s5-0 (-> self skel root-channel 0))) @@ -371,8 +370,8 @@ yakow-default-event-handler ) ) (when (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) + (-> self skel root-channel 0 frame-group) + ) (-> self draw art-group data 6) ) ) @@ -509,16 +508,15 @@ yakow-default-event-handler ) :trans (behavior () - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) - (the-as int (-> *YAKOW-bank* default-patrol-time)) - ) - (and *target* (>= (-> self fact-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) + (the-as int (-> *YAKOW-bank* default-patrol-time)) ) - (not (yakow-facing-player? 21845.334)) - ) + (and *target* (>= (-> self fact-override idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (not (yakow-facing-player? 21845.334)) + ) (go yakow-notice) ) (none) @@ -592,7 +590,10 @@ yakow-default-event-handler (none) ) :code - (behavior () (go yakow-run-away) (none)) + (behavior () + (go yakow-run-away) + (none) + ) :post yakow-simple-post ) @@ -611,24 +612,22 @@ yakow-default-event-handler ) :trans (behavior () - (if (and - (>= (- (-> *display* base-frame-counter) (-> self state-time)) - (the-as int (-> *YAKOW-bank* default-patrol-time)) - ) - (not (-> self in-pen)) - (and *target* (>= (-> self fact-override idle-distance) - (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) - ) + (if (and (>= (- (-> *display* base-frame-counter) (-> self state-time)) + (the-as int (-> *YAKOW-bank* default-patrol-time)) ) - (not (yakow-facing-player? 21845.334)) - ) + (not (-> self in-pen)) + (and *target* (>= (-> self fact-override idle-distance) + (vector-vector-distance (-> self root-override trans) (-> *target* control trans)) + ) + ) + (not (yakow-facing-player? 21845.334)) + ) (go yakow-notice) ) (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) 15) - (when (or - (logtest? (nav-control-flags bit19) (-> self nav flags)) - (< (vector-vector-xz-distance (-> self root-override trans) (-> self nav destination-pos)) 4096.0) - ) + (when (or (logtest? (nav-control-flags bit19) (-> self nav flags)) + (< (vector-vector-xz-distance (-> self root-override trans) (-> self nav destination-pos)) 4096.0) + ) (if (-> self in-pen) (go yakow-graze) (go yakow-idle) @@ -684,11 +683,11 @@ yakow-default-event-handler (behavior () (while (< 546.13336 (fabs (deg-diff (-> self dest-rot) (y-angle (-> self root-override))))) (if (not (= (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - (-> self draw art-group data 6) - ) - ) + (-> self skel root-channel 0 frame-group) + ) + (-> self draw art-group data 6) + ) + ) (ja-channel-push! 1 22) ) (seek-toward-yaw-angle! (-> self root-override) (-> self dest-rot) 16384.0 150) @@ -802,9 +801,9 @@ yakow-default-event-handler ) ) (let* ((f0-2 (* (if (-> self run-mode) - 0.5 - 1.0 - ) + 0.5 + 1.0 + ) (vector-vector-distance (-> self root-override trans) (target-pos 0)) ) ) @@ -852,7 +851,10 @@ yakow-default-event-handler (none) ) :exit - (behavior () '() (none)) + (behavior () + '() + (none) + ) :trans (behavior () (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 60) @@ -936,8 +938,8 @@ yakow-default-event-handler :code (behavior () (let ((v1-1 (-> self root-override root-prim))) - (set! (-> v1-1 collide-with) (the-as uint 0)) - (set! (-> v1-1 prim-core collide-as) (the-as uint 0)) + (set! (-> v1-1 collide-with) (collide-kind)) + (set! (-> v1-1 prim-core collide-as) (collide-kind)) ) 0 (drop-pickup (-> self fact-override) #t *entity-pool* (-> self fact-override) 0) @@ -955,10 +957,10 @@ yakow-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) ) diff --git a/goal_src/levels/village2/swamp-blimp.gc b/goal_src/levels/village2/swamp-blimp.gc index ce6183bf1c..b86e0c2be4 100644 --- a/goal_src/levels/village2/swamp-blimp.gc +++ b/goal_src/levels/village2/swamp-blimp.gc @@ -612,10 +612,9 @@ (defmethod dummy-20 swamp-rope ((obj swamp-rope)) - (and - (-> obj other-entity) - (not (task-closed? (-> obj other-entity extra perm task) (task-status need-reminder))) - ) + (and (-> obj other-entity) + (not (task-closed? (-> obj other-entity extra perm task) (task-status need-reminder))) + ) ) (deftype swamp-blimp (process-drawable) @@ -663,7 +662,13 @@ (defstate swamp-tetherrock-die (swamp-tetherrock) :code - (behavior () (dummy-18 self) (deactivate self) (suspend) 0 (none)) + (behavior () + (dummy-18 self) + (deactivate self) + (suspend) + 0 + (none) + ) ) (defstate swamp-tetherrock-hide (swamp-tetherrock) @@ -840,11 +845,10 @@ (run-next-time-in-process gp-3 (lambda ((arg0 int)) - (while (or - (-> *setting-control* current ambient) - (-> *setting-control* current hint) - (-> *setting-control* current movie) - ) + (while (or (-> *setting-control* current ambient) + (-> *setting-control* current hint) + (-> *setting-control* current movie) + ) (suspend) ) (cond @@ -993,10 +997,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -1100,12 +1104,13 @@ (defstate precursor-arm-idle (precursor-arm) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('arm-sink-evt) - (go precursor-arm-sink) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('arm-sink-evt) + (go precursor-arm-sink) + ) + ) + ) :trans (behavior () (when (>= (-> self rot-t) 1.0) @@ -1209,10 +1214,10 @@ (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 61440.0) (set-root-prim! s4-0 s3-0) ) @@ -1308,7 +1313,10 @@ (defstate swamp-rope-break (swamp-rope) :enter - (behavior () (set! (-> self scale-base) (-> self root scale y)) (none)) + (behavior () + (set! (-> self scale-base) (-> self root scale y)) + (none) + ) :trans (behavior () (vector<-cspace! (-> self root trans) (-> self parent-override 0 node-list data (-> self parent-rp))) @@ -1759,10 +1767,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 409600.0) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/village2/village2-obs.gc b/goal_src/levels/village2/village2-obs.gc index 7bb7c890e6..6bc970562a 100644 --- a/goal_src/levels/village2/village2-obs.gc +++ b/goal_src/levels/village2/village2-obs.gc @@ -185,7 +185,11 @@ (defstate pontoon-die (pontoon) :code - (behavior () (dummy-18 self) (deactivate self) (none)) + (behavior () + (dummy-18 self) + (deactivate self) + (none) + ) ) (defstate rigid-body-platform-float (pontoon) @@ -231,10 +235,9 @@ (set! (-> obj task) (the-as uint (-> arg0 extra perm task))) (set! (-> obj alt-task) (res-lump-value arg0 'alt-task uint)) (cond - ((and - (nonzero? (-> obj alt-task)) - (task-closed? (the-as game-task (-> obj alt-task)) (task-status need-resolution)) - ) + ((and (nonzero? (-> obj alt-task)) + (task-closed? (the-as game-task (-> obj alt-task)) (task-status need-resolution)) + ) (go pontoon-die) ) ((zero? (-> obj task)) @@ -353,10 +356,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) @@ -413,10 +416,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) (set-root-prim! s5-0 s4-0) @@ -584,7 +587,10 @@ (none) ) :exit - (behavior () (logior! (-> self mask) (process-mask actor-pause)) (none)) + (behavior () + (logior! (-> self mask) (process-mask actor-pause)) + (none) + ) :trans (behavior () (when (>= (ja-aframe-num 0) 500.0) @@ -598,7 +604,12 @@ (none) ) :code - (behavior ((arg0 handle)) (clone-anim arg0 3 #t "") (dummy-18 self) (deactivate self) (none)) + (behavior ((arg0 handle)) + (clone-anim arg0 3 #t "") + (dummy-18 self) + (deactivate self) + (none) + ) ) (defstate allpontoons-idle (allpontoons) @@ -611,7 +622,10 @@ ) ) :enter - (behavior () (logior! (-> self draw status) (draw-status drwf01)) (none)) + (behavior () + (logior! (-> self draw status) (draw-status drwf01)) + (none) + ) :code (behavior () (while #t @@ -666,8 +680,8 @@ (dotimes (a0-0 (-> (the-as collide-shape-prim-group v1-1) num-prims)) (let ((a1-2 (-> (the-as collide-shape-prim-group v1-1) prims a0-0))) (when (= (-> a1-2 prim-id) 256) - (set! (-> a1-2 prim-core collide-as) (the-as uint 0)) - (set! (-> a1-2 collide-with) (the-as uint 0)) + (set! (-> a1-2 prim-core collide-as) (collide-kind)) + (set! (-> a1-2 collide-with) (collide-kind)) 0 ) ) @@ -742,9 +756,16 @@ (none) ) :exit - (behavior () (stop! (-> self sound)) (none)) + (behavior () + (stop! (-> self sound)) + (none) + ) :trans - (behavior () (fireboulder-hover-stuff) (update! (-> self sound)) (none)) + (behavior () + (fireboulder-hover-stuff) + (update! (-> self sound)) + (none) + ) :code (behavior () (while #t @@ -754,12 +775,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -796,14 +817,18 @@ (defstate fireboulder-be-clone (fireboulder) :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('stop-cloning) - (go fireboulder-hover) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('stop-cloning) + (go fireboulder-hover) + ) + ) + ) :enter - (behavior ((arg0 handle)) (logclear! (-> self mask) (process-mask actor-pause)) (none)) + (behavior ((arg0 handle)) + (logclear! (-> self mask) (process-mask actor-pause)) + (none) + ) :exit (behavior () (logior! (-> self mask) (process-mask actor-pause)) @@ -850,12 +875,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -921,26 +946,26 @@ (defmethod init-from-entity! fireboulder ((obj fireboulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 256)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) (append-prim s3-0 s2-1) @@ -1021,12 +1046,12 @@ ) ) (set! (-> a0-0 param 0) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -1870,16 +1895,16 @@ (defmethod init-from-entity! ogreboss-village2 ((obj ogreboss-village2) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) (append-prim s3-0 s2-0) ) diff --git a/goal_src/levels/village2/warrior.gc b/goal_src/levels/village2/warrior.gc index cf7342b6e2..3b71c04eeb 100644 --- a/goal_src/levels/village2/warrior.gc +++ b/goal_src/levels/village2/warrior.gc @@ -27,176 +27,123 @@ (defmethod dummy-52 warrior ((obj warrior)) (let ((v1-1 (-> obj draw shadow-ctrl))) - (when v1-1 - (let ((f0-0 (-> obj root-override trans y))) - (let ((a0-2 v1-1)) - (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) + (when v1-1 + (let ((f0-0 (-> obj root-override trans y))) + (let ((a0-2 v1-1)) + (set! (-> a0-2 settings bot-plane w) (- (+ -4096.0 f0-0))) + ) + 0 + (set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0))) + ) + 0 ) - 0 - (set! (-> v1-1 settings top-plane w) (- (+ 3072.0 f0-0))) - ) - 0 ) - ) (none) ) (defmethod draw-npc-shadow warrior ((obj warrior)) (-> obj draw shadow-ctrl) (cond - ((and - (-> obj draw shadow) - (zero? (-> obj draw cur-lod)) - (logtest? (-> obj draw status) 8) + ((and (-> obj draw shadow) (zero? (-> obj draw cur-lod)) (logtest? (-> obj draw status) (draw-status drwf03))) + (let ((v1-9 (-> obj draw shadow-ctrl))) + (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) + ) + 0 + (dummy-14 (-> obj draw shadow-ctrl)) ) - (let ((v1-9 (-> obj draw shadow-ctrl))) - (set! (-> v1-9 settings flags) (logand -33 (-> v1-9 settings flags))) - ) - 0 - (dummy-14 (-> obj draw shadow-ctrl)) + (else + (let ((v1-14 (-> obj draw shadow-ctrl))) + (logior! (-> v1-14 settings flags) 32) + ) + 0 + ) ) - (else - (let ((v1-14 (-> obj draw shadow-ctrl))) - (logior! (-> v1-14 settings flags) 32) - ) - 0 - ) - ) (none) ) (defmethod play-anim! warrior ((obj warrior) (arg0 symbol)) (with-pp - (set! (-> obj talk-message) (the-as uint 260)) - (case (current-status (-> obj tasks)) - (((task-status need-hint) (task-status need-introduction)) - (if arg0 - (close-status! (-> obj tasks) (task-status need-introduction)) - ) - (new 'static 'spool-anim - :name "warrior-introduction" - :index 6 - :parts 29 - :command-list - '( - ((the binteger 125) - joint - "cameraB" + (set! (-> obj talk-message) (the-as uint 260)) + (case (current-status (-> obj tasks)) + (((task-status need-hint) (task-status need-introduction)) + (if arg0 + (close-status! (-> obj tasks) (task-status need-introduction)) + ) + (new 'static 'spool-anim + :name "warrior-introduction" + :index 6 + :parts 29 + :command-list + '((125 joint "cameraB") + (260 joint "camera") + (574 joint "cameraB") + (918 joint "camera") + (1174 joint "cameraB") + (1174 shadow self #f) + (1301 joint "camera") + (1301 shadow self #t) + (2025 joint "cameraB") + (2322 joint "camera") + (2560 joint "cameraB") ) - ((the binteger 260) - joint - "camera" - ) - ((the binteger 574) - joint - "cameraB" - ) - ((the binteger 918) - joint - "camera" - ) - ((the binteger 1174) - joint - "cameraB" - ) - ((the binteger 1174) - shadow - self - #f - ) - ((the binteger 1301) - joint - "camera" - ) - ((the binteger 1301) - shadow - self - #t - ) - ((the binteger 2025) - joint - "cameraB" - ) - ((the binteger 2322) - joint - "camera" - ) - ((the binteger 2560) joint "cameraB") ) ) - ) - (((task-status need-reminder)) - (set! (-> obj skippable) #t) - (new 'static 'spool-anim - :name "warrior-reminder-1" - :index 7 - :parts 3 - :command-list '() - ) - ) - (((task-status need-reward-speech)) - (cond - (arg0 - (set! (-> obj cell-for-task) (current-task (-> obj tasks))) - (close-current! (-> obj tasks)) - (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) - (send-event - (-> (entity-by-type allpontoons) extra process) - 'clone - (process->handle obj) - ) - (dotimes (s5-2 (entity-actor-count (-> obj entity) 'alt-actor)) - (entity-birth-no-kill - (entity-actor-lookup (-> obj entity) 'alt-actor s5-2) - ) - (let ((s4-2 (new 'stack-no-clear 'event-message-block))) - (set! (-> s4-2 from) pp) - (set! (-> s4-2 num-params) 0) - (set! (-> s4-2 message) 'die) - (let ((s3-0 send-event-function) - (v1-25 (entity-actor-lookup (-> obj entity) 'alt-actor s5-2)) - ) - (s3-0 (if v1-25 - (-> v1-25 extra process) + (((task-status need-reminder)) + (set! (-> obj skippable) #t) + (new 'static 'spool-anim :name "warrior-reminder-1" :index 7 :parts 3 :command-list '()) + ) + (((task-status need-reward-speech)) + (cond + (arg0 + (set! (-> obj cell-for-task) (current-task (-> obj tasks))) + (close-current! (-> obj tasks)) + (send-event *target* 'get-pickup 5 (- (-> *GAME-bank* money-task-inc))) + (send-event (-> (entity-by-type allpontoons) extra process) 'clone (process->handle obj)) + (dotimes (s5-2 (entity-actor-count (-> obj entity) 'alt-actor)) + (entity-birth-no-kill (entity-actor-lookup (-> obj entity) 'alt-actor s5-2)) + (let ((s4-2 (new 'stack-no-clear 'event-message-block))) + (set! (-> s4-2 from) pp) + (set! (-> s4-2 num-params) 0) + (set! (-> s4-2 message) 'die) + (let ((s3-0 send-event-function) + (v1-25 (entity-actor-lookup (-> obj entity) 'alt-actor s5-2)) + ) + (s3-0 + (if v1-25 + (-> v1-25 extra process) + ) + s4-2 + ) ) - s4-2 + ) + ) + ) + (else + (set! (-> obj will-talk) #t) + (set! (-> obj talk-message) (the-as uint 282)) ) - ) ) - ) + (new 'static 'spool-anim + :name "warrior-resolution" + :index 8 + :parts 6 + :command-list + '((508 blackout 10) (511 blackout 0)) + ) ) (else - (set! (-> obj will-talk) #t) - (set! (-> obj talk-message) (the-as uint 282)) - ) - ) - (new 'static 'spool-anim - :name "warrior-resolution" - :index 8 - :parts 6 - :command-list - '( - ((the binteger 508) - blackout - (the binteger 10) - ) - ((the binteger 511) blackout 0) + (if arg0 + (format + 0 + "ERROR: : ~S playing anim for task status ~S~%" + (-> obj name) + (task-status->string (current-status (-> obj tasks))) + ) + ) + (-> obj draw art-group data 5) ) ) - ) - (else - (if arg0 - (format - 0 - "ERROR: : ~S playing anim for task status ~S~%" - (-> obj name) - (task-status->string (current-status (-> obj tasks))) - ) - ) - (-> obj draw art-group data 5) - ) ) - ) ) (defmethod get-art-elem warrior ((obj warrior)) @@ -207,85 +154,69 @@ :virtual #t :exit (behavior () - (send-event (-> (entity-by-type allpontoons) extra process) 'end-mode) - ((-> (method-of-type process-taskable play-anim) exit)) - (none) - ) + (send-event (-> (entity-by-type allpontoons) extra process) 'end-mode) + ((-> (method-of-type process-taskable play-anim) exit)) + (none) + ) ) (defmethod TODO-RENAME-43 warrior ((obj warrior)) - (when - (TODO-RENAME-10 - (-> obj ambient) - (new 'stack-no-clear 'vector) - 600 - 61440.0 - obj - ) - (let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) - (v1-4 (the-as number (logior #x3f800000 v1-3))) - (f0-2 (+ -1.0 (the-as float v1-4))) + (when (TODO-RENAME-10 (-> obj ambient) (new 'stack-no-clear 'vector) 600 61440.0 obj) + (let* ((v1-3 (/ (the-as int (rand-uint31-gen *random-generator*)) 256)) + (v1-4 (the-as number (logior #x3f800000 v1-3))) + (f0-2 (+ -1.0 (the-as float v1-4))) + ) + (cond + ((< 0.66 f0-2) + (play-ambient (-> obj ambient) "WAR-LO1A" #f (-> obj root-override trans)) + ) + ((< 0.33 f0-2) + (play-ambient (-> obj ambient) "WAR-LO1B" #f (-> obj root-override trans)) + ) + (else + (play-ambient (-> obj ambient) "WAR-LO1C" #f (-> obj root-override trans)) ) - (cond - ((< 0.66 f0-2) - (play-ambient (-> obj ambient) "WAR-LO1A" #f (-> obj root-override trans)) + ) ) - ((< 0.33 f0-2) - (play-ambient (-> obj ambient) "WAR-LO1B" #f (-> obj root-override trans)) - ) - (else - (play-ambient (-> obj ambient) "WAR-LO1C" #f (-> obj root-override trans)) - ) - ) ) - ) ) (defmethod initialize-collision warrior ((obj warrior) (arg0 int) (arg1 vector)) - (let - ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) - (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) - (set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0) - (set-root-prim! s5-0 s4-0) - (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) - (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) - (append-prim s4-0 s3-0) - ) - (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) - (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) - (append-prim s4-0 s3-1) - ) + (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) + (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0) + (set-root-prim! s5-0 s4-0) + (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) + (append-prim s4-0 s3-0) + ) + (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) + (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) + (append-prim s4-0 s3-1) + ) + ) + (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) + (backup-collide-with-as s5-0) + (set! (-> obj root-override) s5-0) ) - (set! (-> s5-0 nav-radius) (* 0.75 (-> s5-0 root-prim local-sphere w))) - (backup-collide-with-as s5-0) - (set! (-> obj root-override) s5-0) - ) 0 (none) ) (defmethod init-from-entity! warrior ((obj warrior) (arg0 entity-actor)) - (dummy-40 - obj - arg0 - *warrior-sg* - 3 - 33 - (new 'static 'vector :y -4096.0 :w 10240.0) - 5 - ) + (dummy-40 obj arg0 *warrior-sg* 3 33 (new 'static 'vector :y -4096.0 :w 10240.0) 5) (set! (-> obj tasks) (get-task-control (game-task village2-warrior-money))) (set! (-> obj sound-flava) (the-as uint 15)) (set! (-> obj draw light-index) (the-as uint 3)) diff --git a/goal_src/levels/village3/minecart.gc b/goal_src/levels/village3/minecart.gc index 0e4927d2a3..2d5d261721 100644 --- a/goal_src/levels/village3/minecart.gc +++ b/goal_src/levels/village3/minecart.gc @@ -62,12 +62,12 @@ (set! (-> gp-0 num-func) num-func-identity) (set! (-> gp-0 frame-num) (* (get-current-phase (-> self sync)) (the float (+ (-> (if (> (-> self skel active-channels) 0) - (-> self skel root-channel 0 frame-group) - ) - data - 0 - length - ) + (-> self skel root-channel 0 frame-group) + ) + data + 0 + length + ) -1 ) ) @@ -95,10 +95,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4915.2 0.0 13107.2) (set-root-prim! s4-0 s3-0) diff --git a/goal_src/levels/village_common/villagep-obs.gc b/goal_src/levels/village_common/villagep-obs.gc index b4a6cd3a43..110d2d9b94 100644 --- a/goal_src/levels/village_common/villagep-obs.gc +++ b/goal_src/levels/village_common/villagep-obs.gc @@ -118,49 +118,49 @@ (defstate idle (warp-gate) :virtual #t :event - (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) (case arg2 - (('hide) - (go-virtual hidden) - ) - ) - ) + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('hide) + (go-virtual hidden) + ) + ) + ) :code (behavior () (clear-pending-settings-from-process *setting-control* self 'allow-progress) (set! (-> self state-time) (-> *display* base-frame-counter)) (while #t - (when (and - (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) - (and - (>= (-> self level-slot) 0) - (not (movie?)) - (not (level-hint-displayed?)) - (zero? (logand (-> *target* control root-prim prim-core action) #x7380)) - (let* ((v1-16 (-> self root)) - (a1-2 (-> *target* control trans)) - (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans)))) - ) - (or (!= (-> self level-slot) 3) (and (< f0-1 -9102.223) (< -32768.0 f0-1))) - ) - ) - ) + (when (and (and *target* (>= 20480.0 (vector-vector-distance (-> self root trans) (-> *target* control trans)))) + (and (>= (-> self level-slot) 0) + (not (movie?)) + (not (level-hint-displayed?)) + (zero? + (logand (-> *target* control root-prim prim-core action) (collide-action ca-7 ca-8 ca-9 ca-12 ca-13 ca-14)) + ) + (let* ((v1-16 (-> self root)) + (a1-2 (-> *target* control trans)) + (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans)))) + ) + (or (!= (-> self level-slot) 3) (and (< f0-1 -9102.223) (< -32768.0 f0-1))) + ) + ) + ) (hide-hud) (level-hint-surpress!) (kill-current-level-hint '() '(sidekick voicebox) 'exit) - (when (and - (hud-hidden?) - (can-grab-display? (the-as process-taskable self)) - (cond - ((or (= (-> *target* next-state name) 'target-warp-in) (= (-> *target* next-state name) 'target-warp-out)) - (set! (-> self state-time) (-> *display* base-frame-counter)) - #f + (when (and (hud-hidden?) + (can-grab-display? (the-as process-taskable self)) + (cond + ((or (= (-> *target* next-state name) 'target-warp-in) (= (-> *target* next-state name) 'target-warp-out)) + (set! (-> self state-time) (-> *display* base-frame-counter)) + #f + ) + (else + #t + ) + ) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) ) - (else - #t - ) - ) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - ) (if (and (cpad-pressed? 0 circle) (process-grab? *target*)) (go-virtual active) ) @@ -255,14 +255,12 @@ ) :trans (behavior () - (when (or - (and - (cpad-pressed? 0 triangle) - (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) - (process-release? *target*) + (when (or (and (cpad-pressed? 0 triangle) + (>= (- (-> *display* base-frame-counter) (-> self state-time)) 30) + (process-release? *target*) + ) + (not *target*) ) - (not *target*) - ) (logclear! (-> *cpad-list* cpads 0 button0-abs 0) (pad-buttons triangle)) (logclear! (-> *cpad-list* cpads 0 button0-rel 0) (pad-buttons triangle)) (sound-play-by-name (static-sound-name "cursor-options") (new-sound-id) 1024 0 0 1 #t) @@ -511,16 +509,16 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (append-prim s4-0 s3-0) @@ -536,17 +534,16 @@ (defmethod pressable? warp-gate-switch ((obj warp-gate-switch)) (let ((v1-2 (-> obj entity extra perm task))) (cond - ((logtest? (-> *target* control root-prim prim-core action) #x7380) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action ca-7 ca-8 ca-9 ca-12 ca-13 ca-14)) #f ) ((= v1-2 (game-task training-door)) (cond - ((and - (task-complete? *game-info* (game-task training-door)) - (task-complete? *game-info* (game-task training-gimmie)) - (task-complete? *game-info* (game-task training-climb)) - (task-complete? *game-info* (game-task training-buzzer)) - ) + ((and (task-complete? *game-info* (game-task training-door)) + (task-complete? *game-info* (game-task training-gimmie)) + (task-complete? *game-info* (game-task training-climb)) + (task-complete? *game-info* (game-task training-buzzer)) + ) #t ) (else @@ -711,12 +708,11 @@ (when (>= (- (-> *display* base-frame-counter) (-> self state-time)) #x4650) (case (-> self entity extra perm task) (((game-task training-door)) - (when (and - (task-complete? *game-info* (game-task training-door)) - (task-complete? *game-info* (game-task training-gimmie)) - (task-complete? *game-info* (game-task training-climb)) - (task-complete? *game-info* (game-task training-buzzer)) - ) + (when (and (task-complete? *game-info* (game-task training-door)) + (task-complete? *game-info* (game-task training-gimmie)) + (task-complete? *game-info* (game-task training-climb)) + (task-complete? *game-info* (game-task training-buzzer)) + ) (level-hint-spawn (game-text-id training-warp-gate-reminder) "sagevb39" @@ -947,35 +943,31 @@ (local-vars (v1-18 symbol)) (while #t (let ((v1-5 - (and - (and - *target* - (>= (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) - (and - (-> *setting-control* current play-hints) - (< 0.0 (-> *setting-control* current dialog-volume)) - (let ((v1-10 (-> self index))) - (cond - ((zero? v1-10) - (and - (>= (-> *game-info* fuel) 20.0) - (not (task-closed? (game-task firecanyon-assistant) (task-status need-reward-speech))) - ) - ) - ((= v1-10 2) - (not (task-closed? (game-task village2-levitator) (task-status need-hint))) - ) - ((= v1-10 3) - (not (task-closed? (game-task village3-button) (task-status need-hint))) - ) - (else - #t + (and (and *target* + (>= (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) ) - ) - ) - ) - ) + (and (-> *setting-control* current play-hints) + (< 0.0 (-> *setting-control* current dialog-volume)) + (let ((v1-10 (-> self index))) + (cond + ((zero? v1-10) + (and (>= (-> *game-info* fuel) 20.0) + (not (task-closed? (game-task firecanyon-assistant) (task-status need-reward-speech))) + ) + ) + ((= v1-10 2) + (not (task-closed? (game-task village2-levitator) (task-status need-hint))) + ) + ((= v1-10 3) + (not (task-closed? (game-task village3-button) (task-status need-hint))) + ) + (else + #t + ) + ) + ) + ) + ) ) ) (when v1-5 @@ -984,10 +976,9 @@ (until v1-18 (suspend) (set! v1-18 - (or - (not *target*) - (< (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) - ) + (or (not *target*) + (< (-> self range) (vector-vector-distance (-> self root-override trans) (-> *target* control trans))) + ) ) ) (let* ((v1-23 (-> self index)) @@ -1009,24 +1000,22 @@ ) ) ) - (while (and - *target* - (logtest? (-> *target* control unknown-surface00 flags) 2048) - (zero? (logand (-> *target* control status) 1)) - ) + (while (and *target* + (logtest? (-> *target* control unknown-surface00 flags) 2048) + (zero? (logand (-> *target* control status) 1)) + ) (suspend) ) (set! (-> self state-time) (the-as uint (-> *display* base-frame-counter))) (process-grab? *target*) (process-entity-status! self (entity-perm-status bit-3) #t) (kill-current-level-hint '(ambient) '() 'exit) - (until (not (or (-> *setting-control* current talking) (or - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (-> *setting-control* current ambient) - (not *target*) - (logtest? (-> *target* state-flags) #x8008) - ) + (until (not (or (-> *setting-control* current talking) (or (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (-> *setting-control* current ambient) + (not *target*) + (logtest? (-> *target* state-flags) #x8008) + ) ) ) (set-setting! *setting-control* self 'allow-progress #f 0.0 0) @@ -1038,15 +1027,14 @@ (t9-14 a0-25 self a2-5 (the-as symbol a3-1) 0.0 0) ) (copy-settings-from-target! *setting-control*) - (while (or - (-> *setting-control* current talking) - (-> *setting-control* current spooling) - (-> *setting-control* current hint) - (!= (-> *level* loading-level) (-> *level* level-default)) - (not *target*) - (logtest? (-> *target* state-flags) #x8008) - *progress-process* - ) + (while (or (-> *setting-control* current talking) + (-> *setting-control* current spooling) + (-> *setting-control* current hint) + (!= (-> *level* loading-level) (-> *level* level-default)) + (not *target*) + (logtest? (-> *target* state-flags) #x8008) + *progress-process* + ) (suspend) ) (while (< (- (-> *display* base-frame-counter) (the-as int (-> self state-time))) 300) @@ -1214,12 +1202,12 @@ ) (let ((a0-66 (-> self entity))) (if (when a0-66 - (let ((a0-67 (-> a0-66 extra perm task))) - (if a0-67 - (= a0-67 (game-task none)) - ) - ) + (let ((a0-67 (-> a0-66 extra perm task))) + (if a0-67 + (= a0-67 (game-task none)) + ) ) + ) (set! (-> self entity extra perm task) (game-task complete)) ) ) diff --git a/test/decompiler/reference/engine/camera/cam-master_REF.gc b/test/decompiler/reference/engine/camera/cam-master_REF.gc index 020a74268e..f5459acf5e 100644 --- a/test/decompiler/reference/engine/camera/cam-master_REF.gc +++ b/test/decompiler/reference/engine/camera/cam-master_REF.gc @@ -376,7 +376,7 @@ (set! (-> self tpos-curr quad) (-> (target-cam-pos) quad)) ) ) - (when (logtest? (-> *target* control root-prim prim-core action) 128) + (when (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-7)) (if *display-cam-los-debug* (format *stdcon* "ride edge~%") ) diff --git a/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc b/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc index 1f03e5e030..97d906cead 100644 --- a/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-cache-h_REF.gc @@ -5,7 +5,7 @@ (deftype collide-using-spheres-params (structure) ((spheres (pointer sphere) :offset-assert 0) (num-spheres uint32 :offset-assert 4) - (collide-with uint64 :offset-assert 8) + (collide-with collide-kind :offset-assert 8) (proc process-drawable :offset-assert 16) (ignore-pat uint32 :offset-assert 20) (solid-only basic :offset-assert 24) @@ -99,11 +99,11 @@ ;; definition of type collide-cache-tri (deftype collide-cache-tri (structure) - ((vertex vector 3 :inline :offset-assert 0) - (pat uint32 :offset-assert 48) - (prim-index uint16 :offset-assert 52) - (user16 uint16 :offset-assert 54) - (user32 uint32 2 :offset-assert 56) + ((vertex vector 3 :inline :offset-assert 0) + (pat pat-surface :offset-assert 48) + (prim-index uint16 :offset-assert 52) + (user16 uint16 :offset-assert 54) + (user32 uint32 2 :offset-assert 56) ) :method-count-assert 9 :size-assert #x40 @@ -131,17 +131,17 @@ (num-tris uint16 :offset-assert 42) (unused uint8 4 :offset-assert 44) (world-sphere vector :inline :offset 0) - (collide-as uint64 :offset 16) - (action uint32 :offset 24) - (offense int8 :offset 28) + (collide-as collide-kind :offset 16) + (action collide-action :offset 24) + (offense collide-offense :offset 28) (prim-type int8 :offset 29) ) :method-count-assert 11 :size-assert #x30 :flag-assert #xb00000030 (:methods - (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 9) - (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float int) float 10) + (dummy-9 (_type_ collide-mesh-cache-tri collide-prim-core vector float collide-action) float 9) + (dummy-10 (_type_ collide-mesh-cache-tri collide-prim-core vector float collide-action) float 10) ) ) @@ -171,7 +171,7 @@ (proc process-drawable :offset-assert 16) (collide-box bounding-box :inline :offset-assert 32) (collide-box4w bounding-box4w :inline :offset-assert 64) - (collide-with uint64 :offset-assert 96) + (collide-with collide-kind :offset-assert 96) (prims collide-cache-prim 100 :inline :offset-assert 112) (tris collide-cache-tri 461 :inline :offset-assert 4912) ) @@ -182,13 +182,13 @@ (dummy-9 (_type_) none 9) (dummy-10 (_type_ vector vector float int process collide-tri-result int) float 10) (dummy-11 (_type_ collide-using-spheres-params) none 11) - (fill-and-probe-using-y-probe (_type_ vector float uint process collide-tri-result uint) float 12) - (dummy-13 (_type_ bounding-box uint process-drawable uint) none 13) + (fill-and-probe-using-y-probe (_type_ vector float collide-kind process collide-tri-result uint) float 12) + (dummy-13 (_type_ bounding-box collide-kind process-drawable pat-surface) none 13) (dummy-14 (_type_ vector vector float int process int) none 14) (dummy-15 (_type_ collide-using-spheres-params) none 15) (dummy-16 (_type_ vector float uint process-drawable uint) none 16) (initialize (_type_) none 17) - (dummy-18 (_type_ vector vector float int collide-tri-result int) float 18) + (dummy-18 (_type_ vector vector float collide-kind collide-tri-result int) float 18) (probe-using-spheres (_type_) none 19) (dummy-20 (_type_ vector float uint collide-tri-result uint) float 20) (dummy-21 (_type_ (function bsp-header int collide-list none) (function collide-cache none)) none 21) diff --git a/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc b/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc index 4d694e9146..6b122a53c2 100644 --- a/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-frag-h_REF.gc @@ -94,7 +94,8 @@ ;; definition of type drawable-tree-collide-fragment (deftype drawable-tree-collide-fragment (drawable-tree) - () + ((data-override drawable-inline-array :offset 32) + ) :method-count-assert 18 :size-assert #x24 :flag-assert #x1200000024 diff --git a/test/decompiler/reference/engine/collide/collide-frag_REF.gc b/test/decompiler/reference/engine/collide/collide-frag_REF.gc index 9808b0c643..5243d9f783 100644 --- a/test/decompiler/reference/engine/collide/collide-frag_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-frag_REF.gc @@ -26,7 +26,7 @@ ;; definition for method 11 of type drawable-tree-collide-fragment ;; INFO: Return type mismatch int vs none. (defmethod collide-with-box drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 int) (arg1 collide-list)) - (collide-with-box (-> obj data 0) (-> obj length) arg1) + (collide-with-box (-> obj data-override) (-> obj length) arg1) 0 (none) ) @@ -34,7 +34,7 @@ ;; definition for method 12 of type drawable-tree-collide-fragment ;; INFO: Return type mismatch int vs none. (defmethod collide-y-probe drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 int) (arg1 collide-list)) - (collide-y-probe (-> obj data 0) (-> obj length) arg1) + (collide-y-probe (-> obj data-override) (-> obj length) arg1) 0 (none) ) @@ -42,7 +42,7 @@ ;; definition for method 13 of type drawable-tree-collide-fragment ;; INFO: Return type mismatch int vs none. (defmethod collide-ray drawable-tree-collide-fragment ((obj drawable-tree-collide-fragment) (arg0 int) (arg1 collide-list)) - (collide-ray (-> obj data 0) (-> obj length) arg1) + (collide-ray (-> obj data-override) (-> obj length) arg1) 0 (none) ) diff --git a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc index 2b57a79ea2..fcc2c8b558 100644 --- a/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-shape-h_REF.gc @@ -179,13 +179,13 @@ ;; definition of type collide-prim-core (deftype collide-prim-core (structure) - ((world-sphere vector :inline :offset-assert 0) - (collide-as uint64 :offset-assert 16) - (action uint32 :offset-assert 24) - (offense int8 :offset-assert 28) - (prim-type int8 :offset-assert 29) - (extra uint8 2 :offset-assert 30) - (quad uint128 2 :offset 0) + ((world-sphere vector :inline :offset-assert 0) + (collide-as collide-kind :offset-assert 16) + (action collide-action :offset-assert 24) + (offense collide-offense :offset-assert 28) + (prim-type int8 :offset-assert 29) + (extra uint8 2 :offset-assert 30) + (quad uint128 2 :offset 0) ) :method-count-assert 9 :size-assert #x20 @@ -212,11 +212,11 @@ (transform-index int8 :offset-assert 12) (prim-core collide-prim-core :inline :offset-assert 16) (local-sphere vector :inline :offset-assert 48) - (collide-with uint64 :offset-assert 64) + (collide-with collide-kind :offset-assert 64) (world-sphere vector :inline :offset 16) - (collide-as uint64 :offset 32) - (action uint32 :offset 40) - (offense int8 :offset 44) + (collide-as collide-kind :offset 32) + (action collide-action :offset 40) + (offense collide-offense :offset 44) (prim-type int8 :offset 45) (radius meters :offset 60) ) @@ -236,14 +236,14 @@ (dummy-17 () none 17) (collide-with-collide-cache-prim-mesh (_type_ collide-shape-intersect collide-cache-prim) none 18) (collide-with-collide-cache-prim-sphere (_type_ collide-shape-intersect collide-cache-prim) none 19) - (dummy-20 (_type_ uint) symbol 20) + (dummy-20 (_type_ collide-kind) symbol 20) (num-mesh (_type_ collide-shape-prim) int 21) (on-platform-test (_type_ _type_ collide-overlap-result float) pat-surface 22) (should-push-away-test () none 23) (dummy-24 () none 24) (dummy-25 (_type_ process-drawable) symbol 25) - (set-collide-as! (_type_ handle) none 26) - (set-collide-with! (_type_ handle) none 27) + (set-collide-as! (_type_ collide-kind) none 26) + (set-collide-with! (_type_ collide-kind) none 27) ) ) @@ -383,8 +383,8 @@ (event-other basic :offset-assert 156) (root-prim collide-shape-prim :offset-assert 160) (riders collide-sticky-rider-group :offset-assert 164) - (backup-collide-as uint64 :offset-assert 168) - (backup-collide-with uint64 :offset-assert 176) + (backup-collide-as collide-kind :offset-assert 168) + (backup-collide-with collide-kind :offset-assert 176) ) :method-count-assert 56 :size-assert #xb8 @@ -395,11 +395,11 @@ (dummy-29 (_type_ int) none 29) (TODO-RENAME-30 (_type_ vector) object 30) (dummy-31 (_type_) none 31) - (dummy-32 (_type_ object uint) none 32) - (dummy-33 (_type_ vector uint) none 33) + (dummy-32 (_type_ object collide-kind) none 32) + (dummy-33 (_type_ vector collide-kind) none 33) (dummy-34 (_type_ uint) collide-shape-prim 34) (dummy-35 (_type_) symbol 35) - (dummy-36 (_type_ bounding-box float uint) symbol 36) + (dummy-36 (_type_ bounding-box float collide-kind) symbol 36) (dummy-37 (_type_ vector) none 37) (find-collision-meshes (_type_) symbol 38) (dummy-39 (_type_ collide-shape collide-overlap-result) symbol 39) @@ -414,10 +414,10 @@ (clear-collide-with-as (_type_) none 48) (restore-collide-with-as (_type_) none 49) (backup-collide-with-as (_type_) none 50) - (set-root-prim-collide-with! (_type_ handle) none 51) - (set-root-prim-collide-as! (_type_ handle) none 52) - (dummy-53 (_type_ int int int) none 53) - (dummy-54 (_type_ int int) none 54) + (set-root-prim-collide-with! (_type_ collide-kind) none 51) + (set-root-prim-collide-as! (_type_ collide-kind) none 52) + (dummy-53 (_type_ int collide-kind collide-kind) none 53) + (dummy-54 (_type_ int collide-offense) none 54) (dummy-55 (_type_ process touching-shapes-entry float float float) none 55) ) ) @@ -487,7 +487,7 @@ (dummy-57 (_type_ vector) none 57) (dummy-58 (_type_ vector) symbol 58) (dummy-59 (_type_ vector uint float symbol symbol symbol) none 59) - (dummy-60 (_type_ float float symbol uint) symbol 60) + (dummy-60 (_type_ float float symbol collide-kind) symbol 60) (TODO-RENAME-61 (_type_ vector vector vector) none 61) (dummy-62 (_type_ vector float) vector 62) (dummy-63 (_type_ vector vector float) float 63) @@ -554,11 +554,11 @@ (let ((v0-0 (object-new allocation type-to-make size-bytes))) (set! (-> v0-0 cshape) cshape) (set! (-> v0-0 prim-id) prim-id) - (set! (-> v0-0 prim-core action) (the-as uint 0)) - (set! (-> v0-0 prim-core collide-as) (the-as uint 0)) - (set! (-> v0-0 collide-with) (the-as uint 0)) + (set! (-> v0-0 prim-core action) (collide-action)) + (set! (-> v0-0 prim-core collide-as) (collide-kind)) + (set! (-> v0-0 collide-with) (collide-kind)) (set! (-> v0-0 transform-index) -2) - (set! (-> v0-0 prim-core offense) 0) + (set! (-> v0-0 prim-core offense) (collide-offense no-offense)) (set! (-> v0-0 prim-core prim-type) -2) v0-0 ) @@ -700,9 +700,9 @@ :prim-core (new 'static 'collide-prim-core :world-sphere (new 'static 'vector :w 204800000.0) - :collide-as #x1 - :action #x1 - :offense 4 + :collide-as (collide-kind background) + :action (collide-action solid) + :offense (collide-offense indestructible) :prim-type 2 ) :local-sphere (new 'static 'vector :w 204800000.0) @@ -716,9 +716,9 @@ :prim-core (new 'static 'collide-prim-core :world-sphere (new 'static 'vector :w 204800000.0) - :collide-as #x20 - :action #x1 - :offense 4 + :collide-as (collide-kind water) + :action (collide-action solid) + :offense (collide-offense indestructible) :prim-type 2 ) :local-sphere (new 'static 'vector :w 204800000.0) diff --git a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc index 81415bc599..ec015d67fe 100644 --- a/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-touch-h_REF.gc @@ -129,11 +129,11 @@ (get-touched-shape (_type_ collide-shape) collide-shape 10) (dummy-11 () none 11) (prims-touching? (_type_ collide-shape-moving uint) touching-prims-entry 12) - (prims-touching-action? (_type_ collide-shape uint uint) touching-prims-entry 13) + (prims-touching-action? (_type_ collide-shape collide-action collide-action) touching-prims-entry 13) (free-list () none 14) (free-entry-list (_type_) symbol 15) (get-head (_type_) touching-prims-entry 16) - (unknown1 (_type_ (pointer uint32)) uint 17) + (get-next (_type_ touching-prims-entry) touching-prims-entry 17) ) ) @@ -197,8 +197,8 @@ ) ;; definition for method 17 of type touching-shapes-entry -(defmethod unknown1 touching-shapes-entry ((obj touching-shapes-entry) (arg0 (pointer uint32))) - (-> arg0 0) +(defmethod get-next touching-shapes-entry ((obj touching-shapes-entry) (arg0 touching-prims-entry)) + (-> arg0 next) ) ;; definition (perm) for symbol *touching-prims-entry-pool*, type touching-prims-entry-pool diff --git a/test/decompiler/reference/engine/collide/collide-touch_REF.gc b/test/decompiler/reference/engine/collide/collide-touch_REF.gc index c98035693a..256c8f107a 100644 --- a/test/decompiler/reference/engine/collide/collide-touch_REF.gc +++ b/test/decompiler/reference/engine/collide/collide-touch_REF.gc @@ -426,7 +426,7 @@ ) ;; definition for method 13 of type touching-shapes-entry -(defmethod prims-touching-action? touching-shapes-entry ((obj touching-shapes-entry) (arg0 collide-shape) (arg1 uint) (arg2 uint)) +(defmethod prims-touching-action? touching-shapes-entry ((obj touching-shapes-entry) (arg0 collide-shape) (arg1 collide-action) (arg2 collide-action)) (cond ((= (-> obj cshape1) arg0) (let ((v1-1 (-> obj head))) diff --git a/test/decompiler/reference/engine/game/collectables_REF.gc b/test/decompiler/reference/engine/game/collectables_REF.gc index d9bf78b4b0..1d9b1b32e1 100644 --- a/test/decompiler/reference/engine/game/collectables_REF.gc +++ b/test/decompiler/reference/engine/game/collectables_REF.gc @@ -168,8 +168,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 3276.8) (set-root-prim! s5-0 s4-0) ) @@ -1237,8 +1237,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 3276.8 0.0 8192.0) (set-root-prim! s5-0 s4-0) ) @@ -1408,8 +1408,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 2048.0 0.0 4915.2) (set-root-prim! s5-0 s4-0) ) @@ -1543,10 +1543,10 @@ ) (when *target* (cond - ((logtest? (-> *target* control root-prim prim-core action) 512) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9)) (set! v1-7 16) ) - ((logtest? (-> *target* control root-prim prim-core action) #x4000) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) (set! v1-7 32) ) ) @@ -1809,7 +1809,7 @@ (or (logtest? (the-as int (res-lump-value (-> self entity) 'options uint128 :time (the-as float -1000000000.0))) 4096 ) - (and *target* (logtest? (-> *target* control root-prim prim-core action) 512)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9))) ) ) (send-event *camera* 'teleport-to-other-start-string) @@ -1881,7 +1881,7 @@ (else (TODO-RENAME-30 (-> self root-override) (-> *target* control trans)) (set-yaw-angle-clear-roll-pitch! (-> self root-override) (y-angle (-> *target* control))) - (dummy-60 (-> self root-override) (the-as float 40960.0) (the-as float 40960.0) #f (the-as uint 1)) + (dummy-60 (-> self root-override) (the-as float 40960.0) (the-as float 40960.0) #f (collide-kind background)) ) ) ) @@ -2228,8 +2228,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 64)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) (set-root-prim! s5-0 s4-0) @@ -2550,7 +2550,10 @@ (when (and (= (get-reminder s4-1 0) 127) (and (-> self entity) (not (task-complete? *game-info* (the-as game-task s5-2)))) ) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x7200) (not arg0)) + (if (and *target* + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9 ca-12 ca-13 ca-14)) + (not arg0) + ) (logior! (-> self fact options) (fact-options fop6 fop7)) ) (let ((v1-47 @@ -2607,8 +2610,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 2457.6 0.0 4915.2) (set-root-prim! s5-0 s4-0) ) @@ -2988,7 +2991,7 @@ *collide-cache* s2-1 (the-as float 81920.0) - (the-as uint 1) + (collide-kind background) (the-as process #f) s1-1 (the-as uint 1) @@ -3083,10 +3086,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4 0.0 6144.0) (set-root-prim! s5-0 s4-0) @@ -3095,7 +3098,7 @@ (backup-collide-with-as s5-0) (set! (-> self root-override) s5-0) ) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) 512)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9))) (clear-collide-with-as (-> self root-override)) ) (set! (-> self block-func) arg0) @@ -3164,8 +3167,8 @@ (logior! (-> obj mask) (process-mask actor-pause)) (let ((s3-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) - (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core collide-as) (collide-kind powerup)) + (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 6553.6) (set-root-prim! s3-0 s2-0) ) diff --git a/test/decompiler/reference/engine/game/crates_REF.gc b/test/decompiler/reference/engine/game/crates_REF.gc index 5aa9c6eb37..dca6d0813a 100644 --- a/test/decompiler/reference/engine/game/crates_REF.gc +++ b/test/decompiler/reference/engine/game/crates_REF.gc @@ -651,7 +651,7 @@ (('flop 'uppercut 'explode 'darkeco 'eco-yellow 'bonk 'racer 'tube 'flut-bonk 'flut-attack) (if (and (logtest? (-> self fact options) (fact-options fop11)) *target* - (zero? (logand (-> *target* control root-prim prim-core action) 512)) + (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-9))) ) (return #f) ) @@ -1033,10 +1033,11 @@ (if (nonzero? (-> self sound)) (stop! (-> self sound)) ) - (if (and *target* (and (logtest? (-> *target* control root-prim prim-core action) #x7200) - (!= (-> self fact pickup-type) 6) - (not arg0) - ) + (if (and *target* + (and (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9 ca-12 ca-13 ca-14)) + (!= (-> self fact pickup-type) 6) + (not arg0) + ) ) (logior! (-> self fact options) (fact-options fop6)) ) @@ -1277,10 +1278,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint #x8080)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate blue-eco-suck)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) (set-root-prim! s4-0 s3-0) @@ -1342,11 +1343,11 @@ (defmethod art-init crate ((obj crate)) (case (-> obj look) (('iron) - (set! (-> obj root-override root-prim prim-core offense) 2) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense normal-attack)) (initialize-skeleton obj *crate-iron-sg* '()) ) (('steel) - (set! (-> obj root-override root-prim prim-core offense) 4) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense indestructible)) (initialize-skeleton obj *crate-steel-sg* '()) ) (('darkeco) @@ -1378,16 +1379,16 @@ ) (cond ((logtest? (fact-options fop16) (-> obj fact options)) - (set! (-> obj root-override root-prim prim-core offense) 4) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense indestructible)) ) ((logtest? (-> obj fact options) (fact-options fop15)) - (set! (-> obj root-override root-prim prim-core offense) 3) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense strong-attack)) ) ((logtest? (-> obj fact options) (fact-options fop14)) - (set! (-> obj root-override root-prim prim-core offense) 2) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense normal-attack)) ) ((logtest? (-> obj fact options) (fact-options fop13)) - (set! (-> obj root-override root-prim prim-core offense) 1) + (set! (-> obj root-override root-prim prim-core offense) (collide-offense touch)) ) ) (set! (-> obj base quad) (-> obj root-override trans quad)) diff --git a/test/decompiler/reference/engine/game/effect-control_REF.gc b/test/decompiler/reference/engine/game/effect-control_REF.gc index 501903ff63..69c2151dac 100644 --- a/test/decompiler/reference/engine/game/effect-control_REF.gc +++ b/test/decompiler/reference/engine/game/effect-control_REF.gc @@ -1176,11 +1176,11 @@ ;; INFO: Return type mismatch int vs none. (defbehavior target-land-effect target () (cond - ((logtest? (-> self control root-prim prim-core action) #x4000) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-14)) (dummy-10 (-> self skel effect) 'effect-land-poof -1.0 -1) (dummy-10 (-> self skel effect) 'effect-flut-land -1.0 -1) ) - ((logtest? (-> self control root-prim prim-core action) 512) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-9)) (sound-play-by-name (sound-name-with-material 'zoom-land (the-as int (-> self control ground-pat)) "") (new-sound-id) diff --git a/test/decompiler/reference/engine/game/game-info_REF.gc b/test/decompiler/reference/engine/game/game-info_REF.gc index 670f5a502d..c7ecd813ea 100644 --- a/test/decompiler/reference/engine/game/game-info_REF.gc +++ b/test/decompiler/reference/engine/game/game-info_REF.gc @@ -479,7 +479,7 @@ ) ) (b! - (and (logtest? (-> (the-as collide-shape (-> obj process root)) root-prim prim-core action) 512) + (and (logtest? (-> (the-as collide-shape (-> obj process root)) root-prim prim-core action) (collide-action ca-9)) (type-type? (-> (handle->process source-handle) type) vent) ) cfg-80 @@ -616,7 +616,9 @@ 'eval (lambda :behavior process-drawable () - (set! (-> (the-as collide-shape (-> self root)) root-prim collide-with) (the-as uint #x800e)) + (set! (-> (the-as collide-shape (-> self root)) root-prim collide-with) + (collide-kind cak-1 cak-2 cak-3 blue-eco-suck) + ) (none) ) ) diff --git a/test/decompiler/reference/engine/game/generic-obs_REF.gc b/test/decompiler/reference/engine/game/generic-obs_REF.gc index 597234acd2..befebfdbd4 100644 --- a/test/decompiler/reference/engine/game/generic-obs_REF.gc +++ b/test/decompiler/reference/engine/game/generic-obs_REF.gc @@ -97,7 +97,7 @@ (while #t (when (and *target* (< (vector-vector-distance (-> self root trans) (-> *target* control unknown-vector90)) (-> self range)) - (logtest? (-> *target* control root-prim prim-core action) 64) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-6)) (< (-> *target* control unknown-vector90 y) (+ (-> self root trans y) (* 0.5 (-> self range)))) ) (let ((a1-1 (new 'stack-no-clear 'event-message-block))) @@ -613,8 +613,8 @@ (arg3 (let ((s4-2 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint #x8040)) - (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core collide-as) (collide-kind powerup blue-eco-suck)) + (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) (-> arg3 x) (-> arg3 y) (-> arg3 z) (-> arg3 w)) (set-root-prim! s4-2 s2-0) ) @@ -2307,8 +2307,8 @@ (stack-size-set! (-> obj main-thread) 128) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) ) @@ -2371,8 +2371,8 @@ (stack-size-set! (-> self main-thread) 128) (let ((s2-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) + (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-0 collide-with) (collide-kind target)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s2-0 s1-0) ) @@ -2589,9 +2589,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 272)) - (set! (-> s2-0 collide-with) (the-as uint 3022)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind target enemy)) + (set! (-> s2-0 collide-with) (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 arg1) (set-root-prim! s4-0 s2-0) ) diff --git a/test/decompiler/reference/engine/game/projectiles_REF.gc b/test/decompiler/reference/engine/game/projectiles_REF.gc index f1a25baf4a..0222711566 100644 --- a/test/decompiler/reference/engine/game/projectiles_REF.gc +++ b/test/decompiler/reference/engine/game/projectiles_REF.gc @@ -973,10 +973,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) - (set! (-> s4-0 collide-with) (the-as uint 2957)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 3) + (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 crate enemy wall-object ground-object)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) (set-root-prim! s5-0 s4-0) ) @@ -1125,14 +1125,14 @@ 10240.0 ) ) - (logior! (-> obj root-override root-prim collide-with) 32) + (logior! (-> obj root-override root-prim collide-with) (collide-kind water)) ) (('ogre) (when (zero? (logand (-> obj options) 128)) (set! (-> obj water) (new 'process 'water-control obj 0 0.0 8192.0 2048.0)) (set! (-> obj water flags) (the-as uint 146)) (set! (-> obj water height) 129024.0) - (logior! (-> obj root-override root-prim collide-with) 32) + (logior! (-> obj root-override root-prim collide-with) (collide-kind water)) ) ) (('finalboss) @@ -1140,7 +1140,7 @@ (set! (-> obj water) (new 'process 'water-control obj 0 0.0 8192.0 2048.0)) (set! (-> obj water flags) (the-as uint 146)) (set! (-> obj water height) 1977958.4) - (logior! (-> obj root-override root-prim collide-with) 32) + (logior! (-> obj root-override root-prim collide-with) (collide-kind water)) ) ) ) @@ -1149,12 +1149,12 @@ ) ;; definition for method 26 of type projectile-yellow -;; INFO: Return type mismatch uint vs none. +;; INFO: Return type mismatch collide-kind vs none. (defmethod dummy-26 projectile-yellow ((obj projectile-yellow)) (let ((t9-0 (method-of-type projectile dummy-26))) (t9-0 obj) ) - (logior! (-> obj root-override root-prim collide-with) 8192) + (logior! (-> obj root-override root-prim collide-with) (collide-kind mother-spider)) (none) ) @@ -1166,7 +1166,7 @@ (-> obj root-override trans) (-> obj root-override shadow-pos) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 12288.0 81920.0 @@ -1310,7 +1310,7 @@ (set! (-> obj target-base quad) (-> obj target quad)) (set! (-> obj mask) (the-as process-mask (logior (process-mask ambient) (-> obj mask)))) (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 42) obj)) - (set! (-> obj root-override root-prim collide-with) (the-as uint 1)) + (set! (-> obj root-override root-prim collide-with) (collide-kind background)) (let* ((s5-1 (handle->process (-> obj last-target))) (v1-20 (if (and (nonzero? s5-1) (type-type? (-> s5-1 type) process-drawable)) s5-1 @@ -1335,10 +1335,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) - (set! (-> s4-0 collide-with) (the-as uint 1)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 3) + (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) + (set! (-> s4-0 collide-with) (collide-kind background)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 5324.8 0.0 5324.8) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc index a8e8544e6f..7b2f16642e 100644 --- a/test/decompiler/reference/engine/game/task/process-taskable_REF.gc +++ b/test/decompiler/reference/engine/game/task/process-taskable_REF.gc @@ -1183,10 +1183,10 @@ (defmethod initialize-collision process-taskable ((obj process-taskable) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) arg0) (set-vector! (-> s4-0 local-sphere) (-> arg1 x) (-> arg1 y) (-> arg1 z) (-> arg1 w)) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/engine/game/voicebox_REF.gc b/test/decompiler/reference/engine/game/voicebox_REF.gc index 26fe7c232d..646e0b3630 100644 --- a/test/decompiler/reference/engine/game/voicebox_REF.gc +++ b/test/decompiler/reference/engine/game/voicebox_REF.gc @@ -155,7 +155,7 @@ :code (behavior () (set-setting! *setting-control* self 'sound-flava #f 20.0 6) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) 512)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-9))) (send-event (ppointer->process (-> self parent-override)) 'set-dist diff --git a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc index 0eb620252f..889bade42c 100644 --- a/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc +++ b/test/decompiler/reference/engine/gfx/shadow/shadow_REF.gc @@ -115,7 +115,7 @@ ;; definition for function find-ground-and-draw-shadow ;; INFO: Return type mismatch int vs none. ;; Used lq/sq -(defun find-ground-and-draw-shadow ((arg0 vector) (arg1 vector) (arg2 float) (arg3 uint) (arg4 process) (arg5 float) (arg6 float)) +(defun find-ground-and-draw-shadow ((arg0 vector) (arg1 vector) (arg2 float) (arg3 collide-kind) (arg4 process) (arg5 float) (arg6 float)) (let ((s2-0 (new 'stack-no-clear 'vector))) (set! (-> s2-0 quad) (-> arg0 quad)) (new 'stack-no-clear 'vector) diff --git a/test/decompiler/reference/engine/gfx/water/water_REF.gc b/test/decompiler/reference/engine/gfx/water/water_REF.gc index 08a9e02bf4..b42e8c4df8 100644 --- a/test/decompiler/reference/engine/gfx/water/water_REF.gc +++ b/test/decompiler/reference/engine/gfx/water/water_REF.gc @@ -867,7 +867,11 @@ (set! (-> obj bob-offset) (update! (-> obj bob))) (cond ((and (logtest? (-> obj flags) 256) - (zero? (logand (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) 512)) + (zero? + (logand (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) + (collide-action ca-9) + ) + ) ) (set! (-> obj real-ocean-offset) (- (ocean-get-height (the-as vector (-> obj bottom))) (-> obj base-height))) (if (zero? (logand (-> obj flags) 512)) @@ -895,7 +899,9 @@ (set! (-> obj ocean-offset) 0.0) ) ) - (if (logtest? (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) 512) + (if (logtest? (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) + (collide-action ca-9) + ) (set! (-> obj bob-offset) 0.0) ) (set! (-> obj height) @@ -1070,7 +1076,7 @@ (let ((s4-4 (-> obj process root))) (when (and (zero? (logand (-> (the-as collide-shape-moving s4-4) status) 4096)) (logtest? (-> obj flags) 2048) - (zero? (logand (-> (the-as collide-shape-moving s4-4) root-prim prim-core action) 512)) + (zero? (logand (-> (the-as collide-shape-moving s4-4) root-prim prim-core action) (collide-action ca-9))) ) (let ((a1-27 (vector-! (new 'stack-no-clear 'vector) v1-200 (-> s4-4 trans)))) (vector-float*! a1-27 a1-27 (-> *display* frames-per-second)) @@ -1111,7 +1117,7 @@ (set! (-> a1-30 quad) (-> obj bottom 0 quad)) (let ((s5-1 (-> obj process root))) (set! (-> a1-30 y) f30-3) - (when (zero? (logand (-> (the-as collide-shape-moving s5-1) root-prim prim-core action) 512)) + (when (zero? (logand (-> (the-as collide-shape-moving s5-1) root-prim prim-core action) (collide-action ca-9))) (let ((f30-4 (-> (the-as collide-shape-moving s5-1) ground-impact-vel))) (TODO-RENAME-61 (the-as collide-shape-moving s5-1) a1-30 (-> s5-1 transv) *up-vector*) (logior! (-> (the-as collide-shape-moving s5-1) status) 1024) @@ -1124,11 +1130,17 @@ ) (when (and (logtest? #x20000 (-> obj flags)) (= (-> obj process type) target)) (when (and (logtest? (-> (the-as collide-shape-moving (-> obj process root)) status) 1025) - (zero? (logand (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) 512)) + (zero? (logand (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) + (collide-action ca-9) + ) + ) ) (when (< (-> obj process root trans y) -409.6) (send-event (-> obj process) 'no-look-around 450) - (when (zero? (logand (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) #x4000)) + (when (zero? (logand (-> (the-as collide-shape-moving (-> obj process root)) root-prim prim-core action) + (collide-action ca-14) + ) + ) (cond ((= (-> obj process type) target) (let ((a1-32 (new 'stack-no-clear 'event-message-block))) diff --git a/test/decompiler/reference/engine/target/logic-target_REF.gc b/test/decompiler/reference/engine/target/logic-target_REF.gc index 00751d6dcb..2b8ad5c8a9 100644 --- a/test/decompiler/reference/engine/target/logic-target_REF.gc +++ b/test/decompiler/reference/engine/target/logic-target_REF.gc @@ -1061,7 +1061,9 @@ ) (if (and (= (-> self cam-user-mode) 'normal) (logtest? (-> self control unknown-surface00 flags) 1) - (zero? (logand (-> self control root-prim prim-core action) #x7380)) + (zero? + (logand (-> self control root-prim prim-core action) (collide-action ca-7 ca-8 ca-9 ca-12 ca-13 ca-14)) + ) (-> *setting-control* current allow-look-around) (>= (- (-> *display* base-frame-counter) (the-as int (-> self no-look-around-wait))) 15) (not (and (= (-> self control ground-pat material) (pat-material ice)) @@ -1137,12 +1139,12 @@ ) 9420.8 ) - (zero? (logand (-> self control root-prim prim-core action) #x4200)) + (zero? (logand (-> self control root-prim prim-core action) (collide-action ca-9 ca-14))) #t ) ) - (logior! (-> self control root-prim prim-core action) 64) - (set! (-> self control root-prim prim-core action) (logand -65 (-> self control root-prim prim-core action))) + (logior! (-> self control root-prim prim-core action) (collide-action ca-6)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-6)) ) ) (let ((v1-146 (-> self current-level))) @@ -1487,10 +1489,10 @@ ) (set! (-> self control unknown-float30) (-> self water base-height)) ) - ((logtest? (-> self control root-prim prim-core action) 512) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-9)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control trans quad)) ) - ((logtest? (-> self control root-prim prim-core action) 8192) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-13)) (set! (-> (&-> (-> self control) unknown-qword00) 0) (-> self control shadow-pos quad)) ) ((logtest? (-> self draw status) (draw-status drwf01 drwf02)) @@ -1519,7 +1521,7 @@ (set! (-> v1-0 blend) 0.0) ) (cond - ((logtest? (-> self control root-prim prim-core action) 8704) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-9 ca-13)) ) ((logtest? (-> self water flags) 1024) (let ((f30-0 (- (- (-> self control trans y) (- (-> self water height) (-> self water wade-height)))))) @@ -1557,10 +1559,10 @@ ) (vector-! (-> self control unknown-vector91) (-> self control unknown-vector90) (-> self control trans)) (cond - ((logtest? (-> self control root-prim prim-core action) 128) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-7)) (target-compute-edge) ) - ((logtest? (-> self control root-prim prim-core action) 256) + ((logtest? (-> self control root-prim prim-core action) (collide-action ca-8)) (target-compute-pole) ) ) @@ -1638,7 +1640,7 @@ ) (set! (-> self control reaction) target-collision-reaction) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1706,7 +1708,7 @@ ) ) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1767,7 +1769,7 @@ ) ) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1888,7 +1890,7 @@ ) ) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -1994,32 +1996,40 @@ (set! (-> s5-0 reaction) target-collision-reaction) (set! (-> s5-0 no-reaction) target-collision-no-reaction) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 1))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 16)) - (set! (-> s4-0 collide-with) (the-as uint #x2bef)) - (set! (-> s4-0 prim-core offense) 1) - (set! (-> s4-0 prim-core action) (the-as uint 5)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target)) + (set! (-> s4-0 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-2)) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 6)))) - (set! (-> s3-0 prim-core action) (the-as uint 5)) - (set! (-> s3-0 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-0 collide-with) (the-as uint #x2bef)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core action) (collide-action solid ca-2)) + (set! (-> s3-0 prim-core collide-as) (collide-kind target)) + (set! (-> s3-0 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-0) (set! (-> s5-0 unknown-sphere-array00 0) s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 10)))) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-1 collide-with) (the-as uint #x2bef)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core collide-as) (collide-kind target)) + (set! (-> s3-1 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-1) (set! (-> s5-0 unknown-sphere-array00 1) s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 18)))) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core collide-as) (the-as uint 16)) - (set! (-> s3-2 collide-with) (the-as uint #x2bef)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core action) (collide-action solid)) + (set! (-> s3-2 prim-core collide-as) (collide-kind target)) + (set! (-> s3-2 collide-with) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) + ) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (append-prim s4-0 s3-2) (set! (-> s5-0 unknown-sphere-array00 2) s3-2) ) diff --git a/test/decompiler/reference/engine/target/target-death_REF.gc b/test/decompiler/reference/engine/target/target-death_REF.gc index 473a6f9f95..ec6a801646 100644 --- a/test/decompiler/reference/engine/target/target-death_REF.gc +++ b/test/decompiler/reference/engine/target/target-death_REF.gc @@ -657,7 +657,7 @@ (defbehavior target-hit-push target ((arg0 vector) (arg1 matrix) (arg2 float) (arg3 float) (arg4 attack-info)) (case (-> arg4 angle) (('jump 'up 'up-forward) - (when (and (zero? (logand (-> self control root-prim prim-core action) #x4200)) + (when (and (zero? (logand (-> self control root-prim prim-core action) (collide-action ca-9 ca-14))) (not (and (= (-> self game mode) 'play) (>= 0.0 (-> self fact-info-target health)))) ) (if (and (logtest? (-> *cpad-list* cpads (-> self control unknown-cpad-info00 number) button0-rel 0) diff --git a/test/decompiler/reference/engine/target/target-part_REF.gc b/test/decompiler/reference/engine/target/target-part_REF.gc index ad72fcf358..d6f2922a15 100644 --- a/test/decompiler/reference/engine/target/target-part_REF.gc +++ b/test/decompiler/reference/engine/target/target-part_REF.gc @@ -40,7 +40,7 @@ *collide-cache* a1-1 (the-as float 20480.0) - (the-as uint #x2bef) + (collide-kind background cak-1 cak-2 cak-3 water powerup crate enemy wall-object ground-object mother-spider) s5-0 s3-0 (the-as uint 1) diff --git a/test/decompiler/reference/engine/target/target-util_REF.gc b/test/decompiler/reference/engine/target/target-util_REF.gc index 580b3c5ab3..996ddfa2b2 100644 --- a/test/decompiler/reference/engine/target/target-util_REF.gc +++ b/test/decompiler/reference/engine/target/target-util_REF.gc @@ -312,7 +312,7 @@ ) ) (dotimes (v1-4 3) - (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) 2) + (set! (-> self control unknown-sphere-array00 v1-4 prim-core offense) (collide-offense normal-attack)) ) (sphere<-vector+r! (the-as sphere (-> self control root-prim local-sphere)) @@ -322,20 +322,20 @@ (set! (-> self control unknown-symbol30) arg0) (set! (-> self state-flags) (logand -3 (-> self state-flags))) (set! (-> s4-0 transform-index) -2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s4-0 collide-with) (the-as uint 0)) + (set! (-> s4-0 prim-core collide-as) (collide-kind)) + (set! (-> s4-0 collide-with) (collide-kind)) (set! (-> s4-0 local-sphere w) 0.0) - (set! (-> s4-0 prim-core offense) 0) + (set! (-> s4-0 prim-core offense) (collide-offense no-offense)) (set! (-> s5-0 transform-index) -2) - (set! (-> s5-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s5-0 collide-with) (the-as uint 0)) + (set! (-> s5-0 prim-core collide-as) (collide-kind)) + (set! (-> s5-0 collide-with) (collide-kind)) (set! (-> s5-0 local-sphere w) 0.0) - (set! (-> s5-0 prim-core offense) 0) + (set! (-> s5-0 prim-core offense) (collide-offense no-offense)) (set! (-> gp-0 transform-index) -2) - (set! (-> gp-0 prim-core collide-as) (the-as uint 0)) - (set! (-> gp-0 collide-with) (the-as uint 0)) + (set! (-> gp-0 prim-core collide-as) (collide-kind)) + (set! (-> gp-0 collide-with) (collide-kind)) (set! (-> gp-0 local-sphere w) 0.0) - (set! (-> gp-0 prim-core offense) 0) + (set! (-> gp-0 prim-core offense) (collide-offense no-offense)) (case arg0 (('harmless #f) (set! (-> self control unknown-symbol30) #f) @@ -348,8 +348,10 @@ 9830.4 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* spin-offset) @@ -363,64 +365,80 @@ 10649.6 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (-> *TARGET-bank* duck-spin-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 32) ) (('duck-slide) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (-> *TARGET-bank* duck-spin-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 28) ) (('wheel-solid) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-57 3) - (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) 1) + (set! (-> self control unknown-sphere-array00 v1-57 prim-core offense) (collide-offense touch)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 7) (set! (-> self control unknown-symbol30) 'roll) ) (('flip) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-71 3) - (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) 1) + (set! (-> self control unknown-sphere-array00 v1-71 prim-core offense) (collide-offense touch)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* duck-spin-offset) (+ 819.2 (-> *TARGET-bank* duck-spin-radius)) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* duck-spin-radius)) (set! (-> s5-0 transform-index) 7) (set! (-> self control unknown-symbol30) 'flip) @@ -432,15 +450,19 @@ 11878.4 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* punch-offset) (-> *TARGET-bank* punch-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* punch-radius)) (set! (-> s5-0 transform-index) 22) ) @@ -451,19 +473,25 @@ 11878.4 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* uppercut0-offset) (-> *TARGET-bank* uppercut-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* (-> *TARGET-bank* uppercut-radius)) (set! (-> s5-0 transform-index) 22) - (set! (-> gp-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> gp-0 collide-with) (the-as uint #x2bce)) + (set! (-> gp-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> gp-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> gp-0 local-sphere)) (-> *TARGET-bank* uppercut1-offset) @@ -472,10 +500,12 @@ ) (('flop) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-114 3) - (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) 3) + (set! (-> self control unknown-sphere-array00 v1-114 prim-core offense) (collide-offense strong-attack)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) @@ -487,18 +517,22 @@ ) (('flop-down) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (dotimes (v1-124 3) - (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) 3) + (set! (-> self control unknown-sphere-array00 v1-124 prim-core offense) (collide-offense strong-attack)) ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* flop0-offset) (-> *TARGET-bank* flop-radius) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) (-> *TARGET-bank* flop1-offset) @@ -516,15 +550,19 @@ 12288.0 ) (logior! (-> self state-flags) 2) - (set! (-> s4-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s4-0 collide-with) (the-as uint #x2bce)) + (set! (-> s4-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s4-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s4-0 local-sphere)) (-> *TARGET-bank* spin-offset) (+ 2048.0 (-> *TARGET-bank* punch-radius)) ) - (set! (-> s5-0 prim-core collide-as) (the-as uint 4112)) - (set! (-> s5-0 collide-with) (the-as uint #x2bce)) + (set! (-> s5-0 prim-core collide-as) (collide-kind target target-attack)) + (set! (-> s5-0 collide-with) + (collide-kind cak-1 cak-2 cak-3 powerup crate enemy wall-object ground-object mother-spider) + ) (sphere<-vector+r! (the-as sphere (-> s5-0 local-sphere)) *null-vector* @@ -532,7 +570,7 @@ ) (set! (-> s5-0 transform-index) 37) (dotimes (v1-148 3) - (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) 3) + (set! (-> self control unknown-sphere-array00 v1-148 prim-core offense) (collide-offense strong-attack)) ) ) (else @@ -557,7 +595,7 @@ (set! (-> self control unknown-symbol00) arg0) (set! (-> self control unknown-float90) arg1) (dotimes (v1-2 3) - (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) 1) + (set! (-> gp-0 unknown-sphere-array00 v1-2 prim-core offense) (collide-offense touch)) (set! (-> gp-0 unknown-sphere-array00 v1-2 transform-index) -2) ) (case arg0 @@ -580,7 +618,7 @@ (set-vector! (-> gp-0 unknown-sphere-array00 1 local-sphere) 0.0 9420.8 0.0 6553.6) (set-vector! (-> gp-0 unknown-sphere-array00 2 local-sphere) 0.0 12288.0 0.0 6553.6) (dotimes (v1-22 3) - (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) 3) + (set! (-> gp-0 unknown-sphere-array00 v1-22 prim-core offense) (collide-offense strong-attack)) ) ) (('flut) @@ -657,7 +695,7 @@ ) ) (dotimes (v1-52 3) - (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) 3) + (set! (-> gp-0 unknown-sphere-array00 v1-52 prim-core offense) (collide-offense strong-attack)) ) ) (else @@ -1072,7 +1110,7 @@ (logior! (-> arg1 state-flags) 32) (set! (-> arg1 control unknown-dword80) (-> *display* base-frame-counter)) (set! (-> arg1 control unknown-dword81) (the-as int arg0)) - (dummy-53 (-> arg1 control) 2 4096 0) + (dummy-53 (-> arg1 control) 2 (collide-kind target-attack) (collide-kind)) 0 (none) ) @@ -1082,7 +1120,7 @@ (defun target-timed-invulnerable-off ((arg0 target)) (logclear! (-> arg0 draw status) (draw-status drwf01)) (set! (-> arg0 state-flags) (logand -33 (-> arg0 state-flags))) - (dummy-53 (-> arg0 control) 2 0 4096) + (dummy-53 (-> arg0 control) 2 (collide-kind) (collide-kind target-attack)) 0 (none) ) diff --git a/test/decompiler/reference/engine/target/target2_REF.gc b/test/decompiler/reference/engine/target/target2_REF.gc index 0d2364cb61..07bd7fc095 100644 --- a/test/decompiler/reference/engine/target/target2_REF.gc +++ b/test/decompiler/reference/engine/target/target2_REF.gc @@ -1193,7 +1193,7 @@ (set! (-> self control unknown-handle10) arg0) (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self control unknown-surface00) *pole-mods*) - (logior! (-> self control root-prim prim-core action) 256) + (logior! (-> self control root-prim prim-core action) (collide-action ca-8)) (target-collide-set! 'pole (the-as float (-> (new 'static 'array int32 1 0) 0))) (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) (set! (-> self control transv quad) (the-as uint128 0)) @@ -1204,7 +1204,7 @@ :exit (behavior () (target-collide-set! 'normal (the-as float (-> (new 'static 'array int32 1 0) 0))) - (set! (-> self control root-prim prim-core action) (logand -257 (-> self control root-prim prim-core action))) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-8)) (set! (-> self control unknown-handle10) (the-as handle #f)) (none) ) @@ -1522,7 +1522,7 @@ (set! (-> self state-time) (-> *display* base-frame-counter)) (set! (-> self control unknown-surface00) *edge-grab-mods*) (set! (-> self control unknown-dword41) (-> *display* base-frame-counter)) - (logior! (-> self control root-prim prim-core action) 136) + (logior! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (set! (-> self control unknown-vector102 quad) (-> self control transv quad)) (set! (-> self control transv quad) (the-as uint128 0)) (send-event *camera* 'ease-in) @@ -1530,8 +1530,8 @@ ) :exit (behavior () - (when (logtest? (-> self control root-prim prim-core action) 128) - (set! (-> self control root-prim prim-core action) (logand -137 (-> self control root-prim prim-core action))) + (when (logtest? (-> self control root-prim prim-core action) (collide-action ca-7)) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (send-event *camera* 'damp-up) ) (none) @@ -1710,7 +1710,7 @@ (behavior ((arg0 float) (arg1 float)) (ja-channel-set! 1) (set-quaternion! (-> self control) (-> self control dir-targ)) - (set! (-> self control root-prim prim-core action) (logand -137 (-> self control root-prim prim-core action))) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (set! (-> self control transv quad) (the-as uint128 0)) (let ((s4-0 (new 'stack-no-clear 'vector))) (let ((a0-8 (-> self skel root-channel 0))) @@ -1782,7 +1782,7 @@ ) ) (set! (-> self control transv quad) (the-as uint128 0)) - (set! (-> self control root-prim prim-core action) (logand -137 (-> self control root-prim prim-core action))) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-3 ca-7)) (vector-float*! (-> self control transv) (-> self control unknown-vector101) -40960.0) (when (and (< (- (-> *display* base-frame-counter) (the-as int (-> self control rider-time))) 60) (or (logtest? (-> self control unknown-surface01 flags) #x4000) diff --git a/test/decompiler/reference/engine/target/target_REF.gc b/test/decompiler/reference/engine/target/target_REF.gc index 87d50507d3..023b92ebcb 100644 --- a/test/decompiler/reference/engine/target/target_REF.gc +++ b/test/decompiler/reference/engine/target/target_REF.gc @@ -3105,8 +3105,8 @@ ) ) ) - (if (and v1-11 (or (logtest? (-> v1-11 root-prim prim-core collide-as) 256) - (logtest? (-> v1-11 root-prim prim-core action) 1024) + (if (and v1-11 (or (logtest? (-> v1-11 root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> v1-11 root-prim prim-core action) (collide-action ca-10)) ) ) (set! (-> self control unknown-uint31) (the-as uint 1)) diff --git a/test/decompiler/reference/levels/beach/beach-obs_REF.gc b/test/decompiler/reference/levels/beach/beach-obs_REF.gc index 24dbced0ef..ad44023db5 100644 --- a/test/decompiler/reference/levels/beach/beach-obs_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-obs_REF.gc @@ -98,26 +98,26 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) -40960.0 -40960.0 32768.0 69632.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 4915.2 0.0 -4915.2 13516.8) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 9) (set-vector! (-> s2-1 local-sphere) 4915.2 0.0 -4915.2 13516.8) (append-prim s3-0 s2-1) @@ -427,34 +427,34 @@ (defmethod init-from-entity! grottopole ((obj grottopole) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 -20480.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 -20480.0 0.0 40960.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 -20480.0 0.0 40960.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 -20480.0 0.0 40960.0) (append-prim s3-0 s2-2) @@ -852,10 +852,10 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 6963.2) (set-root-prim! s4-0 s3-0) @@ -944,7 +944,7 @@ (vector-v++! (-> self root-override transv) (dummy-62 (-> self root-override) (new-stack-vector0) 1.0)) ) (dummy-47 (-> self root-override)) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (quaternion*! (-> self root-override quat) (-> self root-override quat) (-> self tumble)) (suspend) ) @@ -961,7 +961,7 @@ ) (set! (-> self root-override transv w) 1.0) (dummy-47 (-> self root-override)) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (let ((gp-2 (new 'stack-no-clear 'vector)) (f30-1 (vector-length (-> self root-override transv))) ) @@ -1020,10 +1020,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 17)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind background target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 (* 409.6 arg2)) (set-root-prim! s3-0 s2-0) @@ -1134,10 +1134,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) @@ -1591,25 +1591,25 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 8192.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 16384.0 0.0 7782.4) (append-prim s3-0 s2-1) ) @@ -1758,53 +1758,53 @@ (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 1)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind background)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 24576.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 16384.0 -20480.0 16384.0 20480.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 16384.0 -20480.0 -16384.0 20480.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 4) (set-vector! (-> s2-3 local-sphere) -16384.0 -20480.0 -16384.0 20480.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 4) (set-vector! (-> s2-4 local-sphere) -16384.0 -20480.0 16384.0 20480.0) (append-prim s3-0 s2-4) diff --git a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc index f5eff8acf7..ce4ef26c6c 100644 --- a/test/decompiler/reference/levels/beach/beach-rocks_REF.gc +++ b/test/decompiler/reference/levels/beach/beach-rocks_REF.gc @@ -594,10 +594,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 1)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind background)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc index e02e81a227..dbd578ef86 100644 --- a/test/decompiler/reference/levels/beach/lurkercrab_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkercrab_REF.gc @@ -292,7 +292,7 @@ nav-enemy-default-event-handler (let ((v1-3 (dummy-34 (-> self collide-info) (the-as uint 2)))) (when v1-3 (let ((v0-1 4)) - (set! (-> v1-3 prim-core offense) v0-1) + (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) v0-1 ) ) @@ -305,7 +305,7 @@ nav-enemy-default-event-handler (let ((v1-3 (dummy-34 (-> self collide-info) (the-as uint 2)))) (when v1-3 (let ((v0-1 1)) - (set! (-> v1-3 prim-core offense) v0-1) + (set! (-> v1-3 prim-core offense) (the-as collide-offense v0-1)) v0-1 ) ) @@ -830,31 +830,31 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 4915.2 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 2) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-1 transform-index) 16) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 1638.4) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 2) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-2 transform-index) 21) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 1638.4) (append-prim s3-0 s2-2) diff --git a/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc b/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc index 834f7318a6..6b4f45688b 100644 --- a/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerpuppy_REF.gc @@ -398,10 +398,10 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4915.2) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc index 3e918dd60f..a30e3b68d7 100644 --- a/test/decompiler/reference/levels/beach/lurkerworm_REF.gc +++ b/test/decompiler/reference/levels/beach/lurkerworm_REF.gc @@ -656,8 +656,8 @@ lurkerworm-default-post-behavior (behavior () (logclear! (-> self mask) (process-mask actor-pause)) (let ((v1-3 (-> self root-override root-prim))) - (set! (-> v1-3 collide-with) (the-as uint 0)) - (set! (-> v1-3 prim-core collide-as) (the-as uint 0)) + (set! (-> v1-3 collide-with) (collide-kind)) + (set! (-> v1-3 prim-core collide-as) (collide-kind)) ) 0 (let ((a0-1 (-> self skel root-channel 0))) @@ -695,60 +695,60 @@ lurkerworm-default-post-behavior (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 2) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-5 transform-index) 11) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-5) diff --git a/test/decompiler/reference/levels/beach/pelican_REF.gc b/test/decompiler/reference/levels/beach/pelican_REF.gc index db9fc8427f..90a56ab12a 100644 --- a/test/decompiler/reference/levels/beach/pelican_REF.gc +++ b/test/decompiler/reference/levels/beach/pelican_REF.gc @@ -1138,10 +1138,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/beach/seagull_REF.gc b/test/decompiler/reference/levels/beach/seagull_REF.gc index 76f20c13eb..348897dbcc 100644 --- a/test/decompiler/reference/levels/beach/seagull_REF.gc +++ b/test/decompiler/reference/levels/beach/seagull_REF.gc @@ -443,7 +443,7 @@ :code (behavior () (set! (-> self root-override trans y) (+ 20480.0 (-> self root-override trans y))) - (dummy-60 (-> self root-override) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self root-override) 40960.0 40960.0 #t (collide-kind background)) (dummy-47 (-> self root-override)) (clear-collide-with-as (-> self root-override)) (let ((gp-0 (-> self skel root-channel 0))) @@ -709,7 +709,7 @@ (vector+! a1-1 a0-2 v1-0) (if (points-in-air? a0-2 a1-1 *seagull-boxes* 10) (dummy-57 (-> obj root-override) (-> obj root-override transv)) - (dummy-33 (-> obj root-override) s5-0 (the-as uint 1)) + (dummy-33 (-> obj root-override) s5-0 (collide-kind background)) ) ) (none) @@ -1192,7 +1192,7 @@ (while (< 0.5 f30-0) (suspend) (set! f30-0 (- f30-0 (-> *display* seconds-per-frame))) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (let* ((v1-21 self) (f1-3 (the float (sar (shl (the int (- (-> self heading) (-> v1-21 heading))) 48) 48))) (f0-12 (- (-> v1-21 tilt))) @@ -1247,7 +1247,7 @@ (joint-control-channel-group-eval! a0-29 (the-as art-joint-anim #f) num-func-seek!) ) (set! f30-0 (- f30-0 (-> *display* seconds-per-frame))) - (dummy-33 (-> self root-override) (-> self root-override transv) (the-as uint 1)) + (dummy-33 (-> self root-override) (-> self root-override transv) (collide-kind background)) (let* ((v1-48 self) (f1-13 (the float (sar (shl (the int (- (-> self heading) (-> v1-48 heading))) 48) 48))) (f0-32 (- (-> v1-48 tilt))) @@ -1368,10 +1368,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s2-0 collide-with) (the-as uint 1)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind)) + (set! (-> s2-0 collide-with) (collide-kind background)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 2048.0) (set-root-prim! s3-0 s2-0) ) diff --git a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc index 5f2e2b7509..3274fad076 100644 --- a/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-obs_REF.gc @@ -212,10 +212,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) @@ -536,10 +536,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 49152.0) (set-root-prim! s5-0 s4-0) @@ -728,10 +728,10 @@ (defmethod TODO-RENAME-24 citb-iris-door ((obj citb-iris-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -793,10 +793,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -1276,10 +1276,10 @@ (defmethod init-from-entity! citb-robotboss ((obj citb-robotboss) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 81920.0 0.0 143360.0) (set-root-prim! s4-0 s3-0) @@ -2020,10 +2020,10 @@ (defmethod init! citb-generator ((obj citb-generator)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc index 6d34a4b8fb..969d89f120 100644 --- a/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc +++ b/test/decompiler/reference/levels/citadel/citadel-sages_REF.gc @@ -186,10 +186,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 28672.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc b/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc index 478b912cdd..9cbea3a0f5 100644 --- a/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-drop-plat-CIT_REF.gc @@ -293,10 +293,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/citadel/citb-plat_REF.gc b/test/decompiler/reference/levels/citadel/citb-plat_REF.gc index 6001107a60..15d86af3f0 100644 --- a/test/decompiler/reference/levels/citadel/citb-plat_REF.gc +++ b/test/decompiler/reference/levels/citadel/citb-plat_REF.gc @@ -114,10 +114,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -185,10 +185,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -282,10 +282,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -691,10 +691,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -840,10 +840,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 -20480.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) @@ -921,10 +921,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) @@ -1026,10 +1026,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 22528.0) (set-root-prim! s5-0 s4-0) @@ -1270,29 +1270,29 @@ (defmethod init-from-entity! citb-firehose ((obj citb-firehose) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 -61440.0 0.0 36864.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 2) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 -49152.0 0.0 12288.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 2) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 -61440.0 0.0 14336.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 2) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-2 local-sphere) 0.0 -73728.0 0.0 16384.0) (append-prim s3-0 s2-2) ) @@ -1491,26 +1491,26 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 122880.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -2867.2 0.0 7372.8) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 122880.0) (append-prim s4-0 s3-1) diff --git a/test/decompiler/reference/levels/common/babak_REF.gc b/test/decompiler/reference/levels/common/babak_REF.gc index a8b2585400..a0dda2df8e 100644 --- a/test/decompiler/reference/levels/common/babak_REF.gc +++ b/test/decompiler/reference/levels/common/babak_REF.gc @@ -408,31 +408,31 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s4-0 s3-2) diff --git a/test/decompiler/reference/levels/common/basebutton_REF.gc b/test/decompiler/reference/levels/common/basebutton_REF.gc index 27a03c543f..39999532e5 100644 --- a/test/decompiler/reference/levels/common/basebutton_REF.gc +++ b/test/decompiler/reference/levels/common/basebutton_REF.gc @@ -426,25 +426,25 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 12288.0) (append-prim s4-0 s3-1) diff --git a/test/decompiler/reference/levels/common/baseplat_REF.gc b/test/decompiler/reference/levels/common/baseplat_REF.gc index 86d17f80d2..431f6187bb 100644 --- a/test/decompiler/reference/levels/common/baseplat_REF.gc +++ b/test/decompiler/reference/levels/common/baseplat_REF.gc @@ -387,10 +387,10 @@ eco-door-event-handler (defmethod TODO-RENAME-24 eco-door ((obj eco-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/common/blocking-plane_REF.gc b/test/decompiler/reference/levels/common/blocking-plane_REF.gc index 0452bc50dd..09e0300260 100644 --- a/test/decompiler/reference/levels/common/blocking-plane_REF.gc +++ b/test/decompiler/reference/levels/common/blocking-plane_REF.gc @@ -60,10 +60,10 @@ (s4-1 (new 'process 'collide-shape self (collide-list-enum usually-hit-by-player))) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-1 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 (fmax 122880.0 f30-1)) (set-root-prim! s4-1 s3-1) diff --git a/test/decompiler/reference/levels/common/joint-exploder_REF.gc b/test/decompiler/reference/levels/common/joint-exploder_REF.gc index 233934623d..154efe96aa 100644 --- a/test/decompiler/reference/levels/common/joint-exploder_REF.gc +++ b/test/decompiler/reference/levels/common/joint-exploder_REF.gc @@ -500,7 +500,13 @@ ;; definition for method 22 of type joint-exploder ;; Used lq/sq (defmethod TODO-RENAME-22 joint-exploder ((obj joint-exploder) (arg0 joint-exploder-list)) - (dummy-13 *collide-cache* (-> arg0 bbox) (the-as uint 1) obj (the-as uint 1)) + (dummy-13 + *collide-cache* + (-> arg0 bbox) + (collide-kind background) + obj + (new 'static 'pat-surface :skip #x1 :noentity #x1) + ) (let ((gp-1 (-> obj joints)) (v1-2 (-> arg0 head)) ) @@ -511,7 +517,7 @@ (s3-0 (new 'stack-no-clear 'collide-tri-result)) ) (vector-! a2-1 s4-0 (-> s5-1 prev-pos)) - (when (>= (dummy-18 *collide-cache* (-> s5-1 prev-pos) a2-1 40.96 1 s3-0 1) 0.0) + (when (>= (dummy-18 *collide-cache* (-> s5-1 prev-pos) a2-1 40.96 (collide-kind background) s3-0 1) 0.0) (set! (-> s4-0 quad) (-> s3-0 intersect quad)) (let ((f28-0 (vector-xz-length (-> s5-1 transv)))) (vector-reflect! (-> s5-1 transv) (-> s5-1 transv) (-> s3-0 normal)) diff --git a/test/decompiler/reference/levels/common/launcherdoor_REF.gc b/test/decompiler/reference/levels/common/launcherdoor_REF.gc index a8ac8b96da..6d0a345c4e 100644 --- a/test/decompiler/reference/levels/common/launcherdoor_REF.gc +++ b/test/decompiler/reference/levels/common/launcherdoor_REF.gc @@ -185,10 +185,10 @@ (set! (-> obj close-speed) 2.0) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/common/mistycannon_REF.gc b/test/decompiler/reference/levels/common/mistycannon_REF.gc index 138ce4efe1..27a0b5b4b2 100644 --- a/test/decompiler/reference/levels/common/mistycannon_REF.gc +++ b/test/decompiler/reference/levels/common/mistycannon_REF.gc @@ -968,13 +968,13 @@ :post (behavior () (vector-v++! (-> self root-override transv) (dummy-62 (-> self root-override) (new-stack-vector0) 1.0)) - (set! (-> self root-override root-prim prim-core offense) 1) + (set! (-> self root-override root-prim prim-core offense) (collide-offense touch)) (dummy-33 (-> self root-override) (-> self root-override transv) (-> self root-override root-prim collide-with) ) - (set! (-> self root-override root-prim prim-core offense) 4) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) (spawn-part self) (when (and (zero? (-> self draw cur-lod)) (logtest? (-> self draw status) (draw-status drwf03))) (if (logtest? (-> self root-override status) 1) @@ -990,7 +990,7 @@ (-> self root-override trans) (-> self root-override shadow-pos) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -1133,8 +1133,8 @@ (let ((v1-11 (-> self root-override root-prim))) (set! (-> v1-11 local-sphere w) (-> self blast-radius)) (set! (-> v1-11 prim-core world-sphere w) (-> self blast-radius)) - (set! (-> v1-11 collide-with) (the-as uint 924)) - (set! (-> v1-11 prim-core collide-as) (the-as uint 256)) + (set! (-> v1-11 collide-with) (collide-kind cak-2 cak-3 target crate enemy wall-object)) + (set! (-> v1-11 prim-core collide-as) (collide-kind enemy)) ) (dummy-47 (-> self root-override)) (let ((a1-3 (new 'stack-no-clear 'overlaps-others-params))) @@ -1225,10 +1225,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 925)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind background cak-2 cak-3 target crate enemy wall-object)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1720.3201) (set-root-prim! s5-0 s4-0) @@ -2082,25 +2082,25 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 20480.0 0.0 40960.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 28672.0 -8192.0 4096.0) (append-prim s3-0 s2-1) diff --git a/test/decompiler/reference/levels/common/nav-enemy_REF.gc b/test/decompiler/reference/levels/common/nav-enemy_REF.gc index 98ae5fb3b1..bd504b697b 100644 --- a/test/decompiler/reference/levels/common/nav-enemy_REF.gc +++ b/test/decompiler/reference/levels/common/nav-enemy_REF.gc @@ -85,7 +85,7 @@ ) ) ) - (dummy-54 (-> obj collide-info) 2 1) + (dummy-54 (-> obj collide-info) 2 (collide-offense touch)) (set! (-> obj nav-enemy-flags) (logand -257 (-> obj nav-enemy-flags))) ) (dummy-14 (-> obj draw shadow-ctrl)) @@ -176,7 +176,7 @@ (set! (-> v1-0 param 1) (the-as uint a1-1)) ) (the-as object (when (send-event-function arg0 v1-0) - (dummy-54 (-> self collide-info) 2 0) + (dummy-54 (-> self collide-info) 2 (collide-offense no-offense)) (logior! (-> self nav-enemy-flags) 256) #t ) @@ -619,7 +619,7 @@ nav-enemy-default-event-handler ;; INFO: Return type mismatch int vs none. (defbehavior nav-enemy-set-base-collide-sphere-collide-with nav-enemy ((arg0 uint)) (let ((s5-0 (-> self collide-info root-prim))) - (set! (-> s5-0 collide-with) arg0) + (set! (-> s5-0 collide-with) (the-as collide-kind arg0)) (let ((s4-0 (if (and (nonzero? s5-0) (type-type? (-> s5-0 type) collide-shape-prim-group)) s5-0 ) @@ -653,7 +653,7 @@ nav-enemy-default-event-handler ) ) (if s5-1 - (set! (-> s5-1 collide-with) arg0) + (set! (-> s5-1 collide-with) (the-as collide-kind arg0)) ) ) ) @@ -815,7 +815,7 @@ nav-enemy-default-event-handler (nav-enemy-neck-control-inactive) (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> self nav-info move-to-ground) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (-> self nav-info gnd-collide-with)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as collide-kind (-> self nav-info gnd-collide-with))) ) (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) (set! (-> self state-timeout) 300) diff --git a/test/decompiler/reference/levels/common/orb-cache_REF.gc b/test/decompiler/reference/levels/common/orb-cache_REF.gc index 2eb9e82f88..2cd141dec9 100644 --- a/test/decompiler/reference/levels/common/orb-cache_REF.gc +++ b/test/decompiler/reference/levels/common/orb-cache_REF.gc @@ -377,10 +377,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint #x8800)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object blue-eco-suck)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/common/plat-button_REF.gc b/test/decompiler/reference/levels/common/plat-button_REF.gc index a1a8256a9f..d313fb2423 100644 --- a/test/decompiler/reference/levels/common/plat-button_REF.gc +++ b/test/decompiler/reference/levels/common/plat-button_REF.gc @@ -433,26 +433,26 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27033.6) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 -3072.0 0.0 7372.8) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 3)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 -4096.0 0.0 27033.6) (append-prim s4-0 s3-1) diff --git a/test/decompiler/reference/levels/common/plat_REF.gc b/test/decompiler/reference/levels/common/plat_REF.gc index ce69d07249..7ef22fdbb8 100644 --- a/test/decompiler/reference/levels/common/plat_REF.gc +++ b/test/decompiler/reference/levels/common/plat_REF.gc @@ -172,10 +172,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 13107.2) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/common/rigid-body_REF.gc b/test/decompiler/reference/levels/common/rigid-body_REF.gc index 6230b7dbce..28fff34e32 100644 --- a/test/decompiler/reference/levels/common/rigid-body_REF.gc +++ b/test/decompiler/reference/levels/common/rigid-body_REF.gc @@ -817,10 +817,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/common/sharkey_REF.gc b/test/decompiler/reference/levels/common/sharkey_REF.gc index 4b3cfcf66f..9dbd533f38 100644 --- a/test/decompiler/reference/levels/common/sharkey_REF.gc +++ b/test/decompiler/reference/levels/common/sharkey_REF.gc @@ -877,9 +877,9 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 2) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 (* 6144.0 (-> obj scale))) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc b/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc index 4274f2a0c1..a0fbfc1192 100644 --- a/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc +++ b/test/decompiler/reference/levels/darkcave/darkcave-obs_REF.gc @@ -255,10 +255,10 @@ (set-vector! (-> obj on-color-emissive) 0.0 0.0 0.0 0.0) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 19251.2 0.0 22118.4) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/finalboss/final-door_REF.gc b/test/decompiler/reference/levels/finalboss/final-door_REF.gc index c00ddb0f92..14cea15888 100644 --- a/test/decompiler/reference/levels/finalboss/final-door_REF.gc +++ b/test/decompiler/reference/levels/finalboss/final-door_REF.gc @@ -197,10 +197,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 45056.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) @@ -405,8 +405,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 64)) - (set! (-> s2-0 collide-with) (the-as uint 16)) + (set! (-> s2-0 prim-core collide-as) (collide-kind powerup)) + (set! (-> s2-0 collide-with) (collide-kind target)) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) (set-root-prim! s3-0 s2-0) ) diff --git a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc index 4fb1723547..5fdf2c990c 100644 --- a/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc +++ b/test/decompiler/reference/levels/finalboss/green-eco-lurker_REF.gc @@ -896,64 +896,64 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 7) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 -4096.0 20480.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2785.28 0.0 3276.8) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6615.04 0.0 3276.8) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core action) (collide-action solid)) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10444.8 0.0 3276.8) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 6) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s4-0 s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core offense) 2) + (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-4 collide-with) (collide-kind target)) + (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 4) (set-vector! (-> s3-4 local-sphere) 0.0 -3276.8 -2048.0 5734.4) (append-prim s4-0 s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core offense) 2) + (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-5 collide-with) (collide-kind target)) + (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 12) (set-vector! (-> s3-5 local-sphere) 0.0 0.0 0.0 2457.6) (append-prim s4-0 s3-5) ) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-6 collide-with) (the-as uint 16)) - (set! (-> s3-6 prim-core offense) 2) + (set! (-> s3-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-6 collide-with) (collide-kind target)) + (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 16) (set-vector! (-> s3-6 local-sphere) 0.0 0.0 0.0 2457.6) (append-prim s4-0 s3-6) diff --git a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc index 95f3453b51..c41371ea8d 100644 --- a/test/decompiler/reference/levels/finalboss/light-eco_REF.gc +++ b/test/decompiler/reference/levels/finalboss/light-eco_REF.gc @@ -708,9 +708,9 @@ ) (let ((s4-2 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-2 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 0) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) (set-root-prim! s4-2 s3-0) ) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc index 148bc1254e..75fb866b16 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-misc_REF.gc @@ -487,44 +487,44 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 19)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 19)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 19)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 19)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 6) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 102400.0) (append-prim s3-0 s2-3) diff --git a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc index 988d3a05e9..abdad59a9e 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss-weapon_REF.gc @@ -46,11 +46,13 @@ ;; definition for method 11 of type torus (defmethod dummy-11 torus ((obj torus) (arg0 vector)) (let ((s4-0 (the-as collide-shape-prim-group (-> *target* control root-prim)))) - (when (and (logtest? (-> s4-0 prim-core collide-as) 16) (TODO-RENAME-10 obj (-> s4-0 prim-core) arg0)) + (when (and (logtest? (-> s4-0 prim-core collide-as) (collide-kind target)) + (TODO-RENAME-10 obj (-> s4-0 prim-core) arg0) + ) (countdown (s3-0 (-> s4-0 num-prims)) (let ((v1-9 (-> s4-0 prims s3-0))) - (if (and (logtest? (-> v1-9 prim-core action) 1) - (logtest? (-> v1-9 prim-core collide-as) 16) + (if (and (logtest? (-> v1-9 prim-core action) (collide-action solid)) + (logtest? (-> v1-9 prim-core collide-as) (collide-kind target)) (TODO-RENAME-10 obj (-> v1-9 prim-core) arg0) ) (return #t) @@ -624,10 +626,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s0-0 (new 'process 'collide-shape-prim-sphere s1-0 (the-as uint 0)))) - (set! (-> s0-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s0-0 collide-with) (the-as uint 16)) - (set! (-> s0-0 prim-core action) (the-as uint 1)) - (set! (-> s0-0 prim-core offense) 4) + (set! (-> s0-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s0-0 collide-with) (collide-kind target)) + (set! (-> s0-0 prim-core action) (collide-action solid)) + (set! (-> s0-0 prim-core offense) (collide-offense indestructible)) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s1-0 s0-0) @@ -766,9 +768,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core offense) 4) + (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) 0.0 8192.0 0.0 8192.0) (set-root-prim! s2-0 s1-0) ) @@ -1057,10 +1059,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (set! sv-16 (new 'process 'collide-shape-prim-sphere s0-0 (the-as uint 0))) - (set! (-> sv-16 prim-core collide-as) (the-as uint 512)) - (set! (-> sv-16 collide-with) (the-as uint 16)) - (set! (-> sv-16 prim-core action) (the-as uint 1)) - (set! (-> sv-16 prim-core offense) 4) + (set! (-> sv-16 prim-core collide-as) (collide-kind wall-object)) + (set! (-> sv-16 collide-with) (collide-kind target)) + (set! (-> sv-16 prim-core action) (collide-action solid)) + (set! (-> sv-16 prim-core offense) (collide-offense indestructible)) (set! (-> sv-16 transform-index) 4) (set-vector! (-> sv-16 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s0-0 sv-16) @@ -1182,10 +1184,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s2-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 4) + (set! (-> s1-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core action) (collide-action solid)) + (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s2-0 s1-0) ) diff --git a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc index 1b2ad88e9d..63907f5e92 100644 --- a/test/decompiler/reference/levels/finalboss/robotboss_REF.gc +++ b/test/decompiler/reference/levels/finalboss/robotboss_REF.gc @@ -1259,10 +1259,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 3 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 3 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self use-interesting) #f) (send-event *camera* 'point-of-interest #f) @@ -2362,10 +2362,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 5 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 5 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self use-interesting) #f) (set! (-> self des-cam-entity) #f) @@ -3333,10 +3333,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 9 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 9 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self des-cam-entity) #f) (robotboss-yellow-eco-off) @@ -4164,10 +4164,10 @@ ) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 collide-with) - (the-as uint 0) + (collide-kind) ) (set! (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0 prim-core collide-as) - (the-as uint 0) + (collide-kind) ) (set! (-> self use-interesting) #f) (send-event *camera* 'point-of-interest #f) @@ -4471,179 +4471,179 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 19) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 368640.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 4)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 7) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 57344.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 -57344.0 61440.0 73728.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 8)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 16) (set-vector! (-> s2-3 local-sphere) 0.0 -20480.0 69632.0 237568.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 4) (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 14) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 81920.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 5) (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 1)) - (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid)) + (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 39) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 69632.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 6) (the-as uint 0)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 1)) - (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid)) + (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 31) (set-vector! (-> s2-6 local-sphere) 0.0 -57344.0 0.0 90112.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 7) (the-as uint 0)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 1)) - (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid)) + (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 30) (set-vector! (-> s2-7 local-sphere) 0.0 24576.0 0.0 81920.0) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 8) (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 1)) - (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid)) + (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 57) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 81920.0) (append-prim s3-0 s2-8) ) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 9) (the-as uint 2)))) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 1)) - (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-9 collide-with) (collide-kind target)) + (set! (-> s2-9 prim-core action) (collide-action solid)) + (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 68) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 49152.0) (append-prim s3-0 s2-9) ) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 10) (the-as uint 0)))) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 1)) - (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-10 collide-with) (collide-kind target)) + (set! (-> s2-10 prim-core action) (collide-action solid)) + (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 4) (set-vector! (-> s2-10 local-sphere) 0.0 24576.0 0.0 102400.0) (append-prim s3-0 s2-10) ) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 11) (the-as uint 0)))) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 1)) - (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-11 collide-with) (collide-kind target)) + (set! (-> s2-11 prim-core action) (collide-action solid)) + (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 77) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 73728.0) (append-prim s3-0 s2-11) ) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 12) (the-as uint 0)))) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 1)) - (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-12 collide-with) (collide-kind target)) + (set! (-> s2-12 prim-core action) (collide-action solid)) + (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 75) (set-vector! (-> s2-12 local-sphere) 0.0 24576.0 0.0 81920.0) (append-prim s3-0 s2-12) ) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 13) (the-as uint 0)))) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 1)) - (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-13 collide-with) (collide-kind target)) + (set! (-> s2-13 prim-core action) (collide-action solid)) + (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 74) (set-vector! (-> s2-13 local-sphere) 0.0 40960.0 0.0 73728.0) (append-prim s3-0 s2-13) ) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 14) (the-as uint 0)))) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 1)) - (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-14 collide-with) (collide-kind target)) + (set! (-> s2-14 prim-core action) (collide-action solid)) + (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 73) (set-vector! (-> s2-14 local-sphere) 0.0 32768.0 0.0 61440.0) (append-prim s3-0 s2-14) ) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 15) (the-as uint 0)))) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 1)) - (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-15 collide-with) (collide-kind target)) + (set! (-> s2-15 prim-core action) (collide-action solid)) + (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 84) (set-vector! (-> s2-15 local-sphere) 0.0 40960.0 -8192.0 98304.0) (append-prim s3-0 s2-15) ) (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 16) (the-as uint 0)))) - (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-16 collide-with) (the-as uint 16)) - (set! (-> s2-16 prim-core action) (the-as uint 1)) - (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-16 collide-with) (collide-kind target)) + (set! (-> s2-16 prim-core action) (collide-action solid)) + (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 83) (set-vector! (-> s2-16 local-sphere) 0.0 65536.0 0.0 73728.0) (append-prim s3-0 s2-16) ) (let ((s2-17 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 17) (the-as uint 0)))) - (set! (-> s2-17 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-17 collide-with) (the-as uint 16)) - (set! (-> s2-17 prim-core action) (the-as uint 1)) - (set! (-> s2-17 prim-core offense) 4) + (set! (-> s2-17 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-17 collide-with) (collide-kind target)) + (set! (-> s2-17 prim-core action) (collide-action solid)) + (set! (-> s2-17 prim-core offense) (collide-offense indestructible)) (set! (-> s2-17 transform-index) 82) (set-vector! (-> s2-17 local-sphere) 0.0 32768.0 0.0 61440.0) (append-prim s3-0 s2-17) ) (let ((s2-18 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 18) (the-as uint 0)))) - (set! (-> s2-18 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-18 collide-with) (the-as uint 16)) - (set! (-> s2-18 prim-core action) (the-as uint 1)) - (set! (-> s2-18 prim-core offense) 4) + (set! (-> s2-18 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-18 collide-with) (collide-kind target)) + (set! (-> s2-18 prim-core action) (collide-action solid)) + (set! (-> s2-18 prim-core offense) (collide-offense indestructible)) (set! (-> s2-18 transform-index) 3) (set-vector! (-> s2-18 local-sphere) 0.0 0.0 0.0 61440.0) (append-prim s3-0 s2-18) diff --git a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc index 8d5ca650f3..c0a0912d95 100644 --- a/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc +++ b/test/decompiler/reference/levels/firecanyon/firecanyon-obs_REF.gc @@ -203,9 +203,9 @@ (defmethod init-from-entity! balloon ((obj balloon) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) ) @@ -450,45 +450,45 @@ (defmethod init-from-entity! spike ((obj spike) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 8192.0 0.0 16384.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 16384.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 32768.0 0.0 16384.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 45056.0 0.0 16384.0) (append-prim s3-0 s2-3) @@ -831,10 +831,10 @@ (defmethod init-from-entity! crate-darkeco-cluster ((obj crate-darkeco-cluster) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 6553.6 0.0 13516.8) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc index 58c028928d..2b2c944541 100644 --- a/test/decompiler/reference/levels/flut_common/flutflut_REF.gc +++ b/test/decompiler/reference/levels/flut_common/flutflut_REF.gc @@ -121,8 +121,8 @@ ) :exit (behavior () - (set! (-> self root-override root-prim prim-core action) (the-as uint 0)) - (set! (-> self root-override root-prim prim-core offense) 0) + (set! (-> self root-override root-prim prim-core action) (collide-action)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense no-offense)) 0 (none) ) @@ -138,13 +138,13 @@ ) ) (and *cheat-mode* (cpad-hold? 0 l3)) - (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) + (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) ) (goto cfg-75) ) ) ((= v1-0 4) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) (goto cfg-75) ) ) @@ -160,7 +160,7 @@ (goto cfg-75) ) (if (and *target* - (logtest? (-> *target* control root-prim prim-core action) #x4000) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) (< (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15) ) (go-virtual pickup (method-of-object self idle)) @@ -191,7 +191,7 @@ (suspend) ) (label cfg-75) - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) (go-virtual wait-for-return) (go-virtual idle) ) @@ -218,10 +218,10 @@ (let ((v1-2 (-> self skel root-channel 0))) (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) ) - (set! (-> self root-override root-prim prim-core action) (the-as uint 2049)) - (set! (-> self root-override root-prim prim-core offense) 4) + (set! (-> self root-override root-prim prim-core action) (collide-action solid ca-11)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) (while #t - (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) (go-virtual wait-for-return) ) (when (logtest? (-> self draw status) (draw-status drwf03)) @@ -286,8 +286,8 @@ (let ((v1-3 (-> self skel root-channel 0))) (set! (-> v1-3 frame-group) (the-as art-joint-anim (-> self draw art-group data 3))) ) - (set! (-> self root-override root-prim prim-core action) (the-as uint 2049)) - (set! (-> self root-override root-prim prim-core offense) 4) + (set! (-> self root-override root-prim prim-core action) (collide-action solid ca-11)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) (transform-post) ) (('trans) @@ -316,7 +316,7 @@ (flutflut-effect) (suspend) ) - (while (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) + (while (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) (flutflut-effect) (suspend) ) @@ -357,7 +357,7 @@ (ja-channel-set! 0) (ja-post) (while #t - (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000))) + (if (not (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)))) (go-virtual idle) ) (flutflut-effect) @@ -377,8 +377,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 6144.0) (set-root-prim! s4-0 s3-0) ) @@ -410,14 +410,16 @@ ) (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 120) obj)) (set! (-> obj auto-get-off) #f) - (dummy-60 (-> obj root-override) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> obj root-override) 40960.0 40960.0 #t (collide-kind background)) (set! (-> obj cell) (the-as handle #f)) (blocking-plane-spawn - (the-as curve-control (if (and *target* (logtest? (-> *target* control root-prim prim-core action) #x4000)) - (-> obj path-flut) - (-> obj path-target) - ) - ) + (the-as + curve-control + (if (and *target* (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14))) + (-> obj path-flut) + (-> obj path-target) + ) + ) ) (set! (-> obj sound) (new 'process diff --git a/test/decompiler/reference/levels/flut_common/target-flut_REF.gc b/test/decompiler/reference/levels/flut_common/target-flut_REF.gc index 48de52d666..1f1e54cd5d 100644 --- a/test/decompiler/reference/levels/flut_common/target-flut_REF.gc +++ b/test/decompiler/reference/levels/flut_common/target-flut_REF.gc @@ -458,34 +458,31 @@ target-flut-standard-event-handler :exit (behavior () - (when (not - (or (= (-> self next-state name) 'target-flut-stance) - (= (-> self next-state name) 'target-flut-walk) - (= (-> self next-state name) 'target-flut-jump) - (= (-> self next-state name) 'target-flut-double-jump) - (= (-> self next-state name) 'target-flut-hit-ground) - (= (-> self next-state name) 'target-flut-falling) - (= (-> self next-state name) 'target-flut-running-attack) - (= (-> self next-state name) 'target-flut-air-attack) - (= (-> self next-state name) 'target-flut-air-attack-hit-ground) - (= (-> self next-state name) 'target-flut-hit) - (= (-> self next-state name) 'target-flut-death) - (= (-> self next-state name) 'target-flut-get-on) - (= (-> self next-state name) 'target-flut-get-off) - (= (-> self next-state name) 'target-flut-get-off-jump) - (= (-> self next-state name) 'target-flut-grab) - (= (-> self next-state name) 'target-flut-clone-anim) - ) - ) + (when (not (or (= (-> self next-state name) 'target-flut-stance) + (= (-> self next-state name) 'target-flut-walk) + (= (-> self next-state name) 'target-flut-jump) + (= (-> self next-state name) 'target-flut-double-jump) + (= (-> self next-state name) 'target-flut-hit-ground) + (= (-> self next-state name) 'target-flut-falling) + (= (-> self next-state name) 'target-flut-running-attack) + (= (-> self next-state name) 'target-flut-air-attack) + (= (-> self next-state name) 'target-flut-air-attack-hit-ground) + (= (-> self next-state name) 'target-flut-hit) + (= (-> self next-state name) 'target-flut-death) + (= (-> self next-state name) 'target-flut-get-on) + (= (-> self next-state name) 'target-flut-get-off) + (= (-> self next-state name) 'target-flut-get-off-jump) + (= (-> self next-state name) 'target-flut-grab) + (= (-> self next-state name) 'target-flut-clone-anim) + ) + ) (let ((v1-33 (-> self manipy))) (when v1-33 (deactivate (-> v1-33 0)) (set! (-> self manipy) (the-as (pointer manipy) #f)) ) ) - (set! (-> self control root-prim prim-core action) - (logand -16385 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-14)) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self state-flags) (logand -1025 (-> self state-flags))) (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) @@ -518,7 +515,7 @@ (target-collide-set! 'flut (-> (new 'static 'array float 1 0.0) 0)) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) #x4000) + (logior! (-> self control root-prim prim-core action) (collide-action ca-14)) (let ((s5-0 (-> self entity))) (set! (-> self entity) (the-as entity (-> self flut entity))) (let ((s4-0 (get-process *default-dead-pool* manipy #x4000))) @@ -1587,9 +1584,10 @@ ) ) ) - (if (and v1-11 (or (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core collide-as) 256) - (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core action) 1024) - ) + (if (and v1-11 + (or (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core collide-as) (collide-kind enemy)) + (logtest? (-> (the-as collide-shape v1-11) root-prim prim-core action) (collide-action ca-10)) + ) ) (set! (-> self control unknown-uint31) (the-as uint 1)) ) diff --git a/test/decompiler/reference/levels/jungle/bouncer_REF.gc b/test/decompiler/reference/levels/jungle/bouncer_REF.gc index 6633396c02..149c806b1f 100644 --- a/test/decompiler/reference/levels/jungle/bouncer_REF.gc +++ b/test/decompiler/reference/levels/jungle/bouncer_REF.gc @@ -182,10 +182,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 3072.0 0.0 6963.2) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/jungle/darkvine_REF.gc b/test/decompiler/reference/levels/jungle/darkvine_REF.gc index 48f791a0d4..f54b428612 100644 --- a/test/decompiler/reference/levels/jungle/darkvine_REF.gc +++ b/test/decompiler/reference/levels/jungle/darkvine_REF.gc @@ -173,7 +173,7 @@ (set! (-> a1-1 param 0) (-> arg3 param 0)) (set! (-> a1-1 param 1) (the-as uint (new 'static 'attack-info))) (if (send-event-function arg0 a1-1) - (dummy-54 (-> self root-override) 2 0) + (dummy-54 (-> self root-override) 2 (collide-offense no-offense)) ) ) ) @@ -246,7 +246,7 @@ (when (and (-> self hit-player) (or (not *target*) (>= (- (-> *display* base-frame-counter) (the-as int (-> self touch-time))) 15)) ) - (dummy-54 (-> self root-override) 2 4) + (dummy-54 (-> self root-override) 2 (collide-offense indestructible)) (set! (-> self hit-player) #f) ) (transform-post) @@ -389,43 +389,43 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3072)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action ca-10 ca-11)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3073)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3073)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 2867.2) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3073)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 2457.6) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3073)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 8) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-3) diff --git a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc index 900eeb4985..5602d2a321 100644 --- a/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc +++ b/test/decompiler/reference/levels/jungle/fisher-JUN_REF.gc @@ -2255,26 +2255,26 @@ (defmethod initialize-collision fisher ((obj fisher) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 6144.0 0.0 4096.0 14336.0) (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6553.6) (append-prim s4-0 s2-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 57) (set-vector! (-> s3-1 local-sphere) 0.0 4096.0 0.0 4096.0) (append-prim s4-0 s3-1) diff --git a/test/decompiler/reference/levels/jungle/hopper_REF.gc b/test/decompiler/reference/levels/jungle/hopper_REF.gc index 8bb50cbfe1..05ecd95a9a 100644 --- a/test/decompiler/reference/levels/jungle/hopper_REF.gc +++ b/test/decompiler/reference/levels/jungle/hopper_REF.gc @@ -57,7 +57,10 @@ nav-enemy-default-event-handler ) (set! (-> s5-0 quad) (-> arg0 quad)) (set! (-> s5-0 y) (+ 20480.0 (-> s5-0 y))) - (let ((f0-2 (fill-and-probe-using-y-probe *collide-cache* s5-0 f30-0 (the-as uint 1) self t1-0 (the-as uint 1)))) + (let ((f0-2 + (fill-and-probe-using-y-probe *collide-cache* s5-0 f30-0 (collide-kind background) self t1-0 (the-as uint 1)) + ) + ) (if (< f0-2 0.0) (return (the-as object #f)) ) @@ -470,24 +473,24 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 10240.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6963.2 0.0 4096.0) (append-prim s4-0 s3-1) ) diff --git a/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc b/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc index e074138c33..fe64128a6d 100644 --- a/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-mirrors_REF.gc @@ -969,10 +969,10 @@ (set! (-> self entity) (-> self parent-override 0 entity)) (let ((s5-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -2065,34 +2065,34 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 96256.0 0.0 98304.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 96256.0 0.0 98304.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 9216.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 11264.0) (append-prim s3-0 s2-2) @@ -2382,33 +2382,33 @@ (defmethod init-from-entity! reflector-mirror ((obj reflector-mirror) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 6144.0 0.0 6963.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 18432.0 0.0 6963.2) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 30720.0 0.0 8192.0) (append-prim s3-0 s2-2) ) diff --git a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc index 383a8fc143..dea74b3d47 100644 --- a/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc +++ b/test/decompiler/reference/levels/jungle/jungle-obs_REF.gc @@ -110,8 +110,8 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 19251.2) (set-root-prim! s4-0 s3-0) @@ -295,17 +295,17 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 36044.8 0.0 47104.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 39321.6 0.0 0.0 43417.6) (append-prim s3-0 s2-0) @@ -423,34 +423,34 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 36864.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 40960.0 0.0 0.0 24576.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 40960.0 0.0 0.0 24576.0) (append-prim s3-0 s2-2) @@ -576,10 +576,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 24576.0 0.0 0.0 20480.0) (set-root-prim! s4-0 s3-0) @@ -1116,152 +1116,152 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 16) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 81920.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 9) (set-vector! (-> s2-2 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 11) (set-vector! (-> s2-3 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 13) (set-vector! (-> s2-4 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 3)) - (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 15) (set-vector! (-> s2-5 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 1)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 3)) - (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 17) (set-vector! (-> s2-6 local-sphere) -6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 3)) - (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 19) (set-vector! (-> s2-7 local-sphere) 6144.0 0.0 0.0 17203.2) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 3)) - (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 4) (set-vector! (-> s2-8 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-8) ) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 3)) - (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-9 collide-with) (collide-kind target)) + (set! (-> s2-9 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 6) (set-vector! (-> s2-9 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-9) ) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 3)) - (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-10 collide-with) (collide-kind target)) + (set! (-> s2-10 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 8) (set-vector! (-> s2-10 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-10) ) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 3)) - (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-11 collide-with) (collide-kind target)) + (set! (-> s2-11 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 10) (set-vector! (-> s2-11 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-11) ) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 3)) - (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-12 collide-with) (collide-kind target)) + (set! (-> s2-12 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 12) (set-vector! (-> s2-12 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-12) ) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 3)) - (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-13 collide-with) (collide-kind target)) + (set! (-> s2-13 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 14) (set-vector! (-> s2-13 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-13) ) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 3)) - (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-14 collide-with) (collide-kind target)) + (set! (-> s2-14 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 16) (set-vector! (-> s2-14 local-sphere) -4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-14) ) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 3)) - (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-15 collide-with) (collide-kind target)) + (set! (-> s2-15 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 18) (set-vector! (-> s2-15 local-sphere) 4096.0 0.0 0.0 9011.2) (append-prim s3-0 s2-15) @@ -1369,8 +1369,8 @@ ) ) (when (ja-min? 0) - (set! (-> self root-override root-prim prim-core action) (the-as uint 1)) - (set! (-> self root-override root-prim prim-core offense) 4) + (set! (-> self root-override root-prim prim-core action) (collide-action solid)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense indestructible)) ) (let ((a0-19 (-> self skel root-channel 0))) (set! (-> a0-19 param 0) 0.0) @@ -1397,8 +1397,8 @@ (set! (-> v1-6 frame-num) (the float (+ (-> v1-6 frame-group data 0 length) -1))) ) ) - (set! (-> self root-override root-prim prim-core action) (the-as uint 0)) - (set! (-> self root-override root-prim prim-core offense) 0) + (set! (-> self root-override root-prim prim-core action) (collide-action)) + (set! (-> self root-override root-prim prim-core offense) (collide-offense no-offense)) (while (not (ja-max? 0)) (let ((a0-10 (-> self skel root-channel 0))) (set! (-> a0-10 param 0) (the float (+ (-> a0-10 frame-group data 0 length) -1))) @@ -1425,10 +1425,10 @@ (defmethod init-from-entity! maindoor ((obj maindoor) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -1485,10 +1485,10 @@ (defmethod TODO-RENAME-24 sidedoor ((obj sidedoor)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 2) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 14336.0) (set-root-prim! s5-0 s4-0) @@ -1572,13 +1572,13 @@ ) (cond ((< (ja-frame-num 0) (the float (/ (ja-num-frames 0) 3))) - (set! (-> self back-prim prim-core collide-as) (the-as uint 0)) - (set! (-> self back-prim collide-with) (the-as uint 0)) + (set! (-> self back-prim prim-core collide-as) (collide-kind)) + (set! (-> self back-prim collide-with) (collide-kind)) 0 ) (else - (set! (-> self back-prim prim-core collide-as) (the-as uint 2048)) - (set! (-> self back-prim collide-with) (the-as uint 16)) + (set! (-> self back-prim prim-core collide-as) (collide-kind ground-object)) + (set! (-> self back-prim collide-with) (collide-kind target)) ) ) (suspend) @@ -1600,26 +1600,26 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) -32768.0 -8192.0 0.0 32768.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 8192.0 0.0 0.0 20480.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 36864.0 0.0 0.0 20480.0) (append-prim s3-0 s2-1) diff --git a/test/decompiler/reference/levels/jungle/junglefish_REF.gc b/test/decompiler/reference/levels/jungle/junglefish_REF.gc index 0fe9313ea5..85acd7d7de 100644 --- a/test/decompiler/reference/levels/jungle/junglefish_REF.gc +++ b/test/decompiler/reference/levels/jungle/junglefish_REF.gc @@ -408,10 +408,10 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 3276.8 0.0 2457.6) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc index 7d054d3310..f30d7a33ea 100644 --- a/test/decompiler/reference/levels/jungle/junglesnake_REF.gc +++ b/test/decompiler/reference/levels/jungle/junglesnake_REF.gc @@ -769,7 +769,7 @@ junglesnake-default-event-handler (when (not (-> obj is-lethal?)) (set! (-> obj is-lethal?) #t) (let ((v1-5 (-> (the-as collide-shape-prim-group (-> obj root-override root-prim)) prims 0))) - (set! (-> v1-5 prim-core action) (logand -2 (-> v1-5 prim-core action))) + (logclear! (-> v1-5 prim-core action) (collide-action solid)) ) ) 0 @@ -782,7 +782,7 @@ junglesnake-default-event-handler (when (-> obj is-lethal?) (set! (-> obj is-lethal?) #f) (let ((v1-4 (-> (the-as collide-shape-prim-group (-> obj root-override root-prim)) prims 0))) - (logior! (-> v1-4 prim-core action) 1) + (logior! (-> v1-4 prim-core action) (collide-action solid)) ) (dummy-45 (-> obj root-override)) ) @@ -865,88 +865,88 @@ junglesnake-default-event-handler (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 30720.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 25) (set-vector! (-> s2-0 local-sphere) 0.0 2048.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 21) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 1) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense touch)) (set! (-> s2-3 transform-index) 19) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 1)) - (set! (-> s2-4 prim-core offense) 1) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid)) + (set! (-> s2-4 prim-core offense) (collide-offense touch)) (set! (-> s2-4 transform-index) 18) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 1)) - (set! (-> s2-5 prim-core offense) 1) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid)) + (set! (-> s2-5 prim-core offense) (collide-offense touch)) (set! (-> s2-5 transform-index) 17) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 1)) - (set! (-> s2-6 prim-core offense) 1) + (set! (-> s2-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid)) + (set! (-> s2-6 prim-core offense) (collide-offense touch)) (set! (-> s2-6 transform-index) 16) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 1)) - (set! (-> s2-7 prim-core offense) 1) + (set! (-> s2-7 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid)) + (set! (-> s2-7 prim-core offense) (collide-offense touch)) (set! (-> s2-7 transform-index) 15) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 1)) - (set! (-> s2-8 prim-core offense) 1) + (set! (-> s2-8 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid)) + (set! (-> s2-8 prim-core offense) (collide-offense touch)) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 3276.8) (append-prim s3-0 s2-8) diff --git a/test/decompiler/reference/levels/jungleb/aphid_REF.gc b/test/decompiler/reference/levels/jungleb/aphid_REF.gc index c2f10de008..68a99923f5 100644 --- a/test/decompiler/reference/levels/jungleb/aphid_REF.gc +++ b/test/decompiler/reference/levels/jungleb/aphid_REF.gc @@ -33,14 +33,14 @@ ;; definition for function aphid-invulnerable (defbehavior aphid-invulnerable aphid () (set! (-> self nav-enemy-flags) (logand -33 (-> self nav-enemy-flags))) - (dummy-54 (-> self collide-info) 2 4) + (dummy-54 (-> self collide-info) 2 (collide-offense indestructible)) (none) ) ;; definition for function aphid-vulnerable (defbehavior aphid-vulnerable aphid () (logior! (-> self nav-enemy-flags) 32) - (dummy-54 (-> self collide-info) 2 1) + (dummy-54 (-> self collide-info) 2 (collide-offense touch)) (none) ) @@ -387,10 +387,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s4-0 local-sphere) 0.0 4096.0 0.0 4096.0) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc b/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc index cccfb8184c..7b412ab265 100644 --- a/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc +++ b/test/decompiler/reference/levels/jungleb/jungleb-obs_REF.gc @@ -429,10 +429,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 16384.0) (set-root-prim! s4-0 s3-0) @@ -497,10 +497,10 @@ (defmethod TODO-RENAME-24 jng-iris-door ((obj jng-iris-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/jungleb/plant-boss_REF.gc b/test/decompiler/reference/levels/jungleb/plant-boss_REF.gc index 032410af5d..e56dbddab4 100644 --- a/test/decompiler/reference/levels/jungleb/plant-boss_REF.gc +++ b/test/decompiler/reference/levels/jungleb/plant-boss_REF.gc @@ -418,9 +418,9 @@ (let ((a0-1 (-> (the-as collide-shape-prim-group (-> self root-override root-prim)) prims 0))) (set! (-> self root-override root-prim local-sphere w) 81920.0) (set! (-> (the-as collide-shape-prim-mesh a0-1) local-sphere w) 69632.0) - (set! (-> (the-as collide-shape-prim-mesh a0-1) collide-with) (the-as uint 16)) - (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core collide-as) (the-as uint 256)) - (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core offense) 4) + (set! (-> (the-as collide-shape-prim-mesh a0-1) collide-with) (collide-kind target)) + (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core collide-as) (collide-kind enemy)) + (set! (-> (the-as collide-shape-prim-mesh a0-1) prim-core offense) (collide-offense indestructible)) (let ((t9-0 (method-of-object (the-as collide-shape-prim-mesh a0-1) change-mesh)) (v1-10 (-> self side)) ) @@ -510,9 +510,9 @@ ) ) ) - (set! (-> (dummy-34 (-> self root-override) (the-as uint 1)) prim-core action) (the-as uint 0)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 1)) prim-core action) (collide-action)) 0 - (set! (-> (dummy-34 (-> self root-override) (the-as uint 2)) prim-core action) (the-as uint 0)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 2)) prim-core action) (collide-action)) 0 (dummy-47 (-> self root-override)) (while #t @@ -891,34 +891,34 @@ (stack-size-set! (-> self main-thread) 128) (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-group s3-0 (the-as uint 3) 0))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 16384.0 0.0 16384.0) (set-root-prim! s3-0 s2-0) (let ((s1-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 0)) - (set! (-> s1-0 collide-with) (the-as uint 0)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 0) + (set! (-> s1-0 prim-core collide-as) (collide-kind)) + (set! (-> s1-0 collide-with) (collide-kind)) + (set! (-> s1-0 prim-core action) (collide-action solid)) + (set! (-> s1-0 prim-core offense) (collide-offense no-offense)) (set! (-> s1-0 transform-index) 5) (set-vector! (-> s1-0 local-sphere) 0.0 0.0 0.0 81920.0) (append-prim s2-0 s1-0) ) (let ((s1-1 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 1)))) - (set! (-> s1-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-1 collide-with) (the-as uint 16)) - (set! (-> s1-1 prim-core action) (the-as uint 1)) - (set! (-> s1-1 prim-core offense) 4) + (set! (-> s1-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-1 collide-with) (collide-kind target)) + (set! (-> s1-1 prim-core action) (collide-action solid)) + (set! (-> s1-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-1 local-sphere) 0.0 12288.0 0.0 12288.0) (append-prim s2-0 s1-1) ) (let ((s1-2 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 2)))) - (set! (-> s1-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-2 collide-with) (the-as uint 16)) - (set! (-> s1-2 prim-core action) (the-as uint 1)) - (set! (-> s1-2 prim-core offense) 4) + (set! (-> s1-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-2 collide-with) (collide-kind target)) + (set! (-> s1-2 prim-core action) (collide-action solid)) + (set! (-> s1-2 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-2 local-sphere) 0.0 20480.0 0.0 12288.0) (append-prim s2-0 s1-2) ) @@ -943,25 +943,25 @@ (stack-size-set! (-> self main-thread) 128) (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-player)))) (let ((s2-0 (new 'process 'collide-shape-prim-group s3-0 (the-as uint 2) 0))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) -30720.0 6144.0 26624.0 16384.0) (set-root-prim! s3-0 s2-0) (let ((s1-0 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) - (set! (-> s1-0 prim-core offense) 4) + (set! (-> s1-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core action) (collide-action solid)) + (set! (-> s1-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-0 local-sphere) -32768.0 6144.0 32768.0 4915.2) (append-prim s2-0 s1-0) ) (let ((s1-1 (new 'process 'collide-shape-prim-sphere s3-0 (the-as uint 0)))) - (set! (-> s1-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s1-1 collide-with) (the-as uint 16)) - (set! (-> s1-1 prim-core action) (the-as uint 1)) - (set! (-> s1-1 prim-core offense) 4) + (set! (-> s1-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s1-1 collide-with) (collide-kind target)) + (set! (-> s1-1 prim-core action) (collide-action solid)) + (set! (-> s1-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s1-1 local-sphere) -28672.0 6144.0 20480.0 4915.2) (append-prim s2-0 s1-1) ) @@ -1402,10 +1402,10 @@ ) (dummy-29 s3-0 1) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 12288.0 13926.4) (set-root-prim! s3-0 s2-0) @@ -1803,8 +1803,8 @@ (set! (-> self body flex-blend) 0.0) (set! (-> self neck flex-blend) 0.0) (set! (-> self attack-prim 0 local-sphere w) 12288.0) - (set! (-> self attack-prim 0 prim-core offense) 4) - (logior! (-> self attack-prim 0 prim-core action) 1) + (set! (-> self attack-prim 0 prim-core offense) (collide-offense indestructible)) + (logior! (-> self attack-prim 0 prim-core action) (collide-action solid)) (none) ) :exit @@ -1812,8 +1812,8 @@ (send-event (ppointer->process (-> self leaf 1)) 'kill 0) (send-event (ppointer->process (-> self leaf 0)) 'kill 150) (set! (-> self attack-prim 0 local-sphere w) 16384.0) - (set! (-> self attack-prim 0 prim-core offense) 0) - (set! (-> self attack-prim 0 prim-core action) (logand -2 (-> self attack-prim 0 prim-core action))) + (set! (-> self attack-prim 0 prim-core offense) (collide-offense no-offense)) + (logclear! (-> self attack-prim 0 prim-core action) (collide-action solid)) (none) ) :code @@ -2456,17 +2456,17 @@ (set! s5-3 (-> s5-3 0 brother)) ) ) - (set! (-> self death-prim 0 collide-with) (the-as uint 16)) - (set! (-> self death-prim 0 prim-core collide-as) (the-as uint 256)) - (set! (-> self death-prim 0 prim-core offense) 4) - (logior! (-> self death-prim 0 prim-core action) 1) - (set! (-> self death-prim 1 prim-core collide-as) (the-as uint 256)) - (set! (-> self death-prim 1 collide-with) (the-as uint 16)) - (set! (-> self death-prim 1 prim-core offense) 4) - (logior! (-> self death-prim 1 prim-core action) 1) - (set! (-> (dummy-34 (-> self root-override) (the-as uint 8)) prim-core action) (the-as uint 0)) + (set! (-> self death-prim 0 collide-with) (collide-kind target)) + (set! (-> self death-prim 0 prim-core collide-as) (collide-kind enemy)) + (set! (-> self death-prim 0 prim-core offense) (collide-offense indestructible)) + (logior! (-> self death-prim 0 prim-core action) (collide-action solid)) + (set! (-> self death-prim 1 prim-core collide-as) (collide-kind enemy)) + (set! (-> self death-prim 1 collide-with) (collide-kind target)) + (set! (-> self death-prim 1 prim-core offense) (collide-offense indestructible)) + (logior! (-> self death-prim 1 prim-core action) (collide-action solid)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 8)) prim-core action) (collide-action)) 0 - (set! (-> (dummy-34 (-> self root-override) (the-as uint 16)) prim-core action) (the-as uint 0)) + (set! (-> (dummy-34 (-> self root-override) (the-as uint 16)) prim-core action) (collide-action)) 0 (logior! (-> self mask) (process-mask actor-pause)) (clear-pending-settings-from-process *setting-control* self 'music) @@ -2598,50 +2598,50 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 24576.0 32768.0 81920.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 8)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 12288.0 12288.0 12288.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 16)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 12288.0 12288.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 5)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 13) (set-vector! (-> s2-2 local-sphere) 0.0 (-> (new 'static 'array float 1 8192.0) 0) 0.0 16384.0) (append-prim s3-0 s2-2) (set! (-> obj attack-prim 0) s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 0)) - (set! (-> s2-3 collide-with) (the-as uint 0)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind)) + (set! (-> s2-3 collide-with) (collide-kind)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 13) (set-vector! (-> s2-3 local-sphere) 0.0 (-> (new 'static 'array float 1 8192.0) 0) 0.0 16384.0) (append-prim s3-0 s2-3) (set! (-> obj death-prim 0) s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 0)) - (set! (-> s2-4 collide-with) (the-as uint 0)) - (set! (-> s2-4 prim-core offense) 0) + (set! (-> s2-4 prim-core collide-as) (collide-kind)) + (set! (-> s2-4 collide-with) (collide-kind)) + (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 12) (set-vector! (-> s2-4 local-sphere) 0.0 -24576.0 0.0 40960.0) (append-prim s3-0 s2-4) diff --git a/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc b/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc index 25f198d87e..0067250ded 100644 --- a/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc +++ b/test/decompiler/reference/levels/jungleb/plat-flip_REF.gc @@ -167,10 +167,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc b/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc index 3ad1b9d4e4..f2e40fe4a9 100644 --- a/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc +++ b/test/decompiler/reference/levels/lavatube/lavatube-energy_REF.gc @@ -732,10 +732,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 8) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 102400.0) (set-root-prim! s4-0 s3-0) @@ -1193,10 +1193,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) ) @@ -1563,10 +1563,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -12288.0 -81920.0 69632.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc b/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc index b3ac0ff153..bd53a04503 100644 --- a/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc +++ b/test/decompiler/reference/levels/lavatube/lavatube-obs_REF.gc @@ -873,26 +873,26 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s1-0 (new 'process 'collide-shape-prim-group s2-0 (the-as uint 2) 0))) - (set! (-> s1-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s1-0 collide-with) (the-as uint 16)) - (set! (-> s1-0 prim-core action) (the-as uint 1)) + (set! (-> s1-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s1-0 collide-with) (collide-kind target)) + (set! (-> s1-0 prim-core action) (collide-action solid)) (set! (-> s1-0 transform-index) 3) (set-vector! (-> s1-0 local-sphere) 0.0 -32768.0 0.0 32768.0) (set-root-prim! s2-0 s1-0) (let ((s0-0 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s0-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s0-0 collide-with) (the-as uint 16)) - (set! (-> s0-0 prim-core action) (the-as uint 1)) - (set! (-> s0-0 prim-core offense) 4) + (set! (-> s0-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s0-0 collide-with) (collide-kind target)) + (set! (-> s0-0 prim-core action) (collide-action solid)) + (set! (-> s0-0 prim-core offense) (collide-offense indestructible)) (set! (-> s0-0 transform-index) 3) (set-vector! (-> s0-0 local-sphere) 0.0 -32768.0 0.0 32768.0) (append-prim s1-0 s0-0) ) (let ((s0-1 (new 'process 'collide-shape-prim-mesh s2-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s0-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s0-1 collide-with) (the-as uint 16)) - (set! (-> s0-1 prim-core action) (the-as uint 1)) - (set! (-> s0-1 prim-core offense) 4) + (set! (-> s0-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s0-1 collide-with) (collide-kind target)) + (set! (-> s0-1 prim-core action) (collide-action solid)) + (set! (-> s0-1 prim-core offense) (collide-offense indestructible)) (set! (-> s0-1 transform-index) 3) (set-vector! (-> s0-1 local-sphere) 0.0 -32768.0 0.0 32768.0) (append-prim s1-0 s0-1) @@ -1590,10 +1590,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 -73728.0 0.0 18432.0) (set-root-prim! s4-0 s3-0) @@ -1845,9 +1845,9 @@ (defmethod init-from-entity! lavaballoon ((obj lavaballoon) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc index 1dc3b61de7..1642872c1d 100644 --- a/test/decompiler/reference/levels/maincave/baby-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/baby-spider_REF.gc @@ -875,10 +875,10 @@ baby-spider-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 4096.0) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc b/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc index 5d34c74289..ec51bcd86a 100644 --- a/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc +++ b/test/decompiler/reference/levels/maincave/dark-crystal_REF.gc @@ -748,10 +748,10 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 6963.2 0.0 15564.8) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc b/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc index d0372c39f4..334fd78913 100644 --- a/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc +++ b/test/decompiler/reference/levels/maincave/driller-lurker_REF.gc @@ -302,7 +302,7 @@ (while s0-0 (set! sv-96 (get-touched-prim s0-0 (-> self root-overeride) (the-as touching-prims-entry s1-0))) (if (and (logtest? (-> (get-touched-prim s0-0 (-> s4-0 control) (the-as touching-prims-entry s1-0)) prim-core action) - 1 + (collide-action solid) ) (logtest? (-> sv-96 prim-id) 1) ) @@ -329,7 +329,7 @@ (when (send-event-function arg0 a1-6) (set! (-> self hit-player?) #t) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-overeride) 2 0) + (dummy-54 (-> self root-overeride) 2 (collide-offense no-offense)) (let ((v1-39 (-> self mode))) (if (or (zero? v1-39) (= v1-39 1) (= v1-39 2)) (go driller-lurker-chase #t) @@ -378,7 +378,7 @@ (when (send-event-function arg0 a1-11) (set! (-> self hit-player?) #t) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-overeride) 2 0) + (dummy-54 (-> self root-overeride) 2 (collide-offense no-offense)) (let ((v1-62 (-> self mode))) (if (or (zero? v1-62) (= v1-62 1) (= v1-62 2)) (go driller-lurker-chase #t) @@ -581,7 +581,7 @@ ) ) ) - (dummy-54 (-> obj root-overeride) 2 1) + (dummy-54 (-> obj root-overeride) 2 (collide-offense touch)) (set! (-> obj hit-player?) #f) #f ) @@ -1314,56 +1314,56 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 6) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 2) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 11264.0 0.0 22528.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3073)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 3276.8 0.0 4505.6) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3073)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 7372.8 0.0 4505.6) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3073)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 11468.8 0.0 4505.6) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 2) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-3 transform-index) 25) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 4096.0 3276.8) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core offense) 2) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-4 transform-index) 25) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 5734.4 3686.4) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 2) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-5 transform-index) 25) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 9420.8 2457.6) (append-prim s3-0 s2-5) diff --git a/test/decompiler/reference/levels/maincave/gnawer_REF.gc b/test/decompiler/reference/levels/maincave/gnawer_REF.gc index b8babc2251..0d4b385925 100644 --- a/test/decompiler/reference/levels/maincave/gnawer_REF.gc +++ b/test/decompiler/reference/levels/maincave/gnawer_REF.gc @@ -1772,70 +1772,70 @@ (logclear! (-> obj mask) (process-mask attackable)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 8) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set-vector! (-> s3-0 local-sphere) 0.0 32768.0 0.0 53248.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 13) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 0) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set! (-> s2-1 transform-index) 6) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 7) (set-vector! (-> s2-2 local-sphere) 0.0 -409.6 1228.8 6144.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 8) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 5)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core offense) 0) + (set! (-> s2-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 9) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 6)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 0) + (set! (-> s2-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense no-offense)) (set! (-> s2-5 transform-index) 10) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 7)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core offense) 0) + (set! (-> s2-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core offense) (collide-offense no-offense)) (set! (-> s2-6 transform-index) 11) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 7)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core offense) 0) + (set! (-> s2-7 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core offense) (collide-offense no-offense)) (set! (-> s2-7 transform-index) 12) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 6144.0) (append-prim s3-0 s2-7) diff --git a/test/decompiler/reference/levels/maincave/maincave-obs_REF.gc b/test/decompiler/reference/levels/maincave/maincave-obs_REF.gc index 83a4e2963e..9374d230d2 100644 --- a/test/decompiler/reference/levels/maincave/maincave-obs_REF.gc +++ b/test/decompiler/reference/levels/maincave/maincave-obs_REF.gc @@ -171,8 +171,8 @@ (if ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> *target* control) - (the-as uint 1) - (the-as uint 0) + (collide-action solid) + (collide-action) ) (target-attack-up *target* 'attack-or-shove 'deadlyup) ) @@ -214,10 +214,10 @@ (defmethod init-from-entity! cavecrusher ((obj cavecrusher) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) @@ -392,7 +392,7 @@ (zero? (logand (-> *target* control status) 1)) ) ) - (zero? (logand (-> *target* control root-prim prim-core action) 128)) + (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-7))) ) ) (let ((a0-14 (-> self skel root-channel 0))) @@ -428,7 +428,7 @@ (or (and (logtest? (-> *target* control unknown-surface00 flags) 2048) (zero? (logand (-> *target* control status) 1)) ) - (logtest? (-> *target* control root-prim prim-core action) 128) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-7)) ) ) (while (not (ja-min? 0)) @@ -467,10 +467,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 9830.4 10240.0 0.0 17203.2) (set-root-prim! s4-0 s3-0) @@ -609,8 +609,8 @@ (when ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> *target* control) - (the-as uint 1) - (the-as uint 0) + (collide-action solid) + (collide-action) ) (let ((s4-0 (new 'stack 'attack-info))) (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) @@ -740,36 +740,36 @@ (logior! (-> obj mask) (process-mask actor-pause)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 4) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 0) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-0 local-sphere) 4915.2 8192.0 0.0 3686.4) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 0) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-1 local-sphere) 4915.2 14336.0 0.0 3276.8) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-2 local-sphere) -4915.2 8192.0 0.0 3686.4) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s2-3 local-sphere) -4915.2 14336.0 0.0 3276.8) (append-prim s3-0 s2-3) ) @@ -934,10 +934,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 -8192.0 0.0 67584.0) (set-root-prim! s4-0 s3-0) @@ -1077,10 +1077,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 75776.0) (set-root-prim! s4-0 s3-0) @@ -1563,10 +1563,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 19)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17408.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc index 035259ff6b..72fb54c68a 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider-egg_REF.gc @@ -645,10 +645,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-1 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) (set-root-prim! s4-1 s3-0) ) diff --git a/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc index 9b78bf982d..15d90a4833 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider-proj_REF.gc @@ -307,7 +307,7 @@ (-> obj root-override trans) (the-as vector #f) f0-5 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -359,10 +359,12 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 1024)) - (set! (-> s4-0 collide-with) (the-as uint 2973)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 3) + (set! (-> s4-0 prim-core collide-as) (collide-kind projectile)) + (set! (-> s4-0 collide-with) + (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) + ) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense strong-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 1228.8) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/maincave/mother-spider_REF.gc b/test/decompiler/reference/levels/maincave/mother-spider_REF.gc index ecb5f00ef9..07c5206ea7 100644 --- a/test/decompiler/reference/levels/maincave/mother-spider_REF.gc +++ b/test/decompiler/reference/levels/maincave/mother-spider_REF.gc @@ -611,8 +611,8 @@ ) ) (let ((v1-43 (-> (the-as collide-shape-prim-group s3-1) prims (-> s1-1 cprim-index)))) - (set! (-> v1-43 collide-with) (the-as uint 0)) - (set! (-> v1-43 prim-core collide-as) (the-as uint 0)) + (set! (-> v1-43 collide-with) (collide-kind)) + (set! (-> v1-43 prim-core collide-as) (collide-kind)) ) ) 0 @@ -1967,79 +1967,79 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 9) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 8192)) - (set! (-> s3-0 collide-with) (the-as uint 16)) + (set! (-> s3-0 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s3-0 collide-with) (collide-kind target)) (set! (-> s3-0 transform-index) 6) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12697.6) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4505.6) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core offense) 0) + (set! (-> s2-1 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core offense) (collide-offense no-offense)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4505.6) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 20) (set-vector! (-> s2-2 local-sphere) 0.0 -409.6 1228.8 2457.6) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core offense) 0) + (set! (-> s2-3 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core offense) (collide-offense no-offense)) (set! (-> s2-3 transform-index) 12) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core offense) 0) + (set! (-> s2-4 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core offense) (collide-offense no-offense)) (set! (-> s2-4 transform-index) 10) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core offense) 0) + (set! (-> s2-5 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core offense) (collide-offense no-offense)) (set! (-> s2-5 transform-index) 8) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core offense) 0) + (set! (-> s2-6 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core offense) (collide-offense no-offense)) (set! (-> s2-6 transform-index) 18) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core offense) 0) + (set! (-> s2-7 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core offense) (collide-offense no-offense)) (set! (-> s2-7 transform-index) 16) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 8192)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core offense) 0) + (set! (-> s2-8 prim-core collide-as) (collide-kind mother-spider)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core offense) (collide-offense no-offense)) (set! (-> s2-8 transform-index) 14) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s3-0 s2-8) diff --git a/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc b/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc index 765ee14b98..b70c7b66dc 100644 --- a/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc +++ b/test/decompiler/reference/levels/maincave/spiderwebs_REF.gc @@ -186,10 +186,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 14336.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/misty/balloonlurker_REF.gc b/test/decompiler/reference/levels/misty/balloonlurker_REF.gc index 445ce8ea4f..172b281780 100644 --- a/test/decompiler/reference/levels/misty/balloonlurker_REF.gc +++ b/test/decompiler/reference/levels/misty/balloonlurker_REF.gc @@ -1146,9 +1146,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core offense) 1) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core offense) (collide-offense touch)) (set! (-> s4-0 transform-index) 6) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) (set-root-prim! s5-0 s4-0) @@ -1198,39 +1198,39 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 4) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 40960.0 0.0 61440.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 57344.0 0.0 28672.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 4)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core offense) 2) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-1 transform-index) 4) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 -8192.0 10240.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 8)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 10) (set-vector! (-> s3-2 local-sphere) 0.0 -8192.0 0.0 6144.0) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 16)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 7) (set-vector! (-> s3-3 local-sphere) 0.0 -8192.0 0.0 6144.0) (append-prim s4-0 s3-3) diff --git a/test/decompiler/reference/levels/misty/bonelurker_REF.gc b/test/decompiler/reference/levels/misty/bonelurker_REF.gc index 6fd93a7d45..3a5b06af2c 100644 --- a/test/decompiler/reference/levels/misty/bonelurker_REF.gc +++ b/test/decompiler/reference/levels/misty/bonelurker_REF.gc @@ -737,31 +737,31 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 10240.0 0.0 24576.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 11468.8 0.0 4096.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 29) (set-vector! (-> s3-2 local-sphere) 0.0 4915.2 0.0 4915.2) (append-prim s4-0 s3-2) diff --git a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc index de4dcd0129..8f607f4366 100644 --- a/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-conveyor_REF.gc @@ -521,9 +521,9 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) @@ -723,10 +723,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/misty/misty-obs_REF.gc b/test/decompiler/reference/levels/misty/misty-obs_REF.gc index a731269fc8..9a52fde9f3 100644 --- a/test/decompiler/reference/levels/misty/misty-obs_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-obs_REF.gc @@ -1660,27 +1660,27 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 98304.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 9011.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 49152.0 0.0 49152.0) (append-prim s3-0 s2-1) @@ -1888,10 +1888,10 @@ ) (dummy-29 s4-0 1) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg1) (set-vector! (-> s2-0 local-sphere) 8192.0 -4096.0 8192.0 16384.0) (set-root-prim! s4-0 s2-0) @@ -2183,10 +2183,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc b/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc index 32f4d2a4ec..fe8720d49c 100644 --- a/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-teetertotter_REF.gc @@ -225,52 +225,52 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 5) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 36864.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 5) (set-vector! (-> s2-0 local-sphere) -4096.0 2048.0 0.0 5120.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 7) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 4) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 0)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 1)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 3) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 3) (the-as uint 2)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 3) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 32768.0) (append-prim s3-0 s2-4) diff --git a/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc b/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc index 3398a78025..f2e3578e61 100644 --- a/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc +++ b/test/decompiler/reference/levels/misty/misty-warehouse_REF.gc @@ -188,10 +188,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 18432.0) (set-root-prim! s4-0 s3-0) @@ -246,10 +246,10 @@ (defmethod TODO-RENAME-24 rounddoor ((obj rounddoor)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) -12288.0 0.0 0.0 40960.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/misty/muse_REF.gc b/test/decompiler/reference/levels/misty/muse_REF.gc index 63ac3a1410..4dd98118ef 100644 --- a/test/decompiler/reference/levels/misty/muse_REF.gc +++ b/test/decompiler/reference/levels/misty/muse_REF.gc @@ -504,7 +504,7 @@ nav-enemy-default-event-handler (else (TODO-RENAME-30 (-> self collide-info) (-> *target* control trans)) (quaternion-copy! (-> self collide-info quat) (-> *target* control quat)) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #f (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #f (collide-kind background)) ) ) ) @@ -659,10 +659,10 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 2457.6 0.0 2457.6) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc b/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc index 0e9f04b8fc..fe0e3bdb76 100644 --- a/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc +++ b/test/decompiler/reference/levels/misty/quicksandlurker_REF.gc @@ -442,7 +442,7 @@ (-> self root-override trans) (the-as vector #f) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -529,10 +529,12 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 2973)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) + (collide-kind background cak-2 cak-3 target crate enemy wall-object ground-object) + ) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) (set-root-prim! s5-0 s4-0) ) @@ -1241,31 +1243,31 @@ (set! (-> obj mask) (logior (process-mask enemy) (-> obj mask))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-2 prim-core offense) 2) + (set! (-> s2-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s2-2 transform-index) 5) (set-vector! (-> s2-2 local-sphere) 0.0 -2048.0 0.0 5324.8) (append-prim s3-0 s2-2) diff --git a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc index 81c1453fcc..17f536bd24 100644 --- a/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc +++ b/test/decompiler/reference/levels/ogre/flying-lurker_REF.gc @@ -370,10 +370,10 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 -16384.0 40960.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc index 753f9741ed..d1c5829f93 100644 --- a/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc +++ b/test/decompiler/reference/levels/ogre/ogre-obs_REF.gc @@ -518,10 +518,10 @@ (defmethod init-from-entity! tntbarrel ((obj tntbarrel) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 128)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind crate)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 9216.0 0.0 14336.0) (set-root-prim! s4-0 s3-0) @@ -746,10 +746,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 32768.0) (set-root-prim! s5-0 s4-0) @@ -1372,161 +1372,161 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 17) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 143360.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 5) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 6) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-2) ) (let ((s2-3 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-3 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-3 collide-with) (the-as uint 16)) - (set! (-> s2-3 prim-core action) (the-as uint 3)) - (set! (-> s2-3 prim-core offense) 4) + (set! (-> s2-3 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-3 collide-with) (collide-kind target)) + (set! (-> s2-3 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-3 prim-core offense) (collide-offense indestructible)) (set! (-> s2-3 transform-index) 7) (set-vector! (-> s2-3 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-3) ) (let ((s2-4 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-4 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-4 collide-with) (the-as uint 16)) - (set! (-> s2-4 prim-core action) (the-as uint 3)) - (set! (-> s2-4 prim-core offense) 4) + (set! (-> s2-4 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-4 collide-with) (collide-kind target)) + (set! (-> s2-4 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-4 prim-core offense) (collide-offense indestructible)) (set! (-> s2-4 transform-index) 8) (set-vector! (-> s2-4 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-4) ) (let ((s2-5 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-5 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-5 collide-with) (the-as uint 16)) - (set! (-> s2-5 prim-core action) (the-as uint 3)) - (set! (-> s2-5 prim-core offense) 4) + (set! (-> s2-5 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-5 collide-with) (collide-kind target)) + (set! (-> s2-5 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-5 prim-core offense) (collide-offense indestructible)) (set! (-> s2-5 transform-index) 9) (set-vector! (-> s2-5 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-5) ) (let ((s2-6 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-6 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-6 collide-with) (the-as uint 16)) - (set! (-> s2-6 prim-core action) (the-as uint 3)) - (set! (-> s2-6 prim-core offense) 4) + (set! (-> s2-6 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-6 collide-with) (collide-kind target)) + (set! (-> s2-6 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-6 prim-core offense) (collide-offense indestructible)) (set! (-> s2-6 transform-index) 10) (set-vector! (-> s2-6 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-6) ) (let ((s2-7 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-7 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-7 collide-with) (the-as uint 16)) - (set! (-> s2-7 prim-core action) (the-as uint 3)) - (set! (-> s2-7 prim-core offense) 4) + (set! (-> s2-7 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-7 collide-with) (collide-kind target)) + (set! (-> s2-7 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-7 prim-core offense) (collide-offense indestructible)) (set! (-> s2-7 transform-index) 11) (set-vector! (-> s2-7 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-7) ) (let ((s2-8 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-8 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-8 collide-with) (the-as uint 16)) - (set! (-> s2-8 prim-core action) (the-as uint 3)) - (set! (-> s2-8 prim-core offense) 4) + (set! (-> s2-8 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-8 collide-with) (collide-kind target)) + (set! (-> s2-8 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-8 prim-core offense) (collide-offense indestructible)) (set! (-> s2-8 transform-index) 12) (set-vector! (-> s2-8 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-8) ) (let ((s2-9 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-9 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-9 collide-with) (the-as uint 16)) - (set! (-> s2-9 prim-core action) (the-as uint 3)) - (set! (-> s2-9 prim-core offense) 4) + (set! (-> s2-9 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-9 collide-with) (collide-kind target)) + (set! (-> s2-9 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-9 prim-core offense) (collide-offense indestructible)) (set! (-> s2-9 transform-index) 13) (set-vector! (-> s2-9 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-9) ) (let ((s2-10 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-10 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-10 collide-with) (the-as uint 16)) - (set! (-> s2-10 prim-core action) (the-as uint 3)) - (set! (-> s2-10 prim-core offense) 4) + (set! (-> s2-10 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-10 collide-with) (collide-kind target)) + (set! (-> s2-10 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-10 prim-core offense) (collide-offense indestructible)) (set! (-> s2-10 transform-index) 14) (set-vector! (-> s2-10 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-10) ) (let ((s2-11 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-11 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-11 collide-with) (the-as uint 16)) - (set! (-> s2-11 prim-core action) (the-as uint 3)) - (set! (-> s2-11 prim-core offense) 4) + (set! (-> s2-11 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-11 collide-with) (collide-kind target)) + (set! (-> s2-11 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-11 prim-core offense) (collide-offense indestructible)) (set! (-> s2-11 transform-index) 15) (set-vector! (-> s2-11 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-11) ) (let ((s2-12 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-12 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-12 collide-with) (the-as uint 16)) - (set! (-> s2-12 prim-core action) (the-as uint 3)) - (set! (-> s2-12 prim-core offense) 4) + (set! (-> s2-12 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-12 collide-with) (collide-kind target)) + (set! (-> s2-12 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-12 prim-core offense) (collide-offense indestructible)) (set! (-> s2-12 transform-index) 16) (set-vector! (-> s2-12 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-12) ) (let ((s2-13 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-13 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-13 collide-with) (the-as uint 16)) - (set! (-> s2-13 prim-core action) (the-as uint 3)) - (set! (-> s2-13 prim-core offense) 4) + (set! (-> s2-13 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-13 collide-with) (collide-kind target)) + (set! (-> s2-13 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-13 prim-core offense) (collide-offense indestructible)) (set! (-> s2-13 transform-index) 17) (set-vector! (-> s2-13 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-13) ) (let ((s2-14 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-14 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-14 collide-with) (the-as uint 16)) - (set! (-> s2-14 prim-core action) (the-as uint 3)) - (set! (-> s2-14 prim-core offense) 4) + (set! (-> s2-14 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-14 collide-with) (collide-kind target)) + (set! (-> s2-14 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-14 prim-core offense) (collide-offense indestructible)) (set! (-> s2-14 transform-index) 18) (set-vector! (-> s2-14 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-14) ) (let ((s2-15 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 1)))) - (set! (-> s2-15 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-15 collide-with) (the-as uint 16)) - (set! (-> s2-15 prim-core action) (the-as uint 3)) - (set! (-> s2-15 prim-core offense) 4) + (set! (-> s2-15 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-15 collide-with) (collide-kind target)) + (set! (-> s2-15 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-15 prim-core offense) (collide-offense indestructible)) (set! (-> s2-15 transform-index) 19) (set-vector! (-> s2-15 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-15) ) (let ((s2-16 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 2) (the-as uint 1)))) - (set! (-> s2-16 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-16 collide-with) (the-as uint 16)) - (set! (-> s2-16 prim-core action) (the-as uint 3)) - (set! (-> s2-16 prim-core offense) 4) + (set! (-> s2-16 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-16 collide-with) (collide-kind target)) + (set! (-> s2-16 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-16 prim-core offense) (collide-offense indestructible)) (set! (-> s2-16 transform-index) 20) (set-vector! (-> s2-16 local-sphere) 0.0 0.0 0.0 45056.0) (append-prim s3-0 s2-16) @@ -1604,10 +1604,10 @@ (defmethod init-from-entity! ogre-bridgeend ((obj ogre-bridgeend) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 12288.0 32768.0) (set-root-prim! s4-0 s3-0) @@ -2007,10 +2007,10 @@ (defmethod init-from-entity! shortcut-boulder ((obj shortcut-boulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 30720.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/racer_common/collide-reaction-racer_REF.gc b/test/decompiler/reference/levels/racer_common/collide-reaction-racer_REF.gc index ee4c06f544..272f231bdb 100644 --- a/test/decompiler/reference/levels/racer_common/collide-reaction-racer_REF.gc +++ b/test/decompiler/reference/levels/racer_common/collide-reaction-racer_REF.gc @@ -100,7 +100,7 @@ (set! sv-96 (logior sv-96 4096)) ) ) - (if (and s3-1 (logtest? #x10000 (-> arg0 root-prim prim-core action))) + (if (and s3-1 (logtest? (collide-action ca-16) (-> arg0 root-prim prim-core action))) (set! s3-1 #f) ) (cond diff --git a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc index d077eb3aba..dcb4cf1f97 100644 --- a/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/racer-states-FIC-LAV-MIS-OGR-ROL_REF.gc @@ -89,21 +89,20 @@ ) :exit (behavior () - (when (not - (or (= (-> self next-state name) 'target-racing) - (= (-> self next-state name) 'target-racing-jump) - (= (-> self next-state name) 'target-racing-bounce) - (= (-> self next-state name) 'target-racing-hit) - (= (-> self next-state name) 'target-racing-death) - (= (-> self next-state name) 'target-racing-smack) - (= (-> self next-state name) 'target-racing-falling) - (= (-> self next-state name) 'target-racing-get-on) - (= (-> self next-state name) 'target-racing-get-off) - (= (-> self next-state name) 'target-racing-get-off-jump) - (= (-> self next-state name) 'target-racing-grab) - (= (-> self next-state name) 'target-racing-clone-anim) - ) - ) + (when (not (or (= (-> self next-state name) 'target-racing) + (= (-> self next-state name) 'target-racing-jump) + (= (-> self next-state name) 'target-racing-bounce) + (= (-> self next-state name) 'target-racing-hit) + (= (-> self next-state name) 'target-racing-death) + (= (-> self next-state name) 'target-racing-smack) + (= (-> self next-state name) 'target-racing-falling) + (= (-> self next-state name) 'target-racing-get-on) + (= (-> self next-state name) 'target-racing-get-off) + (= (-> self next-state name) 'target-racing-get-off-jump) + (= (-> self next-state name) 'target-racing-grab) + (= (-> self next-state name) 'target-racing-clone-anim) + ) + ) (let ((v1-25 (-> self manipy))) (when v1-25 (deactivate (-> v1-25 0)) @@ -126,9 +125,7 @@ (set! (-> *hud-parts* power 0 next-y-offset) 0) (set! (-> *hud-parts* buzzers 0 y-sgn) 1) (set! (-> *hud-parts* power 0 y-sgn) 1) - (set! (-> self control root-prim prim-core action) - (logand -66049 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-9 ca-16)) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self state-flags) (logand -1025 (-> self state-flags))) (send-event *camera* 'clear-slave-option #x6000) @@ -190,7 +187,7 @@ (target-collide-set! 'racer 0.0) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) 512) + (logior! (-> self control root-prim prim-core action) (collide-action ca-9)) (set! (-> self control unknown-surface00) *racer-mods*) (set! (-> self racer lean-rotx) 0.0) (vector-reset! (-> self racer rotv)) @@ -644,9 +641,7 @@ ) :exit (behavior () - (set! (-> self control root-prim prim-core action) - (logand -32769 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-15)) (set! (-> self racer hop?) #f) ((-> target-racing-start exit)) (none) @@ -715,7 +710,7 @@ ) (target-racing-smack-check) (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (logior! (-> self control root-prim prim-core action) #x8000) + (logior! (-> self control root-prim prim-core action) (collide-action ca-15)) ) (mod-var-jump #t @@ -750,7 +745,7 @@ (-> target-racing-start event) :enter (behavior ((arg0 float) (arg1 float) (arg2 symbol)) - (logior! (-> self control root-prim prim-core action) #x8000) + (logior! (-> self control root-prim prim-core action) (collide-action ca-15)) (sound-play-by-name (static-sound-name "zoomer-jump") (new-sound-id) 1024 0 0 1 #t) (set! (-> self state-time) (-> *display* base-frame-counter)) (racer-calc-gravity) @@ -763,9 +758,7 @@ ) :exit (behavior () - (set! (-> self control root-prim prim-core action) - (logand -32769 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-15)) ((-> target-racing-start exit)) (none) ) @@ -949,9 +942,7 @@ ) :exit (behavior () - (set! (-> self control root-prim prim-core action) - (logand -32769 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-15)) ((-> target-racing-start exit)) (none) ) @@ -963,7 +954,7 @@ (target-racing-smack-check) (racer-buzz 0.3) (if (>= (- (-> *display* base-frame-counter) (-> self state-time)) 300) - (logior! (-> self control root-prim prim-core action) #x8000) + (logior! (-> self control root-prim prim-core action) (collide-action ca-15)) ) (none) ) diff --git a/test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc b/test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc index bb238ec262..997aca2919 100644 --- a/test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc +++ b/test/decompiler/reference/levels/racer_common/target-racer-FIC-LAV-MIS-OGR-ROL_REF.gc @@ -1626,7 +1626,7 @@ (vector-! (new 'stack-no-clear 'vector) (-> self control trans) (-> self control unknown-vector54)) ) ) - (logtest? (-> self control root-prim prim-core action) #x8000) + (logtest? (-> self control root-prim prim-core action) (collide-action ca-15)) ) (+! (-> self racer stuck-count) 1) (go target-racing-smack 122880.0 #f) diff --git a/test/decompiler/reference/levels/robocave/cave-trap_REF.gc b/test/decompiler/reference/levels/robocave/cave-trap_REF.gc index 09c33fa508..fd3fdd2829 100644 --- a/test/decompiler/reference/levels/robocave/cave-trap_REF.gc +++ b/test/decompiler/reference/levels/robocave/cave-trap_REF.gc @@ -390,7 +390,7 @@ (set! (-> obj last-spawn-time) (the-as uint 0)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core offense) 0) + (set! (-> s3-0 prim-core offense) (collide-offense no-offense)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/robocave/spider-egg_REF.gc b/test/decompiler/reference/levels/robocave/spider-egg_REF.gc index 05c1e4b242..2d28dd04b2 100644 --- a/test/decompiler/reference/levels/robocave/spider-egg_REF.gc +++ b/test/decompiler/reference/levels/robocave/spider-egg_REF.gc @@ -325,10 +325,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2048.0 0.0 3686.4) (set-root-prim! s4-0 s3-0) ) @@ -340,7 +340,7 @@ (initialize-skeleton obj *spider-egg-unbroken-sg* '()) (dummy-9 (-> obj broken-look) *spider-egg-broken-sg* (-> obj draw art-group) (-> obj entity)) (set-vector! (-> obj root-override scale) 0.4 0.4 0.4 1.0) - (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1))) + (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (collide-kind background))) (go process-drawable-art-error "no ground") ) (set! (-> obj root-override trans y) (+ -409.6 (-> obj root-override trans y))) diff --git a/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc b/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc index 51a53cb8b2..9177746944 100644 --- a/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc +++ b/test/decompiler/reference/levels/rolling/rolling-obs_REF.gc @@ -153,17 +153,17 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s5-0 (new 'process 'collide-shape-prim-group gp-0 (the-as uint 1) 0))) - (set! (-> s5-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s5-0 collide-with) (the-as uint 16)) - (set! (-> s5-0 prim-core action) (the-as uint 3)) + (set! (-> s5-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s5-0 collide-with) (collide-kind target)) + (set! (-> s5-0 prim-core action) (collide-action solid ca-1)) (set! (-> s5-0 transform-index) 0) (set-vector! (-> s5-0 local-sphere) -8192.0 0.0 0.0 40960.0) (set-root-prim! gp-0 s5-0) (let ((s4-0 (new 'process 'collide-shape-prim-mesh gp-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 4) (set-vector! (-> s4-0 local-sphere) 8192.0 0.0 0.0 28672.0) (append-prim s5-0 s4-0) @@ -925,10 +925,10 @@ (stack-size-set! (-> obj main-thread) 512) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc b/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc index 37f26a9eef..a4439ff1d0 100644 --- a/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc +++ b/test/decompiler/reference/levels/rolling/rolling-robber_REF.gc @@ -899,10 +899,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/snow/snow-bumper_REF.gc b/test/decompiler/reference/levels/snow/snow-bumper_REF.gc index 0ec7ce4066..967efcdd52 100644 --- a/test/decompiler/reference/levels/snow/snow-bumper_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-bumper_REF.gc @@ -438,25 +438,25 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 9011.2 0.0 13926.4) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 3)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 6) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4915.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 8192.0 0.0 11878.4) (append-prim s3-0 s2-1) diff --git a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc index 19c2ecca0a..eee85f05ef 100644 --- a/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-flutflut-obs_REF.gc @@ -320,7 +320,7 @@ (case arg2 (('touch 'attack 'bonk) (when (and (= (-> arg0 type) target) - (logtest? (-> *target* control root-prim prim-core action) #x4000) + (logtest? (-> *target* control root-prim prim-core action) (collide-action ca-14)) (>= 10649.6 (vector-vector-xz-distance (-> self root-override trans) (target-pos 0))) ) (close-specific-task! (game-task snow-ball) (task-status need-hint)) @@ -493,33 +493,33 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 17612.8) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core offense) 0) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core offense) (collide-offense no-offense)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 10649.6) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 11468.8) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 3)) - (set! (-> s2-2 prim-core offense) 4) + (set! (-> s2-2 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-2 prim-core offense) (collide-offense indestructible)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) 0.0 0.0 0.0 17612.8) (append-prim s3-0 s2-2) @@ -890,9 +890,7 @@ (behavior () (set! (-> self state-time) (-> *display* base-frame-counter)) (logclear! (-> self mask) (process-mask actor-pause)) - (set! (-> self root-override root-prim prim-core action) - (logand -3 (-> self root-override root-prim prim-core action)) - ) + (logclear! (-> self root-override root-prim prim-core action) (collide-action ca-1)) (set! (-> self start-trans quad) (-> self root-override trans quad)) (let ((s5-0 (new 'stack-no-clear 'vector)) (gp-0 (new 'stack-no-clear 'quaternion)) @@ -909,7 +907,7 @@ :exit (behavior () (logior! (-> self mask) (process-mask actor-pause)) - (logior! (-> self root-override root-prim prim-core action) 2) + (logior! (-> self root-override root-prim prim-core action) (collide-action ca-1)) (none) ) :trans @@ -959,7 +957,7 @@ ) ) ((= v1-0 'ridden) - (if (or (not *target*) (zero? (logand (-> *target* control root-prim prim-core action) #x4000))) + (if (or (not *target*) (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-14)))) (go elevator-travel-to-fort) ) ) @@ -1179,10 +1177,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -2048.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -1220,10 +1218,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -4096.0 0.0 27648.0) (set-root-prim! s5-0 s4-0) @@ -1282,10 +1280,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 36864.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/snow/snow-obs_REF.gc b/test/decompiler/reference/levels/snow/snow-obs_REF.gc index 3bf50e5446..fdbb9bc968 100644 --- a/test/decompiler/reference/levels/snow/snow-obs_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-obs_REF.gc @@ -651,10 +651,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 -7372.8 18022.4) (set-root-prim! s4-0 s3-0) @@ -828,10 +828,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-1 (new 'process 'collide-shape-prim-mesh s3-1 (the-as uint s4-0) (the-as uint 0)))) - (set! (-> s4-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-1 collide-with) (the-as uint 16)) - (set! (-> s4-1 prim-core action) (the-as uint 3)) - (set! (-> s4-1 prim-core offense) 4) + (set! (-> s4-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-1 collide-with) (collide-kind target)) + (set! (-> s4-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-1 prim-core offense) (collide-offense indestructible)) (set! (-> s4-1 transform-index) 3) (set-vector! (-> s4-1 local-sphere) 0.0 20480.0 -12288.0 25600.0) (set-root-prim! s3-1 s4-1) @@ -974,10 +974,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 49152.0 -16384.0 16384.0) (set-root-prim! s4-0 s3-0) @@ -1422,10 +1422,10 @@ (defmethod init-from-entity! snow-fort-gate ((obj snow-fort-gate) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 99123.2) (set-root-prim! s4-0 s3-0) @@ -2001,10 +2001,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) @@ -2302,10 +2302,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 36864.0) (set-root-prim! s4-0 s3-0) @@ -2481,10 +2481,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 8192.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/snow/snow-ram_REF.gc b/test/decompiler/reference/levels/snow/snow-ram_REF.gc index b669c9117f..6654459bf4 100644 --- a/test/decompiler/reference/levels/snow/snow-ram_REF.gc +++ b/test/decompiler/reference/levels/snow/snow-ram_REF.gc @@ -463,33 +463,33 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 34816.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 8) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 20480.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 2048)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 3)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-1)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 3) (set-vector! (-> s2-1 local-sphere) 0.0 20480.0 0.0 34816.0) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 4)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core offense) 0) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core offense) (collide-offense no-offense)) (set! (-> s2-2 transform-index) 3) (set-vector! (-> s2-2 local-sphere) -4096.0 28672.0 12288.0 2252.8) (append-prim s3-0 s2-2) diff --git a/test/decompiler/reference/levels/snow/target-snowball_REF.gc b/test/decompiler/reference/levels/snow/target-snowball_REF.gc index 9603d21452..004b07a872 100644 --- a/test/decompiler/reference/levels/snow/target-snowball_REF.gc +++ b/test/decompiler/reference/levels/snow/target-snowball_REF.gc @@ -89,9 +89,7 @@ (set! (-> self manipy) (the-as (pointer manipy) #f)) ) ) - (set! (-> self control root-prim prim-core action) - (logand -4097 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-12)) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) @@ -119,7 +117,7 @@ (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) (TODO-RENAME-28 (-> self control) (new 'static 'vector :y 4096.0 :w 1.0)) - (logior! (-> self control root-prim prim-core action) 4096) + (logior! (-> self control root-prim prim-core action) (collide-action ca-12)) (ja-channel-set! 1) (let ((gp-1 (-> self skel root-channel 0))) (joint-control-channel-group-eval! diff --git a/test/decompiler/reference/levels/snow/yeti_REF.gc b/test/decompiler/reference/levels/snow/yeti_REF.gc index 9edc8ce3b4..38230cb4c5 100644 --- a/test/decompiler/reference/levels/snow/yeti_REF.gc +++ b/test/decompiler/reference/levels/snow/yeti_REF.gc @@ -268,7 +268,7 @@ (nav-enemy-neck-control-inactive) (set! (-> self state-time) (-> *display* base-frame-counter)) (if (-> self nav-info move-to-ground) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) ) (set! (-> self nav-enemy-flags) (logand -7 (-> self nav-enemy-flags))) (set! (-> self state-timeout) 300) @@ -767,31 +767,31 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 3072.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 9830.4 0.0 3072.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 2) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-2 transform-index) 6) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 2048.0) (append-prim s4-0 s3-2) diff --git a/test/decompiler/reference/levels/sunken/bully_REF.gc b/test/decompiler/reference/levels/sunken/bully_REF.gc index d9e28cbfab..ad8d543e00 100644 --- a/test/decompiler/reference/levels/sunken/bully_REF.gc +++ b/test/decompiler/reference/levels/sunken/bully_REF.gc @@ -448,7 +448,7 @@ (set! (-> self bounced?) #t) (set! (-> self bounce-volume) 100) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-override) 2 0) + (dummy-54 (-> self root-override) 2 (collide-offense no-offense)) ) ) ) @@ -505,7 +505,7 @@ ) ) ) - (dummy-54 (-> self root-override) 2 2) + (dummy-54 (-> self root-override) 2 (collide-offense normal-attack)) (set! (-> self hit-player?) #f) ) (transform-post) @@ -1090,25 +1090,25 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 404)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 2) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind cak-2 target crate enemy)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s3-0 local-sphere) 0.0 6144.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 404)) - (set! (-> s2-0 prim-core action) (the-as uint 3073)) - (set! (-> s2-0 prim-core offense) 2) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind cak-2 target crate enemy)) + (set! (-> s2-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 6963.2) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 404)) - (set! (-> s2-1 prim-core action) (the-as uint 3073)) - (set! (-> s2-1 prim-core offense) 2) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind cak-2 target crate enemy)) + (set! (-> s2-1 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s2-1 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s2-1 local-sphere) 0.0 9420.8 0.0 4096.0) (append-prim s3-0 s2-1) ) @@ -1138,7 +1138,7 @@ (set! (-> v1-49 ignore-angle) 16384.0) ) (transform-post) - (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (the-as uint 1))) + (if (not (dummy-60 (-> obj root-override) 12288.0 40960.0 #t (collide-kind background))) (go process-drawable-art-error "no ground") ) (set! (-> obj facing-ry) (quaternion-y-angle (-> obj root-override quat))) diff --git a/test/decompiler/reference/levels/sunken/double-lurker_REF.gc b/test/decompiler/reference/levels/sunken/double-lurker_REF.gc index 90849469d4..c3f30f72e0 100644 --- a/test/decompiler/reference/levels/sunken/double-lurker_REF.gc +++ b/test/decompiler/reference/levels/sunken/double-lurker_REF.gc @@ -480,55 +480,55 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 6) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 10240.0 0.0 14336.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-0 local-sphere) 0.0 2662.4 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-1 local-sphere) 0.0 6758.4 0.0 4096.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core action) (the-as uint 1)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core action) (collide-action solid)) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s3-2 local-sphere) 0.0 10854.4 0.0 4096.0) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core offense) 2) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-3 transform-index) 10) (set-vector! (-> s3-3 local-sphere) 0.0 0.0 0.0 1228.8) (append-prim s4-0 s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core offense) 2) + (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-4 collide-with) (collide-kind target)) + (set! (-> s3-4 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-4 transform-index) 16) (set-vector! (-> s3-4 local-sphere) 0.0 0.0 0.0 1228.8) (append-prim s4-0 s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core offense) 2) + (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-5 collide-with) (collide-kind target)) + (set! (-> s3-5 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-5 transform-index) 5) (set-vector! (-> s3-5 local-sphere) 0.0 -2048.0 0.0 3276.8) (append-prim s4-0 s3-5) @@ -595,7 +595,7 @@ (set! (-> gp-2 frame-num) 0.0) ) (transform-post) - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) (dummy-51 self) (go double-lurker-top-resume) ) @@ -646,8 +646,8 @@ (when (and ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> (the-as target arg0) control) - (the-as uint 1) - (the-as uint 0) + (collide-action solid) + (collide-action) ) (let ((a1-6 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-6 from) self) @@ -1134,79 +1134,79 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 9) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 15564.8 0.0 3686.4) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 19660.8 0.0 3686.4) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 0) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense no-offense)) (set! (-> s3-2 transform-index) 5) (set-vector! (-> s3-2 local-sphere) 0.0 8192.0 -1024.0 3276.8) (append-prim s4-0 s3-2) ) (let ((s3-3 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-3 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-3 collide-with) (the-as uint 16)) - (set! (-> s3-3 prim-core action) (the-as uint 1)) - (set! (-> s3-3 prim-core offense) 4) + (set! (-> s3-3 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-3 collide-with) (collide-kind target)) + (set! (-> s3-3 prim-core action) (collide-action solid)) + (set! (-> s3-3 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-3 local-sphere) 0.0 3276.8 0.0 3686.4) (append-prim s4-0 s3-3) ) (let ((s3-4 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-4 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-4 collide-with) (the-as uint 16)) - (set! (-> s3-4 prim-core action) (the-as uint 1)) - (set! (-> s3-4 prim-core offense) 4) + (set! (-> s3-4 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-4 collide-with) (collide-kind target)) + (set! (-> s3-4 prim-core action) (collide-action solid)) + (set! (-> s3-4 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-4 local-sphere) 0.0 7372.8 0.0 3686.4) (append-prim s4-0 s3-4) ) (let ((s3-5 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 2)))) - (set! (-> s3-5 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-5 collide-with) (the-as uint 16)) - (set! (-> s3-5 prim-core action) (the-as uint 1)) - (set! (-> s3-5 prim-core offense) 4) + (set! (-> s3-5 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-5 collide-with) (collide-kind target)) + (set! (-> s3-5 prim-core action) (collide-action solid)) + (set! (-> s3-5 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-5 local-sphere) 0.0 11468.8 0.0 3686.4) (append-prim s4-0 s3-5) ) (let ((s3-6 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-6 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-6 collide-with) (the-as uint 16)) - (set! (-> s3-6 prim-core offense) 2) + (set! (-> s3-6 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-6 collide-with) (collide-kind target)) + (set! (-> s3-6 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-6 transform-index) 5) (set-vector! (-> s3-6 local-sphere) 0.0 -2048.0 -2048.0 3686.4) (append-prim s4-0 s3-6) ) (let ((s3-7 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-7 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-7 collide-with) (the-as uint 16)) - (set! (-> s3-7 prim-core offense) 2) + (set! (-> s3-7 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-7 collide-with) (collide-kind target)) + (set! (-> s3-7 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-7 transform-index) 10) (set-vector! (-> s3-7 local-sphere) 0.0 1024.0 0.0 1638.4) (append-prim s4-0 s3-7) ) (let ((s3-8 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 1)))) - (set! (-> s3-8 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-8 collide-with) (the-as uint 16)) - (set! (-> s3-8 prim-core offense) 2) + (set! (-> s3-8 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-8 collide-with) (collide-kind target)) + (set! (-> s3-8 prim-core offense) (collide-offense normal-attack)) (set! (-> s3-8 transform-index) 16) (set-vector! (-> s3-8 local-sphere) 0.0 -1024.0 0.0 1638.4) (append-prim s4-0 s3-8) @@ -1226,10 +1226,10 @@ (let ((a0-1 0)) (dotimes (a1-0 3) (let ((a2-2 (-> (the-as collide-shape-prim-group v1-1) prims a0-1))) - (set! (-> a2-2 collide-with) (the-as uint 0)) - (set! (-> a2-2 prim-core collide-as) (the-as uint 0)) - (set! (-> a2-2 prim-core action) (the-as uint 0)) - (set! (-> a2-2 prim-core offense) 0) + (set! (-> a2-2 collide-with) (collide-kind)) + (set! (-> a2-2 prim-core collide-as) (collide-kind)) + (set! (-> a2-2 prim-core action) (collide-action)) + (set! (-> a2-2 prim-core offense) (collide-offense no-offense)) ) 0 (+! a0-1 1) @@ -1237,8 +1237,8 @@ ) (countdown (a0-4 (-> (the-as collide-shape-prim-group v1-1) num-prims)) (let ((a1-3 (-> (the-as collide-shape-prim-group v1-1) prims a0-4))) - (if (and (= (-> a1-3 prim-core offense) 4) (logtest? (-> a1-3 prim-id) 2)) - (set! (-> a1-3 prim-core offense) 1) + (if (and (= (-> a1-3 prim-core offense) (collide-offense indestructible)) (logtest? (-> a1-3 prim-id) 2)) + (set! (-> a1-3 prim-core offense) (collide-offense touch)) ) ) ) diff --git a/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc b/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc index d6bb2b2fe5..9de4bd78f3 100644 --- a/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc +++ b/test/decompiler/reference/levels/sunken/floating-launcher_REF.gc @@ -123,10 +123,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 11468.8) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/helix-water_REF.gc b/test/decompiler/reference/levels/sunken/helix-water_REF.gc index cab75e611e..c296d8747d 100644 --- a/test/decompiler/reference/levels/sunken/helix-water_REF.gc +++ b/test/decompiler/reference/levels/sunken/helix-water_REF.gc @@ -248,10 +248,10 @@ (defmethod init-from-entity! helix-slide-door ((obj helix-slide-door) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 22528.0 0.0 53248.0) (set-root-prim! s4-0 s3-0) @@ -618,10 +618,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 14336.0 0.0 22118.4) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/orbit-plat_REF.gc b/test/decompiler/reference/levels/sunken/orbit-plat_REF.gc index b63e7a0905..5f1aab3df1 100644 --- a/test/decompiler/reference/levels/sunken/orbit-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/orbit-plat_REF.gc @@ -913,10 +913,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 13926.4) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/puffer_REF.gc b/test/decompiler/reference/levels/sunken/puffer_REF.gc index d7c091c769..ff74117700 100644 --- a/test/decompiler/reference/levels/sunken/puffer_REF.gc +++ b/test/decompiler/reference/levels/sunken/puffer_REF.gc @@ -157,7 +157,7 @@ (when (send-event-function arg0 a1-9) (set! (-> self hit-player?) #t) (set! (-> self hit-player-time) (the-as uint (-> *display* base-frame-counter))) - (dummy-54 (-> self root-override) 2 0) + (dummy-54 (-> self root-override) 2 (collide-offense no-offense)) ) ) ) @@ -175,7 +175,7 @@ ) ) ) - (dummy-54 (-> self root-override) 2 2) + (dummy-54 (-> self root-override) 2 (collide-offense normal-attack)) (set! (-> self hit-player?) #f) ) (transform-post) @@ -773,30 +773,30 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 3) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) (set-vector! (-> s4-0 local-sphere) 0.0 6144.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core offense) 1) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core offense) (collide-offense touch)) (set! (-> s3-0 transform-index) 5) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core offense) 1) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core offense) (collide-offense touch)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s4-0 s3-1) ) (let ((s3-2 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s3-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-2 collide-with) (the-as uint 16)) - (set! (-> s3-2 prim-core offense) 1) + (set! (-> s3-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-2 collide-with) (collide-kind target)) + (set! (-> s3-2 prim-core offense) (collide-offense touch)) (set! (-> s3-2 transform-index) 9) (set-vector! (-> s3-2 local-sphere) 0.0 0.0 0.0 3072.0) (append-prim s4-0 s3-2) diff --git a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc index 34f98bcf12..f77ff596e9 100644 --- a/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/qbert-plat_REF.gc @@ -386,10 +386,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 -8192.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/sunken/shover_REF.gc b/test/decompiler/reference/levels/sunken/shover_REF.gc index 176e0e20b2..06a48dcfa0 100644 --- a/test/decompiler/reference/levels/sunken/shover_REF.gc +++ b/test/decompiler/reference/levels/sunken/shover_REF.gc @@ -43,8 +43,8 @@ (when ((method-of-type touching-shapes-entry prims-touching-action?) (the-as touching-shapes-entry (-> arg3 param 0)) (-> *target* control) - (the-as uint 1) - (the-as uint 0) + (collide-action solid) + (collide-action) ) (let ((s4-0 (new 'stack 'attack-info))) (dummy-41 (-> self root-override) s4-0 (-> self shove-up)) @@ -112,10 +112,10 @@ (s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player))) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint s3-0) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 0) (set-vector! (-> s3-1 local-sphere) 0.0 0.0 0.0 53248.0) (set-root-prim! s4-0 s3-1) diff --git a/test/decompiler/reference/levels/sunken/square-platform_REF.gc b/test/decompiler/reference/levels/sunken/square-platform_REF.gc index cbaa912abf..6be0743796 100644 --- a/test/decompiler/reference/levels/sunken/square-platform_REF.gc +++ b/test/decompiler/reference/levels/sunken/square-platform_REF.gc @@ -549,10 +549,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 -24576.0 0.0 32768.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/steam-cap_REF.gc b/test/decompiler/reference/levels/sunken/steam-cap_REF.gc index f2162f1e22..7fdb50bb41 100644 --- a/test/decompiler/reference/levels/sunken/steam-cap_REF.gc +++ b/test/decompiler/reference/levels/sunken/steam-cap_REF.gc @@ -828,10 +828,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc b/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc index 5e92bad503..759f4e56aa 100644 --- a/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc +++ b/test/decompiler/reference/levels/sunken/sun-exit-chamber_REF.gc @@ -633,10 +633,10 @@ (set! (-> obj open-level) 0.0) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 8192.0 0.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) @@ -1435,10 +1435,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 16384.0 0.0 67584.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc index 2be32305f2..1f72e125a6 100644 --- a/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc +++ b/test/decompiler/reference/levels/sunken/sun-iris-door_REF.gc @@ -371,10 +371,10 @@ (set! (-> obj move-to?) #f) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 0) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -436,10 +436,10 @@ (set! (-> self move-to?) #f) (let ((s3-0 (new 'process 'collide-shape self (collide-list-enum hit-by-others)))) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s3-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 0) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s3-0 s2-0) diff --git a/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc b/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc index 1668997e84..0f570b0ee0 100644 --- a/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc +++ b/test/decompiler/reference/levels/sunken/sunken-obs_REF.gc @@ -153,10 +153,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 57344.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/sunken/target-tube_REF.gc b/test/decompiler/reference/levels/sunken/target-tube_REF.gc index 3933544ff1..fc4a1d2c5e 100644 --- a/test/decompiler/reference/levels/sunken/target-tube_REF.gc +++ b/test/decompiler/reference/levels/sunken/target-tube_REF.gc @@ -416,7 +416,7 @@ ) (set! (-> self control reaction) target-collision-reaction) (dummy-33 (-> self control) (-> self control transv) (-> self control root-prim collide-with)) - (if (logtest? (-> self control root-prim prim-core action) 64) + (if (logtest? (-> self control root-prim prim-core action) (collide-action ca-6)) (dummy-20 *target* *collide-cache*) ) (if *debug-segment* @@ -493,21 +493,18 @@ ) :exit (behavior () - (when (not - (or (= (-> self next-state name) 'target-tube) - (= (-> self next-state name) 'target-tube-jump) - (= (-> self next-state name) 'target-tube-hit) - ) - ) + (when (not (or (= (-> self next-state name) 'target-tube) + (= (-> self next-state name) 'target-tube-jump) + (= (-> self next-state name) 'target-tube-hit) + ) + ) (let ((v1-7 (-> self manipy))) (when v1-7 (deactivate (-> v1-7 0)) (set! (-> self manipy) (the-as (pointer manipy) #f)) ) ) - (set! (-> self control root-prim prim-core action) - (logand -8193 (-> self control root-prim prim-core action)) - ) + (logclear! (-> self control root-prim prim-core action) (collide-action ca-13)) (set! (-> self control unknown-surface00) *walk-mods*) (set! (-> self control dynam gravity-max) (-> self control unknown-dynamics00 gravity-max)) (set! (-> self control dynam gravity-length) (-> self control unknown-dynamics00 gravity-length)) @@ -544,7 +541,7 @@ (target-collide-set! 'tube 0.0) (set! (-> self control transv quad) (the-as uint128 0)) (set! (-> self control unknown-float01) 0.0) - (logior! (-> self control root-prim prim-core action) 8192) + (logior! (-> self control root-prim prim-core action) (collide-action ca-13)) (remove-exit) (let ((a1-4 (new 'stack-no-clear 'event-message-block))) (set! (-> a1-4 from) self) @@ -1124,6 +1121,12 @@ (process-entity-status! self (entity-perm-status bit-3) #t) (none) ) + :exit + (behavior () + (set! (-> self target) (the-as handle #f)) + (process-entity-status! self (entity-perm-status bit-3) #f) + (none) + ) :trans (behavior () (let ((gp-0 (handle->process (-> self target)))) diff --git a/test/decompiler/reference/levels/sunken/wall-plat_REF.gc b/test/decompiler/reference/levels/sunken/wall-plat_REF.gc index 1fda2dfd44..fd1a3a5db2 100644 --- a/test/decompiler/reference/levels/sunken/wall-plat_REF.gc +++ b/test/decompiler/reference/levels/sunken/wall-plat_REF.gc @@ -244,10 +244,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 19)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 2) (set-vector! (-> s3-0 local-sphere) 0.0 -6144.0 -12288.0 19456.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc b/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc index 8b2658f912..4d980dc235 100644 --- a/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc +++ b/test/decompiler/reference/levels/sunken/wedge-plats_REF.gc @@ -267,10 +267,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -484,10 +484,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 19)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 32768.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/sunken/whirlpool_REF.gc b/test/decompiler/reference/levels/sunken/whirlpool_REF.gc index e6f0fb61f6..6d8c31d001 100644 --- a/test/decompiler/reference/levels/sunken/whirlpool_REF.gc +++ b/test/decompiler/reference/levels/sunken/whirlpool_REF.gc @@ -403,10 +403,10 @@ (set! (-> obj spin-ry) (rand-vu-float-range 0.0 65536.0)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 -819.2 0.0 11468.8) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/swamp/billy_REF.gc b/test/decompiler/reference/levels/swamp/billy_REF.gc index 2666d57550..0cb6dd230f 100644 --- a/test/decompiler/reference/levels/swamp/billy_REF.gc +++ b/test/decompiler/reference/levels/swamp/billy_REF.gc @@ -1411,7 +1411,10 @@ ;; definition for method 47 of type billy ;; INFO: Return type mismatch basic vs symbol. (defmethod target-above-threshold? billy ((obj billy)) - (the-as symbol (and *target* (zero? (logand (-> *target* control root-prim prim-core action) #x4000)))) + (the-as + symbol + (and *target* (zero? (logand (-> *target* control root-prim prim-core action) (collide-action ca-14)))) + ) ) ;; definition for method 11 of type billy diff --git a/test/decompiler/reference/levels/swamp/kermit_REF.gc b/test/decompiler/reference/levels/swamp/kermit_REF.gc index 1945876526..9440e91655 100644 --- a/test/decompiler/reference/levels/swamp/kermit_REF.gc +++ b/test/decompiler/reference/levels/swamp/kermit_REF.gc @@ -737,7 +737,7 @@ (-> self root-override trans) (the-as vector #f) 8192.0 - (the-as uint 1) + (collide-kind background) (the-as process #f) 0.0 81920.0 @@ -796,10 +796,10 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2867.2) (set-root-prim! s5-0 s4-0) ) @@ -1821,16 +1821,16 @@ nav-enemy-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 3072.0) (append-prim s3-0 s2-0) diff --git a/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc b/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc index ed539768ff..16929668fa 100644 --- a/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-bat_REF.gc @@ -524,16 +524,16 @@ swamp-bat-slave-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 6144.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 3) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 4096.0) (append-prim s3-0 s2-0) diff --git a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc index bcfffc626e..f09bd6306f 100644 --- a/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-obs_REF.gc @@ -452,25 +452,25 @@ (defmethod init! swamp-spike ((obj swamp-spike)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) (set-vector! (-> s4-0 local-sphere) 0.0 20480.0 0.0 24576.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 1)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 20480.0 0.0 24576.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 1) (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set! (-> s3-1 transform-index) 3) (set-vector! (-> s3-1 local-sphere) 0.0 20480.0 0.0 24576.0) (append-prim s4-0 s3-1) @@ -644,10 +644,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) @@ -855,10 +855,10 @@ (let ((f30-0 (res-lump-float arg0 'scale-factor :default 1.0))) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 (* 4096.0 f30-0) 0.0 (* 4096.0 (* 3.0 f30-0))) (set-root-prim! s4-0 s3-0) @@ -890,10 +890,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) @@ -1066,10 +1066,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 19)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1 ca-4)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 3) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc b/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc index fd7e7495bf..d688bcfe31 100644 --- a/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-rat-nest_REF.gc @@ -1461,10 +1461,10 @@ swamp-rat-nest-default-event-handler (defmethod dummy-20 swamp-rat-nest-dummy-a ((obj swamp-rat-nest-dummy-a)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 20480.0) (set-root-prim! s5-0 s4-0) @@ -1481,10 +1481,10 @@ swamp-rat-nest-default-event-handler (defmethod dummy-20 swamp-rat-nest-dummy-b ((obj swamp-rat-nest-dummy-b)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -1501,10 +1501,10 @@ swamp-rat-nest-default-event-handler (defmethod dummy-20 swamp-rat-nest-dummy-c ((obj swamp-rat-nest-dummy-c)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 12288.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) diff --git a/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc b/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc index b26a896791..6c9e881054 100644 --- a/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc +++ b/test/decompiler/reference/levels/swamp/swamp-rat_REF.gc @@ -595,10 +595,10 @@ swamp-rat-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 3)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 3686.4001 0.0 3686.4001) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/training/training-obs_REF.gc b/test/decompiler/reference/levels/training/training-obs_REF.gc index 3489c94b8d..69fd52bfa0 100644 --- a/test/decompiler/reference/levels/training/training-obs_REF.gc +++ b/test/decompiler/reference/levels/training/training-obs_REF.gc @@ -470,10 +470,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) @@ -555,10 +555,10 @@ (defmethod TODO-RENAME-24 tra-iris-door ((obj tra-iris-door)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 16384.0) (set-root-prim! s5-0 s4-0) @@ -1136,24 +1136,24 @@ (defmethod init-from-entity! scarecrow-a ((obj scarecrow-a) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 10240.0 0.0 12288.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 7372.8 0.0 7372.8) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 1) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-1 local-sphere) 0.0 12288.0 0.0 7372.8) (append-prim s3-0 s2-1) ) @@ -1354,32 +1354,32 @@ (defmethod init-from-entity! scarecrow-b ((obj scarecrow-b) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 3) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 14336.0 0.0 15564.8) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-0 local-sphere) 0.0 4096.0 0.0 4096.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s2-1 local-sphere) 0.0 14745.6 0.0 6553.6) (append-prim s3-0 s2-1) ) (let ((s2-2 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 2)))) - (set! (-> s2-2 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-2 collide-with) (the-as uint 16)) - (set! (-> s2-2 prim-core action) (the-as uint 1)) - (set! (-> s2-2 prim-core offense) 1) + (set! (-> s2-2 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-2 collide-with) (collide-kind target)) + (set! (-> s2-2 prim-core action) (collide-action solid)) + (set! (-> s2-2 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-2 local-sphere) 0.0 20480.0 0.0 6553.6) (append-prim s3-0 s2-2) ) diff --git a/test/decompiler/reference/levels/village1/farmer_REF.gc b/test/decompiler/reference/levels/village1/farmer_REF.gc index 2dc227ef84..fe6b5be303 100644 --- a/test/decompiler/reference/levels/village1/farmer_REF.gc +++ b/test/decompiler/reference/levels/village1/farmer_REF.gc @@ -123,25 +123,25 @@ (defmethod initialize-collision farmer ((obj farmer) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 4096.0 8192.0 -4096.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 4096.0 6144.0 -4096.0 8192.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 4096.0 10240.0 -4096.0 8192.0) (append-prim s4-0 s3-1) ) diff --git a/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc b/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc index f5cf99b98c..f97a719424 100644 --- a/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc +++ b/test/decompiler/reference/levels/village1/fishermans-boat_REF.gc @@ -1493,17 +1493,17 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) 0.0 8192.0 0.0 61440.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 8192.0 0.0 61440.0) (append-prim s4-0 s3-0) diff --git a/test/decompiler/reference/levels/village1/sage_REF.gc b/test/decompiler/reference/levels/village1/sage_REF.gc index aceb95a09a..794e51b28b 100644 --- a/test/decompiler/reference/levels/village1/sage_REF.gc +++ b/test/decompiler/reference/levels/village1/sage_REF.gc @@ -632,27 +632,27 @@ (defmethod initialize-collision sage ((obj sage) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) arg0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 10240.0) (set-root-prim! s5-0 s4-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) arg0) (set-vector! (-> s2-0 local-sphere) 0.0 -2048.0 0.0 5324.8) (append-prim s4-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) arg0) (set-vector! (-> s2-1 local-sphere) 0.0 2048.0 0.0 5324.8) (append-prim s4-0 s2-1) diff --git a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc index 26d808e7bb..bccb22ecdc 100644 --- a/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc +++ b/test/decompiler/reference/levels/village1/village-obs-VI1_REF.gc @@ -816,7 +816,7 @@ (defstate starfish-idle (starfish) :enter (behavior () - (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (the-as uint 1)) + (dummy-60 (-> self collide-info) 40960.0 40960.0 #t (collide-kind background)) (set! (-> self state-time) (-> *display* base-frame-counter)) (ja-channel-set! 0) (none) @@ -957,7 +957,7 @@ (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s4-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s4-0 prim-core offense) 2) + (set! (-> s4-0 prim-core offense) (collide-offense normal-attack)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 2457.6) (set-root-prim! s5-0 s4-0) ) diff --git a/test/decompiler/reference/levels/village1/yakow_REF.gc b/test/decompiler/reference/levels/village1/yakow_REF.gc index 812dae976b..9b9c03ba23 100644 --- a/test/decompiler/reference/levels/village1/yakow_REF.gc +++ b/test/decompiler/reference/levels/village1/yakow_REF.gc @@ -1016,8 +1016,8 @@ yakow-default-event-handler :code (behavior () (let ((v1-1 (-> self root-override root-prim))) - (set! (-> v1-1 collide-with) (the-as uint 0)) - (set! (-> v1-1 prim-core collide-as) (the-as uint 0)) + (set! (-> v1-1 collide-with) (collide-kind)) + (set! (-> v1-1 prim-core collide-as) (collide-kind)) ) 0 (drop-pickup (-> self fact-override) #t *entity-pool* (-> self fact-override) 0) @@ -1038,10 +1038,10 @@ yakow-default-event-handler (the-as (function collide-shape-moving collide-shape-intersect vector vector none) nothing) ) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3073)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-10 ca-11)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 4096.0 0.0 10240.0) (set-root-prim! s4-0 s3-0) ) diff --git a/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc b/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc index 097e0c85b8..d1f9e9745f 100644 --- a/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc +++ b/test/decompiler/reference/levels/village2/swamp-blimp_REF.gc @@ -1164,10 +1164,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 12288.0 0.0 24576.0) (set-root-prim! s4-0 s3-0) @@ -1387,10 +1387,10 @@ (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum usually-hit-by-player)))) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) 0.0 61440.0 0.0 61440.0) (set-root-prim! s4-0 s3-0) ) @@ -1964,10 +1964,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 3) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 409600.0) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/village2/village2-obs_REF.gc b/test/decompiler/reference/levels/village2/village2-obs_REF.gc index 3b843eaf83..9f74aef66d 100644 --- a/test/decompiler/reference/levels/village2/village2-obs_REF.gc +++ b/test/decompiler/reference/levels/village2/village2-obs_REF.gc @@ -384,10 +384,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 18432.0) (set-root-prim! s5-0 s4-0) @@ -449,10 +449,10 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set! (-> s4-0 transform-index) 0) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 25395.2) (set-root-prim! s5-0 s4-0) @@ -747,8 +747,8 @@ (dotimes (a0-0 (-> (the-as collide-shape-prim-group v1-1) num-prims)) (let ((a1-2 (-> (the-as collide-shape-prim-group v1-1) prims a0-0))) (when (= (-> a1-2 prim-id) 256) - (set! (-> a1-2 prim-core collide-as) (the-as uint 0)) - (set! (-> a1-2 collide-with) (the-as uint 0)) + (set! (-> a1-2 prim-core collide-as) (collide-kind)) + (set! (-> a1-2 collide-with) (collide-kind)) 0 ) ) @@ -1020,26 +1020,26 @@ (defmethod init-from-entity! fireboulder ((obj fireboulder) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-others)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 2) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) -24576.0 18432.0 0.0 49152.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 4) + (set! (-> s2-0 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense indestructible)) (set! (-> s2-0 transform-index) 4) (set-vector! (-> s2-0 local-sphere) 0.0 0.0 0.0 24576.0) (append-prim s3-0 s2-0) ) (let ((s2-1 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 1) (the-as uint 256)))) - (set! (-> s2-1 prim-core collide-as) (the-as uint 512)) - (set! (-> s2-1 collide-with) (the-as uint 16)) - (set! (-> s2-1 prim-core action) (the-as uint 1)) - (set! (-> s2-1 prim-core offense) 4) + (set! (-> s2-1 prim-core collide-as) (collide-kind wall-object)) + (set! (-> s2-1 collide-with) (collide-kind target)) + (set! (-> s2-1 prim-core action) (collide-action solid)) + (set! (-> s2-1 prim-core offense) (collide-offense indestructible)) (set! (-> s2-1 transform-index) 4) (set-vector! (-> s2-1 local-sphere) 0.0 0.0 -24576.0 49152.0) (append-prim s3-0 s2-1) @@ -2047,16 +2047,16 @@ (defmethod init-from-entity! ogreboss-village2 ((obj ogreboss-village2) (arg0 entity-actor)) (let ((s4-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s3-0 (new 'process 'collide-shape-prim-group s4-0 (the-as uint 1) 0))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) (set-vector! (-> s3-0 local-sphere) 0.0 40960.0 0.0 40960.0) (set-root-prim! s4-0 s3-0) (let ((s2-0 (new 'process 'collide-shape-prim-sphere s4-0 (the-as uint 3)))) - (set! (-> s2-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s2-0 collide-with) (the-as uint 16)) - (set! (-> s2-0 prim-core action) (the-as uint 1)) - (set! (-> s2-0 prim-core offense) 1) + (set! (-> s2-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s2-0 collide-with) (collide-kind target)) + (set! (-> s2-0 prim-core action) (collide-action solid)) + (set! (-> s2-0 prim-core offense) (collide-offense touch)) (set-vector! (-> s2-0 local-sphere) 0.0 34816.0 0.0 14336.0) (append-prim s3-0 s2-0) ) diff --git a/test/decompiler/reference/levels/village2/warrior_REF.gc b/test/decompiler/reference/levels/village2/warrior_REF.gc index 79b7f1ada0..99c918765d 100644 --- a/test/decompiler/reference/levels/village2/warrior_REF.gc +++ b/test/decompiler/reference/levels/village2/warrior_REF.gc @@ -196,25 +196,25 @@ (defmethod initialize-collision warrior ((obj warrior) (arg0 int) (arg1 vector)) (let ((s5-0 (new 'process 'collide-shape obj (collide-list-enum hit-by-player)))) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 2) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 1)) - (set! (-> s4-0 prim-core offense) 4) + (set! (-> s4-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid)) + (set! (-> s4-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s4-0 local-sphere) -3072.0 8192.0 0.0 11264.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 1)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-0 local-sphere) -2048.0 9216.0 0.0 8192.0) (append-prim s4-0 s3-0) ) (let ((s3-1 (new 'process 'collide-shape-prim-sphere s5-0 (the-as uint 0)))) - (set! (-> s3-1 prim-core collide-as) (the-as uint 256)) - (set! (-> s3-1 collide-with) (the-as uint 16)) - (set! (-> s3-1 prim-core action) (the-as uint 1)) - (set! (-> s3-1 prim-core offense) 4) + (set! (-> s3-1 prim-core collide-as) (collide-kind enemy)) + (set! (-> s3-1 collide-with) (collide-kind target)) + (set! (-> s3-1 prim-core action) (collide-action solid)) + (set! (-> s3-1 prim-core offense) (collide-offense indestructible)) (set-vector! (-> s3-1 local-sphere) 0.0 2048.0 0.0 4096.0) (append-prim s4-0 s3-1) ) diff --git a/test/decompiler/reference/levels/village3/minecart_REF.gc b/test/decompiler/reference/levels/village3/minecart_REF.gc index 8ffab21e62..af02cd4d93 100644 --- a/test/decompiler/reference/levels/village3/minecart_REF.gc +++ b/test/decompiler/reference/levels/village3/minecart_REF.gc @@ -103,10 +103,10 @@ ) (dummy-29 s4-0 1) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s4-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 4915.2 0.0 13107.2) (set-root-prim! s4-0 s3-0) diff --git a/test/decompiler/reference/levels/village_common/villagep-obs_REF.gc b/test/decompiler/reference/levels/village_common/villagep-obs_REF.gc index c876fdf6b6..3bdafeedd5 100644 --- a/test/decompiler/reference/levels/village_common/villagep-obs_REF.gc +++ b/test/decompiler/reference/levels/village_common/villagep-obs_REF.gc @@ -161,7 +161,9 @@ (and (>= (-> self level-slot) 0) (not (movie?)) (not (level-hint-displayed?)) - (zero? (logand (-> *target* control root-prim prim-core action) #x7380)) + (zero? + (logand (-> *target* control root-prim prim-core action) (collide-action ca-7 ca-8 ca-9 ca-12 ca-13 ca-14)) + ) (let* ((v1-16 (-> self root)) (a1-2 (-> *target* control trans)) (f0-1 (vector-y-angle (vector-! (new 'stack-no-clear 'vector) a1-2 (-> v1-16 trans)))) @@ -553,16 +555,16 @@ ) (dummy-29 s5-0 1) (let ((s4-0 (new 'process 'collide-shape-prim-group s5-0 (the-as uint 1) 0))) - (set! (-> s4-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s4-0 collide-with) (the-as uint 16)) - (set! (-> s4-0 prim-core action) (the-as uint 3)) + (set! (-> s4-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s4-0 collide-with) (collide-kind target)) + (set! (-> s4-0 prim-core action) (collide-action solid ca-1)) (set-vector! (-> s4-0 local-sphere) 0.0 0.0 0.0 12288.0) (set-root-prim! s5-0 s4-0) (let ((s3-0 (new 'process 'collide-shape-prim-mesh s5-0 (the-as uint 0) (the-as uint 0)))) - (set! (-> s3-0 prim-core collide-as) (the-as uint 2048)) - (set! (-> s3-0 collide-with) (the-as uint 16)) - (set! (-> s3-0 prim-core action) (the-as uint 3)) - (set! (-> s3-0 prim-core offense) 4) + (set! (-> s3-0 prim-core collide-as) (collide-kind ground-object)) + (set! (-> s3-0 collide-with) (collide-kind target)) + (set! (-> s3-0 prim-core action) (collide-action solid ca-1)) + (set! (-> s3-0 prim-core offense) (collide-offense indestructible)) (set! (-> s3-0 transform-index) 4) (set-vector! (-> s3-0 local-sphere) 0.0 0.0 0.0 12288.0) (append-prim s4-0 s3-0) @@ -579,7 +581,7 @@ (defmethod pressable? warp-gate-switch ((obj warp-gate-switch)) (let ((v1-2 (-> obj entity extra perm task))) (cond - ((logtest? (-> *target* control root-prim prim-core action) #x7380) + ((logtest? (-> *target* control root-prim prim-core action) (collide-action ca-7 ca-8 ca-9 ca-12 ca-13 ca-14)) #f ) ((= v1-2 (game-task training-door))