From 3a5b4d664b762e77b0105c588cabb6c5dbfeda6c Mon Sep 17 00:00:00 2001 From: Tyler Wilding Date: Wed, 29 Dec 2021 20:02:50 -0500 Subject: [PATCH] decomp: finish `demo-obs` | `sequence-a-village1` | `misty-obs` (#1022) * decomp: finish `demo-obs` * decomp: finish `sequence-a-village1` * decomp: finish `misty-obs` * fix some mistakes --- decompiler/config/all-types.gc | 134 +- .../jak1_ntsc_black_label/label_types.jsonc | 5 + .../stack_structures.jsonc | 12 + .../jak1_ntsc_black_label/type_casts.jsonc | 79 +- .../jak1_ntsc_black_label/var_names.jsonc | 52 + goal_src/engine/camera/cam-debug-h.gc | 8 + goal_src/levels/demo/demo-obs.gc | 161 ++ goal_src/levels/misty/misty-obs.gc | 2310 +++++++++++++++ .../levels/village1/sequence-a-village1.gc | 451 +++ .../reference/levels/demo/demo-obs_REF.gc | 161 ++ .../reference/levels/misty/misty-obs_REF.gc | 2530 +++++++++++++++++ .../village1/sequence-a-village1_REF.gc | 479 ++++ 12 files changed, 6252 insertions(+), 130 deletions(-) create mode 100644 test/decompiler/reference/levels/demo/demo-obs_REF.gc create mode 100644 test/decompiler/reference/levels/misty/misty-obs_REF.gc create mode 100644 test/decompiler/reference/levels/village1/sequence-a-village1_REF.gc diff --git a/decompiler/config/all-types.gc b/decompiler/config/all-types.gc index 51a3f4ee31..2ec7a41e8c 100644 --- a/decompiler/config/all-types.gc +++ b/decompiler/config/all-types.gc @@ -1493,24 +1493,24 @@ (declare-type entity res-lump) (define-extern process type) ; deftype provided by C Kernel (deftype process (process-tree) - ((pool dead-pool :offset-assert #x20) - (status basic :offset-assert #x24) ; a symbol - (pid int32 :offset-assert #x28) - (main-thread cpu-thread :offset-assert #x2c) - (top-thread thread :offset-assert #x30) - (entity entity :offset-assert #x34) ;; likely a res-lump - (state state :offset-assert #x38) - (trans-hook function :offset-assert #x3c) - (post-hook function :offset-assert #x40) - (event-hook (function process int symbol event-message-block object) :offset-assert #x44) - (allocated-length int32 :offset-assert #x48) - (next-state state :offset-assert #x4c) - (heap-base pointer :offset-assert #x50) - (heap-top pointer :offset-assert #x54) - (heap-cur pointer :offset-assert #x58) - (stack-frame-top stack-frame :offset-assert #x5c) - (connection-list connectable :inline :offset-assert #x60) ;; can be a connection - (stack uint8 :dynamic :offset-assert #x70) + ((pool dead-pool :offset-assert 32) + (status basic :offset-assert 36) + (pid int32 :offset-assert 40) + (main-thread cpu-thread :offset-assert 44) + (top-thread thread :offset-assert 48) + (entity entity :offset-assert 52) ;; likely a res-lump + (state state :offset-assert 56) + (trans-hook function :offset-assert 60) + (post-hook function :offset-assert 64) + (event-hook (function process int symbol event-message-block object) :offset-assert 68) + (allocated-length int32 :offset-assert 72) + (next-state state :offset-assert 76) + (heap-base pointer :offset-assert 80) + (heap-top pointer :offset-assert 84) + (heap-cur pointer :offset-assert 88) + (stack-frame-top stack-frame :offset-assert 92) + (connection-list connectable :inline :offset-assert 96) ;; can be a connection + (stack uint8 :dynamic :offset-assert 112) ) (:methods (new (symbol type basic int) _type_ 0) @@ -29983,67 +29983,20 @@ ;; - Types -; (deftype sequenceA-village1 (process-taskable) -; ((boat uint64 :offset-assert 384) -; (side uint64 :offset-assert 392) -; ) -; :method-count-assert 53 -; :size-assert #x190 -; :heap-base #x120 -; :flag-assert #x3501200190 -; ;; inherited inspect of process-taskable -; (:methods -; (dummy-9 () none 9) -; (dummy-10 () none 10) -; (dummy-11 () none 11) -; (dummy-12 () none 12) -; (dummy-13 () none 13) -; (dummy-14 () none 14) -; (dummy-15 () none 15) -; (dummy-16 () none 16) -; (dummy-17 () none 17) -; (dummy-18 () none 18) -; (dummy-19 () none 19) -; (dummy-20 () none 20) -; (dummy-21 () none 21) -; (dummy-22 () none 22) -; (dummy-23 () none 23) -; (dummy-24 () none 24) -; (dummy-25 () none 25) -; (dummy-26 () none 26) -; (dummy-27 () none 27) -; (dummy-28 () none 28) -; (dummy-29 () none 29) -; (dummy-30 () none 30) -; (dummy-31 () none 31) -; (dummy-32 () none 32) -; (dummy-33 () none 33) -; (dummy-34 () none 34) -; (dummy-35 () none 35) -; (dummy-36 () none 36) -; (dummy-37 () none 37) -; (dummy-38 () none 38) -; (dummy-39 () none 39) -; (dummy-40 () none 40) -; (dummy-41 () none 41) -; (dummy-42 () none 42) -; (dummy-43 () none 43) -; (dummy-44 () none 44) -; (dummy-45 () none 45) -; (dummy-46 () none 46) -; (dummy-47 () none 47) -; (dummy-48 () none 48) -; (dummy-49 () none 49) -; (dummy-50 () none 50) -; (dummy-51 () none 51) -; (dummy-52 () none 52) -; ) -; ) +(deftype sequenceA-village1 (process-taskable) + ((boat handle :offset-assert 384) + (side handle :offset-assert 392) + ) + :method-count-assert 53 + :size-assert #x190 + :heap-base #x120 + :flag-assert #x3501200190 + ) ;; - Functions -(define-extern sequenceA-village1-init-by-other function) -(define-extern sequenceA-village1-trans-hook function) +(define-extern sequenceA-village1-init-by-other (function entity none :behavior sequenceA-village1)) +(define-extern sequenceA-village1-trans-hook (function none :behavior sequenceA-village1)) ;; - Unknowns @@ -30179,6 +30132,8 @@ :size-assert #xb0 :heap-base #x40 :flag-assert #x14004000b0 + (:states + boatpaddle-idle) ) (deftype windturbine (process-drawable) @@ -30189,6 +30144,8 @@ :size-assert #xb8 :heap-base #x50 :flag-assert #x14005000b8 + (:states + windturbine-idle) ) (deftype mis-bone-bridge (process-drawable) @@ -30202,6 +30159,11 @@ :size-assert #xbd :heap-base #x50 :flag-assert #x14005000bd + (:states + (mis-bone-bridge-fall symbol) + mis-bone-bridge-idle + mis-bone-bridge-hit + mis-bone-bridge-bump) ) (deftype breakaway (process-drawable) @@ -30214,6 +30176,10 @@ (init! (_type_ res-lump int) none 20) (go-idle (_type_) none 21) ) + (:states + breakaway-idle + breakaway-fall + breakaway-about-to-fall) ) (deftype breakaway-right (breakaway) @@ -30271,6 +30237,10 @@ :size-assert #xb4 :heap-base #x50 :flag-assert #x14005000b4 + (:states + boat-fuelcell-spawn + boat-fuelcell-idle + boat-fuelcell-die) ) ;; - Functions @@ -30281,27 +30251,15 @@ ;; - Unknowns -(define-extern boat-fuelcell-spawn (state boat-fuelcell)) ;; unknown type -(define-extern boat-fuelcell-idle (state boat-fuelcell)) ;; unknown type (define-extern *mistycam-sg* skeleton-group) -(define-extern boat-fuelcell-die (state boat-fuelcell)) ;; unknown type (define-extern *mis-bone-platform-sg* skeleton-group) (define-extern *bone-platform-constants* rigid-body-platform-constants) ;; unknown type (define-extern *breakaway-left-sg* skeleton-group) (define-extern *breakaway-mid-sg* skeleton-group) (define-extern *breakaway-right-sg* skeleton-group) -(define-extern breakaway-idle (state breakaway)) ;; unknown type -(define-extern breakaway-fall (state breakaway)) ;; unknown type -(define-extern breakaway-about-to-fall (state breakaway)) ;; unknown type (define-extern *mis-bone-bridge-sg* skeleton-group) -(define-extern mis-bone-bridge-fall (state symbol mis-bone-bridge)) ;; unknown type -(define-extern mis-bone-bridge-idle (state mis-bone-bridge)) ;; unknown type -(define-extern mis-bone-bridge-hit (state mis-bone-bridge)) ;; unknown type -(define-extern mis-bone-bridge-bump (state mis-bone-bridge)) ;; unknown type (define-extern *windturbine-sg* skeleton-group) -(define-extern windturbine-idle (state windturbine)) ;; unknown type (define-extern *boatpaddle-sg* skeleton-group) -(define-extern boatpaddle-idle (state boatpaddle)) ;; unknown type ;; ---------------------- diff --git a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc index 8d356bbd75..fc5cd0dc74 100644 --- a/decompiler/config/jak1_ntsc_black_label/label_types.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/label_types.jsonc @@ -1980,6 +1980,11 @@ "tie-near": [ ["L91", "vu-function"] ], + + "sequence-a-village1": [ + ["L38", "vector"] + ], + // please do not add things after this entry! git is dumb. "object-file-that-doesnt-actually-exist-and-i-just-put-this-here-to-prevent-merge-conflicts-with-this-file": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc index c44584b662..3c00c6088e 100644 --- a/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/stack_structures.jsonc @@ -6000,5 +6000,17 @@ [96, "vector"] ], + "(method 32 sequenceA-village1)": [ + [16, "event-message-block"] + ], + + "(event play-anim sequenceA-village1)": [ + [16, "event-message-block"] + ], + + "(exit play-anim sequenceA-village1)": [ + [16, "event-message-block"] + ], + "placeholder-do-not-add-below!": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc index 2b5f2b520e..d04d57e416 100644 --- a/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/type_casts.jsonc @@ -2566,42 +2566,23 @@ ], "(code target-demo)": [ - [66, "v1", "handle"], - [69, "v1", "handle"], - [96, "v1", "handle"], - [99, "v1", "handle"], - [126, "v1", "handle"], - [163, "v1", "handle"], - [196, "v1", "handle"], - [229, "v1", "handle"], - [262, "v1", "handle"], - [293, "v1", "handle"], - [323, "v1", "handle"], - [357, "v1", "handle"], - [390, "v1", "handle"], - [423, "v1", "handle"], - [456, "v1", "handle"], - [487, "v1", "handle"], - [518, "v1", "handle"], - [548, "v1", "handle"], - [578, "v1", "handle"], - [129, "v1", "handle"], - [166, "v1", "handle"], - [199, "v1", "handle"], - [232, "v1", "handle"], - [261, "v1", "handle"], - [265, "v1", "handle"], - [296, "v1", "handle"], - [298, "v1", "handle"], - [326, "v1", "handle"], - [360, "v1", "handle"], - [393, "v1", "handle"], - [426, "v1", "handle"], - [459, "v1", "handle"], - [490, "v1", "handle"], - [521, "v1", "handle"], - [551, "v1", "handle"], - [581, "v1", "handle"] + [[65, 73], "v1", "handle"], + [[95, 103], "v1", "handle"], + [[125, 133], "v1", "handle"], + [[162, 170], "v1", "handle"], + [[195, 203], "v1", "handle"], + [[228, 236], "v1", "handle"], + [[261, 269], "v1", "handle"], + [[292, 300], "v1", "handle"], + [[322, 330], "v1", "handle"], + [[356, 364], "v1", "handle"], + [[389, 397], "v1", "handle"], + [[422, 430], "v1", "handle"], + [[455, 463], "v1", "handle"], + [[486, 494], "v1", "handle"], + [[517, 525], "v1", "handle"], + [[548, 555], "v1", "handle"], + [[577, 585], "v1", "handle"] ], "target-has-all-the-cells?": [[17, "v1", "float"]], @@ -4536,12 +4517,10 @@ ], "mistycam-spawn": [ - [69, "v1", "handle"], - [72, "v1", "handle"], - [85, "v1", "handle"], - [88, "v1", "handle"], - [103, "s5", "handle"], - [106, "s5", "handle"] + [[68, 76], "v1", "handle"], + [80, "v1", "pov-camera"], + [[84, 92], "v1", "handle"], + [[102, 110], "s5", "handle"] ], "(code battlecontroller-play-intro-camera misty-battlecontroller)": [ @@ -7375,5 +7354,21 @@ [53, "v1", "snowcam"] ], + "(method 32 sequenceA-village1)": [ + [[103, 111], "v1", "handle"], + [[125, 133], "v1", "handle"] + ], + + "(exit play-anim sequenceA-village1)": [ + [[12, 20], "v1", "handle"], + [[28, 36], "v1", "handle"] + ], + + "(event play-anim sequenceA-village1)": [ + [[64, 72], "v1", "handle"], + [[86, 94], "v1", "handle"], + [[108, 116], "v1", "handle"] + ], + "placeholder-do-not-add-below": [] } diff --git a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc index 38b4796b87..cabf8cf96e 100644 --- a/decompiler/config/jak1_ntsc_black_label/var_names.jsonc +++ b/decompiler/config/jak1_ntsc_black_label/var_names.jsonc @@ -3863,5 +3863,57 @@ } }, + "(code target-demo)": { + "vars": { + "v1-12": ["v1-12", "handle"], + "v1-24": ["v1-24", "handle"], + "v1-32": ["v1-32", "handle"], + "v1-38": ["v1-38", "handle"], + "v1-44": ["v1-44", "handle"], + "v1-50": ["v1-50", "handle"], + "v1-56": ["v1-56", "handle"], + "v1-62": ["v1-62", "handle"], + "v1-70": ["v1-70", "handle"], + "v1-76": ["v1-76", "handle"], + "v1-82": ["v1-82", "handle"], + "v1-88": ["v1-88", "handle"], + "v1-94": ["v1-94", "handle"], + "v1-100": ["v1-100", "handle"], + "v1-106": ["v1-106", "handle"], + "v1-112": ["v1-112", "handle"], + "v1-18": ["v1-18", "handle"] + } + }, + + "(method 32 sequenceA-village1)": { + "vars": { + "v1-27": ["v1-27", "handle"], + "v1-34": ["v1-34", "handle"] + } + }, + + "(exit play-anim sequenceA-village1)": { + "vars": { + "v1-4": ["v1-4", "handle"], + "v1-10": ["v1-10", "handle"] + } + }, + + "(event play-anim sequenceA-village1)": { + "vars": { + "v1-12": ["v1-12", "handle"], + "v1-19": ["v1-19", "handle"], + "v1-26": ["v1-26", "handle"] + } + }, + + "mistycam-spawn": { + "vars": { + "v1-12": ["v1-12", "handle"], + "v1-15": ["v1-15", "handle"], + "s5-2": ["s5-2", "handle"] + } + }, + "aaaaaaaaaaaaaaaaaaaaaaa": {} } diff --git a/goal_src/engine/camera/cam-debug-h.gc b/goal_src/engine/camera/cam-debug-h.gc index d7bb750073..1bcdf3e620 100644 --- a/goal_src/engine/camera/cam-debug-h.gc +++ b/goal_src/engine/camera/cam-debug-h.gc @@ -5,6 +5,14 @@ ;; name in dgo: cam-debug-h ;; dgos: GAME, ENGINE +;; TODO - for misty-obs +(define-extern *camera-old-level* string) ;; unknown type +(define-extern *camera-old-cpu* int) ;; unknown type +(define-extern *camera-old-vu* int) ;; unknown type +(define-extern *camera-old-tfrag-bytes* int) ;; unknown type +(define-extern *camera-old-stat-string-tfrag* string) ;; unknown type +(define-extern *camera-old-stat-string-tfrag-near* string) ;; unknown type +(define-extern *camera-old-stat-string-total* string) ;; unknown type ;; TODO - for cam-layout (define-extern camera-line-setup (function vector4w none)) (define-extern camera-line-draw (function vector vector symbol)) diff --git a/goal_src/levels/demo/demo-obs.gc b/goal_src/levels/demo/demo-obs.gc index bb61bb8bbc..f0beab9891 100644 --- a/goal_src/levels/demo/demo-obs.gc +++ b/goal_src/levels/demo/demo-obs.gc @@ -5,3 +5,164 @@ ;; name in dgo: demo-obs ;; dgos: DEM, L1 +(define-extern static-screen-spawn (function int int int int int symbol target (pointer process))) ;; target may differ + +;; DECOMP BEGINS + +(defstate target-demo (target) + :event + target-generic-event-handler + :code + (behavior () + (if *time-of-day-proc* + (set! (-> *time-of-day-proc* 0 hour) 12) + ) + (set-setting! *setting-control* self 'allow-pause #f 0.0 0) + (set-setting! *setting-control* self 'allow-progress #f 0.0 0) + (copy-settings-from-target! *setting-control*) + (ja-channel-set! 0) + (ja-post) + (load-state-want-levels 'demo 'village1) + (load-state-want-vis 'vi1) + (case (scf-get-territory) + ((2) + (let ((gp-0 (ppointer->handle (static-screen-spawn 6 #x27c00000 #x27c00100 #x27c00200 1500 #f self)))) + (while (handle->process gp-0) + (suspend) + ) + ) + (let ((gp-1 (ppointer->handle (static-screen-spawn 7 #x27d00000 #x27d00100 #x27d00200 1500 #f self)))) + (while (handle->process gp-1) + (suspend) + ) + ) + (let ((gp-2 (ppointer->handle (static-screen-spawn 8 #x2f000000 #x2f000100 #x2f000200 #x4650 #t self)))) + (while (handle->process gp-2) + (suspend) + ) + ) + ) + ((1) + (case (-> *setting-control* current language) + (((language-enum french)) + (let ((gp-3 (ppointer->handle (static-screen-spawn 10 #x63f00000 #x63f00100 #x63f00200 1500 #f self)))) + (while (handle->process gp-3) + (suspend) + ) + ) + ) + (((language-enum german)) + (let ((gp-4 (ppointer->handle (static-screen-spawn 11 #x64000000 #x64000100 #x64000200 1500 #f self)))) + (while (handle->process gp-4) + (suspend) + ) + ) + ) + (((language-enum italian)) + (let ((gp-5 (ppointer->handle (static-screen-spawn 12 #x64100000 #x64100100 #x64100200 1500 #f self)))) + (while (handle->process gp-5) + (suspend) + ) + ) + ) + (((language-enum spanish)) + (let ((gp-6 (ppointer->handle (static-screen-spawn 13 #x64200000 #x64200100 #x64200200 1500 #f self)))) + (while (handle->process gp-6) + (suspend) + ) + ) + ) + (else + (let ((gp-7 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self)))) + (while (handle->process gp-7) + (suspend) + ) + ) + ) + ) + (let ((gp-8 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self)))) + (while (handle->process gp-8) + (suspend) + ) + ) + (case (-> *setting-control* current language) + (((language-enum french)) + (let ((gp-9 (ppointer->handle (static-screen-spawn 15 #x64400000 #x64400100 #x64400200 #x4650 #t self)))) + (while (handle->process gp-9) + (suspend) + ) + ) + ) + (((language-enum german)) + (let ((gp-10 (ppointer->handle (static-screen-spawn 16 #x64500000 #x64500100 #x64500200 #x4650 #t self)))) + (while (handle->process gp-10) + (suspend) + ) + ) + ) + (((language-enum italian)) + (let ((gp-11 (ppointer->handle (static-screen-spawn 17 #x64600000 #x64600100 #x64600200 #x4650 #t self)))) + (while (handle->process gp-11) + (suspend) + ) + ) + ) + (((language-enum spanish)) + (let ((gp-12 (ppointer->handle (static-screen-spawn 18 #x64700000 #x64700100 #x64700200 #x4650 #t self)))) + (while (handle->process gp-12) + (suspend) + ) + ) + ) + (else + (let ((gp-13 (ppointer->handle (static-screen-spawn 14 #x64300000 #x64300100 #x64300200 #x4650 #t self)))) + (while (handle->process gp-13) + (suspend) + ) + ) + ) + ) + ) + (else + (let ((gp-14 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self)))) + (while (handle->process gp-14) + (suspend) + ) + ) + (let ((gp-15 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self)))) + (while (handle->process gp-15) + (suspend) + ) + ) + (let ((gp-16 (ppointer->handle (static-screen-spawn 4 #x5cf00000 #x5cf00100 #x5cf00200 #x4650 #t self)))) + (while (handle->process gp-16) + (suspend) + ) + ) + ) + ) + (let ((gp-17 (get-process *default-dead-pool* process #x4000))) + (when gp-17 + (let ((t9-26 (method-of-type process activate))) + (t9-26 gp-17 *default-pool* 'process (the-as pointer #x70004000)) + ) + (run-next-time-in-process gp-17 (lambda () + (set! (-> *setting-control* default bg-a) 0.0) + (start 'play (get-continue-by-name *game-info* "village1-demo-convo")) + ) + ) + (-> gp-17 ppointer) + ) + ) + (while #t + (suspend) + ) + (none) + ) + :post + target-no-move-post + ) + + + + diff --git a/goal_src/levels/misty/misty-obs.gc b/goal_src/levels/misty/misty-obs.gc index 055e2edd65..ec404de045 100644 --- a/goal_src/levels/misty/misty-obs.gc +++ b/goal_src/levels/misty/misty-obs.gc @@ -5,3 +5,2313 @@ ;; name in dgo: misty-obs ;; dgos: L1, MIS +;; DECOMP BEGINS + +(set! (-> *part-group-id-table* 191) + (new 'static 'sparticle-launch-group + :length 16 + :duration #xbb8 + :linger-duration #x5dc + :name "group-windturbine-particles" + :launcher + (new 'static 'inline-array sparticle-group-item 16 + (sp-item 908 :fade-after (meters 60.0) :period 1212 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 5790 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 4988 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 3510 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 1837 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 1650 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 3780 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 2220 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 8235 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 3336 :length 10) + (sp-item 910 :fade-after (meters 60.0) :period 150 :length 75) + (sp-item 910 :fade-after (meters 120.0) :period 150 :length 75) + (sp-item 910 :fade-after (meters 180.0) :period 150 :length 75) + (sp-item 911 :fade-after (meters 60.0) :period 150 :length 75 :offset 75) + (sp-item 911 :fade-after (meters 120.0) :period 150 :length 75 :offset 75) + (sp-item 911 :fade-after (meters 180.0) :period 150 :length 75 :offset 75) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +(set! (-> *part-id-table* 910) + (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 0.066 0.066 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -2.0) (meters 0.5) 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 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 0.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (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-a 0.21333334) + (sp-flt spt-accel-y 1.2288) + (sp-int-plain-rnd spt-timer 600 1499 1) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 912) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 912) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 913) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 913) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-vel-x (meters -0.06666667)) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-scalevel-x (meters 0.016666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.2) + (sp-flt spt-accel-x 1.3653333) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 911) + (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 0.066 0.066 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -2.0) (meters 0.5) 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 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 0.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (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-a 0.21333334) + (sp-flt spt-accel-y 1.2288) + (sp-int-plain-rnd spt-timer 600 1499 1) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 912) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 908) (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 8.0 24.0 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -4.5) (meters 1.0) 1.0) + (sp-flt spt-z -2048.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 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.08) 1.0) + (sp-flt spt-scalevel-x (meters -0.00055555557)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.2) + (sp-flt spt-fade-b -0.2) + (sp-flt spt-fade-a -0.6) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.94) + (sp-int-plain-rnd spt-timer 90 59 1) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees -220.0) (degrees 110.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 909) (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 8.0 24.0 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -4.5) (meters 1.0) 1.0) + (sp-flt spt-z 2048.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 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.08) 1.0) + (sp-flt spt-scalevel-x (meters -0.00055555557)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.2) + (sp-flt spt-fade-b -0.2) + (sp-flt spt-fade-a -0.6) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.94) + (sp-int-plain-rnd spt-timer 90 59 1) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees -110.0) (degrees 110.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 192) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-01" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 916 :period 780 :length 64) + (sp-item 917 :period 780 :length 32 :offset 65131) + (sp-item 918 :period 780 :length 32 :offset 65131) + (sp-item 919 :period 780 :length 32 :offset 65131) + (sp-item 920 :period 780 :length 32 :offset 65056) + (sp-item 921 :period 780 :length 32 :offset 64996) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +(set! (-> *part-id-table* 921) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 920) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 919) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 918) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 922) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 917) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 914) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 915) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.026666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 923) + (sp-rnd-flt spt-conerot-x (degrees 70.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 2.0)) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 923) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -3.2) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 916) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 193) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-03" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 924 :period 780 :length 64) + (sp-item 925 :period 780 :length 32 :offset 65131) + (sp-item 926 :period 780 :length 32 :offset 65131) + (sp-item 927 :period 780 :length 32 :offset 65131) + (sp-item 928 :period 780 :length 32 :offset 65056) + (sp-item 929 :period 780 :length 32 :offset 64996) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +(set! (-> *part-id-table* 929) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 928) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 927) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 926) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 925) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 924) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 194) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-02" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 930 :period 780 :length 64) + (sp-item 931 :period 780 :length 32 :offset 65131) + (sp-item 932 :period 780 :length 32 :offset 65131) + (sp-item 933 :period 780 :length 32 :offset 65131) + (sp-item 934 :period 780 :length 32 :offset 65056) + (sp-item 935 :period 780 :length 32 :offset 64996) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +(set! (-> *part-id-table* 935) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 934) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 933) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 932) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 931) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -90.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 930) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 195) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-07" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 936 :period 780 :length 64) + (sp-item 937 :period 780 :length 32 :offset 65131) + (sp-item 938 :period 780 :length 32 :offset 65131) + (sp-item 939 :period 780 :length 32 :offset 65131) + (sp-item 940 :period 780 :length 32 :offset 65056) + (sp-item 941 :period 780 :length 32 :offset 64966) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +(set! (-> *part-id-table* 941) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 940) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 939) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 938) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 937) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -90.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 936) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 196) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :name "group-misty-boat-paddle" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 944 :fade-after (meters 100.0))) + :bounds (new 'static 'sphere :w 61440.0) + ) + ) + +(set! (-> *part-id-table* 944) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x18 :page #x2)) + (sp-flt spt-num 0.8) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-z 20480.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 5.5) (meters 4.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 48.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters -0.016666668) (meters 0.033333335) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.2) 1 72.81778) + (sp-flt spt-fade-a 0.53333336) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 945) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 945) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.53333336) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 943) (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 6.0) + (sp-rnd-flt spt-x (meters -9.0) (meters 18.0) 1.0) + (sp-flt spt-scale-x (meters 0.5)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-flt spt-g 96.0) + (sp-rnd-flt spt-b 100.0 28.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.001) (meters 0.033333335) 1.0) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 210) + (sp-launcher-by-id spt-next-launcher 946) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-int-flt spt-conerot-y (degrees 0.0) 3 8192.0) + (sp-flt spt-conerot-z (degrees 90.0)) + (sp-flt spt-conerot-radius (meters 9.0)) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 946) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -2.0) (sp-end)) + ) + ) + +(set! (-> *part-id-table* 942) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x18 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-rnd-flt spt-z 24576.0 16384.0 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-rnd-int-flt spt-rot-z (degrees 0.0) 1 32768.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 0.0) + (sp-rnd-flt spt-vel-y (meters 0.001) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 947) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 947) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 948) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 948) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end)) + ) + ) + +(deftype boatpaddle (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + (:states + boatpaddle-idle + ) + ) + + +(defskelgroup *boatpaddle-sg* boatpaddle + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 18) + :longest-edge (meters 0) + ) + +(defstate boatpaddle-idle (boatpaddle) + :code + (behavior () + (local-vars (s4-0 int)) + (while #t + (quaternion-rotate-local-x! + (-> self root quat) + (-> self root quat) + (* -5461.3335 (-> *display* seconds-per-frame)) + ) + (let ((gp-0 (-> self part)) + (s5-0 (-> self root trans)) + ) + (let ((f30-0 1274.3112) + (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 + ) + -1 + ) + ) + ) + (set! (-> *part-id-table* 943 init-specs 17 initial-valuef) + (+ f30-0 (- f28-0 (* (the float (the int (/ (the float s4-0) 8192.0))) 8192.0))) + ) + ) + (spawn gp-0 s5-0) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior boatpaddle) ja-post) + ) + +(defmethod init-from-entity! boatpaddle ((obj boatpaddle) (arg0 entity-actor)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *boatpaddle-sg* '()) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 196) obj)) + (go boatpaddle-idle) + (none) + ) + +(deftype windturbine (process-drawable) + ((spawn-particle-enable symbol :offset-assert 176) + (angle-speed float :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + (:states + windturbine-idle + ) + ) + + +(defskelgroup *windturbine-sg* windturbine + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 3 0 7) + :longest-edge (meters 0) + ) + +(defstate windturbine-idle (windturbine) + :code + (behavior () + (while #t + (let* ((a0-0 (-> self root trans)) + (f2-0 + (-> *wind-work* + wind-force + (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) + ) + ) + (f0-5 (* 0.992 (+ (-> self angle-speed) (* 3.6408892 f2-0)))) + ) + (set! (-> self angle-speed) (fmin 65536.0 f0-5)) + ) + (quaternion-rotate-local-y! + (-> self root quat) + (-> self root quat) + (* -1.0 (-> *display* seconds-per-frame) (-> self angle-speed)) + ) + (if (-> self spawn-particle-enable) + (spawn (-> self part) (-> self root trans)) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior windturbine) ja-post) + ) + +(defmethod init-from-entity! windturbine ((obj windturbine) (arg0 entity-actor)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj spawn-particle-enable) (= (res-lump-value arg0 'particle-select uint128) 1)) + (if (-> obj spawn-particle-enable) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 191) obj)) + ) + (initialize-skeleton obj *windturbine-sg* '()) + (go windturbine-idle) + (none) + ) + +(deftype mis-bone-bridge (process-drawable) + ((root-override collide-shape-moving :offset 112) + (particle-group sparticle-launch-group :offset-assert 176) + (player-attack-id int32 :offset-assert 180) + (fall-anim-index int32 :offset-assert 184) + (hit-points int8 :offset-assert 188) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbd + :flag-assert #x14005000bd + (:states + mis-bone-bridge-bump + (mis-bone-bridge-fall symbol) + mis-bone-bridge-hit + mis-bone-bridge-idle + ) + ) + + +(defskelgroup *mis-bone-bridge-sg* mis-bone-bridge + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 1 0 20) + :longest-edge (meters 0) + ) + +(defbehavior mis-bone-bridge-event-handler mis-bone-bridge ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (let ((s5-0 (-> arg3 param 2)) + (gp-0 (vector-x-quaternion! (new-stack-vector0) (-> self root-override quat))) + (a0-4 (vector-z-quaternion! (new-stack-vector0) (-> self root-override quat))) + (v1-4 (vector-! (new-stack-vector0) (-> *target* control trans) (-> self root-override trans))) + ) + 0.0 + 0.0 + (when (!= s5-0 (-> self player-attack-id)) + (set! (-> self player-attack-id) (the-as int s5-0)) + (let ((f0-3 (vector-dot gp-0 v1-4)) + (f1-1 (vector-dot a0-4 v1-4)) + ) + (cond + ((and (< 0.0 f1-1) (< (fabs (* 0.5 f0-3)) f1-1)) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 2) + (set! (-> a1-9 message) 'query) + (set! (-> a1-9 param 0) (the-as uint 'powerup)) + (set! (-> a1-9 param 1) (the-as uint 2)) + (if (send-event-function *target* a1-9) + (go mis-bone-bridge-fall #f) + (go mis-bone-bridge-hit) + ) + ) + ) + (else + (go mis-bone-bridge-bump) + #f + ) + ) + ) + ) + ) + ) + ) + ) + +(defstate mis-bone-bridge-idle (mis-bone-bridge) + :event + mis-bone-bridge-event-handler + :code + (behavior () + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 num-func) num-func-identity) + (set! (-> v1-2 frame-num) 0.0) + ) + (while #t + (if (and *target* (>= 32768.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (level-hint-spawn + (game-text-id misty-bone-bridge-hint) + "sksp0435" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) transform-post) + ) + +(defstate mis-bone-bridge-bump (mis-bone-bridge) + :event + mis-bone-bridge-event-handler + :trans + (the-as (function none :behavior mis-bone-bridge) rider-trans) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-0 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim (-> self draw art-group data 6)) 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!) + ) + ) + (go mis-bone-bridge-idle) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) rider-post) + ) + +(defstate mis-bone-bridge-hit (mis-bone-bridge) + :event + mis-bone-bridge-event-handler + :trans + (the-as (function none :behavior mis-bone-bridge) rider-trans) + :code + (behavior () + (+! (-> self hit-points) -1) + (if (zero? (-> self hit-points)) + (go mis-bone-bridge-fall #f) + ) + (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!) + ) + ) + (go mis-bone-bridge-idle) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) rider-post) + ) + +(defstate mis-bone-bridge-fall (mis-bone-bridge) + :trans + (the-as (function none :behavior mis-bone-bridge) rider-trans) + :code + (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not arg0) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-2 (method-of-type part-tracker activate))) + (t9-2 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process gp-1 part-tracker-init (-> self particle-group) -1 #f #f #f (-> self root-override trans)) + (-> gp-1 ppointer) + ) + ) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index)))) + (set! (-> a0-5 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index))) data 0 length) -1) + ) + ) + (set! (-> a0-5 param 1) 1.0) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! + a0-5 + (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (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-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (let ((gp-2 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-2 + (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index))) + 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 + ) + -1 + ) + ) + ) + ) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) rider-post) + ) + +(defmethod init-from-entity! mis-bone-bridge ((obj mis-bone-bridge) (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-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 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 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 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 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 49152.0 0.0 49152.0) + (append-prim s3-0 s2-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) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *mis-bone-bridge-sg* '()) + (let ((v1-40 (res-lump-value arg0 'animation-select uint128))) + (cond + ((= (the-as uint v1-40) 1) + (set! (-> obj fall-anim-index) 2) + (set! (-> obj particle-group) (-> *part-group-id-table* 192)) + ) + ((= (the-as uint v1-40) 2) + (set! (-> obj fall-anim-index) 3) + (set! (-> obj particle-group) (-> *part-group-id-table* 194)) + ) + ((= (the-as uint v1-40) 3) + (set! (-> obj fall-anim-index) 2) + (set! (-> obj particle-group) (-> *part-group-id-table* 193)) + ) + ((= (the-as uint v1-40) 7) + (set! (-> obj fall-anim-index) 4) + (set! (-> obj particle-group) (-> *part-group-id-table* 195)) + ) + (else + (set! (-> obj fall-anim-index) 2) + (set! (-> obj particle-group) (-> *part-group-id-table* 192)) + ) + ) + ) + (set! (-> obj hit-points) 3) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (go mis-bone-bridge-fall #t) + (go mis-bone-bridge-idle) + ) + (none) + ) + +(deftype breakaway (process-drawable) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + (:methods + (init! (_type_ res-lump int) none 20) + (go-idle (_type_) none 21) + ) + (:states + breakaway-about-to-fall + breakaway-fall + breakaway-idle + ) + ) + + +(defstate breakaway-idle (breakaway) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (send-event arg0 'no-look-around 450) + (go breakaway-about-to-fall) + ) + ) + ) + :code + (the-as (function none :behavior breakaway) anim-loop) + :post + (the-as (function none :behavior breakaway) transform-post) + ) + +(defun actor-wait-for-period ((arg0 int)) + (let ((s5-0 (-> *display* base-frame-counter))) + (while (< (- (-> *display* base-frame-counter) s5-0) arg0) + (suspend) + ) + ) + #f + ) + +(defstate breakaway-about-to-fall (breakaway) + :code + (behavior () + (sound-play-by-name (static-sound-name "falling-bones") (new-sound-id) 1024 0 0 1 #t) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 281) + (-> self root-override trans) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + (let ((gp-1 #f) + (s5-1 (-> *display* base-frame-counter)) + ) + (while #t + (let ((s4-0 (-> self skel root-channel 0))) + (set! (-> s4-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> s4-0 param 0) (ja-aframe 15.0 0)) + (set! (-> s4-0 param 1) 1.0) + (set! (-> s4-0 frame-num) (ja-aframe 1.0 0)) + (joint-control-channel-group! + s4-0 + (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (when (and (not gp-1) (>= (- (-> *display* base-frame-counter) s5-1) 45)) + (set! gp-1 #t) + (send-to-next-and-prev (-> self link) 'touch) + ) + (if (>= (- (-> *display* base-frame-counter) s5-1) 75) + (go breakaway-fall) + ) + (suspend) + (let ((s4-1 (-> self skel root-channel 0))) + (set! (-> s4-1 param 0) (ja-aframe 15.0 0)) + (set! (-> s4-1 param 1) 1.0) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior breakaway) rider-post) + ) + +(defstate breakaway-fall (breakaway) + :code + (behavior () + (let ((f30-0 0.0) + (f28-0 0.0) + (f26-0 (* 0.1 (- (-> *standard-dynamics* gravity-length)))) + ) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> gp-0 param 0) (ja-aframe 32.0 0)) + (set! (-> gp-0 param 1) 0.4) + (set! (-> gp-0 frame-num) (ja-aframe 16.0 0)) + (joint-control-channel-group! + gp-0 + (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (+! f30-0 (* f28-0 (-> *display* seconds-per-frame))) + (+! f28-0 (* f26-0 (-> *display* seconds-per-frame))) + (+! (-> self root-override trans y) f30-0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 32.0 0)) + (set! (-> gp-1 param 1) 0.4) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (dummy-18 self) + (none) + ) + :post + (the-as (function none :behavior breakaway) rider-post) + ) + +(defmethod init! breakaway ((obj breakaway) (arg0 res-lump) (arg1 int)) + (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 ((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 transform-index) arg1) + (set-vector! (-> s2-0 local-sphere) 8192.0 -4096.0 8192.0 16384.0) + (set-root-prim! s4-0 s2-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 link) (new 'process 'actor-link-info obj)) + (process-drawable-from-entity! obj (the-as entity-actor arg0)) + (none) + ) + +(defmethod go-idle breakaway ((obj breakaway)) + (go breakaway-idle) + (none) + ) + +(deftype breakaway-right (breakaway) + () + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + ) + + +(deftype breakaway-mid (breakaway) + () + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + ) + + +(deftype breakaway-left (breakaway) + () + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + ) + + +(defskelgroup *breakaway-right-sg* breakaway-right + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +(defskelgroup *breakaway-mid-sg* breakaway-mid + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +(defskelgroup *breakaway-left-sg* breakaway-left + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +(defmethod init-from-entity! breakaway-right ((obj breakaway-right) (arg0 entity-actor)) + (init! obj arg0 3) + (initialize-skeleton obj *breakaway-right-sg* '()) + (go-idle obj) + (none) + ) + +(defmethod init-from-entity! breakaway-mid ((obj breakaway-mid) (arg0 entity-actor)) + (init! obj arg0 3) + (initialize-skeleton obj *breakaway-mid-sg* '()) + (go-idle obj) + (none) + ) + +(defmethod init-from-entity! breakaway-left ((obj breakaway-left) (arg0 entity-actor)) + (init! obj arg0 3) + (initialize-skeleton obj *breakaway-left-sg* '()) + (go-idle obj) + (none) + ) + +(define *bone-platform-constants* (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 3.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :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 5 + :mass 2.0 + :inertial-tensor-x (meters 3.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.0) + :cm-joint-y (meters -3.0) + :idle-distance (meters 50.0) + :platform #t + :sound-name "mud-plat" + ) + ) + +(deftype bone-platform (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + ) + :heap-base #x280 + :method-count-assert 35 + :size-assert #x2f0 + :flag-assert #x23028002f0 + ) + + +(defskelgroup *mis-bone-platform-sg* mis-bone-platform + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + ) + +(defmethod TODO-RENAME-27 bone-platform ((obj bone-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 (* 20.0 (fmax 0.0 (fmin 4096.0 (+ -819.2 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 bone-platform ((obj bone-platform) (arg0 float)) + ((the-as (function rigid-body-platform basic none) (find-parent-method bone-platform 23)) + obj + (the-as basic arg0) + ) + (TODO-RENAME-27 obj (-> obj anchor-point)) + 0 + (none) + ) + +(defstate rigid-body-platform-idle (bone-platform) + :virtual #t + :enter + (behavior () (ja-channel-set! 0) (none)) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior bone-platform) ja-post) + ) + +(defstate rigid-body-platform-float (bone-platform) + :virtual #t + :event + (the-as + (function process int symbol event-message-block object :behavior bone-platform) + rigid-body-platform-event-handler + ) + :trans + (behavior () + (-> self entity extra trans y) + (cond + ((or (not *target*) (< (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (let ((f30-1 -4096.0)) + (set! (-> self float-height-offset) + (seek (-> self float-height-offset) f30-1 (* 2048.0 (-> *display* seconds-per-frame))) + ) + (if (= (-> self float-height-offset) f30-1) + (go-virtual rigid-body-platform-idle) + ) + ) + ) + (else + (set! (-> self float-height-offset) + (seek (-> self float-height-offset) 4096.0 (* 2048.0 (-> *display* seconds-per-frame))) + ) + ) + ) + (none) + ) + :code + (behavior () + (ja-channel-push! 1 30) + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior bone-platform) rigid-body-platform-post) + ) + +(defmethod TODO-RENAME-30 bone-platform ((obj bone-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)))) + (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) 3) + (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) + ) + 0 + (none) + ) + +(defmethod TODO-RENAME-31 bone-platform ((obj bone-platform)) + (initialize-skeleton obj *mis-bone-platform-sg* '()) + (TODO-RENAME-29 obj *bone-platform-constants*) + (set! (-> obj float-height-offset) -4096.0) + (if (name= (-> obj name) "bone-platform-5") + (set-vector! (-> obj root-overlay scale) 0.8 1.0 0.8 1.0) + ) + (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) -12288.0) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + 0 + (none) + ) + +(deftype mistycam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + + +(defskelgroup *mistycam-sg* mistycam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 0) + ) + +(defun mistycam-spawn () + (with-pp + (let ((gp-0 (entity-actor-lookup (-> pp entity) 'alt-actor 0))) + (when gp-0 + (let* ((s5-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 + (ppointer->handle + (when s5-0 + (let ((t9-2 (method-of-type pov-camera activate))) + (t9-2 (the-as pov-camera s5-0) pp 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + (-> gp-0 extra trans) + *mistycam-sg* + (new 'static 'spool-anim :name "mistycam-cannon" :index 5 :parts 1 :command-list '()) + 0 + #f + '() + ) + (-> s5-0 ppointer) + ) + ) + ) + (s5-1 (get-process *default-dead-pool* fuel-cell #x4000)) + (s5-2 + (ppointer->handle (when s5-1 + (let ((t9-5 (method-of-type fuel-cell activate))) + (t9-5 (the-as fuel-cell s5-1) pp 'fuel-cell (the-as pointer #x70004000)) + ) + (run-now-in-process s5-1 fuel-cell-init-as-clone gp-1 (-> pp entity extra perm task)) + (-> s5-1 ppointer) + ) + ) + ) + ) + (let ((v1-13 (handle->process gp-1))) + (if v1-13 + (set! (-> (the-as pov-camera v1-13) notify-handle) (the-as handle s5-2)) + ) + ) + (while (handle->process gp-1) + (suspend) + ) + (send-event (handle->process s5-2) 'stop-cloning) + ) + ) + ) + 0 + (none) + ) + ) + +(deftype misty-battlecontroller (battlecontroller) + () + :heap-base #x210 + :method-count-assert 29 + :size-assert #x27c + :flag-assert #x1d0210027c + ) + + +(defstate battlecontroller-play-intro-camera (misty-battlecontroller) + :virtual #t + :code + (behavior () + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 + (ppointer->handle + (when gp-0 + (let ((t9-1 (method-of-type pov-camera activate))) + (t9-1 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 pov-camera-init-by-other (-> self root trans) *mistycam-sg* "lurkerattack" 0 #f '()) + (-> gp-0 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-1)) + (suspend) + ) + ) + (go-virtual battlecontroller-active) + (none) + ) + ) + +(defmethod TODO-RENAME-27 misty-battlecontroller ((obj misty-battlecontroller)) + ((the-as (function battlecontroller none) (find-parent-method misty-battlecontroller 27)) obj) + (set! (-> obj misty-ambush-collision-hack) #t) + 0 + (none) + ) + +(defun-debug misty-cam-restore () + (let ((a0-0 (new-stack-vector0)) + (a1-0 (new-stack-matrix0)) + ) + (set! (-> a0-0 x) -711702.3) + (set! (-> a0-0 y) 268833.34) + (set! (-> a0-0 z) 4193524.2) + (set! (-> a0-0 w) 1.0) + (set! (-> a1-0 vector 0 x) -0.6991) + (set! (-> a1-0 vector 0 y) 0.0) + (set! (-> a1-0 vector 0 z) -0.7149) + (set! (-> a1-0 vector 0 w) 0.0) + (set! (-> a1-0 vector 1 x) 0.3474) + (set! (-> a1-0 vector 1 y) 0.8739) + (set! (-> a1-0 vector 1 z) -0.3398) + (set! (-> a1-0 vector 1 w) 0.0) + (set! (-> a1-0 vector 2 x) 0.6248) + (set! (-> a1-0 vector 2 y) -0.486) + (set! (-> a1-0 vector 2 z) -0.611) + (set! (-> a1-0 vector 2 w) 0.0) + (set! (-> a1-0 vector 3 x) 0.0) + (set! (-> a1-0 vector 3 y) 0.0) + (set! (-> a1-0 vector 3 z) 0.0) + (set! (-> a1-0 vector 3 w) 1.0) + (debug-set-camera-pos-rot! a0-0 a1-0) + ) + (send-event *camera* 'set-fov 11650.845) + (clear *camera-old-level*) + (format *camera-old-level* "misty") + (set! *camera-old-cpu* 6867) + (set! *camera-old-vu* #x4b0f) + (set! *camera-old-tfrag-bytes* #x1ec490) + (clear *camera-old-stat-string-tfrag*) + (clear *camera-old-stat-string-tfrag-near*) + (clear *camera-old-stat-string-total*) + (let ((v0-7 #t)) + (set! *display-camera-old-stats* v0-7) + v0-7 + ) + ) + +(deftype boat-fuelcell (process-drawable) + ((play-cutscene? symbol :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + (:states + boat-fuelcell-die + boat-fuelcell-idle + boat-fuelcell-spawn + ) + ) + + +(defstate boat-fuelcell-idle (boat-fuelcell) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('task-complete) + (set! (-> self play-cutscene?) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (go boat-fuelcell-spawn) + ) + ) + ) + :code + (the-as (function none :behavior boat-fuelcell) anim-loop) + ) + +(defstate boat-fuelcell-spawn (boat-fuelcell) + :event + (the-as + (function process int symbol event-message-block object :behavior boat-fuelcell) + process-drawable-fuel-cell-handler + ) + :code + (behavior () + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #f) + (when (and *target* (-> self play-cutscene?)) + (ambient-hint-spawn "gamcam02" (the-as vector #f) *entity-pool* 'camera) + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 (ppointer->handle (when gp-0 + (let ((t9-3 (method-of-type pov-camera activate))) + (t9-3 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + pov-camera-init-by-other + (-> self root trans) + *mistycam-sg* + "mistycam-balloon-fuel-cell" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-1)) + (suspend) + ) + ) + ) + (while (-> self child) + (suspend) + ) + (go boat-fuelcell-die) + (none) + ) + ) + +(defstate boat-fuelcell-die (boat-fuelcell) + :code + (behavior () (dummy-18 self) (none)) + ) + +(defmethod init-from-entity! boat-fuelcell ((obj boat-fuelcell) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj play-cutscene?) #f) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (go boat-fuelcell-spawn) + (go boat-fuelcell-idle) + ) + (none) + ) + + + + diff --git a/goal_src/levels/village1/sequence-a-village1.gc b/goal_src/levels/village1/sequence-a-village1.gc index a505d89460..ef2beca825 100644 --- a/goal_src/levels/village1/sequence-a-village1.gc +++ b/goal_src/levels/village1/sequence-a-village1.gc @@ -5,3 +5,454 @@ ;; name in dgo: sequence-a-village1 ;; dgos: L1, VI1 +(define-extern *sidekick-human-sg* skeleton-group) + +;; DECOMP BEGINS + +(set! (-> *part-group-id-table* 686) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-sequenceAV-splash" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2854 :period 900 :length 600)) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +(set! (-> *part-id-table* 2854) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 128.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-z -4096.0 8192.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.125) 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 96.0 64.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-rnd-flt spt-accel-y -2.7306666 -6.826667 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 5000.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.3) (meters -0.5) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 687) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x384 + :flags (sp-group-flag use-local-clock) + :name "group-sequenceAV-spit" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2855)) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +(set! (-> *part-id-table* 2855) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.025) 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 128.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.00033333333)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 106.0) (degrees 2.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 2.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters -0.15) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-group-id-table* 688) (new 'static 'sparticle-launch-group + :length 8 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag screen-space) + :name "group-sequenceAV-2d-intro-mist" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 2858 :period 300 :length 5 :binding 2856) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2859) + (sp-item 2860) + ) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +(set! (-> *part-id-table* 2858) (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-x (meters -2.5) (meters 5.0) 1.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-g 128.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2856) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :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 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 2048.0 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.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-scalevel-x (meters -0.0012121212)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2857) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (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 0.5) (meters 0.3) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0010952381)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y 0.0 -0.13653333 1.0) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2860) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z -16000.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 12.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit13 bit14) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2859) + (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 0.3) + (sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-rnd-flt spt-z 0.0 14000.0 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-r 16.0 80.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 16.0 150.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters -0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.075) (degrees 0.15) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.21333334) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 2861) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2861) + (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 300 299 1) + (sp-launcher-by-id spt-next-launcher 2862) + (sp-end) + ) + ) + ) + +(set! (-> *part-id-table* 2862) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end)) + ) + ) + +(deftype sequenceA-village1 (process-taskable) + ((boat handle :offset-assert 384) + (side handle :offset-assert 392) + ) + :heap-base #x120 + :method-count-assert 53 + :size-assert #x190 + :flag-assert #x3501200190 + ) + + +(defmethod play-anim! sequenceA-village1 ((obj sequenceA-village1) (arg0 symbol)) + (when arg0 + (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) + (set! (-> *time-of-day-proc* 0 hour) 23) + (send-event *camera* 'no-intro) + (send-event *camera* 'clear-entity) + (send-event *camera* 'force-blend 0) + (send-event *camera* 'change-state cam-fixed 0) + (send-event *target* 'sidekick #f) + (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> obj boat) + (ppointer->handle + (when s5-0 + (let ((t9-6 (method-of-type manipy activate))) + (t9-6 (the-as manipy s5-0) obj 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 manipy-init (-> obj root-override trans) (-> obj entity) *fishermans-boat-sg* #f) + (-> s5-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> obj boat)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> obj boat)) 'origin-joint-index 3) + ) + (the-as basic (new 'static 'spool-anim + :name "sage-intro-sequence-a" + :index 17 + :parts 22 + :command-list + '((0 blackout 0) + (0 want-levels village1 misty) + (1210 display-level misty display) + (1210 want-vis mis) + (1210 want-force-vis misty #t) + (1230 send-event self sidekick-human) + (1239 joint "cameraB") + (1480 joint "camera") + (1480 setting-reset ocean-off near) + (1613 joint "cameraB") + (1796 joint "camera") + (1843 joint "cameraB") + (2145 joint "camera") + (2274 joint "cameraB") + (2439 joint "camera") + (2450 want-force-vis misty #f) + (2490 joint "cameraB") + (2570 alive "sequenceB-1") + (2569 save) + (2569 setting-unset ocean-off) + ) + ) + ) + ) + +(defmethod get-art-elem sequenceA-village1 ((obj sequenceA-village1)) + (-> obj draw art-group data 3) + ) + +(defstate play-anim (sequenceA-village1) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('sidekick-human) + (format 0 "got sidekick-human~%") + (when (= (level-status *level* 'misty) 'active) + (let ((gp-1 (entity-by-name "sequenceA-1"))) + (when gp-1 + (format 0 "found entity for sidekick-human~%") + (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> self side) + (ppointer->handle + (when s5-0 + (let ((t9-5 (method-of-type manipy activate))) + (t9-5 (the-as manipy s5-0) self 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 manipy-init (-> self root-override trans) gp-1 *sidekick-human-sg* #f) + (-> s5-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> self side)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self side)) 'center-joint 3) + (send-event (handle->process (-> self side)) 'blend-shape #t) + ) + ) + ) + ) + ) + ) + :exit + (behavior () + (send-event *target* 'sidekick #t) + (let ((a0-2 (handle->process (-> self boat)))) + (if a0-2 + (deactivate a0-2) + ) + ) + (let ((a0-6 (handle->process (-> self side)))) + (if a0-6 + (deactivate a0-6) + ) + ) + ((-> (method-of-type process-taskable play-anim) exit)) + (let ((gp-0 (entity-by-name "sequenceB-1"))) + (set-blackout-frames 6000) + (send-event *camera* 'clear-entity) + (entity-birth-no-kill gp-0) + (send-event + (if gp-0 + (-> gp-0 extra process) + ) + 'play-anim + ) + ) + (none) + ) + :trans + (behavior () + (spool-push *art-control* "sage-intro-sequence-b" 0 self -1.0) + ((-> (method-of-type process-taskable play-anim) trans)) + (none) + ) + ) + +(defmethod should-display? sequenceA-village1 ((obj sequenceA-village1)) + #f + ) + +(defbehavior sequenceA-village1-trans-hook sequenceA-village1 () + (when (>= 1000.0 (ja-aframe-num 0)) + (hide-hud-quick) + (if (> (-> self part matrix) 0) + (set-vector! + (sprite-get-user-hvdf (-> self part matrix)) + 2048.0 + 2048.0 + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w) + ) + ) + (let ((f0-9 (fmin 1.0 (* 0.008333334 (- 1000.0 (ja-aframe-num 0)))))) + (set! (-> *part-id-table* 2860 init-specs 8 initial-valuef) (* 128.0 f0-9)) + (cond + ((< f0-9 1.0) + (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 0.0) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.0) + ) + (else + (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 1.0) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.3) + ) + ) + ) + (spawn (-> self part) *zero-vector*) + (draw-title-credits (* 0.001 (ja-aframe-num 0))) + ) + 0 + (none) + ) + +(defbehavior sequenceA-village1-init-by-other sequenceA-village1 ((arg0 entity)) + (set! (-> self entity) arg0) + (dummy-40 self arg0 *sage-sg* 3 40 (new 'static 'vector :w 4096.0) 5) + (set! (-> self tasks) (get-task-control (game-task intro))) + (set! (-> self boat) (the-as handle #f)) + (set! (-> self side) (the-as handle #f)) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 688) self)) + (set! (-> self part matrix) (sprite-allocate-user-hvdf)) + (set! (-> self cur-trans-hook) sequenceA-village1-trans-hook) + (logclear! (-> self mask) (process-mask pause actor-pause)) + (set! (-> self been-kicked) #t) + (set-setting! *setting-control* self 'music-volume-movie 'abs 0.0 0) + (set-setting! *setting-control* self 'sfx-volume-movie 'abs 0.0 0) + (set-setting! *setting-control* self 'ambient-volume-movie 'abs 0.0 0) + (go-virtual hidden) + (none) + ) + +(defun start-sequence-a () + (set-blackout-frames #x7530) + (let ((gp-0 (get-process *default-dead-pool* sequenceA-village1 #x4000))) + (when gp-0 + (let ((t9-2 (method-of-type sequenceA-village1 activate))) + (t9-2 (the-as sequenceA-village1 gp-0) *entity-pool* 'sequenceA-village1 (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 sequenceA-village1-init-by-other (entity-by-name "sage-23")) + (-> gp-0 ppointer) + ) + ) + 0 + (none) + ) + + + + diff --git a/test/decompiler/reference/levels/demo/demo-obs_REF.gc b/test/decompiler/reference/levels/demo/demo-obs_REF.gc new file mode 100644 index 0000000000..8a2497dd53 --- /dev/null +++ b/test/decompiler/reference/levels/demo/demo-obs_REF.gc @@ -0,0 +1,161 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(defstate target-demo (target) + :event + target-generic-event-handler + :code + (behavior () + (if *time-of-day-proc* + (set! (-> *time-of-day-proc* 0 hour) 12) + ) + (set-setting! *setting-control* self 'allow-pause #f 0.0 0) + (set-setting! *setting-control* self 'allow-progress #f 0.0 0) + (copy-settings-from-target! *setting-control*) + (ja-channel-set! 0) + (ja-post) + (load-state-want-levels 'demo 'village1) + (load-state-want-vis 'vi1) + (case (scf-get-territory) + ((2) + (let ((gp-0 (ppointer->handle (static-screen-spawn 6 #x27c00000 #x27c00100 #x27c00200 1500 #f self)))) + (while (handle->process gp-0) + (suspend) + ) + ) + (let ((gp-1 (ppointer->handle (static-screen-spawn 7 #x27d00000 #x27d00100 #x27d00200 1500 #f self)))) + (while (handle->process gp-1) + (suspend) + ) + ) + (let ((gp-2 (ppointer->handle (static-screen-spawn 8 #x2f000000 #x2f000100 #x2f000200 #x4650 #t self)))) + (while (handle->process gp-2) + (suspend) + ) + ) + ) + ((1) + (case (-> *setting-control* current language) + (((language-enum french)) + (let ((gp-3 (ppointer->handle (static-screen-spawn 10 #x63f00000 #x63f00100 #x63f00200 1500 #f self)))) + (while (handle->process gp-3) + (suspend) + ) + ) + ) + (((language-enum german)) + (let ((gp-4 (ppointer->handle (static-screen-spawn 11 #x64000000 #x64000100 #x64000200 1500 #f self)))) + (while (handle->process gp-4) + (suspend) + ) + ) + ) + (((language-enum italian)) + (let ((gp-5 (ppointer->handle (static-screen-spawn 12 #x64100000 #x64100100 #x64100200 1500 #f self)))) + (while (handle->process gp-5) + (suspend) + ) + ) + ) + (((language-enum spanish)) + (let ((gp-6 (ppointer->handle (static-screen-spawn 13 #x64200000 #x64200100 #x64200200 1500 #f self)))) + (while (handle->process gp-6) + (suspend) + ) + ) + ) + (else + (let ((gp-7 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self)))) + (while (handle->process gp-7) + (suspend) + ) + ) + ) + ) + (let ((gp-8 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self)))) + (while (handle->process gp-8) + (suspend) + ) + ) + (case (-> *setting-control* current language) + (((language-enum french)) + (let ((gp-9 (ppointer->handle (static-screen-spawn 15 #x64400000 #x64400100 #x64400200 #x4650 #t self)))) + (while (handle->process gp-9) + (suspend) + ) + ) + ) + (((language-enum german)) + (let ((gp-10 (ppointer->handle (static-screen-spawn 16 #x64500000 #x64500100 #x64500200 #x4650 #t self)))) + (while (handle->process gp-10) + (suspend) + ) + ) + ) + (((language-enum italian)) + (let ((gp-11 (ppointer->handle (static-screen-spawn 17 #x64600000 #x64600100 #x64600200 #x4650 #t self)))) + (while (handle->process gp-11) + (suspend) + ) + ) + ) + (((language-enum spanish)) + (let ((gp-12 (ppointer->handle (static-screen-spawn 18 #x64700000 #x64700100 #x64700200 #x4650 #t self)))) + (while (handle->process gp-12) + (suspend) + ) + ) + ) + (else + (let ((gp-13 (ppointer->handle (static-screen-spawn 14 #x64300000 #x64300100 #x64300200 #x4650 #t self)))) + (while (handle->process gp-13) + (suspend) + ) + ) + ) + ) + ) + (else + (let ((gp-14 (ppointer->handle (static-screen-spawn 2 #x5cd00000 #x5cd00100 #x5cd00200 1500 #f self)))) + (while (handle->process gp-14) + (suspend) + ) + ) + (let ((gp-15 (ppointer->handle (static-screen-spawn 3 #x5ce00000 #x5ce00100 #x5ce00200 1500 #f self)))) + (while (handle->process gp-15) + (suspend) + ) + ) + (let ((gp-16 (ppointer->handle (static-screen-spawn 4 #x5cf00000 #x5cf00100 #x5cf00200 #x4650 #t self)))) + (while (handle->process gp-16) + (suspend) + ) + ) + ) + ) + (let ((gp-17 (get-process *default-dead-pool* process #x4000))) + (when gp-17 + (let ((t9-26 (method-of-type process activate))) + (t9-26 gp-17 *default-pool* 'process (the-as pointer #x70004000)) + ) + (run-next-time-in-process gp-17 (lambda () + (set! (-> *setting-control* default bg-a) 0.0) + (start 'play (get-continue-by-name *game-info* "village1-demo-convo")) + ) + ) + (-> gp-17 ppointer) + ) + ) + (while #t + (suspend) + ) + (none) + ) + :post + target-no-move-post + ) + + + + diff --git a/test/decompiler/reference/levels/misty/misty-obs_REF.gc b/test/decompiler/reference/levels/misty/misty-obs_REF.gc new file mode 100644 index 0000000000..8c94578959 --- /dev/null +++ b/test/decompiler/reference/levels/misty/misty-obs_REF.gc @@ -0,0 +1,2530 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 191) + (new 'static 'sparticle-launch-group + :length 16 + :duration #xbb8 + :linger-duration #x5dc + :name "group-windturbine-particles" + :launcher + (new 'static 'inline-array sparticle-group-item 16 + (sp-item 908 :fade-after (meters 60.0) :period 1212 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 5790 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 4988 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 3510 :length 10) + (sp-item 908 :fade-after (meters 60.0) :period 1837 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 1650 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 3780 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 2220 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 8235 :length 10) + (sp-item 909 :fade-after (meters 60.0) :period 3336 :length 10) + (sp-item 910 :fade-after (meters 60.0) :period 150 :length 75) + (sp-item 910 :fade-after (meters 120.0) :period 150 :length 75) + (sp-item 910 :fade-after (meters 180.0) :period 150 :length 75) + (sp-item 911 :fade-after (meters 60.0) :period 150 :length 75 :offset 75) + (sp-item 911 :fade-after (meters 120.0) :period 150 :length 75 :offset 75) + (sp-item 911 :fade-after (meters 180.0) :period 150 :length 75 :offset 75) + ) + :bounds (new 'static 'sphere :w 49152.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 910) + (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 0.066 0.066 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -2.0) (meters 0.5) 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 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 0.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (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-a 0.21333334) + (sp-flt spt-accel-y 1.2288) + (sp-int-plain-rnd spt-timer 600 1499 1) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 912) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 912) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 913) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 913) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 7 + (sp-flt spt-vel-x (meters -0.06666667)) + (sp-flt spt-vel-y (meters 0.0033333334)) + (sp-flt spt-scalevel-x (meters 0.016666668)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.2) + (sp-flt spt-accel-x 1.3653333) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 911) + (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 0.066 0.066 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -2.0) (meters 0.5) 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 32.0) + (sp-flt spt-g 32.0) + (sp-flt spt-b 32.0) + (sp-rnd-flt spt-a 0.0 32.0 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (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-a 0.21333334) + (sp-flt spt-accel-y 1.2288) + (sp-int-plain-rnd spt-timer 600 1499 1) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 150) + (sp-launcher-by-id spt-next-launcher 912) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 908) (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 8.0 24.0 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -4.5) (meters 1.0) 1.0) + (sp-flt spt-z -2048.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 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.08) 1.0) + (sp-flt spt-scalevel-x (meters -0.00055555557)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.2) + (sp-flt spt-fade-b -0.2) + (sp-flt spt-fade-a -0.6) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.94) + (sp-int-plain-rnd spt-timer 90 59 1) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees -220.0) (degrees 110.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 909) (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 8.0 24.0 1.0) + (sp-flt spt-x (meters -4.0)) + (sp-rnd-flt spt-y (meters -4.5) (meters 1.0) 1.0) + (sp-flt spt-z 2048.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 128.0 1.0) + (sp-flt spt-g 128.0) + (sp-flt spt-b 64.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.013333334) (meters 0.08) 1.0) + (sp-flt spt-scalevel-x (meters -0.00055555557)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-g -0.2) + (sp-flt spt-fade-b -0.2) + (sp-flt spt-fade-a -0.6) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.94) + (sp-int-plain-rnd spt-timer 90 59 1) + (sp-cpuinfo-flags bit2) + (sp-rnd-flt spt-conerot-x (degrees 0.0) (degrees 120.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees -110.0) (degrees 110.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 192) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-01" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 916 :period 780 :length 64) + (sp-item 917 :period 780 :length 32 :offset 65131) + (sp-item 918 :period 780 :length 32 :offset 65131) + (sp-item 919 :period 780 :length 32 :offset 65131) + (sp-item 920 :period 780 :length 32 :offset 65056) + (sp-item 921 :period 780 :length 32 :offset 64996) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 921) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 920) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 919) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 918) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 922) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end)) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 917) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 914) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 915) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 23 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.04) (meters 0.026666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 923) + (sp-rnd-flt spt-conerot-x (degrees 70.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 2.0)) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 923) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -3.2) (sp-end)) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 916) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 187.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 193) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-03" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 924 :period 780 :length 64) + (sp-item 925 :period 780 :length 32 :offset 65131) + (sp-item 926 :period 780 :length 32 :offset 65131) + (sp-item 927 :period 780 :length 32 :offset 65131) + (sp-item 928 :period 780 :length 32 :offset 65056) + (sp-item 929 :period 780 :length 32 :offset 64996) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 929) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 928) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 927) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 926) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 925) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -80.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 924) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 249.99998)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 194) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-02" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 930 :period 780 :length 64) + (sp-item 931 :period 780 :length 32 :offset 65131) + (sp-item 932 :period 780 :length 32 :offset 65131) + (sp-item 933 :period 780 :length 32 :offset 65131) + (sp-item 934 :period 780 :length 32 :offset 65056) + (sp-item 935 :period 780 :length 32 :offset 64996) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 935) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 934) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 933) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 932) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 931) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -90.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 930) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 114.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 195) (new 'static 'sparticle-launch-group + :length 8 + :duration #x258 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-misty-bone-07" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 914 :period 780 :length 15) + (sp-item 915 :period 780 :length 15) + (sp-item 936 :period 780 :length 64) + (sp-item 937 :period 780 :length 32 :offset 65131) + (sp-item 938 :period 780 :length 32 :offset 65131) + (sp-item 939 :period 780 :length 32 :offset 65131) + (sp-item 940 :period 780 :length 32 :offset 65056) + (sp-item 941 :period 780 :length 32 :offset 64966) + ) + :bounds (new 'static 'sphere :w 98304.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 941) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 940) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 24 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-flt spt-x (meters 2.5)) + (sp-rnd-flt spt-y (meters 1.0) (meters 1.0) 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.006666667) (meters 0.013333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.16) + (sp-flt spt-accel-y 0.13653333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-rnd-flt spt-conerot-x (degrees 80.0) (degrees 20.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 360.0) 1.0) + (sp-flt spt-conerot-radius (meters 2.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 939) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 25 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 3.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 16.0 1.0) + (sp-rnd-flt spt-vel-y (meters -0.01) (meters 0.04) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.023333333) (meters 0.046666667) 1.0) + (sp-flt spt-scalevel-x (meters 0.006666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.10666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 938) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 26 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-x (meters -0.5) (meters 1.5) 1.0) + (sp-rnd-flt spt-y (meters 1.5) (meters 0.5) 1.0) + (sp-rnd-flt spt-z -10240.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.05) (meters 0.2) 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 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 32.0 1.0) + (sp-rnd-flt spt-vel-x (meters -0.026666667) (meters 0.013333334) 1.0) + (sp-rnd-flt spt-vel-y (meters -0.013333334) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.033333335) (meters 0.06666667) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-accel-y -6.826667) + (sp-flt spt-friction 0.996) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 90) + (sp-launcher-by-id spt-next-launcher 922) + (sp-flt spt-conerot-z (degrees -94.0)) + (sp-flt spt-conerot-radius (meters 18.0)) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 937) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 8.0) + (sp-rnd-flt spt-y (meters -1.0) (meters 1.5) 1.0) + (sp-rnd-flt spt-z -20480.0 40960.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 16.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.026666667) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-conerot-z (degrees -90.0)) + (sp-rnd-flt spt-conerot-radius (meters 4.0) (meters 16.0) 1.0) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 936) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x19 :page #x2)) + (sp-flt spt-num 2.0) + (sp-rnd-flt spt-x (meters -3.5) (meters 4.5) 1.0) + (sp-rnd-flt spt-y (meters 1.0) (meters 12.0) 1.0) + (sp-rnd-flt spt-z -12288.0 24576.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-rnd-flt spt-r 128.0 32.0 1.0) + (sp-rnd-flt spt-g 100.0 32.0 1.0) + (sp-rnd-flt spt-b 90.0 32.0 1.0) + (sp-rnd-flt spt-a 8.0 8.0 1.0) + (sp-flt spt-vel-y (meters -0.0016666667)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.15) 1 54.613335) + (sp-flt spt-fade-a -0.017777778) + (sp-flt spt-accel-y -0.4096) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit12) + (sp-flt spt-rotate-y (degrees 14.000005)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 196) + (new 'static 'sparticle-launch-group + :length 1 + :duration #xbb8 + :linger-duration #x5dc + :name "group-misty-boat-paddle" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 944 :fade-after (meters 100.0))) + :bounds (new 'static 'sphere :w 61440.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 944) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 21 + (sp-tex spt-texture (new 'static 'texture-id :index #x18 :page #x2)) + (sp-flt spt-num 0.8) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 0.0)) + (sp-rnd-flt spt-z 20480.0 20480.0 1.0) + (sp-rnd-flt spt-scale-x (meters 5.5) (meters 4.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 48.0) + (sp-flt spt-g 64.0) + (sp-rnd-flt spt-b 96.0 32.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-z (meters -0.016666668) (meters 0.033333335) 1.0) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.2) 1 72.81778) + (sp-flt spt-fade-a 0.53333336) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 945) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 945) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.53333336) (sp-end)) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 943) (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 6.0) + (sp-rnd-flt spt-x (meters -9.0) (meters 18.0) 1.0) + (sp-flt spt-scale-x (meters 0.5)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-r 64.0) + (sp-flt spt-g 96.0) + (sp-rnd-flt spt-b 100.0 28.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.001) (meters 0.033333335) 1.0) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12) + (sp-int spt-next-time 210) + (sp-launcher-by-id spt-next-launcher 946) + (sp-flt spt-conerot-x (degrees 90.0)) + (sp-rnd-int-flt spt-conerot-y (degrees 0.0) 3 8192.0) + (sp-flt spt-conerot-z (degrees 90.0)) + (sp-flt spt-conerot-radius (meters 9.0)) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 946) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -2.0) (sp-end)) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 942) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x18 :page #x2)) + (sp-flt spt-num 1.0) + (sp-rnd-flt spt-x (meters -11.0) (meters 22.0) 1.0) + (sp-flt spt-y (meters 0.5)) + (sp-rnd-flt spt-z 24576.0 16384.0 1.0) + (sp-flt spt-scale-x (meters 3.5)) + (sp-rnd-int-flt spt-rot-z (degrees 0.0) 1 32768.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 0.0) + (sp-rnd-flt spt-vel-y (meters 0.001) (meters 0.033333335) 1.0) + (sp-rnd-flt spt-vel-z (meters -0.016666668) (meters 0.033333335) 1.0) + (sp-flt spt-fade-a 0.53333336) + (sp-flt spt-accel-y -5.4613333) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit12 bit14) + (sp-int spt-next-time 75) + (sp-launcher-by-id spt-next-launcher 947) + (sp-flt spt-rotate-y (degrees 140.0)) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 947) + (new 'static 'sparticle-launcher :init-specs (new 'static 'inline-array sp-field-init-spec 4 + (sp-flt spt-fade-a 0.0) + (sp-int spt-next-time 60) + (sp-launcher-by-id spt-next-launcher 948) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 948) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -1.0666667) (sp-end)) + ) + ) + +;; definition of type boatpaddle +(deftype boatpaddle (process-drawable) + () + :heap-base #x40 + :method-count-assert 20 + :size-assert #xb0 + :flag-assert #x14004000b0 + (:states + boatpaddle-idle + ) + ) + +;; definition for method 3 of type boatpaddle +(defmethod inspect boatpaddle ((obj boatpaddle)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *boatpaddle-sg* boatpaddle + 0 + 3 + ((1 (meters 20)) (2 (meters 999999))) + :bounds (static-spherem 0 0 0 18) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate boatpaddle-idle (boatpaddle) + :code + (behavior () + (local-vars (s4-0 int)) + (while #t + (quaternion-rotate-local-x! + (-> self root quat) + (-> self root quat) + (* -5461.3335 (-> *display* seconds-per-frame)) + ) + (let ((gp-0 (-> self part)) + (s5-0 (-> self root trans)) + ) + (let ((f30-0 1274.3112) + (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 + ) + -1 + ) + ) + ) + (set! (-> *part-id-table* 943 init-specs 17 initial-valuef) + (+ f30-0 (- f28-0 (* (the float (the int (/ (the float s4-0) 8192.0))) 8192.0))) + ) + ) + (spawn gp-0 s5-0) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior boatpaddle) ja-post) + ) + +;; definition for method 11 of type boatpaddle +;; INFO: Return type mismatch object vs none. +(defmethod init-from-entity! boatpaddle ((obj boatpaddle) (arg0 entity-actor)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *boatpaddle-sg* '()) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 196) obj)) + (go boatpaddle-idle) + (none) + ) + +;; definition of type windturbine +(deftype windturbine (process-drawable) + ((spawn-particle-enable symbol :offset-assert 176) + (angle-speed float :offset-assert 180) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb8 + :flag-assert #x14005000b8 + (:states + windturbine-idle + ) + ) + +;; definition for method 3 of type windturbine +(defmethod inspect windturbine ((obj windturbine)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tspawn-particle-enable: ~A~%" (-> obj spawn-particle-enable)) + (format #t "~T~Tangle-speed: ~f~%" (-> obj angle-speed)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *windturbine-sg* windturbine + 0 + 4 + ((1 (meters 20)) (2 (meters 40)) (3 (meters 999999))) + :bounds (static-spherem 0 3 0 7) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defstate windturbine-idle (windturbine) + :code + (behavior () + (while #t + (let* ((a0-0 (-> self root trans)) + (f2-0 + (-> *wind-work* + wind-force + (logand (+ (the int (-> a0-0 x)) (the int (-> a0-0 z)) (-> *wind-work* wind-time)) 63) + ) + ) + (f0-5 (* 0.992 (+ (-> self angle-speed) (* 3.6408892 f2-0)))) + ) + (set! (-> self angle-speed) (fmin 65536.0 f0-5)) + ) + (quaternion-rotate-local-y! + (-> self root quat) + (-> self root quat) + (* -1.0 (-> *display* seconds-per-frame) (-> self angle-speed)) + ) + (if (-> self spawn-particle-enable) + (spawn (-> self part) (-> self root trans)) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior windturbine) ja-post) + ) + +;; definition for method 11 of type windturbine +;; INFO: Return type mismatch object vs none. +(defmethod init-from-entity! windturbine ((obj windturbine) (arg0 entity-actor)) + (set! (-> obj mask) (logior (process-mask ambient) (-> obj mask))) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj spawn-particle-enable) (= (res-lump-value arg0 'particle-select uint128) 1)) + (if (-> obj spawn-particle-enable) + (set! (-> obj part) (create-launch-control (-> *part-group-id-table* 191) obj)) + ) + (initialize-skeleton obj *windturbine-sg* '()) + (go windturbine-idle) + (none) + ) + +;; definition of type mis-bone-bridge +(deftype mis-bone-bridge (process-drawable) + ((root-override collide-shape-moving :offset 112) + (particle-group sparticle-launch-group :offset-assert 176) + (player-attack-id int32 :offset-assert 180) + (fall-anim-index int32 :offset-assert 184) + (hit-points int8 :offset-assert 188) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xbd + :flag-assert #x14005000bd + (:states + mis-bone-bridge-bump + (mis-bone-bridge-fall symbol) + mis-bone-bridge-hit + mis-bone-bridge-idle + ) + ) + +;; definition for method 3 of type mis-bone-bridge +(defmethod inspect mis-bone-bridge ((obj mis-bone-bridge)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tparticle-group: ~A~%" (-> obj particle-group)) + (format #t "~T~Tplayer-attack-id: ~D~%" (-> obj player-attack-id)) + (format #t "~T~Tfall-anim-index: ~D~%" (-> obj fall-anim-index)) + (format #t "~T~Thit-points: ~D~%" (-> obj hit-points)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *mis-bone-bridge-sg* mis-bone-bridge + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 1 0 20) + :longest-edge (meters 0) + ) + +;; definition for function mis-bone-bridge-event-handler +;; Used lq/sq +(defbehavior mis-bone-bridge-event-handler mis-bone-bridge ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('attack) + (let ((s5-0 (-> arg3 param 2)) + (gp-0 (vector-x-quaternion! (new-stack-vector0) (-> self root-override quat))) + (a0-4 (vector-z-quaternion! (new-stack-vector0) (-> self root-override quat))) + (v1-4 (vector-! (new-stack-vector0) (-> *target* control trans) (-> self root-override trans))) + ) + 0.0 + 0.0 + (when (!= s5-0 (-> self player-attack-id)) + (set! (-> self player-attack-id) (the-as int s5-0)) + (let ((f0-3 (vector-dot gp-0 v1-4)) + (f1-1 (vector-dot a0-4 v1-4)) + ) + (cond + ((and (< 0.0 f1-1) (< (fabs (* 0.5 f0-3)) f1-1)) + (let ((a1-9 (new 'stack-no-clear 'event-message-block))) + (set! (-> a1-9 from) self) + (set! (-> a1-9 num-params) 2) + (set! (-> a1-9 message) 'query) + (set! (-> a1-9 param 0) (the-as uint 'powerup)) + (set! (-> a1-9 param 1) (the-as uint 2)) + (if (send-event-function *target* a1-9) + (go mis-bone-bridge-fall #f) + (go mis-bone-bridge-hit) + ) + ) + ) + (else + (go mis-bone-bridge-bump) + #f + ) + ) + ) + ) + ) + ) + ) + ) + +;; failed to figure out what this is: +(defstate mis-bone-bridge-idle (mis-bone-bridge) + :event + mis-bone-bridge-event-handler + :code + (behavior () + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 num-func) num-func-identity) + (set! (-> v1-2 frame-num) 0.0) + ) + (while #t + (if (and *target* (>= 32768.0 (vector-vector-distance (-> self root-override trans) (-> *target* control trans)))) + (level-hint-spawn + (game-text-id misty-bone-bridge-hint) + "sksp0435" + (the-as entity #f) + *entity-pool* + (game-task none) + ) + ) + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) transform-post) + ) + +;; failed to figure out what this is: +(defstate mis-bone-bridge-bump (mis-bone-bridge) + :event + mis-bone-bridge-event-handler + :trans + (the-as (function none :behavior mis-bone-bridge) rider-trans) + :code + (behavior () + (let ((a0-0 (-> self skel root-channel 0))) + (set! (-> a0-0 frame-group) (the-as art-joint-anim (-> self draw art-group data 6))) + (set! (-> a0-0 param 0) + (the float (+ (-> (the-as art-joint-anim (-> self draw art-group data 6)) data 0 length) -1)) + ) + (set! (-> a0-0 param 1) 1.0) + (set! (-> a0-0 frame-num) 0.0) + (joint-control-channel-group! a0-0 (the-as art-joint-anim (-> self draw art-group data 6)) 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!) + ) + ) + (go mis-bone-bridge-idle) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) rider-post) + ) + +;; failed to figure out what this is: +(defstate mis-bone-bridge-hit (mis-bone-bridge) + :event + mis-bone-bridge-event-handler + :trans + (the-as (function none :behavior mis-bone-bridge) rider-trans) + :code + (behavior () + (+! (-> self hit-points) -1) + (if (zero? (-> self hit-points)) + (go mis-bone-bridge-fall #f) + ) + (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!) + ) + ) + (go mis-bone-bridge-idle) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) rider-post) + ) + +;; failed to figure out what this is: +(defstate mis-bone-bridge-fall (mis-bone-bridge) + :trans + (the-as (function none :behavior mis-bone-bridge) rider-trans) + :code + (behavior ((arg0 symbol)) + (process-entity-status! self (entity-perm-status complete) #t) + (when (not arg0) + (let ((gp-1 (get-process *default-dead-pool* part-tracker #x4000))) + (when gp-1 + (let ((t9-2 (method-of-type part-tracker activate))) + (t9-2 (the-as part-tracker gp-1) *entity-pool* 'part-tracker (the-as pointer #x70004000)) + ) + (run-now-in-process gp-1 part-tracker-init (-> self particle-group) -1 #f #f #f (-> self root-override trans)) + (-> gp-1 ppointer) + ) + ) + (let ((a0-5 (-> self skel root-channel 0))) + (set! (-> a0-5 frame-group) (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index)))) + (set! (-> a0-5 param 0) + (the float + (+ (-> (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index))) data 0 length) -1) + ) + ) + (set! (-> a0-5 param 1) 1.0) + (set! (-> a0-5 frame-num) 0.0) + (joint-control-channel-group! + a0-5 + (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index))) + num-func-seek! + ) + ) + (until (ja-done? 0) + (suspend) + (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-eval! a0-6 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (let ((gp-2 (-> self skel root-channel 0))) + (joint-control-channel-group-eval! + gp-2 + (the-as art-joint-anim (-> self draw art-group data (-> self fall-anim-index))) + 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 + ) + -1 + ) + ) + ) + ) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior mis-bone-bridge) rider-post) + ) + +;; definition for method 11 of type mis-bone-bridge +;; INFO: Return type mismatch object vs none. +(defmethod init-from-entity! mis-bone-bridge ((obj mis-bone-bridge) (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-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 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 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 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 transform-index) 4) + (set-vector! (-> s2-1 local-sphere) 0.0 49152.0 0.0 49152.0) + (append-prim s3-0 s2-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) + ) + (process-drawable-from-entity! obj arg0) + (initialize-skeleton obj *mis-bone-bridge-sg* '()) + (let ((v1-40 (res-lump-value arg0 'animation-select uint128))) + (cond + ((= (the-as uint v1-40) 1) + (set! (-> obj fall-anim-index) 2) + (set! (-> obj particle-group) (-> *part-group-id-table* 192)) + ) + ((= (the-as uint v1-40) 2) + (set! (-> obj fall-anim-index) 3) + (set! (-> obj particle-group) (-> *part-group-id-table* 194)) + ) + ((= (the-as uint v1-40) 3) + (set! (-> obj fall-anim-index) 2) + (set! (-> obj particle-group) (-> *part-group-id-table* 193)) + ) + ((= (the-as uint v1-40) 7) + (set! (-> obj fall-anim-index) 4) + (set! (-> obj particle-group) (-> *part-group-id-table* 195)) + ) + (else + (set! (-> obj fall-anim-index) 2) + (set! (-> obj particle-group) (-> *part-group-id-table* 192)) + ) + ) + ) + (set! (-> obj hit-points) 3) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (go mis-bone-bridge-fall #t) + (go mis-bone-bridge-idle) + ) + (none) + ) + +;; definition of type breakaway +(deftype breakaway (process-drawable) + ((root-override collide-shape-moving :offset 112) + ) + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + (:methods + (init! (_type_ res-lump int) none 20) + (go-idle (_type_) none 21) + ) + (:states + breakaway-about-to-fall + breakaway-fall + breakaway-idle + ) + ) + +;; definition for method 3 of type breakaway +(defmethod inspect breakaway ((obj breakaway)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate breakaway-idle (breakaway) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('touch) + (send-event arg0 'no-look-around 450) + (go breakaway-about-to-fall) + ) + ) + ) + :code + (the-as (function none :behavior breakaway) anim-loop) + :post + (the-as (function none :behavior breakaway) transform-post) + ) + +;; definition for function actor-wait-for-period +(defun actor-wait-for-period ((arg0 int)) + (let ((s5-0 (-> *display* base-frame-counter))) + (while (< (- (-> *display* base-frame-counter) s5-0) arg0) + (suspend) + ) + ) + #f + ) + +;; failed to figure out what this is: +(defstate breakaway-about-to-fall (breakaway) + :code + (behavior () + (sound-play-by-name (static-sound-name "falling-bones") (new-sound-id) 1024 0 0 1 #t) + (sp-launch-particles-var + *sp-particle-system-2d* + (-> *part-id-table* 281) + (-> self root-override trans) + (the-as sparticle-launch-state #f) + (the-as sparticle-launch-control #f) + 1.0 + ) + (let ((gp-1 #f) + (s5-1 (-> *display* base-frame-counter)) + ) + (while #t + (let ((s4-0 (-> self skel root-channel 0))) + (set! (-> s4-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> s4-0 param 0) (ja-aframe 15.0 0)) + (set! (-> s4-0 param 1) 1.0) + (set! (-> s4-0 frame-num) (ja-aframe 1.0 0)) + (joint-control-channel-group! + s4-0 + (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (when (and (not gp-1) (>= (- (-> *display* base-frame-counter) s5-1) 45)) + (set! gp-1 #t) + (send-to-next-and-prev (-> self link) 'touch) + ) + (if (>= (- (-> *display* base-frame-counter) s5-1) 75) + (go breakaway-fall) + ) + (suspend) + (let ((s4-1 (-> self skel root-channel 0))) + (set! (-> s4-1 param 0) (ja-aframe 15.0 0)) + (set! (-> s4-1 param 1) 1.0) + (joint-control-channel-group-eval! s4-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + ) + (none) + ) + :post + (the-as (function none :behavior breakaway) rider-post) + ) + +;; failed to figure out what this is: +(defstate breakaway-fall (breakaway) + :code + (behavior () + (let ((f30-0 0.0) + (f28-0 0.0) + (f26-0 (* 0.1 (- (-> *standard-dynamics* gravity-length)))) + ) + (let ((gp-0 (-> self skel root-channel 0))) + (set! (-> gp-0 frame-group) (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + ) + (set! (-> gp-0 param 0) (ja-aframe 32.0 0)) + (set! (-> gp-0 param 1) 0.4) + (set! (-> gp-0 frame-num) (ja-aframe 16.0 0)) + (joint-control-channel-group! + gp-0 + (if (> (-> self skel active-channels) 0) + (-> self skel root-channel 0 frame-group) + ) + num-func-seek! + ) + ) + (until (ja-done? 0) + (+! f30-0 (* f28-0 (-> *display* seconds-per-frame))) + (+! f28-0 (* f26-0 (-> *display* seconds-per-frame))) + (+! (-> self root-override trans y) f30-0) + (suspend) + (let ((gp-1 (-> self skel root-channel 0))) + (set! (-> gp-1 param 0) (ja-aframe 32.0 0)) + (set! (-> gp-1 param 1) 0.4) + (joint-control-channel-group-eval! gp-1 (the-as art-joint-anim #f) num-func-seek!) + ) + ) + ) + (dummy-18 self) + (none) + ) + :post + (the-as (function none :behavior breakaway) rider-post) + ) + +;; definition for method 20 of type breakaway +(defmethod init! breakaway ((obj breakaway) (arg0 res-lump) (arg1 int)) + (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 ((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 transform-index) arg1) + (set-vector! (-> s2-0 local-sphere) 8192.0 -4096.0 8192.0 16384.0) + (set-root-prim! s4-0 s2-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 link) (new 'process 'actor-link-info obj)) + (process-drawable-from-entity! obj (the-as entity-actor arg0)) + (none) + ) + +;; definition for method 21 of type breakaway +;; INFO: Return type mismatch object vs none. +(defmethod go-idle breakaway ((obj breakaway)) + (go breakaway-idle) + (none) + ) + +;; definition of type breakaway-right +(deftype breakaway-right (breakaway) + () + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + ) + +;; definition for method 3 of type breakaway-right +(defmethod inspect breakaway-right ((obj breakaway-right)) + (let ((t9-0 (method-of-type breakaway inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type breakaway-mid +(deftype breakaway-mid (breakaway) + () + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + ) + +;; definition for method 3 of type breakaway-mid +(defmethod inspect breakaway-mid ((obj breakaway-mid)) + (let ((t9-0 (method-of-type breakaway inspect))) + (t9-0 obj) + ) + obj + ) + +;; definition of type breakaway-left +(deftype breakaway-left (breakaway) + () + :heap-base #x40 + :method-count-assert 22 + :size-assert #xb0 + :flag-assert #x16004000b0 + ) + +;; definition for method 3 of type breakaway-left +(defmethod inspect breakaway-left ((obj breakaway-left)) + (let ((t9-0 (method-of-type breakaway inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *breakaway-right-sg* breakaway-right + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *breakaway-mid-sg* breakaway-mid + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +;; failed to figure out what this is: +(defskelgroup *breakaway-left-sg* breakaway-left + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 7) + :longest-edge (meters 0) + ) + +;; definition for method 11 of type breakaway-right +(defmethod init-from-entity! breakaway-right ((obj breakaway-right) (arg0 entity-actor)) + (init! obj arg0 3) + (initialize-skeleton obj *breakaway-right-sg* '()) + (go-idle obj) + (none) + ) + +;; definition for method 11 of type breakaway-mid +(defmethod init-from-entity! breakaway-mid ((obj breakaway-mid) (arg0 entity-actor)) + (init! obj arg0 3) + (initialize-skeleton obj *breakaway-mid-sg* '()) + (go-idle obj) + (none) + ) + +;; definition for method 11 of type breakaway-left +(defmethod init-from-entity! breakaway-left ((obj breakaway-left) (arg0 entity-actor)) + (init! obj arg0 3) + (initialize-skeleton obj *breakaway-left-sg* '()) + (go-idle obj) + (none) + ) + +;; definition for symbol *bone-platform-constants*, type rigid-body-platform-constants +(define *bone-platform-constants* (new 'static 'rigid-body-platform-constants + :drag-factor 2.0 + :buoyancy-factor 2.0 + :max-buoyancy-depth (meters 3.0) + :gravity-factor 1.0 + :gravity (meters 80.0) + :player-weight (meters 35.0) + :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 5 + :mass 2.0 + :inertial-tensor-x (meters 3.0) + :inertial-tensor-y (meters 2.0) + :inertial-tensor-z (meters 3.0) + :cm-joint-y (meters -3.0) + :idle-distance (meters 50.0) + :platform #t + :sound-name "mud-plat" + ) + ) + +;; definition of type bone-platform +(deftype bone-platform (rigid-body-platform) + ((anchor-point vector :inline :offset-assert 736) + ) + :heap-base #x280 + :method-count-assert 35 + :size-assert #x2f0 + :flag-assert #x23028002f0 + ) + +;; definition for method 3 of type bone-platform +(defmethod inspect bone-platform ((obj bone-platform)) + (let ((t9-0 (method-of-type rigid-body-platform inspect))) + (t9-0 obj) + ) + (format #t "~T~Tanchor-point: #~%" (-> obj anchor-point)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *mis-bone-platform-sg* mis-bone-platform + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 4) + :longest-edge (meters 0) + ) + +;; definition for method 27 of type bone-platform +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-27 bone-platform ((obj bone-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 (* 20.0 (fmax 0.0 (fmin 4096.0 (+ -819.2 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) + ) + +;; definition for method 23 of type bone-platform +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-23 bone-platform ((obj bone-platform) (arg0 float)) + ((the-as (function rigid-body-platform basic none) (find-parent-method bone-platform 23)) + obj + (the-as basic arg0) + ) + (TODO-RENAME-27 obj (-> obj anchor-point)) + 0 + (none) + ) + +;; failed to figure out what this is: +(defstate rigid-body-platform-idle (bone-platform) + :virtual #t + :enter + (behavior () (ja-channel-set! 0) (none)) + :code + (behavior () + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior bone-platform) ja-post) + ) + +;; failed to figure out what this is: +(defstate rigid-body-platform-float (bone-platform) + :virtual #t + :event + (the-as + (function process int symbol event-message-block object :behavior bone-platform) + rigid-body-platform-event-handler + ) + :trans + (behavior () + (-> self entity extra trans y) + (cond + ((or (not *target*) (< (-> self info idle-distance) + (vector-vector-distance (-> self root-overlay trans) (-> *target* control trans)) + ) + ) + (let ((f30-1 -4096.0)) + (set! (-> self float-height-offset) + (seek (-> self float-height-offset) f30-1 (* 2048.0 (-> *display* seconds-per-frame))) + ) + (if (= (-> self float-height-offset) f30-1) + (go-virtual rigid-body-platform-idle) + ) + ) + ) + (else + (set! (-> self float-height-offset) + (seek (-> self float-height-offset) 4096.0 (* 2048.0 (-> *display* seconds-per-frame))) + ) + ) + ) + (none) + ) + :code + (behavior () + (ja-channel-push! 1 30) + (let ((v1-2 (-> self skel root-channel 0))) + (set! (-> v1-2 frame-group) (the-as art-joint-anim (-> self draw art-group data 2))) + ) + (let ((v1-5 (-> self skel root-channel 0))) + (set! (-> v1-5 num-func) num-func-identity) + (set! (-> v1-5 frame-num) 0.0) + ) + (while #t + (suspend) + ) + (none) + ) + :post + (the-as (function none :behavior bone-platform) rigid-body-platform-post) + ) + +;; definition for method 30 of type bone-platform +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-30 bone-platform ((obj bone-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)))) + (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) 3) + (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) + ) + 0 + (none) + ) + +;; definition for method 31 of type bone-platform +;; INFO: Return type mismatch int vs none. +;; Used lq/sq +(defmethod TODO-RENAME-31 bone-platform ((obj bone-platform)) + (initialize-skeleton obj *mis-bone-platform-sg* '()) + (TODO-RENAME-29 obj *bone-platform-constants*) + (set! (-> obj float-height-offset) -4096.0) + (if (name= (-> obj name) "bone-platform-5") + (set-vector! (-> obj root-overlay scale) 0.8 1.0 0.8 1.0) + ) + (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) -12288.0) + (set! (-> s3-0 local-pos z) (* 12288.0 (cos f30-0))) + ) + (set! (-> s3-0 local-pos w) 1.0) + ) + ) + ) + (set! (-> obj anchor-point quad) (-> obj root-overlay trans quad)) + 0 + (none) + ) + +;; definition of type mistycam +(deftype mistycam (process-hidden) + () + :method-count-assert 15 + :size-assert #x70 + :flag-assert #xf00000070 + ) + +;; definition for method 3 of type mistycam +(defmethod inspect mistycam ((obj mistycam)) + (format #t "[~8x] ~A~%" obj (-> obj type)) + (format #t "~Tname: ~A~%" (-> obj name)) + (format #t "~Tmask: ~D~%" (-> obj mask)) + (format #t "~Tparent: #x~X~%" (-> obj parent)) + (format #t "~Tbrother: #x~X~%" (-> obj brother)) + (format #t "~Tchild: #x~X~%" (-> obj child)) + (format #t "~Tppointer: #x~X~%" (-> obj ppointer)) + (format #t "~Tself: ~A~%" (-> obj self)) + (format #t "~Tpool: ~A~%" (-> obj pool)) + (format #t "~Tstatus: ~A~%" (-> obj status)) + (format #t "~Tpid: ~D~%" (-> obj pid)) + (format #t "~Tmain-thread: ~A~%" (-> obj main-thread)) + (format #t "~Ttop-thread: ~A~%" (-> obj top-thread)) + (format #t "~Tentity: ~A~%" (-> obj entity)) + (format #t "~Tstate: ~A~%" (-> obj state)) + (format #t "~Ttrans-hook: ~A~%" (-> obj trans-hook)) + (format #t "~Tpost-hook: ~A~%" (-> obj post-hook)) + (format #t "~Tevent-hook: ~A~%" (-> obj event-hook)) + (format #t "~Tallocated-length: ~D~%" (-> obj allocated-length)) + (format #t "~Tnext-state: ~A~%" (-> obj next-state)) + (format #t "~Theap-base: #x~X~%" (-> obj heap-base)) + (format #t "~Theap-top: #x~X~%" (-> obj heap-top)) + (format #t "~Theap-cur: #x~X~%" (-> obj heap-cur)) + (format #t "~Tstack-frame-top: ~A~%" (-> obj stack-frame-top)) + (format #t "~Theap: #~%" (&-> obj heap-base)) + (format #t "~Tconnection-list: ~`'connectable`P~%" (-> obj connection-list)) + (format #t "~Tstack[0] @ #x~X~%" (-> obj stack)) + obj + ) + +;; failed to figure out what this is: +(defskelgroup *mistycam-sg* mistycam + 0 + 2 + ((1 (meters 999999))) + :bounds (static-spherem 0 0 0 20) + :longest-edge (meters 0) + ) + +;; definition for function mistycam-spawn +;; INFO: Return type mismatch int vs none. +(defun mistycam-spawn () + (with-pp + (let ((gp-0 (entity-actor-lookup (-> pp entity) 'alt-actor 0))) + (when gp-0 + (let* ((s5-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 + (ppointer->handle + (when s5-0 + (let ((t9-2 (method-of-type pov-camera activate))) + (t9-2 (the-as pov-camera s5-0) pp 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process + s5-0 + pov-camera-init-by-other + (-> gp-0 extra trans) + *mistycam-sg* + (new 'static 'spool-anim :name "mistycam-cannon" :index 5 :parts 1 :command-list '()) + 0 + #f + '() + ) + (-> s5-0 ppointer) + ) + ) + ) + (s5-1 (get-process *default-dead-pool* fuel-cell #x4000)) + (s5-2 + (ppointer->handle (when s5-1 + (let ((t9-5 (method-of-type fuel-cell activate))) + (t9-5 (the-as fuel-cell s5-1) pp 'fuel-cell (the-as pointer #x70004000)) + ) + (run-now-in-process s5-1 fuel-cell-init-as-clone gp-1 (-> pp entity extra perm task)) + (-> s5-1 ppointer) + ) + ) + ) + ) + (let ((v1-13 (handle->process gp-1))) + (if v1-13 + (set! (-> (the-as pov-camera v1-13) notify-handle) (the-as handle s5-2)) + ) + ) + (while (handle->process gp-1) + (suspend) + ) + (send-event (handle->process s5-2) 'stop-cloning) + ) + ) + ) + 0 + (none) + ) + ) + +;; definition of type misty-battlecontroller +(deftype misty-battlecontroller (battlecontroller) + () + :heap-base #x210 + :method-count-assert 29 + :size-assert #x27c + :flag-assert #x1d0210027c + ) + +;; definition for method 3 of type misty-battlecontroller +(defmethod inspect misty-battlecontroller ((obj misty-battlecontroller)) + (let ((t9-0 (method-of-type battlecontroller inspect))) + (t9-0 obj) + ) + obj + ) + +;; failed to figure out what this is: +(defstate battlecontroller-play-intro-camera (misty-battlecontroller) + :virtual #t + :code + (behavior () + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 + (ppointer->handle + (when gp-0 + (let ((t9-1 (method-of-type pov-camera activate))) + (t9-1 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 pov-camera-init-by-other (-> self root trans) *mistycam-sg* "lurkerattack" 0 #f '()) + (-> gp-0 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-1)) + (suspend) + ) + ) + (go-virtual battlecontroller-active) + (none) + ) + ) + +;; definition for method 27 of type misty-battlecontroller +;; INFO: Return type mismatch int vs none. +(defmethod TODO-RENAME-27 misty-battlecontroller ((obj misty-battlecontroller)) + ((the-as (function battlecontroller none) (find-parent-method misty-battlecontroller 27)) obj) + (set! (-> obj misty-ambush-collision-hack) #t) + 0 + (none) + ) + +;; definition (debug) for function misty-cam-restore +;; Used lq/sq +(defun-debug misty-cam-restore () + (let ((a0-0 (new-stack-vector0)) + (a1-0 (new-stack-matrix0)) + ) + (set! (-> a0-0 x) -711702.3) + (set! (-> a0-0 y) 268833.34) + (set! (-> a0-0 z) 4193524.2) + (set! (-> a0-0 w) 1.0) + (set! (-> a1-0 vector 0 x) -0.6991) + (set! (-> a1-0 vector 0 y) 0.0) + (set! (-> a1-0 vector 0 z) -0.7149) + (set! (-> a1-0 vector 0 w) 0.0) + (set! (-> a1-0 vector 1 x) 0.3474) + (set! (-> a1-0 vector 1 y) 0.8739) + (set! (-> a1-0 vector 1 z) -0.3398) + (set! (-> a1-0 vector 1 w) 0.0) + (set! (-> a1-0 vector 2 x) 0.6248) + (set! (-> a1-0 vector 2 y) -0.486) + (set! (-> a1-0 vector 2 z) -0.611) + (set! (-> a1-0 vector 2 w) 0.0) + (set! (-> a1-0 vector 3 x) 0.0) + (set! (-> a1-0 vector 3 y) 0.0) + (set! (-> a1-0 vector 3 z) 0.0) + (set! (-> a1-0 vector 3 w) 1.0) + (debug-set-camera-pos-rot! a0-0 a1-0) + ) + (send-event *camera* 'set-fov 11650.845) + (clear *camera-old-level*) + (format *camera-old-level* "misty") + (set! *camera-old-cpu* 6867) + (set! *camera-old-vu* #x4b0f) + (set! *camera-old-tfrag-bytes* #x1ec490) + (clear *camera-old-stat-string-tfrag*) + (clear *camera-old-stat-string-tfrag-near*) + (clear *camera-old-stat-string-total*) + (let ((v0-7 #t)) + (set! *display-camera-old-stats* v0-7) + v0-7 + ) + ) + +;; definition of type boat-fuelcell +(deftype boat-fuelcell (process-drawable) + ((play-cutscene? symbol :offset-assert 176) + ) + :heap-base #x50 + :method-count-assert 20 + :size-assert #xb4 + :flag-assert #x14005000b4 + (:states + boat-fuelcell-die + boat-fuelcell-idle + boat-fuelcell-spawn + ) + ) + +;; definition for method 3 of type boat-fuelcell +(defmethod inspect boat-fuelcell ((obj boat-fuelcell)) + (let ((t9-0 (method-of-type process-drawable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tplay-cutscene?: ~A~%" (-> obj play-cutscene?)) + obj + ) + +;; failed to figure out what this is: +(defstate boat-fuelcell-idle (boat-fuelcell) + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('task-complete) + (set! (-> self play-cutscene?) #t) + (process-entity-status! self (entity-perm-status complete) #t) + (go boat-fuelcell-spawn) + ) + ) + ) + :code + (the-as (function none :behavior boat-fuelcell) anim-loop) + ) + +;; failed to figure out what this is: +(defstate boat-fuelcell-spawn (boat-fuelcell) + :event + (the-as + (function process int symbol event-message-block object :behavior boat-fuelcell) + process-drawable-fuel-cell-handler + ) + :code + (behavior () + (process-drawable-birth-fuel-cell (the-as entity #f) (the-as vector #f) #f) + (when (and *target* (-> self play-cutscene?)) + (ambient-hint-spawn "gamcam02" (the-as vector #f) *entity-pool* 'camera) + (let* ((gp-0 (get-process *default-dead-pool* pov-camera #x4000)) + (gp-1 (ppointer->handle (when gp-0 + (let ((t9-3 (method-of-type pov-camera activate))) + (t9-3 (the-as pov-camera gp-0) self 'pov-camera (the-as pointer #x70004000)) + ) + (run-now-in-process + gp-0 + pov-camera-init-by-other + (-> self root trans) + *mistycam-sg* + "mistycam-balloon-fuel-cell" + 0 + #f + '() + ) + (-> gp-0 ppointer) + ) + ) + ) + ) + (while (handle->process (the-as handle gp-1)) + (suspend) + ) + ) + ) + (while (-> self child) + (suspend) + ) + (go boat-fuelcell-die) + (none) + ) + ) + +;; failed to figure out what this is: +(defstate boat-fuelcell-die (boat-fuelcell) + :code + (behavior () (dummy-18 self) (none)) + ) + +;; definition for method 11 of type boat-fuelcell +;; INFO: Return type mismatch object vs none. +(defmethod init-from-entity! boat-fuelcell ((obj boat-fuelcell) (arg0 entity-actor)) + (set! (-> obj root) (new 'process 'trsqv)) + (process-drawable-from-entity! obj arg0) + (logclear! (-> obj mask) (process-mask actor-pause)) + (set! (-> obj play-cutscene?) #f) + (if (and (-> obj entity) (logtest? (-> obj entity extra perm status) (entity-perm-status complete))) + (go boat-fuelcell-spawn) + (go boat-fuelcell-idle) + ) + (none) + ) diff --git a/test/decompiler/reference/levels/village1/sequence-a-village1_REF.gc b/test/decompiler/reference/levels/village1/sequence-a-village1_REF.gc new file mode 100644 index 0000000000..3580ab6273 --- /dev/null +++ b/test/decompiler/reference/levels/village1/sequence-a-village1_REF.gc @@ -0,0 +1,479 @@ +;;-*-Lisp-*- +(in-package goal) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 686) + (new 'static 'sparticle-launch-group + :length 1 + :duration #x384 + :linger-duration #x5dc + :flags (sp-group-flag use-local-clock) + :name "group-sequenceAV-splash" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2854 :period 900 :length 600)) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2854) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 128.0) + (sp-rnd-flt spt-x (meters -1.0) (meters 2.0) 1.0) + (sp-rnd-flt spt-z -4096.0 8192.0 1.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.125) 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 96.0 64.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.026666667) (meters 0.053333335) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-rnd-flt spt-accel-y -2.7306666 -6.826667 1.0) + (sp-int spt-timer 900) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees -30.0) (degrees 60.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 0.0) (degrees 5000.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.3) (meters -0.5) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 687) (new 'static 'sparticle-launch-group + :length 1 + :duration #x5 + :linger-duration #x384 + :flags (sp-group-flag use-local-clock) + :name "group-sequenceAV-spit" + :launcher + (new 'static 'inline-array sparticle-group-item 1 (sp-item 2855)) + :bounds (new 'static 'sphere :w 262144.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2855) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 22 + (sp-tex spt-texture (new 'static 'texture-id :index #x9 :page #x2)) + (sp-flt spt-num 5.0) + (sp-rnd-flt spt-scale-x (meters 0.025) (meters 0.025) 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 128.0 32.0 1.0) + (sp-rnd-flt spt-b 128.0 32.0 1.0) + (sp-rnd-flt spt-a 32.0 32.0 1.0) + (sp-rnd-flt spt-vel-y (meters 0.016666668) (meters 0.0033333334) 1.0) + (sp-flt spt-scalevel-x (meters 0.00033333333)) + (sp-rnd-flt spt-rotvel-z (degrees -1.2) (degrees 2.4) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a -0.21333334) + (sp-rnd-flt spt-accel-y -1.3653333 -1.3653333 1.0) + (sp-flt spt-friction 0.95) + (sp-int spt-timer 300) + (sp-cpuinfo-flags bit2 bit3) + (sp-rnd-flt spt-conerot-x (degrees 106.0) (degrees 2.0) 1.0) + (sp-rnd-flt spt-conerot-y (degrees 90.0) (degrees 2.0) 1.0) + (sp-rnd-flt spt-conerot-radius (meters 0.0) (meters -0.15) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-group-id-table* 688) (new 'static 'sparticle-launch-group + :length 8 + :duration #xbb8 + :linger-duration #x5dc + :flags (sp-group-flag screen-space) + :name "group-sequenceAV-2d-intro-mist" + :launcher + (new 'static 'inline-array sparticle-group-item 8 + (sp-item 2858 :period 300 :length 5 :binding 2856) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2856 :flags (start-dead launch-asap) :binding 2857) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2857 :flags (start-dead)) + (sp-item 2859) + (sp-item 2860) + ) + :bounds (new 'static 'sphere :w 8192.0) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2858) (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-x (meters -2.5) (meters 5.0) 1.0) + (sp-rnd-flt spt-y (meters -1.5) (meters 3.0) 1.0) + (sp-flt spt-scale-x (meters 0.1)) + (sp-copy-from-other spt-scale-y -4) + (sp-flt spt-g 128.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-vel-y (meters 0.0033333334) (meters 0.0033333334) 1.0) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit3) + (sp-rnd-flt spt-conerot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2856) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 20 + (sp-tex spt-texture (new 'static 'texture-id :index #xf :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 0.0) (meters 16.0) 1.0) + (sp-rnd-flt spt-z 2048.0 819.2 1.0) + (sp-rnd-flt spt-scale-x (meters 0.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 0.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-flt spt-a 128.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-scalevel-x (meters -0.0012121212)) + (sp-rnd-int-flt spt-rotvel-z (degrees -0.3) 1 109.22667) + (sp-copy-from-other spt-scalevel-y -4) + (sp-int spt-timer 600) + (sp-cpuinfo-flags bit2 bit3 bit7) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2857) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 16 + (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 0.5) (meters 0.3) 1.0) + (sp-copy-from-other spt-scale-y -4) + (sp-rnd-flt spt-r 32.0 96.0 1.0) + (sp-rnd-flt spt-g 0.0 32.0 1.0) + (sp-rnd-flt spt-b 64.0 32.0 1.0) + (sp-rnd-flt spt-a 64.0 64.0 1.0) + (sp-flt spt-scalevel-x (meters -0.0010952381)) + (sp-copy-from-other spt-scalevel-y -4) + (sp-rnd-flt spt-accel-y 0.0 -0.13653333 1.0) + (sp-int-plain-rnd spt-timer 30 299 1) + (sp-cpuinfo-flags bit2 bit3) + (sp-int spt-next-time 240) + (sp-launcher-by-id spt-next-launcher 198) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2860) (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 12 + (sp-tex spt-texture (new 'static 'texture-id :index #x36 :page #x2)) + (sp-flt spt-num 1.0) + (sp-flt spt-z -16000.0) + (sp-flt spt-scale-x (meters 15.0)) + (sp-flt spt-scale-y (meters 12.0)) + (sp-flt spt-r 0.0) + (sp-flt spt-g 0.0) + (sp-flt spt-b 0.0) + (sp-flt spt-a 128.0) + (sp-int spt-timer 5) + (sp-cpuinfo-flags bit2 bit13 bit14) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2859) + (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 0.3) + (sp-rnd-flt spt-x (meters -4.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-y (meters -3.0) (meters 6.0) 1.0) + (sp-rnd-flt spt-z 0.0 14000.0 1.0) + (sp-rnd-flt spt-scale-x (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-rot-z (degrees 0.0) (degrees 360.0) 1.0) + (sp-rnd-flt spt-scale-y (meters 6.0) (meters 8.0) 1.0) + (sp-rnd-flt spt-r 16.0 80.0 1.0) + (sp-rnd-flt spt-g 0.0 16.0 1.0) + (sp-rnd-flt spt-b 16.0 150.0 1.0) + (sp-flt spt-a 0.0) + (sp-rnd-flt spt-scalevel-x (meters -0.0016666667) (meters 0.0033333334) 1.0) + (sp-rnd-flt spt-rotvel-z (degrees -0.075) (degrees 0.15) 1.0) + (sp-copy-from-other spt-scalevel-y -4) + (sp-flt spt-fade-a 0.21333334) + (sp-int spt-timer 1500) + (sp-cpuinfo-flags bit2 bit14) + (sp-int-plain-rnd spt-next-time 150 149 1) + (sp-launcher-by-id spt-next-launcher 2861) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2861) + (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 300 299 1) + (sp-launcher-by-id spt-next-launcher 2862) + (sp-end) + ) + ) + ) + +;; failed to figure out what this is: +(set! (-> *part-id-table* 2862) + (new 'static 'sparticle-launcher + :init-specs + (new 'static 'inline-array sp-field-init-spec 2 (sp-flt spt-fade-a -0.21333334) (sp-end)) + ) + ) + +;; definition of type sequenceA-village1 +(deftype sequenceA-village1 (process-taskable) + ((boat handle :offset-assert 384) + (side handle :offset-assert 392) + ) + :heap-base #x120 + :method-count-assert 53 + :size-assert #x190 + :flag-assert #x3501200190 + ) + +;; definition for method 3 of type sequenceA-village1 +(defmethod inspect sequenceA-village1 ((obj sequenceA-village1)) + (let ((t9-0 (method-of-type process-taskable inspect))) + (t9-0 obj) + ) + (format #t "~T~Tboat: ~D~%" (-> obj boat)) + (format #t "~T~Tside: ~D~%" (-> obj side)) + obj + ) + +;; definition for method 32 of type sequenceA-village1 +;; INFO: Return type mismatch spool-anim vs basic. +(defmethod play-anim! sequenceA-village1 ((obj sequenceA-village1) (arg0 symbol)) + (when arg0 + (set! (-> *time-of-day-proc* 0 time-ratio) 0.0) + (set! (-> *time-of-day-proc* 0 hour) 23) + (send-event *camera* 'no-intro) + (send-event *camera* 'clear-entity) + (send-event *camera* 'force-blend 0) + (send-event *camera* 'change-state cam-fixed 0) + (send-event *target* 'sidekick #f) + (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> obj boat) + (ppointer->handle + (when s5-0 + (let ((t9-6 (method-of-type manipy activate))) + (t9-6 (the-as manipy s5-0) obj 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 manipy-init (-> obj root-override trans) (-> obj entity) *fishermans-boat-sg* #f) + (-> s5-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> obj boat)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> obj boat)) 'origin-joint-index 3) + ) + (the-as basic (new 'static 'spool-anim + :name "sage-intro-sequence-a" + :index 17 + :parts 22 + :command-list + '((0 blackout 0) + (0 want-levels village1 misty) + (1210 display-level misty display) + (1210 want-vis mis) + (1210 want-force-vis misty #t) + (1230 send-event self sidekick-human) + (1239 joint "cameraB") + (1480 joint "camera") + (1480 setting-reset ocean-off near) + (1613 joint "cameraB") + (1796 joint "camera") + (1843 joint "cameraB") + (2145 joint "camera") + (2274 joint "cameraB") + (2439 joint "camera") + (2450 want-force-vis misty #f) + (2490 joint "cameraB") + (2570 alive "sequenceB-1") + (2569 save) + (2569 setting-unset ocean-off) + ) + ) + ) + ) + +;; definition for method 31 of type sequenceA-village1 +(defmethod get-art-elem sequenceA-village1 ((obj sequenceA-village1)) + (-> obj draw art-group data 3) + ) + +;; failed to figure out what this is: +(defstate play-anim (sequenceA-village1) + :virtual #t + :event + (behavior ((arg0 process) (arg1 int) (arg2 symbol) (arg3 event-message-block)) + (case arg2 + (('sidekick-human) + (format 0 "got sidekick-human~%") + (when (= (level-status *level* 'misty) 'active) + (let ((gp-1 (entity-by-name "sequenceA-1"))) + (when gp-1 + (format 0 "found entity for sidekick-human~%") + (let ((s5-0 (get-process *default-dead-pool* manipy #x4000))) + (set! (-> self side) + (ppointer->handle + (when s5-0 + (let ((t9-5 (method-of-type manipy activate))) + (t9-5 (the-as manipy s5-0) self 'manipy (the-as pointer #x70004000)) + ) + (run-now-in-process s5-0 manipy-init (-> self root-override trans) gp-1 *sidekick-human-sg* #f) + (-> s5-0 ppointer) + ) + ) + ) + ) + (send-event (handle->process (-> self side)) 'anim-mode 'clone-anim) + (send-event (handle->process (-> self side)) 'center-joint 3) + (send-event (handle->process (-> self side)) 'blend-shape #t) + ) + ) + ) + ) + ) + ) + :exit + (behavior () + (send-event *target* 'sidekick #t) + (let ((a0-2 (handle->process (-> self boat)))) + (if a0-2 + (deactivate a0-2) + ) + ) + (let ((a0-6 (handle->process (-> self side)))) + (if a0-6 + (deactivate a0-6) + ) + ) + ((-> (method-of-type process-taskable play-anim) exit)) + (let ((gp-0 (entity-by-name "sequenceB-1"))) + (set-blackout-frames 6000) + (send-event *camera* 'clear-entity) + (entity-birth-no-kill gp-0) + (send-event + (if gp-0 + (-> gp-0 extra process) + ) + 'play-anim + ) + ) + (none) + ) + :trans + (behavior () + (spool-push *art-control* "sage-intro-sequence-b" 0 self -1.0) + ((-> (method-of-type process-taskable play-anim) trans)) + (none) + ) + ) + +;; definition for method 39 of type sequenceA-village1 +(defmethod should-display? sequenceA-village1 ((obj sequenceA-village1)) + #f + ) + +;; definition for function sequenceA-village1-trans-hook +;; INFO: Return type mismatch int vs none. +(defbehavior sequenceA-village1-trans-hook sequenceA-village1 () + (when (>= 1000.0 (ja-aframe-num 0)) + (hide-hud-quick) + (if (> (-> self part matrix) 0) + (set-vector! + (sprite-get-user-hvdf (-> self part matrix)) + 2048.0 + 2048.0 + (+ -1024.0 (-> *math-camera* hvdf-off z)) + (-> *math-camera* hvdf-off w) + ) + ) + (let ((f0-9 (fmin 1.0 (* 0.008333334 (- 1000.0 (ja-aframe-num 0)))))) + (set! (-> *part-id-table* 2860 init-specs 8 initial-valuef) (* 128.0 f0-9)) + (cond + ((< f0-9 1.0) + (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 0.0) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.0) + ) + (else + (set! (-> *part-id-table* 2858 init-specs 1 initial-valuef) 1.0) + (set! (-> *part-id-table* 2859 init-specs 1 initial-valuef) 0.3) + ) + ) + ) + (spawn (-> self part) *zero-vector*) + (draw-title-credits (* 0.001 (ja-aframe-num 0))) + ) + 0 + (none) + ) + +;; definition for function sequenceA-village1-init-by-other +;; INFO: Return type mismatch object vs none. +(defbehavior sequenceA-village1-init-by-other sequenceA-village1 ((arg0 entity)) + (set! (-> self entity) arg0) + (dummy-40 self arg0 *sage-sg* 3 40 (new 'static 'vector :w 4096.0) 5) + (set! (-> self tasks) (get-task-control (game-task intro))) + (set! (-> self boat) (the-as handle #f)) + (set! (-> self side) (the-as handle #f)) + (set! (-> self part) (create-launch-control (-> *part-group-id-table* 688) self)) + (set! (-> self part matrix) (sprite-allocate-user-hvdf)) + (set! (-> self cur-trans-hook) sequenceA-village1-trans-hook) + (logclear! (-> self mask) (process-mask pause actor-pause)) + (set! (-> self been-kicked) #t) + (set-setting! *setting-control* self 'music-volume-movie 'abs 0.0 0) + (set-setting! *setting-control* self 'sfx-volume-movie 'abs 0.0 0) + (set-setting! *setting-control* self 'ambient-volume-movie 'abs 0.0 0) + (go-virtual hidden) + (none) + ) + +;; definition for function start-sequence-a +;; INFO: Return type mismatch int vs none. +(defun start-sequence-a () + (set-blackout-frames #x7530) + (let ((gp-0 (get-process *default-dead-pool* sequenceA-village1 #x4000))) + (when gp-0 + (let ((t9-2 (method-of-type sequenceA-village1 activate))) + (t9-2 (the-as sequenceA-village1 gp-0) *entity-pool* 'sequenceA-village1 (the-as pointer #x70004000)) + ) + (run-now-in-process gp-0 sequenceA-village1-init-by-other (entity-by-name "sage-23")) + (-> gp-0 ppointer) + ) + ) + 0 + (none) + )